Gladex Agent Logs

Agent run logs & app logs · env: prod · LAN-only investor surface

Overview
Run logs1004 files, 53.4 MB
Latest run logrun-20261003-171801-602.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20261003-171801-602.log 115 KB 2026-10-03 15:27:05
run-20261003-163940-601.log 314 KB 2026-10-03 15:07:52
run-20261003-161729-600.log 183 KB 2026-10-03 14:29:32
run-20261003-160722-599.log 153 B 2026-10-03 14:07:22
run-20261003-155714-598.log 153 B 2026-10-03 13:57:14
run-20261003-154706-597.log 153 B 2026-10-03 13:47:07
run-20261003-153658-596.log 153 B 2026-10-03 13:36:59
run-20261003-152649-595.log 190 B 2026-10-03 13:26:51
run-20261003-151642-594.log 153 B 2026-10-03 13:16:42
run-20261003-150634-593.log 153 B 2026-10-03 13:06:34
run-20261003-145626-592.log 190 B 2026-10-03 12:56:27
run-20261003-144617-591.log 153 B 2026-10-03 12:46:18
run-20261003-143610-590.log 153 B 2026-10-03 12:36:10
run-20261003-142602-589.log 153 B 2026-10-03 12:26:02
run-20261003-141553-588.log 153 B 2026-10-03 12:15:54
run-20261003-140545-587.log 153 B 2026-10-03 12:05:46
run-20261003-135545-586.log 153 B 2026-10-03 11:55:45
run-20261003-134536-585.log 190 B 2026-10-03 11:45:37
run-20261003-133528-584.log 153 B 2026-10-03 11:35:29
run-20261003-132520-583.log 153 B 2026-10-03 11:25:21
run-20261003-131511-582.log 153 B 2026-10-03 11:15:12
run-20261003-130504-581.log 153 B 2026-10-03 11:05:04
run-20261003-125456-580.log 153 B 2026-10-03 10:54:56
run-20261003-124448-579.log 153 B 2026-10-03 10:44:48
run-20261003-123440-578.log 153 B 2026-10-03 10:34:41
run-20261003-122432-577.log 153 B 2026-10-03 10:24:33
run-20261003-121424-576.log 153 B 2026-10-03 10:14:25
run-20261003-120416-575.log 153 B 2026-10-03 10:04:17
run-20261003-115409-574.log 153 B 2026-10-03 09:54:09
run-20261003-114401-573.log 153 B 2026-10-03 09:44:01
run-20261003-113353-572.log 190 B 2026-10-03 09:33:53
run-20261003-112345-571.log 153 B 2026-10-03 09:23:46
run-20261003-111337-570.log 153 B 2026-10-03 09:13:38
run-20261003-110329-569.log 153 B 2026-10-03 09:03:30
run-20261003-105321-568.log 153 B 2026-10-03 08:53:22
run-20261003-104313-567.log 153 B 2026-10-03 08:43:14
run-20261003-103306-566.log 153 B 2026-10-03 08:33:06
run-20261003-102258-565.log 153 B 2026-10-03 08:22:58
run-20261003-100417-564.log 163 KB 2026-10-03 08:12:49
run-20261003-091019-563.log 320 KB 2026-10-03 07:54:09
run-20261003-081446-562.log 378 KB 2026-10-03 07:00:09
run-20261003-065714-561.log 346 KB 2026-10-03 06:04:39
run-20261003-053854-560.log 394 KB 2026-10-03 04:47:05
run-20261003-042104-559.log 276 KB 2026-10-03 03:28:47
run-20261003-031958-558.log 246 KB 2026-10-03 02:10:57
run-20261003-024901-557.log 376 KB 2026-10-03 01:09:51
run-20261003-020542-556.log 233 KB 2026-10-03 00:38:54
run-20261003-015534-555.log 153 B 2026-10-02 23:55:35
run-20261003-014525-554.log 153 B 2026-10-02 23:45:26
run-20261003-013518-553.log 153 B 2026-10-02 23:35:18
Tail — run-20261003-171801-602.log (last 200 lines)
artifact of their own convention (queue item (75)). G14 recounts with a
different reader but the *same* one-space rule, so the two agree **by
construction**: an option line written `--env  ENV` (two spaces) drops out of
the probing scope *and* out of the recount, `miss + fmt + port` still closes,
and the flag is never probed while every assertion stays green — a gap no red
anywhere could show. The third reader is independent of the spacing: a
metavar-shaped token (an upper run, `{enum}` or `a|b`) after any run of
whitespace, ending the line or followed by the 2+ space description column —
which is what keeps a boolean's running prose (`--json  JSON output`) out.
Measured over all 19 tools with option lists, its pair set is **identical** to
the probing scope's (58 = 58, empty difference in both directions), and because
a one-space line is visible to both readers whatever its token looks like, a
pair only the third reader holds can only be a line the scope cannot see:
`conv_extra > 0` is reported per tool as `VIOLATION help_convention <tool>`,
with `ERROR convention_no_scope` if the reader ever matched nothing. The
one-sentence style rule this item also offered (option lists put exactly one
space between flag and token) is therefore **enforced rather than written**,
which is the stronger of the two answers.

