# Plan Index

audience: AI coding agents first.

Read this file at session start, after compaction, and before claiming work. Every new actionable owner request MUST map to a durable indexed plan before implementation. Triage and deduplicate by outcome: one plan may own several tightly-coupled task IDs; every task maps to exactly one primary plan. Update existing plan for repeated/corrective requests; NEVER create duplicates.

## Status contract

- `PROPOSED`: awaiting owner approval; do not launch.
- `ACTIVE`: a specific worker/process is currently executing the plan; record it in receipt.
- `IDLE`: approved/open but nobody is currently executing it.
- `BLOCKED`: genuine external blocker recorded; continue next independent ACTIVE or executable IDLE plan.
- `DONE`: installed/deployed and owner-visible with receipt.
- `SUPERSEDED`: replacement plan linked; preserve history.

## Plans

| Priority | Status | Plan | Scope | Current receipt |
|---:|---|---|---|---|
| FIRE | DONE | [Pi settings single-writer ownership](2026-08-12-pi-single-writer-ownership.md) | #7 canonical deploy ownership; preserve/merge foreign contents; hash/provenance transaction; round-trip test; land/deploy | Landed/deployed `65ff076e8`; canonical links + zero drift; installed remote canary `STATIC_REMOTE_OK` |
| FIRE | ACTIVE | [ask-gpt bounded prompt submission](2026-08-12-ask-gpt-silent-hangs.md) | #1 stop silent hangs before prompt submission; visible bounded failure or proven send | Installed proof green; landing/deploying |
| FIRE | ACTIVE | [Disable Claude Code Remote Control](2026-08-12-disable-remote-control.md) | Set tracked/live `disableRemoteControl: true`; verify block; push/deploy | Worktree `wt/disable-remote-control`; canonical source and deploy entrypoint identified |
| FIRE | ACTIVE | [Deploy queue — coalescing](2026-08-12-deploy-queue-coalescing.md) | Transparent in-script deploy queue: persistence, visibility, coalescing; systemd path/service backstop; recovered from lost session `ses_00bc3eb05ffe7YKXeLedypuXR2` | PASS=30 FAIL=0; landing |
| FIRE | ACTIVE | [Localize Overdeck skills](2026-08-12-localize-od-skills.md) | #1 move every `od-*` skill from Claude-global to Overdeck project-local scope; push/deploy | Worktree `wt/localize-od-skills`; 11 global skills inventoried; deployment ownership trace in progress |
| FIRE | ACTIVE | [Restore `claudex` configuration](2026-08-12-claudex-config-drift.md) | #1/#2 restore missing `claudex` statusline; audit proven settings drift | Live statusline restored and rendered; 15 healer + 114 claudex/statusline tests pass; hardening commit/land/deploy next |
| FIRE | ACTIVE | [Land project-color settings drift](2026-08-12-land-project-color-settings-drift.md) | Reconcile `wt/factory-settings`; verify collector persistence; land/deploy; remove worktree service provenance | Typecheck + 691 tests pass remotely; rebased onto current main |
| FIRE | ACTIVE | [ask-gpt trusted attachment staging](2026-08-12-ask-gpt-trusted-attachments.md) | #4 make jailed attachment paths visible to trusted relaunch; prove installed fresh send | Root cause proven; isolated repair worktree active |
| FIRE | ACTIVE | [ask-gpt isolated X display startup](2026-08-12-ask-gpt-xvfb-startup.md) | #21 restore isolated Xvfb startup across jailed launch boundary and authenticated browser work | Candidate installed; actual jailed PATH download produced valid 179026-byte ZIP, zero failures/partials; 281 passed, 1 skipped; independent review running |
| FIRE | DONE | [local-gate remote dispatch timeout](2026-08-12-local-gate-dispatch-timeout.md) | Fix phantom 1ms dispatch timeouts, per-host budget drain, and clamped transfer budgets in remote-build.mjs; no local fallback | Landed 1bfa205c4; 8 remote-build suites green; buildboxes dispatching again; deploy in flight |
| 1 | PROPOSED | [Remote build: delete the scheduler](2026-08-12-remote-build-scheduler-removal.md) | Replace hand-rolled host scoring/health-cache/claims with static assignment + Mutagen sync; keep all 3 boxes and the wrapper | Proposed after the outage; owner corrections (3 boxes, wrapper mandatory) folded in; awaiting approval |
| FIRE | DONE | [Incident dispatch selector options](2026-08-09-incident-dispatch-selector-options.md) | #2 resume live `/incidents` browser acceptance through installed e2e-remote | Remote selectors/interactions verified; no local browser; transient 81 MB state/incident 503 signal preserved as separate follow-up evidence |
| FIRE | ACTIVE | [Preserve rootless Podman networking children](2026-08-11-deck-podman-network-child-lifetime.md) | Fix transient service kill mode; keep local WordPress fixture networking alive | Source worktree claimed; focused test and install-before-land pending |
| FIRE | DONE | [Restore e2e-remote registry lookup integrity](2026-08-11-e2e-remote-registry-integrity.md) | #1 stop internal registry lookup from independently offloading; restore browser verification | Landed/live `f1028e745`; final installed Playwright canary rendered remotely; zero local browser executables; rollback tested |
| FIRE | DONE | [Land queue Git isolation](2026-08-11-land-queue-git-isolation.md) | #1 isolate conductor fetch/candidate/publication from corrupt task refs and objects | Landed/deployed; 115 focused + 151 Factory tests; installed dangling-ref containment and owner-visible runtime proven |
| 1 | DONE | [Compact-proof task persistence recovery](2026-08-11-compact-proof-task-persistence-recovery.md) | #15 read persisted `<task-id>.json` task files after compaction | Landed/deployed `c394e28a`; 82/82 tests; installed deploy-clone hook runtime-proven with isolated `47.json` fixture |
| FIRE | DONE | [Stop literal `%h` directories](2026-08-11-stop-percent-h-directories.md) | #1/#4/#5 identify creator; normalize every launcher path; preserve existing artifacts | Landed/deployed `64dd0cc6`; 2026-08-11 17:19 +07 revalidation: zero live carriers and fresh Python probes use absolute cache path |
| FIRE | DONE | [Review and merge PR 13](2026-08-11-review-merge-pr-13.md) | #1 personal review; satisfy live-proof and gate constraints; merge/deploy | Merged/deployed; SSH injection follow-up fixed; 57 K3s tests + installed proof green |
| FIRE | ACTIVE | [GPT Workflow Skill](2026-08-11-gpt-workflow-skill.md) | #36 Luna-driven ask-gpt implementation/review/correction; Terra integration/landing; immutable receipts | Worktree `wt/gpt-workflow-skill`; plan active; source pending |
| FIRE | ACTIVE | [Controller-Owned Dark Delivery](2026-08-11-controller-owned-dark-delivery.md) | #5/#25 controller-owned dark delivery; signed evidence admission | Trusted evidence candidate fully tested/typechecked; feature OFF; commit and independent security review next |
| FIRE | IDLE | [WIP and Worktree Triage](2026-08-11-wip-worktree-triage.md) | #1 audit all worktrees/branches/WIP; preservation-first consolidation and retirement recommendations | Read-only inventory complete: 272 worktrees, 99 branch-only refs, 8 stashes; 117 recovery lanes; zero deletions currently pass gate |
| FIRE | ACTIVE | [CPU load — agent session sprawl](2026-08-11-cpu-load-session-sprawl.md) | Laptop pinned at 100%; cleanup must never terminate attached sessions | Task #6 DONE: deployed current main; units absent/inactive, zero processes, receipt stable; task #3 pending runtime-bound redesign |
| FIRE | IDLE | [Master Delivery Plan](2026-08-10-master-delivery-plan.md) | Complete recovery lane registry; navigation only | Split into deduplicated executable plans below |
| FIRE | DONE | [Cluster degraded — oversized mirror trips the fleet](2026-08-11-cluster-push-oversize-trip.md) | 15.3 GB non-git `Press.zone` mirror times out the 120 s push budget and marks every host unhealthy | Landed `b86ee4380` + deployed; doctor green on ssh/parity/rsync for all three hosts; debian2 back in both spill orders |
| FIRE | IDLE | [Emergency Offload](2026-08-10-emergency-offload.md) | #170 restore remote execution and laptop usability | Whole-agent remote seat completed on Debian2, exit 0; customer payload and spill pending |
| FIRE | BLOCKED | [Factory on k3s](2026-08-10-factory-k3s.md) | #96/#175 immutable k3s execution vertical slice | Repair dispatch `bl1io3br2` started nothing: Debian3 seat capacity 3/3; preserved WIP unchanged |
| FIRE | ACTIVE | [K3s migration and node enrollment](2026-08-10-k3s-migration-execution.md) | Reconcile scheduler/Factory tracks; phased cluster migration; one-command post-Tailscale enrollment | Phase 1 merged/deployed at `832acc72`; Phase 2 deterministic zero-mutation enrollment planner and package complete; next gate is owner dry-run receipt and reviewed Phase 3 canary authorization |
| 2 | BLOCKED | [Seat Image Node Drift](2026-08-11-seat-image-node-drift.md) | debian1 seat image node v22≠v24; land-queue gate red fleet-wide | Handed to k3s/node-image lane; direct-land escape in use |
| 1 | ACTIVE | [Flow-First Operating Model](2026-08-10-flow-first-operating-model.md) | Permanent delivery workflow adjustment | Owner goal active: main session MUST continuously execute; background waits route immediately to another lane, never stop |
| 2 | ACTIVE | [Factory Reliability](2026-08-10-factory-reliability.md) | #1/#151/#171/#181/#182/#183 transport, supervision, timeout fixture, disk admission, UI kill/copy | #1 landed/deployed at 747fe53f; #151 passed 10 focused runs and 144-test Factory suite |
| 3 | DONE | [Global WIP Triage Skill](2026-08-11-global-wip-triage-skill.md) | Tested global `/wip-triage`; safe preservation, classification, consolidation, and retirement | Landed/deployed `ac1461925`; installed path pinned to deploy clone; contract test passes |
| 3 | ACTIVE | [GPT Orchestrator Skill](2026-08-11-gpt-orchestrator-skill.md) | Tested global `/gpt-orchestrator`; multi-task ask-gpt Pro dispatch, correction, artifact verification, sequential landing, fail-closed theme-title validation | Worker in `wt/fix-gpt-title-contract`; correction captured; source edit pending |
| 3 | DONE | [GPT Factory Skill](2026-08-12-gpt-factory-skill.md) | #11 exact file-backed context packaging and Pro-default Factory GPT launch | Landed `924664313`; deployed; installed bytes and contract verified |
| 3 | DONE | [Factory GPT Model Integration](2026-08-11-factory-gpt-model.md) | Pi provider `gpt`; `gpt/sol-web-<effort>`; mediated tools; Pro-default wrapper | Landed/deployed; installed provider healthy/authenticated; full gates and visibility contract pass |
| 2 | IDLE | [Factory Presets](2026-08-09-factory-presets.md) | #53 named seat/model/account presets | Local integration committed; awaiting orchestrated land/deploy |
| 3 | ACTIVE | [Incidents Completion](2026-08-10-incidents-completion.md) | #179/#233/#234/#236 full redesign, classification, backfill, dispatch intelligence/security | Composer seat `b84h29w2j` repairing recoverable launch state machine; canonical page/brief specs and WIP preserved |
| 4 | IDLE | [Runtime and Session Safety](2026-08-10-runtime-session-safety.md) | #23 DONE; #41/#148/#164/#169/#172 open; #178 DONE | #23 reconciliation landed/deployed `c5d071c60`; frozen source superseded and retirement-eligible but preserved pending separate gate |
| 5 | ACTIVE | [Task Registry Reconciliation](2026-08-10-task-registry-reconciliation.md) | #1–#238 stale/forgotten/false-completion audit | Main session mapped all registry tasks; corpus-only requests being reconciled |
| 5 | ACTIVE | [Owner Request Recovery](2026-08-10-owner-request-recovery.md) | #231 recover, deduplicate, triage every transcript request | Main session processing 137-message corpus |
| 7 | DONE | [ask-gpt Parallel Seats](2026-08-10-ask-gpt-parallel-seats.md) | gptbridge seat pool: 15 browsers, one auth | Landed 07235bd6b, deployed, live-proven slot 8 under 7-slot load |
| 7 | DONE | [ask-gpt Resume/Log/Live](../specs/2026-08-10-ask-gpt-resume-live-design.md) | --resume, logs, --live, --download-attachments, --list trio | Landed 5357d7c34, deployed sha 5357d7c3, all features live-verified incl. hydration + cache-first list |
| 1 | DONE | [ask-gpt Account Registry](2026-08-11-ask-gpt-account-registry.md) | #4 local JSONL registry, one-time import, account-bound resume/download | Landed/deployed `b59a7f7f`; bootstrap imported 64 owned conversations; local-only listing proven |
| 7 | DONE | [ask-gpt Attachment Download Progress](2026-08-11-ask-gpt-download-progress.md) | #5/#6/#17 progress UX plus generated-file drawer recovery | Fixes landed in `d0cae47bd`; deployed from landed source; installed exact-target proof saved valid ZIP with zero failures or partials |
| 7 | DONE | [Land queue missing verdict](2026-08-11-landq-live-ticket-loss.md) | #7 propagate queue-list failures and release failed tickets | Landed/deployed `052b1f706`; installed queue source verified; PASS=109 + local-gate + 151 factory tests |
| 6 | ACTIVE | [Prompt Journal Restoration](2026-08-10-prompt-journal-restoration.md) | #235 restore durable installed request journal | Fleet state landed `c19f4841`; clean deploy clone; standard deployment `b81apw5jr` running |
| 7 | ACTIVE | [Live Report Synchronization](2026-08-10-live-report-sync.md) | #125 keep owner report authoritative | Dedicated worktree; Composer seat `bkm1aur3z` tracing generator and implementing deterministic refresh |
| 8 | IDLE | [Agent and Cluster Observability](2026-08-10-agent-observability.md) | Unified activity logs, charts, drill-down, node/session map, terminal attach | Corpus request recovered; existing partial work not reconciled |
| 9 | IDLE | [Security Gate Containment](2026-08-10-security-gate-containment.md) | #140 contain LLM runner without gate latency regression | Design unresolved; dangerous tests restricted to danger-lab |
| 10 | IDLE | [QuietContext Product](2026-08-10-quietcontext-product.md) | #176/#219–225 purpose through Factory launch | Purpose clarification incomplete; emergency capacity prohibited |
| 11 | IDLE | [Recovery Doors](2026-08-10-recovery-doors.md) | #40 reboot-proof Debian1/2 rescue access | Reboot proof pending |
| 12 | IDLE | [Factory Account Directory Concurrency](2026-08-10-jpr06-integration.md) | #153 same-account run isolation | Local commit created; 147 Factory tests passed |

