Gladex Agent Logs

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

Overview
Run logs965 files, 52.6 MB
Latest run logrun-20261003-091019-563.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20261003-091019-563.log 225 KB 2026-10-03 07:23:53
run-20261003-081446-562.log 378 KB 2026-10-03 07:00:09
run-20261003-065714-561.log 346 KB 2026-10-03 06:04:39
run-20261003-053854-560.log 394 KB 2026-10-03 04:47:05
run-20261003-042104-559.log 276 KB 2026-10-03 03:28:47
run-20261003-031958-558.log 246 KB 2026-10-03 02:10:57
run-20261003-024901-557.log 376 KB 2026-10-03 01:09:51
run-20261003-020542-556.log 233 KB 2026-10-03 00:38:54
run-20261003-015534-555.log 153 B 2026-10-02 23:55:35
run-20261003-014525-554.log 153 B 2026-10-02 23:45:26
run-20261003-013518-553.log 153 B 2026-10-02 23:35:18
run-20261003-012510-552.log 153 B 2026-10-02 23:25:11
run-20261003-011502-551.log 153 B 2026-10-02 23:15:02
run-20261003-010454-550.log 190 B 2026-10-02 23:04:55
run-20261003-005446-549.log 153 B 2026-10-02 22:54:47
run-20261003-004439-548.log 153 B 2026-10-02 22:44:39
run-20261003-003431-547.log 153 B 2026-10-02 22:34:32
run-20261003-002423-546.log 153 B 2026-10-02 22:24:24
run-20261003-001415-545.log 153 B 2026-10-02 22:14:16
run-20261003-000408-544.log 153 B 2026-10-02 22:04:08
run-20261002-235400-543.log 153 B 2026-10-02 21:54:01
run-20261002-234352-542.log 153 B 2026-10-02 21:43:53
run-20261002-233344-541.log 153 B 2026-10-02 21:33:45
run-20261002-232337-540.log 190 B 2026-10-02 21:23:37
run-20261002-231329-539.log 153 B 2026-10-02 21:13:30
run-20261002-230321-538.log 153 B 2026-10-02 21:03:22
run-20261002-225313-537.log 153 B 2026-10-02 20:53:14
run-20261002-224306-536.log 153 B 2026-10-02 20:43:06
run-20261002-223258-535.log 153 B 2026-10-02 20:32:59
run-20261002-222250-534.log 190 B 2026-10-02 20:22:51
run-20261002-221242-533.log 153 B 2026-10-02 20:12:43
run-20261002-220235-532.log 153 B 2026-10-02 20:02:35
run-20261002-211002-531.log 371 KB 2026-10-02 19:52:28
run-20261002-200155-530.log 366 KB 2026-10-02 18:59:55
run-20261002-185533-529.log 349 KB 2026-10-02 17:51:48
run-20261002-170315-528.log 651 KB 2026-10-02 16:45:25
run-20261002-161229-527.log 357 KB 2026-10-02 14:53:08
run-20261002-160222-526.log 153 B 2026-10-02 14:02:23
run-20261002-155214-525.log 153 B 2026-10-02 13:52:15
run-20261002-154207-524.log 153 B 2026-10-02 13:42:08
run-20261002-153159-523.log 190 B 2026-10-02 13:32:00
run-20261002-152152-522.log 153 B 2026-10-02 13:21:53
run-20261002-151144-521.log 153 B 2026-10-02 13:11:45
run-20261002-150137-520.log 153 B 2026-10-02 13:01:38
run-20261002-145129-519.log 153 B 2026-10-02 12:51:30
run-20261002-144121-518.log 190 B 2026-10-02 12:41:22
run-20261002-143114-517.log 190 B 2026-10-02 12:31:15
run-20261002-142106-516.log 153 B 2026-10-02 12:21:07
run-20261002-141059-515.log 153 B 2026-10-02 12:10:59
run-20261002-140051-514.log 153 B 2026-10-02 12:00:52
Tail — run-20261003-091019-563.log (last 200 lines)
+  grep -qF -- "$c36_new" "$D/tools/REGISTRY.md"
+c41_sec=$(awk -v want="## test_registry_coverage.sh" \
+  '$0 == want { i = 1; next } i && /^## / { exit } i { print }' "$D/tools/REGISTRY.md")
+assert_contains "C41o plant: while this section's own copy is untouched" \
+  "$c36_lit" "$c41_sec"
+run_child "$D"
+assert_eq "C41p a stale copy OUTSIDE the section -> exit 0: the boundary was not drawn wider than the section" \
+  0 "$RC"
+assert_eq "C41q and zero violations - a stray copy is neither required nor blamed" \
+  0 "$(sget violations)"
+
+# Plant C — the subject itself: the section heading is gone while BOTH copies
+# stay in the file (they simply fall into the neighbouring section). An empty
+# subject fails both verdicts; it never reads as "no copy to check, so nothing
+# to report", which is the vacuity half of "an input that was not read is
+# never a pass".
+D=$(fresh c41c)
+python3 - "$D/tools/REGISTRY.md" <<'PY'
+import sys
+p = sys.argv[1]
+s = open(p).read()
+name = "\n## test_registry_coverage.sh\n"
+assert s.count(name) == 1, "plant: expected exactly one suite section heading"
+open(p, 'w').write(s.replace(name, "\n"))
+PY
+expect_not "C41r plant: the suite's own section heading is gone from the registry" \
+  grep -q '^## test_registry_coverage.sh$' "$D/tools/REGISTRY.md"
+run_child "$D"
+assert_eq "C41s the registry really lost one suite section - the plant is structural, not textual" \
+  "$(( $(sget_live test_sections) - 1 ))" "$(sget test_sections)"
+assert_eq "C41t no section to read -> exit 1, never 0 and never a silent skip" 1 "$RC"
+has_v live_re_quote registry \
+  && ok "C41u VIOLATION live_re_quote registry" \
+  || fail "C41u VIOLATION live_re_quote registry"
+has_v live_gloss registry \
+  && ok "C41v VIOLATION live_gloss registry" \
+  || fail "C41v VIOLATION live_gloss registry"
+assert_eq "C41w exactly two violations - a subject that cannot be found is not a subject that passed" \
+  2 "$(sget violations)"
+c41_old=0
+grep -qF -- "$c36_lit" "$D/tools/REGISTRY.md" \
+  && grep -qF -- "The gloss, derived: $c37_gloss" "$D/tools/REGISTRY.md" \
+  && c41_old=1
+assert_eq "C41x and the PRE-(124) subject still held both copies with the heading deleted - the comparison that used to run passed here too" \
+  1 "$c41_old"
+
 # ==========================================================================
 # D — this suite's own argv surface: the rule it enforces for everyone else.
 # ==========================================================================
 bash "$SELF" --help >/dev/null 2>&1

