Gladex Agent Logs

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

Overview
Run logs1558 files, 106.6 MB
Latest run logrun-20261013-075349-1092.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20261013-075349-1092.log 243 KB 2026-10-13 06:35:41
run-20261013-064410-1091.log 387 KB 2026-10-13 05:43:38
run-20261013-052913-1090.log 255 KB 2026-10-13 04:34:00
run-20261013-045151-1089.log 191 KB 2026-10-13 03:19:02
run-20261013-040348-1088.log 266 KB 2026-10-13 02:41:41
run-20261013-031817-1087.log 249 KB 2026-10-13 01:53:37
run-20261013-025143-1086.log 178 KB 2026-10-13 01:08:05
run-20261013-021003-1085.log 209 KB 2026-10-13 00:41:33
run-20261013-015952-1084.log 154 B 2026-10-12 23:59:52
run-20261013-014941-1083.log 154 B 2026-10-12 23:49:42
run-20261013-013931-1082.log 154 B 2026-10-12 23:39:31
run-20261013-012920-1081.log 154 B 2026-10-12 23:29:21
run-20261013-011909-1080.log 154 B 2026-10-12 23:19:10
run-20261013-010859-1079.log 154 B 2026-10-12 23:08:59
run-20261013-005848-1078.log 154 B 2026-10-12 22:58:49
run-20261013-004837-1077.log 154 B 2026-10-12 22:48:38
run-20261013-003827-1076.log 154 B 2026-10-12 22:38:27
run-20261013-002816-1075.log 154 B 2026-10-12 22:28:17
run-20261013-001806-1074.log 154 B 2026-10-12 22:18:06
run-20261013-000755-1073.log 154 B 2026-10-12 22:07:56
run-20261012-235744-1072.log 154 B 2026-10-12 21:57:45
run-20261012-234734-1071.log 154 B 2026-10-12 21:47:35
run-20261012-233723-1070.log 154 B 2026-10-12 21:37:24
run-20261012-232713-1069.log 154 B 2026-10-12 21:27:14
run-20261012-231702-1068.log 191 B 2026-10-12 21:17:02
run-20261012-230651-1067.log 154 B 2026-10-12 21:06:52
run-20261012-225640-1066.log 154 B 2026-10-12 20:56:41
run-20261012-224629-1065.log 154 B 2026-10-12 20:46:30
run-20261012-223618-1064.log 154 B 2026-10-12 20:36:19
run-20261012-222606-1063.log 154 B 2026-10-12 20:26:08
run-20261012-221554-1062.log 154 B 2026-10-12 20:15:55
run-20261012-220544-1061.log 191 B 2026-10-12 20:05:44
run-20261012-215533-1060.log 154 B 2026-10-12 19:55:34
run-20261012-214521-1059.log 154 B 2026-10-12 19:45:22
run-20261012-213510-1058.log 191 B 2026-10-12 19:35:11
run-20261012-212459-1057.log 154 B 2026-10-12 19:25:00
run-20261012-211449-1056.log 154 B 2026-10-12 19:14:50
run-20261012-210438-1055.log 154 B 2026-10-12 19:04:39
run-20261012-205427-1054.log 154 B 2026-10-12 18:54:28
run-20261012-204417-1053.log 154 B 2026-10-12 18:44:18
run-20261012-203406-1052.log 191 B 2026-10-12 18:34:07
run-20261012-202353-1051.log 154 B 2026-10-12 18:23:56
run-20261012-200726-1050.log 103 KB 2026-10-12 18:13:44
run-20261012-192843-1049.log 231 KB 2026-10-12 17:57:16
run-20261012-190300-1048.log 175 KB 2026-10-12 17:18:33
run-20261012-182420-1047.log 309 KB 2026-10-12 16:52:50
run-20261012-174716-1046.log 425 KB 2026-10-12 16:14:10
run-20261012-170125-1045.log 270 KB 2026-10-12 15:37:06
run-20261012-160950-1044.log 250 KB 2026-10-12 14:51:15
run-20261012-152538-1043.log 271 KB 2026-10-12 13:59:41
Tail — run-20261013-075349-1092.log (last 200 lines)
assert s[end + 1:].startswith(nxt + "\n"), "plant: the section AFTER this one is not " + nxt
sec = s[start:end]
assert lit in sec, "plant: the quoted literal is not inside the suite's section"
assert gl in sec, "plant: the derived gloss is not inside the suite's section"
# The section's own copies go stale —
s = s[:start] + sec.replace(lit, lit_bad, 1).replace(gl, gl_bad, 1) + s[end:]
# — and the CORRECT pair is parked in the section AFTER it, i.e. inside the
# subject a reader that never stopped at the next `## ` heading would read.
h = s.index("\n" + nxt + "\n") + 1
he = s.index("\n", h)
ins = ["(125) plant D: the CORRECT pair, parked in the section AFTER this one:",
       "  paraphrase: `" + lit + "`",
       "  The gloss, derived: " + gl]
