Gladex Agent Logs

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

Overview
Run logs1197 files, 74.3 MB
Latest run logrun-20261006-211819-731.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20261006-211819-731.log 362 KB 2026-10-06 19:57:11
run-20261006-204734-730.log 136 KB 2026-10-06 19:08:10
run-20261006-193520-729.log 347 KB 2026-10-06 18:37:25
run-20261006-164643-728.log 351 KB 2026-10-06 17:25:12
run-20261006-124129-727.log 445 KB 2026-10-06 14:36:35
run-20261006-104452-726.log 468 KB 2026-10-06 10:31:20
run-20261006-090726-725.log 338 KB 2026-10-06 08:34:44
run-20261006-073331-724.log 245 KB 2026-10-06 06:57:18
run-20261006-061912-723.log 266 KB 2026-10-06 05:23:23
run-20261006-053304-722.log 192 KB 2026-10-06 04:09:04
run-20261006-041829-721.log 341 KB 2026-10-06 03:22:57
run-20261006-031229-720.log 292 KB 2026-10-06 02:08:21
run-20261006-022028-719.log 271 KB 2026-10-06 01:02:21
run-20261006-013213-718.log 276 KB 2026-10-06 00:10:20
run-20261006-004412-717.log 192 KB 2026-10-05 23:22:05
run-20261005-234618-716.log 235 KB 2026-10-05 22:34:04
run-20261005-225616-715.log 296 KB 2026-10-05 21:36:11
run-20261005-215648-714.log 220 KB 2026-10-05 20:46:08
run-20261005-205855-713.log 188 KB 2026-10-05 19:46:40
run-20261005-201246-712.log 321 KB 2026-10-05 18:48:47
run-20261005-190629-711.log 213 KB 2026-10-05 18:02:38
run-20261005-174000-710.log 397 KB 2026-10-05 16:56:22
run-20261005-164047-709.log 254 KB 2026-10-05 15:29:53
run-20261005-160934-708.log 139 KB 2026-10-05 14:30:37
run-20261005-155925-707.log 153 B 2026-10-05 13:59:26
run-20261005-154917-706.log 190 B 2026-10-05 13:49:18
run-20261005-153909-705.log 153 B 2026-10-05 13:39:09
run-20261005-152900-704.log 153 B 2026-10-05 13:29:01
run-20261005-142051-703.log 222 KB 2026-10-05 13:18:53
run-20261005-130731-702.log 227 KB 2026-10-05 12:10:44
run-20261005-120453-701.log 163 KB 2026-10-05 10:57:24
run-20261005-094142-700.log 440 KB 2026-10-05 09:54:46
run-20261005-090130-699.log 165 KB 2026-10-05 07:31:34
run-20261005-071341-698.log 435 KB 2026-10-05 06:51:22
run-20261005-061647-697.log 196 KB 2026-10-05 05:03:34
run-20261005-052959-696.log 226 KB 2026-10-05 04:06:39
run-20261005-044026-695.log 177 KB 2026-10-05 03:19:52
run-20261005-034927-694.log 254 KB 2026-10-05 02:30:18
run-20261005-030059-693.log 312 KB 2026-10-05 01:39:20
run-20261004-233305-692.log 1010 KB 2026-10-05 00:50:51
run-20261004-230052-691.log 130 KB 2026-10-04 21:22:57
run-20261004-221607-690.log 258 KB 2026-10-04 20:50:44
run-20261004-210204-689.log 310 KB 2026-10-04 20:05:59
run-20261004-184239-688.log 505 KB 2026-10-04 18:51:56
run-20261004-172538-687.log 486 KB 2026-10-04 16:32:32
run-20261004-165539-686.log 142 KB 2026-10-04 15:15:29
run-20261004-161338-685.log 176 KB 2026-10-04 14:45:31
run-20261004-160330-684.log 153 B 2026-10-04 14:03:31
run-20261004-155322-683.log 153 B 2026-10-04 13:53:23
run-20261004-154314-682.log 190 B 2026-10-04 13:43:15
Tail — run-20261006-204734-730.log (last 200 lines)
 
 # `--mutations` additionally runs the PLANT battery at the end of this file:
 # two append-shaped mutants of tools/ip-drift-cron pinned to a section-28
