Gladex Agent Logs
Agent run logs & app logs · env: prod · LAN-only investor surface
Overview
| Run logs | 1626 files, 117.5 MB |
| Latest run log | run-20261015-033336-1160.log |
| Log directory | /data/agent-logs |
| App log directory | /opt/startup/prod/logs |
Run logs (newest first, last 50)
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
[0m← [0mEdit 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
[0m← [0mEdit 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"]')
[0m← [0mEdit 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
[0m← [0mEdit 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
[0m$ [0mcd /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:
[0m← [0mEdit 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 '
[0m$ [0mcd /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
[0m→ [0mRead repo/tests/test_coverage_guard.sh [90m[limit=90, offset=580][0m
> build · mimo-v2.6-flash-free
[0m← [0mEdit 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"]')"
[0m← [0mEdit 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" \
[0m← [0mEdit 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)" \
[0m← [0mEdit 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