Phase 04 Plan 07: Gated Live Bodies, Taxonomy, and Decision Record — Summary
Phase 4 wave-4 closeout: gated live integration bodies for RT-05, RT-08, and TOOL-03, the tools taxonomy category with Phase 4 ID coverage, and the Phase 4 decision-note section with its test.
Files changed
test/integration/podman-gate.test.ts— migrated the sweep import fromsrc/runtime/session-execution.jstosrc/runtime/sweep.js(split import;selectOpenShellEnvironment/spawnOpenShellRunnerstay);scopedSweepunchanged in behavior (sameSweepClienttype, now from the moved module); fixed thewritePolicyDocumentcall to pass the new 4-argument form(stateDir, sessionId, egress, workloadBinary)with an empty-argv guard;createLiveContainertakes an optionalegressallowlist (default[], deny-all); added five gated live bodies, each under the existingliveGate(skips withPODMAN_UNSUPPORTED_VERSIONon 4.9.3): three RT-05 egress probes through the supervisor proxy path (allowlisted host:port reachable, non-allowlisted host unreachable, IPv6 unreachable), one RT-08 crash-reap viareapStartupwith a null-container-id record, and one TOOL-03 exec throughToolDispatcheragainst the live sandbox.test/quality/suite-taxonomy.test.ts— added"tools"toCATEGORY_DIRS; added thetoolscategory (dispatch,queue-timeout,workspace,no-bypass) toCATEGORY_MAP; added the six Phase 4 files toD45_FILES; addedPHASE_4_REQUIREMENT_IDS(RT-05, RT-08, TOOL-03, TOOL-04) with a title-citation check mirroring the Phase 3 check. Phase 2 and Phase 3 lists untouched.docs/integration/runtime-decision.md— appended the Phase 4 section (D-100): OQ-P3-16 resolution with the v0.1.2 schema URL and 2026-10-21 read date (D-82); exec verb pin with--helpevidence (D-93); IPv6 partial status (D-76); single-owner precondition with OQ-P4-06 residual risk (D-87); the D-90 two-lines-per-call audit note for the Phase 7 reader; and the OQ-P4-01 to OQ-P4-12 table with one default per item. No other doc changed; no new integration note file created.test/runtime/decision-note.test.ts— generalized the OQ row parser intoopenQuestionRowsFor(text, prefix)withopenQuestionRows/openQuestionRowsP4delegates (existing Phase 3 assertions unchanged); added six Phase 4 tests asserting the section, the OQ-P3-16/exec/IPv6/precondition/audit entries, and the ordered 12-row OQ-P4 table with non-empty defaults.
Deviations from the plan
None in scope. Two implementation choices the plan left open:
- The TOOL-03 live body wires
ToolDispatcherto a stub controller pinned toactive(realEventBus,LockTable, default policy fromloadPolicyFileon a nonexistent path, real runner). Only the dispatcher's schema, state, audit, and execution stages run; execution reaches the live sandbox through the pinned exec argv. Rationale: a fullLifecycleControllerwould couple the live body to workspace binding and bridge setup unrelated to TOOL-03. - The RT-05 probes use
/bin/sh -cwith a/dev/tcpconnection attempt and read the probe host/port fromREALM_LIVE_EGRESS_HOST/PORT(defaultsregistry.example.com:443). The/bin/shassumption is recorded in the bodies as live-gated under OQ-P4-04; the.invalidhost and::1probes deterministically fail by design.
Findings
test/tools/dispatch.test.tsandtest/tools/queue-timeout.test.tsdo not exist on disk yet (parallel 04-06 executor still working; not created or touched per instructions). Consequence:test/quality/suite-taxonomy.test.tscannot pass until they land — the "every D-45 test file exists" check and the new Phase 4 check both require them (TOOL-04 is title-cited only byqueue-timeout.test.ts). Explicit dependency for the orchestrator: run the taxonomy gate after 04-06 completes.- No stub, placeholder, or mock-assertion patterns were introduced; new live bodies assert observable behavior (reachability booleans, exit codes, reap counts, record/container absence, dispatcher outcome/tool).
Verification
No gates were run by this executor (no typecheck, lint, tests, build, or git commands), per the run rules. The orchestrator runs tsc and the node:test suites after all waves land. Self-check: all four target files were edited in place; no file outside the task list was created or modified.