> build · mimo-v2.6-flash-free
$ cd /tmp/opencode/q124/cand/tests && bash -n test_registry_coverage.sh && echo "SYNTAX OK"; grep -c 'assert_eq\|assert_contains\|assert_not_contains\|expect \|expect_not \|ok "' test_registry_coverage.sh >/dev/null; grep -oE '\bC4[01][a-x]?\b' test_registry_coverage.sh | sort -u -V | tr '\n' ' '; echo; echo "--- declared controls:"; grep -n 'negative controls:' test_registry_coverage.sh
SYNTAX OK
C40 C40a C40b C40c C40d C40e C40f C40g C40h C40i C40j C40k C40l C40m C40n C40o C40p C40q C40r C40s C41 C41a C41b C41c C41d C41e C41f C41g C41h C41i C41j C41k C41l C41m C41n C41o C41p C41q C41r C41s C41t C41u C41v C41w C41x 
--- declared controls:
1431:  C  41 negative controls: each plant is proved to have taken effect first,
> build · mimo-v2.6-flash-free
$ cd /tmp/opencode/q124 && cp -p cand/tests/test_registry_coverage.sh dry/tests/test_registry_coverage.sh && cd /data/repo && time (REGISTRY_COVERAGE_CHILD=1 \
  REGISTRY_COVERAGE_TOOLS_DIR=/tmp/opencode/q124/dry/tools \
  REGISTRY_COVERAGE_REGISTRY=/tmp/opencode/q124/dry/tools/REGISTRY.md \
  REGISTRY_COVERAGE_TESTS_DIR=/tmp/opencode/q124/dry/tests \
  bash /tmp/opencode/q124/dry/tests/test_registry_coverage.sh > /tmp/opencode/q124/clean.out 2>&1); echo "rc=$?"; grep -E '^(SUMMARY|VIOLATION|ERROR|DIAG)' /tmp/opencode/q124/clean.out | cut -c1-400
