# 099 z-explorer — RESULT (self-harvested 2026-08-08)

**Tier: T3-exploratory (BUILD / artifact row, block L). DONE.** No GPU / box / tmux — the
whole deliverable was built from **already-frozen campaign JSON on disk** (rows
080/065/071/086/087). Every decode and every flag value shown is a byte-for-byte recorded
campaign output; nothing was generated live. ONLY experiment in flight (one-at-a-time honored).

## Deliverable
`099-z-explorer/z_explorer.html` — a single self-contained (inline CSS/JS, embedded JSON, zero
external calls) interactive explainer of SONAR z-space. Dark-instrument aesthetic reusing
status.html's palette. Five demos, each a stepper of (input → perturbation → decode → flag panel);
keyboard arrows + click ticks to step; live green/amber/red monitor verdicts on the right.

- Build pipeline (reproducible): `src/extract_demos.py` (pulls curated demos from source rows →
  `out/demos.json`, 11.9 KB) → `src/build_html.py` (inlines the JSON → `z_explorer.html`, 32 KB).

## The five demos (what each shows, and its source row)
1. **Operator steering dose-response (080)** — "The teacher blames the house." + negation direction,
   α = −1…2. α≤0.5 identity → α=1 "The teacher doesn't blame the house." (flip) → α=2 "…does not
   blame **not** the house." (over-steer garble). cos→target rises then falls; nn-cos falls the whole
   way (leaving the manifold). Random-direction control at the same α: unchanged. Tense variant too.
2. **Interpolation → winner-take-all (065)** — z-interpolate A "He built a Wi-Fi doorbell bell, he
   said." ↔ B "He said he built a wireless doorbell.", t = 0…1. Midpoints snap to one side (word-
   overlap Jaccard to A vs B shown), not a 50/50 blend.
3. **Capacity overload (071)** — entity ladder N=1→8. Source entities highlighted green (survived) /
   red (corrupted or dropped); at N=8 only 5/8 names survive (Oakmere→Oakmeister, Prohaska→Prochaska,
   Tralee & Anselm Wisozk dropped) while the sentence frame stays intact.
4. **Fabrication + flags (086/087)** — clean / covert / interpolation / off-manifold / antipode
   records with real d_nn (manifold), ‖z‖ (norm), round-trip cosine. **Headline nuance faithfully
   rendered:** off-manifold & antipode → "manifold flag caught it ✓" (all red); interpolation →
   "manifold monitor **BLIND**; only round-trip catches it ⚠" (manifold green 0.78, round-trip amber
   0.80); clean/covert → "flags clear ✓". The monitor's known blind spot is shown, not sanitized.
5. **Binding (006/086)** — role-swap pair "The soldier guards the student." ↔ "The student guards the
   soldier."; z-norm near-equal (0.195/0.195), decoder preserves the swap (green), but the linear
   role-probe sits at chance (AUC 0.21 / battery primary 0.495) → "decode ≠ abstraction."

## Gates (all PASS)
- **G1 self-contained** — `grep -nE 'https?://|src=|cdn|fetch\(|@import|url\(http|<link|<img'`
  finds no external resource (only a JS variable literally named `src`). No XHR/WebSocket/import().
- **G2 decode-match** — 21/21 baked decode strings `==` the source-row JSON on disk (steering ×7,
  interp ×5, fabrication ×6, binding ×3); baked JSON is also byte-identical to `out/demos.json`.
- **G3 renders** — headless Chromium loads it and all 5 demos render + step interactively
  (screenshots for steering / fabrication-interp / capacity / binding captured; tab-switch, stepper,
  tick-click, verdict-bar, entity-highlight all verified via a Playwright driver).
- **G4 flags-match** — d_nn / znorm / rt_cos shown equal the 086/087 recorded values (checked in G2);
  monitor GREEN/RED verdicts reproduce the campaign's qualitative result incl. the interpolation
  blind spot.

## Predictions — Brier
| id | P | outcome | sq |
|----|-----|---------|------|
| P1 all 5 precompute correctly, no synthetic | 0.90 | TRUE | 0.010 |
| P2 fully self-contained (no external refs) | 0.88 | TRUE | 0.014 |
| P3 renders as working interactive page | 0.85 | TRUE | 0.023 |
| P4 decodes/flags match source rows verbatim | 0.80 | TRUE | 0.040 |
| P5 flags reproduce monitor's real failure mode | 0.70 | TRUE | 0.090 |

**Mean Brier = 0.035** (5/5 TRUE; slightly under-confident — the reuse-only design de-risked the
build, so probabilities could have been higher).

## Limitations / honesty
- Not new evidence — a T3 explainer over frozen results; correctness = "faithful to the source rows",
  not "independently re-verified physics". The monitor thresholds (manifold accept 0.35, norm band
  0.15–0.28, round-trip 0.85) are illustrative cutoffs chosen to separate the 087 categories, not
  operational deployment thresholds.
- Interpolation/steering endpoints use whatever sentences the source rows recorded (065 uses FLORES
  news sentences; long but real). The "entities kept" count is a verbatim-substring heuristic (a name
  slightly mis-spelled counts as lost, which is the intended reading).
- Binding numbers combine 086 (probe AUC 0.21 on role-swap) and 006 (battery primary 0.495); the
  086 per-record "probe" score is a detector score, not the 006 cross-construction probe — both are
  labelled in-panel to avoid conflation.
- Not published as an Artifact here (per instructions — the main tick may do that); file only.

## Follow-up worth funding? 
**Y (low cost)** — this is the campaign's public face; worth (a) precomputing a live-ish "type your
own sentence" path if an in-browser SONAR shim ever exists, and (b) adding the 034 negation-operator
and 083 stego demos. But as-is it already covers the five headline phenomena end-to-end.
