Gladex Agent Logs

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

Overview
Run logs1626 files, 117.5 MB
Latest run logrun-20261015-033336-1160.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20261015-033336-1160.log 319 KB 2026-10-15 02:29:44
run-20261015-020624-1159.log 212 KB 2026-10-15 01:23:26
run-20261015-015612-1158.log 154 B 2026-10-14 23:56:13
run-20261015-014600-1157.log 191 B 2026-10-14 23:46:01
run-20261015-013549-1156.log 191 B 2026-10-14 23:35:50
run-20261015-012537-1155.log 154 B 2026-10-14 23:25:38
run-20261015-011525-1154.log 191 B 2026-10-14 23:15:26
run-20261015-010513-1153.log 154 B 2026-10-14 23:05:14
run-20261015-005502-1152.log 154 B 2026-10-14 22:55:03
run-20261015-004450-1151.log 154 B 2026-10-14 22:44:51
run-20261015-003439-1150.log 154 B 2026-10-14 22:34:40
run-20261015-002427-1149.log 154 B 2026-10-14 22:24:28
run-20261015-001416-1148.log 154 B 2026-10-14 22:14:17
run-20261015-000405-1147.log 191 B 2026-10-14 22:04:06
run-20261014-235353-1146.log 191 B 2026-10-14 21:53:54
run-20261014-234342-1145.log 191 B 2026-10-14 21:43:43
run-20261014-233330-1144.log 154 B 2026-10-14 21:33:31
run-20261014-232318-1143.log 154 B 2026-10-14 21:23:19
run-20261014-231307-1142.log 154 B 2026-10-14 21:13:08
run-20261014-230255-1141.log 154 B 2026-10-14 21:02:56
run-20261014-225244-1140.log 154 B 2026-10-14 20:52:45
run-20261014-222900-1139.log 142 KB 2026-10-14 20:42:33
run-20261014-212813-1138.log 571 KB 2026-10-14 20:18:50
run-20261014-201639-1137.log 370 KB 2026-10-14 19:18:02
run-20261014-174154-1136.log 835 KB 2026-10-14 18:06:28
run-20261014-170319-1135.log 320 KB 2026-10-14 15:31:41
run-20261014-161418-1134.log 270 KB 2026-10-14 14:53:09
run-20261014-150444-1133.log 323 KB 2026-10-14 14:04:07
run-20261014-133301-1132.log 340 KB 2026-10-14 12:54:34
run-20261014-124552-1131.log 194 KB 2026-10-14 11:22:49
run-20261014-103913-1130.log 525 KB 2026-10-14 10:35:42
run-20261014-082946-1129.log 630 KB 2026-10-14 08:29:02
run-20261014-061713-1128.log 454 KB 2026-10-14 06:19:36
run-20261014-052042-1127.log 96 KB 2026-10-14 04:07:02
run-20261014-044319-1126.log 200 KB 2026-10-14 03:10:30
run-20261014-032502-1125.log 531 KB 2026-10-14 02:33:08
run-20261014-024815-1124.log 214 KB 2026-10-14 01:14:52
run-20261014-020537-1123.log 283 KB 2026-10-14 00:38:05
run-20261014-015526-1122.log 154 B 2026-10-13 23:55:27
run-20261014-014514-1121.log 191 B 2026-10-13 23:45:15
run-20261014-013503-1120.log 191 B 2026-10-13 23:35:04
run-20261014-012452-1119.log 154 B 2026-10-13 23:24:53
run-20261014-011441-1118.log 154 B 2026-10-13 23:14:42
run-20261014-010430-1117.log 154 B 2026-10-13 23:04:31
run-20261014-005419-1116.log 154 B 2026-10-13 22:54:20
run-20261014-004409-1115.log 154 B 2026-10-13 22:44:09
run-20261014-003358-1114.log 154 B 2026-10-13 22:33:58
run-20261014-002347-1113.log 154 B 2026-10-13 22:23:48
run-20261014-001336-1112.log 154 B 2026-10-13 22:13:37
run-20261014-000325-1111.log 154 B 2026-10-13 22:03:25
Tail — run-20261015-033336-1160.log (last 200 lines)
 GBASE="$SB/base-null.json"
 guard "$TOOL" --record
 assert_rc "G15 a green run over the null rows records them" 0 "$RC"