real	0m14.619s
user	0m8.165s
sys	0m3.421s
rc=0
SUMMARY tools=24 registered=36 test_sections=12 help_run=24 help_ok=24 badarg_run=24 badarg_ok=24 ec_run=24 ec_ok=24 fmt_n=20 fmt_value_ok=20 fmt_missing_ok=20 timeout_n=7 timeout_ok=7 port_n=4 port_value_ok=4 port_missing_ok=4 miss_n=40 miss_missing_ok=40 conv_pairs=63 conv_extra=0 fig_disc=84 fig_live=1 fig_claim=84 fig_stale=0 fig_undated=0 fig_head=na fig_src=na syn_n=23 syn_ok=23 synp_n=63 sy
> build · mimo-v2.6-flash-free
$ grep '^SUMMARY' /tmp/opencode/q124/clean.out | tr ' ' '\n' | grep -E 'violations|live_re_sites|gloss_sites|fig_live|test_sections|registered'; echo "=== any VIOLATION/ERROR/DIAG lines:"; grep -cE '^(VIOLATION|ERROR|DIAG)' /tmp/opencode/q124/clean.out
registered=36
test_sections=12
fig_live=1
live_re_sites=3
gloss_sites=3
violations=0
=== any VIOLATION/ERROR/DIAG lines:
0
> build · mimo-v2.6-flash-free
$ cat > /tmp/opencode/q124/plant.py <<'PY'
import sys
which, p = sys.argv[1], sys.argv[2]
lit, lit_bad, gl, gl_bad = sys.argv[3], sys.argv[4], sys.argv[5], sys.argv[6]
s = open(p).read()
name = "## test_registry_coverage.sh"
def section_bounds(s):
    start = s.index("\n" + name + "\n") + 1
    end = s.index("\n## ", start)
    return start, end
if which == "a":
    assert s.count("\n" + name + "\n") == 1, "plant: expected exactly one suite section heading"
    start, end = section_bounds(s)
    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"
    s = s[:start] + sec.replace(lit, lit_bad, 1).replace(gl, gl_bad, 1) + s[end:]
    assert s.count("\n## healthcheck\n") == 1, "plant: expected exactly one healthcheck heading"
    h = s.index("\n## healthcheck\n") + 1
    he = s.index("\n## ", h)
    ins = ["(124) plant A: the CORRECT pair, parked OUTSIDE the suite's section:",
           "  paraphrase: `" + lit + "`",
           "  The gloss, derived: " + gl]
    s = s[:he] + "\n" + "\n".join(ins) + s[he:]
elif which == "b":
    start, end = section_bounds(s)
    sec = s[start:end]
    assert lit in sec and gl in sec, "plant: this section's own copies must stay correct"
    assert lit_bad not in sec and gl_bad not in sec, "plant: nothing stale inside to begin with"
    assert s.count("\n## healthcheck\n") == 1, "plant: expected exactly one healthcheck heading"
    h = s.index("\n## healthcheck\n") + 1
    he = s.index("\n## ", h)
    ins = ["(124) plant B: a STALE pair, parked OUTSIDE the suite's section:",
           "  paraphrase: `" + lit_bad + "`",
           "  The gloss, derived: " + gl_bad]
    s = s[:he] + "\n" + "\n".join(ins) + s[he:]
elif which == "c":
    nm = "\n" + name + "\n"
    assert s.count(nm) == 1, "plant: expected exactly one suite section heading"
    s = s.replace(nm, "\n")
else:
    raise SystemExit("unknown plant")
