takedown-implement Runner commit omits design-placer's placed files #1018
Labels
No labels
P0
P1
P2
P3
bug
category/code-change
category/cross-repo
category/eval-run
category/investigation
category/no-test-target
category/owner-ruling
category/prose-artifact
category/recurring-chore
category/structure
category/umbrella
crc-refactor
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
rule-proposal
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jared/cc-os#1018
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The Runner commit at merge-ready stages too few files in a takedown-implement run.
The design-placer places the final design's files, but the commit leaves them out.
An unattended takedown implementation therefore cannot produce a complete commit.
Design
/home/jared/dev/cc-os/.claude/worktrees/prism-architect/docs/takedown/1018-20261016-094026/final-design.json
Approach
DesignPlacement returns every path it wrote or deleted, and the place-design script prints them as a ready
items:line that the design-placer pastes into its handoff, so the unchanged ListedPaths & changed_paths rule stages them.Required work:
plugins/os-sdlc/lib/os_sdlc/controller/dispatch/placing.rbplugins/os-sdlc/agents/design-placer.mdplugins/os-sdlc/lib/os_sdlc/design_placement.rbplugins/os-sdlc/tests/controller/place_design_reports_items_test.rbAcceptance criteria
items: ["a","b"], exit 0Owner sketch
items:lineplugins/os-sdlc/tests/controller/place_design_reports_items_test.rbWork started 2026-10-16: live takedown run (session 7, branch prism-architect).
Takedown relevance: needs a ruling
Harm: An unattended takedown-implement run reaches merge-ready with a Runner commit that omits the files the design-placer placed, so the orchestrator must commit them by hand (implementation 47 needed
b51ef274for 7 files).Protects: A complete, reproducible runner-made commit of the implementation's change, while keeping ADR-0171's rule that the runner stages only paths the agent declared and never user edits in the working tree.
Harm path: The takedown-implement map routes merge-ready to implementation_complete (maps/takedown-implement.yaml:135). Landing#complete! constructs Implementation::Commit (command/implementation/landing.rb:33), which stages ListedPaths (handoff items) intersected with changed paths (command/implementation/commit.rb:34). The design-placer's handoff template has
items: []and nothing else reports its placed paths. (live: true)Evidence:
items: [], so it reports no paths for the Runner to stage.56686026is the refactorer's two-file commit, matching the ticket's observed paths. Commitb51ef274is the later manual commit of the placed files.d77bbadaand the following history touch no commit.rb or ListedPaths code, so no later commit fixes the path.Conflicting ADRs:
The ticket is waiting for Jared's ruling on the ADRs above.
Ruling 2026-10-16 (Jared): comply with ADR-0171. Use the existing handoff process: the design-placer handoff lists the paths it placed in items:, so ListedPaths & changed_paths includes them. No change to the Runner staged-set rule. Prefer the placement script reporting the paths over the model retyping them. Takedown run 1018-20261016-091539 stopped at relevance (needs ruling 0171); a rerun follows.
Takedown relevance: needs a ruling
Harm: An unattended takedown-implement run reaches implementation_complete with the design-placer's placed files left uncommitted, so the merge-ready commit is incomplete and an operator must commit them by hand. Implementation 47 is the cited instance.
Protects: ADR-0171's purpose: the Runner commits the implementation's own change deterministically at implementation_complete, so an unattended run yields a complete, reviewable commit without manual repair.
Harm path: Landing#complete! (command/implementation/landing.rb:31-33) calls Commit#call at implementation_complete, which builds its path set from ListedPaths over handoff items. The takedown-implement map reaches merge-ready: implementation_complete through the place-tests and place-code design-placer nodes, whose handoff template hard-codes
items: []. (live: true)Evidence:
items: []with no instruction to list placed paths, so placer handoffs supply no paths to ListedPaths.01f5edf9(#837), and no later commit in the history listed removes or replaces ListedPaths or the design-placer items template.Conflicting ADRs:
The ticket is waiting for Jared's ruling on the ADRs above.
Implementation started: /os-sdlc:implement 1018 takedown-implement on branch prism-architect (design docs/takedown/1018-20261016-094026).
Resolution
Done: os-sdlc-place-design prints an items: line listing every path it wrote or deleted; the design-placer copies it into its handoff, so the unchanged ADR-0171 rule (handoff items & changed paths) stages placed files. Built by takedown run 1018-20261016-094026 (1 round, grade cause_removed, $0.42) and implementation 48 (5 dispatches, all pass, 2 min). Also restored the apostrophe rule in design-placer.md and map-router.md to \u0027.
Evidence: Commit
ec3665a6on prism-architect. tests/controller/place_design_reports_items_test.rb: 2 runs, 0 failures (red at base: no items: line). Suite gate green at dispatch 429. Implementation 48's own Runner commit staged nothing, which reproduces the defect: the running code still had items: []; the fix was committed by hand.Follow-ups: none; live check at the next takedown-implement run this session (#998)