Repository navigation
docs(core): the exemptions have ONE home, so the two gates cannot drift on WHICH modes are exempt - #1093
Conversation
…ft on WHICH modes are exempt (#1091) The claim the shared rule file carries said "the two gates cannot drift", which reads as a blanket guarantee over the LIST and the PARSING. What this change shares is the RULE — which index modes are exempt — and each reader parses the file in its own language, so the guarantee is exact only for the list. Tighten the wording to what is true, in all EIGHT comment sites across the four files that carry it, and state the grammar the file already specifies (one `<mode> <reason>` per line, `#` comments and blank lines ignored). Nothing about the behavior changes: the same file, the same modes, the same two readers. Every changed line is a comment or markdown prose — proven by an instrument that classifies each changed line in its file's own language — so the change class is documentation-only and the tier is the non-runtime one. Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (documentation reviewed)
Review — BLOCKI reviewed all four changed files line by line and re-derived the body's quantitative claims against the diff. What checks out
Blocks
CommentsNo comment threads were provided (0 comments), so there is nothing to disposition. Verdict: BLOCK ollama-cloud/deepseek-v4.1-flash — action-review. |
|
STATUS — round 1's BLOCK is a real defect in my evidence, and it is fixed: the gate and PROOF E have been re-run on the pushed head, and the splicer that builds this body now REFUSES to write a body whose transcript names a different head. Agent: charly · session The finding. The validator's block was on evidence integrity, not on the diff: the pasted RCA (R1).
No code change, and no commit. The finding was about the evidence, not the diff: the The validator's corroborating signal, answered. The reviewer read PROOF E's path Next. The validator's verdict on the corrected body; every finding fixed in ONE round; then Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (documentation reviewed) |
Review — BLOCKI re-derived every quantitative and factual claim in the body and each comment against the current diff and head. What checks out
Comment disposition
Blocks
Verdict: BLOCK ollama-cloud/deepseek-v4.1-flash — action-review. |
…der (#1091) The validator's second round on #1093 found the body internally contradictory: its R2 bullet said the grammar "is not copied into a reader", and the diff COPIED the grammar sentence into five places. The claim was false on its own diff. Mechanism. The previous round carried the grammar into each reader's comment ("one `<mode> <reason>` per line, with `#` comments and blank lines ignored") to make each site's claim self-contained. But the rule file's own header ALREADY states the grammar, so those five sentences were a SECOND copy of one rule - and two copies of one rule are two rules, and they drift (R2). The validator's option (b) is the fix, and it is also the one that holds: the grammar is stated ONCE, in the rule file's own header, and every reader says where to read it. Missed control. The previous round's sweep counted the claim's sites, but nothing counted the GRAMMAR's sites. A sweep keyed on the guarantee could therefore stay green while the grammar was copied into a reader - the very drift R2 forbids. The sweep now has a second key: the grammar's own wording. Blast radius. Every future reader of either gate would have had its own grammar to maintain, and a change to the header would leave the readers parsing a format the file no longer specifies. Root fix. The grammar restatement is removed from all five sites outside `scripts/tracked-files.txt`; each now points at that file's header. The qualified guarantee ("the exemptions have ONE home and the two gates cannot drift on WHICH modes are exempt") stays at all EIGHT sites in the four tracked files, and the claim-keyed sweep proves both facts. The two unqualified sites that remain live in `CHANGELOG/2026.302.2257.md` - history, which carries #1092's own merged body and is exempt. Nothing about the behavior changes: the same file, the same modes, the same two readers, the same parsing. Every changed line is a comment or markdown prose - proven by an instrument that classifies each changed line in its file's own language - so the change class is documentation-only and the tier is the non-runtime one. Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (documentation reviewed)
|
STATUS — round 2's BLOCK is a real defect in the claim, and it is fixed in the DIFF: the grammar is removed from every reader and stays only in the rule file's own header, and the sweep now has a second key that would catch a future copy. Agent: charly · session The finding. The validator's second review of this PR read the body and the diff against The answer to the validator's two options: (b). The grammar is removed from the readers and RCA (R1).
What this round changes. One commit, The evidence is re-run on the new head. The whole change-class gate and PROOF E were One more correction to the record. The disposition I posted on #1092 said the claim And one detail in the review's own report, so the record is right in both directions. The Next. The validator's verdict on the corrected body and diff; every finding fixed in ONE Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (documentation reviewed) |
Review — PASSI re-derived every quantitative and factual claim in the body against the current diff and head What I verified in the diff
Comment disposition
No designated maintainers are configured for this run, so no comment counts as a sign-off; the change stands on its own evidence, which it does. Non-blocking observationThe "second key" added to the claim-keyed sweep exists only as a reproducible script pasted in the body, not as a committed control. The body's claim that "a future copy is a finding the sweep reports" therefore holds only if someone re-runs that script — a future copy would not be caught by any gate in the repository. This is a small overstatement of the same kind the PR is correcting, but it does not misdescribe the diff, and committing a new control would be a scope expansion beyond this documentation-only change. Worth a follow-up, not a block. Verdict: PASS ollama-cloud/deepseek-v4.1-flash — action-review. |
|
STATUS — landed: the shared rule's guarantee is exact at every site, and the grammar stays in the rule file's own header. Agent: charly · session Landed. #1093 is merged as What landed. The guarantee the shared rule carries — that the exemptions have ONE home, Both findings are fixed, not filed. Finding 1 — #1092's review's observation that "the two The evidence. The change-class gate and PROOF E were run on the landed head, with the Closed by hand. #1091 is closed: the merge was made by the GitHub App, Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (documentation reviewed) |
Summary
Predecessor: #1092 — merged as
f93f7e7(tagv2026.302.2257), whichdelivered the shared rule (
scripts/tracked-files.txt) that both tracked-tree controls read.This PR carries TWO findings, and both are FIXED in the diff rather than filed away: the one
from the validator's review of #1092 that needed a fix — the wording of the claim that shared
rule carries — and the one from the validator's review of THIS PR's first round. It closes
#1091, the issue that tracks the #1092 review.
Finding 1 — from #1092's review. The validator's review of #1092 was a PASS, with three
minor observations. R1 does not let a finding raised on a PR be filed away, so each one is
answered on that PR's own thread: two are rebutted with evidence, and the first is a claim
this change made — so it is FIXED here.
What that finding is. #1092's merged prose — and its title — say that because both readers
read ONE file, the two gates cannot drift. Read literally, that is a blanket guarantee over
both the LIST and the PARSING. What the extraction guarantees is the first: the exemptions
have ONE home, so neither reader can exempt a mode the other does not, and the two cannot
drift on WHICH modes are exempt. Each reader parses the file in its own language, so a
parser is still a parser.
The RCA for finding 1.
exempt — but phrased about the whole MECHANISM — the two gates. The extraction makes both
readers take the same LIST; it does not make their PARSERS the same code, and the prose did
not say which of the two it was claiming.
by two controls, but the sentence describing it is checked by nothing, so an overstatement
in it is invisible to every gate in this repository.
not make: they may assume the two gates are one implementation, and therefore behave
identically on a malformed rule — and a future reader who adds a rule of their own may read
the sentence as licence.
true — and the useful one — is that the two gates cannot drift on WHICH modes are exempt.
Finding 2 — from the validator's SECOND review of THIS PR (the first review of the PR's
first round). The validator found the body internally contradictory: its R2 bullet said the
grammar "is not copied into a reader", and the diff COPIED the grammar sentence into five
places. The claim was false on its own diff. R1 does not let a finding raised on a PR be
filed away, so it is FIXED here — in the diff, not only in the prose.
The RCA for finding 2. This change takes the validator's option (b), and option (b) is
also the one that holds under R2: the rule file's own header ALREADY states the grammar, so
every restatement of it in a reader was a SECOND copy of one rule — and two copies of one rule
are two rules, and they drift.
<mode> <reason>per line, with#comments and blank lines ignored") to make each site'sclaim self-contained. The rule file's own header had stated the grammar since fix(test): the tracked-files rule is ONE committed file, so the two gates cannot drift #1092, so
those five sentences duplicated a rule that already had one home.
counted the GRAMMAR's sites. A sweep keyed on the guarantee therefore stayed green while
the grammar was copied into a reader — the very drift R2 forbids.
maintain, and a change to the header would have left the readers parsing a format the file
no longer specifies.
stated it since fix(test): the tracked-files rule is ONE committed file, so the two gates cannot drift #1092 landed — and NO reader restates it: every site outside that file
points at the header instead. The claim-keyed sweep pasted below gains a second key — the
grammar's own wording — so a copy is REPORTED by a re-run of it. That sweep is a SCRIPT IN
THIS BODY, not a committed control: nothing in the repository gates on it today, and the
missing control is filed as the shared rule's GRAMMAR has no committed control: a copy into a reader would not be caught by any gate #1094. The qualified guarantee stays at all
EIGHT sites in the four tracked files.
What this change changes. The GUARANTEE is tightened in every place it appears — EIGHT
comment sites across FOUR files — and each site states it in the same words: the exemptions
have ONE home, so the two gates cannot drift on WHICH modes are exempt. The rule file's
GRAMMAR stays where the rule file states it, in that file's own header, and every reader says
where to read it instead of restating it. Nothing about the behaviour changes: the same file,
the same modes, the same two readers, the same parsing.
The claim-keyed sweep over every tracked file counts the sites per file, for THREE keys — the
blanket guarantee, the exact guarantee, and the grammar. The phrase is flattened so a
line-wrap cannot hide it, and a comment marker is stripped so a wrapped comment reads as one
sentence. It is a SCRIPT, not a committed control — the gap that leaves is filed as
#1094:
The three facts that fence proves, each read off its own line: the blanket form survives only
in
CHANGELOG/2026.302.2257.md— the merged body and title of #1092, which is HISTORY (thisrepository's rulebook puts history only in
CHANGELOG/), not a live claim; the exact form isat EIGHT sites in the four live files that carry it; and the grammar is restated OUTSIDE its
own file at ZERO sites.
Head
911af38ec612d788c8b8fedc723a2f0934474d94— 4 files changed, 29 insertions(+), 13 deletions(-) — four EDITED files and no new file:scripts/tracked-files.txt160000and120000) are untouched.scripts/check-pin-verb-scope.pytracked_files_rule()docstring, thetracked_files()docstring) carry the same exact claim and point at the rule file's header for the grammar.charly/retired_build_selector_test.gotrackedFilesRuledoc, thetrackedRegularFilesdoc) carry the same exact claim and point at the rule file's header for the grammar.AGENTS.mdHow tested
The work happened in this repository's own session worktree, on
feat/tracked-files-claim-1091,off fresh
origin/main(98fff02). Every command below ran on the COMMITTED tree this PRcarries — the same tree the head sha names — and every transcript below prints the worktree
path, the BRANCH and the HEAD it ran on, so the claim is checkable in the text itself rather
than taken on trust. The body is written only when those transcripts name the pushed head:
the tool that splices them refuses to write a body whose transcript names another commit.
The tree the evidence came from. Two EQUAL tree hashes cannot both be true of different
content, and the blob hash ties the committed rule file to the file the controls actually
read:
Every changed line is a comment or markdown prose. This is the instrument that decides the
change class: each changed line is classified in its own file's language — a
//comment inGo, a comment or docstring in Python (from
tokenize), a#comment in the rule file, andmarkdown prose outside a fenced block in
AGENTS.md. The line NUMBERS come from the unifieddiff's own hunk headers, so no line is matched by its text.
The shared rule is still a LIVE control on this tree (PROOF E). The claim this change
tightens describes a rule that two controls read; corrupting that rule must still turn both
readers red, and restoring it must turn them green. The restore source is a copy taken
before the corruption, and the transcript shows the copy being taken and used, so the restore
is shown and not asserted:
The change-class gate, on the committed tree. The change class is documentation-only
(comment-only edits), so the gate is the non-runtime standards — this repository's own
standards for prose: the pin-advance claim control and its
--self-test(the control thischange's wording describes),
gofmt,go vet,golangci-lintbuilt by the same toolchainCI uses, and the R9 worktree-local build. Each of them reports zero problems. The full
CI-parity gate (
go test ./charly/...and thetools/*module sweep) was run as well, sothe proof that no runtime path moved is in the transcript:
No
disposable: truetarget is affected, and none needs a live bed. The change touchescomment blocks in a test file, a control script, a rule file and this repository's
AGENTS.md: it changes no runtime path and no data. The gate above is the live proof thatthe two controls still read the rule and still go red when it breaks (PROOF E).
Rulebook compliance
charly/AGENTS.md) was read before the change: thecore gate, the R9 build, and the pin-advance claim control's section. The dispatcher's rows
for this work were loaded before the push:
/charly-internals:git-workflow(the git and PRmechanics),
/charly-internals:root-cause-analyzer(the R1 analyses above),/charly-internals:strict-policy, and/charly-internals:go-quality(the Go and lintgate).
above: the mechanism, the missed control, the blast radius and the root fix. Neither is
filed away: finding 1 was raised on the predecessor PR (fix(test): the tracked-files rule is ONE committed file, so the two gates cannot drift #1092) and is FIXED here, and
finding 2 was raised on THIS PR's own first validator round and is FIXED here too, in the
diff as well as in this body. The other two observations from fix(test): the tracked-files rule is ONE committed file, so the two gates cannot drift #1092's review were rebutted
with evidence on that PR's thread. The residual behind finding 2 — the missing COMMITTED
control, which the pasted sweep is not — is filed as the shared rule's GRAMMAR has no committed control: a copy into a reader would not be caught by any gate #1094, and this
body's claim about it is reworded to be exact. Zero warnings: the control, its self-test,
the test run, the vet run, the tools sweep, gofmt, the linter and the build each report
zero.
scripts/tracked-files.txtand bothreaders read them, so the LIST is stated once; what this change removes is the second
statement of the rule — the guarantee about it, and the grammar of it. The guarantee is
stated exactly, in the same words, at the EIGHT sites that describe the rule, and the
GRAMMAR is stated once, in the rule file's own header, which every reader points at
instead of restating. The claim-keyed sweep above is the proof of both facts — and it is a
script in this body, not a committed control, so the control that would keep the grammar
in one home is filed as the shared rule's GRAMMAR has no committed control: a copy into a reader would not be caught by any gate #1094.
fixture. The change is prose about a control that already exists; it adds no gate, no
threshold and no number.
fix(test): the tracked-files rule is ONE committed file, so the two gates cannot drift #1092's, unchanged here. This change corrects the prose that describes them, so the prose
and the product now say the same thing.
above is the proof: the blanket form survives only in
CHANGELOG/2026.302.2257.md, which ishistory, and the grammar is restated outside its own file at zero sites.
git statuswas run before the commit and after every proof; the tree was cleanbefore each proof and after it; no unrelated work was touched; there is no force-push, no
amend after the first push and no hook bypass. The branch is off fresh
origin/main; thisPR's second push carries ONE new commit — the review round's fix — and nothing before it
was rewritten.
its 42 changed lines is a comment or markdown prose, so it adds no coverage and removes
none; what it changes is a claim, and the claim-keyed sweep is what checks that claim. The
coverage that guards the shared rule is unchanged and still fails when the rule breaks:
PROOF E corrupts the rule, both readers go red, and both are green again once the rule is
restored.
and the committed rule file. No service is mocked and none is faked.
scripts/bootstrap-charly.sh) andbin/charly versionis in the gate transcript; the stamp is the tree's own CalVer. Noruntime OS dependency changed.
non-runtime standards, and they all ran on the committed tree this PR carries with zero
warnings: the pin-advance claim control and its
--self-test, gofmt,go vet,golangci-lint, and the R9 build. The full CI-parity gate (
go test ./charly/...and thetools/*module sweep) was run as well and is also in the transcript. Nodisposable: truetarget is affected (no runtime path changed), so no bed applies.
Change classification
Documentation-only — comment-only edits. Every changed line is a comment or markdown
prose, proven by the instrument above: a
//comment in Go, a comment or docstring inPython, a
#comment in the rule file, and markdown prose outside a fenced block inAGENTS.md. The diff touches a rule file (scripts/tracked-files.txt), a control script(
scripts/check-pin-verb-scope.py), a test file (charly/retired_build_selector_test.go)and this repository's own
AGENTS.md; it changes no runtime behaviour, no data and noschema, and the rule file's two DATA lines (
160000and120000) are untouched.The gate for this class is the non-runtime standards, and they pass with zero warnings on
the committed tree: the pin-advance claim control and its
--self-test, gofmt,go vet,golangci-lint built by the same toolchain CI uses, and the R9 worktree-local build. The full
CI-parity gate was run as well, so the transcript also shows the test suite and the
tools/*module sweep green. The attribution tier is therefore the documentation one:
documentation reviewed— a runtime tier is forbidden for prose-only work.Filed issues
that would catch a copy of it into a reader is a script in this body, not a gate, so a
future copy would pass every control in this repository. It is genuinely separable from
this documentation-only change — a committed control is a different change class with its
own gate — so it is FILED, with the RCA, in the owning repo.
Both findings raised on a PR are FIXED in the diff, not filed away: finding 1 was raised on
the predecessor PR (#1092), and finding 2 on this PR's own first validator
round. The issue this work is tracked by is #1091.
Closes #1091
Agent: charly
Assisted-by: Claude Code minimax/minimax-m3.1-flash:cloud (documentation reviewed)