open(p, 'w').write(s)
PY
cd /data/repo && git show HEAD:tests/test_registry_coverage.sh > /tmp/opencode/q124/old.sh && grep -c 'reg_sec' /tmp/opencode/q124/old.sh || echo "old.sh: no reg_sec (pre-(124))"; grep -c 'LIVE_RE=' /tmp/opencode/q124/old.sh; wc -l /tmp/opencode/q124/old.sh
0
old.sh: no reg_sec (pre-(124))
21
3492 /tmp/opencode/q124/old.sh
> build · mimo-v2.6-flash-free
$ cat > /tmp/opencode/q124/run_plant.sh <<'EOS'
#!/usr/bin/env bash
# run_plant.sh <plant a|b|c> <suite-file> <tag>
plant=$1; suite=$2; tag=$3
D=/tmp/opencode/q124/run_$tag
rm -rf "$D"; mkdir -p "$D/tools" "$D/tests"
cp -p /tmp/opencode/q124/dry/tools/* "$D/tools/"
cp -p /tmp/opencode/q124/dry/tests/* "$D/tests/"
cp -p "$suite" "$D/tests/test_registry_coverage.sh"
c36_lit=$(grep '^LIVE_RE=' "$suite" | head -1)
c36_new=$(python3 -c 'import sys;s=sys.argv[1];t=r"(\*\*)?";assert s.count(t)==1,"no single bold group";print(s.replace(t,"",1))' "$c36_lit")
eval "$(sed -n '/^live_gloss() {/,/^}/p' "$suite")"
c37_gloss=$(live_gloss "${c36_lit#LIVE_RE=}")
c37_gloss_mut=$(live_gloss "${c36_new#LIVE_RE=}")
python3 /tmp/opencode/q124/plant.py "$plant" "$D/tools/REGISTRY.md" "$c36_lit" "$c36_new" "$c37_gloss" "$c37_gloss_mut" || { echo "$tag: PLANT FAILED"; exit 9; }
out=$(REGISTRY_COVERAGE_CHILD=1 \
  REGISTRY_COVERAGE_TOOLS_DIR="$D/tools" \
  REGISTRY_COVERAGE_REGISTRY="$D/tools/REGISTRY.md" \
  REGISTRY_COVERAGE_TESTS_DIR="$D/tests" \
  bash "$D/tests/test_registry_coverage.sh" 2>&1)
rc=$?
echo "== plant=$plant suite=$tag rc=$rc"
printf '%s\n' "$out" | grep -E '^(VIOLATION|ERROR|DIAG)' || echo "   (no VIOLATION / ERROR / DIAG line)"
printf '%s\n' "$out" | grep '^SUMMARY' | tr ' ' '\n' | grep -E '^(violations|live_re_sites|gloss_sites|test_sections)=' | tr '\n' ' '; echo
old=0
grep -qF -- "$c36_lit" "$D/tools/REGISTRY.md" \
  && grep -qF -- "The gloss, derived: $c37_gloss" "$D/tools/REGISTRY.md" && old=1
echo "   pre-(124) whole-document predicate: $old"
EOS
chmod +x /tmp/opencode/q124/run_plant.sh
for p in a b c; do
  /tmp/opencode/q124/run_plant.sh $p /tmp/opencode/q124/dry/tests/test_registry_coverage.sh new-$p > /tmp/opencode/q124/new-$p.out 2>&1 &
  /tmp/opencode/q124/run_plant.sh $p /tmp/opencode/q124/old.sh old-$p > /tmp/opencode/q124/old-$p.out 2>&1 &
done
wait
for p in a b c; do echo "########## PLANT $p — NEW ##########"; cat /tmp/opencode/q124/new-$p.out; echo "########## PLANT $p — PRE-(124) ##########"; cat /tmp/opencode/q124/old-$p.out; done
########## PLANT a — NEW ##########
== plant=a suite=new-a rc=1
VIOLATION live_re_quote registry
VIOLATION live_gloss registry
test_sections=12 live_re_sites=3 gloss_sites=3 violations=2 
   pre-(124) whole-document predicate: 1
########## PLANT a — PRE-(124) ##########
== plant=a suite=old-a rc=0
   (no VIOLATION / ERROR / DIAG line)
test_sections=12 live_re_sites=3 gloss_sites=3 violations=0 
   pre-(124) whole-document predicate: 1
########## PLANT b — NEW ##########
== plant=b suite=new-b rc=0
   (no VIOLATION / ERROR / DIAG line)
test_sections=12 live_re_sites=3 gloss_sites=3 violations=0 
   pre-(124) whole-document predicate: 1
########## PLANT b — PRE-(124) ##########
== plant=b suite=old-b rc=0
   (no VIOLATION / ERROR / DIAG line)
test_sections=12 live_re_sites=3 gloss_sites=3 violations=0 
   pre-(124) whole-document predicate: 1
########## PLANT c — NEW ##########
== plant=c suite=new-c rc=1
VIOLATION live_re_quote registry
VIOLATION live_gloss registry
test_sections=11 live_re_sites=3 gloss_sites=3 violations=2 
   pre-(124) whole-document predicate: 1
########## PLANT c — PRE-(124) ##########
== plant=c suite=old-c rc=0
   (no VIOLATION / ERROR / DIAG line)
test_sections=11 live_re_sites=3 gloss_sites=3 violations=0 
   pre-(124) whole-document predicate: 1
> build · mimo-v2.6-flash-free
All six replays confirm the design (new code reddens plants A and C, stays silent on B; pre-(124) code is green on all three). Installing atomically and running the full suite:

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)
[Sat Oct  3 09:27:41 2026] 127.0.0.1:36280 Accepted
[Sat Oct  3 09:27:41 2026] 127.0.0.1:36280 Closing
[Sat Oct  3 09:27:41 2026] 127.0.0.1:36282 Accepted
[Sat Oct  3 09:27:41 2026] 127.0.0.1:36282 Closing
[Sat Oct  3 09:27:41 2026] 127.0.0.1:36290 Accepted
[Sat Oct  3 09:27:41 2026] 127.0.0.1:36290 Closing
[Sat Oct  3 09:28:05 2026] 127.0.0.1:55776 Accepted
[Sat Oct  3 09:28:05 2026] 127.0.0.1:55776 Closed without sending a request; it was probably just an unused speculative preconnection
[Sat Oct  3 09:28:05 2026] 127.0.0.1:55776 Closing
[Sat Oct  3 09:28:07 2026] 127.0.0.1:55788 Accepted
[Sat Oct  3 09:28:07 2026] 127.0.0.1:55788 Closed without sending a request; it was probably just an unused speculative preconnection
[Sat Oct  3 09:28:07 2026] 127.0.0.1:55788 Closing
[Sat Oct  3 09:29:15 2026] 127.0.0.1:53586 Accepted
[Sat Oct  3 09:29:15 2026] 127.0.0.1:53586 Closing
[Sat Oct  3 09:29:15 2026] 127.0.0.1:53600 Accepted
[Sat Oct  3 09:29:15 2026] 127.0.0.1:53600 Closing
[Sat Oct  3 09:29:15 2026] 127.0.0.1:53606 Accepted
[Sat Oct  3 09:29:15 2026] 127.0.0.1:53606 Closing
[Sat Oct  3 09:29:15 2026] 127.0.0.1:53608 Accepted
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53608 Closing
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53616 Accepted
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53616 Closing
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53626 Accepted
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53626 Closing
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53628 Accepted
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53628 Closing
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53644 Accepted
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53644 Closing
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53656 Accepted
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53656 Closing
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53658 Accepted
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53658 Closing
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53670 Accepted
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53670 Closing
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53686 Accepted
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53686 Closing
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53692 Accepted
[Sat Oct  3 09:29:16 2026] 127.0.0.1:53692 Closing
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49622 Accepted
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49622 Closing
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49632 Accepted
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49632 Closing
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49634 Accepted
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49634 Closing
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49636 Accepted
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49636 Closing
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49652 Accepted
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49652 Closing
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49654 Accepted
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49654 Closing
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49668 Accepted
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49668 Closing
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49674 Accepted
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49674 Closing
[Sat Oct  3 09:30:11 2026] 127.0.0.1:49686 Accepted
[Sat Oct  3 09:30:12 2026] 127.0.0.1:49686 Closing
[Sat Oct  3 09:30:12 2026] 127.0.0.1:49700 Accepted
[Sat Oct  3 09:30:12 2026] 127.0.0.1:49700 Closing
[Sat Oct  3 09:30:12 2026] 127.0.0.1:49708 Accepted

Generated 2026-10-03 07:30:12 UTC · Gladex.de