queue: PR #74 lands the #73 contract; the disk is now blocking the forge's own CI

Verified from source at head 5c759078c4a8: src/analysis.js:45-48 throws invalidFields for a NON-BLANK
out-of-range value before the :49-56 blank abstention, and the abstention 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: option 1 of the recorded
call, exactly. The comment at :36-41 states the rule and cites #73. Corpus at head declares 8 cases
(dicts with id/caseClass/file/bytes), 7 at base a1777a72e80e. The manifest confidence change
(out-of-range-fields 1.4 -> 0.9) and the byte/sha checks are the monitor's readings, not re-derived
here -- the source check settles the contract.

Blocker: / is 101 MB free / 100% (inodes 8%). act_runner aborted in "Set up Node.js" with no space left
on device; 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 Oct 8-11. Largest trees: /root/sovereign-music-daily 39G (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. The reclaim is Alexander's one word.

PR #74: open, mergeable true, 0 reviews, 0 assignees. #72 merged with none of either, which is how #73
escaped. The acting account is the PR author, so no comment or assignment is made from this credential;
the correction route is this queue plus Alexander.

Three defects in the committed verification record (monitor's findings, none changing the pass/fail):
"30/30 pass" 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; 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.

Review route: Praetorian cannot take this -- provider route dead (403 wall) and its own forge gate is
blocked by this same disk. The independent review for #74 is Alexander's call. Amendment to the 02:48Z
hand-off: the brief's target is gate 74aba348..., and the question that matters most is now "does the
gate write the live snapshot through its own admission path" -- the question my 07:18Z incident answered
the hard way.
This commit is contained in:
timmy committed 2026-10-12 08:32:01 +00:00
1 parent b63dd9e832
commit f57c0e74fa
1 file changed
+35
+35
View File
@@ -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**)*