Integrate contributor PRs #48-#58: eleven doctrine rules across three skills#59
Conversation
…atch Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…its self-report A recurring automation's own "completed" log proves the process ran, not that its outputs landed. Private incident: a weekly task reported success for ~3 months while its write step silently never executed (every output file's mtime frozen from the day the path broke); a second, independent output channel on the same task was separately dead the whole time on a stale hardcoded credential. Rule: supervised first run + per-channel artifact verification, a dated health line whose absence is itself the signal, pre-confirmed permission gates for headless runs, and mtime audits when reviewing an existing schedule. Ships unprobed per the README covenant — no long-running-schedule arm in this pack's private fixtures yet.
…rep pattern A find-and-fix-every-instance sweep needs the same rigor as any other owned-scope field. Private incident: a 53-file styling sweep, three review rounds, and a merged fix all missed the real defect — it lived in a shared global utility class the token grep pattern never touched — and each follow-up round's "still broken?" surfaced a different category (a color-tier band, a class-emitting helper function) the prior round's search structurally excluded. Rule: enumerate every generator (literals, shared/global definitions, class- emitting helpers) and the full value space before dispatching or accepting such a sweep, and gate acceptance on observing the effect rather than on the search returning zero. Ships unprobed per the README covenant.
…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.
…cludes A skill reviewed and finalized against the author's local macOS was rebuilt wholesale the same week when its real target — a sandboxed Linux VM — surfaced after sign-off: host identity, launcher mechanism, and machine-local MCP tool-name assumptions all failed there. §6's lenses check the file against the author's world; none asks where it will run. This adds that question as a review input plus the sweep list for machine-bound assumptions (absolute paths, OS launchers, host identity, clock/timezone, hard-coded MCP tool prefixes). Ships unprobed per the README covenant; Provenance records the probe shape as debt.
In a worktree fan-out, sibling sessions contend for the same configured dev-server port; after auto-port-fallback moves one session's server, a hardcoded localhost:<port> proxy in the app config silently reaches a CONCURRENT sibling's server — blank app or wrong build with every request returning 200, indistinguishable from a bug in your own change (and stopping your own preview cannot stop the sibling's server). The §1 worktree sentence promises isolation the port namespace does not honor; this bullet names the trap and the check order: auto-port from the start, verify against the assigned port, and on all-green misbehavior check cross-port references before debugging your own code. Ships unprobed per the README covenant; Provenance records the fixture gap as debt.
Two independent private incidents in one week, two vendors: a pre-registered one-day re-measurement of a CLI's unstated-edge guard rate (same --model flag, same prompt battery) flipped enough to force retraction of the prior day's published claim; a second vendor's endpoint inverted a reproduced infinite-loop failure into a fully guarded pass over twelve days behind unchanged model strings. §1 already says lineups are volatile; this says the MEASUREMENTS are too — a behavioral number about a hosted endpoint is a measurement of a day, not of the string. Date-stamp such numbers, re-run the probe when a routing/safety decision depends on one, treat undated claims as expired. Ships unprobed per the README covenant (nothing can fixture scheduled endpoint drift); Provenance records longitudinal re-measurement as the honest test.
…s and refuted classes Repeated review sweeps over the same codebase pay a reproduction cycle every time a reviewer re-litigates history: re-raising a finding class an earlier iteration already refuted, or flagging a prior iteration's fix as a defect. A do-not-re-flag packet block demonstrably prevented this where present; the misses were on surfaces without one. New packet field for recurring sweeps: two ledgers (prior fixes / refuted classes), each entry with a one-line reason. Ships unprobed with Provenance per the covenant.
Two traps in wrapper-CLI model routing: (1) a wrapper's model strings are internal routing names, not provider API IDs — pasting them into direct API calls or quota lookups queries a name that may not exist; (2) a model listed in a lineup is not proven callable — a listed entry failed hard on first invocation, the second such ghost across two independent tools. Rule: invoke once and see output before building on a listed model. Ships unprobed with Provenance per the covenant.
A named check, test, or CI job earns evidentiary weight only from its assertion body. Incident shape: a check whose name implied it gated a model integration turned out to exercise only a regex pre-filter where the model's name was a routing label — the session had to correct a safety claim already given to the user. Rule: read what the check actually asserts before citing it as evidence a change is safe. Ships unprobed with Provenance per the covenant.
'No such flag' / 'only works interactively' / 'the API can't do X' are version-scoped observations that read as timeless rules. A stale positive fails loud when followed; a stale negative fails silent — it steers every later session away from a capability that now exists and nothing ever exercises it to expose the rot. Incident shape: a playbook's no-flag claim was actively wrong at the tool's current version and had been routing sessions into a degraded path. Rule: pin capability-negatives to the observed version; re-verify on version change before repeating. Ships unprobed with Provenance per the covenant.
PR #48 round-1 cross-model gate (grok-4.5 high: FIX 1,2,3; gpt-5.6-sol max: FIX 1,2,3). All must-fix findings reproduced and addressed: - dangling "hence the check below" replaced with explicit on-return state re-checks (grok F1 / codex F2) - verdict baseline pinned to the recorded dispatched state (revision + dirty-file set), intentions excluded, second neg example added (grok F2 / codex F2) - no-write isolation made first-class (snapshot preferred; foreign HEAD/index motion = suspect verdict and tree) so the second motivating incident is prevented, not just narrated (grok F3 / codex F2) - shard branch tightened: file-disjoint is not dependency-disjoint (codex F1) - "Land or hold" replaced by stabilize-without-merging with named destinations for held edits (codex F3 / grok N6) - in-body marker pluralized; provenance fix-summary updated to match (grok N7) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…mechanism per r2 dual review Round-2 gate on PR #48 (grok-4.5 high: FIX 1,2,3; gpt-5.6-sol max: FIX 1-7). Five of the nine r2 must-fixes hit one mechanism — the conditional live-tree concurrent-edit branch — so per operational-rigor S5 (three defects, one mechanism) that branch is removed, not patched: snapshot-or-freeze is now the only dispatch shape, and the snapshot arm restores the concurrency sharding was buying. - reviewed content settles in place; stash arm scoped to non-reviewed WIP; audit-target trees defer to the completion-claim rule (grok F1 / codex F2) - dispatched state recorded as content (saved diff or hash), not a filename list (codex F3) - unaccountable deltas on reviewed paths = suspect verdict AND tree, restore baseline before re-dispatch (grok F2) - live-tree editing branch removed; write-capable waves fall to S4's silent-clobber discipline (grok F3 / codex F1, F5) - endpoint match demoted to detection-of-persistent-drift; prevention is the snapshot / withheld write access (codex F4) - pos example now carries the return-state check (codex F6) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…; dual gate NOT re-run Round 3 (grok-4.5 high: FIX 1-4; gpt-5.6-sol max: FIX 1-6) landed after the 2-3 round cap, so this commit repairs the r3 findings and the loop STOPS: the dual gate has not re-reviewed this text, and the PR is held for the owner instead of merged (cross-model-review S4). - restorable capture (staged/unstaged/untracked, not hashes), copy verified against capture pre-dispatch, worktree-omits-dirty named (grok F3 / codex F1) - any reviewed-path delta invalidates use of the verdict, own edits included - restores the stale-arm v3 dropped (grok F2 / codex F2) - valid prevention combinations stated (copy or frozen tree, each with write withheld); the misdirecting S4 pointer removed (grok F4 / codex F3) - recovery semantics: quarantine own edits, restore from capture, never adopt the suspect tree as baseline (codex F4) - audit-tree cross-ref removed entirely (its direction word was wrong and the pointer confused more than it bound: codex F5 / grok n6) - neg example scoped to the live tree the critic reads (grok F1) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
PR #49 round-1 gate (grok-4.5 high: FIX 1,2,3; gpt-5.6-sol max: FIX 1-8,10). Reproduced and addressed: - supervised run pinned to the schedule's own execution context (principal/env/cwd/headless, or one real scheduled fire) (grok F2 / codex F3) - per-channel verification moved to the DESTINATION (content, receipt, observed state; async 2xx acceptance is not delivery) (codex F2) - repeat-run behavior check before arming - recurring work dies on the second pass (codex F8); any unverified channel leaves the schedule unarmed, pos example covers both channels (codex F7 / grok n6) - review-vs-arm split: reviewing without run authorization inspects existing evidence only; consequential effects in a supervised run stay behind S2's gates (codex F4) - permission-gate clause rewritten: durable non-interactive technical grants under the schedule principal; consequential actions need S2's explicitly scoped standing authorization; self-answering and blanket pre-approval both excluded (grok F3 / codex F5) - destination-freshness cadence independent of the task; the task's own health line demoted to ran-not-arrived evidence (codex F1 / grok n5) - audit path = per-channel evidence, mtimes one signal (grok F1); 'proves' downgraded to evidence-of-self-report (codex F6); 'roughly three months' restored (codex F9 nit) - codex F10 rejected-with-reason: the contributor Checks section is a factual process self-report whose claims this gate independently re-ran (checks.py pass, single-file diff both true); not an authority directive, no finding was downgraded on its account Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…al review PR #50 round-1 gate (grok-4.5 high: FIX 1,2,3,4; gpt-5.6-sol max: FIX 1-5). Reproduced and addressed: - search scope vs write scope split: inspecting a generator does not own it; out-of-scope generators are reported, never edited on discovery (codex F2) - generator inventory from definition surfaces, never the token grep; unresolved discovery gaps block exhaustive claims (grok F2 / codex F1) - acceptance moved into the Proof gate field and bound to every inventoried surface and tier, declared partitions the only shortcut; zero-hit search demoted to a report (grok F1, F4 / codex F3) - open-ended families get a declared bound per S3's bounded-sweep clause instead of a forbidden-sampling mandate (grok F3 / codex F4) - pos/neg pair added at the proof gate; dangling 'not that the defect is' parallel completed (grok n5, n6) - S3 sweep bullet now points at the S2 sweep fields so the review path lands on the acceptance rule (grok F4) - codex F5 (contributor Checks self-vouch) rejected-with-reason: factual process self-report, independently re-verified by this gate; packet rubric clarified to stop this recurring false-positive class Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…rst, drive-and-attribute PR #49 round-2 gate (grok-4.5 high: FIX 1; gpt-5.6-sol max: FIX 1-8). All reproduced and addressed: - authorization gate moved BEFORE the first test fire per the pack's own gate-placement rule; per-invocation (each supervised fire) vs explicitly scoped standing authorization (unattended recurrence) split per the canonical S2 boundary (codex F5, F6) - credential handling: verify existing grants; minting or broadening one is itself S2-gated; no safe grant leaves it unarmed (codex F8) - scheduler binding: inspect the configured entry (command/args/ trigger/enabled) before trusting a manual pass (codex F3) - destination evidence must be invocation-correlated (before/after or run-tied receipt); sibling-writer freshness proves nothing (codex F1) - sequential repeat cannot exercise overlap; concurrency tested deliberately or stated unverified (codex F2) - conditional channels: freshness keyed to documented emission condition + deadline; stale-or-uncheckable = unhealthy (codex F4) - headless / no-human-cleared-prompt folded into the arming done condition and the pos example (grok F1, n2) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
PR #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
…y closure via S3's own loop PR #50 round-2 gate (grok-4.5 high: FIX 1,2,5; gpt-5.6-sol max: FIX 1,2,3,4,5,7). All reproduced and addressed: - inventory gains a concrete build procedure (axis-diverse searches) and a closure criterion borrowed from S3's discovery loop (two consecutive empty passes); the token-grep ban is now aimed at the completeness INFERENCE, not at using search - fixes the direct- literal flip (grok F1, F2 / codex F1) - partition shortcut replaced: equivalence-class observation with the shared-outcome reason stated; unobserved = reported unverified, never folded into exhaustive (codex F2) - S3 pointer now quotes the canonical report-not-the-gate sentence verbatim instead of paraphrasing it (codex F3) - pos example covers every inventoried surface class (codex F4) - WRITE-scope referent pinned to the explicitly listed owned files/modules (grok F5 / codex F7) - PR body Checks line to be updated to disclose the S3 amendment (grok n4 / codex F5); codex n6 (in-packet unverifiability of checks.py claim) recorded - the gate-runner re-runs checks.py independently each round Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…ion, failure domains, canonical S2 pointers PR #49 round-3 gate (grok-4.5 high: FIX 1,2; gpt-5.6-sol max: FIX 1,2,3,4,5,7,8). All reproduced and addressed: - arm-path channel checks now keyed to the invocation's emission condition (run-tied evidence where it should emit, justified absence where it should not) - conditional channels no longer unarm forever (grok F1) - credential clause scoped to what the work actually needs; credential-free schedules no longer blocked (grok F2) - overlap: a possible-overlap schedule arms only after the guard is observed blocking a dry second entry (codex F1) - ongoing watch moved outside the schedule's failure domain (or nearest available independence + named shared-fate residue), with a defined response to unhealthy/missed (codex F2); watch-in-place added to the arming done-set (grok n3) - review-arm evidence made asymmetric: stale refutes, fresh proves only with invocation tie or exclusive writer (codex F3) - S2 restatement replaced with named canonical scope + AUTH: pointer; permission-is-not-authorization stated; standing-auth demand scoped to consequential unattended fires (codex F4 / grok n4) - enabled-state read-only until arming completes (codex F7); pos example now carries the full arming boundary (codex F5) - codex F8 accepted per the PR #48 precedent: maintainer review- authority phrasing removed from the body (separate body edit); codex n6 (in-packet checks.py unverifiability) recorded - gate-runner re-runs it independently Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…andidates, reviewer recheck PR #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
…t-bind, ownership before restore PR #48 round-4 gate (grok-4.5 high: FIX 1; gpt-5.6-sol max: FIX 1-8; core finding convergent across both). All reproduced and addressed: - moving-tree verdicts VOID instead of re-binding to the capture; the return check is read-surface-aware (copy path vs live path), and the copy path re-gates live-drifted paths before applying the verdict (grok F1 / codex F3, F6) - capture dimensions defined once (working content, index, untracked, HEAD/ref) and compared per-dimension on return - covers the empty-commit / ref-motion flip a path diff misses (codex F2, F8) - unaccountable motion no longer auto-attributed to the wave: a user, hook, or sibling process may own it; quarantine + investigate before restoring, per S4's edit-conflict protection; a contaminated copy is discarded and re-cut, never repaired-in-place (codex F4, F2) - write-withholding failure path defined: cannot withhold -> recorded gap, verdict provisional evidence, never a clean gate pass (codex F1) - completion-claim-audit carve-out restored as one clause with the correct direction word: a delivered tree is settled by copying only (codex F5; ends the add/remove oscillation on this clause - final) - pos example carries the applied-edits-are-the-next-change tail (codex F6); PR body What-section to be synced (codex F7 / grok r4 covenant note) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…axis, verbatim loop cite, textual carve-out PR #50 round-3 gate (grok-4.5 high: FIX 1,2; gpt-5.6-sol max: FIX 1,2,3,4). All reproduced and addressed: - at least one inventory axis must never match the target's spelling (effect-source definitions/constructors) - the axis set was spelling-seeded and could not reach the cited utility class (grok F1) - S3 anchors cited by real name with the loop quoted verbatim ('Stop only after two consecutive empty rounds; one clean round is not convergence'), a round defined as every-axis-ran, dedup imported (grok F2 / codex F1 / grok r3 n5 of r2) - equivalence classes need verified branch-free shared paths, not a stated reason (codex F2) - textual-invariant carve-out: an exact-spelling sweep over a declared corpus is gated by the scoped search itself; effect-gate scoped to behavioral targets (codex F3) - bounded/gap-carrying sweeps return a non-exhaustive outcome; scope reduction needs the dispatcher's say; every-instance claims with unobserved members are false (codex F4) - inventory neg example added; pos example names per-surface observations (grok n6 / codex n5); target forms glossed (grok n4) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…body to external-systems reference PR #49 round-4 gate (grok-4.5 high: FIX 1,2; gpt-5.6-sol max: FIX 1-6). Four rounds of findings kept landing on one mechanism - a single S4 bullet carrying a full scheduler protocol - so per the file's own architecture (the 2026-07-14 split precedent: boundary-specific protocols live in references/external-systems.md, S4 stays lean) the rule is split: S4 keeps a state-phrased trigger (grok F2), the claim, the incident shape, and the pointer; the protocol body becomes the scheduled-process entry in the reference, folding every r4 finding: - emission-positive drive per channel; absence verifies only the suppression branch (codex F1) - terminal dead-man watch: alarm-on-absence by construction, outside the failure domain, proven once by skipping a ping (codex F2) - per-invocation authorization for EVERY consequential invocation, repeat included, verbatim AUTH: artifact named (codex F3) - overlap: real lock-acquisition path under a held guard; 'impossible' = scheduler-enforced, not short runtime (codex F4) - execution context = principal AND environment AND working directory; the interactive-session-credential trap named (codex F5) - watch-one-real-fire scoped to already-enabled schedules under observation authority (codex F6 / grok F1) - exit-code scope note added at the S4 bullet (grok n4); watch/dead-man terms unified; S4 boundary list + reference header gain 'recurring schedule'; reference Provenance records the placement Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…vity, unreviewed closure, concrete recovery PR #48 round-5 gate (grok-4.5 high: FIX 1,2,3; gpt-5.6-sol max: FIX 1,2,3,4,5,7). All reproduced and addressed: - copy REQUIRED when write cannot be withheld or any third writer (user, hook, sibling) can move the live tree; live arm gated on all three conditions; neither enforceable -> provisional label only, never a clean gate pass (grok F2 / codex F1, F4) - moved live paths while a copy was reviewed: verdict describes the baseline only; moved paths AND their dependents are UNREVIEWED and need fresh-context coverage, not an orchestrator glance (grok F1 / codex F2) - commit arm now records the baseline (noted revision) and verifies the capture holds everything under review (codex F3) - 're-cut' replaced by the concrete recovery: quarantine the written copy for attribution (never delete unexamined), fresh verified copy from the settled tree, re-dispatch (grok F3 / codex F7) - pos examples: copy-arm example added; both carry write-withheld and the four-dimension check (grok n4 / codex F5) - lead state-phrased (grok n5); PR body diffstat to be refreshed (codex n6) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
PR #52 round-1 gate (grok-4.5 high: FIX 1,2; gpt-5.6-sol max: FIX 1-5). Reproduced and addressed: - unknown/unaskable runtime -> mark user-must-provide, conclude without a portability verdict, never default to the authoring host (grok F1) - MCP clause made executable and bounded to instance-specific identifiers: verified portable name, or a runtime/instance label; no invented discovery mechanism (grok F2 / codex F5) - Done now requires compatibility with every NAMED target - a labeled incompatibility blocks completion or explicitly shrinks the supported scope (codex F1, F4) - S2 citation restored to its qualified form: hard-coded machine-absolute paths (codex F2) - pos/neg pair added at the portable-vs-labeled boundary (codex F4 / grok n4); sweep categories glossed with concrete cues (grok n3); lead state-phrased (grok n5) - codex F3 rejected-with-reason: single-incident rules with unprobed markers are this repo's documented covenant and settled precedent (silent-clobber, fan-in, interactive-runtime all shipped on one observation); S4's two-strike governs fix-log promotion in consuming projects, not this pack's covenant-governed rule adoption - codex n6 (in-packet checks.py unverifiability): standing disposition, gate-runner re-runs it each round Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…y, equivalence evidence, contained observation PR #50 round-4 gate (grok-4.5 high: FIX 1,2; gpt-5.6-sol max: FIX 1,2,3,4). All reproduced and addressed: - textual carve-out guarded: only when the declared corpus covers every inventoried surface AND no inventoried generator can emit the target without the literal; token sweeps with emitters stay on the effect gate (grok F1 / grok n6) - value family closes only via its named canonical source (file:line) or the same discovery loop, else bounded - the color-tier axis of the incident (grok F2) - rounds must add a broadened or new query; identical reruns count for nothing (codex F1) - equivalence requires evidence across inputs, backing data, and downstream context; branch-free control flow alone is not equivalence (codex F2) - observation runs inside an authorized side-effect-contained harness; undrivable outward effects reported unverified + escalated, never fired for the gate (codex F4) - 'behavioral target' qualifier restored at both categorical zero-hit statements and the S3 pointer, which now also carries the positive half of acceptance (codex F3 / grok n4); scope-side pos example added (grok n5) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…searched-file outlines, reviewer independence PR #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
…ntry PR #49 round-5 gate (grok-4.5 high: FIX 1; gpt-5.6-sol max: FIX 1,2,3,4,6,7). All reproduced and addressed: - loader-bullet gloss catalog gains the seventh entry it was missing on a line this PR touched (grok F1 / codex n5's first half); the reference Provenance count now reads 'the first six rules' (codex n5) - watch signals derive from destination-observed state or receipts, never a task-written ping (live task + dead write pings green); proven by withholding a destination effect while the task runs (codex F1) - enabling leaves scheduler binding an open claim until the first scheduler-originated fire lands attributed effects by its deadline (codex F2) - exclusive-writer freshness still needs a post-invocation state transition (codex F3) - SKILL.md pointer names the reference entry canonical on wording disagreement; the S2 authorization line points (grant + AUTH: for outward/irreversible steps) instead of restating (codex F4) - unhealthy response documented and authorized at arming time; safe default alert-only (codex F6) - load-verbs aligned with the trigger verbs, pos example 'every channel', dual dates explained in the reference Provenance (grok n2, n3, n4); PR body scope claim to be corrected (codex F7) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
… ref-sharing, audit-scratch carve-out PR #48 round-6 gate (grok-4.5 high: FIX 1,3; gpt-5.6-sol max: FIX 1-6). All reproduced and addressed: - already-reading wave with no pre-read baseline: void + settle + re-dispatch; no retroactive settling (codex F1) - copy-without-withhold is the provisional case too - prevention redefined as write-withheld on whatever surface is read, plus no third writer there (grok F1 / codex F2) - return checks re-scoped by read surface, removing the two-branch overlap where both conditions were simultaneously true (codex F3); 'Copy written' telegraphese replaced by explicit comparisons (grok F3) - linked worktrees share repository refs: write-capable waves need a fully independent copy (codex F4) - authorized scratch outputs of the review itself are not contamination - ends the audit-copy re-run/void loop (codex F5) - dimensions split: path-scoped content/index/untracked vs repository-wide HEAD/ref (codex F6) - terminal Done-when line added (grok n2); settle arms equal-ranked (grok n5) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…e the Rules bullet Mechanical repair of my own edit defect (the neg example line had glued onto the next bullet). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
PR #57 round-3 gate (grok-4.5 high: PROCEED; gpt-5.6-sol max: FIX 1,2). Both reproduced and addressed: - the trace is inspected at the revision the cited run actually used; a current definition plus an old run's log no longer combines into coverage (codex F1) - the trace must show the assertions PASSED in that run with their failure controlling the check's final status, tied to the file's own runs/passes/correct line (codex F2); 'said so' -> 'say so' (codex n3) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
r4 grok F1) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…o references/, lean S3 bullet PR #48 round-8 gate (grok-4.5 high: FIX 1,2; gpt-5.6-sol max: FIX 1-6) plus the owner's split directive for text that keeps expanding under review. The protocol moves to references/settled-tree-review.md (new file, per the pack's split precedent); the S3 bullet keeps trigger, claim, incidents, pointer, and the binds-only-enforced-state law. All r8 findings folded into the reference: - baseline spans the whole PROTECTED READ SET, declared in the packet; beyond-scope reads are reported gaps (codex F1, F6) - capture under quiescence or atomic snapshot, else the dispatch is provisional - torn captures named (codex F2) - unenforced surfaces (copy included) run provisional, never gating - the caveat middle-tier removed (codex F3 / grok r8 F2 gloss scope) - second return comparison: live state vs dispatch state before any verdict applies to the live tree (codex F4) - linked worktrees never isolate write-capable critics, parallel or serialized; one independent copy per critic (codex F5) - dirty-settle verification target = the baseline including applied capture, verified copy==baseline pre-dispatch (grok r8 F1) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
PR #55 round-2 gate (grok-4.5 high: FIX 1; gpt-5.6-sol max: FIX 1-5). All reproduced and addressed: - third record added: open findings carried forward as context that stays open - no more forcing every record into two suppression buckets (grok F1 / codex F4) - unknown history -> DEGRADED dispatch, said in the packet, recovery becomes a named task; never a completed field (codex F1) - entries carry preserved rationale/invariant + evidence + current applicability; a fix commit shows intent, not correctness; the fresh reviewer validates before deduplicating, tied to Verify-critics-too and S7's cannot-vouch (codex F2) - finding identity defined (claim + location + judged-against revision) and distinguished from the bug class; new-site occurrences are new findings (codex F3) - pos example shows the applicability determination (codex F5) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
PR #55 round-3 gate (grok-4.5 high: FIX 1; gpt-5.6-sol max: FIX 1-6). All reproduced and addressed: - class refutations bind at their STATED SCOPE on their judged revision basis; outside scope or new evidence -> new finding - instance identity no longer defeats dependency-level refutations (grok F1) - finding identity's revision defined as the judged-against artifact SET (file + traversed dependencies), and the pos example runs the applicability diff against that set (codex F1, F5) - fourth record added: unresolved, carried as-is; every surfaced record stays represented with applicability as annotation (codex F2) - stable campaign identifier required from the first pass (codex F3) - DEGRADED declaration defined as the filled field for S2's readiness gate, with recovery dispatched alongside (codex F4) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
PR #55 round-4 gate (grok-4.5 high: FIX 1,2; gpt-5.6-sol max: FIX 1-6). All reproduced and addressed: - degraded path closed: recover history BEFORE dispatch, or every result runs provisional until reconciliation - the label alone changes nothing (codex F1) - durable ledger artifact required from first pass, written back each round (files-are-state); late-adoption path for one-offs that recur (codex F2 / grok F1) - refutation scope unified with identity: binds exactly what the evidence established - same claim, same dependency artifact set incl. call path and controlling config; different claim/API/option = new finding (grok F2 / codex F3); example diffs the judged-against set - evidence typed per S3 canon (REFUTED needs a counterexample) (codex F4) - Done = durable artifact under the campaign id, all records present, round outcomes written back (codex F5 / grok F1) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…cycle to references/, lean S2 field PR #55 round-5 gate (grok-4.5 high: FIX 1,2,4; gpt-5.6-sol max: FIX 1-5) + the owner's split directive for text expanding under review. New references/recurring-sweep-ledgers.md carries the lifecycle; the S2 field keeps trigger/claim/categories/pointer. All r5 findings folded: - reconciliation against an ENUMERATED prior-report source with the comparison result written down - existence is not completeness (codex F1) - prior-fix entries suppress nothing without the fix's own correctness evidence; incomplete-fix residual re-check narrows to the judged set, never skips the locus (grok F1 / codex F2) - concrete repo-relative ledger path required in every packet (codex F3); first-pass wording fixed to 'ledger initialized at <path>' - no contradictory no-ledger claim (codex F4) - S3 evidence clause quoted verbatim (codex F5) - dispatch-time readiness split from post-round write-back (grok F2); four CATEGORIES of unbounded lists, not cardinality four (grok F4) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…prior commit pointed at The restructure commit's file-creation step failed silently (the references/ directory did not exist on this branch) while the pointer landed - this commit repairs the broken pointer with the intended reference body. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
…systems entry Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx # Conflicts: # skills/delegation-and-review/SKILL.md
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx # Conflicts: # skills/skill-authoring/SKILL.md
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx # Conflicts: # skills/delegation-and-review/SKILL.md
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx # Conflicts: # skills/delegation-and-review/SKILL.md
…rence Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx # Conflicts: # skills/delegation-and-review/SKILL.md
…s rule Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx # Conflicts: # skills/delegation-and-review/SKILL.md
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx # Conflicts: # skills/operational-rigor/SKILL.md
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx # Conflicts: # skills/skill-authoring/SKILL.md
…(ultra) grok F1 + codex(cross-ref): settled-tree load trigger said 'read-only review wave' while the protocol and incident 2 govern write-capable critics — broadened to 'review wave — read-only or write-capable —' in both the S3 bullet and the reference opener. grok F2 + codex F3: labels-rule pass criterion made two observations explicit (model answer AND wrapper route report where emitted); silent fallback or unattributable answer now leaves the route unverified and blocks dependent dispatch alongside error/non-answer. grok F3: session-scope of a callability pass now stands on its own (expires with the session; re-probe before later dispatch) instead of citing the volatile-lineups rule, which only governs listings. codex F1: port-identity ordering contradiction resolved — identity check follows repair mutations with the marker in place; marker cleanup is the one mutation after the check, restricted to markers whose removal restarts/reloads nothing; the pos example re-ordered to match. codex F2: campaign ledger path pinned to the dispatching side's own repository (never inside a tree under review) in both the S2 field and the reference. codex F4: behavioral sweep gate now requires the effect's producing condition driven true at each surface (empty-data/disabled-branch renders observe nothing). codex F5 + grok n6: capability-negative rule restructured to the file's own format — state-phrased trigger (writing vs acting), probe branch for missing/stale pins, unknown-not-absent fallback, Done line, positive example. codex F6: dup-check search scope joins repo router/entry files (CLAUDE.md, AGENTS.md, memory index) when the target is a skill. grok n4 + codex n8: sweep per-round record renamed hunt-log and explicitly distinguished from the campaign ledger, both sites. grok n5: recurring-ledgers field title aligned to its body (dispatches, not sweeps). grok n7: first keyword-grep pos example now ends on the duplicate-found outcome (no addition, cross-reference). grok n8: deployment-runtime review-record reference decoupled from S7's word-diff artifact (same artifact class, inline definition kept). Rejected with counter-evidence (recorded in the PR trail): codex F7 (deployment-runtime gate misapplied to this merge — the gate governs S6 usability reviews of a skill; the added rules are pure instruction text under that rule's own runtime-agnostic branch); codex n9 (the rule already lists the wrapper's request trace among mapping sources). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
grok r2 F1: the sweep pos example's 'round ledger' (missed in the r1
rename) now reads 'per-round hunt-log' — the noun the r1 fix retired.
grok r2 n2: the two port defenses numbered (1)/(2) so 'pick one' cannot
be read as picking one comma-clause of defense (1).
grok r2 n3: capability-negative Done split by branch (writing: pin +
probe cited; acting: pin matched / re-probed / recorded unknown).
codex r2 F1: S1's pre-existing 'parallel writers get isolated
worktrees' now carries the settled-tree carve-out (a write-capable
review critic needs an independent copy, not a linked worktree).
codex r2 F2: the pinned-string rule's decision-time re-probe now
requires route attribution per the labels rule first (an unattributed
answer measures an unknown model).
codex r2 F3: capability-negatives about a hosted model's behavior are
scoped OUT of the version-pin protocol to d-a-r S1's pinned-string
rule (endpoints drift behind unchanged strings).
codex r2 F5: the settle-by-commit path stages exactly the content
under review; unrelated dirty/untracked material is attributed first
(operational-rigor baseline rule), never swept into the settle commit.
codex r2 n7: the PRIOR-FIXES 'unchanged since the fix' narrowing is
scoped to re-flagging that entry; a current round's proof gate is
never narrowed by history.
codex r2 n8: explicit write-back transitions added (OPEN->PRIOR FIXES
with fix evidence; OPEN/UNRESOLVED->REFUTED with counterexample).
Rejected with counter-evidence (recorded in the PR trail): codex r2 F4
(sweep packet scope vs op-rigor whole-project twin search — different
duty-bearers: the worker's reported gap IS the disclosed limitation,
the dispatcher owns the whole-project duty; escalation path already in
the rule text); codex r2 n6 (the miss-is-costly loop runs all axes
each round — a new producer category makes the round non-empty, so the
described early close cannot occur); codex r2 n9 ('not found' binds to
the fact under dup-check by the rule's opening context; hit-bearing
sections are already force-read).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
grok r3 F1: the labels rule's unverified-route block no longer bricks
wrappers with no attribution channel by design — channel present but
report missing/ambiguous/fallback-named blocks dispatch; no channel by
design yields a reachability-only pass with the limit recorded wherever
cited, never a verified-route claim.
grok r3 F2: pinned-string Done and pos example now carry the r2
route-attribution requirement (an unattributed probe never satisfies
the citation; the pos example shows the wrapper's route line).
grok r3 n3: hosted-behavior carve-out parenthetical now names both
duties (date-stamp the recorded claim; decision-time re-probe); the
writing imperative binds explicitly to tool-interface negatives.
grok r3 n4: check-name trigger broadened from 'safe' to any cited
property of a change (safe, correct, covered).
grok r3 n5: port recovery clause moved inside the address-in-use
branch; other bind errors stay terminal for that path.
grok r3 n6: ledger reference now cites the field by its actual title
('Recurring dispatches carry ledgers').
codex r3 F2 (scoped): attribution channel defined as reporting what
ANSWERED — a banner echoing the requested slug is configuration, not
attribution.
codex r3 F3 (scoped): the re-verify probe example now exercises the
claimed-absent capability; runtime-scoped verification remains S6's
deployment-runtime gate (no duplicate home).
codex r3 F4: ledger write-back gains the regressed-prior-fix
transition — re-flagging with evidence spawns a new OPEN finding, the
historical entry staying put with a pointer.
Rejected with counter-evidence (recorded in the PR trail): codex r3 F1
(mutate-and-restore on an unenforced copy is the exact case the
reference already rules — 'an unenforced reader can mutate and restore
without a trace; no endpoint comparison proves the read stayed clean'
-> provisional, never a clean gate pass); codex r3 F5 (re-raise of
PR #52's two-strike standing rejection — S1 placement already gates
authoring start, S6 is the named enforcement backstop, adjudicated in
that PR's own review; the frontmatter loader is pre-existing structure
outside this diff).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx
Cross-model review trail (combined gate over the eleven-PR integration)Reviewers (discovered + dry-run-verified at session time, per cross-model-review §1): grok-4.5 / reasoning-effort high (grok 0.2.101) and gpt-5.6-luna / reasoning effort ultra (codex-cli 0.144.6; the exec banner's Round 1 (raw integration,
|
|
Gate continuation (cap lifted by owner): rounds 4–8 ran post-merge with the same reviewer pair and cumulative disposition ledgers; their folds landed via PR #60 (merged 3ba02a3). Trajectory: r4 grok 1 + codex 8 must-fix → r5 1+2 (one shared) → r6 1+PROCEED → r7 PROCEED+1 → r8 double PROCEED, zero findings — terminal. 15 fixed, 2 rejected with counter-evidence, no accepted re-raises. Full per-round dispositions in #60's body. |
Integrates the eleven open contributor PRs (#48–#58, all by @firaen22) into one branch via ascending-order merges, so the set lands atomically and each source PR is marked merged by reachability.
What the eleven PRs add
All eleven are doctrine rules mined from the contributor's private incidents, cited as shape per the README covenant's second branch, each carrying an in-body
unprobedmarker plus a Provenance entry recording the probe debt.delegation-and-review (6 PRs, +307 lines in SKILL.md, 2 new references/ files):
references/settled-tree-review.md(baseline over the protected read set, enforced-copy-or-frozen-tree surfaces, two return comparisons, recovery).references/recurring-sweep-ledgers.md.operational-rigor (2 PRs, +84 lines in SKILL.md, +125 in references/external-systems.md):
references/external-systems.md(gates-first authorization, channel inventory, emission-positive verification, overlap/lock traversal, absence alarm outside the failure domain, inspection-only arm).skill-authoring (3 PRs, +155 lines in SKILL.md):
Merge mechanics
Ascending merges #48 → #58, preserving each PR's commits. Conflicts were confined to the three files' Provenance tails plus one section-body adjacency (
delegation-and-review§1, where #54 and #56 add bullets at the same anchor); every resolution keeps both sides in merge-order chronology. The closing re-check line ofdelegation-and-review/SKILL.mdtakes #54's expanded form (a superset of the old line, adding hosted-endpoint behavioral claims to the re-verify list).Checks:
python3 .github/checks.pypasses on the merged tree; zero-width/bidi sweep over all added diff lines is clean; no conflict markers remain.Current diffstat vs main: +856/−11 across 6 files (originally +787/−10 at integration, before the three review-fold commits;
.gitignoreuntouched).Cross-model review
Three rounds, two reviewers per round, both discovered and dry-run-verified at session time: grok-4.5, reasoning-effort high (grok CLI 0.2.101) and gpt-5.6-luna, reasoning effort ultra (codex-cli 0.144.6; banner route report confirmed the model each run). Round 1 reviewed the raw integration; rounds 2-3 reviewed with a cumulative disposition ledger in the packet. Full verdicts and dispositions in the review-trail comment below.
ae96cd7, 2 rejected with counter-evidence.8a94407, 3 rejected with counter-evidence. No prior rejection re-raised.ed47089(two of codex's scoped to their valid core), 2 rejected with counter-evidence (one a re-raise of PR skill-authoring §6: name the deployment runtime before the review concludes #52's standing rejection, one directly contradicted by the reference text it attacked).🤖 Generated with Claude Code
https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx