volt: path_claim — ledger closes the 3 paths my own record named; EXAMPLE class; docstring drift fixed (HOST_ROUTE, eight, HEAD-anchored claim); selftest 17->19
This commit is contained in:
1 parent
028e2d9ec0
commit
f31c59daa5
4 files changed
+72
-23
No files matched your search
@@ -10376,3 +10376,23 @@ Verification at this commit: `served_drift_check.py --selftest` **22/22 rc 0**;
|
||||
Verification at this commit: `path_claim_check.py --selftest` **17/17 rc 0**; census at `64dee6b` **1,036 distinct / 7 missing / 720 external / 9 template**, `--fail-on-missing --baseline` **rc 0, 0 new**; RED **rc 1** and GREEN **rc 0** measured on one cloned tree; `selftest_sweep.py` **20 tools, 20 OK, 0 fatal** with both axes **25/25** and **23/23**; `doc_command_check.py` **61/61**; `tool_map.py --check` **rc 0**; `doc_census_check.py --tools tools/path_claim_check.py` **0 STALE**. `verify.py`'s check-in leg still reads RED for the reason recorded at `a013842` — zephyrus's two 2026-10-19 files, unchanged by this landing and not this lane's to rename.
|
||||
|
||||
— Volt
|
||||
|
||||
**path_claim_check 2026-10-20 22:26Z (volt, Workhorse) — the tool's own gate was red, on paths my own record named; ledger and docstring now say what is true.** No item opened or closed; the open set is unchanged (`Q37:5278` pipe, career-lane `Q53:7303` held for Alexander, `Q64`'s design question Alexander's). Appended at the foot with `docs/queue-index.md` re-rendered in the same commit.
|
||||
|
||||
1. **The red, measured before anything was changed.** At `028e2d9`, `path_claim_check.py --fail-on-missing` → **rc 1**, `1042 distinct paths, 10 missing, 10 new against the baseline`. Seven of the ten were reviewed rows; the three new ones were `docs/bar.md` (1x, first `WORK-QUEUE.md:10362`), `recoveries/foo.md` (1x, same line) and `docs/never-written.md` (1x, `WORK-QUEUE.md:10368`). All three are paths **the tick block directly above** wrote down: two metasyntactic illustrations in the sentence describing the gap, and the probe filename point 4 records planting in a detached worktree. The instrument caught its author's own prose. That is the tool working, not failing.
|
||||
|
||||
2. **Why the sentences were not edited.** The queue is append-only, so a wrong sentence stays; the ledger is the designed place for a stated reading. Each path was checked before a row was written: none is in the tree at HEAD, and `git log --all --diff-filter=A -- <path>` returns **0 commits** for all three. Three rows appended — `PLANTED` for the removed probe, `EXAMPLE` for the two illustrations — and the census now reads **10 entries, 10 matched, 0 new, 0 cleared, 0 dead**.
|
||||
|
||||
3. **A sixth class, because none of the five was true.** `EXAMPLE` is now in `BASELINE_CLASSES`, with the reading written into both the tuple's comment and the ledger header: a metasyntactic illustration quoted as a path in prose about paths, not an assertion that a file exists. A new class is an escape hatch only if it is unearned; this one cannot tolerate a real file claim, because a row is still printed with its class on every run and a path that later appears is reported `CLEARED`.
|
||||
|
||||
4. **Three docstring defects, all of the class this repo grades.** (a) The closed set was printed `(PLANTED, NOT_ADDED, HOST_ROUTE, RENAMED, SHORT_NAME, FOREIGN_TREE)` while the code has never accepted `HOST_ROUTE` — a reader following the docstring would have written a row that makes the tool rc 2; `FOREIGN_TREE` was missing from the prose. (b) "so a reader sees the eight exceptions" was a hardcoded count over a seven-row ledger. (c) "every MISSING path at HEAD is in `tools/path_claim_baseline.tsv`" is a claim about a moving revision and was false at `028e2d9`; it is now anchored to "the revision the ledger was last reviewed against", and the gate's behaviour is stated instead of the invariant.
|
||||
|
||||
5. **Selftest 17 → 19, both new cells for promises nothing exercised.** `c18`: a ledger row naming a class outside the closed set is rc 2 — the docstring promised that exit code and no cell tested it. `c19`: the `EXAMPLE` class is accepted and its row is still printed. The docstring's own cell-count line moved 17 → 19 in the same edit, so `doc_census_check.py` keeps a MATCHES claim instead of turning STALE.
|
||||
|
||||
6. **Verification at this commit.** `--selftest` **19 cells, 19 passed, 0 failed, rc 0**; `--fail-on-missing --baseline` **rc 0, 0 new**; `doc_census_check.py --tools tools/path_claim_check.py --fail` **0 INTERNAL SPLIT, 0 STALE claim(s), 4 claims checked, rc 0**; `tool_map.py --check docs/TOOLS.md` **rc 0**; `verify.py` **5 legs, 4 pass, 1 fault**, with `selftest-sweep` **20 tools, 20 OK, 0 fatal** and `append-audit`, `index-current`, `reply-headings` all passing.
|
||||
|
||||
7. **The one red leg is not this landing's, and was not tolerated.** `checkin` fails on `checkins/2026-10-19-zephyrus.md` (`2ff4812`, 2026-10-19 13:07:13Z) and `checkins/2026-10-19-zephyrus-sovereignty.md` (`a013842`, 2026-10-19 23:44:47Z) — both landed after the ledger's last review (`3d58197`, 2026-10-19 10:00:55Z). Proven pre-existing on a **clean detached worktree of `028e2d9`** (`git status --porcelain` empty; same 2 new faults, rc 1), so nothing here caused it. A two-row tolerance was drafted and then **withdrawn**: turning another lane's red green on my reading alone is a stronger act than the stance already recorded here — the pair is not this lane's to rename. The owner's fix is one edit either way: two rows appended to `tools/checkin_baseline.tsv` with that reading, or a rename by zephyrus. Both files are one handle's 2026-10-19 day in two files, the shape the ledger already tolerates for zephyrus at `2026-10-06-zephyrus-wizards*.md`.
|
||||
|
||||
8. **What it does not claim.** The 720 EXTERNAL paths are counted, never graded: no claim that they exist. `EXAMPLE` and `PLANTED` rows are tolerances with a reading, not proof of absence — both stay printed as MISSING on every run. And the gate is not green: 4 of 5 legs pass, and the fifth is named above.
|
||||
|
||||
— Volt
|
||||
+11
-11
@@ -56,7 +56,7 @@
|
||||
| 46 | Q44 | 6162-6705 | 88496 | opening | The pin class: redirect every constant composed from the live data root, not only `SNAPSHOT_PATH` *(Helm lane; opened 2026-10-12 by the pipe, per Q43's own closing sentence — "extend the redirect … | DONE 2026-10-12 — `recoveries/helm-root-redirect.md` (Merlin, Helm lane); the closure block is at the foot |
|
||||
| 47 | Q48 | 6706-6825 | 15123 | opening | The runtime-resolution redirect: close the class Q45's literals cannot see | DONE 2026-10-13 — `recoveries/helm-runtime-redirect.md` (Merlin, Helm lane), scratch tree |
|
||||
| 48 | Q49 | 6826-7593 | 92050 | opening | The runtime-resolved root's live write path: name it, reproduce it, then close it | open and unclaimed. Opened by the pipe 2026-10-13 |
|
||||
| 49 | Q45 | 7594-10378 | 486124 | opening | §9 follow-on — the home-directory channel *(Helm lane; Merlin)* | OPEN — awaiting Alexander's zoom/whole-shop answer; build is the pipe's. |
|
||||
| 49 | Q45 | 7594-10398 | 491061 | opening | §9 follow-on — the home-directory channel *(Helm lane; Merlin)* | OPEN — awaiting Alexander's zoom/whole-shop answer; build is the pipe's. |
|
||||
|
||||
## Ids with no `## ` heading
|
||||
|
||||
@@ -71,9 +71,9 @@ Opened as records inside another section. `line` is the record's own opening lin
|
||||
| Q50 | 6990 | 6990 | 46 | Q49 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q51 | 7106 | 7106 | 37 | Q49 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q52 | 7167 | 7167 | 90 | Q49 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q53 | 7292 | 7246 | 143 | Q49 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q53 | 7292 | 7246 | 144 | Q49 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q63 | 9918 | 9909 | 17 | Q45 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q64 | 10308 | 10308 | 6 | Q45 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q64 | 10308 | 10308 | 7 | Q45 | BULLET+BOLD | BOLD-LEAD |
|
||||
|
||||
**Not in this document.** Ids the prose corpus names that the queue has never mentioned (`checkins/`, `replies/`, `recoveries/`, `audits/`, `docs/`, the top-level documents; `tools/` excluded). That set moves with the prose, not with the queue, so embedding it here would make `--check` go RED for a reason that has nothing to do with the queue being current. It is reported on demand: `python3 tools/queue_index.py --outside`.
|
||||
|
||||
@@ -218,7 +218,7 @@ The block below is the parse this document renders, byte for byte. `--check` com
|
||||
"form": "BOLD-LEAD",
|
||||
"id": "Q53",
|
||||
"line": 7292,
|
||||
"refs": 143,
|
||||
"refs": 144,
|
||||
"section": "Q49",
|
||||
"shape": "BULLET+BOLD"
|
||||
},
|
||||
@@ -236,7 +236,7 @@ The block below is the parse this document renders, byte for byte. `--check` com
|
||||
"form": "BOLD-LEAD",
|
||||
"id": "Q64",
|
||||
"line": 10308,
|
||||
"refs": 6,
|
||||
"refs": 7,
|
||||
"section": "Q45",
|
||||
"shape": "BULLET+BOLD"
|
||||
}
|
||||
@@ -246,9 +246,9 @@ The block below is the parse this document renders, byte for byte. `--check` com
|
||||
"end_line": 8,
|
||||
"line": 1
|
||||
},
|
||||
"queue_bytes": 1378385,
|
||||
"queue_lines": 10378,
|
||||
"queue_sha256": "c6c026156a649cee87360284f45524d4bf92336a6d62d535875f3ec053035148",
|
||||
"queue_bytes": 1383322,
|
||||
"queue_lines": 10398,
|
||||
"queue_sha256": "83ffe34a6367b7865e3fed7dce0c25fb30a38be2154b3040dd322e1cf5241c21",
|
||||
"sections": [
|
||||
{
|
||||
"bytes": 3139,
|
||||
@@ -827,11 +827,11 @@ The block below is the parse this document renders, byte for byte. `--check` com
|
||||
"title": "The runtime-resolved root's live write path: name it, reproduce it, then close it"
|
||||
},
|
||||
{
|
||||
"bytes": 486124,
|
||||
"end_line": 10378,
|
||||
"bytes": 491061,
|
||||
"end_line": 10398,
|
||||
"id": "Q45",
|
||||
"line": 7594,
|
||||
"lines": 2785,
|
||||
"lines": 2805,
|
||||
"role": "opening",
|
||||
"role_detail": "",
|
||||
"status": "OPEN \u2014 awaiting Alexander's zoom/whole-shop answer; build is the pipe's.",
|
||||
|
||||
@@ -9,7 +9,9 @@
|
||||
# Classes: PLANTED (a file planted in a clone to measure a gate), NOT_ADDED (the
|
||||
# prose states the file was never added on any ref), RENAMED (the artifact exists
|
||||
# under a later name), SHORT_NAME (the prose cites an abbreviated form of a real
|
||||
# artifact), FOREIGN_TREE (a path relative to another project's tree).
|
||||
# artifact), FOREIGN_TREE (a path relative to another project's tree), EXAMPLE (a
|
||||
# metasyntactic illustration quoted as a path -- foo/bar shape -- in prose about
|
||||
# paths, not an assertion that a file exists).
|
||||
career-lane/ats-gate-census-draft.md RENAMED history under that name at f29425a..e1426e9; the artifact at HEAD is career-lane/ats-gate-census.md
|
||||
inbox/pending.json NOT_ADDED the queue states it was never added on any ref: git log --all --diff-filter=A -- inbox/pending.json -> no output
|
||||
recoveries/summary-fidelity-full.md SHORT_NAME the artifact is recoveries/summary-fidelity-full-clauses.md; the queue cites the short form
|
||||
@@ -17,3 +19,6 @@ checkins/2026-10-19-volt-02.md PLANTED planted in a clone of 3890c12 to measure
|
||||
checkins/2026-10-02-volt-b.md PLANTED planted in a clone of e98a34b as the backdated-name example; the citing sentence says so
|
||||
docs/release-engine-spec.md FOREIGN_TREE relative to another project's tree (src/, tests/): neither is tracked here
|
||||
replies/2026-10-19-to-volt-99.md PLANTED planted in a clone of 5defac9 to red the reply leg; the citing sentence says so
|
||||
docs/never-written.md PLANTED planted in a detached worktree of 64dee6b as the red probe and removed after the measurement, so no ref holds it: git log --all --diff-filter=A -> 0 commits; WORK-QUEUE.md:10368 says so
|
||||
docs/bar.md EXAMPLE a metasyntactic illustration in the sentence about the gap, not a file: WORK-QUEUE.md:10362 quotes "the record docs/bar.md" as the shape of a path claim; no ref ever held it
|
||||
recoveries/foo.md EXAMPLE a metasyntactic illustration in the same sentence: WORK-QUEUE.md:10362 quotes "recoveries/foo.md" as the shape of a path claim; no ref ever held it
|
||||
|
Can't render this file because it contains an unexpected character in line 23 and column 120.
|
+35
-11
@@ -18,8 +18,11 @@ WHY THIS EXISTS
|
||||
scratch trees (`after/verify.txt`), host artifacts (`/root/crucible/...`),
|
||||
other repositories, served routes and URLs. Grading those as missing would be
|
||||
hundreds of false defects, so they are COUNTED and never graded. What is left
|
||||
is small enough for a reader: every MISSING path at HEAD is in
|
||||
`tools/path_claim_baseline.tsv` with the class that explains it.
|
||||
is small enough for a reader: every MISSING path at the revision the ledger
|
||||
was last reviewed against is in `tools/path_claim_baseline.tsv` with the class
|
||||
that explains it, and `--fail-on-missing` fails on any the ledger does not
|
||||
name -- so a revision that moves the corpus reds the gate until a reader has
|
||||
looked. The census print is what says which revision that was.
|
||||
|
||||
This docstring deliberately carries no census figures. The first draft did,
|
||||
and the leading-slash fix in the matcher moved every one of them (1,024
|
||||
@@ -50,13 +53,13 @@ A FENCED BLOCK IS QUOTED MATERIAL, NOT THIS DOCUMENT'S PROSE -- the rule
|
||||
|
||||
THE BASELINE, AND WHY THE FIRST CENSUS IS ITS LEDGER
|
||||
`<path>\\t<CLASS>\\t<reason>`, one row per reviewed missing path, class from a
|
||||
closed set (PLANTED, NOT_ADDED, HOST_ROUTE, RENAMED, SHORT_NAME,
|
||||
FOREIGN_TREE). A row is a stated reading, not an exemption: `--fail-on-missing`
|
||||
fails only on a MISSING path the ledger does not name, and every tolerated row
|
||||
is still PRINTED with its class on every run, so a reader sees the eight
|
||||
exceptions rather than trusting that there are none. A ledger row whose path
|
||||
now exists is reported CLEARED, and a row naming a path the census no longer
|
||||
produces is reported as a dead row -- the ledger cannot rot invisibly.
|
||||
closed set (PLANTED, NOT_ADDED, RENAMED, SHORT_NAME, FOREIGN_TREE, EXAMPLE).
|
||||
A row is a stated reading, not an exemption: `--fail-on-missing` fails only on
|
||||
a MISSING path the ledger does not name, and every tolerated row is still
|
||||
PRINTED with its class on every run, so a reader sees the tolerated rows
|
||||
rather than trusting that there are none. A ledger row whose path now exists
|
||||
is reported CLEARED, and a row naming a path the census no longer produces is
|
||||
reported as a dead row -- the ledger cannot rot invisibly.
|
||||
|
||||
EXIT CODES
|
||||
0 the census ran. Without --fail-on-missing a MISSING path is not a fault.
|
||||
@@ -70,7 +73,7 @@ USAGE
|
||||
python3 path_claim_check.py [--repo DIR] [--rev HEAD] [--corpus PATH...]
|
||||
[--json OUT] [--only missing|exists|external|template|all] [--context]
|
||||
[--fail-on-missing] [--baseline PATH]
|
||||
python3 path_claim_check.py --selftest # 17 cells
|
||||
python3 path_claim_check.py --selftest # 19 cells
|
||||
python3 path_claim_check.py --repo . --fail-on-missing \\
|
||||
--baseline tools/path_claim_baseline.tsv
|
||||
"""
|
||||
@@ -102,8 +105,13 @@ STRIP = "`*'\"()[]<>,;:."
|
||||
|
||||
# The closed class set a baseline row may name. Each is a reason a MISSING path
|
||||
# is not a live defect; adding one is a deliberate edit to this tuple.
|
||||
# EXAMPLE was added after the tool's own construction record landed and the next
|
||||
# census found 3 new MISSING paths -- two quoted metasyntactic illustrations
|
||||
# ("recoveries/foo.md", "the record docs/bar.md") and one red-probe filename
|
||||
# that was planted in a detached worktree and never ref'd. None of the other
|
||||
# classes was true of them, and the closed set is the place that says so.
|
||||
BASELINE_CLASSES = ("PLANTED", "NOT_ADDED", "RENAMED", "SHORT_NAME",
|
||||
"FOREIGN_TREE")
|
||||
"FOREIGN_TREE", "EXAMPLE")
|
||||
VERDICTS = ("EXISTS", "MISSING", "EXTERNAL", "TEMPLATE")
|
||||
|
||||
|
||||
@@ -493,6 +501,22 @@ def selftest():
|
||||
cell("c17 a corpus with no markdown is rc 2, never an empty clean census",
|
||||
rc == 2 and "no markdown corpus" in out, "rc=%d %s" % (rc, out[-200:]))
|
||||
|
||||
# --- the ledger's closed set is enforced, not decorative ----------------
|
||||
badcls = os.path.join(td, "badclass.tsv")
|
||||
with open(badcls, "w") as fh:
|
||||
fh.write("docs/absent.md\tMADE_UP\tfixture: a class the tool does not know\n")
|
||||
rc, out = run("--repo", repo, "--fail-on-missing", "--baseline", badcls)
|
||||
cell("c18 a ledger row naming a class outside the closed set is rc 2",
|
||||
rc == 2 and "unknown class" in out and "MADE_UP" in out,
|
||||
"rc=%d %s" % (rc, out[-300:]))
|
||||
excls = os.path.join(td, "example.tsv")
|
||||
with open(excls, "w") as fh:
|
||||
fh.write("docs/absent.md\tEXAMPLE\tfixture: a metasyntactic illustration\n")
|
||||
rc, out = run("--repo", repo, "--fail-on-missing", "--baseline", excls)
|
||||
cell("c19 the EXAMPLE class is accepted and its row still printed",
|
||||
rc == 0 and "tolerated EXAMPLE" in out and "1 matched" in out,
|
||||
"rc=%d %s" % (rc, out[-300:]))
|
||||
|
||||
print("selftest: %d cells, %d passed, %d failed" % (n, n - bad, bad))
|
||||
return 0 if bad == 0 else 1
|
||||
|
||||
|
||||
Reference in new issue
Block a user