-assert_eq "G16 an n/a stays n/a in the recording - never a zero" \
-  'null' "$(python3 -c 'import json,sys; print(json.dumps(json.load(open(sys.argv[1]))["coverage"]["eps"]))' "$SB/base-null.json" 2>/dev/null)"
+assert_eq "G16 a current n/a stays n/a in the recording - never a zero" \
+  'null' "$(python3 -c 'import json,sys; print(json.dumps(json.load(open(sys.argv[1]))["coverage"]["zeta"]))' "$SB/base-null.json" 2>/dev/null)"
+assert_eq "G16b while a real 0.0 records as 0.0 - falsy, but never nulled" \
+  '0.0' "$(python3 -c 'import json,sys; print(json.load(open(sys.argv[1]))["coverage"]["iota"])' "$SB/base-null.json" 2>/dev/null)"
+assert_eq "G16c and an OLD n/a is replaced by the value measured today" \
+  '1.0' "$(python3 -c 'import json,sys; print(json.load(open(sys.argv[1]))["coverage"]["eps"])' "$SB/base-null.json" 2>/dev/null)"
 
 # ==========================================================================
 # H — the LIVE box, race-safe by shape (the verdict is printed, not asserted)
 # ==========================================================================

> build · mimo-v2.6-flash-free
← Edit repo/tests/test_coverage_guard.sh
Index: repo/tests/test_coverage_guard.sh
===================================================================
--- repo/tests/test_coverage_guard.sh
+++ repo/tests/test_coverage_guard.sh
@@ -573,8 +573,9 @@
 # M1 — the explanation read: with `unit_failed` pinned false, beta's explained
 # fall becomes unexplained, so a green run must go red.
 if mutate "$SB/m1" 'unit_failed = name in failed' 'unit_failed = False' 2>/dev/null; then
   ok "M1 precondition: the explanation read occurs exactly once"
+  chmod +x "$SB/m1"
   GBASE="$SB/base-one.json"; GCOV="$SB/cov-one.json"; GFAILED=beta; GFAILED_SET=1
   guard "$TOOL" --format json
   real_rc=$RC
   guard "$SB/m1" --format json

← Edit repo/tests/test_coverage_guard.sh
Index: repo/tests/test_coverage_guard.sh
===================================================================
--- repo/tests/test_coverage_guard.sh
+++ repo/tests/test_coverage_guard.sh
@@ -592,8 +592,9 @@
 # M2 — the comparison direction: `cur > recorded` inverts the fall test, so an
 # unexplained fall is classified ok and the gate never fires.
 if mutate "$SB/m2" 'elif cur < recorded:' 'elif cur > recorded:' 2>/dev/null; then
   ok "M2 precondition: the comparison occurs exactly once"
+  chmod +x "$SB/m2"
   GBASE="$SB/base-one.json"; GCOV="$SB/cov-one.json"; GFAILED=""; GFAILED_SET=1
   guard "$TOOL" --format json
   real_rc=$RC
   real_state=$(jsonq 'd["rows"]["beta"]["state"]')

← Edit repo/tests/test_coverage_guard.sh
Index: repo/tests/test_coverage_guard.sh
===================================================================
--- repo/tests/test_coverage_guard.sh
+++ repo/tests/test_coverage_guard.sh
@@ -613,8 +613,9 @@
 # M3 — the record gate: dropping `and code == 0` lets a red run write the
 # baseline, which is exactly the swallow the gate exists to refuse.
 if mutate "$SB/m3" 'if args.record and code == 0:' 'if args.record:' 2>/dev/null; then
   ok "M3 precondition: the record gate occurs exactly once"
+  chmod +x "$SB/m3"
   cp "$SB/base-one.json" "$SB/base-m3.json"
   GBASE="$SB/base-m3.json"; GCOV="$SB/cov-one.json"; GFAILED=""; GFAILED_SET=1
   before=$(md5sum "$SB/base-m3.json" | awk '{print $1}')
   guard "$TOOL" --record --format json

