---
name: forkening-w1-build-progress
description: THE-FORKENING W1 build progress (todlando) — gh transport + bootstrap verb; field-verify legs CLOSED; W0 facts from doyle
metadata: 
  node_type: memory
  type: project
  originSessionId: 8247f171-5398-4afb-9a95-d51e296457f8
---

**W2 PASS + MERGED @f513b5d (2026-07-15, after clippy rework @052f7ad — too_many_arguments allow).**

**W3 BUILT + PR #3 @053e008 (gate pending, doyle pinged):** spt-daemon docshost.rs — hyper current-thread server, broker-side, loopback-only-by-construction :5474 (docs_port config + SPT_DOCS_PORT env), GET/HEAD, decode-then-sanitize + canonicalize-prefix symlink gate, URL surface verbatim, NO_DOCS_LANDED pointer; `spt docs url`/bare `spt docs` (CREATE_NO_WINDOW); riders: about-help URL, xtask site() RETIRED (REQ-REL-1 → HISTORICAL doc-only), license link → bs-releases README, book.toml site-url "/". Sweep 1792/1793 (same box-anchored wan_arrival red only). Built across a PC hard-crash — all edits survived on disk.

**PC CRASH FALLOUT (2026-07-15 ~03:15):** identity/subnet.json wiped to {\"subnets\":[]} — doyle re-paired SPT_DEV (elevated fetch+join vs kitsubito, beats 30s code rotation); BIGNET still unpaired (operator-flagged, flynn-box/mobile hold it); finding seeded as candidate REQ-HAZARD-SUBNET-JSON-CRASH-SAFE (leg a: write atomicity; leg b: boot self-heal clean-empty overwrite instead of refuse-and-preserve .corrupt — mtime evidence implicates b). kitsubito daemon was separately down (doyle systemctl-fixed). Runners survived; CI live on bs-core.

**NEXT AFTER W3 GATE:** W4 (update-UX: REQ-UPDATE-ADAPTERS-VERB + REQ-UPDATE-DEFAULT-COMPOSITE + REQ-UPDATE-RESTART-SAFE-SWAP + REQ-DAEMON-REFRESH) — then gate → v0.32.0 release (deployah publishes, counter 59, bs-releases ONLY; CHANNEL-PRIVATE int flips at the ceremony). W4 candidate rider: `spt daemon restart` verb absence (noted at F-038 verify).

**BODY-LOSS HEALED (claude-spt v0.21.0, 2026-07-15):** root = CC 30s hook ceiling + destructive park drain (project-context git fanout in hook identity path); fix = verified-resolver fast path + transactional .park->.pending custody. THIS box = HFENDULEAM (not "bigscreen" — that's just the ccs instance label!). Adapter updated + operator /reload-plugins; TRACE line live (identity[verified-env]=0ms, totals ~55-450ms — also killed the 15s-per-spt-call pain, bigscreen-spt-commands-slow memory now STALE). Pair acceptance: doyle's long body arrived intact (leg 1 ✅); my long reply = leg 2, closes on doyle's confirm; then PR-carrier retires, spt primary.

**BINDING (clippy preflight): ALWAYS `cargo clippy --workspace --all-targets -- -D warnings`** — bare clippy + grep missed too_many_arguments (W2 gate red). CI's exact form or nothing.

**INCIDENT ROUTING (doyle 2026-07-15): PR comments = the carrier while doyle↔todlando spt bodies drop.** Loss pinned DOWNSTREAM of inject at translation→harness leg, bidirectional, adapter-suspect (F-037 neighborhood), perri pinged. Doyle's spool recovered my bodies intact (delivered=1, idle-inject clean) — inject works, surface leg eats it.

**MSG BODY-LOSS INCIDENT 2026-07-15 (doyle↔todlando, this box):** messages arrived as EMPTY stubs BOTH directions (doyle's W2-gate-adjacent msg to me; my long W2 handoff to doyle). Earlier same-session sends 800-1500B arrived INTACT (doyle quoted content) — onset after W2 dispatch. Long messages implicated; 199B resend went through. doyle preserved notif as F-037/delivery-class datapoint. BINDING until RCA: sub-400B sends to doyle, long content rides PR bodies / branch files. Kin: torn-stderr line, lia no-comeback (same box cluster, same 115MB RCA log).

**W1 GATE PASS + MERGED @832b982 (doyle 2026-07-14).** Two-platform full green; my box's inject_control_wedge red = ENVIRONMENT-ANCHORED (green both gate platforms same sha; rides the 115MB-log RCA cluster). W1 branch deleted.

**W2 BUILD (branch build/forkening-w2-docs-release off @832b982), doyle pre-ruling: UPDATE_DOCS_SKIPPED = distinct machine-greppable stderr token AND binary outcome unchanged — BOTH asserted in int (docs_bundle_e2e, PASSING).**
- Shipped: UpdateDocsMetadata additive field on signed set + verify_update_set_docs; relcache stage_docs/staged_docs/clear; fetch docs leg best-effort; land_staged_docs on apply (tar to docs.new + swap + re-verify, UPDATE_DOCS_LANDED); xtask docs-bundle cmd + release_publish docs entry; release.yml → bs-releases + bundle asset; docs-publish.yml DELETED (book gate folded into ci.yml Linux leg); schema $id + docs-site sweep → localhost:5474 + gh install story; REQ-INSTALL-1/5 retitled (HISTORY); REQ-DOCS-RELEASE-ASSET flipped full, REQ-RELEASE-CHANNEL-PRIVATE impl-only (int = the v0.32.0 ceremony itself, disclosed).
- GOTCHA: regex mass-edit adding a struct field via `product_version:` anchor hit ReleaseMetadata literals + fn params + enum variants across 5 files — only cargo check --all-targets caught all 7 misinsertions. Struct-literal mass-edits need --all-targets immediately.
- Gate disclosures: schema $id flipped WITH bundle (localhost:5474); llms-full header flipped (ships IN bundle); spt-shell-notify stays SaberMage (public, unforked, annotated); REQ-REL-1 impl evidence anchors on retained xtask site() (Pages assembler w/o pipeline — W3 cleanup candidate); adapter.md license link still SaberMage/spt-releases#license (org-visible).

W1 dispatched 2026-07-14 (doyle), branch `build/forkening-w1-gh-transport` off main @3cb54b4. REQs: REQ-UPDATE-GH-TRANSPORT + REQ-INSTALL-BOOTSTRAP-VERB (flip required_stages in build commit). Authority: docs/THE-FORKENING-TRIAGE.md + ADR-0036 + CONTEXT amendments.

**v0.31.0 field-verify: BOTH my legs CLOSED 2026-07-14, MSG-IDENTITY milestone CLOSED (doyle ACK).**
- W6 stderr semantics CLEAN: POISONED=deadline-only (2 records, 15000ms bound, timed_out=true discriminator), 36,320 organic CONN_WRITE_RETIRED fully attributed, 535k CONN_LIFECYCLE chain complete.
- F-038 live PASS: daemon stop --force + start → mobile-gw auto-returned via startup_endpoints (daemon.json).
- Riders seeded (doyle holds): lia no-comeback + emphasys vanish (seed-#6-kin); TORN stderr line 477118 (non-atomic writes interleave CONN_LIFECYCLE+PUMP_PEER_FAIL); 209 deadline-*.json litter in SPT_HOME root; no `spt daemon restart` verb (W4 rider candidate). Pre-restart 115MB stderr log preserved: C:/spt-diag/pump-stall-2026-07-14/daemon.stderr.pre-restart.log (pump-stall RCA source).

**W0 facts (doyle 2026-07-14):**
1. origin on this checkout = BigscreenVR/spt-bs-core (flip DONE); `mirror` remote = SaberMage. Branch pushes → bs-core.
2. Runners NOT registered on bs-core yet — PR CI sits QUEUED, queued ≠ failure.
3. BigscreenVR/spt-bs-releases exists (private, git mirrored) but NO release assets migrated — counter 58 baseline stays on SaberMage/spt-releases (now private, Actions off). Int tests can target SaberMage/spt-releases via SPT_INSTALL_REPO env (private + has assets = real gh-carrier test).
4. deployah BACK ONLINE — normal roles, deployah publishes v0.32.0, gate handoff to doyle as usual.

**W1 BUILD COMPLETE 2026-07-14 — PR #1 on bs-core (build/forkening-w1-gh-transport @2552ee6), gate handoff sent to doyle.**
- Shipped: core fetch on gh carrier (probe-first GhCliRequired/GhAuthRequired split); repo/URL flips (cli+notif+xtask); `spt install` verb (stage-then-rename, marker-idempotent PATH, platform gate); release_verify_e2e on gh (RUN GREEN vs private SaberMage, counter-58 both platforms); bootstrap_verb_e2e int; README + docs-site Installing/self-update docs; both REQs flipped [doc,impl,unit,int]. Local gates all green (clippy, 394 units, drift, traceable).
- LESSON (live repro): test exe named install_verb_e2e-*.exe tripped UAC-740 on this box — nextest couldn't even --list it. NO install/setup/update words in ANY exe name incl. TEST binaries; renamed bootstrap_verb_e2e.
- REWORK PUSHED @a841f5a: notif test asserts CONSENT_CHANGELOG_URL const; passes. Full-sweep ledger: 1783/1785; two spt-daemon reds ORTHOGONAL to branch: wan_arrival_to_idle_spt_hosted_injects_with_no_hook_poll DETERMINISTIC red on this box AND on main @3cb54b4 worktree (3x, spool=1 vs 0, payload_reached_pty=false; CI-green at v0.31.0 — box-anchored or latent main bug, NOT called flake per incident-box lesson; doyle kitsubito leg discriminates); wake_single_flight load-intermittent (failed once mid-sweep, passed targeted). Awaiting doyle Linux leg verdict.
- GATE R1 (doyle 2026-07-14): REWORK — one red: notif.rs:968 consent test asserted old "spt-releases/releases" substring (my 394/394 was -p spt only; WORKSPACE preflight applies to TESTS not just clippy). Fixed to assert CONSENT_CHANGELOG_URL const. BOTH RULINGS RATIFIED: scripts-as-fixture stands (W2 retitles public-surface REQ prose); bare `spt install` stands. Riders assigned to later waves: cli.rs:50 about-help Pages URL (W3), manifest.rs schema $id (W2/W3), install-on-demand + quickstart Pages cites (W2 docs sweep). PASS needs full workspace nextest green + a Linux leg (CI queued; doyle kitsubitos the reworked sha otherwise).

**W1 code map (scouted):**
- gh machinery EXISTS from adapter path (REQ-ADAPTER-GH-TRANSPORT): `EffectiveTransport`, `resolve_transport`, `gh_available` (10s bounded `gh auth status`), `gh_version_command`, `gh_download_command`, `fetch_release_asset_bytes` — cli.rs ~4905-5030. W1 = extend to CORE fetch.
- Core fetch to convert: `cmd_update_fetch` cli.rs:5361 — `http_get_text(set_url)` @5402 + per-artifact `http_get_bytes` @5469; repo default seam @5363.
- URL consts to flip: cli.rs:4573 RELEASES_URL, notif.rs:378 CONSENT_CHANGELOG_URL, xtask main.rs:729 REPO.
- NOT W1: cli.rs:17489/17506 adapter fixtures (SaberMage/claude-spt, perri lane); ci.yml spt-shell-notify; release.yml/docs-publish.yml (W2); docs-site/book/* generated.
- Bootstrap verb: canonical install = $SPT_HOME/bin/spt.exe ($LOCALAPPDATA\spt-core\bin). installer/install.ps1 (219L) + install.sh (179L) to RETIRE — carry REQ-INSTALL-* evidence (5=non-interactive, 7=firewall netsh, 8=at-logon schtasks, 10=daemon start not run, 1/3=place+PATH+idempotent) into the verb or orphaned tags fail traceable check.
- Platform stamp: REQ-UPD-6 update.rs:171 (plan-level); v0.3.2 "refuses unstamped/wrong-OS" — locate stamp mechanism before verb impl.

Related: [[the-forkening-plan]], [[v0310-published]], [[msg-identity-milestone-progress]].
