step.28.diff.txt -- narrative retro for step.28 (U5.6: THE REMOTE TRINITY). Companion: step.28.gdiff.txt via ../scripts/step_gdiff. Both phases CLOSED same day (Phase A scripted + Phase B operator ceremony, 2026-07-23). Executed: 2026-07-23, (p1.1.2) of the user's (p1.1) plan. Commits: WORK 01a09f6, Phase A 9984a33, CLOSE 07c6fb4, ledger 9bd8b69. Cross-repo prerequisite: b3u UB.4 (step.53, same day). ## Plan vs actual +---+--------------------------------------+--------------------------------------+ | # | Planned (brief) | Actual | +---+--------------------------------------+--------------------------------------+ | 1 | CF Access transport in the client | One seam exactly as designed: | | | | session default headers at __init__. | | | | 3 hermetic tests; local behavior | | | | byte-identical without the env | | | | (trinity_gate.sh local re-run ALL | | | | PASS -- G-D proven live, not just | | | | hermetically). | | 2 | Same arc oracle, remote plane | The SAME pytest file gates both | | | | planes -- only the egress witness | | | | needed parameterizing (declared-base | | | | assert, C-28-A). remote_gates.sh = | | | | env + legs, no new arc machinery. | | 3 | "client change ~zero" prediction | Held: ONE __init__ block + one test | | | | assert. The API-is-the-seam design | | | | sentence (ยง2.8) cashed at the cost | | | | of 13 lines. | +---+--------------------------------------+--------------------------------------+ ## Surprises / genuine findings 1. **Q-28-D -- the plane was stale, and the taxonomy caught it.** First remote ARC run failed with `unexpected 404` on validate: staging still ran pre-UB.1 code (last deployed 2026-07-18; the validate op landed 2026-07-22 and had only ever met LOCAL instances). The verifier refused to call it a red gate ("a provider cannot fix the engine") -- the exact designed split between verdicts and environment defects, firing usefully in the wild. Fix = the standard b3u_deploy.sh re-run, state untouched. LESSON: a frozen contract doc does not deploy itself; staging redeploy joins the checklist after contract-surface changes. 2. **Q-28-E -- the relay's paste channel is the fragile link.** The ceremony needed three relay attempts: (i) a chat-copied paste arrived indented + blank-lined -> the V0 shape guard refused it, resumable (guard correct); (ii) the retry clipboard was clobbered by copying the NEXT command from chat -> a shape-valid nonsense proposal was accepted and cached as a DONE node, and decline LOOPS on resume (only failed/declined nodes re-run) -- the way out was the engine's own printed remedy, repairing the record EXECUTING -> RATIFIED; also hit (and was correctly stopped by) the human provider's TTY guard when trying to pipe stdin; (iii) the working fix: a one-shot helper that wl-copies the proposal and execs the run in the same motion. NAMED FUTURE: an optional --proposal-file flag on the human adapter (TTY-gated approval retained) would remove the channel's fragility without weakening the witness. 3. **The engine's own error text was the ops manual.** Both traps (no-instance resume, the record repair) printed their own next action, and both next actions worked verbatim. The refuse-loudly-with-remedy discipline paid for itself at the worst possible moment: mid-ceremony, operator at the keyboard. ## Scope discipline In: the CF seam, the witness parameterization, remote_gates.sh, 3 tests, the ceremony, docs, the banner generalization. Out and named: --proposal-file (Q-28-E's future variant); any b3u-repo change (the Q-28-D redeploy used b3u's existing script unmodified); (p1.1.3)+ (the Test Plan inherits Q-28-D's redeploy-checklist lesson and the 409-on-resignup target). Zero contract-surface changes (C-22-D: CF headers are transport). ## Numbers - Suite 644 passed + 28 skipped = 672 (WORK baseline, measured after the last edit; +3 CF tests, +4 corpus growth) -- re-verified green after the ledger close edit. - remote_gates.sh: refusal leg, then run 1 = 4/5 (Q-28-D), run 2 = ALL PASS (~65s whole arc, Q-28-C: 120s per-call stands). - Ceremony: check 8/8 PASS, independently re-verified; 3 egress- recorded relay runs (2 failed attempts honest in the trail); delivery = 22 files, 4 languages, revision 1, from staging. - The (p1.1) arc so far: b3u UB.4 (step.53) + b3ubot U5.6 (step.28) in one day -- the trinity is host-agnostic in fact. End of retro.