# R30 gap-injection — deployed-run harness (BANKED, not run) **Status:** CLOSED — not executed. On 2026-07-04 the operator steered **close R30 on offline-tests + human face-validity**, no deployed harness build, no endpoint. No `(agent, N, Δt, observed p/a/d)` series was collected. This harness + brokkr's protocol are **banked / drop-in** for the parked powered true-τ perceptual study if it is ever commissioned. **Spec pin:** brokkr R30.10 protocol `de8357f` — `brokkr-smithy/research/R30-ocean-derived-mood-dynamics/empirics/r30-gap-injection-protocol.md`. ## Why it was closed (not built) The deployed gap-injection run was **confirmatory, not measuring** (brokkr's §0 reframe: against a deployed system the fade is `exp(−Δt/τ_shipped)` by construction, so a fit returns τ_shipped tautologically — the run graduates the interim coefficients, it does not measure them). Given that: - The repo's **offline tests already cover the OU formula + BOTH directions** (`high_N_fades_slower_than_low_N` decay, `phenotype_high_n_bigger_negative_excursion` gain). - **b17 is deployed-clean** on demo + personal. - The ①-approved **mood-holds-within-conversation** IS the face-validity call. …the interim coefficients **graduate validated-as-shipped** with no deployed run needed. The build cost that would have been required (and was declined): - No deployed write affordance exists; the in-memory `_user_moods` cache **shadows** raw `persona_mood.db` writes, so a clean inject needs an in-service **set-mood/back-date endpoint** (set p/a/d + `updated_at` + evict cache). - `moody-lofn N=+0.8` **does not exist** (only lofn `N=−0.5`; tier-3 empty OCEAN → N=0), so the gain half would have needed a new high-N tier-1 agent + deploy — dropped as the expensive, offline-redundant half. ## What is validated (harness self-check) `harness.py::predict()` reproduces brokkr's stated N=0 P-axis retention anchors **exactly**: | Δt | predicted | brokkr stated | |---|---|---| | 1h (3600s) | 0.904837 | 0.905 | | 10h/overnight (36000s) | 0.367879 | 0.368 | | 1 week (604800s) | 5.06e-08 | 5e-08 | Per-axis τ confirms arousal fades ~1.9× faster (N=0: τ_P = τ_D = 10h, τ_A = 5.26h). ## Personal `:8081` b17 baseline survey (candidate N-grid agents, all at rest) | agent | baseline p/a/d | note | |---|---|---| | lofn | 0.809 / −0.153 / 0.248 | production, N=−0.5 | | mask | 0.0 / 0.0 / 0.0 | zero baseline → zero-N candidate | | forseti | 0.239 / −0.696 / 0.095 | production | | mimir | 0.615 / −0.438 / 0.304 | production | (sindra 404s — owner-scoped tier-3, expected.) ## To un-bank (if the powered study is commissioned) 1. Worldtree builds the in-service **set-mood/back-date endpoint** (set p/a/d + `updated_at` + evict `_user_moods`), or the read-only fade-preview variant if that satisfies D1. 2. Wire `harness.py::freeze_start()` + `backdate()` to that endpoint (near-zero rebuild). 3. Run the 3×8 grid (frozen start p=−0.6/a=+0.5/d=−0.3 × Δt grid), hand brokkr the `(agent, N, Δt, observed p/a/d)` table + per-agent `baseline_pad()`; he runs D1/D2/D3.