Promote responsibility-auditor to a map node feeding refactorer (phase 2) #559

Open
opened 2026-09-11 18:29:26 +00:00 by jared · 1 comment
Owner

Promote responsibility-auditor to a map node feeding refactorer (phase 2) [capture]

Context

On 2026-09-11 the user adopted a two-phase plan for the Codex-built responsibility-audit plugin. Phase 1 is an audit-only agent os-sdlc:responsibility-auditor and skill /os-sdlc:responsibility-audit. It was added on branch responsibility-audit and is not yet wired into any map. It reads whole files, inventories responsibilities, searches the codebase for owners, and proposes existing or new owners. It ignores ADRs by design.

Observed

Design agents in os-sdlc (contract-auditor, refactorer) are diff-scoped by ADR-0160. Nothing detects a domain operation implemented in several places or an invariant enforced by callers instead of the owning object. ADR-0174 (Git::Repo consolidation) was a manual fix for exactly that failure mode.

Reproduce

n/a: design ticket

Expected

  • Record an ADR: a non-diff-scoped design node partially reverses ADR-0160 for one node.
  • Add maps/responsibility-refactor.yaml: responsibility-auditor -> refactorer (enrich: [responsibility-auditor], gates diff-test + lint, fail bound 2) -> suite-check -> contract-auditor.
  • Runs open with a throwaway ticket per run via implementation-open; no ticket-less Runner change.
  • Loosen or variant the refactorer brief so it may act on auditor findings outside the diff.
  • Live-verify one run on plugins/os-sdlc/lib/os_sdlc/project.rb.

Blocked until the user is confident in phase 1 audit output on plugins/os-sdlc/lib/os_sdlc/project.rb and then a full directory. Expected timeline: days to weeks.

Origin

  • Trigger: user request
  • Improvised this session: none
  • Chain: DESIGN ← ADR-0160
  • Root candidate: none
  • Where: plugins/os-sdlc/agents/responsibility-auditor.md
  • Session: 3615bdb2-1809-42fc-9997-dc8734583302
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/3615bdb2-1809-42fc-9997-dc8734583302.jsonl
# Promote responsibility-auditor to a map node feeding refactorer (phase 2) [capture] ## Context On 2026-09-11 the user adopted a two-phase plan for the Codex-built responsibility-audit plugin. Phase 1 is an audit-only agent `os-sdlc:responsibility-auditor` and skill `/os-sdlc:responsibility-audit`. It was added on branch `responsibility-audit` and is not yet wired into any map. It reads whole files, inventories responsibilities, searches the codebase for owners, and proposes existing or new owners. It ignores ADRs by design. ## Observed Design agents in os-sdlc (contract-auditor, refactorer) are diff-scoped by ADR-0160. Nothing detects a domain operation implemented in several places or an invariant enforced by callers instead of the owning object. ADR-0174 (Git::Repo consolidation) was a manual fix for exactly that failure mode. ## Reproduce n/a: design ticket ## Expected - [ ] Record an ADR: a non-diff-scoped design node partially reverses ADR-0160 for one node. - [ ] Add maps/responsibility-refactor.yaml: responsibility-auditor -> refactorer (enrich: [responsibility-auditor], gates diff-test + lint, fail bound 2) -> suite-check -> contract-auditor. - [ ] Runs open with a throwaway ticket per run via implementation-open; no ticket-less Runner change. - [ ] Loosen or variant the refactorer brief so it may act on auditor findings outside the diff. - [ ] Live-verify one run on plugins/os-sdlc/lib/os_sdlc/project.rb. Blocked until the user is confident in phase 1 audit output on plugins/os-sdlc/lib/os_sdlc/project.rb and then a full directory. Expected timeline: days to weeks. ## Origin - Trigger: user request - Improvised this session: none - Chain: DESIGN ← ADR-0160 - Root candidate: none - Where: plugins/os-sdlc/agents/responsibility-auditor.md - Session: 3615bdb2-1809-42fc-9997-dc8734583302 - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/3615bdb2-1809-42fc-9997-dc8734583302.jsonl
Author
Owner

Design note from responsibility-audit tuning, 2026-09-12. Not for build now; the auditor is still being dialed in.

Problem: once a file is settled, the auditor keeps finding something. It must never be told "you may find nothing" (that makes it inconsistent). Worth must be decided outside the auditor.

Proposal, two parts:

  1. Scored gate. A deterministic scorer reads the audit report and gives each capability a number from the report's own signals: evidence-row count (duplication), callers-that-would-delegate count (blast radius), defect rows that change runtime behavior (bug vs style), gain bullets that name a bug or a one-line change. A fixed threshold, like a flay score, decides go-ahead vs ignore. The auditor never sees the rubric; it receives go-ahead/ignore per capability, the same way runner agents receive gate results. Rejected: ticket-skeptic as the gate, because it has not been observed to reject a ticket.

  2. Stop rule by change, not by run count. One ledger line per audited file: path, content hash, last run, accepted findings. Same hash means skip. A file re-enters the queue only when it changes or an accepted refactor lands.

Design note from responsibility-audit tuning, 2026-09-12. Not for build now; the auditor is still being dialed in. Problem: once a file is settled, the auditor keeps finding something. It must never be told "you may find nothing" (that makes it inconsistent). Worth must be decided outside the auditor. Proposal, two parts: 1. Scored gate. A deterministic scorer reads the audit report and gives each capability a number from the report's own signals: evidence-row count (duplication), callers-that-would-delegate count (blast radius), defect rows that change runtime behavior (bug vs style), gain bullets that name a bug or a one-line change. A fixed threshold, like a flay score, decides go-ahead vs ignore. The auditor never sees the rubric; it receives go-ahead/ignore per capability, the same way runner agents receive gate results. Rejected: ticket-skeptic as the gate, because it has not been observed to reject a ticket. 2. Stop rule by change, not by run count. One ledger line per audited file: path, content hash, last run, accepted findings. Same hash means skip. A file re-enters the queue only when it changes or an accepted refactor lands.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jared/cc-os#559
No description provided.