s = s[:he + 1] + "\n".join(ins) + "\n" + s[he + 1:]
assert lit in s and gl in s, "plant: the correct pair still exists - it just lives later now"
open(p, 'w').write(s)
PY
$ cd /data/repo
echo "=== C45 end / C43 start ==="
awk 'NR>=3938 && NR<=3960' tests/test_registry_coverage.sh
=== C45 end / C43 start ===
  sh -c 'printf "%s\n" "$1" | grep -m1 -E "^[[:space:]]*-[[:space:]]+\`--port" | grep -q "default: 8443"' _ "$c45_sect"
expect_not "C45a2 and it no longer claims 443, so the two copies really disagree" \
  sh -c 'printf "%s\n" "$1" | grep -m1 -E "^[[:space:]]*-[[:space:]]+\`--port" | grep -q "default: 443"' _ "$c45_sect"
run_child "$D"
assert_eq "C45b an all-flag default disagreement -> exit 1" 1 "$RC"
has_v allflag_default_mismatch "tls-check:8443/443" \
  && ok "C45c VIOLATION allflag_default_mismatch tls-check:8443/443" \
  || fail "C45c VIOLATION allflag_default_mismatch tls-check:8443/443"
assert_eq "C45d and the FORMAT reader stays silent on this plant - --port is (330)'s scope alone, so the two readers are separable rather than two names for one check" \
  0 "$(printf '%s\n' "$OUT" | grep -c '^VIOLATION format_default_mismatch')"
assert_eq "C45e exactly one violation - the all-flag kind, and nothing else" \
  1 "$(sget violations)"

# --- C43 the (126) class: `--help` DECLARES how many negative controls this   ---
# --- suite has, and until (126) nothing in the tree read that number.        ---
# `873c820` moved the declaration 41 -> 42 while the file held 41 controls and
# every gate stayed green — the (121)-(125) class one level up: a bare count in
# prose with no reader. Worse, the two candidate readers DISAGREED about what
# to count, and the one that agreed with the false number is the one a reader
# reaches for first: distinct `C<n>` MENTIONS read 42 on that very commit (its
# own sentence is a mention) while the file defines 41; `"C<n><x>` assertion
# LABELS alone read 39 today because C5/C6/C7 are emitted by `field_control` as
# `C${letter}a`. So "a control" is now defined IN CODE, twice, from two
$ cd /data/repo
echo "=== H8 / Results ==="
awk 'NR>=4435 && NR<=4460' tests/test_registry_coverage.sh
=== H8 / Results ===
  15 "$(sget_live fmt_claim_pairs)"
assert_eq "H2 and every such pair names the SAME default on both sides" \
  0 "$(sget_live fmt_claim_mismatch)"
assert_not_contains "H3 live tree: no format_default_mismatch VIOLATION line" \
  "VIOLATION format_default_mismatch" "$LIVE_OUT"

assert_contains "H4 the live snapshot carries the ALL-flag claim keys" "allflag_pairs=" "$LIVE_OUT"
assert_ge "H5 non-vacuity: at least 20 option rows state a default on BOTH the registry row and their --help (measured 45: 21 of them --format, 24 not)" \
  20 "$(sget_live allflag_pairs)"
assert_eq "H6 and every such pair agrees, numeric-equal counting as agreement" \
  0 "$(sget_live allflag_mismatch)"
assert_not_contains "H7 live tree: no allflag_default_mismatch VIOLATION line" \
  "VIOLATION allflag_default_mismatch" "$LIVE_OUT"
assert_ge "H8 non-vacuity of the numeric rule itself: at least one pair agrees ONLY numerically (tls-check --timeout, 5 vs 5.0), so H6 is not green because the rule is never exercised" \
  1 "$(sget_live allflag_numeq)"

