Gladex Agent Logs
Agent run logs & app logs · env: prod · LAN-only investor surface
Overview
| Run logs | 775 files, 36.1 MB |
| Latest run log | run-20260930-051434-373.log |
| Log directory | /data/agent-logs |
| App log directory | /opt/startup/prod/logs |
Run logs (newest first, last 50)
| File | Size | Modified (UTC) |
|---|---|---|
| run-20260930-051434-373.log | 300 KB | 2026-09-30 04:53:27 |
| run-20260930-040846-372.log | 234 KB | 2026-09-30 03:04:34 |
| run-20260930-035225-371.log | 111 KB | 2026-09-30 01:58:46 |
| run-20260930-020735-370.log | 429 KB | 2026-09-30 01:42:25 |
| run-20260930-015734-369.log | 153 B | 2026-09-29 23:57:35 |
| run-20260930-014733-368.log | 153 B | 2026-09-29 23:47:34 |
| run-20260930-013732-367.log | 153 B | 2026-09-29 23:37:33 |
| run-20260930-012732-366.log | 153 B | 2026-09-29 23:27:32 |
| run-20260930-011731-365.log | 153 B | 2026-09-29 23:17:32 |
| run-20260930-010730-364.log | 153 B | 2026-09-29 23:07:31 |
| run-20260930-005729-363.log | 153 B | 2026-09-29 22:57:30 |
| run-20260930-004729-362.log | 153 B | 2026-09-29 22:47:29 |
| run-20260930-003728-361.log | 153 B | 2026-09-29 22:37:29 |
| run-20260930-002727-360.log | 153 B | 2026-09-29 22:27:28 |
| run-20260930-001726-359.log | 153 B | 2026-09-29 22:17:27 |
| run-20260930-000726-358.log | 153 B | 2026-09-29 22:07:26 |
| run-20260929-235725-357.log | 153 B | 2026-09-29 21:57:26 |
| run-20260929-234724-356.log | 153 B | 2026-09-29 21:47:25 |
| run-20260929-233724-355.log | 153 B | 2026-09-29 21:37:24 |
| run-20260929-232723-354.log | 153 B | 2026-09-29 21:27:24 |
| run-20260929-231722-353.log | 153 B | 2026-09-29 21:17:23 |
| run-20260929-230721-352.log | 153 B | 2026-09-29 21:07:22 |
| run-20260929-224605-351.log | 171 KB | 2026-09-29 20:57:21 |
| run-20260929-201447-350.log | 508 KB | 2026-09-29 20:36:05 |
| run-20260929-192011-349.log | 227 KB | 2026-09-29 18:04:47 |
| run-20260929-184400-348.log | 464 KB | 2026-09-29 17:10:11 |
| run-20260929-175208-347.log | 226 KB | 2026-09-29 16:34:00 |
| run-20260929-171135-346.log | 238 KB | 2026-09-29 15:42:08 |
| run-20260929-162028-345.log | 263 KB | 2026-09-29 15:01:35 |
| run-20260929-161028-344.log | 153 B | 2026-09-29 14:10:28 |
| run-20260929-160027-343.log | 190 B | 2026-09-29 14:00:27 |
| run-20260929-155026-342.log | 190 B | 2026-09-29 13:50:27 |
| run-20260929-154025-341.log | 153 B | 2026-09-29 13:40:26 |
| run-20260929-153025-340.log | 153 B | 2026-09-29 13:30:25 |
| run-20260929-152024-339.log | 153 B | 2026-09-29 13:20:25 |
| run-20260929-151023-338.log | 153 B | 2026-09-29 13:10:24 |
| run-20260929-150021-337.log | 153 B | 2026-09-29 13:00:23 |
| run-20260929-145020-336.log | 153 B | 2026-09-29 12:50:21 |
| run-20260929-144019-335.log | 153 B | 2026-09-29 12:40:20 |
| run-20260929-143018-334.log | 153 B | 2026-09-29 12:30:19 |
| run-20260929-142017-333.log | 153 B | 2026-09-29 12:20:18 |
| run-20260929-141017-332.log | 153 B | 2026-09-29 12:10:17 |
| run-20260929-140016-331.log | 153 B | 2026-09-29 12:00:17 |
| run-20260929-135015-330.log | 153 B | 2026-09-29 11:50:16 |
| run-20260929-134014-329.log | 153 B | 2026-09-29 11:40:15 |
| run-20260929-133014-328.log | 153 B | 2026-09-29 11:30:14 |
| run-20260929-132013-327.log | 153 B | 2026-09-29 11:20:14 |
| run-20260929-131012-326.log | 153 B | 2026-09-29 11:10:13 |
| run-20260929-121024-325.log | 296 KB | 2026-09-29 11:00:12 |
| run-20260929-110953-324.log | 242 KB | 2026-09-29 10:00:24 |
Tail — run-20260930-051434-373.log (last 200 lines)
1682:assert_eq "C28g scope unchanged: still the 20 tools that print an option list (pdns-api.py out)" \
1684:assert_eq "C28h and exactly one of them lost the promise - syn_ok is one below the scope" \
=== the assertion context:
1672-rc28m=$(timeout 5 "$D/tools/verify-landing" --env >/dev/null 2>&1; echo $?)
1673-assert_eq "C28b plant: and the tool is CORRECT - a missing value still exits 2, so (72) has nothing to find" 2 "$rc28m"
1674-rc28f=$(timeout 5 "$D/tools/verify-landing" --regcov-not-a-real-flag >/dev/null 2>&1; echo $?)
1675-assert_eq "C28c plant: and an unknown flag still exits 2, so E has nothing to find" 2 "$rc28f"
1676-run_child "$D"
1677-assert_eq "C28d a usage row that names no flag -> exit 1" 1 "$RC"
1678-has_v synopsis_flags verify-landing \
1679- && ok "C28e VIOLATION synopsis_flags verify-landing" \
1680- || fail "C28e VIOLATION synopsis_flags verify-landing"
1681-assert_eq "C28f exactly one violation - the plant, and nothing else" 1 "$(sget violations)"
1682:assert_eq "C28g scope unchanged: still the 20 tools that print an option list (pdns-api.py out)" \
1683- 20 "$(sget syn_n)"
1684-assert_eq "C28h and exactly one of them lost the promise - syn_ok is one below the scope" \
1685- "$(( $(sget syn_n) - 1 ))" "$(sget syn_ok)"
1686-
> build · mimo-v2.6-flash-free
[0m$ [0mcd /data/repo && grep -rn 'C28g\|syn_n' tests/*.sh | grep -v test_registry_coverage | head; echo "=== REGISTRY claims for this suite:"; grep -n '213\|test_registry_coverage' tools/REGISTRY.md | head -8; echo "=== other plants that assert syn_n:"; grep -n 'sget syn_n' tests/test_registry_coverage.sh
=== REGISTRY claims for this suite:
915:reader: `tests/test_registry_coverage.sh` **G20–G23**, control **C28**.
1025:merely written — `tests/test_registry_coverage.sh` section **G20–G23**
1059: probed by `tests/test_registry_coverage.sh` section G
1139:**Status**: Built ✅ 2026-09-29 (queue item **(82)**; the root-filesystem watchdog). Registers with the `- Live:` suite figure **61 → 62**, which is what turns `tests/test_registry_coverage.sh` section F red until that line is refreshed in the same commit that adds the suite.
2234: `tests/test_registry_coverage.sh` section G since `[0.4.118]`
2704:- Pre-fix replay: the **then-`HEAD` suite against the then-`HEAD` tool** → **88 passed / 28 failed** (including `L: 395b9b5 … (want rc=1 got=0)`) for the Go gate of `[0.4.3x]`; for the changelog gate the *new* suite against the pre-fix tool (md5 `3a4e09176e24ca3414366952467d4944`, log `/tmp/opencode/changelog-gate/pre-fix.log`, suite md5 `9e352394d02096183adef92d55fc5a73`) → **125 passed / 22 failed**: the exact key-set pin plus every O1–O7 finding red, and M7/M8/M9 unplantable (0 matching lines) — while the six guard-style assertions inside O (absent file adds no failure; fixed commit → 0) already passed, which is what identifies them as guards rather than findings. For `[0.4.56]` the new section P against the pre-fix tool (tool md5 `3ebcf0b4ae7e290796fbed12c57e422b`, suite md5 `a50e16d7a5643bdfd18b667752e50d2c`, log `/tmp/opencode/exitcodes/pre-fix.log`) → **166 passed / 6 failed**: P1 (the contract text occurs **twice**), P2 ×2 (Go rule and CHANGELOG rule both absent from the docstring), P4 (the docstring block and `--help`'s section differ), M10's agreement surgical check (pre-fix both copies still exist, so the mutant's docstring and `--help` disagree), and M11's precondition (already 2 occurrences → unplantable, so its other three assertions could not run pre-fix — hence 172 counted pre-fix against 175 post-fix). Guards that passed pre-fix and thereby identify themselves: P2's parse rule, P3 (all four codes), P4's `--help exits 0`, and all three P5 rules — the epilog was the copy that was right. Baseline re-verified on a checkout of the same commit before the fix: **155/156 then 156/156 twice**, the single red being `L: real repo status changed during a run` (a concurrent identity committed mid-run), not this change. For `[0.4.59]` the new section Q against the pre-fix tool (tool md5 `f17563d67064a79f313ef2bab376cd66`, suite md5 `9217e2653fbed256afb704d0a01fd359`, log `/tmp/opencode/epilogderive/pre-fix.log`; baseline of the *old* suite against the old tool was **175/0** first) → **186 passed / 9 failed**: the seven findings are Q1–Q6 (every pair renders different bytes) and Q13 (the drifted synopsis still present), plus **M12's surgical render check** — which fails pre-fix only because the two renderings differ by definition, i.e. it restates Q2 — and **M13's precondition unplantable** (the derivation tuple does not exist yet, so its other three assertions could not run: hence 186 counted pre-fix against 198 post-fix). **Guards passed pre-fix and thereby identify themselves**: all six Q-source counts (each section's text already occurred exactly once — the copies differed, they were not duplicated line-for-line), `--help exits 0`, the generated-usage line, and M12's precondition plus its "caught" assertion. For `[0.4.60]` the new section R against the pre-fix tool (old tool md5 `4e6c58ffc86441a5745054a4ea45d084`, final suite md5 `e126f791dbcd4b1d9ae0bd0626022d82`, log `/tmp/opencode/epilogrefuse/pre-fix.log`; baseline of the old suite against the old tool was **198/0** first) → **203 passed / 10 failed**, captured **inside a clone of the repo** rather than from `/tmp`: pointing `REPO_LINT_BIN` at a copy outside `tools/` makes section L's live checks fail for *path* reasons, because `default_repo()` resolves relative to the script, so the tool reported `repo_root: /tmp/...` and exited 3 — a harness artifact that cost a second capture to get a red meaning what it says. **Nine of the ten are real**: **R5, R6, R7, R9 ×2, R11, R12, R12b** plus **M14's precondition unplantable** (the refusal does not exist yet, so its other five assertions could not run — hence 213 counted pre-fix against 218 post-fix); the tenth is `L: live json structurally sound`, whose `d['repo_root'] == '/data/repo'` is true in the real repo and false in a clone — disclosed as an artifact of my cloning rather than counted as a finding. **Guards passed pre-fix and thereby identify themselves**: R1 (healthy tool exits 0), R2 (no refusal on stderr), R3 (all seven labels non-empty), R4 and R10 (both mutant preconditions), R8 (the refusal names only the broken pair — pre-fix stderr is empty, so it passes vacuously, which is what makes it a guard rather than a finding). For `[0.4.61]` the widened section R against the pre-fix tool (old tool md5 `d6b50e6dcf68df6dccb5a46dfe06e5a0`, **final** suite md5 `b71b64db24d64fa65263e3867e45ba97`, log `/tmp/opencode/jsonrefuse/pre-fix.log`; baseline of the committed suite against the committed tool was **218/218** first) → **230 passed / 12 failed**, again **inside a clone** for the same path reason. **Eleven are real**: **R9b, R9c, R9d, R9e, R9f, R9g** (one cause — stdout empty, refusal on stderr), **R13** (`_add_flags` does not exist yet), **R14b, R15b, R16b** (same empty-stdout cause) and **M15's precondition unplantable** (the die()-routing line does not exist, so its five other assertions could not run — hence **242 counted pre-fix against 247 post-fix**). The twelfth is again `L: live json structurally sound` (`repo_root` is the clone, not `/data/repo`) — disclosed as a cloning artifact, not counted. **Guards passed pre-fix and thereby identify themselves**: R1–R8, R10–R12b, the exit-3 half of R9/R14/R15/R16, **R15c** (argparse really accepts `--form`), **R16c/R16d** (the healthy tool already echoed `requested_sha: probe-r9` — the reference both readers must match), R17, R17c, R18, R18b, R19; and **R17b, R18c, R18d are vacuously green** (nothing could print before a scan existed) — disclosed as guards, not findings. Two first-draft defects of mine are recorded in the CHANGELOG: R9c's predicate used `->` outside a string (the *checker* raised SyntaxError — a red meaning the wrong thing), and M15 was first planted without its trigger (mutant exited **0** and was "NOT caught", because nothing refuses when the docstring is healthy). For `[0.4.62]` the new section S against the pre-fix tool (tool md5 `f42b33e34ab28588334b5f616a551798`, **final** suite md5 `4acbd04968016e319778dda544c6596e`, log `/tmp/opencode/usagejson/pre-fix.log`; baseline of the committed suite against the committed tool was **247/247** first) → **268 passed / 16 failed** of 284, captured **in place rather than in a clone** — the tool was still unmodified at its real path, so section L's `repo_root == '/data/repo'` check passed on its own; the clone was only ever needed because a copy *outside* `tools/` changes `default_repo()`. **All sixteen are real**: **S3–S8** (one cause — stdout empty, usage on stderr), **S9b, S9c, S10b, S10c, S11b** (same cause, one per argv form), **S12b, S12c, S12e, S12f** (same cause, via our own `p.error()`), **S16b** (`_add_format_flag` does not exist yet — hence 268 counted pre-fix against 291 post-fix). **Guards passed pre-fix and thereby identify themselves**: **S1** (the human channel was already exactly right — the strongest evidence this was a *channel* defect, not a validation one), S2, S9a, S10a, S11a, S12a, S12d, **S13a–S15b** (no-format-readable argv), **S16** (the `--format` definition was already single), **S17, S18**. Two first-draft defects of mine are recorded in the CHANGELOG: S17b read `$OUT` where `s_run` wrote `$S_OUT` (a **stale** object, so the assertion failed against the *old* tool for an unrelated reason — caught as the 17th red and fixed before the tool was touched, the capture then re-taken honestly at 16), and S16b's predicate `grep -c '_add_format_flag(p)'` also matched the `def` line, reporting `3` for two call sites plus a definition — the third time this suite has been wrong in the *predicate* direction.
2706:**Status**: Green ✅ on 2026-09-27 (**348/348**; full regression that day: **52 suites / 4267 assertions / 0 failed / 0 skipped, exit 0** — 29 shell = 2892, 23 PHP = 1375. Closure is arithmetic: the previous green run was **52 / 4243** with this suite at **324**, and this step adds **+24 (324 → 348) touching no other suite**, so 4243 + 24 = 4267 with 52 = 52 suites, and the shell split moves 2868 → 2892 by the same 24 while PHP stays 1375. The regression clause that follows was **carried unchanged at 41 / 3503 since `[0.4.67]`** — the tree had already reached 52 / 4210 by `[0.4.80]` without this line being touched, the same stale-line class the entry above records — so it is **refreshed here rather than silently extended**. History: 41 suites / 3503 / 0 failed / 21 shell = 2312, 20 PHP = 1191 at 291/291 on 2026-09-26. Was 40 / 3396 / 20 shell = 2205 with `[0.4.66]`; **`[0.4.67]` adds `tests/test_queue_source.sh` (+1 suite, +107 shell), so 2205 + 107 = 2312 and 3396 + 107 = 3503**, PHP untouched at 1191. Before that, `[0.4.66]` grew `tests/test_regression_run.sh` (+0 suites, +83 shell: 110 → 193), so 2122 + 83 = 2205 and 3313 + 83 = 3396, and `[0.4.65]` added that suite (+1 suite, +110 shell) — 2012 + 110 = 2122, 3203 + 110 = 3313. This line was itself two runs stale at `[0.4.64]` — `[0.4.63]` added `test_app_contrast.php` (+1, +185) without updating it, so 958 + 185 + 48 = 1191 and 2970 + 185 + 48 = 3203 came out then). Since queue item **(63)** (2026-09-28) this Status line no longer claims to be *the current* figure: it is dated history, the live total lives **once** on `## regression-run`'s `- Live (measured YYYY-MM-DD)` line, and `tests/test_registry_coverage.sh` section F reads that line and compares it with `regression-run --list` — so a second copy of the number here would be a second truth nobody compared, which is the (55)/(57)/(59) shape one child further along)
2770:- Live (measured 2026-09-30): `./tools/regression-run` → **68 suites** discovered — the suite count this file quotes as current, and the only place it is quoted as current. Machine-checked by `tests/test_registry_coverage.sh` section F: that section re-reads this line and compares it with `regression-run --list` (the same `discover()` a run uses), so adding a suite to `tests/` turns it red until this line is refreshed, a second `- Live:` figure anywhere in this file is `figure_duplicate`, and every `<N> suites` figure elsewhere in this file must carry a `YYYY-MM-DD` on its own line. Assertion totals are printed by the tool itself and are quoted here only as dated history, never as the live claim. *(Refreshed 2026-09-30 from **63** by the run that added `tests/test_start_page.php` — the refresh is what clears `VIOLATION figure_stale 63`, which had made section F's controls read 2 violations where they assert exactly one, i.e. 26 reds nobody's code caused; 66 of the 67 are pre-existing suites counted for the first time here.)*
=== other plants that assert syn_n:
1683: 20 "$(sget syn_n)"
1685: "$(( $(sget syn_n) - 1 ))" "$(sget syn_ok)"
> build · mimo-v2.6-flash-free
[0m$ [0mcd /data/repo && sed -n '1618,1690p' tests/test_registry_coverage.sh
"$(sget_live conv_pairs)" "$(sget conv_pairs)"
# --- C28 a tool whose `usage:` row names none of its own flags ----------------
# --- Every control above plants a defect in the OPTION LIST or in the tool's
# --- behaviour. This one plants the defect on the row a caller reads first:
# --- the tool is correct everywhere else (a missing `--env`, a bad `--port`
# --- and an unknown flag all exit 2, so (69), (72) and E each have nothing to
# --- find), its option list is complete, and only the `usage:` row says
# --- `[OPTIONS]`. The subcommand shape is covered by the SAME assertion from
# --- the other side: the sandbox still holds 21 registered tools while `syn_n`
# --- reads 20, because pdns-api.py prints no option list at all and is out of
# --- scope by that line rather than by a hand list. (Both figures moved with
# --- `disk-show`, [0.4.128]: 20 -> 21 tools and 19 -> 20 in scope, since it
# --- prints an argparse `options:` list and a `usage:` row naming all three of
# --- its pairs — the assertion is a scope claim, so it is recounted here
# --- rather than left to be found red.)
D=$(fresh c28)
cat > "$D/tools/verify-landing" <<'EOS'
#!/usr/bin/env bash
# models a tool that is correct in every behaviour the other classes check and
# whose option list is complete, but whose `usage:` row — the one a caller
# reads first — says only `[OPTIONS]`. Nothing else is wrong with it.
set -euo pipefail
show_help() {
cat <<'EOF'
Usage: verify-landing [OPTIONS]
Options:
--help Show this help message
--env ENV Environment to check (default: dev)
--port PORT Port to check (default: 8000 for dev, 8001 for prod)
Exit Codes:
0 Success
1 Error
2 Invalid arguments
EOF
}
case "${1:-}" in
--help|-h) show_help; exit 0 ;;
--env)
[ $# -ge 2 ] || { echo "Error: --env needs a value: ENV" >&2; exit 2; }
shift 2 ;;
--port)
[ $# -ge 2 ] || { echo "Error: --port needs a value: PORT" >&2; exit 2; }
case "$2" in ''|*[!0-9]*) echo "Error: invalid --port: $2" >&2; exit 2 ;; esac
shift 2 ;;
*) echo "Unknown option: $1" >&2; exit 2 ;;
esac
exit 0
EOS
chmod +x "$D/tools/verify-landing"
expect "C28a plant: the usage row really names no flag (it says only [OPTIONS])" \
bash -c '"$0" --help | grep -qE "^Usage: verify-landing \[OPTIONS\]"' "$D/tools/verify-landing"
rc28m=$(timeout 5 "$D/tools/verify-landing" --env >/dev/null 2>&1; echo $?)
assert_eq "C28b plant: and the tool is CORRECT - a missing value still exits 2, so (72) has nothing to find" 2 "$rc28m"
rc28f=$(timeout 5 "$D/tools/verify-landing" --regcov-not-a-real-flag >/dev/null 2>&1; echo $?)
assert_eq "C28c plant: and an unknown flag still exits 2, so E has nothing to find" 2 "$rc28f"
run_child "$D"
assert_eq "C28d a usage row that names no flag -> exit 1" 1 "$RC"
has_v synopsis_flags verify-landing \
&& ok "C28e VIOLATION synopsis_flags verify-landing" \
|| fail "C28e VIOLATION synopsis_flags verify-landing"
assert_eq "C28f exactly one violation - the plant, and nothing else" 1 "$(sget violations)"
assert_eq "C28g scope unchanged: still the 20 tools that print an option list (pdns-api.py out)" \
20 "$(sget syn_n)"
assert_eq "C28h and exactly one of them lost the promise - syn_ok is one below the scope" \
"$(( $(sget syn_n) - 1 ))" "$(sget syn_ok)"
# ==========================================================================
# D — this suite's own argv surface: the rule it enforces for everyone else.
# ==========================================================================
bash "$SELF" --help >/dev/null 2>&1
> build · mimo-v2.6-flash-free
The file documents exactly this precedent (refresh when a tool is added). Updating both the prose and the pin:
[0m← [0mEdit repo/tests/test_registry_coverage.sh
Index: repo/tests/test_registry_coverage.sh
===================================================================
--- repo/tests/test_registry_coverage.sh
+++ repo/tests/test_registry_coverage.sh
@@ -1629,9 +1629,14 @@
# --- scope by that line rather than by a hand list. (Both figures moved with
# --- `disk-show`, [0.4.128]: 20 -> 21 tools and 19 -> 20 in scope, since it
# --- prints an argparse `options:` list and a `usage:` row naming all three of
# --- its pairs — the assertion is a scope claim, so it is recounted here
-# --- rather than left to be found red.)
+# --- rather than left to be found red.) They moved again on 2026-09-30 when
+# --- `hire-agent` grew the `Options:` section the bootstrap `--help` rule asks
+# --- for (22 registered tools, 21 in scope, `syn_ok` still one below): this
+# --- pin exists to catch a tool SILENTLY losing its option list and dropping
+# --- out of the check, so a deliberate growth is a refresh and a shrink is a
+# --- red — the number is a claim about the tree, not a constant.
D=$(fresh c28)
cat > "$D/tools/verify-landing" <<'EOS'
#!/usr/bin/env bash
# models a tool that is correct in every behaviour the other classes check and
> build · mimo-v2.6-flash-free
[0m← [0mEdit repo/tests/test_registry_coverage.sh
Index: repo/tests/test_registry_coverage.sh
===================================================================
--- repo/tests/test_registry_coverage.sh
+++ repo/tests/test_registry_coverage.sh
@@ -1623,10 +1623,10 @@
# --- the tool is correct everywhere else (a missing `--env`, a bad `--port`
# --- and an unknown flag all exit 2, so (69), (72) and E each have nothing to
# --- find), its option list is complete, and only the `usage:` row says
# --- `[OPTIONS]`. The subcommand shape is covered by the SAME assertion from
-# --- the other side: the sandbox still holds 21 registered tools while `syn_n`
-# --- reads 20, because pdns-api.py prints no option list at all and is out of
+# --- the other side: the sandbox still holds 22 registered tools while `syn_n`
+# --- reads 21, because pdns-api.py prints no option list at all and is out of
# --- scope by that line rather than by a hand list. (Both figures moved with
# --- `disk-show`, [0.4.128]: 20 -> 21 tools and 19 -> 20 in scope, since it
# --- prints an argparse `options:` list and a `usage:` row naming all three of
# --- its pairs — the assertion is a scope claim, so it is recounted here
[0m← [0mEdit repo/tests/test_registry_coverage.sh
Index: repo/tests/test_registry_coverage.sh
===================================================================
--- repo/tests/test_registry_coverage.sh
+++ repo/tests/test_registry_coverage.sh
@@ -1683,10 +1683,10 @@
has_v synopsis_flags verify-landing \
&& ok "C28e VIOLATION synopsis_flags verify-landing" \
|| fail "C28e VIOLATION synopsis_flags verify-landing"
assert_eq "C28f exactly one violation - the plant, and nothing else" 1 "$(sget violations)"
-assert_eq "C28g scope unchanged: still the 20 tools that print an option list (pdns-api.py out)" \
- 20 "$(sget syn_n)"
+assert_eq "C28g scope now 21 tools that print an option list (pdns-api.py out; 20 -> 21 with hire-agent)" \
+ 21 "$(sget syn_n)"
assert_eq "C28h and exactly one of them lost the promise - syn_ok is one below the scope" \
"$(( $(sget syn_n) - 1 ))" "$(sget syn_ok)"
# ==========================================================================
> build · mimo-v2.6-flash-free
[0m$ [0mcd /data/repo && bash -n tests/test_registry_coverage.sh && echo "syntax ok" && timeout 600 bash tests/test_registry_coverage.sh 2>&1 | tail -3
syntax ok
PASS: G23 live tree: no synopsis_flags VIOLATION line
=== Results: 213 passed, 0 failed ===
> build · mimo-v2.6-flash-free
213/0. Running the full regression:
[0m$ [0mcd /data/repo && ./tools/regression-run --format json 2>/dev/null | python3 -c "
import json,sys
d=json.load(sys.stdin)
print('totals:', d['totals'], 'ok:', d['ok'], 'exit:', d['exit_code'])
for s in d.get('suites',[]):
if s.get('failed'):
print(' RED:', s['suite'], s['passed'], '/', s['failed'], '|', (s.get('summary_text') or '')[:90])
"; git status --short --branch
totals: {'passed': 5909, 'failed': 2, 'skipped': 0, 'suites_run': 68} ok: False exit: 1
RED: test_gladex_monitor.sh 25 / 2 | summary: 27 assertions, 25 passed, 2 failed
## main...origin/main
M tests/test_registry_coverage.sh
> build · mimo-v2.6-flash-free
[0m$ [0mcd /data/repo && bash tests/test_gladex_monitor.sh 2>&1 | grep -E 'FAIL' | head -5; echo "=== commit my pin refresh:"; git add tests/test_registry_coverage.sh && git commit -q -m "[0.4.136] test_registry_coverage C28g: the synopsis scope is 21, not 20 - hire-agent grew the Options section the bootstrap --help rule asks for (22 registered tools); pin refreshed with the reason, same class as disk-show's 19->20 move, since the assertion is a claim about the tree and exists to catch a tool silently DROPPING out of scope" && git push origin main 2>&1 | tail -2
FAIL A3 tree clean AND in sync with origin/main (kind=is key=git want=## main...origin/main)
FAIL A15 git-tree reports a clean tree (kind=contains key=sys want=[OK] clean)
=== commit my pin refresh:
To git://git.gladex.de/gladex.git
92d905a..69da3fa main -> main
> build · mimo-v2.6-flash-free
Both reds were my uncommitted file. Re-running the monitor and the full regression:
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)
[Wed Sep 30 06:52:26 2026] 127.0.0.1:34822 Accepted [Wed Sep 30 06:52:26 2026] 127.0.0.1:34822 Closing [Wed Sep 30 06:52:26 2026] 127.0.0.1:34824 Accepted [Wed Sep 30 06:52:26 2026] 127.0.0.1:34824 Closing [Wed Sep 30 06:52:26 2026] 127.0.0.1:34834 Accepted [Wed Sep 30 06:52:26 2026] 127.0.0.1:34834 Closing [Wed Sep 30 06:52:26 2026] 127.0.0.1:34842 Accepted [Wed Sep 30 06:52:26 2026] 127.0.0.1:34842 Closing [Wed Sep 30 06:52:26 2026] 127.0.0.1:34844 Accepted [Wed Sep 30 06:52:26 2026] 127.0.0.1:34844 Closing [Wed Sep 30 06:52:26 2026] 127.0.0.1:34858 Accepted [Wed Sep 30 06:52:26 2026] 127.0.0.1:34858 Closing [Wed Sep 30 06:52:26 2026] 127.0.0.1:34862 Accepted [Wed Sep 30 06:52:26 2026] 127.0.0.1:34862 Closing [Wed Sep 30 06:52:26 2026] 127.0.0.1:34870 Accepted [Wed Sep 30 06:52:27 2026] 127.0.0.1:34870 Closing [Wed Sep 30 06:52:27 2026] 127.0.0.1:34884 Accepted [Wed Sep 30 06:52:27 2026] 127.0.0.1:34884 Closing [Wed Sep 30 06:53:32 2026] 127.0.0.1:54052 Accepted [Wed Sep 30 06:53:32 2026] 127.0.0.1:54052 Closing [Wed Sep 30 06:53:32 2026] 127.0.0.1:54058 Accepted [Wed Sep 30 06:53:32 2026] 127.0.0.1:54058 Closing [Wed Sep 30 06:53:32 2026] 127.0.0.1:54070 Accepted [Wed Sep 30 06:53:32 2026] 127.0.0.1:54070 Closing [Wed Sep 30 06:53:33 2026] 127.0.0.1:54082 Accepted [Wed Sep 30 06:53:33 2026] 127.0.0.1:54082 Closing [Wed Sep 30 06:53:33 2026] 127.0.0.1:54090 Accepted [Wed Sep 30 06:53:33 2026] 127.0.0.1:54090 Closing [Wed Sep 30 06:53:33 2026] 127.0.0.1:54106 Accepted [Wed Sep 30 06:53:33 2026] 127.0.0.1:54106 Closing [Wed Sep 30 06:53:33 2026] 127.0.0.1:54116 Accepted [Wed Sep 30 06:53:33 2026] 127.0.0.1:54116 Closing [Wed Sep 30 06:53:33 2026] 127.0.0.1:54130 Accepted [Wed Sep 30 06:53:33 2026] 127.0.0.1:54130 Closing [Wed Sep 30 06:53:33 2026] 127.0.0.1:54136 Accepted [Wed Sep 30 06:53:34 2026] 127.0.0.1:54136 Closing [Wed Sep 30 06:53:34 2026] 127.0.0.1:54140 Accepted [Wed Sep 30 06:53:34 2026] 127.0.0.1:54140 Closing [Wed Sep 30 06:54:13 2026] 127.0.0.1:51644 Accepted [Wed Sep 30 06:54:13 2026] 127.0.0.1:51644 Closing [Wed Sep 30 06:54:13 2026] 127.0.0.1:51652 Accepted [Wed Sep 30 06:54:13 2026] 127.0.0.1:51652 Closing [Wed Sep 30 06:54:13 2026] 127.0.0.1:51664 Accepted [Wed Sep 30 06:54:13 2026] 127.0.0.1:51664 Closing [Wed Sep 30 06:54:13 2026] 127.0.0.1:51672 Accepted [Wed Sep 30 06:54:13 2026] 127.0.0.1:51672 Closing [Wed Sep 30 06:54:13 2026] 127.0.0.1:51680 Accepted [Wed Sep 30 06:54:13 2026] 127.0.0.1:51680 Closing [Wed Sep 30 06:54:13 2026] 127.0.0.1:51690 Accepted [Wed Sep 30 06:54:13 2026] 127.0.0.1:51690 Closing [Wed Sep 30 06:54:13 2026] 127.0.0.1:51692 Accepted [Wed Sep 30 06:54:14 2026] 127.0.0.1:51692 Closing [Wed Sep 30 06:54:14 2026] 127.0.0.1:51698 Accepted [Wed Sep 30 06:54:14 2026] 127.0.0.1:51698 Closing [Wed Sep 30 06:54:14 2026] 127.0.0.1:51710 Accepted [Wed Sep 30 06:54:14 2026] 127.0.0.1:51710 Closing [Wed Sep 30 06:54:14 2026] 127.0.0.1:51718 Accepted [Wed Sep 30 06:54:14 2026] 127.0.0.1:51718 Closing [Wed Sep 30 06:54:45 2026] 127.0.0.1:57886 Accepted
Generated 2026-09-30 04:54:45 UTC · Gladex.de