fix(research,authoritative-text-rules,done-check): rule-set baseline - #188
Merged
Conversation
`research` reads `authoritative-text-rules` before it forms hypotheses, so the rules constrain the hypothesis set rather than only the finished diff. The read is skipped only when the issue and the layout skim establish that no surface the change could touch qualifies, and it re-runs whenever a qualifying surface turns up after such a skip. `authoritative-text-rules` no longer routes its items to a fresh-context subagent. Its premise -- that every judgment is available from literal text -- supports only that either receiver can take any item. `done-check` scopes its prohibition to the audit's own reads, so it composes with a main context an earlier phase already loaded, and drops two rationale clauses that such a load makes false. `README.md` drops the claim that `done-check` is the rule set's only referrer. Refs #185
There was a problem hiding this comment.
Pull request overview
This PR updates the workflow skill instructions so research reads authoritative-text-rules early (before hypothesis formation) and aligns done-check / authoritative-text-rules wording with the fact that items can be read in main context when appropriate, while preserving done-check’s fresh-context audit model.
Changes:
- Added a
research“Rule-set baseline” that readsauthoritative-text-rulesScope + Items index (and item bodies when applicable) before hypothesis formation. - Updated
done-checktext to reflect that its prohibition applies to the audit’s own reads (not “what main context happens to already contain”), and tightened wording around quote-based adjudication. - Updated metadata/docs: bumped marketplace version and removed “referenced by
done-check” from the README description ofauthoritative-text-rules.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| skills/research/SKILL.md | Adds an authoritative-text rules baseline before hypothesis formation; adjusts hypothesis approval step to allow scope widening. |
| skills/done-check/SKILL.md | Updates audit prohibitions and clarifies how clause-quoting is used for adjudication without opening item bodies in main context. |
| skills/authoritative-text-rules/SKILL.md | Updates Items section wording to allow items to be read either in main context or a fresh-context subagent. |
| README.md | Removes the claim that authoritative-text-rules is “referenced by done-check”. |
| .claude-plugin/marketplace.json | Bumps plugin version from 2026.8.3 to 2026.8.4. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Step 4 selected the rows a quoted clause adjudicates by what "step 2 forbids this audit to load". Step 2 forbids main-context loading and in the same breath directs each subagent to read the bodies it needs, so read at whole-audit granularity the clause selected nothing and the quote requirement, with the re-dispatch that backs it, went vacuous. Naming main context restores the scope without restoring the claim this branch removed: the clause says what the audit may load, not what main context happens to hold.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 5 out of 5 changed files in this pull request and generated no new comments.
Suppressed comments (1)
skills/done-check/SKILL.md:38
- The Step 2 prohibition is intended to bind what this audit reads, not the pre-existing state of main context (e.g., if
researchalready loaded an authoritative-text item body earlier in the same session). Using “load … into main context” can be read as a state constraint rather than “do not read during this audit,” which reintroduces the ambiguity this PR is trying to remove. Reword to make it explicitly about reads performed as part of this audit.
**This audit MUST NOT load a purely-mechanical `quality-list` item body into main context, and MUST NOT load any `authoritative-text-rules` item body there** — whether or not an earlier phase of the same session already did. Each subagent reads its own SSOT's index and the bodies it needs in its own fresh context, deriving its item set from that index; main only composes the prompts (diff + resolved paths) and dispatches. Main reads the contextual-lane `quality-list` bodies it audits in Step 3, and may read either SSOT's index — that is how Step 3 selects contextual items and how Step 4 predicts each auditor's row set.
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
researchformed hypotheses without reading the rules its output would later be audited against, so a plan could commit to wording thatdone-checkrejects only once the work is finished. It now readsauthoritative-text-rulesas a third baseline, before hypothesis formation. Two sentences elsewhere described that rule set as reaching an audit only through a fresh-context subagent, andauthoritative-text-rulesanddone-checknow say what is true of it once a caller reads it in main context.Refs #185
Changes
researchestablishes a rule-set baseline beside its test and memory recall baselines. It invokesauthoritative-text-rules, reads that skill's Scope section and Items index in main context, and reads every item body the index lists. A hypothesis contradicting a loaded item is rejected at formation, on the terms the memory recall baseline already states.authoritative-text-rulessays that either a fresh-context subagent or main context may take any item, in place of directing every item to the subagent.done-check's prohibition binds the audit's own reads rather than the state of main context, so it holds whether or not an earlier phase of the same session loaded a body. Its Step 4 scopes quote-based adjudication by what Step 2 forbids that audit to load into main context, and the two clauses asserting that main context cannot open those bodies are gone.README.mdno longer namesdone-checkas the rule set's referrer.Impact
researchgains a dependency onauthoritative-text-rulesbeing resolvable as a skill wherever the run executes. A run whose invocation of it does not resolve halts.researchanddone-checkcompose within one session: main context may hold the item bodies whendone-checkruns, anddone-check's own prohibition is unaffected by that.todo-checkis unchanged and still appliesquality-listalone.Verification
Nothing here executes, and
skills/gh-body-check/test-body-math-scan.sh— the repository's only test script — exercises that skill's math scanner, which this change does not touch.Properties checkable by re-running these against a checkout of this branch:
rg -n '^## (Scope|Items)$' skills/authoritative-text-rules/SKILL.mdreturns both headings the newresearchtext names. That file's index lists five items, andls skills/authoritative-text-rules/items/returns exactly those five files, so every link the baseline is told to follow has a target.rg -n 'sends all of them to the subagent' --glob '*.md' .returns nothing: no surface still asserts the routing this change replaced.rg -n 'referenced by' README.mdreturns one line, which belongs to thegh-body-conventionsrow.jq -r '.metadata.version' .claude-plugin/marketplace.jsonprints2026.8.4, one patch above2026.8.3, the newest taggit tag --sort=-v:refnamereports.diff <(git show f42f4e5:.claude-plugin/marketplace.json | jq -S '.plugins[0].skills') <(jq -S '.plugins[0].skills' .claude-plugin/marketplace.json)prints nothing, so no skill was added or removed and the README table's membership is unaffected.pre-commit run --all-filesreportsmdformatPassed; it is the only hook.pre-commit-config.yamldeclares.The changed units are instructions, so the remaining property — that an executing agent reaches one intended action — was checked by running them. Each row below is a single run of one fresh-context agent, handed the changed steps alone with the expected outcome withheld. The prompts are not committed and no two rows share a run, so a row is evidence that the instruction can produce the outcome, not that it always does.
CLAUDE.md, after a skipped read.claude/rules/, after a skipped readThat last row rests on the runner handing back the invoked skill's own directory, which the index's relative links resolve against. That is behaviour of the harness rather than of anything in this repository, and this PR assumes it.
Five
done-checkrounds, three/code-reviewiterations and one Codex review of the branch also ran. The last of each returned no actionable finding, and the final round'sauthoritative-text-rulesauditor returned no concern at all. All of that was local; this repository declares no CI workflow that would witness it, and no output is linked.Notes
todo-checkdoes not applyauthoritative-text-rules, so a clean preflight still does not predict a clean audit.todo-checkstates that asymmetry itself.done-checkdoes not say what an audit may do when main context legitimately already holds the item body a subagent row would be judged against — a state this PR makes reachable. done-check: the missing-clause re-dispatch allowance has no stated relation to the coverage check's #186 covers the neighbouring question of how many re-dispatches Step 4 allows, and places this one out of scope.