skill-authoring §5: keyword-grep absence is not absence — read the section before concluding not-covered - #51
Merged
Conversation
…ction before concluding not-covered Three same-week incidents shared one shape: a keyword grep of a rules file returned nothing, 'not covered' was concluded, and the content existed under different phrasing — one of them a proposed addition whose substance was already in the target file, caught only by reading the section at drafting time. The no-duplicate-homes rule in §5 has no stated dup-check method; this supplies it: grep target + siblings for synonyms, read any near-topic section in full, and cite the section read (not the empty grep) in a not-covered verdict. Ships unprobed per the README covenant; Provenance records the probe shape as debt.
PR F-e-u-e-r#51 round-1 gate (grok-4.5 high: FIX 1,2; gpt-5.6-sol max: FIX 1,2,3,4). All reproduced and addressed: - candidate-home read made UNCONDITIONAL (hits or none), closing the optional-read path that reproduced the motivating failure; no nameable candidate home -> unresolved + escalate, never an absence claim (grok F2 / codex F1) - pos example was mechanism-false (grep 'revert' cannot hit text worded 'restore') and its bare paragraph-sign-3 dangled against THIS file's actual section 3; replaced with an empty-grep -> read-anyway -> found- under-other-wording template with no dangling ref (grok F1 / codex F3) - per-addition completion record: the change record carries the sections-read + verdict line, the enforcement-ladder form this file itself prescribes (codex F2) - siblings defined executably (other skills in the set, list the directory); every-hit-section + every-candidate-home quantifiers explicit (codex F4 / grok n4) - private count moved behind contributor-log attribution (grok n5) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…andidates, reviewer recheck PR F-e-u-e-r#51 round-2 gate (grok-4.5 high: FIX 1,2; gpt-5.6-sol max: FIX 1-5). All reproduced and addressed: - candidate homes now chosen from the LISTED section outline of the target and hit files, never from recalled/invented section names - closes the recall hole one level up (grok F1 / codex F1) - escalation widened to cover doubt that the candidate list is complete, not only the zero-candidate case (codex F1) - change record defined inline (PR description / commit message / completion report, S7's form) (grok F2) - reviewer-side out-of-band check added: re-run the recorded searches, open one unlisted candidate - absence-sensitive compliance never rests on the author's own line, per S7's ladder (codex F3) - pos example made auditable (three named terms, two named sections) and framed on a hypothetical playbook so no in-file ref dangles (codex F4) - sibling set + references files defined executably (codex F5); trigger scoped to new facts/rules, wording/provenance edits out (grok n3 / codex n6); on-hit path routes to the parent rule's cross-reference duty (grok n5) S2 mechanism gate run (both arms, in-repo): - motivating arm (reworded twin): headword 'twin' in delegation-and-review hits only Provenance; synonym 'differently' hits the S3 named-search bullet (line 91); outline -> read S3 -> concept found under 'differently-shaped query' wording. Procedure catches the twin. PASS - flipped arm (true absence): word-boundary grep for port/localhost in skill-authoring = 0 rule-body hits (substring hits were the important/support class); outline offers no plausible home; fact belongs to a sibling (delegation-and-review S1) -> scoped not-found, placement routed. PASS Cross-family mechanism review = this PR's own dual gate (S2 arm 3). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…searched-file outlines, reviewer independence PR F-e-u-e-r#51 round-3 gate (grok-4.5 high: FIX 1,2; gpt-5.6-sol max: FIX 1-9,12,13). Adjudication: - outlines assembled from every file SEARCHED, not only hit files - all-empty greps no longer drop sibling outlines (grok F1 / codex F2) - S7-ladder paraphrase replaced with a pointer (grok F2) - duplicate-outcome split: in-target -> no addition; sibling-owned -> cross-reference, or S5's verbatim-carry with sync contract (codex F1, F4) - reviewer re-runs against the pre-addition text, proposed lines excluded - the rule no longer matches itself (codex F3) - reviewer reads a candidate chosen INDEPENDENTLY of the record - ends the exhaustive-list-vs-unnamed-candidate contradiction (codex F9) - search-term derivation glossed (codex F12); must-have-a-home cue tied to task-asserted coverage or relocation (grok n4); absence-path pos example with the forced phrase added (grok n3) - rejected with reason on the trail: codex F7 (whole-file compaction = pre-existing condition, owner-scheduled maintenance, not this diff); codex F8 (sibling sections verified by the gate-runner who read both files in full this session); codex F13 (a prospective standing rule for future additions is doctrine's normal function, not an instruction to this PR's gate); codex F10 already fixed (+46) - PR body dup-check record to be corrected to the exact forced phrase, actual headings, and the S2 section its substring hits touched (codex F5, F6) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
PR F-e-u-e-r#51 round-4 gate (grok-4.5 high: FIX 1; gpt-5.6-sol max: FIX 1,2,3,4,5,7,8). Adjudication: - empty searches -> read the WHOLE target file before any verdict; the incident's catch was the read (codex F1) - duplicate-outcome rewritten: no second home wherever it lives, with the 'A cross-reference is not a load' rule cited by its real title and applying to both ownership branches (codex F2 / grok n3) - standalone not-covered verdicts stay provisional until an out-of-band read; landing additions get the S6 fresh-context reviewer re-run (codex F3 / grok n2) - result line carries terms + files + file-qualified sections (codex F5); router-file and headingless fallbacks defined (codex F7) - references-files quantifier fixed to each searched skill (grok n4); 'never assert absence' scoped to its conditions (grok n5); second neg example pins the multi-synonym-empty-but-never-read boundary (grok F1) - rejected with reason, standing dispositions: codex F4 (nine-file packet inlining infeasible; gate-runner read all nine skills in full this session), codex F8 (prospective reviewer doctrine is the file's normal function - same shape as delegation-and-review S3's merged 'reviewer re-runs the named search' rule) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
PR F-e-u-e-r#51 round-5 gate (grok-4.5 high: FIX 1,2,3; gpt-5.6-sol max: FIX 1-8). Adjudication: - empty-search recovery widened to EVERY searched file read in full, and the not-covered decision keyed to reading, not grep emptiness; both pos examples now model the whole-file mandate with file- qualified records (grok F1, F2 / codex F1, F5) - paraphrase parenthetical deleted; pointer-only to the cross-ref rule (grok F3 / codex F2) - pre-addition baseline defined as the branch-base revision, never the edited working copy (codex F6); standalone verdicts confirmed by a fresh-context reader without the author's session (codex F7) - trigger names instruction files explicitly (codex F8); in-body private count dropped to shape (grok n4); headingless-file clause made global (grok n5); reviewer empty-search parity (grok n6) - codex F3: PR-body dup-check record corrected separately (adds §4 one-source-of-truth to sections read, names all nine files) - codex F4 rejected-with-reason (standing): file length is a pre-existing condition; compaction is owner-scheduled maintenance, not this diff's burden Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
F-e-u-e-r
added a commit
that referenced
this pull request
Jul 23, 2026
sol r11 F1: the settle-by-commit branch now ALSO captures and materializes every noncommitted path remaining in the protected read set (the commit settles the reviewed content's history, not the rest of the read set's state — a dirty config was otherwise replaced by its clean committed form in the copy). sol r11 F2: a NO-channel-by-design conclusion is itself a capability-negative claim under skill-authoring S3's protocol (pinned to version/instance/date, re-verified on drift); unknown or stale evidence -> treat as channel-present-unattributed and block. sol r11 F3: the server-side re-probe targets the CURRENT decision's resolved instance/account (re-probing the former pin is comparison evidence, never the acting gate), recording the new dimensions. sol r11 F4: both callability observations must be produced by THIS invocation — cached/replayed responses are not a pass (run cache-bypassed or carry a per-invocation element a replay cannot contain); the pinned-string battery inherits the freshness clause. sol r11 F5: the ledgers field re-scoped to recurring REVIEW/AUDIT campaigns (title updated both files) — recurring implementation or operational dispatches are outside it, un-fillable four-category mappings no longer block them. sol r11 F6: scheduler binding closes on the first scheduler-originated fire WHOSE EMISSION CONDITIONS WERE DUE — a first fire with no channel due leaves binding open, its absence proving only the suppression branch. sol r11 F7: the full-file read triggers on failing to find the duplicate, never on grep emptiness — one irrelevant hit no longer disables the fallback (independently re-derives the prior campaign's unapplied #51-r6 adjudication). sol r11 n8: 'fails loud' corrected to 'is far likelier to be exercised and exposed' — deprecated flags and ignored fields can fail silent too. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
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.
What
Adds one rule to
skill-authoring§5: keyword-grep absence is not absence — before concluding a fact has no home, grep the target file and siblings for the concept's synonyms, and read any near-topic section in full; a "not covered" verdict cites the section read, not the empty grep.Why
§5's no-duplicate-homes rule has no stated dup-check method, and the naive method (keyword grep, empty result → "not covered") failed three times in one week on private repos — each time the content existed under different phrasing, and one of the three was a proposed upstream addition whose substance was already in the target file, caught only by reading the section at drafting time. The rule supplies the check that makes no-duplicate-homes enforceable.
Covenant status
Private incidents cited as shape (contributor-verifiable, not linkable). Ships with an in-body
unprobedmarker; the Provenance paragraph records the executable probe shape (seed a reworded twin, observe grep-only vs read) as debt.Checks
python3 .github/checks.py: passing (re-run by the maintainer each review round)Dup-check record (this addition's own, per the rule it adds)
Terms searched: grep / absence / "not covered" / dup / synonym. Files
searched (all nine SKILL.md files, by name): operational-rigor,
delegation-and-review, skill-authoring, cross-model-review,
ground-truth-gates, security-architect, product-roadmap,
personal-goal-planning, domain-evidence-discipline. Sections read in full:
skill-authoring "2. Ground truth only", "4. Memory architecture" (its
one-source-of-truth bullet is a plausible candidate home — read; it names
the no-duplicate policy, not a dup-check method), "5. Skill-set design",
"6. Review before adopting", "7. Maintenance"; operational-rigor "5.
Adversarial self-review and completion" (twin-sweep bullet);
delegation-and-review "3. Reviewing what comes back" (named-search
bullet). Result line: not found under the searches and sections listed —
nearest cognates (the post-fix twin sweep; the reviewer search re-run) are
different lifecycle moments, cross-referenced by concept, not duplicate
homes. (Diffstat current: +63 and rising across review rounds; original
+26 as filed.)