-# assertion (M12/M13), and two mutants of THIS FILE's own source pinned to a
-# `control31 src:` assertion (M14/M15, queue item (af)). Every plant re-runs
-# this suite from a sandbox tree, so a pin is grepped out of a real run of the
-# real assertions. It is opt-in for the reason tests/test_ip_drift_cron.sh's
-# battery is opt-in — every mutant costs a whole extra suite run — while the
-# system-status mutants of section 29 below stay unconditional, as they always
-# have been.
+# assertion (M12/M13), and four mutants of THIS FILE's own source pinned to
+# one `control31 src:` assertion each (M14/M15, queue item (af)) or to one
+# `control28 src:` / `control29 src:` assertion each (M16/M17, queue item
+# (ag)). Every plant re-runs this suite from a sandbox tree, so a pin is
+# grepped out of a real run of the real assertions. It is opt-in for the
+# reason tests/test_ip_drift_cron.sh's battery is opt-in — every mutant costs
+# a whole extra suite run — while the system-status mutants of section 29
+# below stay unconditional, as they always have been.
 DO_WRITER_MUT=0
 for _arg in "$@"; do
     case "$_arg" in
         --mutations) DO_WRITER_MUT=1 ;;

> build · mimo-v2.6-flash-free
← Edit repo/tests/test_system_status_ip_drift.sh
Index: repo/tests/test_system_status_ip_drift.sh
===================================================================
--- repo/tests/test_system_status_ip_drift.sh
+++ repo/tests/test_system_status_ip_drift.sh
@@ -298,12 +298,12 @@
                 "" \
                 "  (no flags)   run every assertion in this file (the default)" \
                 "  --mutations  additionally run the plant battery: two append-" \
                 "               shaped mutants of tools/ip-drift-cron (pinned to one" \
-                "               section-28 assertion each) and two mutants of this" \
-                "               suite's own source (pinned to one control31 src" \
-                "               assertion each), every plant re-running this suite" \
-                "               from a sandbox tree" \
+                "               section-28 assertion each) and four mutants of this" \
+                "               suite's own source (pinned to one control28 src /" \
+                "               control29 src / control31 src assertion each), every" \
+                "               plant re-running this suite from a sandbox tree" \
                 "" \
                 "exit codes: 0 = all pass, 1 = at least one failure, 2 = bad usage"
             exit 0 ;;
         *)

> build · mimo-v2.6-flash-free
← Edit repo/tests/test_system_status_ip_drift.sh
Index: repo/tests/test_system_status_ip_drift.sh
===================================================================
--- repo/tests/test_system_status_ip_drift.sh
+++ repo/tests/test_system_status_ip_drift.sh
@@ -3236,9 +3236,9 @@
     # figures were re-measured on this file after the needles above were
     # built by concatenation: `grep -F -c` → 4, `s.count()` → 1 for M14 and
     # for M15's 58-byte needle alike.
     echo ""
