{"type":"meta","slug":"plans-dual-plane","base_branch":"main","gate0_mode":"strict","dispatch":{"command":"/home/user/.harness/engine/versions/0.1.84/wrappers/codex.sh","args":["--workspace","{{WORKTREE}}","--trust","{{TASK_DESC}}","--task-slug","{{TASK_ID}}","--model","gpt-5.6-terra-medium","--timeout","3600"]}}
{"type":"goal","text":"Runplan-v2 runs appear in the overdeck /plans panel: collector stops latching its harness control-api connection at boot; fresh generation-tagged pointer-file resolution per poll, invalidate on network/timeout/401, deploy live."}
{"type":"methodology","text":"Contract in docs/specs/2026-07-29-plans-dual-plane-design.md is source of truth. TDD against collector/src/adapters/harness.test.ts patterns; disk-discovery tests use tmpdir harnessHome fixtures, never the fixed-endpoint helper. Public HarnessAdapter interface unchanged; no new config keys; no new files."}
{"type":"intent","text":"User cannot see or control plans executed by runplan v2 in the overdeck UI. Root cause is a boot-time connection latch in the collector, not a schema mismatch. Union of the deprecated wedged v1 plane was reviewed and REJECTED - do not resurrect it."}
{"type":"direction","verbatim":"currently, there is no observability in overdeck ui to the plans running via runplan harness v2. the plans just dont appear there at all"}
{"type":"direction","verbatim":"use /brainstorm i want you to use runplan v2 with profile codex to execute this plan"}
{"type":"anchor","path":"docs/specs/2026-07-29-plans-dual-plane-design.md","what":"spec"}
{"type":"anchor","path":"docs/plans/2026-07-29-plans-dual-plane.md","what":"plan"}
{"type":"session_memory","note":"Delivery is not done at land: overdeck-collector.service runs from ~/.local/share/overdeck/deploy (origin/main clone). ship.sh postland runs packaging/deploy-local.sh which fetches origin/main and restarts services - landing MUST include push."}
{"type":"session_memory","note":"Live acceptance must assert a concrete runId from the v2 control-api /runs appears in collector /state plans panel with owner==v2, using both bearer tokens (~/.harness/token for control-api, ~/.config/overdeck/token for collector). Unauthenticated or owner-only checks pass vacuously."}
{"type":"task","id":"t1","wave":1,"seat":"coder","tier":"medium","desc":"Read docs/plans/2026-07-29-plans-dual-plane.md Task 1 (Connection freshness in harness adapter) for the full contract; spec docs/specs/2026-07-29-plans-dual-plane-design.md is normative. Replace boot-time harness connection latch with generation-tagged per-poll resolution + classified invalidation. Acceptance: cd collector && bun run test -- src/adapters/harness.test.ts. Commit only: collector/src/adapters/harness.ts collector/src/adapters/harness.test.ts. Work only inside the current worktree; leave changes committed on disk; do not push and do not switch branches.","requires_decision":null,"verify":["cd collector && bun run test -- src/adapters/harness.test.ts"],"acceptance":["cd collector && bun run test -- src/adapters/harness.test.ts"]}
{"type":"session_memory","note":"Plan doc Task 2 (Deliver and prove live) is NOT an engine task: v2 lands (merge to main + push) only at plan end, so deploy+acceptance runs AFTER the engine exits, executed by the orchestrating session per the plan doc contract."}
