zeph: Q117 -- KNOWN_PROBE table + cell 11, probe value is not a recovery

This commit is contained in:
zephyrus-sparkborn committed 2026-10-29 13:10:59 +00:00
1 parent ebba640548
commit 4955f2cbae
4 files changed
+123 -28

No files matched your search

+2
View File
@@ -13428,3 +13428,5 @@ CHECK: cd /root/troupe-standup && python3 wizard-work/spark/test_line_counter.py
m1’s nine: `test_no_pinned_root_paths_in_either_file`, `test_snippet_bare_interpreter_reds_on_tools`, `test_snippet_full_stub_is_green`, `test_snippet_honours_hermes_home_env`, `test_snippet_missing_scratch_dir_reds_and_names_path`, `test_snippet_noncallable_tool_is_unavailable`, `test_snippet_one_tool_missing_reds_and_names_it`, `test_snippet_require_absent_tool_reds`, `test_snippet_usage_error_is_2`. m2’s six: `test_no_pinned_root_paths_in_either_file`, `test_shell_complete_tree_is_green`, `test_shell_lone_copy_reds_on_its_sibling`, `test_shell_missing_profile_home_reds_and_names_path`, `test_shell_same_verdict_from_outside_copy`, `test_shell_usage_error_is_2`. m3’s three are the tool-missing, non-callable and `--require` cells — the literal-lie restored in one line. m4’s one is the lone-copy cell: with that leg gone a script shipped without its snippet reads PASS again.
**Not claimed:** that `hermes_tools` is unimportable inside a real Hermes session — it is unimportable from a plain `python3` on this host, measured, and neither verifier was run from inside the agent runtime; that `HERMES_HOME` always names a profile home — that is this install’s shape (`/root/.hermes/profiles/volt`), and the derivation falls back to the parent when the home does not sit under `profiles`, but a root literally named `profiles` would be mis-derived (unmeasured); that skills/plugins should be required — they were advisory before and stay advisory; that `wizard-work/spark/CHECK` now collects the new cells — it does not, it still grades artifacts by absolute path and runs no `test_*.py`, and that blindness is the Q109/Q120 family this item does not close; that either old file had no other defect — only the readings in (1) were measured; that Q107, Q120 or Q125 are reopened — different artifacts, untouched; that the stub-module method proves anything about the real package beyond importability and attribute presence — it proves the check *consults* the package, which is what the item asked. Scratch trees for (5): `/root/.hermes/profiles/volt/cache/scratch/q109-2620292/{control,m1,m2,m3,m4}`, one `.out` beside each. Files edited for this item: `wizard-work/spark/snippet.py`, `wizard-work/spark/verify_hermes_setup.sh`, `wizard-work/spark/test_env_verifiers.py` (new), `wizard-work/spark/CHECK-env-verifiers` (new), `WORK-QUEUE.md` (this record, appended), `docs/queue-index.md` (re-rendered with the committed `tools/queue_index.py --write` in this tree). Nothing from `inbox/` is quoted and no other lane’s artifact was edited. **Report:** `/root/.hermes/wizard-outputs/volt/2026-10-29-q109.md`.
**Q117 — DONE (zeph, 2026-10-29; zeph lane by authorship; measured at `ebba640`, this record and `docs/queue-index.md` land in the commit above it).** The `KNOWN_PROBE` table now sits beside `KNOWN_FIXTURE` in `wizard-work/zeph/q60_enforce.py`, the probe value built by concatenation so no literal for it exists in the source (`grep -c "beae0b1f-9f2c"` over the file returns 0); the recovery leg skips probe values in both branches (general longer-string look and the exhausted-stem full-value look), so a stem whose only in-tree longer string is a probe value reads `UNRECOVERED-JUSTIFIED` with the value still in the tree. Cell 9 (Q96 exhausted-stem flip) is reworked to a non-probe synthetic value under the stem, because the probe-C value no longer counts as a recovery by design; new cell 11 `probe-value-not-a-recovery` owns the probe case: a tree holding the truncated stem plus the probe value reads `UNRECOVERED-JUSTIFIED` with the gate green, and with the table cleared the SAME tree flips to `RECOVERED-IN-TREE` at its site, table restored afterwards, so the cell is not vacuous. Evidence, all this host: `--selftest` 11 cells passed, 0 failed, rc 0 (10 at the Q121 landing); standalone tree both readings quoted in the check-in (with table `UNRECOVERED-JUSTIFIED`, without table `RECOVERED-IN-TREE beae0b1f-9f2c-4d1e-8a77-3c5b6e9d0a11 at n.md`); full tree at `ebba640` with these edits uncommitted: `OCC=132 DISTINCT=24 FILES=40`, `VERDICT=PASS`, rc 0, all three `beae0b1f` stems `UNRECOVERED-JUSTIFIED`, zero FAIL lines; `wizard-work/zeph/test_q60_absence.py` 5 tests OK after its count pin moved 10 to 11 (docstring line and assertion only, the pin's purpose unchanged); `tools/check_lint.py --check` SOUND on the module. Numbering note: Q117 was filed asking for "a new cell (10)", but Q121 landed first and took that number, so the probe cell is cell 11 and the done-means are unchanged. **Not claimed:** that the Q99 record was edited (it stands as dated fact; the table declares the provenance instead); that any other stem is affected (only `beae0b1f` carries an invented full value); that the narrowed Q96 stem rule is wrong (it is not -- this is provenance, one layer above it). Close call Timmy's.
+44 -17
View File
@@ -4,7 +4,7 @@
**What this is.** One row per item of `WORK-QUEUE.md`: its line span, its size, and the first `Status:` marker in its body verbatim. An item is a `## ` section, or a record that opens an id with no heading of its own, or a later block-initial record for an id that is already an item (`kind` and `role` say which, and each item's block runs to the line before the next item opens). 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. 97 sections carry 86 ids because 11 ids own a second, continuation section; 36 further ids are opened by a record and own no heading at all, and they have rows and extents here -- 90 record blocks in all, 54 of them a later closure or correction for an id already opened. The same **36 ids** are listed again in the table below, which carries what a bounds row cannot -- the form that opened each one and how often the file names it: grepping `^## Q41` finds nothing while Q41 is a live item the file names 29 times.
**What it exposes.** The queue is two-tier. 97 sections carry 86 ids because 11 ids own a second, continuation section; 36 further ids are opened by a record and own no heading at all, and they have rows and extents here -- 91 record blocks in all, 55 of them a later closure or correction for an id already opened. The same **36 ids** are listed again in the table below, which carries what a bounds row cannot -- the form that opened each one and how often the file names it: grepping `^## Q41` finds nothing while Q41 is a live item the file names 29 times.
| # | id | kind | lines | bytes | role | title | first `Status:` |
|---|---|---|---|---|---|---|---|
@@ -194,7 +194,8 @@
| 184 | Q125 | record | 13381-13399 | 6812 | cont: DONE | **Q125 — DONE (volt, 2026-10-29, at `46b6282`; the repair landed under the spark lane's banner at `a979e63` and `46b6282`, and this record is the closure the queue was missing — the item still read … | -- |
| 185 | Q120 | record | 13400-13401 | 3580 | cont: DONE | **Q120 — DONE (volt, 2026-10-29; this record and `docs/queue-index.md` land in the commit above it; spark lane by authorship, unclaimed and taken).** The health check now fails. Before: `python3 … | -- |
| 186 | Q121 | record | 13402-13403 | 5321 | cont: DONE | **Q121 — DONE (volt, 2026-10-29; zeph lane by authorship, unclaimed and taken; this record and `docs/queue-index.md` land in the commit above the head `5623170` the item was measured against). The … | -- |
| 187 | Q109 | record | 13404-13430 | 7752 | cont: DONE | **Q109 — DONE (volt, 2026-10-29; spark lane by authorship, unclaimed and taken). The tool check measures the import now, and the shell script grades the tree it is handed. Both named readings … | -- |
| 187 | Q109 | record | 13404-13431 | 7753 | cont: DONE | **Q109 — DONE (volt, 2026-10-29; spark lane by authorship, unclaimed and taken). The tool check measures the import now, and the shell script grades the tree it is handed. Both named readings … | -- |
| 188 | Q117 | record | 13432-13432 | 2222 | cont: DONE | **Q117 — DONE (zeph, 2026-10-29; zeph lane by authorship; measured at `ebba640`, this record and `docs/queue-index.md` land in the commit above it).** The `KNOWN_PROBE` table now sits beside … | -- |
## Ids with no `## ` heading
@@ -212,7 +213,7 @@ Opened as records inside another section. `line` is the record's own opening lin
| Q53 | 7292 | 7246 | 169 | Q52 | BULLET+BOLD | BOLD-LEAD |
| Q64 | 10308 | 10308 | 31 | Q63 | BULLET+BOLD | BOLD-LEAD |
| Q65 | 11055 | 11047 | 49 | Q63 | BULLET+BOLD | BOLD-LEAD |
| Q99 | 12749 | 9909 | 32 | Q98 | BULLET+BOLD | BOLD-LEAD |
| Q99 | 12749 | 9909 | 33 | Q98 | BULLET+BOLD | BOLD-LEAD |
| Q100 | 12882 | 12882 | 29 | Q99 | BULLET+BOLD | BOLD-LEAD |
| Q101 | 12909 | 12909 | 18 | Q100 | BULLET+BOLD | BOLD-LEAD |
| Q102 | 12985 | 12985 | 9 | Q100 | BULLET+BOLD | BOLD-LEAD |
@@ -230,11 +231,11 @@ Opened as records inside another section. `line` is the record's own opening lin
| Q114 | 13280 | 13280 | 5 | Q113 | BULLET+BOLD | BOLD-LEAD |
| Q115 | 13282 | 13282 | 1 | Q114 | BULLET+BOLD | BOLD-LEAD |
| Q116 | 13286 | 13286 | 4 | Q105 | BULLET+BOLD | BOLD-LEAD |
| Q117 | 13290 | 13288 | 3 | Q96 | BULLET+BOLD | BOLD-LEAD |
| Q117 | 13290 | 13288 | 5 | Q96 | BULLET+BOLD | BOLD-LEAD |
| Q118 | 13300 | 13300 | 2 | Q111 | BULLET+BOLD | BOLD-LEAD |
| Q119 | 13305 | 13305 | 2 | Q118 | BULLET+BOLD | BOLD-LEAD |
| Q120 | 13308 | 13308 | 9 | Q119 | BULLET+BOLD | BOLD-LEAD |
| Q121 | 13342 | 13342 | 2 | Q107 | BULLET+BOLD | BOLD-LEAD |
| Q121 | 13342 | 13342 | 4 | Q107 | BULLET+BOLD | BOLD-LEAD |
| Q122 | 13344 | 13344 | 4 | Q121 | BULLET+BOLD | BOLD-LEAD |
| Q123 | 13346 | 13346 | 4 | Q122 | BULLET+BOLD | BOLD-LEAD |
| Q124 | 13350 | 13350 | 1 | Q95 | BULLET+BOLD | BOLD-LEAD |
@@ -1407,17 +1408,30 @@ The block below is the parse this document renders, byte for byte. `--check` com
"title": "**Q121 \u2014 DONE (volt, 2026-10-29; zeph lane by authorship, unclaimed and taken; this record and `docs/queue-index.md` land in the commit above the head `5623170` the item was measured against). The \u2026"
},
{
"bytes": 7752,
"end_line": 13430,
"bytes": 7753,
"end_line": 13431,
"id": "Q109",
"kind": "record",
"line": 13404,
"lines": 27,
"lines": 28,
"role": "continuation",
"role_detail": "DONE",
"status": null,
"status_line": null,
"title": "**Q109 \u2014 DONE (volt, 2026-10-29; spark lane by authorship, unclaimed and taken). The tool check measures the import now, and the shell script grades the tree it is handed. Both named readings \u2026"
},
{
"bytes": 2222,
"end_line": 13432,
"id": "Q117",
"kind": "record",
"line": 13432,
"lines": 1,
"role": "continuation",
"role_detail": "DONE",
"status": null,
"status_line": null,
"title": "**Q117 \u2014 DONE (zeph, 2026-10-29; zeph lane by authorship; measured at `ebba640`, this record and `docs/queue-index.md` land in the commit above it).** The `KNOWN_PROBE` table now sits beside \u2026"
}
],
"ids_multi_section": {
@@ -3974,17 +3988,30 @@ The block below is the parse this document renders, byte for byte. `--check` com
"title": "**Q121 \u2014 DONE (volt, 2026-10-29; zeph lane by authorship, unclaimed and taken; this record and `docs/queue-index.md` land in the commit above the head `5623170` the item was measured against). The \u2026"
},
{
"bytes": 7752,
"end_line": 13430,
"bytes": 7753,
"end_line": 13431,
"id": "Q109",
"kind": "record",
"line": 13404,
"lines": 27,
"lines": 28,
"role": "continuation",
"role_detail": "DONE",
"status": null,
"status_line": null,
"title": "**Q109 \u2014 DONE (volt, 2026-10-29; spark lane by authorship, unclaimed and taken). The tool check measures the import now, and the shell script grades the tree it is handed. Both named readings \u2026"
},
{
"bytes": 2222,
"end_line": 13432,
"id": "Q117",
"kind": "record",
"line": 13432,
"lines": 1,
"role": "continuation",
"role_detail": "DONE",
"status": null,
"status_line": null,
"title": "**Q117 \u2014 DONE (zeph, 2026-10-29; zeph lane by authorship; measured at `ebba640`, this record and `docs/queue-index.md` land in the commit above it).** The `KNOWN_PROBE` table now sits beside \u2026"
}
],
"nested": [
@@ -4083,7 +4110,7 @@ The block below is the parse this document renders, byte for byte. `--check` com
"form": "BOLD-LEAD",
"id": "Q99",
"line": 12749,
"refs": 32,
"refs": 33,
"section": "Q98",
"shape": "BULLET+BOLD"
},
@@ -4245,7 +4272,7 @@ The block below is the parse this document renders, byte for byte. `--check` com
"form": "BOLD-LEAD",
"id": "Q117",
"line": 13290,
"refs": 3,
"refs": 5,
"section": "Q96",
"shape": "BULLET+BOLD"
},
@@ -4281,7 +4308,7 @@ The block below is the parse this document renders, byte for byte. `--check` com
"form": "BOLD-LEAD",
"id": "Q121",
"line": 13342,
"refs": 2,
"refs": 4,
"section": "Q107",
"shape": "BULLET+BOLD"
},
@@ -4318,9 +4345,9 @@ The block below is the parse this document renders, byte for byte. `--check` com
"end_line": 8,
"line": 1
},
"queue_bytes": 2093408,
"queue_lines": 13430,
"queue_sha256": "bc4a5fbac8d035fa2845e50f002a8b712d4f0d5d3d25a4b6aeea0efb5c9c969c",
"queue_bytes": 2095631,
"queue_lines": 13432,
"queue_sha256": "cc261e2bd90f1c26f67d31204a6c50643ffe3606eaba2b60a9213c535be972e3",
"sections": [
{
"bytes": 3139,
+73 -9
View File
@@ -53,7 +53,22 @@ never as a joined string (cell 8, the absence cell, Q96; per-entry form
per Q121) -- a full value under the exhausted beae0b1f stem reports
RECOVERED (cell 9, Q96), and a two-entry table with one entry's literal
inserted names exactly that entry (cell 10, the Q121 cell: the joined form
named nothing once the table held two values).
named nothing once the table held two values) -- and a record-quoted
probe value under that stem does NOT report RECOVERED (cell 11, Q117).
Provenance rule (Q117, reply 146 section 4 / interview section 3):
a full value invented in one of our own replies is never an archive
recovery, however many bytes of it sit in the tree. It is implemented
as data, not site heuristics: a KNOWN_PROBE table beside
KNOWN_FIXTURE. Probe values are skipped by the recovery leg exactly
like the placeholder and the fixture, so a stem whose only in-tree
longer string is a probe value reads UNRECOVERED-JUSTIFIED with the
value still in the tree. The Q99 record that quotes the probe value
is NOT edited: the table declares its provenance, and the record
stands as dated fact. Cell numbering note: Q117 was filed asking for
"a new cell (10)", but Q121 landed first and took that number, so
the probe cell is cell 11; the done-means (table suppresses, flip-back
proves it) are unchanged.
Correction, reply 130 probe D / interview 117 section 1.4: the
2026-10-27 check-in credited cell 7 with proving that no UUID-shaped
@@ -130,6 +145,18 @@ KNOWN_FIXTURE = {
KNOWN_UNRECOVERED = {"beae0b1f"}
PLACEHOLDER = "beae0b1f-0000-0000-0000-000000000000"
# Probe values invented in our own investigation (Q117): Timmy's probe-C
# value, quoted in full by his own Q99 record (WORK-QUEUE.md) to
# demonstrate the over-wide stem rule. It is the ONLY full value in the
# tree under this stem that is not the placeholder, and it is not an
# archive recovery: the record created the value that would satisfy the
# recovery leg. Built by concatenation, like the fixture, so no literal
# for it exists in this source; the recovery leg skips it, and cell 11
# proves the table is what suppresses it. The Q99 record is not edited.
KNOWN_PROBE = {
"beae0b1f": "beae0b1f-" "9f2c-4d1e-8a77-3c5b6e9d0a11",
}
def list_files(tree):
"""Tracked files if tree is a git checkout, else every file under it."""
@@ -195,10 +222,12 @@ def run_check(tree, excludes):
for rel, text in contents.items():
for m in pat.finditer(text):
cand = m.group(0)
# The placeholder and the test fixture are not
# recoveries: skip both, or the recovery line would
# name the fixture value as a recovery.
if cand != PLACEHOLDER and cand not in KNOWN_FIXTURE.values():
# The placeholder, the test fixture and any probe
# value are not recoveries: skip all three, or the
# recovery line would name one of them as a recovery.
if (cand != PLACEHOLDER
and cand not in KNOWN_FIXTURE.values()
and cand not in KNOWN_PROBE.values()):
longer = (cand, rel)
break
if longer:
@@ -207,11 +236,13 @@ def run_check(tree, excludes):
# Q96 narrowing: a truncated token under an exhausted stem
# skips the longer-string look, but a full value that arrives
# under that stem is a recovery, not an exhaustion. The
# placeholder (and the fixture, by symmetry) never counts.
# placeholder (and the fixture, by symmetry) never counts;
# since Q117 neither does a record-quoted probe value.
for rel, text in contents.items():
for val in FULL_RE.findall(text):
if (val[:8] == stem8 and val != PLACEHOLDER
and val not in KNOWN_FIXTURE.values()):
and val not in KNOWN_FIXTURE.values()
and val not in KNOWN_PROBE.values()):
longer = (val, rel)
break
if longer:
@@ -336,9 +367,12 @@ def selftest():
# Cell 9 (Q96 exhausted-stem flip): a full value arriving under
# the exhausted beae0b1f stem reports RECOVERED with its site.
# Built by concatenation, as in cell 4, so no second UUID-shaped
# literal enters this source; the value is Timmy's probe-C value.
# literal enters this source. Since Q117 this must be a NON-probe
# value: Timmy's probe-C value no longer counts as a recovery
# (cell 11 owns that case), so the flip is demonstrated with a
# synthetic value that appears in no table.
with open(os.path.join(d, "g.md"), "w") as fh:
fh.write("beae0b1f-" "9f2c-4d1e-8a77-3c5b6e9d0a11\n")
fh.write("beae0b1f-" "1111-2222-3333-444444444444\n")
lines, _ = run_check(d, ["report.md"])
assert any(l.startswith("TOKEN beae0b1f: RECOVERED-IN-TREE")
and l.endswith("at g.md") for l in lines), \
@@ -367,6 +401,36 @@ def selftest():
assert fixture_literals_in_source(both, two_entry) == want_both, \
"both-inserted scan did not name both stems"
passed.append("absence-scan-per-entry")
# Cell 11 (Q117): a record-quoted probe value under the exhausted
# stem does NOT report RECOVERED. The tree holds the truncated
# stem plus Timmy's probe-C value (built by concatenation, as in
# cell 4); with KNOWN_PROBE in place the stem must read
# UNRECOVERED-JUSTIFIED and the gate must stay green. Then the
# flip-back mutant: with the probe value removed from the table
# the SAME tree must read RECOVERED-IN-TREE, proving the table
# is what suppresses it -- otherwise this cell would be vacuous
# (a tree with no recovery at all reads UNRECOVERED either way).
probe_val = KNOWN_PROBE["beae0b1f"]
with open(os.path.join(d, "h.md"), "w") as fh:
fh.write("beae0b1f-\u2026 and probe %s\n" % probe_val)
lines, failed = run_check(d, ["report.md"])
assert any(l.startswith("TOKEN beae0b1f: UNRECOVERED-JUSTIFIED")
for l in lines), "probe tree did not read UNRECOVERED-JUSTIFIED: %s" % lines
assert not any(l.startswith("TOKEN beae0b1f: RECOVERED")
for l in lines), "probe value reported as recovery"
assert not failed, "probe tree failed the gate"
saved_probe = dict(KNOWN_PROBE)
try:
KNOWN_PROBE.clear()
lines, _ = run_check(d, ["report.md"])
finally:
KNOWN_PROBE.update(saved_probe)
assert any(l.startswith("TOKEN beae0b1f: RECOVERED-IN-TREE")
and l.endswith("at h.md") for l in lines), \
"flip-back mutant did not recover without the table: %s" % lines
assert KNOWN_PROBE == saved_probe, "probe table not restored after mutant"
os.remove(os.path.join(d, "h.md"))
passed.append("probe-value-not-a-recovery")
# Cell 7 (the sixth cell of reply 113, renumbered by cell 6): run the
# check over the checker's own directory and assert rc 0. This is
# the leg that was missing: five cells graded fixture trees, none
+4 -2
View File
@@ -9,7 +9,9 @@ the module's own selftest cannot write: a module cannot put a second entry in
its own table at run time without shipping one.
Cells:
1. control the shipped module's selftest is green and reports 10 cells.
1. control the shipped module's selftest is green and reports 11 cells.
(10 at Q121 landing; 11 after Q117 added the probe cell.
The count pin moves with the cell count by design.)
2. two-entry the queue's mutant (second KNOWN_FIXTURE entry plus that
entry's full literal in the source) reds NAMING the stem.
3. join-legacy the pre-repair algorithm restored inside the cell reds --
@@ -94,7 +96,7 @@ class Q121Cells(unittest.TestCase):
def test_1_control_is_green(self):
rc, out, err = run_selftest(MODULE)
self.assertEqual(rc, 0, "shipped selftest not green: %s" % err[-300:])
self.assertIn("SELFTEST: 10 cells passed, 0 failed", out)
self.assertIn("SELFTEST: 11 cells passed, 0 failed", out)
self.assertIn("SELFTEST PASS absence-scan-per-entry", out)
def test_2_two_entry_mutant_reds_naming_the_stem(self):