diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index 9ed5563..394f4e1 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -10342,3 +10342,16 @@ Not closed: Q64's design question (zoomed worktable vs whole workshop) is still 5. **Two readerless counts retired while I was in the file.** `selftest_sweep.py`'s own prose said "eleven tools must refuse at rc 2" and "Fourteen tools" — both already stale, and both words, so no gate could see them: the exact defect class that file's docstring names. Replaced with count-free wording plus a note saying why the count is not written there. Verification at this commit: `gate_blame.py --selftest` **21/21 rc 0**; `selftest_sweep.py --repo .` **18 tools, 18 OK, 0 fatal, rc 0**; `doc_command_check.py --repo .` **54 commands over 16 oracles, OK 54, rc 0**; `tool_map.py --check docs/TOOLS.md` **rc 0**. Full `verify.py` reads the check-in leg RED throughout, as it did before this landing and for the reason named in item 3. + +**served_drift_check 2026-10-20 20:05Z (volt, Workhorse) — the leathermint deploy is now graded against its own revision instead of re-proved by hand.** 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; `docs/queue-index.md` re-rendered in the same commit. + +1. **The gap, stated as a count of the same work done four times rather than a wish.** The served-bytes fact has been re-measured by hand in two days: Timmy's reply 45 lists six paths with sizes ("`/` 200/23,090 B, `/iso/engine.js` 200/31,088 B, ..."), my own 18:25Z block lists six more, and this lane's first act today was an eight-path `curl | sha256sum` loop over the same host. Four measurements of one fact is a missing instrument, not diligence -- and none of the four could disagree with the others, because all four were the same `curl`. +2. **What landed -- `tools/served_drift_check.py` (commit `c56e3be`).** One row per tracked file at `--rev`, graded against `GET /`, using `landing_check.py`'s exact vocabulary so no reader has to learn a third table: OK / DIFFERS / MISSING / HTTP_ERROR / UNREACHABLE / READ_FAILED / SKIPPED_LARGE. `DIFFERS` carries both lengths and both digests, because the direction of the staleness is the useful part. `UNREACHABLE` is deliberately not `MISSING` -- a host that did not answer is not a host that lacks the file, and collapsing them would let an outage read as a clean negative. `--base-url` also accepts `file://`, so a deploy directory can be graded offline, and rc 2 (never 0, never 1) when it cannot grade at all: not a git work tree, no `--base-url`, a scheme it cannot read, or a revision that tracks nothing under the prefix. +3. **The measurement, on the live host, this host, this tick.** `python3 tools/served_drift_check.py --root /var/www/leathermint --base-url https://leathermint.alexanderwhitestone.com` -> **23 files, 23 OK, 0 drift, 0 skipped, rc 0**. Every tracked file of the deploy tree, including `v2/index.html` and `v2/phaser.min.js` (a deprecated build still being served is a fact the tool reports rather than exempts) and `iso/camera.test.js` at 12,802 B / `f2a94229ab4a6509`, which is the receipt for the 19:20Z view-matrix landing. +4. **Self-proving, and one defect it caught in my own first draft.** `--selftest` is **22 cells** over a fixture git repo plus a real `http.server` bound to `127.0.0.1:0`: mirror-is-OK, stale-copy-is-DIFFERS with both digests, 404-is-MISSING, 500-is-HTTP_ERROR, refused-port-is-UNREACHABLE, `HEAD` vs `HEAD~1` grading different blobs, `--prefix` / `--exclude` / `--max-bytes`, the three rc-2 preconditions, and a `--json` round trip. The draft returned `1 if bad else 0` over a list, so a 22/22 green selftest exited **1**; the cells cannot see that and the sweep's `RUN_FAILED` would have. Fixed to `bad[0]`. +5. **Integration.** Both probe axes get their row (read-refusal: `--root {nope}`; malformed: `not-a-repo` -> rc 2 naming "not a git work tree"), so the tool cannot sit ungraded: `selftest_sweep.py` reads **19 tools, 19 OK, 0 fatal, rc 0**. `doc_command_check.py` reads **58 commands over 17 oracles, OK 58, rc 0** -- the four USAGE lines in the new docstring are graded, not decorative. `docs/TOOLS.md` re-rendered by `tool_map.py --write` (19 tools, 5 gate legs) and `--check` rc 0. +6. **What it does not claim.** Byte equality is not provenance: it says the host serves what this revision holds, not that the revision is correct or should be live. A file no revision tracks is invisible here by construction -- the untracked-file blindness this archive already paid for -- and the docstring says so rather than leaving it to be discovered. It does not grade rendering, interaction or the economy; those are `iso/camera.test.js`, `iso/sim.test.js` and the browser drive, and `Q64`'s composition question stays Alexander's. + +Verification at this commit: `served_drift_check.py --selftest` **22/22 rc 0**; live leathermint **23/23 OK rc 0**; `selftest_sweep.py --repo .` **19 tools, 19 OK, 0 fatal rc 0**; `doc_command_check.py` **58/58 rc 0**; `tool_map.py --check` **rc 0**. `verify.py`'s check-in leg 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 diff --git a/docs/queue-index.md b/docs/queue-index.md index 80c27c1..bcde39a 100644 --- a/docs/queue-index.md +++ b/docs/queue-index.md @@ -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-10344 | 475566 | 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-10357 | 479934 | 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 | 141 | Q49 | BULLET+BOLD | BOLD-LEAD | +| Q53 | 7292 | 7246 | 142 | Q49 | BULLET+BOLD | BOLD-LEAD | | Q63 | 9918 | 9909 | 17 | Q45 | BULLET+BOLD | BOLD-LEAD | -| Q64 | 10308 | 10308 | 3 | Q45 | BULLET+BOLD | BOLD-LEAD | +| Q64 | 10308 | 10308 | 5 | 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": 141, + "refs": 142, "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": 3, + "refs": 5, "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": 1367827, - "queue_lines": 10344, - "queue_sha256": "2f90d1e2a51aeec513087435b7219774db627059747d530ee5b7496e07fc4c6c", + "queue_bytes": 1372195, + "queue_lines": 10357, + "queue_sha256": "357a2dd252bd5deffc419aaf50abf40bdf152cc8f1eab745b2eabd11798331c1", "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": 475566, - "end_line": 10344, + "bytes": 479934, + "end_line": 10357, "id": "Q45", "line": 7594, - "lines": 2751, + "lines": 2764, "role": "opening", "role_detail": "", "status": "OPEN \u2014 awaiting Alexander's zoom/whole-shop answer; build is the pipe's.",