---
name: wan-truth-golden-green
description: "v0.48.0 WAN-truth batch (releases#50) golden full-green @0f90431 run 30618050586 — intake gate caught two changelog defects; awaiting doyle's ff then publish."
metadata: 
  node_type: memory
  type: project
  originSessionId: 19af1a2f-5196-41e5-8233-8bb5241f8280
  modified: 2026-07-31T09:56:54.101Z
---

WAN-truth milestone `releases#50` (v0.48.0), 2026-07-31. Golden run **30618050586**, attempt 1, all nine jobs green. **Tested sha `0f90431`** on `golden/wan-truth` — NOT doyle's hand-off sha `e09c96b`; the ff target is 0f90431.

**Why the head moved — the intake gate earned its keep.** Applying the release-notes standard (runbook step-2, binding on deployah) to the 0.48.0 CHANGELOG section before the golden run found two *substantive* defects, not just voice:

1. Dial-path attribution was written as an **Added** user feature quoting log tokens verbatim (`cache` / `roster` / `discovery` / `failed-addr-skip-then-…`). `RouteLeg` calls itself "the stable log token" in its own doc comment and is emitted only in `PUMP_DIAL_SUBMIT` / `PUMP_PEER_FAIL` — no CLI renders it. Collapsed to one **Internal** line. doyle confirmed independently: observation path is PumpHooks-over-the-log, no render leg built or claimed on #41.
2. The admin-rotation-incomplete bullet claimed the notice "now lands" and "can no longer vanish into an ambient store". `admin_rotation_incomplete_loudness` and that exact body **already existed on main**; #48 only re-plumbed its three deps to explicit handles. Zero production-visible change ⇒ bullet removed. doyle: FF-T4 built the notice; his noted lesson = *check new-to-main before writing an Added bullet*.

**Reusable check:** before believing a CHANGELOG bullet, (a) grep whether the named surface renders anywhere user-facing, and (b) `git show <main>:<file>` to test whether the behavior is actually new. Both defects were invisible from the diff alone. See [[instrument-soundness-guards]].

**Watcher lesson.** Two background bash watchers were *killed* (not completed) — output files empty, run unaffected. A killed watcher is indistinguishable from a patient one, which is fatal on a release gate. Use the **Monitor** tool for CI waits: it streams per-job events so a stall reads as missing progress. Also: the naive terminal predicate "all present jobs completed" fires EARLY when a later job (`notify`) has not spawned yet — require the run's own `conclusion` to be non-empty (gh emits `""` while live) AND assert expected job names present.

**Base red that is not a defect:** main @dd1653e thin run 30614088680 red on Windows = free-space preflight, 27.8 GB vs 32 GB floor, during a low-disk window; recovered to 87 GB before golden. Orphaned-worktree census + floor-raise question filed as `releases#56`.

**State at write:** handed back to doyle for the ff of main → 0f90431. Publish is deployah's next leg (tag, build, sign, publish, verify Latest + update-set, drop counter, fire #117 riders: perri ring reinstate + release number, emphasys CI.md, mobile-gw). Counter ≈83 per hand-off but **re-decode from the published v0.47.0 update-set at signing**, never from memory. Seed via `SPT_RELEASE_SEED` hex-env, no `_CMD` — see [[release-seed-machine-env-ruling]]. Prior release record: [[v0470-published]].
