Gladex Agent Logs
Agent run logs & app logs · env: prod · LAN-only investor surface
Overview
| Run logs | 1061 files, 57.4 MB |
| Latest run log | run-20261004-040443-642.log |
| Log directory | /data/agent-logs |
| App log directory | /opt/startup/prod/logs |
Run logs (newest first, last 50)
| File | Size | Modified (UTC) |
|---|---|---|
| run-20261004-040443-642.log | 428 KB | 2026-10-04 03:01:11 |
| run-20261004-045809-17.log | 151 B | 2026-10-04 02:58:10 |
| run-20261004-044801-16.log | 151 B | 2026-10-04 02:48:02 |
| run-20261004-042856-15.log | 158 KB | 2026-10-04 02:37:54 |
| run-20261004-035945-14.log | 207 KB | 2026-10-04 02:18:49 |
| run-20261004-031818-641.log | 235 KB | 2026-10-04 01:54:36 |
| run-20261004-033037-13.log | 224 KB | 2026-10-04 01:49:37 |
| run-20261004-025450-12.log | 273 KB | 2026-10-04 01:20:29 |
| run-20261004-023809-640.log | 244 KB | 2026-10-04 01:08:11 |
| run-20261004-020141-11.log | 245 KB | 2026-10-04 00:44:42 |
| run-20261004-020042-639.log | 266 KB | 2026-10-04 00:28:01 |
| run-20261004-015133-10.log | 187 B | 2026-10-03 23:51:33 |
| run-20261004-015034-638.log | 153 B | 2026-10-03 23:50:34 |
| run-20261004-014125-9.log | 150 B | 2026-10-03 23:41:25 |
| run-20261004-014026-637.log | 153 B | 2026-10-03 23:40:26 |
| run-20261004-013116-8.log | 150 B | 2026-10-03 23:31:16 |
| run-20261004-013017-636.log | 190 B | 2026-10-03 23:30:17 |
| run-20261004-012108-7.log | 150 B | 2026-10-03 23:21:08 |
| run-20261004-012009-635.log | 153 B | 2026-10-03 23:20:09 |
| run-20261004-011100-6.log | 150 B | 2026-10-03 23:11:00 |
| run-20261004-011001-634.log | 153 B | 2026-10-03 23:10:01 |
| run-20261004-010051-5.log | 186 B | 2026-10-03 23:00:52 |
| run-20261004-005953-633.log | 153 B | 2026-10-03 22:59:53 |
| run-20261004-005043-4.log | 150 B | 2026-10-03 22:50:44 |
| run-20261004-004945-632.log | 153 B | 2026-10-03 22:49:45 |
| run-20261004-002616-3.log | 172 KB | 2026-10-03 22:40:36 |
| run-20261004-003936-631.log | 190 B | 2026-10-03 22:39:36 |
| run-20261004-002927-630.log | 153 B | 2026-10-03 22:29:27 |
| run-20261004-001919-629.log | 153 B | 2026-10-03 22:19:19 |
| run-20261003-235543-2.log | 170 KB | 2026-10-03 22:16:08 |
| run-20261004-000910-628.log | 153 B | 2026-10-03 22:09:11 |
| run-20261003-235902-627.log | 153 B | 2026-10-03 21:59:03 |
| run-20261003-234854-626.log | 153 B | 2026-10-03 21:48:55 |
| run-20261003-232430-1.log | 156 KB | 2026-10-03 21:45:35 |
| run-20261003-233845-625.log | 153 B | 2026-10-03 21:38:46 |
| run-20261003-232837-624.log | 153 B | 2026-10-03 21:28:38 |
| run-20261003-231829-623.log | 153 B | 2026-10-03 21:18:30 |
| run-20261003-230821-622.log | 190 B | 2026-10-03 21:08:22 |
| run-20261003-225813-621.log | 153 B | 2026-10-03 20:58:14 |
| run-20261003-224805-620.log | 153 B | 2026-10-03 20:48:06 |
| run-20261003-223757-619.log | 190 B | 2026-10-03 20:37:58 |
| run-20261003-222750-618.log | 153 B | 2026-10-03 20:27:50 |
| run-20261003-221742-617.log | 153 B | 2026-10-03 20:17:42 |
| run-20261003-220734-616.log | 153 B | 2026-10-03 20:07:34 |
| run-20261003-215725-615.log | 153 B | 2026-10-03 19:57:26 |
| run-20261003-214717-614.log | 153 B | 2026-10-03 19:47:18 |
| run-20261003-213709-613.log | 153 B | 2026-10-03 19:37:10 |
| run-20261003-212701-612.log | 153 B | 2026-10-03 19:27:02 |
| run-20261003-211653-611.log | 153 B | 2026-10-03 19:16:54 |
| run-20261003-210645-610.log | 153 B | 2026-10-03 19:06:46 |
Tail — run-20261004-035945-14.log (last 200 lines)
# below as one space-separated list of numbers. Queue item (126): it is the
# RUNTIME half of the reader that compares --help's declared control count, and
# it counts what was actually emitted rather than what the source text mentions.
NS_NS=""
---463-485---
# _ns_add <label> — record the C<n> namespace of an assertion label, if it has
# one. Only a label whose FIRST token is C<digits> counts: `A1`, `B2`, `D1`,
# `E0`, `F8`, `G1` are sections, and a sentence that merely mentions a control
# is not a label at all (that distinction is the whole of queue item (126): on
# `873c820` the distinct-MENTION count read 42 while the file defined 41).
_ns_add() {
local t="${1:-}" n
case "$t" in
C[0-9]*)
t=${t#C}
n=${t%%[^0-9]*}
[ -n "$n" ] && NS_NS="${NS_NS}${NS_NS:+ }$n"
;;
esac
}
ok() { PASS=$((PASS + 1)); _ns_add "$1"; echo "PASS: $1"; }
fail() { FAIL=$((FAIL + 1)); _ns_add "$1"; echo "FAIL: $1"; }
# log_ns() -> the control namespaces this run's log has printed, one per line,
# sorted. Complements control_ids() (which reads the SOURCE): if the two ever
# disagree, a label exists that never ran or ran that never existed — either
# way "a control" stopped meaning one thing, which is what C43d reds on.
log_ns() { printf '%s\n' "${NS_NS:-}" | tr ' ' '\n' | sed '/^$/d' | sort -un; }
---486-490---
# set_diff <list-a> <list-b> -> the SYMMETRIC DIFFERENCE of two namespace
# lists, one name per line (comm -3): empty iff the two sets are equal, and
# every printed line is a member one side has and the other does not. This
# is what "the same controls" has to mean — comparing the two lists by
# `wc -l` is a claim about SIZE standing in for the membership the comment
---3682-3692---
# control_ids <file> -> one C<n> namespace per line. The label token is QUOTED
# so a prose sentence that merely mentions a control cannot count, and the
# `field_control <n>` invocation is unioned in because C5/C6/C7 write their
# labels as `C${letter}a` and would otherwise be three invisible controls.
control_ids() {
local f="${1:-$SELF}"
{ sed -n 's/^field_control \([0-9][0-9]*\) .*/\1/p' "$f"
grep -oE '"C[0-9]+[a-z]' "$f" 2>/dev/null | sed 's/^"C//; s/[a-z]$//'
} | sed '/^$/d' | sort -un
}
---3784-3794---
c43_h_decl="" c43_h_n=""
IFS='|' read -r c43_h_decl c43_h_n <<< "$(c43_pair "$c43_hist")"
assert_eq "C43j on 873c820's own file the pair DIFFERS — this reader catches the defect that commit shipped (declared $c43_h_decl, defined $c43_h_n)" \
"differs" "$(c43_state "$c43_h_decl" "$c43_h_n")"
assert_eq "C43k while the MENTION count on that same file equals its false declaration — the reader that would have stayed green, which is why a mention count is not the reader" \
"$c43_h_decl" "$(c43_mentions "$c43_hist")"
# ==========================================================================
# D — this suite's own argv surface: the rule it enforces for everyone else.
# ==========================================================================
bash "$SELF" --help >/dev/null 2>&1
---BIGGEST-LABEL---
C9e
C43m
> build · ling-3.1-flash-free
> build · ling-3.1-flash-free
> build · ling-3.1-flash-free
> build · ling-3.1-flash-free
All insertion points confirmed. Now implementing the (130) fix — six edits to `tests/test_registry_coverage.sh`.
**Edit 1/6** — the label ledger next to the namespace ledger:
[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
@@ -338,8 +338,15 @@
# below as one space-separated list of numbers. Queue item (126): it is the
# RUNTIME half of the reader that compares --help's declared control count, and
# it counts what was actually emitted rather than what the source text mentions.
NS_NS=""
+# The control LABELS this run's log has printed, accumulated by ok()/fail()
+# below as one space-separated list of full label tokens (C43d2, not just the
+# namespace 43). Queue item (130): the namespace ledger cannot see a control
+# that HALF ran this run — one label of its namespace printed, another dropped
+# into an untaken branch — because both sides still carry the namespace. This
+# second ledger is the runtime half of the label-granular reader.
+NS_LB=""
# Test hooks: a MUTATED copy of the tree under test is pointed at by these, so
# every control below exercises the same code the live assertion runs.
cov_tools="${REGISTRY_COVERAGE_TOOLS_DIR:-$REPO/tools}"
> build · ling-3.1-flash-free
**Edit 2/6** — `_ns_add` records the full label, and `log_labels()` joins `log_ns()`:
[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
@@ -478,8 +478,13 @@
C[0-9]*)
t=${t#C}
n=${t%%[^0-9]*}
[ -n "$n" ] && NS_NS="${NS_NS}${NS_NS:+ }$n"
+ # (130) the full label, not just its namespace: the token up
+ # to the first whitespace is the label ok()/fail() was called
+ # with (fail()'s " (want=…)" suffix is not part of it), and
+ # it is what the label-granular reader compares.
+ NS_LB="${NS_LB}${NS_LB:+ }${1%% *}"
;;
esac
}
ok() { PASS=$((PASS + 1)); _ns_add "$1"; echo "PASS: $1"; }
@@ -488,8 +493,16 @@
# sorted. Complements control_ids() (which reads the SOURCE): if the two ever
# disagree, a label exists that never ran or ran that never existed — either
# way "a control" stopped meaning one thing, which is what C43d reds on.
log_ns() { printf '%s\n' "${NS_NS:-}" | tr ' ' '\n' | sed '/^$/d' | sort -un; }
+# log_labels() -> the control LABELS this run's log has printed, one per
+# line, sorted. Complements control_labels() (which reads the SOURCE): if
+# the two ever disagree, a label exists that never ran or ran that never
+# existed. This is the (130) residue below (127): (127) closed the same
+# question at namespace granularity, where a control that HALF ran — one
+# label printed, one dropped into an untaken branch — reads as present on
+# both sides, because both sides still carry its namespace.
+log_labels() { printf '%s\n' "${NS_LB:-}" | tr ' ' '\n' | sed '/^$/d' | LC_ALL=C sort -u; }
# set_diff <list-a> <list-b> -> the SYMMETRIC DIFFERENCE of two namespace
# lists, one name per line (comm -3): empty iff the two sets are equal, and
# every printed line is a member one side has and the other does not. This
> build · ling-3.1-flash-free
**Edit 3/6** — `set_diff`'s comment names both granularities it now serves:
[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
@@ -502,10 +502,11 @@
# label printed, one dropped into an untaken branch — reads as present on
# both sides, because both sides still carry its namespace.
log_labels() { printf '%s\n' "${NS_LB:-}" | tr ' ' '\n' | sed '/^$/d' | LC_ALL=C sort -u; }
-# set_diff <list-a> <list-b> -> the SYMMETRIC DIFFERENCE of two namespace
-# lists, one name per line (comm -3): empty iff the two sets are equal, and
+# set_diff <list-a> <list-b> -> the SYMMETRIC DIFFERENCE of two sorted
+# lists (namespaces for C43d2, labels for C43v), one name per line
+# (comm -3): empty iff the two sets are equal, and
# every printed line is a member one side has and the other does not. This
# is what "the same controls" has to mean — comparing the two lists by
# `wc -l` is a claim about SIZE standing in for the membership the comment
# above log_ns() promises, which is queue item (127): a run that printed one
> build · ling-3.1-flash-free
**Edit 4/6** — `control_labels()`, the label-granular twin of `control_ids()`:
[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
@@ -3710,8 +3710,23 @@
grep -oE '"C[0-9]+[a-z]' "$f" 2>/dev/null | sed 's/^"C//; s/[a-z]$//'
} | sed '/^$/d' | sort -un
}
+# control_labels <file> -> one full label per line. The LABEL-granular
+# twin of control_ids(): the quoted label tokens the source defines (the
+# same quoting rule control_ids() reads by — a quoted token is a label,
+# prose that merely mentions one is not), plus the labels a
+# `field_control <n>` invocation constructs at runtime as C${letter}a..d,
+# which no reader of quoted tokens can see. C43u ties the expansion's
+# suffixes to field_control's own body, so a control that gains a label
+# reddens the expansion instead of drifting out of this reader's scope.
+control_labels() {
+ local f="${1:-$SELF}"
+ { sed -n 's/^field_control \([0-9][0-9]*\) .*/C\1a\nC\1b\nC\1c\nC\1d/p' "$f"
+ grep -oE '"C[0-9]+[a-z0-9]*' "$f" 2>/dev/null | sed 's/^"//'
+ } | sed '/^$/d' | LC_ALL=C sort -u
+}
+
# c43_mentions <file> -> how many DISTINCT `C<n>` tokens the text MENTIONS.
# Defined only so C43k can measure the reader this control rejects: a mention
# count agrees with `873c820`'s false declaration, which is exactly the bug.
c43_mentions() { grep -oE '\bC[0-9]{1,2}\b' "${1:-$SELF}" | sort -u | sed '/^$/d' | wc -l | tr -d ' '; }
> build · ling-3.1-flash-free
> build · ling-3.1-flash-free
> build · ling-3.1-flash-free
> build · ling-3.1-flash-free
> build · ling-3.1-flash-free
**Edit 5/6** — the (130) assertion block (C43n–C43v) after C43k:
exit=0
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)
[Sun Oct 4 04:50:23 2026] 127.0.0.1:53774 Accepted [Sun Oct 4 04:50:23 2026] 127.0.0.1:53774 Closing [Sun Oct 4 04:50:23 2026] 127.0.0.1:53784 Accepted [Sun Oct 4 04:50:23 2026] 127.0.0.1:53784 Closing [Sun Oct 4 04:50:23 2026] 127.0.0.1:53786 Accepted [Sun Oct 4 04:50:23 2026] 127.0.0.1:53786 Closing [Sun Oct 4 04:50:23 2026] 127.0.0.1:53792 Accepted [Sun Oct 4 04:50:23 2026] 127.0.0.1:53792 Closing [Sun Oct 4 04:50:23 2026] 127.0.0.1:53796 Accepted [Sun Oct 4 04:50:23 2026] 127.0.0.1:53796 Closing [Sun Oct 4 04:50:23 2026] 127.0.0.1:53808 Accepted [Sun Oct 4 04:50:24 2026] 127.0.0.1:53808 Closing [Sun Oct 4 04:50:24 2026] 127.0.0.1:53822 Accepted [Sun Oct 4 04:50:24 2026] 127.0.0.1:53822 Closing [Sun Oct 4 04:55:58 2026] 127.0.0.1:40156 Accepted [Sun Oct 4 04:55:58 2026] 127.0.0.1:40156 Closing [Sun Oct 4 04:59:53 2026] 127.0.0.1:54044 Accepted [Sun Oct 4 04:59:53 2026] 127.0.0.1:54044 Closing [Sun Oct 4 05:00:08 2026] 127.0.0.1:56352 Accepted [Sun Oct 4 05:00:08 2026] 127.0.0.1:56352 Closing [Sun Oct 4 05:00:08 2026] 127.0.0.1:56356 Accepted [Sun Oct 4 05:00:09 2026] 127.0.0.1:56356 Closing [Sun Oct 4 05:00:09 2026] 127.0.0.1:56360 Accepted [Sun Oct 4 05:00:09 2026] 127.0.0.1:56360 Closing [Sun Oct 4 05:00:09 2026] 127.0.0.1:56366 Accepted [Sun Oct 4 05:00:09 2026] 127.0.0.1:56366 Closing [Sun Oct 4 05:00:09 2026] 127.0.0.1:56376 Accepted [Sun Oct 4 05:00:09 2026] 127.0.0.1:56376 Closing [Sun Oct 4 05:00:09 2026] 127.0.0.1:56386 Accepted [Sun Oct 4 05:00:09 2026] 127.0.0.1:56386 Closing [Sun Oct 4 05:00:09 2026] 127.0.0.1:56402 Accepted [Sun Oct 4 05:00:09 2026] 127.0.0.1:56402 Closing [Sun Oct 4 05:00:09 2026] 127.0.0.1:56408 Accepted [Sun Oct 4 05:00:09 2026] 127.0.0.1:56408 Closing [Sun Oct 4 05:00:09 2026] 127.0.0.1:56422 Accepted [Sun Oct 4 05:00:10 2026] 127.0.0.1:56422 Closing [Sun Oct 4 05:00:10 2026] 127.0.0.1:56430 Accepted [Sun Oct 4 05:00:10 2026] 127.0.0.1:56430 Closing [Sun Oct 4 05:00:55 2026] 127.0.0.1:36588 Accepted [Sun Oct 4 05:00:55 2026] 127.0.0.1:36588 Closing [Sun Oct 4 05:00:55 2026] 127.0.0.1:36604 Accepted [Sun Oct 4 05:00:55 2026] 127.0.0.1:36604 Closing [Sun Oct 4 05:00:56 2026] 127.0.0.1:36608 Accepted [Sun Oct 4 05:00:56 2026] 127.0.0.1:36608 Closing [Sun Oct 4 05:00:56 2026] 127.0.0.1:36616 Accepted [Sun Oct 4 05:00:56 2026] 127.0.0.1:36616 Closing [Sun Oct 4 05:00:56 2026] 127.0.0.1:36628 Accepted [Sun Oct 4 05:00:56 2026] 127.0.0.1:36628 Closing [Sun Oct 4 05:00:56 2026] 127.0.0.1:36630 Accepted [Sun Oct 4 05:00:56 2026] 127.0.0.1:36630 Closing [Sun Oct 4 05:00:56 2026] 127.0.0.1:36640 Accepted [Sun Oct 4 05:00:56 2026] 127.0.0.1:36640 Closing [Sun Oct 4 05:00:56 2026] 127.0.0.1:36656 Accepted [Sun Oct 4 05:00:56 2026] 127.0.0.1:36656 Closing [Sun Oct 4 05:00:56 2026] 127.0.0.1:36658 Accepted [Sun Oct 4 05:00:57 2026] 127.0.0.1:36658 Closing [Sun Oct 4 05:00:57 2026] 127.0.0.1:36674 Accepted [Sun Oct 4 05:00:57 2026] 127.0.0.1:36674 Closing [Sun Oct 4 05:01:15 2026] 127.0.0.1:43466 Accepted
Generated 2026-10-04 03:01:15 UTC · Gladex.de