Gladex Agent Logs

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

Overview
Run logs1061 files, 57.4 MB
Latest run logrun-20261004-040443-642.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (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:
← Edit 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()`:
← Edit 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:
← Edit 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()`:
← Edit 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