refactor(codebase-health): stop audit at Phase 3, delegate remediation to implementation/verification - #789
Conversation
The audit skill ran its own Phases 4-7 (fix/verify/self-review/retro), duplicating lanes owned end-to-end by other plugins. Keep the audit read-only through its Phase 3 report and delegate remediation to implementation:implement (fix) and verification:confirm (verify), referenced as soft dependencies per the cross-plugin convention. --fix no longer fixes inline; it hands the Phase 3 findings to those lanes, and when they are absent the findings table is the manual handoff (never re-inlined). Codebase-health-specific outputs are preserved: the fix-priority order travels with the Phase 3 report and post-audit config-gap observations fold into Phase 3's required sections. Closes #262 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1V3gkrfSf75isB8MiDy3o
|
Claude finished @kyle-sexton's task in 1m 31s —— View job Security Review — PR #789
FindingsNo security issues found. This PR is a pure behavioral-contract and documentation refactor across six files ( Pre-computed context shell commands (
|
|
Claude finished @kyle-sexton's task in 2m 29s —— View job PR ReviewTasks
SummaryThe refactor is architecturally sound: the audit's scope is cleanly bounded to Phase 3 (report-only), remediation is delegated via the fleet's established soft-dependency convention, and all parallel surfaces (description, README, checklist, evals, plugin.json, CHANGELOG) move in lockstep. No security concerns. Two correctness issues worth addressing before merge, plus one cosmetic note. Findings1. Eval 4 output contract doesn't cover new §5 (Config-gap observations) — correctness gapEval 4 ( // evals.json — eval id 4, expectations
"Presents findings in the required table..."
"Includes a 'Verified non-issues' section..."
"Includes an enforcement-escalation assessment..."
"Tags findings by confidence..."SKILL.md L220–223 now mandates §5 as a required section on every audit run ("clean run is the best time to note coverage gaps"), making it part of the output contract. Eval 4 is the canonical "output contract" eval but doesn't assert it, so a model could omit §5 and still pass. Fix this → 2.
|
…ation description Sync the generated marketplace catalog block to the updated plugin.json description (parity gate). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1V3gkrfSf75isB8MiDy3o
|
Claude finished @kyle-sexton's task in 2m 2s —— View job PR ReviewTasks
SummaryThe refactor is architecturally clean and correctly-scoped: the audit's boundary is Phase 3 (report-only), remediation is delegated via the fleet's established soft-dependency convention, and all parallel surfaces — description, READMEs, checklist, evals, plugin.json, CHANGELOG — move in lockstep. The version bump to 0.7.0, the BREAKING label in the changelog, and the soft-dependency guard pattern all align with the fleet convention. Two correctness issues from the prior review remain open; I've confirmed both, and found one additional gap. No new security concerns. Findings1. Eval 4
|
|
Claude finished @kyle-sexton's task in 1m 57s —— View job Security Review — PR #789Tasks
FindingsNo security issues found. This PR is a behavioral-contract and documentation refactor across seven files ( Pre-computed context shell commands (
|
…ion evals Reword the --fix gate so both downstream skills are described identically as user-directed suggestions that the audit does not auto-invoke, removing the imperative "hand the findings to" framing that read as model-driven. Assert the required Config-gap observations section in the output-contract and clean-run evals, and align the --fix delegation eval to the user-directed-suggestion wording. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1V3gkrfSf75isB8MiDy3o
|
Claude finished @kyle-sexton's task in 1m 26s —— View job Security Review — PR #789Tasks
FindingsNo security issues found. This PR is a behavioral-contract and documentation refactor across seven files ( Pre-computed context shell commands (
|
|
Claude finished @kyle-sexton's task in 2m 48s —— View job PR ReviewTasks
SummaryAll three correctness issues flagged in the earlier automated reviews are resolved in the HEAD commit ( IssuesFix gate says "present the summary count" but Remediation section says "present the Phase 3 findings" — model will get conflicting instructions
"Present the summary count" (a bare number like "Found 3 findings") and "present the Phase 3 findings" (the full table, non-issues, drift patterns, fix priority, enforcement escalation, and config-gap observations) are two different outputs. Since Eval 7's Prior findings — now resolved in HEAD
Notes (non-blocking)Eval 7 array position. The entry with Eval 5 Soft-dependency guard pattern. Confirmed against the fleet: Version, CHANGELOG, lockstep surfaces. |
…n handoff The fix gate said "present the summary count" while the Remediation section and its eval both hand the full Phase 3 findings table to the downstream lanes. A bare count is not actionable for /implementation:implement; present the full Phase 3 report so the handoff carries what the fix lane needs. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K1V3gkrfSf75isB8MiDy3o
|
Claude finished @kyle-sexton's task in 2m 12s —— View job Security Review — PR #789Tasks
FindingsNo security issues found. This PR is a behavioral-contract and documentation refactor across seven files ( Pre-computed context shell commands (
|
|
Claude finished @kyle-sexton's task in 2m 20s —— View job PR ReviewTasks
SummaryThe single correctness issue flagged in the previous automated review — the conflict at Prior findings — all resolved
No new issuesThe HEAD change is a targeted, single-line fix at L241. No regressions found:
Residual advisory items (non-blocking, pre-existing)These were raised in earlier reviews and remain open; neither blocks correctness:
This PR is ready to merge. All correctness issues from the review cycle are resolved. The change is architecturally sound, internally consistent, and moves all parallel surfaces in lockstep. |
|
Post-green review classification (work lane) — final round: Three review rounds ran on this PR as fix commits landed. All findings resolved:
Round 3 (final) confirms no regressions and explicitly states "ready to merge." No DEFER-FORBIDDEN class applies anywhere in this PR's history (no data-loss, no fail-open gate — this touches an audit skill's own scope boundary, not a merge/security gate — and no security-posture finding was ever raised). No inline review threads exist on this PR (GraphQL query returned empty) — nothing to resolve. Handing off to the babysit lane for ongoing watch. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Claude finished @kyle-sexton's task in 1m 51s —— View job Security Review — PR #789Tasks
FindingsNo security issues found. This PR is a behavioral-contract and documentation refactor across seven files ( Pre-computed context shell commands (
|
|
Claude finished @kyle-sexton's task in 2m 43s —— View job PR ReviewTasks
SummaryAll four correctness issues from the automated review cycle are confirmed fixed at HEAD. One new correctness issue found — the intro paragraph of New FindingIntro paragraph of
|
| Finding | Raised in | Status |
|---|---|---|
Eval 4 expected_output + expectations both omitted §5 config-gap observations |
Reviews 1 & 2 | ✅ Fixed (d13ab21) |
--fix "hand the findings to" ambiguous about auto-invocation model |
Reviews 1 & 2 | ✅ Fixed (d13ab21) |
| Eval 5 missing §5 assertion for the clean-run case | Review 2 (advisory) | ✅ Fixed (d13ab21) |
| Fix-gate L241 said "summary count" while L263 + eval 7 said "Phase 3 findings" | Review 3 | ✅ Fixed (f0e9b98) |
The d13ab21 evals diff was reviewed in full. Eval 4's expected_output string now ends "…enforcement escalation, and config-gap observations…" and has a 5th expectation. Eval 5 has a 4th expectation covering the clean-run case. Eval 7 is correctly scoped to assert user-driven delegation only. SKILL.md L241 now reads "present the full Phase 3 report."
Residual advisory items (non-blocking, pre-existing from prior rounds)
-
Eval 7 array position — The entry with
id: 7is inserted betweenid: 2andid: 3in the JSON array (evals.json L31), while the rest of the file is ordered by ID. IDs are opaque — runtime-safe — but moving it to the end of the array restores the established ordering convention. -
Eval 5
expected_outputprose omits §5 — Theexpectationsarray now correctly asserts config-gap observations on a clean run (the binding eval contract), but theexpected_outputprose string stops at "proof of thoroughness" without mentioning §5. Low-severity —expectationsis authoritative — but aligning the prose would make it fully self-consistent.
Security
No concerns. The --fix delegation is pointer-only and user-gated (confirmed via SKILL.md L263-267); the !-prefixed shell commands at L11-13 are unchanged read-only introspection; $ARGUMENTS is parsed in natural language and forwarded only to read-only tools. The PR's net security effect is a reduction in blast radius — --fix no longer applies file edits autonomously.
|
Babysit worker classification (SAFE tier) — re-derived from live GitHub state at HEAD
Residual advisory items (eval 7 array position; eval 5 |
The plugin README intro still described the audit as one that "either fixes them or presents them for review", the pre-delegation behavior. Every other surface on the page (skill table, "The audit" section) already states the audit reports read-only and delegates remediation to the implementation/verification lanes. Bring the intro into lockstep. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Fgx6EDAL4cGAFwTNgLpsus
|
Fixed in |
|
Claude finished @kyle-sexton's task in 1m 29s —— View job Security Review — PR #789Tasks
FindingsNo security issues found. This PR is a behavioral-contract and documentation refactor across seven files ( Pre-computed context shell commands (
|
|
Claude finished @kyle-sexton's task in 1m 35s —— View job PR Review — e543ed6Tasks
SummaryThe e543ed6 fix is correct and complete. All five correctness issues raised across the automated review cycle are resolved at HEAD. No new issues found. This PR is ready to merge. e543ed6 Fix — Verified
This is internally consistent with:
No regressions. The rest of the PR surfaces are unchanged from the prior passing commit ( All Prior Findings — Resolved
No New IssuesThe e543ed6 change is a targeted single-sentence fix. No new issues introduced:
Residual Advisory Items (non-blocking, pre-existing across all review rounds)
Both items have been explicitly labeled low-severity/non-blocking across every review round and are intentionally deferred. This PR is ready to merge. All correctness issues from the five-round review cycle are resolved. The refactor is architecturally sound, internally consistent, and all parallel surfaces move in lockstep with the behavioral change. |
Summary
codebase-health'sauditskill ran its own Phases 4-7 (fix / verify / self-review / retro), which duplicate lanes other plugins already own end-to-end —implementation:implementfor the fix cadence andverification:confirmfor verification. This trims the audit's scope so it stays read-only through its Phase 3 report and delegates all remediation to those two skills, referenced as soft dependencies ("when installed") per this repo's cross-plugin convention.Fix
skills/audit/SKILL.md; replaced with a## Remediation (delegated to other plugins)section that routes fixing to/implementation:implementand verification to/verification:confirmas soft refs, matching the established(when the <plugin> plugin is installed)pattern used elsewhere in the fleet.--fixrepurposed, not removed — it now hands the Phase 3 findings off to those lanes rather than fixing inline, preserving the naming-doctrine flag contract already codified in the skill. Bareauditstill reports and STOPs at Phase 3.Config Drift → Missing Enforcement → Code Quality → Doc Driftfix order already travels with Phase 3's "Fix priority" section (citesreference/category-playbook.md), so the fix lane receives it with the findings./codebase-health:setup(previously only in Phase 7's retrospective — an inference-time-distinct, post-audit observation) folded into Phase 3 as a new required section §5.description,argument-hintarg-parsing block,## Read-only default,## Emit checklist, the zero-findings + fix-gate blocks,templates/checklist.md,README.md,plugin.jsondescription, andevals.json(stale "Phases 4-7 skipped" reference fixed in eval 2; new eval 7 asserts--fixdelegates rather than inlining).0.6.2 → 0.7.0(behavior/contract change) with a matchingCHANGELOG.mdentry.Verification
Static skill-quality gate on the modified skill (
skill-quality:check, v0.7.0), run against the plugin's own skills root:PASS. Both WARNs are pre-existing and advisory (line count was already over the soft target before this change; the skill never shipped a Gotchas surface) — neither is a regression from this refactor, and the trigger-phrase-preservation check confirms no
descriptiontrigger was dropped by the rewrite.evals.jsonvalidates against the bundled schema (check-jsonschema:ok).Independent review: a fresh reviewer (clean context, rationale withheld) audited the diff and flagged one broken internal anchor — the
## Remediationheading's em-dash produced an ambiguous slug. Fixed by removing the em-dash from the heading (Remediation (delegated to other plugins)) and updating both link references to the unambiguous#remediation-delegated-to-other-pluginsanchor; re-ran the gate (still PASS).Closes #262
Related
docs/topics/shadowed-skill-renames/PLAN.md(PR docs: codify skill-naming grammar and cross-plugin reference rules #256).plugins/codebase-health/(checked at creation), so no serialization /do-not-mergeneeded.🤖 Generated with Claude Code
https://claude.ai/code/session_01K1V3gkrfSf75isB8MiDy3o