diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index fecd47e..4462262 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -5095,6 +5095,41 @@ independent copies of the original digest. admission path, so the limit is not cosmetic: the guard must be treated as unproven until the resolution check lands. No probe should be run again against any subject whose default destination is not sandboxed. +**PR #74 lands the #73 contract, and the disk is now blocking the forge's own CI. 2026-10-12 08:31Z (control plane).** +Read from source and from the forge API, not from the PR's narrative. + +- **The fix is option 1 of the recorded call, verified in the source at head `5c759078c4a8`.** `src/analysis.js:45-48` + now throws `invalidFields` for a **non-blank** out-of-range value *before* the `:49-56` blank abstention, and the + abstention itself is preserved — `bristolType === null || color === null` still returns `needs_user_input` / + `unusable_visual_fields`. So `blank-plus-out-of-range` fails closed while `glare` (`null`/`null`) still abstains, + which is exactly what comment 17247 asked for; the comment at `:36-41` now states the rule and cites `#73`. Corpus + at head declares **8** cases (`cases[]` dicts with `id`/`caseClass`/`file`/`bytes`), 7 at base `a1777a72e80e`. + The manifest's confidence change (`out-of-range-fields` 1.4 → 0.9) and the byte/sha verification are the monitor's + readings, **not re-derived here** — I stopped after the source check, which settles the contract. +- **The blocker is disk, and it is now stopping CI: `/` is 101 MB free / 100%** (inodes 8%, so inode pressure is not + it). `act_runner` aborted in "Set up Node.js" with `no space left on device`, and the required check on #74 reads + **`failure`** — `Quality gates / quality (pull_request)`, "Failing after 14s", 4 status entries with 1 failing. No + PR can be gated until space is freed; two ENOSPC job failures today, none on Oct 8–11. Largest trees on this host: + `/root/sovereign-music-daily` **39G** (which holds the live 12G `cpu-render.swap` — never reclaim), + `/root/.hermes` **24G**, `/var/lib/docker` 1.7G, `/var/lib/act_runner` 603M. `disk_space_watch.py` exists with **no + cron job referencing it**, so nothing is watching this. The reclaim is Alexander's one word; nothing here is mine + to delete. +- **PR #74's review state.** Open, **mergeable: true**, 0 reviews, 0 assignees. #72 merged with none of either, which + is how #73 escaped unreviewed — so this is the same gap, one PR later. The acting account is the PR author, so no + comment or assignment will be made from this credential (it would read as self-review); the correction route is + this queue plus Alexander. +- **Three defects in the committed verification record** (monitor's findings, none changing the pass/fail): the + "30/30 pass" row reproduces as **21/21** — 30 counted those three files *plus* `analysis.test.js`; the "RED first" + line is a TDD narrative not reproducible from this commit (the reproducible RED is the analysis row); and + `artifacts/vision-refusal-blank-plus-out-of-range-mobile.png` is **byte-identical** to the pre-existing + `vision-refusal-fail-closed-mobile.png` (both `e45724d1…`), so it cannot discriminate the fix. Fix the count and + either drop or differentiate the screenshot. Not re-derived here. +- **Review route.** Praetorian cannot take this: its provider route is dead (the 403 wall) and its own forge gate is + blocked by this same disk. So the independent review for #74 is Alexander's call — fix its provider, or authorize + the `hou3` fallback. Amendment to the 02:48Z hand-off: the brief's target is now gate `74aba348…`, and the question + that matters most is no longer "does the gate refuse an ungated collector" but **"does the gate write the live + snapshot through its own admission path"** — the question my 07:18Z incident answered the hard way. + --- ## Q38 — The behavioural destination guard *(Helm lane; opened 2026-10-12 by Merlin — Q36's candidate 2, on Alexander's direction to continue the Helm lane; **direction unrecorded in this repo — Testimony only**)*