← Edit repo/tests/test_coverage_guard.sh
Index: repo/tests/test_coverage_guard.sh
===================================================================
--- repo/tests/test_coverage_guard.sh
+++ repo/tests/test_coverage_guard.sh
@@ -636,8 +636,9 @@
 # M4 — the no-record branch: theta must not read as an already-recorded row,
 # and every other state must be untouched (the surgical half).
 if mutate "$SB/m4" 'state = "no-record"' 'state = "ok"' 2>/dev/null; then
   ok "M4 precondition: the no-record branch occurs exactly once"
+  chmod +x "$SB/m4"
   GBASE="$SB/base.json"; GCOV="$SB/cov.json"; GFAILED=beta,delta; GFAILED_SET=1
   guard "$TOOL" --format json
   real_theta=$(jsonq 'd["rows"]["theta"]["state"]')
   real_counts=$(jsonq 'd["counts"]["no_record"]')

> build · mimo-v2.6-flash-free
$ cd /data/repo && bash tests/test_coverage_guard.sh > /tmp/opencode/cg-run2.log 2>&1; echo "rc=$?"; grep -c '^PASS' /tmp/opencode/cg-run2.log; echo "--- fails:"; grep -n '^FAIL\|^SKIP' /tmp/opencode/cg-run2.log; tail -3 /tmp/opencode/cg-run2.log
rc=1
137
--- fails:
123:FAIL: M1 the mutant RUNS (not a crash) (want='True' got='0')
128:FAIL: M2 the mutant RUNS (want='True' got='0')
134:FAIL: M3 the mutant RUNS (want='True' got='0')
137:FAIL: M3 the mutant WROTE the baseline on a red verdict (the swallow) (want='0' got='1')
139:FAIL: M4 the mutant RUNS (want='True' got='0')
144:FAIL: M4 surgical: delta's unexplained fall is untouched too (want='unexplained-fall' got='explained-fall')
FAIL: M4 surgical: delta's unexplained fall is untouched too (want='unexplained-fall' got='explained-fall')

=== Results: 137 passed, 6 failed, 0 skipped ===
> build · mimo-v2.6-flash-free
Six failures left — four are an inverted `$(...; echo $?)` idiom ("True" is never printed), one inverted write-check, one wrong surgical literal. Fixing:
← Edit repo/tests/test_coverage_guard.sh
Index: repo/tests/test_coverage_guard.sh
===================================================================
--- repo/tests/test_coverage_guard.sh
+++ repo/tests/test_coverage_guard.sh
@@ -92,8 +92,11 @@
 }
 assert_ne() { # desc unwanted got — "these two must differ"
   if [ "$3" != "$2" ]; then ok "$1"; else fail "$1 (want!='${2:0:40}' got identical)"; fi
 }