-    echo "=== suite-source mutations: control31's own source, defeated, must be caught ==="
+    echo "=== suite-source mutations: this file's own source (control28 / control29 / control31), defeated, must be caught ==="
     run_suite_plant() {   # <id> <label> <find> <repl> <pin: the expected FAIL assertion>
         local id="$1" label="$2" find="$3" repl="$4" expect="$5"
         local tree="$SANDBOX/stree-$id" suite out n rc
         rm -rf "$tree"; mkdir -p "$tree"

> build · mimo-v2.6-flash-free
← Edit repo/tests/test_system_status_ip_drift.sh
Index: repo/tests/test_system_status_ip_drift.sh
===================================================================
--- repo/tests/test_system_status_ip_drift.sh
+++ repo/tests/test_system_status_ip_drift.sh
@@ -3323,8 +3323,58 @@
     run_suite_plant M15 "M15 the row-count expectation is edited down" \
         "$M15_A$M15_B" \
         '[ "$(meta31 calls)" = "3" ] && [ "$(meta31 rows)" = "18" ]' \
         "control31 src: got 4 call site(s) / 24 row(s) (12 anchor + 12 absence), expected 4 / 24 (12 + 12)"
+
+    # ---------------------------------------------------------------------------
+    # Queue item (ag), step (2): the same battery teeth for the two OLDER src
+    # halves in this file — `control28`'s (section 24's body-reading guard) and
+    # `control29`'s (the diagnosis pair-guard) — each of which re-reads THIS
+    # file's source against a written contract and, until this block, had no
+    # mutant in the battery editing what it reads: `run_mutation` copies
+    # `$TOOL`, `run_writer_plant` swaps `tools/ip-drift-cron`, and M14/M15 aim
+    # at `control31`. An edit that loosened either extractor or shrank either
+    # contract therefore had no line that could name it.
+    #
+    # Both shapes were planted OUT OF TREE first (`/tmp/opencode/probe50/`,
+    # `build.sh`, nothing under /data/repo written): `tests/` + the whole
+    # `tools/` copied into three trees from the committed suite (md5
+    # `79ee4c52650eb115e8542fa55823dab7`), each plant applied with
+    # `s.count(find) == 1` asserted inside the script, `bash -n` clean. Clean
+    # tree **759 passed / 0 failed, rc 0**; M16's tree **758 / 1, rc 1**, the
+    # single red `control28 src: the extracted set is not the contract`; M17's
+    # tree **758 / 1, rc 1**, the single red `control29 src: found 3 presence
+    # + 6 absence assertion(s), expected 3 + 6`. One red apiece, on exactly
+    # the pin each call below names: M16 removes a CONTRACT row while the
+    # extraction still returns nine, so the count assertion (which counts the
+    # extraction) stays green; M17 shrinks the COUNT expectation while
+    # extraction and contract both stay put, so the contract assertion (which
+    # diffs the two) stays green. Two shapes on purpose — the src half of
+    # either control has two assertions reading different things, and a
+    # single shape would have pinned only one of them.
+    #
+    # Blindness, measured the way (af) measured it: `--mutations` run over
+    # EACH planted tree with the battery as it then stood → **778 passed /
+    # 1 failed, rc 1** on both, the only red being the plant itself, and
+    # `grep -c 'M16\|M17'` over that whole output → **0** — all fifteen
+    # existing mutants (the thirteen plus M14/M15) still green over a
+    # control whose src half had just been edited, with nothing in the
+    # output saying so. The needles are BUILT, never quoted whole, for the
+    # same self-blindness reason M14/M15 are: this file must not contain the
+    # string it plants or `s.count(find) == 1` would be counting the
+    # plant's own definition beside the copy it moves.
+    M16_A="bad	\$LOG_CGN	run "
+    M16_B="'ip-drift-check --format json' by hand and read its public_ip."$'\n'
+    run_suite_plant M16 "M16 the control28 contract is shrunk by one row" \
+        "$M16_A$M16_B" \
+        "" \
+        "control28 src: the extracted set is not the contract"
+    M17_A='[ "$NOK29" = "3" ] '
+    M17_B='&& [ "$NAD29" = "6" ]'
+    run_suite_plant M17 "M17 the control29 count expectation is edited down" \
+        "$M17_A$M17_B" \
+        '[ "$NOK29" = "3" ] && [ "$NAD29" = "5" ]' \
+        "control29 src: found 3 presence + 6 absence assertion(s), expected 3 + 6"
 fi
 
 echo ""
 echo "=== Results: $PASS passed, $FAIL failed ==="

> build · mimo-v2.6-flash-free
$ cd /data/repo; bash -n tests/test_system_status_ip_drift.sh && echo "bash -n OK"; python3 - <<'PY'
s=open('tests/test_system_status_ip_drift.sh').read()
A16="bad\t$LOG_CGN\trun "
B16="'ip-drift-check --format json' by hand and read its public_ip.\n"
A17='[ "$NOK29" = "3" ] '
B17='&& [ "$NAD29" = "6" ]'
print("M16 find count:", s.count(A16+B16))
print("M17 find count:", s.count(A17+B17))
print("tab in M16_A def:", repr([l for l in s.split('\n') if l.startswith('    M16_A=')]))
print("M16_B def:", repr([l for l in s.split('\n') if l.startswith('    M16_B=')]))
PY
bash -n OK
M16 find count: 1
M17 find count: 1
tab in M16_A def: ['    M16_A="bad\t\\$LOG_CGN\trun "']
M16_B def: ['    M16_B="\'ip-drift-check --format json\' by hand and read its public_ip."$\'\\n\'']
> build · mimo-v2.6-flash-free
$ cd /data/repo; bash tests/test_system_status_ip_drift.sh > /tmp/opencode/probe50/worktree-plain.txt 2>&1; echo "default rc=$?"; grep -F '=== Results:' /tmp/opencode/probe50/worktree-plain.txt; grep -cF '  FAIL - ' /tmp/opencode/probe50/worktree-plain.txt; bash tests/test_system_status_ip_drift.sh --help; echo "help rc=$?"; bash tests/test_system_status_ip_drift.sh --bogus; echo "bogus rc=$?"
default rc=0
=== Results: 759 passed, 0 failed ===
0
usage: bash tests/test_system_status_ip_drift.sh [--mutations]

  (no flags)   run every assertion in this file (the default)
  --mutations  additionally run the plant battery: two append-
               shaped mutants of tools/ip-drift-cron (pinned to one
               section-28 assertion each) and four mutants of this
               suite's own source (pinned to one control28 src /
               control29 src / control31 src assertion each), every
               plant re-running this suite from a sandbox tree

