Purpose. Quantify how stable the headline class (ZERO / FINITE / INF±) and the alignment a_div are under reasonable changes in windows, thresholds, mappings, and model choices. Use this as a quick stress test before publishing results.
Guards and tie thresholds (declare once).
eps_a = 1e-6
eps_w = 1e-12
R2_min = 0.85
delta_score = 2.0
K in {3..6} # tail windows (>=3)
T_p = 1e-3, T_q = 1e-3 # near-tie defaults for (p,q)
(Clamp before any atanh: a := clamp(a, -1+eps_a, +1-eps_a).)
Stability sweeps (run each; record outcomes).
S1) Radii grid sweep (window geometry).
R1: r_k = r0 * 10^(-0.2*k), k=0..K'
R2: r_k = r0 * 2^(-k), k=0..K'
R3: r_k = r0 * 3^(-k), k=0..K'
For each grid: re-fit (p,q) and classify via 4/4A. Record class and DIR (if INF).
S2) Tail length sweep (K).
Repeat S1 with K in {3,4,5,6}; recompute tail stats and class.
S3) Tie-threshold sweep.
T_p in {0.03, 0.05, 0.07}
T_q in {0.07, 0.10, 0.15}
Re-run lexicographic decision on (Delta_p_eff, Delta_q_eff).
S4) Alignment mapping + prior sweep (metadata robustness).
Mappings:
linear: a := 2*R2 - 1
contrast: a := tanh( c*(R2 - 0.5) ), c in {0.5, 1.0, 2.0}
Reference prior (if applicable): a_g_ref in {+0.60, +0.80, +0.90}
Compute a_div = tanh(atanh(a_f) - atanh(a_g)) each time.
The headline class must not change; only a_div should move (ideally within same band).
S5) Model-chooser sensitivity.
Compare AIC vs BIC; vary delta_score in {1.0, 2.0, 4.0}.
If essential scans are enabled: r_grid in {{0.5,1.0,1.5}, {0.75,1.25}}.
If winning family flips class -> set REG = MULTI and add EDGE(model).
S6) Bootstrap over samples (if data, not purely symbolic).
Within innermost windows, resample paired (x,f,g) with replacement, B = 200.
For each bootstrap: classify and compute a_div. Summarize stability (see metrics).
S7) Left/right isolation (sided robustness).
Run S1..S6 separately on x<x0 and x>x0.
If classes or DIR differ -> REG = SIDED.
S8) Numerical guard sweep.
eps_a in {1e-6, 1e-7, 1e-5}
eps_w in {1e-12, 1e-10, 1e-8}
Ensure |a_div| < 1 - eps_a always; pooling/printing must be unaffected.
Robustness metrics (report).
class_stability = % runs with same headline class (ZERO/FINITE/INF)
dir_stability = % INF runs with same DIR (+/-) # only if INF
Delta_p_sign_agree = % runs with same sign(Delta_p)
Delta_q_sign_agree = % runs with same sign(Delta_q) # when |Delta_p| <= T_p
a_div_median = median(a_div across runs)
a_div_IQR = IQR(a_div across runs)
band_histogram = counts over {A++, A+, A0, A-, A--} from a_div
Decision thresholds (publish).
Stable: class_stability >= 95% (and if INF: dir_stability >= 99%)
Borderline: 85% <= class_stability < 95% -> add EDGE(p)/EDGE(q) as applicable; consider EDGE(model)
Unstable: class_stability < 85% -> REG = MULTI (or REG = OSC if AT6 triggers); use conservative headline ZERO < FINITE < INF
Print cues.
Optionally append STAB[xx%] at end of SSMS one-liner.
Only show EDGE(q) if the log tie-break actually ran.
Never print |a_div| >= 1; clamps precede all atanh.
Minimal pseudo (driver loop).
results = []
for grid in {R1,R2,R3}:
for K in {3,4,5,6}:
for (T_p,T_q) in {(0.03,0.07),(0.05,0.10),(0.07,0.15)}:
for mapping in {linear, contrast(c=0.5), contrast(c=1.0), contrast(c=2.0)}:
for a_g_ref in {0.60,0.80,0.90}:
run fit -> (Delta_p_eff, Delta_q_eff), class, DIR?, a_div
results.append(class, DIR, sign(Delta_p_eff), sign(Delta_q_eff), a_div)
compute metrics; set REG/badges per thresholds; print one-liner + optional STAB[%].
Navigation
Prev: Classifying 0over0 Limits — Acceptance Tests (quick pass/fail) (6)
Next: Classifying 0over0 Limits — Acceptance Tests — Operational diagnostics and registry (ties, flags, print grammar) (6B)