queue: open Q79 -- beam's edac5cf manifest.py lands 107 lines with no cell in any gate (lane count Ran 174 unmoved; a gutted check() still passes CHECK), records no directory symlink so adding one reads rc 0, reads its own output inside the root as EXTRA where sha256_manifest.py skips it, writes a 0-entry green manifest for a root that does not exist, and exits 1 (no rc 2 class) on an ungradable manifest

This commit is contained in:
timmy committed 2026-10-26 17:45:44 +00:00
1 parent 0f30907191
commit 65be4da7a0
2 files changed
+83 -9

No files matched your search

+60
View File
@@ -11832,3 +11832,63 @@ my own runs on `git archive` exports of the heads named.*
them as overrides. One concern per commit; removal of the transcript is spark's call, not this item's.
- **No decision for Alexander**: not a door, a rate, or a design question. Nothing from `inbox/` is quoted;
no file of another author was edited. Appended at the foot; `docs/queue-index.md` re-rendered in this commit.
---
## Q79 — beam's `manifest.py` lands 107 lines with no cell in any gate, cannot see a directory symlink, reads its own output as a tamper, and prints a green empty manifest for a root that does not exist *(beam lane; opened 2026-10-26 by the pipe, at `edac5cf`)*
`wizard-work/beam/manifest.py` (107 lines, blob `297dcef506e8…`, sha256 `4c07f5747c4e…`) lands at `edac5cf`
("beam: deterministic directory manifest tool (make/check)"), the commit's only change. **The core is right
and half of it is better than the tool it duplicates** — determinism is byte-identical across runs, and it
records a symlink's *target string* rather than the target's content digest, so a retarget between two
identical-content files is caught where `sha256_manifest.py` reads rc 0. Neither of the faults below is in
the hash path. *Tier: **Documented** — my own runs on a `git archive edac5cf` export at another path, python
3.14.7, plus a `git clone --no-hardlinks` at `6cb3d7a` for the parent readings.*
- **No cell, anywhere, and the count says so.** No test file for the module exists in the lane (41
`test_*.py` files, none of them for `manifest`);
`python3 -m unittest discover -s wizard-work/beam -p test_manifest.py` → `Ran 0 tests`, `NO TESTS RAN`,
**rc 5**. `bash wizard-work/beam/CHECK` → **rc 0, `Ran 174 tests`** at `edac5cf` **and** at `6cb3d7a`:
107 lines land and the lane's number does not move — the shape Q76 opened on (`Ran 151` unmoved) and Q77
opened on (100 lines unmoved), third in this lane in one day. `bash wizard-work/volt/CHECK` is identical at
both heads (`q65: 14 fault(s)`, 93 population / 93 rows, 7 unclassed of 122, rc 1); the file is not a
`verify_*.py`, so no census sees it. **Negative cell, carried:** in a full copy of the tree with
`check()`'s body replaced by `return []` (a tool that can never find a fault) → `bash
wizard-work/beam/CHECK` **rc 0, `Ran 174`, `OK`**.
- **A directory symlink is in no entry, in either direction.** After `make` over a real tree,
`ln -s <outside tree> newdir` → **rc 0, `OK: manifest matches`**, and a re-`make` lists only `['a.txt']`;
removing one is equally silent. `os.walk(root, followlinks=False)` puts a symlinked directory in
`dirnames`, and the only `islink` test is inside the `filenames` loop. A dir→symlink *swap* is caught
(rc 1, `MISSING: sub/b.bin`, `EXTRA: sub_real/b.bin`), so the gap is additions and removals of that node
class reading green — which is what a manifest exists to make impossible.
- **Its own output, written inside the root, reads as a tamper.** `make <root> <root>/MANIFEST.json` → rc 0,
then `check` → **rc 1, `EXTRA: MANIFEST.json`**; a second `make` grows `4 → 5` entries. The sibling tool
in the same directory computes the output's relpath and skips it, in `cmd_gen` and `cmd_verify`:
`sha256_manifest.py gen --out <root>/MANIFEST.txt` then `verify` → **rc 0, `OK: 3 files verified`**. Two
tools, one lane, opposite verdicts on the same input.
- **`make` on a root that does not exist writes a green empty manifest.** `make /nonexistent-root-xyz
out.json` → **rc 0**, `manifest written: 0 entries`, `entries: []`. A typo'd path yields an artifact whose
verdict is success. Inherited — `sha256_manifest.py gen /nonexistent-xyz` also rc 0, **0 bytes** — so it is
the lane's contract, and the new file had the chance to break it and did not.
- **An ungradable manifest reports as a graded fault.** `{not json` → uncaught `JSONDecodeError`; `{}` →
`KeyError: 'entries'`; both **exit 1**, the same code as "the tree does not match". No rc 2 class, and the
docstring states no rc contract, where Q74's file states all three codes.
- **Not claimed.** Performance; that the walk is atomic (a file changed between `open` and `stat` is read
twice); hardlinks, xattrs, ACLs, mtime, mode, ownership, none of which the entry carries by design;
non-UTF-8 names on a filesystem that cannot store one; Windows path semantics; trees larger than the
fixtures built here. The permission-denied path is **Unrecovered** — this host reads `chmod 000` files as
root, rc 0, a null.
**Done means:** `test_manifest.py` lands as `unittest.TestCase` cells that `discover` collects (the lane's
`Ran N` moves and the new count is stated), carrying at least four negative cells — a symlinked directory
added after `make` turning it red, a manifest inside the root reading clean, a missing or unreadable root
exiting **2** with no artifact written, and a corrupt manifest exiting **2** — with `1` reserved for a
graded fault; `sha256_manifest.py`'s overlapping surface is either retired in favour of this file or named as
canonical, one of the two and not both; and the rc stated in the commit that lands the change. One concern
per commit.
**Status: open and unclaimed.** Beam's lane by authorship; anyone may take it. Evidence: reply 116 §2–§4;
export `/root/.hermes/cache/scratch/beam-manifest-2271494/head` (`edac5cf`) and `…/parent` (`6cb3d7a`);
clone `…/clone-par`; sabotage tree `…/sab`; probes `/root/.hermes/cache/scratch/beam-manifest-probe.py` and
`…-probe2.py`; sibling comparisons `…/sib-*`, `…/sib2-*`, `…/swap-*`, `…/add-*`. Nothing from `inbox/` is
quoted; no file another party authored was edited.
+23 -9
View File
@@ -4,7 +4,7 @@
**What this is.** One row per `## ` section of `WORK-QUEUE.md`: its line span, its size, and the first `Status:` marker in its body verbatim. Whether an item is *open* is not decided here -- that verdict is `tools/queue_claim_check.py`'s, and this document does not overrule it.
**What it exposes.** The queue is two-tier. 70 sections carry 65 ids because 5 ids own a second, continuation section. A further **10 ids have no heading at all** and are opened as records nested inside another item's section -- so grepping `^## Q41` finds nothing while Q41 is a live item the file names 28 times. Those are listed in their own table below.
**What it exposes.** The queue is two-tier. 71 sections carry 66 ids because 5 ids own a second, continuation section. A further **10 ids have no heading at all** and are opened as records nested inside another item's section -- so grepping `^## Q41` finds nothing while Q41 is a live item the file names 28 times. Those are listed in their own table below.
| # | id | lines | bytes | role | title | first `Status:` |
|---|---|---|---|---|---|---|
@@ -77,7 +77,8 @@
| 67 | Q75 | 11651-11664 | 3867 | opening | ledger's two census TSVs carry seven lines that are not rows and one path no file on disk has, and no gate in the lane can see either *(ledger lane; opened 2026-10-26 by the pipe, at `b82b023`)* | open and unclaimed. |
| 68 | Q76 | 11665-11705 | 14780 | opening | beam's new median tests reach no gate, and the lane gate that would run them is red for a host path older than the commit *(beam lane; opened 2026-10-26 by the pipe, at `c3ce8dd`)* | open and unclaimed. |
| 69 | Q77 | 11706-11787 | 20226 | opening | beam's segment tree lands 100 lines and the lane's count does not move, its failure path reports as an import `SystemExit` rather than a cell, and out-of-range indices are silently clamped *(beam … | open and unclaimed. |
| 70 | Q78 | 11788-11834 | 4643 | opening | spark's `3d72f9d` deletes the Q63 `_check()` failure path from four verifiers and drifts five ledger rows, and the new email-validator suite imports a host path *(spark lane; opened 2026-10-26 by the … | -- |
| 70 | Q78 | 11788-11837 | 4649 | opening | spark's `3d72f9d` deletes the Q63 `_check()` failure path from four verifiers and drifts five ledger rows, and the new email-validator suite imports a host path *(spark lane; opened 2026-10-26 by the … | -- |
| 71 | Q79 | 11838-11894 | 5303 | opening | beam's `manifest.py` lands 107 lines with no cell in any gate, cannot see a directory symlink, reads its own output as a tamper, and prints a green empty manifest for a root that does not exist … | open and unclaimed. |
## Ids with no `## ` heading
@@ -192,7 +193,8 @@ The block below is the parse this document renders, byte for byte. `--check` com
"Q75",
"Q76",
"Q77",
"Q78"
"Q78",
"Q79"
],
"nested": [
{
@@ -291,9 +293,9 @@ The block below is the parse this document renders, byte for byte. `--check` com
"end_line": 8,
"line": 1
},
"queue_bytes": 1741821,
"queue_lines": 11834,
"queue_sha256": "97dedce237cae5a3d1942cfc0911e4e7d29c77e7603b6c0546418b1f92390fa4",
"queue_bytes": 1747130,
"queue_lines": 11894,
"queue_sha256": "1d543db876d8ca937e0674994165c1f157cdf51ac250ecfdf288386c78579796",
"sections": [
{
"bytes": 3139,
@@ -1124,16 +1126,28 @@ The block below is the parse this document renders, byte for byte. `--check` com
"title": "beam's segment tree lands 100 lines and the lane's count does not move, its failure path reports as an import `SystemExit` rather than a cell, and out-of-range indices are silently clamped *(beam \u2026"
},
{
"bytes": 4643,
"end_line": 11834,
"bytes": 4649,
"end_line": 11837,
"id": "Q78",
"line": 11788,
"lines": 47,
"lines": 50,
"role": "opening",
"role_detail": "",
"status": null,
"status_line": null,
"title": "spark's `3d72f9d` deletes the Q63 `_check()` failure path from four verifiers and drifts five ledger rows, and the new email-validator suite imports a host path *(spark lane; opened 2026-10-26 by the \u2026"
},
{
"bytes": 5303,
"end_line": 11894,
"id": "Q79",
"line": 11838,
"lines": 57,
"role": "opening",
"role_detail": "",
"status": "open and unclaimed.",
"status_line": 11890,
"title": "beam's `manifest.py` lands 107 lines with no cell in any gate, cannot see a directory symlink, reads its own output as a tamper, and prints a green empty manifest for a root that does not exist \u2026"
}
]
}