docs: Campaign LA handoff — worktree paths, stopped-agent recovery, kickoff prompt

Both remaining agents were stopped for token budget and their partial work
committed as WIP (75a6724d LA1 fix round, c6019424 LA2). The handoff now
carries: full worktree paths with branches and HEADs, exactly what each
stopped agent had finished versus what it still owes, and a paste-ready
kickoff prompt naming all three resumable items plus the two owed merge
items.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-14 16:34:06 +02:00
parent 75a6724d5b
commit 4edc122085

View file

@ -5,9 +5,17 @@ ledger), then `docs/superpowers/specs/2026-08-14-launcher-campaign-design.md`
(the approved design).** Memory crib:
`claude-memory/project_launcher_direction.md`.
Branch: `claude/acdream-launcher-credentials-4d2f7c`
Worktree: `.claude/worktrees/acdream-launcher-credentials-4d2f7c`
HEAD at handoff: `498f1c11`
## Worktrees (full paths — work in the campaign worktree, NOT the repo root)
| Purpose | Full path | Branch | HEAD at handoff |
|---|---|---|---|
| **Campaign branch — START HERE** | `C:\Users\erikn\source\repos\acdream\.claude\worktrees\acdream-launcher-credentials-4d2f7c` | `claude/acdream-launcher-credentials-4d2f7c` | `75a6724d` |
| LA2 slice | `C:\Users\erikn\source\repos\acdream\.claude\worktrees\acdream-la2` | `campaign-la2` | `c6019424` |
| LA3 slice | `C:\Users\erikn\source\repos\acdream\.claude\worktrees\acdream-la3` | `campaign-la3` | `26feba81` |
| LA7a slice (merged — removable) | `C:\Users\erikn\source\repos\acdream\.claude\worktrees\acdream-la7a` | `campaign-la7a` | `0c8643a7` |
The repo root `C:\Users\erikn\source\repos\acdream` is on `main` and is NOT
where this campaign happens.
---
@ -48,8 +56,8 @@ Design decisions already made and NOT to be re-litigated (spec §2):
| Slice | State | Commits |
|---|---|---|
| LA0 `AcDream.Platform` extraction | **DONE** (review closed) | `cb6502c8`, `a49e92df`, `7a839cba` |
| LA1 launch contract (App CLI + status writer + roster seam) | implemented; **Opus review returned FIX-FIRST**; fix round IN FLIGHT | `db9ad53c` (MIXED — see §4), note `e1322a06` |
| LA2 probe mode + idle policy | implementer IN FLIGHT | branch `campaign-la2` (base `498f1c11`) |
| LA1 launch contract (App CLI + status writer + roster seam) | implemented; Opus review FIX-FIRST; **fix round WIP — stopped mid-task**, see §3 | `db9ad53c` (MIXED — see §4), note `e1322a06`, WIP `75a6724d` |
| LA2 probe mode + idle policy | **WIP — stopped mid-task**, see §3 | `c6019424` on branch `campaign-la2` |
| LA3 `AcDream.Launcher.Core` | implemented; review FIX-FIRST (12 findings); **fix round LANDED — all 12 fixed, 94/94 Windows + WSL**; owes narrow re-review, then merge | `37d74e44`, `26feba81` on branch `campaign-la3` |
| LA7a character wire messages | **DONE + MERGED** | `6a32f375`, `4338b1c1`, `0c8643a7`, merge `fa2de1c4` |
| LA4 Avalonia UI | not started (needs LA3) | — |
@ -64,24 +72,37 @@ retail sends ≥16 bytes, we send 8; ACE ignores the tail).
---
## 3. Work IN FLIGHT at handoff — recover these first
## 3. Work STOPPED MID-TASK — resume these first
Three agents were running when this handoff was written. Their results arrive
as task notifications in the ORIGINAL session only; a new session must verify
state from git instead of waiting.
Two agents were **killed for token budget** and their partial work is
**committed as clearly-marked WIP**. Build/test state at both WIP commits is
UNVERIFIED — build and test before trusting either.
1. **LA1 fix round** — main worktree, branch
`claude/acdream-launcher-credentials-4d2f7c`. Findings: F1 (HIGH, required)
the `SessionStatusWriter` must never throw into the login/teardown
transactions and must create its parent directory (an unwritable/missing
status path currently fails a healthy session — first-run trigger);
F2 App reader must TOLERATE `process.paths` (parse-and-ignore, like the
existing `policy`) and explicitly REFUSE `mode: "probe"` with a named error;
F4 production-shape the shared fixture (`process.content`, `standardInput`
credential); F3 reconnect emits `disconnected` first + record the mid-play
drop limitation; F5F8 minor hardening.
2. **LA2 implementer** — worktree `.claude/worktrees/acdream-la2`, branch
`campaign-la2`.
1. **LA1 fix round — WIP at `75a6724d`** (campaign worktree/branch).
DONE in the WIP: F1 best-effort `SessionStatusWriter` (never throws into
login/teardown, creates its parent directory), F2 App reader tolerance
(parse-and-ignore `process.paths`, explicit named refusal of
`mode: "probe"`), F5 `--session-config` argument hardening, new tests.
**STILL OWED:** F4 production-shape the shared fixture
(`tests/Fixtures/campaign-la/session-config-shared-fixture.json` — add
`process.content`, switch credential to `standardInput`/`session`, assert
values on BOTH sides; this was the agent's literal next step); F3 reconnect
emits `disconnected` before the second `connected` + record the mid-play
wire-drop limitation in the plan's status-stream section; F6 `exited`
idempotency + distinct reason strings; F7 make the Runtime redaction test
structural (assert the exact serialized property set per event kind); F8
platform-guard file-set test + fix the overstating `isLinux` comment;
optional `RuntimeOptions.PrintMembers` redaction of `LivePass`.
Then: run Runtime/App/Headless Release suites (+ WSL for Runtime/Headless)
and dispatch the NARROW re-review.
2. **LA2 — WIP at `c6019424`** (worktree `...\acdream-la2`, branch
`campaign-la2`). DONE in the WIP: probe flag through
`LiveSessionConnectOptions`, the `StartCore` short-circuit before selection,
the `mode` field with the `JsonRequired`→semantic-validation move, host
exit-code mapping, 34 tests passing including 3 probe tests (agent's last
report before the stop). **STILL OWED:** idle-policy unit tests (its next
step), full Runtime+Headless Release suites on Windows AND WSL, then the
Opus dual-lens review.
3. **LA3 fix round — COMPLETE at `26feba81`** (worktree
`.claude/worktrees/acdream-la3`, branch `campaign-la3`). All 12 findings
fixed: the CRITICAL `"paths": {}` emission (now omitted entirely), probe
@ -161,7 +182,65 @@ re-derive the work).
---
## 6. The goal to set
## 6. Kickoff prompt for the new session
Paste this as the FIRST message of the new session (it names the three
resumable work items explicitly), then set the goal in §7.
```text
Resume Campaign LA (the acdream launcher). Work in
C:\Users\erikn\source\repos\acdream\.claude\worktrees\acdream-launcher-credentials-4d2f7c
on branch claude/acdream-launcher-credentials-4d2f7c. Read
docs/research/2026-08-14-campaign-la-handoff.md first, then the ledger in
docs/plans/2026-08-14-launcher-campaign.md.
Three items are waiting, all recoverable from git — two are partial work from
agents that were stopped mid-task for token budget, and their build/test state
is UNVERIFIED:
1. LA1 fix round — WIP commit 75a6724d on this branch. An agent had completed
findings F1 (best-effort SessionStatusWriter that never throws into the
login/teardown transactions and creates its parent directory), F2 (App
reader tolerates process.paths and explicitly refuses mode:"probe"), and F5
(--session-config argument hardening). It was stopped just as it started F4.
Finish: F4 production-shape tests/Fixtures/campaign-la/session-config-shared-fixture.json
(add process.content, switch the credential to standardInput/session, assert
values in BOTH host suites), F3 (reconnect emits disconnected before the
second connected; record the mid-play wire-drop limitation in the plan's
status-stream section), F6 (exited idempotency + distinct reason strings),
F7 (make the Runtime redaction test structural — assert the exact serialized
property set per event kind), F8 (platform-guard file-set test + fix the
overstating isLinux comment), and optionally redact LivePass from
RuntimeOptions.PrintMembers. Then build, run Runtime/App/Headless Release
suites plus WSL for Runtime/Headless, and dispatch the narrow re-review.
2. LA2 — WIP commit c6019424 in worktree
C:\Users\erikn\source\repos\acdream\.claude\worktrees\acdream-la2 (branch
campaign-la2). An agent had implemented the probe flag through
LiveSessionConnectOptions, the StartCore short-circuit before selection, the
mode field with the JsonRequired-to-semantic-validation move, and the host
exit-code mapping, with 34 tests green including 3 probe tests. It was
stopped before writing the idle-policy unit tests. Finish those, run the
Runtime+Headless Release suites on Windows and WSL, then dispatch the Opus
dual-lens review.
3. LA3 — COMPLETE at 26feba81 in worktree
C:\Users\erikn\source\repos\acdream\.claude\worktrees\acdream-la3 (branch
campaign-la3). All 12 review findings fixed, 94/94 Windows and WSL. It needs
only a narrow Opus re-review of 26feba81 against the finding list in §3 of
the handoff, then merge into the campaign branch.
At the LA1+LA3 merge, do not lose the two owed items: the cross-assembly
contract test (feed a Launcher.Core composer document to BOTH host loaders) and
adding tests/AcDream.Launcher.Core.Tests to the Linux CI lane in
.github/workflows/headless-portability.yml.
After those land, continue the ledger: LA4 (Avalonia UI), LA5 (plugin hosting),
LA6 (login commands), LA7b (char-select state+flow), LA8 (authored screen), LA9
(installer), LA10 (updater), LA11 (closeout).
```
## 7. The goal to set
Set this with `/goal` in the new session (it is the same directive this session
ran under, refreshed for the current state):
@ -169,10 +248,13 @@ ran under, refreshed for the current state):
```text
GOAL: Ship Campaign LA — the acdream launcher/installer/updater + retail character-select screen.
Start at docs/research/2026-08-14-campaign-la-handoff.md, then the ledger in
docs/plans/2026-08-14-launcher-campaign.md. Recover the three in-flight slices
first (LA1 fix round on the campaign branch, LA2 on campaign-la2, LA3 fix round
on campaign-la3) by inspecting git state, then continue slice by slice.
Work in C:\Users\erikn\source\repos\acdream\.claude\worktrees\acdream-launcher-credentials-4d2f7c
(branch claude/acdream-launcher-credentials-4d2f7c). Start at
docs/research/2026-08-14-campaign-la-handoff.md, then the ledger in
docs/plans/2026-08-14-launcher-campaign.md. Finish the three waiting items
first — LA1 fix round (WIP 75a6724d, unverified), LA2 (WIP c6019424 on
campaign-la2, unverified), LA3 (complete at 26feba81 on campaign-la3, owes a
narrow re-review then merge) — then continue slice by slice.
Process, per slice:
1. Fable plans/sequences/integrates — never present work-order menus; pick and announce.