Read this before piloting — what can go wrong, how to detect it, and how to recover (without touching m)
Low-signal lenses (weak or noisy evidence).
When the chosen lens is weak, a ~ 0 and bands hover near A0. This is not an error; it is a “not enough evidence” signal.
Mitigation: strengthen or replace the lens; keep phi((m,a)) = m and route by classical logic when |a| < a_min.
evidence_ok := (|a| >= a_min) # e.g., a_min = 0.15
route_by_lane := evidence_ok
fallback := phi((m,a)) # always equals m
Division near zero (ratios).
Ratios with tiny denominators cause control risk, not value risk. Lane composition is stable in u-space, but policy must guard actuation.
Policy (default): division_policy = "strict". If |m_den| <= eps_div, choose no-lane actuation (fall back to classical), log + stamp, continue observation.
if |m_den| <= eps_div:
use_lane_for_actuation := False # strict
note := "DIV_GUARD"
# lane math may still be logged: a_div := tanh(atanh(a_num) - atanh(a_den))
Order/partition mistakes (averaging in a-space).
Naive averages like a_out := SUM(w*a)/SUM(w) will not be order/shard invariant and may saturate near edges.
Mitigation: always use U/W fuse in u-space.
U += w*atanh(a_c) # a_c := clamp(a, -1+eps_a, +1-eps_a)
W += w
a_out := tanh( U / max(W, eps_w) )
Gate misuse (accidentally mutating m).g_t scales alignment only. If a pipeline accidentally multiplies or rewrites m, parity breaks.
Guardrail: enforce and test collapse parity on every hop.
assert phi((m,a)) == m # must hold everywhere
RSI_env := g_t * RSI # never g_t * m
Manifest drift (silent knob changes).
Changing bands, clamps, or weights without bumping the manifest causes irreproducible results.
Mitigation: treat the manifest as a contract; compute a knobs hash and stamp it.
knobs_hash := sha256( ascii(canonical_json(knobs)) ) # bands, eps_a, eps_w, gamma, division_policy, lens params…
Throughput hotspots (atanh/tanh at scale).
Very high QPS can stress scalar math. Semantics stay identical, but implementations may lag.
Mitigation: vectorize, use approximate LUTs with bounded error, or map to SSMH; do not change formulas.
# identical semantics; implementation choice only
u := atanh(a_c) # vectorized / LUT
a := tanh(u)
Lens scaling mistakes (unit/scale drift).
Forgetting to declare Unit or scale c yields inconsistent bands across services.
Mitigation: pin Unit and c in the manifest; add a per-release calibration page with worked vectors.
Band churn (flicker at thresholds).
When a hovers near edges, labels can flicker.
Mitigation: use gentle hysteresis (promote/demote gates) and display confidence bands only after smoothing.
promote if delta_a >= +0.05
demote if delta_a <= -0.05
Edge saturation (a too close to ±1).
Inputs from aggressive lenses can push a to ±1, where atanh diverges.
Mitigation: clamp first with a small margin; keep dtype-aware epsilons.
a_c := clamp(a, -1+eps_a, +1-eps_a) # eps_a = 1e-6 (f32) or smaller for f64
PII or unsafe lenses.
Lenses must not encode personal or sensitive signals.
Mitigation: restrict to aggregate/telemetry metrics; document sources; run a PII check in CI.
QA Checklist (paste-ready, pass/fail)
C1 Collapse parity: for all rows, phi((m,a)) == m
C2 Clamp safety: |clamp(a)| < 1 with eps_a declared
C3 Order invariance: batch == stream == shuffled via U/W
C4 Division policy: strict/meadow/soft declared; strict blocks actuation near zero
C5 Gate purity: RSI_env == g_t * RSI; m untouched
C6 Manifest reproducibility: knobs_hash changes iff any knob changes
C7 Bands sanity: thresholds + hysteresis applied as declared
C8 No PII: lenses documented; static checks passed
C9 Performance parity: vectorized/LUT impls match scalar within tolerance
Rollback Plan (keep m pristine)
if any(C1..C9 == FAIL):
# Immediate rollback without user impact
use_lane_for_actuation := False
selection := classical_policy(m) # e.g., argmax(m) or baseline heuristic
log/stamp decision with reason
One-line takeaway.
SSM-AI is observation-first: when anything looks uncertain—weak lens, tiny denominators, order bugs, or gate misuse—fall back to classical m (unchanged by phi((m,a)) = m), log the lane for learning, and fix knobs under a stamped manifest.
Navigation
Previous: SSM-AI – Outcomes to Track on Day 1 (1.5)
Next: SSM-AI – Canon — Numerals, Operators, Pools (2)
Directory of Pages
SSM-AI — Table of Contents