feat(codebase-health): route the audit Boundary to the sibling drift lanes - #3829
feat(codebase-health): route the audit Boundary to the sibling drift lanes#3829kyle-sexton wants to merge 2 commits into
Conversation
…lanes The audit skill covers doc, config, code, and architecture claim drift. Seven sibling lanes own the other kinds of drift and nothing in the skill named them, so an operator who reached this skill had no path to the others. Add a `## Boundary. The sibling drift lanes` section naming all seven with one line each on what that lane owns: review's `doc-drift-detector` agent, `/session-flow:reanchor`, `/discipline:recheck-against-upstream`, `/provenance:audit`, `/claude-config:audit` (plus `/claude-config:audit-automation-gaps`), `/instruction-placement:delta`, and `/overengineering:delta`. Every route is presence-gated with a stated fallback per docs/conventions/seam-phrasing: route when the plugin is installed, otherwise report the dimension as uncovered rather than running claim-extraction over it here. The pre-existing "Scope boundary with adjacent audit lanes" paragraph becomes a pointer to the new section, which absorbed its `claude-config` routing so that reference is stated once. What the audit detects and how it reports are unchanged; no sibling skill is edited; the frontmatter description is untouched. Closes #3810 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012jiwedVq2GxuzN7siXQbr4
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Claude finished @kyle-sexton's task in 4m 10s —— View job Code review complete
Scope: No high-signal findings. I independently verified the claims this PR makes rather than restating its own test-plan output:
I did not re-run |
|
Claude finished @kyle-sexton's task in 44s —— View job Security review complete
Skip gate hit: no security-relevant surface. All four changed files are documentation/manifest content with no executable logic:
No code paths, permissions, hooks, CI/Actions workflows, secrets handling, or trust boundaries are touched. The new text only names other skills/agents to route to (gated on "when its plugin is installed") — it does not invoke anything, add tool grants, or change No security findings. This lane's review is complete. |
|
Last security-reviewed head: |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 29e5510de4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Claude has reviewed this PR 1 time. The lane skips further automatic reviews after 5; deleting this comment resets the count. |
|
PR body contract — issue linkage This PR body does not yet satisfy the issue-linkage contract:
Edit the body and this comment updates itself on the next run. |
Review found that the new Boundary section told the skill to invoke a sibling lane via the Skill tool whenever that plugin was installed. One of the named lanes, discipline:recheck-against-upstream, corrects divergences forward as it finds them, and several others carry a fix mode. A bare audit is read-only under this skill's own verb contract, so invoking those lanes from inside a read-only run would let the skill edit the repository through a sibling. Issue #3810 asked for the Boundary to name each lane with one line on what it owns so an operator has a path to them. It did not ask for automatic invocation, and the skill already states elsewhere that it must not auto-invoke its remediation lanes. Report a dimension owned by another lane as uncovered and name the lane as a suggestion the operator runs next, whether or not its plugin is installed. State that --fix authorizes remediation of this skill's own findings only and does not extend to a sibling lane. Refs #3810 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012jiwedVq2GxuzN7siXQbr4
Closing as superseded by #3828 — same issue, same diff, independent duplicate lanesHead pinned at The duplication, verified against both PRs rather than assumedTwo autonomous worker-lane sessions worked #3810 independently and neither saw the other:
Both add one Boundary section to Why #3828 is the survivorThe multi-instance convention both lanes follow makes the lowest-numbered PR canonical. That is a tiebreak, not a quality judgment, and it is the repo owner's call to overrule. Two secondary signals point the same way: #3828's body satisfies the What this PR did better, and where it is goingThis PR is ahead of #3828 on the substance of one P1, and that work is not being discarded. Codex raised the same finding on both — that routing an upstream-divergence request to That remediation is being ported into #3828 with attribution to this PR, not presented as the merge lane's own reasoning. Closed as a duplicate, not as rejected work. Merge lane Generated by Claude Code |
Addresses the four open review threads holding this PR at blocked. P1, the read-only contract. The preamble told a bare audit to "route there and invoke it via the Skill tool". /discipline:recheck-against- upstream says "Correct each forward now: fix gaps toward upstream", and bare audit is READ-ONLY per the verb contract, so that let the skill edit the repo through a sibling. The table is now a router for the operator: a request owned by another lane is reported as uncovered and the lane is named as the next thing to run, whether or not its plugin is installed. --fix authorizes remediation of this skill's own findings only. P2, contradictory ownership of factual doc drift. The dispatch rule is now the question asked, not the scope swept. Whether a page deserves to exist is the agent's derivability gate; whether its claims are true is always this skill's, repo-wide included, and --docs-only never routes out. P2, the unnamed fanout mode. The row now names /review:fanout run-everything, verified: doc-drift-detector appears in context/run-everything-mode.md and not in context/default-mode.md, so an unqualified /review:fanout can finish without reaching the owner. Nit, agent vs skill. The blanket "via the Skill tool" clause is gone; each row states its own invocation form and row 1 names the Agent tool. The read-only routing contract is ported from #3829, the parallel independent PR on #3810 now closed as a duplicate, with attribution in the CHANGELOG. Heading text is unchanged, so the README anchor still resolves. Verification: affected-tests.sh --explain/--run (all 4 files are recorded no-suite classes), check-skill.sh PASS 0 errors 7 warnings (unchanged from before), check-listing-budget 562/8000 unchanged, markdownlint 0 issues, check-purged-em-dashes clean, changelog parity --check and --check-bump pass. Manifest stays 0.9.0; this refines the unreleased entry rather than adding a bump. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VPLatLkg4329L8eyfxhuMa
Summary
The
codebase-healthaudit skill covers doc, config, code, and architecture claim drift. Seven sibling lanes each own a different kind of drift, and nothing in the audit skill named them — an operator who reached this skill had no path to the others.This adds a
## Boundary. The sibling drift lanessection toplugins/codebase-health/skills/audit/SKILL.mdnaming all seven with one line each on what that lane owns, every route presence-gated with a stated fallback perdocs/conventions/seam-phrasing.The pre-existing "Scope boundary with adjacent audit lanes" paragraph becomes a pointer to the new section, which absorbed its
claude-configrouting so that reference is stated once rather than twice. What the audit detects and how it reports are unchanged, no sibling skill is edited, and the frontmatter description is untouched.Acceptance criteria
SKILL.md## Boundary. The sibling drift lanes— thereviewplugin'sdoc-drift-detectoragent (documentation freshness inside a review pass),/session-flow:reanchor(a session's own working premises),/discipline:recheck-against-upstream(divergence from current upstream documentation),/provenance:audit(prose restating an external source),/claude-config:auditplus/claude-config:audit-automation-gaps(Claude Code's own configuration),/instruction-placement:delta(instruction content on the wrong load surface),/overengineering:delta(the enforcement surface's own accumulation). Each ownership line was derived by reading that lane's ownSKILL.md/ agent definition in this repo, not from memory./skill-quality:checkpasses for the codebase-health audit skill, including the listing-entry cap check.CHECK-SKILL audit: PASS — 0 errors, 7 warning(s);INFO: description length 562/1536 chars;INFO: all 4 base-ref trigger phrase(s) preserved. All 7 warnings pre-date this change (soft 200-line target, no Gotchas surface, four fresh-eyes hand-verify notes in untouched sections/spokes, completion-criteria note on untouched numbered procedures).markdownlintpasses on the changed files.Summary: 0 issues in 0 filesover the three changed markdown files.plugin.json0.8.9→0.8.10, with a matching## [0.8.10]CHANGELOG.mdentry citing#3810(Added + Changed), mirroring the0.8.6reference pattern.plugins/codebase-health/README.md"Distinct from" paragraph now names the sibling lanes the Boundary routes to and states the presence gate.docs/CATALOG.md(mirrorsplugin.jsondescription) anddocs/SKILL-CHEAT-SHEET.md(mirrorsmetadata.summary) need no edit — both fields are unchanged, and their generators confirm it:Catalog is in sync with the manifests./Cheat sheet is in sync with skill frontmatter.Out of scope, respected
No change to what the audit detects or how it reports; no sibling skill edited; no router added to any other skill.
Verification
Closes #3810
🤖 Generated with Claude Code
https://claude.ai/code/session_012jiwedVq2GxuzN7siXQbr4