fix(done-check,todo-check,authoritative-text-rules,quality-list,implement,review-pipeline,review-pipeline-coderabbit): close the findings #146 left unfixed - #152
Merged
Conversation
…ment,review-pipeline,review-pipeline-coderabbit): close the findings #146 left unfixed (#147) Retire `<RULES_ROOT>` / `<QUALITY_LIST_ROOT>` for a single `<SKILLS_DIR>`, resolved once in Step 0 of each runner and carried to every consumer, so a marketplace / symlinked install resolves rule files from one place. Extend the coverage check to both done-check auditors and make an unmatched return halt without a table; require auditor rows to quote the item clause they apply, since a purely-mechanical body stays closed to main context. Define delta mode as a report narrowing over a caller-supplied baseline, with the step 5 gate still binding the whole audit, and point the three callers at that gate instead of restating its dispositions. Mark the unbounded trigger enumerations in `consumer-closure` and `executor-fitness` as illustrative, add their tie-breaks against `single-reading` and `clause-composition`, and replace the stale `item 11` reference with `paired-artifact-drift`.
…h halt and gate-scope rule once Step 6 claimed a halted run "reports at all", contradicting the halt sites that report the file looked for and the directory looked in. Narrow the claim to the audit table, which is what the halts actually suppress. The Output format section restated the halt-to-no-table rule instead of referring to step 6, and both pipelines restated done-check's gate scope instead of referring to its Delta mode section. Each condition now has one statement and the other sites point at it.
A concern row whose body main context may not open is judgeable only through the clause the auditor quotes. Step 4 sent a row missing that clause straight to the step 5 gate, where none of the three closures fits: main cannot derive what to fix against, a deferral has nothing to track, and only a user waiver remains. A missing slug in the same return already gets one re-dispatch. Give the unquoted row the same allowance, with the replacing return standing in for the first, and keep the existing disposition when the clause is still absent. No new halt: the branch falls through to the gate it already had.
There was a problem hiding this comment.
Pull request overview
Closes the remaining actionable gaps from #146/#147 by making the skill-runner docs executable in non-vendored installs (via a single <SKILLS_DIR> anchor), tightening done-check’s completion/halt semantics (including coverage checks for both auditors and delta mode definition), and updating downstream pipeline skills to gate on done-check’s full step-5 closure semantics (rows + cross-cutting concerns).
Changes:
- Standardize rule-set path resolution on
<SKILLS_DIR> = ${CLAUDE_SKILL_DIR}/..and add rule-set presence checks before reads/dispatches (done-check,todo-check). - Strengthen
done-checkcorrectness: coverage check applies to both auditors (with halt/no-table on persistent mismatch), require quoted clauses for concerns, and define delta mode as report-narrowing with caller-supplied baseline. - Update
implementand both review pipelines to defer todone-checkstep-5 gate semantics (including halted-run stop rule) rather than restating row-only closure conditions.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| skills/todo-check/SKILL.md | Resolve <SKILLS_DIR> once, anchor all rule reads to it, and add presence/coverage/halt semantics consistent with non-vendored installs. |
| skills/review-pipeline/SKILL.md | Gate the loop on done-check step-5 closure over rows + cross-cutting concerns; specify delta-mode baseline input; stop on halted done-check. |
| skills/review-pipeline-coderabbit/SKILL.md | Same pipeline gating updates as review-pipeline, adapted for the CodeRabbit variant. |
| skills/quality-list/items/ported-code-attribution.md | Replace obsolete “item 11” reference with the correct paired-artifact-drift slug. |
| skills/implement/SKILL.md | Update the done-check step to bind to step-5 gate over both domains and treat halted audits as non-completing. |
| skills/done-check/SKILL.md | Introduce <SKILLS_DIR> anchoring + presence checks, expand coverage checks to both auditors, require quoted clauses, and define delta mode + report/halt behavior. |
| skills/authoritative-text-rules/items/executor-fitness.md | Mark trigger enumeration as illustrative and add missing tie-break guidance against single-reading and clause-composition. |
| skills/authoritative-text-rules/items/consumer-closure.md | Mark trigger enumeration as illustrative and add missing tie-break guidance against single-reading and clause-composition. |
| .claude-plugin/marketplace.json | Bump marketplace version 2026.7.31 → 2026.7.32. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
#146 added the
authoritative-text-rulesrule set and wired it intodone-check. Five findings raised against that branch landed unfixed, and four items the implementation plan in #145 deferred stayed open. #147 lists and describes all nine.Eight are closed here. The ninth — wiring
authoritative-text-rulesintotodo-check— moves to #150. #148, #149, and #151 are separate issues this work opened; they are not among #147's nine.The largest of the nine made the install shapes
done-check's own text named unexecutable. Its Step 0 said<RULES_ROOT>and<TARGET_ROOT>"coincide only when the rule sets are vendored inside the target; in a marketplace or symlinked install they differ" — and then never said how to find<RULES_ROOT>when it differs.todo-checkhad the same gap for its own<QUALITY_LIST_ROOT>. Both are retired for a single<SKILLS_DIR>, resolved from${CLAUDE_SKILL_DIR}and carried to every consumer.Closes #147
Changes
skills/done-check/SKILL.md— resolve<SKILLS_DIR>once in Step 0 and carry it to both subagent prompts, Step 3's reads, and Step 4's index reads; verify each rule set is present before anything reads it; extend the returned-row coverage check from auditor 2 to both auditors and halt without a table when it stays unmatched; require every concern row to quote the item clause it applies, with one re-dispatch when a row omits it; add a Delta mode section.skills/todo-check/SKILL.md— the same anchor and presence check, stated in this file rather than by pointing atdone-check, matching the shape both runners already have for language detection; anchor the three rule-file paths that were bare.skills/implement/SKILL.md,skills/review-pipeline/SKILL.md,skills/review-pipeline-coderabbit/SKILL.md— defer todone-check's step 5 gate over both its domains instead of restating its verdict list, which a caller reading only the table could satisfy while a cross-cutting concern was still open; add a halted-done-checkstop rule.skills/authoritative-text-rules/items/consumer-closure.md,items/executor-fitness.md— mark the trigger enumerations illustrative in the formcase-space-totalityalready uses, and add the four tie-break pairs those two items were missing againstsingle-readingandclause-composition.skills/quality-list/items/ported-code-attribution.md— replace a reference to "item 11" with thepaired-artifact-driftslug; the numbering it named was dropped when items became per-slug files..claude-plugin/marketplace.json—2026.7.31→2026.7.32.Impact
done-check's invocation contract gains two observable changes: a run can now end without emitting a table, and delta mode takes a baseline the caller supplies. Every caller that statesdone-check's closure semantics is updated here —implement,review-pipeline,review-pipeline-coderabbit.reimre,reimrecr,land-via-integration-branch,finding-to-audit,review-telemetry, andREADME.mdname the gate without restating what it emits, so they need no change.Test plan
This repository carries no test suite and no CI, so every check below ran locally and its result is reported here rather than linked. The checks are the committed
mdformatpre-commit hook,done-checkapplied to its own change, a rename sweep, and Codex.done-checkwas run six times over the course of the branch, each dispatching both auditors, against the working tree as it stood at that point — so the earlier runs audited earlier revisions and only the last audited the text as it now stands. Every run executed the edited text rather than a fixture, in the shape the change targets: the install under test symlinks each skill directory individually from~/.claude/skills/into this checkout, so the harness substituted${CLAUDE_SKILL_DIR}with~/.claude/skills/done-checkwhen it rendered the skill, Step 0 derived<SKILLS_DIR>as~/.claude/skills, and both rule sets were found there as siblings — outside the checkout, which is the non-vendored case the retired placeholders could not resolve. Both auditors were then dispatched with those absolute paths. Step 0's resolution, Step 4's coverage check over both auditors, and the quoted-clause requirement therefore all ran against a real diff. On the final run each auditor returned exactly the slug set its own index predicts — everymechanical-lane item for thequality-listauditor, every item for theauthoritative-text-rulesone — and the single concern raised is the delta-mode baseline recorded under Notes below.rg 'RULES_ROOT|QUALITY_LIST_ROOT'over the repository returns nothing, so no site retains an old placeholder. A reader can re-run that one. Separately, and by inspection rather than by command, no rule-file path that instructs a read is left unanchored.These runs exercise the symlinked install and the branches a clean run takes. They reach neither halt — the missing rule set, and the coverage check still unmatched after its re-dispatch — whose coverage is the shape of the branches themselves: each stops with a statable cause rather than proceeding on an unresolved path.
Notes
Deferred, each with an issue:
todo-checkstill appliesquality-listalone, so a clean preflight does not predict a cleandone-checkon authoritative text — todo-check: apply authoritative-text-rules as done-check does #150. This is the ninth of done-check / authoritative-text-rules: findings that landed unfixed with #146 #147's items.done-checkandtodo-checkstate the same Step 0 resolution policy in both files, andreview-pipelineandreview-pipeline-coderabbitcarry synchronized copies of every rule this change adds to them. Neither is fixable by pointing — a runner must read the resolution to know where to read — and both are done-check / todo-check: the declared duality is carried by nothing #148.Two things the implementation plan (#147 (comment)) called for that this does not do:
${CLAUDE_SKILL_DIR}reaches it unsubstituted. The rule-set presence check that follows it in Step 0 catches the same failure and names both the file looked for and the directory looked in, so the halt added nothing further to act on. It also came back as a review finding on four consecutive local rounds, which is an unpublished observation offered as motivation rather than as evidence.One underspecification left in deliberately:
done-checkgrants one re-dispatch for an unmatched coverage check and one for a row missing its clause. If a return fails coverage, its replacement omits a required clause, and the second replacement fails coverage again, both allowances are spent and neither covers what happens next. Reaching it takes three consecutive malformed returns.