Skip to content

Integrate contributor PRs #48-#58: eleven doctrine rules across three skills#59

Merged
F-e-u-e-r merged 76 commits into
mainfrom
integrate-pr48-58
Jul 22, 2026
Merged

Integrate contributor PRs #48-#58: eleven doctrine rules across three skills#59
F-e-u-e-r merged 76 commits into
mainfrom
integrate-pr48-58

Conversation

@F-e-u-e-r

@F-e-u-e-r F-e-u-e-r commented Jul 22, 2026

Copy link
Copy Markdown
Owner

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 unprobed marker plus a Provenance entry recording the probe debt.

delegation-and-review (6 PRs, +307 lines in SKILL.md, 2 new references/ files):

operational-rigor (2 PRs, +84 lines in SKILL.md, +125 in references/external-systems.md):

  • operational-rigor §4: verify a scheduled process's side effects, not its self-report #49 — §4 scheduled-process rule: a recurring schedule's own "completed" report is not evidence its side effects landed — verify at the destinations, attributed to the invocation. Full arming/audit protocol added as the scheduled-process entry in references/external-systems.md (gates-first authorization, channel inventory, emission-positive verification, overlap/lock traversal, absence alarm outside the failure domain, inspection-only arm).
  • operational-rigor §4: a check's name is not its coverage #57 — §4 check-name rule: a check's name is not its coverage — trace a cited check to its pass/fail oracle at the cited run's revision and assert only what the trace established.

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 of delegation-and-review/SKILL.md takes #54's expanded form (a superset of the old line, adding hosted-endpoint behavioral claims to the re-verify list).

Checks: python3 .github/checks.py passes 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; .gitignore untouched).

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.

  • r1: grok FIX 1,2,3 (+5 nits) / codex FIX 1-7 (+2 nits) → 12 items fixed in ae96cd7, 2 rejected with counter-evidence.
  • r2: grok FIX 1 (+2 nits) / codex FIX 1-5 (+4 nits) → 9 items fixed in 8a94407, 3 rejected with counter-evidence. No prior rejection re-raised.
  • r3: grok FIX 1,2 (+4 nits) / codex FIX 1-5 → 9 items fixed in 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).
  • Merge-integrity, covenant, and safety surfaces: clean from both reviewers in all three rounds.
  • Terminal condition: the round cap (cross-model-review §4) is reached; every r3 item carries a disposition (fixed / rejected-with-recorded-counter-evidence); remaining valid findings across r2-r3 were exclusively polish of r1-r2 fix wording, never the eleven rules' substance. Residual risk: the r3 fold itself (one-sentence-level wording fixes) shipped without a fourth round, per the cap.

🤖 Generated with Claude Code

https://claude.ai/code/session_01GhLu6NCGzM9HxnqNb87MAx

firaen22 and others added 30 commits July 21, 2026 09:32
…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
F-e-u-e-r and others added 22 commits July 22, 2026 18:56
…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

# 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
@F-e-u-e-r

Copy link
Copy Markdown
Owner Author

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 model:/reasoning effort: lines confirmed the route on every run). Packets were self-contained (combined diff + full post-merge text of all six touched files + seven-surface rubric); rounds 2–3 additionally carried the cumulative disposition ledger. Verdict files retained under the session's tmp (combined/r{1,2,3}/{grok,codex}/verdict.md).

Round 1 (raw integration, 5158b3c)

  • grok: FIX 1,2,3 + nits 4–8. Codex: FIX 1–7 + nits 8–9.
  • Fixed in ae96cd7 (12): settled-tree trigger broadened to write-capable waves (both files); labels pass = answer AND route report; silent-fallback → route unverified; callability session-scope self-standing; port identity-check ordering rebuilt (check after repairs, cleanup after check, non-disruptive markers only — the ✅ example had cleanup before the nonce check it needed); campaign-ledger path pinned to the dispatching side's repo; behavioral sweep gate requires the producing condition driven true; capability-negative restructured (trigger/probe/unknown-not-absent/Done/✅); dup-check joins router/entry files; hunt-log vs campaign-ledger naming; field title → dispatches; keyword-grep ✅ ends on duplicate-found; §6 review-record decoupled from §7's word-diff artifact.
  • Rejected with counter-evidence (2): codex F7 (the §6 deployment-runtime gate governs §6 usability reviews and the added rules are pure instruction text under that rule's own runtime-agnostic branch — also a packet-limitation shape: absence from the packet is not absence); codex n9 (the rule already lists the wrapper's request trace among mapping sources).

