---
name: m11-w2-progress
description: "M11-W2 drive-channel (REQ-SHELL-3) build status — T2.1/T2.2/T2.3 done, T2.4 E2E+activation+push remaining"
metadata: 
  node_type: memory
  type: project
  originSessionId: 30df62c3-0b22-4b14-88de-fef422a5554f
---

M11-W2 = drive channel (owner→shell, REST-only, never-spooled, latest-wins; REQ-SHELL-3), branch m11-shell-substrate, PR #16. doyle gates each task design before I build.

**ALL FOUR TASKS DONE + PUSHED to PR #16 (branch m11-shell-substrate):**
- T2.1 @b919dfd — `[shell.drive]` manifest vocab + EVENT_TYPE_DRIVE + compose_drive_frame.
- T2.2 @0557bc6 — drive-channel daemon slot: broker-held DriveHub (drivehub.rs, beside DigestHub), 3 KINDs (WRITE/TAKE/CLEAR), `spt shell drive` (owner write) + `api drive-poll` (shell read), close_shell clears both branches. doyle gate: broker-home (NOT brain — see [[broker-is-daemon-state-anchor]]), R1 token-stamp no-replay, R2 owner/link auth.
- T2.3 @d200524 — cross-node drive over ephemeral link: SHELL_LINK_DRIVE verb + shared `drive_channel_write` core (linkhost.rs, distinct from durable-cmd `drive_shell`) + 3 divergences (D1 drop-not-wake, D2 no owner-durability, D3 no-spool-remote).
- T2.4 @13fa53e — same-node E2E (tests/drive_e2e.rs, 6 criteria through the REAL drive socket) + twohost cross-node drop-not-wake rung ([twohost]-gated) + REQ-SHELL-3 activated `["impl","unit","int"]` (NO doc stage — matches REQ-SHELL-1/2).
- @9d5fb63 — docs-drift fix: regen CLI reference for the new drive commands + STRIPPED `(M11-W2,REQ-SHELL-3)` from the clap help comments (would've leaked milestone codes into public CLI ref — see [[public-docs-version-not-milestone]]). FIRST CI run (27590332525) RED on the docs-drift gate both runners — clap doc-comments ARE the --help, so new commands need `xtask gen` + no milestone codes in user-facing help.

LESSON (new): adding a CLI command → MUST `cargo run -p xtask -- gen` (regen docs-site/src/cli/reference.md) AND keep milestone/REQ codes OUT of the clap `///` help (they become public --help/CLI-ref). The docs-drift gate (`xtask check`) is CI-gated, fires before traceable can save you.

**REMAINING:** CI run 27590716942 (HEAD 9d5fb63) re-running after the drift fix; on GREEN → submit W2 to doyle (commit + run id). After W2: W3 tunnel (REQ-SHELL-4, same-node LAN-only E2E), W4 Gateway capstone (REQ-SHELL-5), W5 rig[twohost]+docs.

---
**doyle GATE VERDICT (2026-06-15): W2 PASS.** Independently verified — read pushed code @9d5fb63 + confirmed CI run 27590716942 myself (all 5 jobs SUCCESS both runners, twohost SKIPPED expected). All gate conditions hold: broker-home DriveHub, R1 token-stamp crash-proof no-replay (dead_generation unit + clear-on-link-break E2E w/ real token rotation), R2 owner-exclusive (mallory refused ×2), 6 same-node criteria via real socket (drive_e2e.rs), D1 drop-not-wake (persistent shell, no relink) / D2 / D3 unit+E2E proven, drive_channel_write naming distinct, traceability green, clippy clean. **CARRY (W5 acceptance rung):** the real-Iroh cross-node drive rung in twohost.rs is STAGED but SKIPPED (no [twohost] tag) — cross-node LOGIC is unit-proven, but the wire (drop-not-wake over real Iroh) is only proven when the [twohost] rig actually RUNS at W5. todlando cleared to W3. M11 waves NOT yet released (ride next merge-to-main+tag, counter 15).
