Fix the settlement snippet in the os-sdlc settling-agent charters #501
Labels
No labels
P0
P1
P2
P3
bug
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
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#501
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?
Context
The charters of the eleven settling agents (ADR-0144) document settlement as
echo '{"dispatch_id": N, "content": "..."}' | os-sdlc-runner subagent-stop. Observed live (2026-08-24, session 95ef4099, change-interpreter on #492): (a) the runner rejects the payload — it requires session_id and agent_type too (exit 3); (b) the echo-pipe form corrupts escaped newlines in the JSON under zsh; (c) the compound pipe trips the worktree-isolation guard for isolated subagents. Verified working form: printf the payload to an absolute-path temp file, runos-sdlc-runner subagent-stop < fileas a separate command, remove the file.Tasks
Acceptance criteria
Skeptic verdict: CREATE (live-observed defect, charter text is the root; sonnet-5 gauntlet, this session).
Origin
Probe correction before implementation (2026-08-24): the runner does NOT require all four payload fields. Exit 3 at round_commands.rb:29-31 fires on a JSON parse error (the zsh echo-pipe corrupting the payload), and completion_intake.rb:186-227 resolves a dispatch via EITHER dispatch_id OR session_id+agent_type — alternate lookup paths, not jointly required fields. The error message merely names session_id/agent_type, which is what got read as 'required'. The charter fix will still include all four fields for robustness, but will state that dispatch_id alone resolves. Also verified: no shared fragment/blueprint exists — the eleven charter files are the only sources of the snippet.
Work started 2026-08-24: rewriting settlement snippet in all eleven charters + exit-3 message, direct on main.
Resolution
Done: All eleven settling-agent charters rewritten to printf-to-file + stdin-redirect settlement with full payload fields (echo-pipe removed); exit-3 message in round_commands.rb corrected to name the real cause (JSON parse failure, dispatch_id OR session_id+agent_type resolution)
Evidence: Commit
32e7c7con main: 11 charters + round_commands.rb (144 insertions); verified no shared fragment/blueprint can reintroduce the echo-pipe form; bin/refresh-plugins run; suite green except pre-existing baseline; probe correction posted as ticket commentFollow-ups: Regression test pinning the snippet wording considered and dropped as low-value doc-drift guard. Otherwise none.
Needs review: Acceptance criterion — a dispatched agent following its charter verbatim settles first-try from a worktree-isolated session — needs one live dispatch; the planned #492 replay session doubles as this verification
Resolution
Done: > This was generated by AI during triage. Closing as implemented.
Evidence: Commit
32e7c7c(2026-08-24) rewrote all eleven settling-agent charters (plugins/os-sdlc/agents/*.md) to use 'os-sdlc-runner subagent-stop < /tmp/handoff-.json' (e.g. change-interpreter.md:65) and corrected the exit-3 message in round_commands.rb. No echo-pipe form remains.Follow-ups: Live-dispatch re-verification is folded into the #492 replay.