os-sdlc: blast-radius agent for any planned change; os-backlog: critique + loop-back step in ticket-decompose before ready-for-agent #647
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#647
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
Plans reach the os-sdlc pipeline with gaps: missed consumers, tests that pin the old behavior, other repos, ADRs that conflict. The gaps surface at behavior-verifier or never. A push-back at that point costs a full pipeline run.
In session d1aa78d1 (2026-09-23) two hand-dispatched read-only agents mapped the blast radius of the draft plans for #643 and #645. Both drafts changed before filing:
renderertarget has no directory matching its name; no name-to-path object existsTest#covering(plugins/os-sdlc/lib/os_sdlc/model/project/test.rb:14-18) mirrors after stripping code_path; root-only strip breaks it## Cases; bodies are snapshotted at open (ADR-0146)Nothing in either plugin offers this check today. It only happened because the user asked for it by hand.
Approach
Two parts. Each lives in the plugin whose domain it is.
1.
os-sdlc:blast-radiusagent (os-sdlc)A read-only agent that takes any described change and reports what it touches. It lives in os-sdlc because it inspects the codebase and preloads the os-sdlc probing skills. It is not tied to tickets: the input may be a ticket Approach, one part of a ticket, an ad hoc plan, or a one-line idea ("I think we should do X").
Frontmatter sketch (description names the trigger and the payoff, not the mechanism):
Dispatch rules:
Fixed report shape (proven in d1aa78d1):
.sdlc/project.yamlunder /home/jared/devRequired work:
plugins/os-sdlc/skills/blast-radius/SKILL.md: the method. Inputs (change, do-not-re-verify facts), probes (evidence CLI, lsp-probe, ast-grep, grep for prose/YAML/maps, other repos under /home/jared/dev), and the six-section report. Modeled on the two dispatch prompts in transcript d1aa78d1 (search "blast radius").plugins/os-sdlc/agents/blast-radius.mdthat preloads the skill and prints the report as its final output. No runner handoff.os-sdlc:change-auditorpreloads the same skill and gains a step 5, Radius, that emitsCONSUMER:,PINS:, andADR:items into its existing handoff. Downstream roles already receive that handoff throughenrich; no map change.bin/refresh-pluginsafter the charters land; new agent types need a session restart.2. Critique step in
/os-backlog:ticket-decompose(os-backlog)After the draft exists and before the
ready-for-agentlabel, the skill dispatchesos-sdlc:blast-radiuson the draft Approach, then compares draft against report:## Retired testsThe step updates the draft and shows the user the diff.
Loop-back: when the report changes the approach itself, not only its required-work list, the skill re-enters at Decide and reruns the skeptic gate on the revised draft. One loop-back only; a second change goes to the user as a question.
Cross-plugin dispatch has precedent: ticket-decompose already dispatches
os-sdlc:code-probe(SKILL.md:20). ADR-0023 composes plugins by invoking each other's skills.Required work:
Acceptance criteria
os-sdlc:change-auditorhandoffs carryCONSUMER:,PINS:, andADR:items produced by the shared skill./os-backlog:ticket-decomposeon a code ticket runs the critique step before applyingready-for-agent, and the draft diff shows consumer, test, and ADR coverage.Rejected alternatives
Dependency
#643 is closed; the critique step fits the ticket model it shipped (Problem, Approach with required work, Acceptance criteria, Owner sketch). Related: #645, #646, #644.
Origin
Implementer: read the transcript above and search it for "blast radius" for the two original dispatch prompts and their exact findings. They are the charter's model.
os-backlog: blast-radius agent + draft critique step before a ticket becomes ready-for-agentto os-sdlc: blast-radius agent for any planned change; os-backlog: critique + loop-back step in ticket-decompose before ready-for-agentBody and title rewritten 2026-09-24 (session 5d191346). Changes: agent moves to os-sdlc and accepts any change, not only a ticket Approach; main agent may dispatch it unprompted; critique step stays in os-backlog with a one-loop re-entry to Decide; per-plugin agent split and skill-sharing symlink rejected. Still blocked by #643.
Update 2026-09-24: #643 is closed, dependency cleared. Decision on change-auditor: not merged. A shared os-sdlc:blast-radius skill holds the method and is preloaded into both a standalone blast-radius agent (prints the report) and change-auditor (new step 5 Radius emits CONSUMER/PINS/ADR items into its handoff). Description no longer says read-only.
Work started 2026-09-24 on main (session 5d191346): blast-radius skill + agent in os-sdlc, Radius step in change-auditor, Blast radius phase in ticket-decompose.
Resolution
Done: Shipped on main
03a877cf+39909efb(ADR-0212). skills/blast-radius/SKILL.md (non-invocable method, six-section report) preloaded into new agents/blast-radius.md (prints the report, no handoff) and change-auditor step 5 Radius (CONSUMER/PINS/ADR handoff items). ticket-decompose gains Phase Blast radius for code tickets between Decompose and Report with one loop-back to Decide+Skeptic; ready-for-agent only after it. os-context 10-orchestration names the agent for unprompted dispatch.Evidence: bin/test os-sdlc os-backlog: 2 suites passed. New tests/blast_radius_agent_test.rb + Radius assertions in change_auditor_agent_test.rb green. Live test: a sonnet agent ran the charter+skill on a rename of the UNMAPPED: prefix and returned a correct six-section report (found the pinning test at change_auditor_agent_test.rb:47 and ADR-0170/0209 to amend); its friction notes produced
39909efb. bin/refresh-plugins run.Follow-ups: none. The blast-radius agent type loads at the next session start; until then it is dispatchable only by inlining the charter.