+assert_ran() { # desc rc — the command exited 0 or 1: it RAN (a crash is 126/127/2)
+  case "$3" in 0|1) ok "$1" ;; *) fail "$1 (want rc=0|1 got=$3)" ;; esac
+}
 
 # jsonq <expr> — python expression over d, the parsed JSON object on stdin.
 jsonq() {
   printf '%s' "$OUT" | python3 -c '

$ cd /data/repo && grep -n 'the mutant RUNS\|the swallow\|delta.s unexplained' tests/test_coverage_guard.sh
585:  assert_eq "M1 the mutant RUNS (not a crash)" "True" \
605:  assert_eq "M2 the mutant RUNS" "True" \
617:# baseline, which is exactly the swallow the gate exists to refuse.
628:  assert_eq "M3 the mutant RUNS" "True" \
633:  assert_eq "M3 the mutant WROTE the baseline on a red verdict (the swallow)" \
649:  assert_eq "M4 the mutant RUNS" "True" \
657:  assert_eq "M4 surgical: delta's unexplained fall is untouched too" "unexplained-fall" \
> build · mimo-v2.6-flash-free
→ Read repo/tests/test_coverage_guard.sh [limit=90, offset=580]
> build · mimo-v2.6-flash-free
← Edit repo/tests/test_coverage_guard.sh
Index: repo/tests/test_coverage_guard.sh
===================================================================
--- repo/tests/test_coverage_guard.sh
+++ repo/tests/test_coverage_guard.sh
@@ -581,10 +581,9 @@
   GBASE="$SB/base-one.json"; GCOV="$SB/cov-one.json"; GFAILED=beta; GFAILED_SET=1
   guard "$TOOL" --format json
   real_rc=$RC
   guard "$SB/m1" --format json
-  assert_eq "M1 the mutant RUNS (not a crash)" "True" \
-    "$([ "$RC" -eq 0 ] || [ "$RC" -eq 1 ]; echo $?)"
+  assert_ran "M1 the mutant RUNS (not a crash)" "$RC"
   assert_rc "M1 divergence: the real tool exits 0 on an explained fall" 0 "$real_rc"
   assert_rc "M1 and the mutant, which cannot see an explanation, exits 1" 1 "$RC"
   assert_eq "M1 its beta row says unexplained" "unexplained-fall" \
     "$(jsonq 'd["rows"]["beta"]["state"]')"

← Edit repo/tests/test_coverage_guard.sh
Index: repo/tests/test_coverage_guard.sh
===================================================================
--- repo/tests/test_coverage_guard.sh
+++ repo/tests/test_coverage_guard.sh
@@ -600,10 +600,9 @@
   guard "$TOOL" --format json
   real_rc=$RC
   real_state=$(jsonq 'd["rows"]["beta"]["state"]')
   guard "$SB/m2" --format json
-  assert_eq "M2 the mutant RUNS" "True" \
-    "$([ "$RC" -eq 0 ] || [ "$RC" -eq 1 ]; echo $?)"
+  assert_ran "M2 the mutant RUNS" "$RC"
   assert_rc "M2 divergence: the real tool exits 1 on a healthy-unit fall" 1 "$real_rc"
   assert_eq "M2 its row reads unexplained-fall" "unexplained-fall" "$real_state"
   assert_rc "M2 the mutant exits 0 - it never sees a fall at all" 0 "$RC"
   assert_eq "M2 and calls that fall simply ok" "ok" \

← Edit repo/tests/test_coverage_guard.sh
Index: repo/tests/test_coverage_guard.sh
===================================================================
--- repo/tests/test_coverage_guard.sh
+++ repo/tests/test_coverage_guard.sh
@@ -622,10 +622,9 @@
   guard "$TOOL" --record --format json
   real_rc=$RC
   real_md5=$(md5sum "$SB/base-m3.json" | awk '{print $1}')
   guard "$SB/m3" --record --format json
-  assert_eq "M3 the mutant RUNS" "True" \
-    "$([ "$RC" -eq 0 ] || [ "$RC" -eq 1 ]; echo $?)"
+  assert_ran "M3 the mutant RUNS" "$RC"
   assert_rc "M3 divergence: the real tool exits 1 and records nothing" 1 "$real_rc"
   assert_eq "M3 its baseline is byte-identical after the attempt" "$before" "$real_md5"
   mutant_md5=$(md5sum "$SB/base-m3.json" | awk '{print $1}')
   assert_eq "M3 the mutant WROTE the baseline on a red verdict (the swallow)" \

← Edit repo/tests/test_coverage_guard.sh
Index: repo/tests/test_coverage_guard.sh
===================================================================
--- repo/tests/test_coverage_guard.sh
+++ repo/tests/test_coverage_guard.sh
@@ -626,10 +626,10 @@
   assert_ran "M3 the mutant RUNS" "$RC"
   assert_rc "M3 divergence: the real tool exits 1 and records nothing" 1 "$real_rc"
   assert_eq "M3 its baseline is byte-identical after the attempt" "$before" "$real_md5"
   mutant_md5=$(md5sum "$SB/base-m3.json" | awk '{print $1}')
-  assert_eq "M3 the mutant WROTE the baseline on a red verdict (the swallow)" \
-    "0" "$([ "$before" = "$mutant_md5" ]; echo $?)"
+  assert_ne "M3 the mutant WROTE the baseline on a red verdict (the swallow)" \
+    "$before" "$mutant_md5"
 else
   fail "M3 precondition: the record gate was not found exactly once"
 fi
 

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)
[Thu Oct 15 04:15:22 2026] 127.0.0.1:46496 Accepted
[Thu Oct 15 04:15:22 2026] 127.0.0.1:46496 Closing
[Thu Oct 15 04:15:22 2026] 127.0.0.1:46498 Accepted
[Thu Oct 15 04:15:22 2026] 127.0.0.1:46498 Closing
[Thu Oct 15 04:15:22 2026] 127.0.0.1:46512 Accepted
[Thu Oct 15 04:15:22 2026] 127.0.0.1:46512 Closing
[Thu Oct 15 04:15:22 2026] 127.0.0.1:46518 Accepted
[Thu Oct 15 04:15:23 2026] 127.0.0.1:46518 Closing
[Thu Oct 15 04:15:23 2026] 127.0.0.1:46532 Accepted
[Thu Oct 15 04:15:23 2026] 127.0.0.1:46532 Closing
[Thu Oct 15 04:16:27 2026] 127.0.0.1:60348 Accepted
[Thu Oct 15 04:16:27 2026] 127.0.0.1:60348 Closing
[Thu Oct 15 04:16:27 2026] 127.0.0.1:60364 Accepted
[Thu Oct 15 04:16:27 2026] 127.0.0.1:60364 Closing
[Thu Oct 15 04:16:27 2026] 127.0.0.1:60372 Accepted
[Thu Oct 15 04:16:27 2026] 127.0.0.1:60372 Closing
[Thu Oct 15 04:16:27 2026] 127.0.0.1:60386 Accepted
[Thu Oct 15 04:16:27 2026] 127.0.0.1:60386 Closing
[Thu Oct 15 04:16:27 2026] 127.0.0.1:60402 Accepted
[Thu Oct 15 04:16:27 2026] 127.0.0.1:60402 Closing
[Thu Oct 15 04:16:27 2026] 127.0.0.1:60404 Accepted
[Thu Oct 15 04:16:27 2026] 127.0.0.1:60404 Closing
[Thu Oct 15 04:16:27 2026] 127.0.0.1:60414 Accepted
[Thu Oct 15 04:16:28 2026] 127.0.0.1:60414 Closing
[Thu Oct 15 04:16:28 2026] 127.0.0.1:60424 Accepted
[Thu Oct 15 04:16:28 2026] 127.0.0.1:60424 Closing
[Thu Oct 15 04:16:28 2026] 127.0.0.1:60436 Accepted
[Thu Oct 15 04:16:28 2026] 127.0.0.1:60436 Closing
[Thu Oct 15 04:16:28 2026] 127.0.0.1:60446 Accepted
[Thu Oct 15 04:16:28 2026] 127.0.0.1:60446 Closing
[Thu Oct 15 04:20:16 2026] 127.0.0.1:37590 Accepted
[Thu Oct 15 04:20:16 2026] 127.0.0.1:37590 Closing
[Thu Oct 15 04:21:58 2026] 127.0.0.1:43134 Accepted
[Thu Oct 15 04:21:58 2026] 127.0.0.1:43134 Closing
[Thu Oct 15 04:25:13 2026] 127.0.0.1:42370 Accepted
[Thu Oct 15 04:25:13 2026] 127.0.0.1:42370 Closing
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60250 Accepted
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60250 Closing
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60256 Accepted
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60256 Closing
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60272 Accepted
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60272 Closing
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60280 Accepted
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60280 Closing
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60284 Accepted
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60284 Closing
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60296 Accepted
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60296 Closing
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60298 Accepted
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60298 Closing
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60304 Accepted
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60304 Closing
[Thu Oct 15 04:30:22 2026] 127.0.0.1:60310 Accepted
[Thu Oct 15 04:30:23 2026] 127.0.0.1:60310 Closing
[Thu Oct 15 04:30:23 2026] 127.0.0.1:60316 Accepted
[Thu Oct 15 04:30:23 2026] 127.0.0.1:60316 Closing
[Thu Oct 15 04:30:53 2026] 127.0.0.1:43196 Accepted
[Thu Oct 15 04:30:54 2026] 127.0.0.1:43196 Closing
[Thu Oct 15 04:30:54 2026] 127.0.0.1:43206 Accepted

Other app logs: downloads.log

Generated 2026-10-15 02:30:54 UTC · Gladex.de