echo
echo "=== Results: $PASS passed, $FAIL failed ==="
[ "$FAIL" -eq 0 ]
> build · mimo-v2.6-flash-free
$ cd /data/repo
grep -oE '"C[0-9]+[a-z]+' tests/test_registry_coverage.sh | sort -u | wc -l
grep -n 'control_ids()' tests/test_registry_coverage.sh
sed -n "$(grep -n 'control_ids()' tests/test_registry_coverage.sh | cut -d: -f1),+3p" tests/test_registry_coverage.sh
388
493:# sorted. Complements control_ids() (which reads the SOURCE): if the two ever
1683:held 41 controls and every gate stayed green. control_ids() reads the control
3961:# directions: control_ids() reads the namespaces the SOURCE declares and
3970:control_ids() {
3978:# LABEL-granular twin of control_ids(): the quoted label tokens the source
3979:# defines (the same quoting rule control_ids() reads by — a quoted token is a
4052:# the first non-digit and `control_ids()` returns the same, so a control whose
sed: -e expression #1, char 4: unknown command: `
'
> build · mimo-v2.6-flash-free
$ cd /data/repo
sed -n '3960,4000p' tests/test_registry_coverage.sh
echo "=== count via the real fn ==="
grep -oE '"C[0-9]+[a-z]+' tests/test_registry_coverage.sh | sed 's/^"//' | cut -c1-4 | sort -u | wc -l
grep -oE '"C[0-9]+[a-z]+' tests/test_registry_coverage.sh | sed 's/^"//' | sort -u | head -60
# `C${letter}a`. So "a control" is now defined IN CODE, twice, from two
# directions: control_ids() reads the namespaces the SOURCE declares and
# log_ns() the namespaces this run's ok()/fail() PRINTED, and the declaration
# is compared against both. A count written into --help is either true or red.
c43_state() { if [ "${1:-}" = "${2:-}" ]; then printf 'same\n'; else printf 'differs\n'; fi; }

# 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
}

# control_labels <file> [upto-line] -> 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.
# The optional second argument bounds the read to the FIRST <upto-line> lines:
# a label is defined in the source where its assertion sits and printed when
# that assertion runs, so "everything defined by line N" and "everything
# printed by line N" are the same set ONLY if the two are read up to the same
# line — comparing the whole file against a partial log would count every
# control below the capture point as "defined but never ran". C43v passes its
# own $LINENO for exactly that reason.
control_labels() {
  local f="${1:-$SELF}" upto="${2:-}" src
  if [ -n "$upto" ]; then src=$(sed -n "1,${upto}p" "$f"); else src=$(cat "$f"); fi
  { printf '%s\n' "$src" | sed -n 's/^field_control \([0-9][0-9]*\) .*/C\1a\nC\1b\nC\1c\nC\1d/p'
    printf '%s\n' "$src" | grep -oE '"C[0-9]+[a-z0-9]*' | sed 's/^"//'
  } | sed '/^$/d' | LC_ALL=C sort -u
}