| ARCHIVE | DONE | [Workstation Agent Safety](2026-08-10-workstation-agent-safety.md) | #1/#5/#26–28/#33/#36 | Installed cgroup/kill protections; danger-lab proof recorded |
| ARCHIVE | DONE | [Agent Containment](2026-08-10-agent-containment.md) | #24 no-source recovery; frozen escape test fully superseded | Exact 5/5 + full gate green; independent review clean; frozen source `RETIRE — REDUNDANT` HIGH, preserved pending separate retirement gate |

## Request capture protocol

For every new actionable owner request:

1. Search this index for same outcome.
2. Existing plan → append request/comment/correction in full long-form meaning, WIP impact, acceptance delta, and next action.
3. New outcome → create `YYYY-MM-DD-<short-outcome>.md` from contract below; add row here.
4. Create/link task-registry ID.
5. Mark `PROPOSED` when owner asks for a plan/approval before launch; `ACTIVE` only while a named worker/process is executing; otherwise approved/open plans are `IDLE`.
6. Only then implement.
7. Before any response, stop, or compaction: update receipt.

Plan minimum:

```text
# Outcome
status:
task IDs:
source request:

## Acceptance criteria
## Preserved WIP
## Constraints
## Execution steps
## Current receipt
## Next executable action
```

Never paste a substantial plan only into chat. Chat response points to durable plan and reports its status.