Since `[0.4.121]` the `--timeout` scope reads **the table's own exit-2 bullet**
instead of any mention of the token anywhere in the block (queue item (71)). The
block reader missed `tls-check`, whose exit-2 bullet says `bad port/timeout/
warn-days/ca-file/domain syntax` — no flag token in that block at all — although
the tool answers **2** for `--timeout 0`; and the obvious widening, *any* bare
$ cd /data/repo && echo "--- C-labels after line 3610 ---"; awk 'NR>3610 && /"C[0-9]+[a-z]/{print NR": "$0}' tests/test_registry_coverage.sh | head; echo "(none above = good)"; echo "--- all \"C<digit> occurrences NOT at assertion call ---"; grep -n '"C[0-9]' tests/test_registry_coverage.sh | grep -vE ':\s*(ok|fail|assert_eq|assert_ge|assert_contains|assert_not_contains|expect|expect_not) "?"?C' | head -20; echo "--- \"negative controls\" repo-wide ---"; grep -rn "negative controls" --include='*.md' --include='*.sh' . | head -20
--- C-labels after line 3610 ---
(none above = good)
--- all "C<digit> occurrences NOT at assertion call ---
1645:  && ok "C1d VIOLATION unregistered brand-new-tool" \
1646:  || fail "C1d VIOLATION unregistered brand-new-tool"
1665:  && ok "C2d VIOLATION unregistered budget-show" \
1666:  || fail "C2d VIOLATION unregistered budget-show"
1678:  && ok "C3d VIOLATION stale_section ghost-tool" \
1679:  || fail "C3d VIOLATION stale_section ghost-tool"
1692:  && ok "C4d VIOLATION stale_section test_renamed_away.sh" \
1693:  || fail "C4d VIOLATION stale_section test_renamed_away.sh"
1748:  && ok "C8d VIOLATION help_failed healthcheck:rc" \
1749:  || fail "C8d VIOLATION help_failed healthcheck:rc"
1767:  && ok "C9d VIOLATION help_failed dns-verify:empty" \
1768:  || fail "C9d VIOLATION help_failed dns-verify:empty"
1829:  && ok "C14e VIOLATION badarg_contract version-check:rc" \
1830:  || fail "C14e VIOLATION badarg_contract version-check:rc"
1849:  && ok "C15a plant: the section still carries its Exit codes heading" \
1850:  || fail "C15a plant: the section still carries its Exit codes heading"
1852:  && fail "C15b plant: its table still lists a code 2 (substitution did not take)" \
1853:  || ok "C15b plant: its table no longer lists a code 2"
1859:  && ok "C15e VIOLATION badarg_undocumented budget-show" \
1860:  || fail "C15e VIOLATION badarg_undocumented budget-show"
--- "negative controls" repo-wide ---
grep: ./agent-logs/identity-mia.md: binary file matches
./CHANGELOG.md:3967:- **Three negative controls**, each required to *break* a comparison (the shape of section 13's mutants): a flipped verdict inside the `--help` copy → caught; a flipped verdict inside the source comment → caught; `+ a package FAIL line` dropped from the header — the exact defect — → caught.
./CHANGELOG.md:4077:- **Five negative controls**, each asserting *first* that its plant changed the source text (so "caught" cannot be true because the substitution matched nothing): two verdict flips in the comment/`--help`, one in the header, and two case deletions (`could not be verified` half-row in `--help`, the whole `could not check` case in the header). All five caught.
./CHANGELOG.md:4105:- **Six negative controls — a verdict flip and a key deletion per copy.** Each plant first asserts it changed the text it came from, so "caught" cannot be true because the substitution matched nothing. The three deletions are caught by the map **shrinking 3 → 2** rather than by an inequality alone: renaming `--help`'s `'cannot verify'` label (its row's only key carrier), rewording the comment's `all four gates pass`, and rewording the header's `everything we could NOT check`.
./CHANGELOG.md:4132:- **New `tests/test_registry_coverage.sh` (67 assertions, suite 57 → 58).** Section **A** runs the checker over the live tree and requires exit 0 with zero violations; **B** cross-checks every count against an *independent recount* of both inputs (tools, sections, tool sections, `--help` probed, `--help` answered, plus two floors), so a checker that silently stopped enumerating cannot pass by agreeing with itself; **C** is 13 negative controls; **D** pins this suite's own `--help`/exit-2 surface — the rule it enforces for everyone else.
./CHANGELOG.md:4166:- **Two new negative controls, one per copy of the claim.** **C14** models a tool with no argument validation at all (exit 0 on nonsense, `--help` still correct) → `badarg_contract version-check:rc`, exactly one violation. **C15** removes `budget-show`'s `` - `2` `` bullet from its table while the tool still exits 2 → `badarg_undocumented budget-show`, exactly one violation, with the tool's own behaviour asserted unchanged first so the plant cannot be hiding behind a second defect.
./CHANGELOG.md:7217:- **Docs moved with the code:** `tools/REGISTRY.md`'s `## test_registry_coverage.sh` section now says **441 assertions** with (125)/C42 in the chain, **C** 41 → **42 negative controls**, a (125) paragraph beside the (124) one in section F and the section's closing summary (392 → 416 → **441**) — the quoted literal and the derived gloss inside that section are untouched, which is what its own `C41`/`C42` verdicts grade.
./tools/REGISTRY.md:1691:  case). **Three negative controls** break a comparison on purpose: a flipped
./tools/REGISTRY.md:1724:  Five negative controls (2 verdict flips, 2 case deletions across copies, each
./tools/REGISTRY.md:1804:  check, and **six negative controls — a verdict flip and a key deletion per copy**;
./agent-logs/identity-sofia.md:20291:#   C  the suite's own negative controls: three mutated copies of the hook, one
./agent-logs/identity-sofia.md:27104:#   C  the suite's own negative controls: three mutated copies of the hook, one
./agent-logs/identity-mia.md:12819:# C — negative controls.
./agent-logs/identity-lena.md:8104:8338312 [0.4.108] queue item (55) — the go-tests contract existed in THREE prose copies and no assertion read ANY of them: the --help verdict block (user), the tool's "Contract now:" comment (maintainer) and this suite's own header (test author), with `grep -rn "package-level FAIL\|Contract now" tests/` returning no match — and the header was the wrong one, asserting exit code 1 ALONE as an error while section 6c of that same suite pins "rc 1 with NO package FAIL line -> cannot verify": new section 11b extracts all three (scoping asserted: exactly one block of each kind), reduces them through one shared rc_class() to 0/1/killed/other and compares an (exit-code class -> verdict) plus (detail -> verdict) map across the three renderings, with the two comment-register copies additionally compared word for word — the comparison that sees a dropped condition; non-vacuity asserted (4 rows and 4 distinct classes per copy, equal_maps refusing two empty extractions, arrow_rows admitting only lines whose right side begins with a verdict word after the first green run read its own note's literal `->` as a fifth row), three negative controls each required to break a comparison, pre-fix replay with the old header swapped in place 87/5 — all five reds the header copy, the other 21 green on the defect — restored md5-identical, header rewritten verbatim from the tool's comment, system-status byte-unchanged, suite 66 -> 92, regression 56 suites / 4899 assertions (pre-commit 4897 passed / 2 failed, both the monitor's A3+A15 on this commit's own dirt); STEP 0 replied first (dev 103 / prod 69, 0 unread both DBs)
./agent-logs/identity-lena.md:8594:8338312 [0.4.108] queue item (55) — the go-tests contract existed in THREE prose copies and no assertion read ANY of them: the --help verdict block (user), the tool's "Contract now:" comment (maintainer) and this suite's own header (test author), with `grep -rn "package-level FAIL\|Contract now" tests/` returning no match — and the header was the wrong one, asserting exit code 1 ALONE as an error while section 6c of that same suite pins "rc 1 with NO package FAIL line -> cannot verify": new section 11b extracts all three (scoping asserted: exactly one block of each kind), reduces them through one shared rc_class() to 0/1/killed/other and compares an (exit-code class -> verdict) plus (detail -> verdict) map across the three renderings, with the two comment-register copies additionally compared word for word — the comparison that sees a dropped condition; non-vacuity asserted (4 rows and 4 distinct classes per copy, equal_maps refusing two empty extractions, arrow_rows admitting only lines whose right side begins with a verdict word after the first green run read its own note's literal `->` as a fifth row), three negative controls each required to break a comparison, pre-fix replay with the old header swapped in place 87/5 — all five reds the header copy, the other 21 green on the defect — restored md5-identical, header rewritten verbatim from the tool's comment, system-status byte-unchanged, suite 66 -> 92, regression 56 suites / 4899 assertions (pre-commit 4897 passed / 2 failed, both the monitor's A3+A15 on this commit's own dirt); STEP 0 replied first (dev 103 / prod 69, 0 unread both DBs)
./agent-logs/identity-lena.md:8918:8338312 [0.4.108] queue item (55) — the go-tests contract existed in THREE prose copies and no assertion read ANY of them: the --help verdict block (user), the tool's "Contract now:" comment (maintainer) and this suite's own header (test author), with `grep -rn "package-level FAIL\|Contract now" tests/` returning no match — and the header was the wrong one, asserting exit code 1 ALONE as an error while section 6c of that same suite pins "rc 1 with NO package FAIL line -> cannot verify": new section 11b extracts all three (scoping asserted: exactly one block of each kind), reduces them through one shared rc_class() to 0/1/killed/other and compares an (exit-code class -> verdict) plus (detail -> verdict) map across the three renderings, with the two comment-register copies additionally compared word for word — the comparison that sees a dropped condition; non-vacuity asserted (4 rows and 4 distinct classes per copy, equal_maps refusing two empty extractions, arrow_rows admitting only lines whose right side begins with a verdict word after the first green run read its own note's literal `->` as a fifth row), three negative controls each required to break a comparison, pre-fix replay with the old header swapped in place 87/5 — all five reds the header copy, the other 21 green on the defect — restored md5-identical, header rewritten verbatim from the tool's comment, system-status byte-unchanged, suite 66 -> 92, regression 56 suites / 4899 assertions (pre-commit 4897 passed / 2 failed, both the monitor's A3+A15 on this commit's own dirt); STEP 0 replied first (dev 103 / prod 69, 0 unread both DBs)
./agent-logs/identity-jonas.md:32752:8338312 [0.4.108] queue item (55) — the go-tests contract existed in THREE prose copies and no assertion read ANY of them: the --help verdict block (user), the tool's "Contract now:" comment (maintainer) and this suite's own header (test author), with `grep -rn "package-level FAIL\|Contract now" tests/` returning no match — and the header was the wrong one, asserting exit code 1 ALONE as an error while section 6c of that same suite pins "rc 1 with NO package FAIL line -> cannot verify": new section 11b extracts all three (scoping asserted: exactly one block of each kind), reduces them through one shared rc_class() to 0/1/killed/other and compares an (exit-code class -> verdict) plus (detail -> verdict) map across the three renderings, with the two comment-register copies additionally compared word for word — the comparison that sees a dropped condition; non-vacuity asserted (4 rows and 4 distinct classes per copy, equal_maps refusing two empty extractions, arrow_rows admitting only lines whose right side begins with a verdict word after the first green run read its own note's literal `->` as a fifth row), three negative controls each required to break a comparison, pre-fix replay with the old header swapped in place 87/5 — all five reds the header copy, the other 21 green on the defect — restored md5-identical, header rewritten verbatim from the tool's comment, system-status byte-unchanged, suite 66 -> 92, regression 56 suites / 4899 assertions (pre-commit 4897 passed / 2 failed, both the monitor's A3+A15 on this commit's own dirt); STEP 0 replied first (dev 103 / prod 69, 0 unread both DBs)
./agent-logs/identity-jonas.md:33123:6048:- **Next-candidate queued, not actioned**: carry items (2), (4)–(8), (14), (15), (17), (18), (20), (22), (23), (25), (28), (32), (36), (39), (42), (44), (47), (48), (52), (53) and (54) from the 06:20Z entry unchanged — item **(55) struck — EXECUTED by `[0.4.108]`** (three prose copies of the go-tests contract, none read by any assertion; section 11b added with two registers and three negative controls, suite **66 → 92**, pre-fix replay **87 / 5** with all five reds the header copy and the other 21 green on the defect, header rewritten verbatim from the tool's own comment). New from this run: **(56)** 11b compares a condition's *wording* only between the two comment-register copies; across registers a rewording that preserves its `rc_class` stays green — worth either a per-class qualifier assertion or a sentence in `REGISTRY.md` declaring `--help`'s condition text a summary rather than a copy, not actioned because it is the same compare-or-declare decision as (54) and this run spent its review on the third copy. **(57)** the shape is not specific to go-tests: `tools/system-status` carries **seven** `--help` verdict blocks (`cloud` L66, `investor-duty` L85, `dns` L100, `go-tests` L174, `go-compile` L181, `promote-gates` L194, `queue-source` L251) and **four** source comments that *claim* a suite pins them (`# Contract (pinned by tests/test_queue_source.sh):` L968, `# Contract now:` L1045, `# Contract (pinned by tests/test_system_status_go_compile.sh):` L1141, `# Contract (pinned by tests/test_system_status_promote_gates.sh):` L1329) — worth measuring per child whether the named suite actually reads that comment (`grep` its text under `tests/`) before extending 11b's extraction, not actioned because 11b had to be proved on one child first.
./agent-logs/identity-jonas.md:40507:- **Two new negative controls, one per copy of the claim.** **C14** models a tool with no argument validation at all (exit 0 on nonsense, `--help` still correct) → `badarg_contract version-check:rc`, exactly one violation. **C15** removes `budget-show`'s `` - `2` `` bullet from its table while the tool still exits 2 → `badarg_undocumented budget-show`, exactly one violation, with the tool's own behaviour asserted unchanged first so the plant cannot be hiding behind a second defect.
./agent-logs/identity-jonas.md:64715:- New suite **`tests/test_table_scroll_320.php` → 80 passed / 0 failed / 0 skipped** (5 sections: static CSS+markup, negative controls, non-vacuity, **real Chrome measurement at 305/320/1200**, 3 mutants). **3/3 mutants caught**: fix removed → 3 red; wrapper kept but `.table-wrap` rule dropped → 1 red; `overflow-wrap` reverted to `break-word` → 1 red. Each restore md5-verified. It **skips (counted, never vacuous)** if Chrome is absent, so `regression-run` stays runnable on a bare box.
./agent-logs/identity-jonas.md:68167:- New suite **`tests/test_table_scroll_320.php` → 80 passed / 0 failed / 0 skipped** (5 sections: static CSS+markup, negative controls, non-vacuity, **real Chrome measurement at 305/320/1200**, 3 mutants). **3/3 mutants caught**: fix removed → 3 red; wrapper kept but `.table-wrap` rule dropped → 1 red; `overflow-wrap` reverted to `break-word` → 1 red. Each restore md5-verified. It **skips (counted, never vacuous)** if Chrome is absent, so `regression-run` stays runnable on a bare box.
> build · mimo-v2.6-flash-free
Starting a baseline run of the suite in the background while I design the change.
$ cd /data/repo && (bash tests/test_registry_coverage.sh > /tmp/opencode/baseline-q126.log 2>&1; echo "RC=$?" >> /tmp/opencode/baseline-q126.log)
Command moved to the background (shell ID: sh_102600686001XGKVg3z5MiwyzS).
Output is streaming to: /root/.local/share/opencode/shell/fa3e85b2145a60c127b5c9261e76a7ba6d520299/sh_102600686001XGKVg3z5MiwyzS.out
$ cd /data/repo && awk '/^## test_registry_coverage.sh$/{f=1} f{print NR": "$0} f&&/^## /&&NR>1&&!/test_registry_coverage.sh/{c++; if(c>1)exit}' tools/REGISTRY.md | grep -nE "441|42 negative|control|Live|assertion" | tail -40
906:4271:   control **K18** deletes the backgrounded-wait rule, i.e. it replays the
928:4293:   at 143 assertions, measured 2026-10-01, child 75**: the **pre-(84)
931:4296:   (107)'s two reader-dependent assertions, and both are this reader's own
938:4303: - **Five rows re-measured and two controls added since `[0.4.156]` (queue item
939:4304:   (104)) — all seventeen run at 138 assertions, measured 2026-10-01, child
957:4322:   by `[0.4.159]`, whose row above re-measures this control at **11 red** with
959:4324:   new controls: **K16** puts both live readers back on the pre-(104) class →
964:4329: - **Two rows re-measured and two controls added since `[0.4.152]` (queue item
965:4330:   (101)) — all fifteen run at 116 assertions, measured 2026-10-01**: the
968:4333:   is its second instance, which the control predicted before it was run; the
974:4339:   than tidied away. The two new controls: **K14** puts both live readers back
978:4343: - **Four new controls from `[0.4.145]`, and all thirteen re-run at 50
979:4344:   assertions the same day, untouched copy 50/0**: the **pre-(86) counting
991:4356:   question that reader asks. The 42-assertion figure above is left as
993:4358: - **Two new controls from `[0.4.144]`, both measured the same day**: the
1012:4377:   again while re-running the controls in `[0.4.127]`** — `: wait "$pid"` read
1045:4410: **75 → 83**, controls **17 → 18**, runtime ≈ 4 m 11 s → ≈ 4 m 34 s, suite
1046:4411: count unchanged at **76**.
1047:4412: 
1048:4413: **Since `[0.4.159]`** — queue item **(107)** took `&` back out of the hand-back
1049:4414: class, because that half turned out to be wrong rather than merely unproven.
1050:4415: Measured first, on a single `&` (`wait&echo done`): handing it back cut the
1051:4416: tail to an empty list, a bare wait then covered all three children, and the
1052:4417: file read as *waited* while bash actually returned in **0.006 s with all three
1053:4418: children alive** — the wait itself had been backgrounded, so the file waits for
1054:4419: nothing. The tail now keeps the single `&`, and nothing it should not lose
1057:4422: the hand-back was a no-op there, not "saved by the cut". Three assertions carry
1061:4426: job), child still alive. **C4** carries the lesson: no assertion description
1066:4431: C 3 → 4**, `K 68` unchanged), the child suite **70 → 75**, controls unchanged
1076:4441: (**A35**/**A37**) — and three cover what it must NOT buy: bash runs a
1081:4446: matched the pre-(104) class and read as waited). Two controls take the two
1089:4454: **56 → 70**, controls **15 → 17**, runtime ≈ 3 m 6 s → ≈ 4 m 6 s, suite count
1098:4463: the same file as a process). Two controls take that premise away (**K14**,
1099:4464: **K15**), and `[0.4.153]` corrected the control machinery the first full run
1106:4471: 60**, `C 3` unchanged), the child suite **50 → 56**, controls **13 → 15**,
1110:4475: controls above an in-file home: section **K** runs them, so the table is read
1114:4479: **73**, and no figure in this section's control table changed: every one of
1124:4489: **B14–B17**; assertions **42 → 50** (`A 26 → 30`, `B 13 → 17`).
1129:4494: **B11–B13**; assertions **28 → 33**.
1131:4496: **Since `[0.4.126]`** — registers with the `- Live:` suite figure **60 → 61**,
> build · mimo-v2.6-flash-free
$ cd /data/repo && s=$(grep -n '^## test_registry_coverage.sh$' tools/REGISTRY.md | cut -d: -f1); e=$(awk -v s="$s" 'NR>s && /^## /{print NR; exit}' tools/REGISTRY.md); echo "section $s..$e"; sed -n "${s},${e}p" tools/REGISTRY.md | grep -nE "441|42 |negative control|assertion|Live:|- Live" 
section 3366..4055
18:of them on a `- Live:` bullet that still said **40** while `regression-run
61:and the flag is never probed while every assertion stays green — a gap no red
104:`miss + fmt + port == scope_total` still closes: **every assertion in the file
252:`run_check()` is reached by the live assertion *and* by every negative control
254:to that branch), so a control going red proves the live assertion *can* go red
266:count is **exactly 1** — that second assertion is what caught the checker's own
273:a red that was the assertion's wiring, not the tree's.
276:- `0` - all assertions pass
277:- `1` - one or more assertions failed
286:- `bash tests/test_registry_coverage.sh` → **441 assertions** (since (119),
294:  added **C42**'s 25 — 416 → **441** on 2026-10-03; it was **298** from
297:  7m24s at 441 and 9m11s at 416 on 2026-10-03 — the count is not what moves
304:  sections, `--help` probed, `--help` answered, two floors), **C** 42 negative
361:  assertion in this file before this item existed. `C32a`–`C32d` prove the
386:  `- Live` suite-count line — yields **one** `figure_undated`, never two; a
401:  and none dated, and the literal `^- Live` matched none. Controls **C34**
402:  (an indented claim loses its date, with an assertion that the old spelling
477:  all 24 of C41's assertions (A reddens for the copies it holds, B stays silent
505:  assertion, because the defect sits in the registry every sandbox is copied
517:  assertion red for the reason C16's was (the defect sits in the tree each
557:  and **G19**, the only two new assertions to go red, plus eighteen controls'
569:  `VIOLATION help_convention` emitted**, i.e. the class's own assertions called
605:  reader without any assertion resting on them — the split that keeps the
635:assertions — the `DECLARED_PAIRS` table, the sixth partition bucket, **G35**–
641:numeric `- Live:` bullet — the `fig_scope` union, its dedupe and the `live`
685:(heading to end of file) satisfied all 24 of its assertions; **C42** parks the
688:replays the mutant over C41's three plants for their 2 / 0 / 2 (416 → **441**)
> build · mimo-v2.6-flash-free
$ cd /data/repo && sed -n '3645,3672p' tools/REGISTRY.md; echo "..........."; sed -n '4035,4056p' tools/REGISTRY.md
**Test hooks (env)**: `REGISTRY_COVERAGE_TOOLS_DIR`, `REGISTRY_COVERAGE_REGISTRY`,
`REGISTRY_COVERAGE_TESTS_DIR` — point the checker at a mutated copy of the tree;
`REGISTRY_COVERAGE_CHILD` is internal (the re-exec branch). Defaults resolve from
the suite's own path, so a copy run from `/tmp` still reads the real tree.

**Tests**:
- `bash tests/test_registry_coverage.sh` → **441 assertions** (since (119),
  `[0.4.176]`, which added control **C33**'s 18, and (120), `[0.4.177]`,
  which added **C34**'s 12 and **C35**'s 10, and (121), `[0.4.178]`, which
  added **C36**'s 19 — 320 → 339 on 2026-10-03 — and (122), `[0.4.179]`,
  which added **C37**'s 19, **C38**'s 10 and **C39**'s 4 plus **C36t** —
  339 → 373 on 2026-10-03 — and (123), `[0.4.180]`, which added **C40**'s
  19 — 373 → 392 on 2026-10-03 — and (124), `[0.4.181]`, which added
  **C41**'s 24 — 392 → 416 on 2026-10-03 — and (125), `[0.4.182]`, which
  added **C42**'s 25 — 416 → **441** on 2026-10-03; it was **298** from
  `[0.4.176]` until that day and **280** from
  `[0.4.150]`), ~450s (measured
  7m24s at 441 and 9m11s at 416 on 2026-10-03 — the count is not what moves
  the clock, the box's load is — against 7m39s at 392, 6m10s at 373, 5m24s at 339, 4m11s at 320 and 3m53s at its previous 264 and 3m38s at 248), no
  EXTERNAL network — the one probe that opens a socket is `smtp-relay-probe
  --expect-open … 127.0.0.1:25`, which dials the container's own Postfix over
  loopback and never the tool's default set (that set carries a VPS address):
  **A** the live tree is fully covered (exit 0, zero violations, no `ERROR`),
  **B** seven cross-checks against an independent recount (tools, sections, tool
  sections, `--help` probed, `--help` answered, two floors), **C** 42 negative
  controls — unregistered tool, deleted section, stale tool heading, stale suite
  heading, one missing field each of Usage/Purpose/exit codes, `--help` exiting
  non-zero, `--help` silent, missing registry, missing tools dir, empty tools
...........
the block that must stay silent), each red one asserted beside the pre-(123)
subject the plant still satisfies (373 → **392**), and queue item **(124)**
`[0.4.181]` anchored the **registry** subject the same way — the
`## <suite name>` block bounded by the next `## ` heading, read once and
shared by the quote and the gloss, instead of a file-wide `grep -qF` — because
*"the copy in this section"* was prose describing *"a copy somewhere in the
document"*, so a correct copy parked in another section answered for a stale
one here; **C41** plants stale **inside** with a correct pair outside (2
violations), the reverse that must stay **silent** (exit 0, 0), and the
section heading **deleted** while both copies stay in the file (2 violations,
`test_sections` 12 → 11), each red one asserted beside the pre-(124)
whole-document predicate the plant still satisfies (392 → 416), and queue
item **(125)** `[0.4.182]` pinned that boundary's **upper** edge, which C41's
two earlier plants could not see: its correct pair sat in a section *before*
this one, so a reader that dropped the `exit` at the next `## ` heading
(heading to end of file) satisfied all 24 of its assertions; **C42** parks the
correct pair in the section **after** it beside a stale pair inside — bounded
subject 2 violations, the to-EOF mutant 0 on the same planted file — and
replays the mutant over C41's three plants for their 2 / 0 / 2 (416 → **441**)

## test_detached_children.sh
> build · mimo-v2.6-flash-free

Select another run log from the list above. Only files matching run-YYYYMMDD-HHMMSS-N.log are readable.

App log tail — prod-8001.log (last 60 lines)
[Sat Oct  3 17:20:47 2026] 127.0.0.1:45336 Accepted
[Sat Oct  3 17:20:47 2026] 127.0.0.1:45336 Closing
[Sat Oct  3 17:25:33 2026] 127.0.0.1:59566 Accepted
[Sat Oct  3 17:25:34 2026] 127.0.0.1:59566 Closing
[Sat Oct  3 17:25:34 2026] 127.0.0.1:59572 Accepted
[Sat Oct  3 17:25:34 2026] 127.0.0.1:59572 Closing
[Sat Oct  3 17:25:36 2026] 127.0.0.1:47518 Accepted
[Sat Oct  3 17:25:36 2026] 127.0.0.1:47518 Closing
[Sat Oct  3 17:25:36 2026] 127.0.0.1:47530 Accepted
[Sat Oct  3 17:25:36 2026] 127.0.0.1:47530 Closing
[Sat Oct  3 17:25:39 2026] 127.0.0.1:47546 Accepted
[Sat Oct  3 17:25:39 2026] 127.0.0.1:47546 Closing
[Sat Oct  3 17:25:42 2026] 127.0.0.1:47554 Accepted
[Sat Oct  3 17:25:42 2026] 127.0.0.1:47554 Closing
[Sat Oct  3 17:25:50 2026] 127.0.0.1:39758 Accepted
[Sat Oct  3 17:25:50 2026] 127.0.0.1:39758 Closing
[Sat Oct  3 17:25:50 2026] 127.0.0.1:39774 Accepted
[Sat Oct  3 17:25:50 2026] 127.0.0.1:39774 Closing
[Sat Oct  3 17:26:01 2026] 127.0.0.1:56666 Accepted
[Sat Oct  3 17:26:01 2026] 127.0.0.1:56666 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56672 Accepted
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56672 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56680 Accepted
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56680 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56696 Accepted
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56696 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56706 Accepted
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56706 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56712 Accepted
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56712 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56716 Accepted
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56716 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56726 Accepted
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56726 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56730 Accepted
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56730 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56734 Accepted
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56734 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56744 Accepted
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56744 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56754 Accepted
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56754 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56756 Accepted
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56756 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56768 Accepted
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56768 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56776 Accepted
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56776 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56786 Accepted
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56786 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56792 Accepted
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56792 Closing
[Sat Oct  3 17:26:02 2026] 127.0.0.1:56806 Accepted
[Sat Oct  3 17:26:03 2026] 127.0.0.1:56806 Closing
[Sat Oct  3 17:26:03 2026] 127.0.0.1:56822 Accepted
[Sat Oct  3 17:26:03 2026] 127.0.0.1:56822 Closing
[Sat Oct  3 17:26:11 2026] 127.0.0.1:47660 Accepted
[Sat Oct  3 17:26:11 2026] 127.0.0.1:47660 Closing
[Sat Oct  3 17:28:52 2026] 127.0.0.1:58456 Accepted

Generated 2026-10-03 15:28:52 UTC · Gladex.de