Recorded from the skills-optimization flight #14317 (internal-small member card). Unassigned — recording only, for triage. ⛔ Out of that flight's scope: its file surface is the four internal SKILL.md files plus objectui's verify.
What
.claude/launch.json carries a named configuration pr3505-attach-3477 whose runtimeArgs are rooted at /home/user/objectstack-pr3505/examples/app-showcase. That path does not exist. Measured at origin/mainaaa4e657; the live worktree list on this container is the shared checkout plus three current issue worktrees, none of them objectstack-pr3505.
Why it is worth a card rather than a silent delete
The dogfood skill's section 0 tells every dogfood session to add a named config here pointing at its own working directory, and the checklist-test skill routes to that same section. So launch.json accretes one entry per session by design, and nothing prunes them — a dead entry is the expected end state of a correct process, not an author's slip.
The cost is not the disk. It is that preview_start on a stale name fails in a way that reads like an environment problem (the pnpm -C target is missing) at exactly the moment a session is trying to establish whether its isolation is working — the same class of misleading symptom the runner doc already documents for the port and browser cases.
Options, for triage rather than a guess
- Prune-on-write convention — the dogfood section-0 checkbox gains "remove your entry when the worktree goes"; cheap, relies on discipline, and the accretion evidence suggests discipline is not enough.
- Gate it — a check that every
runtimeArgs path in .claude/launch.json resolves, or is a placeholder. Mechanical, and the only option that stays true without anyone remembering. - Stop checking session configs in at all — treat
launch.json as a per-session artifact. Largest change; touches a governed surface and both skills that route to it.
A dev should not pick among these unprompted: option 3 changes an agent-facing convention, and option 2 adds a gate to a governed tree.
Refs: #14317 (the flight that measured it)
Recorded from the skills-optimization flight #14317 (internal-small member card). Unassigned — recording only, for triage. ⛔ Out of that flight's scope: its file surface is the four internal SKILL.md files plus objectui's
verify.What
.claude/launch.jsoncarries a named configurationpr3505-attach-3477whoseruntimeArgsare rooted at/home/user/objectstack-pr3505/examples/app-showcase. That path does not exist. Measured atorigin/mainaaa4e657; the live worktree list on this container is the shared checkout plus three current issue worktrees, none of themobjectstack-pr3505.Why it is worth a card rather than a silent delete
The dogfood skill's section 0 tells every dogfood session to add a named config here pointing at its own working directory, and the checklist-test skill routes to that same section. So
launch.jsonaccretes one entry per session by design, and nothing prunes them — a dead entry is the expected end state of a correct process, not an author's slip.The cost is not the disk. It is that
preview_starton a stale name fails in a way that reads like an environment problem (the pnpm-Ctarget is missing) at exactly the moment a session is trying to establish whether its isolation is working — the same class of misleading symptom the runner doc already documents for the port and browser cases.Options, for triage rather than a guess
runtimeArgspath in.claude/launch.jsonresolves, or is a placeholder. Mechanical, and the only option that stays true without anyone remembering.launch.jsonas a per-session artifact. Largest change; touches a governed surface and both skills that route to it.A dev should not pick among these unprompted: option 3 changes an agent-facing convention, and option 2 adds a gate to a governed tree.
Refs: #14317 (the flight that measured it)