================================================================================
  PHASE 6.2 — FACTS SHEET (one page, plain English, LOCAL workbench only)
================================================================================

STATUS
  MOCK ADVERSARIAL — Phase 6.2 Oscillation Robustness Test ONLY
  NOT the real Phase 5 MAIN benchmark. LOCAL workbench only.
  No website, no product, no deployment claim.

WHAT WAS RUN
  9 full evaluator runs (3 seeds x 3 EMA_tuned alpha values).
  Each run: 1000 hours, 60,001 samples, heavy oscillation regime.
  Seeds: 20260426, 20260427, 20260428.
  Alphas: EMA_tuned swept at 0.20, 0.35, 0.50.
  EMA_low fixed at alpha=0.10 (baseline; not swept).
  Clamped_EMA fixed at alpha=0.10, window=31 (baseline; not swept).
  GSRF preset fixed at 'balanced'.

PRE-DECLARED VERDICT RULE (locked before the run)
  niche_confirmed  if  mean_delta >= 15%  AND  all_seeds_delta >= 10%  AND
                        no alpha-tuned EMA beats Practical on any seed
  niche_retracted  if  mean_delta < 5%  OR  any alpha-tuned EMA beats Practical
  niche_narrowed   otherwise

OUTCOME
  VERDICT: niche_confirmed
  mean_delta_pct      = 35.172 %
  min_delta_pct       = 35.112 %
  max_delta_pct       = 35.222 %
  seed-to-seed spread = 0.110 percentage points
  any_alpha_beats     = No

PER-SEED OSCILLATION METRIC (lower is better)
  seed       GSRF_Practical  EMA_low  alpha=0.20  alpha=0.35  alpha=0.50  best-EMA   Delta%
  20260426   0.6854          1.0575   1.4986      1.7255      1.8341      EMA_low    -35.18
  20260427   0.6863          1.0577   1.4996      1.7275      1.8367      EMA_low    -35.11
  20260428   0.6847          1.0570   1.4981      1.7247      1.8331      EMA_low    -35.22

KEY STRUCTURAL FINDING
  Faster EMA_tuned makes oscillation WORSE, not better.
  Monotonic on every seed: alpha=0.10 < 0.20 < 0.35 < 0.50 on oscillation metric.
  Best EMA at oscillation is always EMA_low (alpha=0.10) -- the slowest variant.
  The niche is NOT an alpha-choice artefact.

THE HONEST COSTS (mean of 3 seeds, Practical vs EMA_low, same as Phase 6.1)
  Wear proxy:                 +14.46 % worse
  Command churn:              +52.71 % more reversals
  Rate-limit stress:          +15.26 % worse
  Tracking MAD vs raw:        +24.58 % more tracking cost
  Tracking MAD vs measured:   +65.68 % more deviation from physical response
  Lag:                        Practical BETTER (0 vs -6 samples)

EMA_tuned alpha=0.50 CAN match Practical on lag (0 samples) but at the price of:
  worst oscillation (1.83), highest wear, most churn, highest rate-stress.
  No tested EMA alpha simultaneously achieves zero-lag AND low-oscillation.

GSRF_Reference
  Still flatlines (lag ~50,800 samples across all seeds). Not usable.

LIMITS
  Generator is synthetic; regimes favour Practical's return-to-setpoint mechanism.
  No labels (alarm F1 not computable).
  No noise-level sweep (previous Phase 5 mock showed niche narrowing under heavier noise).
  Costs are not in the pre-declared verdict; they are reported for honesty.
  Real Phase 5 MAIN benchmark is still PENDING.

RERUN
  cd "/Users/carlboon/Documents/GSRF Audit Workbench /GSRF_Audit_Workbench"
  .venv/bin/python scripts/generate_phase6_2_oscillation_robustness.py
  export MPLCONFIGDIR="$(pwd)/.mplconfig"
  mkdir -p "$MPLCONFIGDIR"
  .venv/bin/python scripts/run_phase6_2_oscillation_robustness.py

AUTHORITATIVE FILES
  PHASE6_2_LOCKED_RESULTS.md                     full technical report
  PHASE6_2_WINS_AND_COSTS.md                     one-page summary
  PHASE6_2_DECISION_SUMMARY.json                 machine-readable verdict
  aggregated_oscillation_across_seeds.csv        per-seed oscillation breakdown
  aggregated_full_metrics_across_seeds.csv       full per-seed per-alpha metrics
  runs/seed*_alpha*/                              9 per-combo evaluator outputs
  REPRODUCTION_MANIFEST.json                     SHA-256 of every key file
================================================================================