Round 2 (ae96cd7)

  • grok: FIX 1 + nits 2–3 (and confirmed 11/12 r1 fixes hold; rejected items not re-raised). Codex: FIX 1–5 + nits 6–9 (all new items; no re-raise).
  • Fixed in 8a94407 (9): the sweep ✅'s leftover "round ledger" noun (the one r1 fix that had missed its example — grok caught it); port defenses numbered (1)/(2); capability Done split by branch; §1 parallel-writers line carries the settled-tree carve-out; pinned-string re-probe requires route attribution first; hosted-model behavioral negatives scoped out of version-pinning to the pinned-string rule; settle-by-commit stages exactly the content under review; PRIOR-FIXES narrowing scoped to re-flagging only; explicit ledger write-back transitions.
  • Rejected with counter-evidence (3): codex F4 (sweep packet scope vs whole-project twin search — different duty-bearers; the worker's reported gap is the disclosed limitation and the dispatcher owns the whole-project duty, escalation path already in the text); codex n6 (the miss-is-costly loop runs all axes each round, so a new producer category makes the round non-empty); codex n9 ("not found" binds to the fact under dup-check; hit-bearing sections are force-read).

Round 3 (8a94407 + ledger)

  • grok: FIX 1,2 + nits 3–6 — both must-fixes were residue of the r1/r2 folds themselves (the labels fix's unverified-route block would have bricked wrappers with no attribution channel by design; the pinned-string Done/✅ had not absorbed the r2 attribution clause). Codex: FIX 1–5.
  • Fixed in ed47089 (9): the two grok must-fixes (channel-class split: channel-present-but-unattributed blocks dispatch, no-channel-by-design yields a recorded reachability-only pass; Done/✅ now carry attribution); grok nits 3–6 (carve-out names both duties; check-name trigger covers any cited property; port recovery moved inside the address-in-use branch; reference cites the field's actual title); codex F2 scoped to its valid core (attribution = a report of what ANSWERED; a requested-slug echo is configuration); codex F3 scoped (probe example exercises the claimed-absent capability; runtime-scoping stays §6's gate — no duplicate home); codex F4 (regressed-prior-fix transition: re-flagging spawns a new OPEN finding, historical entry stays with a pointer).
  • Rejected with counter-evidence (2): codex 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" → the review runs provisional, never a clean gate pass); codex F5 (re-raise of PR skill-authoring §6: name the deployment runtime before the review concludes #52's two-strike standing rejection on gate placement — §1's placement line already gates authoring start and §6 is the named enforcement backstop, adjudicated in that PR's own per-PR review; the frontmatter loader is pre-existing structure outside this diff).

Terminal condition and residual risk

Cross-model-review §4 caps the loop at 2–3 rounds; round 3 is the cap. Every round-3 item carries a disposition (fixed, scoped-and-fixed, or rejected with recorded counter-evidence). The valid must-fixes of rounds 2–3 were exclusively wording-residue of earlier folds — the eleven rules' substance drew no new confirmed defect after round 1 — and the merge-integrity, covenant, and safety surfaces were clean from both reviewers in all three rounds. Residual risk, stated: the round-3 fold (sentence-level wording fixes, each verified in place against the finding it answers) ships without a fourth review round, per the cap; and the per-PR treadmill state recorded in the prior session (pending per-PR v-folds for #48#58) is superseded by this combined gate rather than individually folded — the combined rounds re-covered those files in their merged form.

Per-invocation authorization for this merge: the owner's instruction to summarize the set, cross-check it, and "may be using a new pr to commit, push and merge it with admin access".

@F-e-u-e-r
F-e-u-e-r merged commit 3cb361d into main Jul 22, 2026
3 checks passed
@F-e-u-e-r
F-e-u-e-r deleted the integrate-pr48-58 branch July 22, 2026 15:45
@F-e-u-e-r

Copy link
Copy Markdown
Owner Author

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.

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.

2 participants