exit codes: 0 = all pass, 1 = at least one failure, 2 = bad usage
help rc=0
unknown argument: --bogus (try --help)
bogus rc=2
> build · mimo-v2.6-flash-free
$ cd /data/repo; bash tests/test_system_status_ip_drift.sh --mutations > /tmp/opencode/probe50/worktree-mut.txt 2>&1; echo "mutations rc=$?"; grep -F '=== Results:' /tmp/opencode/probe50/worktree-mut.txt; grep -F 'FAIL - ' /tmp/opencode/probe50/worktree-mut.txt | head
Command moved to the background (shell ID: sh_1129b9eb1001aUJdspD8gA5QIy).
Output is streaming to: /root/.local/share/opencode/shell/fa3e85b2145a60c127b5c9261e76a7ba6d520299/sh_1129b9eb1001aUJdspD8gA5QIy.out
> build · mimo-v2.6-flash-free
← Write /tmp/opencode/teeth50/run.sh
Created file successfully: /tmp/opencode/teeth50/run.sh
> build · mimo-v2.6-flash-free
$ cd /data/repo; git status --porcelain; echo "---"; git log --oneline -3; echo "--- probe artefacts outside repo:"; ls /tmp/opencode/probe50 | head
M tests/test_system_status_ip_drift.sh
---
513a377 log: queue item (af) closing memorandum — M14/M15 measured on bda4ac3's bytes
bda4ac3 run 729: 2026-10-06T18:37Z model=opencode/mimo-v2.6-flash-free
8015cee log: queue item (ae) closing memorandum — control31 measured on 038c152's bytes
--- probe artefacts outside repo:
build.sh
clean
clean-plain.txt
p28
p28-mut.rc
p28-mut.txt
p28-plain.txt
p29
p29-mut.rc
p29-mut.txt
> build · mimo-v2.6-flash-free
$ chmod +x /tmp/opencode/teeth50/run.sh && bash /tmp/opencode/teeth50/run.sh 2>&1 | tail -30
Command moved to the background (shell ID: sh_1129d9e56001Br8jQ81LOkEgQx).
Output is streaming to: /root/.local/share/opencode/shell/fa3e85b2145a60c127b5c9261e76a7ba6d520299/sh_1129d9e56001Br8jQ81LOkEgQx.out
> build · mimo-v2.6-flash-free
Both measurement runs are going in the background (the opt-in battery over the edited suite, and the teeth-redirect check for the two new pins). Waiting for them before writing the changelog/PROGRESS numbers.
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)
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50034 Accepted
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50034 Closing
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50042 Accepted
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50042 Closing
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50046 Accepted
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50046 Closing
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50062 Accepted
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50062 Closing
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50074 Accepted
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50074 Closing
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50088 Accepted
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50088 Closing
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50092 Accepted
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50092 Closing
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50098 Accepted
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50098 Closing
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50114 Accepted
[Tue Oct  6 21:45:28 2026] 127.0.0.1:50114 Closing
[Tue Oct  6 21:45:59 2026] 127.0.0.1:59448 Accepted
[Tue Oct  6 21:45:59 2026] 127.0.0.1:59448 Closing
[Tue Oct  6 21:45:59 2026] 127.0.0.1:59454 Accepted
[Tue Oct  6 21:45:59 2026] 127.0.0.1:59454 Closing
[Tue Oct  6 21:45:59 2026] 127.0.0.1:59464 Accepted
[Tue Oct  6 21:45:59 2026] 127.0.0.1:59464 Closing
[Tue Oct  6 21:45:59 2026] 127.0.0.1:59478 Accepted
[Tue Oct  6 21:45:59 2026] 127.0.0.1:59478 Closing
[Tue Oct  6 21:45:59 2026] 127.0.0.1:59492 Accepted
[Tue Oct  6 21:45:59 2026] 127.0.0.1:59492 Closing
[Tue Oct  6 21:45:59 2026] 127.0.0.1:59504 Accepted
[Tue Oct  6 21:45:59 2026] 127.0.0.1:59504 Closing
[Tue Oct  6 21:45:59 2026] 127.0.0.1:59516 Accepted
[Tue Oct  6 21:46:00 2026] 127.0.0.1:59516 Closing
[Tue Oct  6 21:46:00 2026] 127.0.0.1:59518 Accepted
[Tue Oct  6 21:46:00 2026] 127.0.0.1:59518 Closing
[Tue Oct  6 21:46:00 2026] 127.0.0.1:59532 Accepted
[Tue Oct  6 21:46:00 2026] 127.0.0.1:59532 Closing
[Tue Oct  6 21:46:00 2026] 127.0.0.1:59538 Accepted
[Tue Oct  6 21:46:00 2026] 127.0.0.1:59538 Closing
[Tue Oct  6 21:48:21 2026] 127.0.0.1:43072 Accepted
[Tue Oct  6 21:48:21 2026] 127.0.0.1:43072 Closed without sending a request; it was probably just an unused speculative preconnection
[Tue Oct  6 21:48:21 2026] 127.0.0.1:43072 Closing
[Tue Oct  6 21:48:22 2026] 127.0.0.1:43078 Accepted
[Tue Oct  6 21:48:22 2026] 127.0.0.1:43078 Closed without sending a request; it was probably just an unused speculative preconnection
[Tue Oct  6 21:48:22 2026] 127.0.0.1:43078 Closing
[Tue Oct  6 21:48:57 2026] 127.0.0.1:51470 Accepted
[Tue Oct  6 21:48:57 2026] 127.0.0.1:51470 Closed without sending a request; it was probably just an unused speculative preconnection
[Tue Oct  6 21:48:57 2026] 127.0.0.1:51470 Closing
[Tue Oct  6 21:48:59 2026] 127.0.0.1:51484 Accepted
[Tue Oct  6 21:48:59 2026] 127.0.0.1:51484 Closed without sending a request; it was probably just an unused speculative preconnection
[Tue Oct  6 21:48:59 2026] 127.0.0.1:51484 Closing
[Tue Oct  6 21:55:08 2026] 127.0.0.1:55634 Accepted
[Tue Oct  6 21:55:08 2026] 127.0.0.1:55634 Closing
[Tue Oct  6 21:55:10 2026] 127.0.0.1:55644 Accepted
[Tue Oct  6 21:55:10 2026] 127.0.0.1:55644 Closing
[Tue Oct  6 21:56:01 2026] 127.0.0.1:49322 Accepted
[Tue Oct  6 21:56:02 2026] 127.0.0.1:49322 Closing
[Tue Oct  6 21:56:50 2026] 127.0.0.1:37466 Accepted
[Tue Oct  6 21:56:50 2026] 127.0.0.1:37466 Closing
[Tue Oct  6 21:57:15 2026] 127.0.0.1:57490 Accepted

Generated 2026-10-06 19:57:15 UTC · Gladex.de