# c43_mentions <file> -> how many DISTINCT `C<n>` tokens the text MENTIONS.
=== count via the real fn ===
388
C10a
C10b
C11a
C11b
C12a
C12b
C12c
C12d
C13a
C13b
C13c
C13d
C14a
C14b
C14c
C14d
C14e
C14f
C15a
C15b
C15c
C15d
C15e
C15f
C16a
C16b
C16c
C16d
C16e
C16f
C16g
C17a
C17b
C17c
C17d
C17e
C18a
C18b
C18c
C18d
C18e
C19a
C19b
C19c
C19d
C19e
C1a
C1b
C1c
C1d
C1e
C20a
C20b
C20c
C20d
C20e
C21a
C21b
C21c
C21d
> build · mimo-v2.6-flash-free
$ cd /data/repo
{ sed -n 's/^field_control \([0-9][0-9]*\) .*/\1/p' tests/test_registry_coverage.sh; grep -oE '"C[0-9]+[a-z]' tests/test_registry_coverage.sh | sed 's/^"C//; s/[a-z]$//'; } | sed '/^$/d' | sort -un | tail -3
{ sed -n 's/^field_control \([0-9][0-9]*\) .*/\1/p' tests/test_registry_coverage.sh; grep -oE '"C[0-9]+[a-z]' tests/test_registry_coverage.sh | sed 's/^"C//; s/[a-z]$//'; } | sed '/^$/d' | sort -un | wc -l
43
44
45
45

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)
[Tue Oct 13 08:30:10 2026] 127.0.0.1:47968 Accepted
[Tue Oct 13 08:30:10 2026] 127.0.0.1:47968 Closing
[Tue Oct 13 08:30:14 2026] 127.0.0.1:47974 Accepted
[Tue Oct 13 08:30:14 2026] 127.0.0.1:47974 Closing
[Tue Oct 13 08:30:18 2026] 127.0.0.1:59574 Accepted
[Tue Oct 13 08:30:18 2026] 127.0.0.1:59574 Closing
[Tue Oct 13 08:30:20 2026] 127.0.0.1:59580 Accepted
[Tue Oct 13 08:30:20 2026] 127.0.0.1:59580 Closing
[Tue Oct 13 08:30:20 2026] 127.0.0.1:59582 Accepted
[Tue Oct 13 08:30:20 2026] 127.0.0.1:59582 Closing
[Tue Oct 13 08:30:20 2026] 127.0.0.1:59594 Accepted
[Tue Oct 13 08:30:20 2026] 127.0.0.1:59594 Closing
[Tue Oct 13 08:30:20 2026] 127.0.0.1:59596 Accepted
[Tue Oct 13 08:30:20 2026] 127.0.0.1:59596 Closing
[Tue Oct 13 08:30:20 2026] 127.0.0.1:59604 Accepted
[Tue Oct 13 08:30:20 2026] 127.0.0.1:59604 Closing
[Tue Oct 13 08:30:20 2026] 127.0.0.1:59610 Accepted
[Tue Oct 13 08:30:20 2026] 127.0.0.1:59610 Closing
[Tue Oct 13 08:30:20 2026] 127.0.0.1:59622 Accepted
[Tue Oct 13 08:30:21 2026] 127.0.0.1:59622 Closing
[Tue Oct 13 08:30:21 2026] 127.0.0.1:59632 Accepted
[Tue Oct 13 08:30:21 2026] 127.0.0.1:59632 Closing
[Tue Oct 13 08:30:21 2026] 127.0.0.1:59648 Accepted
[Tue Oct 13 08:30:21 2026] 127.0.0.1:59648 Closing
[Tue Oct 13 08:30:21 2026] 127.0.0.1:59664 Accepted
[Tue Oct 13 08:30:21 2026] 127.0.0.1:59664 Closing
[Tue Oct 13 08:30:22 2026] 127.0.0.1:59668 Accepted
[Tue Oct 13 08:30:22 2026] 127.0.0.1:59668 Closing
[Tue Oct 13 08:30:27 2026] 127.0.0.1:34024 Accepted
[Tue Oct 13 08:30:27 2026] 127.0.0.1:34024 Closing
[Tue Oct 13 08:30:30 2026] 127.0.0.1:34026 Accepted
[Tue Oct 13 08:30:30 2026] 127.0.0.1:34026 Closing
[Tue Oct 13 08:30:35 2026] 127.0.0.1:60096 Accepted
[Tue Oct 13 08:30:35 2026] 127.0.0.1:60096 Closing
[Tue Oct 13 08:30:41 2026] 127.0.0.1:60108 Accepted
[Tue Oct 13 08:30:41 2026] 127.0.0.1:60108 Closing
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38678 Accepted
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38678 Closing
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38694 Accepted
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38694 Closing
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38708 Accepted
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38708 Closing
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38718 Accepted
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38718 Closing
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38730 Accepted
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38730 Closing
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38740 Accepted
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38740 Closing
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38746 Accepted
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38746 Closing
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38758 Accepted
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38758 Closing
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38772 Accepted
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38772 Closing
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38774 Accepted
[Tue Oct 13 08:31:24 2026] 127.0.0.1:38774 Closing
[Tue Oct 13 08:35:50 2026] 127.0.0.1:40364 Accepted
[Tue Oct 13 08:35:50 2026] 127.0.0.1:40364 Closing
[Tue Oct 13 08:35:50 2026] 127.0.0.1:40370 Accepted

Other app logs: downloads.log

Generated 2026-10-13 06:35:50 UTC · Gladex.de