Skip to content

fix(done-check,todo-check,authoritative-text-rules,quality-list,implement,review-pipeline,review-pipeline-coderabbit): close the findings #146 left unfixed - #152

Merged
ultimatile merged 3 commits into
mainfrom
fix/147-done-check-landed-findings
Jul 29, 2026
Merged

fix(done-check,todo-check,authoritative-text-rules,quality-list,implement,review-pipeline,review-pipeline-coderabbit): close the findings #146 left unfixed#152
ultimatile merged 3 commits into
mainfrom
fix/147-done-check-landed-findings

Conversation

@ultimatile

Copy link
Copy Markdown
Owner

Summary

#146 added the authoritative-text-rules rule set and wired it into done-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-rules into todo-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-check had 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 at done-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 to done-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-check stop rule.
  • skills/authoritative-text-rules/items/consumer-closure.md, items/executor-fitness.md — mark the trigger enumerations illustrative in the form case-space-totality already uses, and add the four tie-break pairs those two items were missing against single-reading and clause-composition.
  • skills/quality-list/items/ported-code-attribution.md — replace a reference to "item 11" with the paired-artifact-drift slug; the numbering it named was dropped when items became per-slug files.
  • .claude-plugin/marketplace.json2026.7.312026.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 states done-check's closure semantics is updated here — implement, review-pipeline, review-pipeline-coderabbit. reimre, reimrecr, land-via-integration-branch, finding-to-audit, review-telemetry, and README.md name 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 mdformat pre-commit hook, done-check applied to its own change, a rename sweep, and Codex.

  • The hook passed on every commit; no commit was aborted by reformatting.
  • done-check was 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-check when 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 — every mechanical-lane item for the quality-list auditor, every item for the authoritative-text-rules one — 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.
  • Codex reviewed the branch diff three times. The first two runs each raised one finding, both fixed on the branch; the third reported none.

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:

Two things the implementation plan (#147 (comment)) called for that this does not do:

  • Step 0 does not halt when ${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.
  • The Delta mode baseline is not "the audit this skill last reported to the same caller", the wording that plan proposed. That named something the skill does not keep — no step writes a verdict set down — and "the same caller" was not evaluable either.

One underspecification left in deliberately: done-check grants 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.

…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.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-check correctness: 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 implement and both review pipelines to defer to done-check step-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.312026.7.32.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

done-check / authoritative-text-rules: findings that landed unfixed with #146

2 participants