Gladex Agent Logs
Agent run logs & app logs · env: prod · LAN-only investor surface
Overview
| Run logs | 1250 files, 80.1 MB |
| Latest run log | run-20261008-023653-784.log |
| Log directory | /data/agent-logs |
| App log directory | /opt/startup/prod/logs |
Run logs (newest first, last 50)
| File | Size | Modified (UTC) |
|---|---|---|
| run-20261008-023653-784.log | 198 KB | 2026-10-08 01:38:22 |
| run-20261008-020104-783.log | 366 KB | 2026-10-08 00:26:43 |
| run-20261008-015055-782.log | 153 B | 2026-10-07 23:50:55 |
| run-20261008-014045-781.log | 153 B | 2026-10-07 23:40:46 |
| run-20261008-013035-780.log | 153 B | 2026-10-07 23:30:36 |
| run-20261008-012026-779.log | 153 B | 2026-10-07 23:20:27 |
| run-20261008-011017-778.log | 153 B | 2026-10-07 23:10:17 |
| run-20261008-010006-777.log | 190 B | 2026-10-07 23:00:07 |
| run-20261008-004957-776.log | 153 B | 2026-10-07 22:49:58 |
| run-20261008-003948-775.log | 190 B | 2026-10-07 22:39:49 |
| run-20261008-002939-774.log | 153 B | 2026-10-07 22:29:40 |
| run-20261008-001541-773.log | 153 B | 2026-10-07 22:19:30 |
| run-20261008-000532-772.log | 153 B | 2026-10-07 22:05:33 |
| run-20261007-235523-771.log | 153 B | 2026-10-07 21:55:23 |
| run-20261007-234513-770.log | 190 B | 2026-10-07 21:45:13 |
| run-20261007-233503-769.log | 153 B | 2026-10-07 21:35:04 |
| run-20261007-232454-768.log | 153 B | 2026-10-07 21:24:54 |
| run-20261007-231444-767.log | 153 B | 2026-10-07 21:14:45 |
| run-20261007-230434-766.log | 153 B | 2026-10-07 21:04:35 |
| run-20261007-225424-765.log | 190 B | 2026-10-07 20:54:25 |
| run-20261007-220924-764.log | 425 KB | 2026-10-07 20:44:16 |
| run-20261007-215044-763.log | 157 KB | 2026-10-07 19:59:14 |
| run-20261007-200914-762.log | 359 KB | 2026-10-07 19:40:35 |
| run-20261007-172947-761.log | 540 KB | 2026-10-07 17:59:04 |
| run-20261007-161030-760.log | 339 KB | 2026-10-07 15:19:38 |
| run-20261007-160020-759.log | 190 B | 2026-10-07 14:00:21 |
| run-20261007-155011-758.log | 153 B | 2026-10-07 13:50:12 |
| run-20261007-154002-757.log | 153 B | 2026-10-07 13:40:03 |
| run-20261007-152953-756.log | 153 B | 2026-10-07 13:29:53 |
| run-20261007-151943-755.log | 153 B | 2026-10-07 13:19:44 |
| run-20261007-150934-754.log | 190 B | 2026-10-07 13:09:34 |
| run-20261007-145924-753.log | 153 B | 2026-10-07 12:59:25 |
| run-20261007-144915-752.log | 153 B | 2026-10-07 12:49:16 |
| run-20261007-143906-751.log | 153 B | 2026-10-07 12:39:07 |
| run-20261007-142857-750.log | 153 B | 2026-10-07 12:28:58 |
| run-20261007-141848-749.log | 153 B | 2026-10-07 12:18:49 |
| run-20261007-140839-748.log | 190 B | 2026-10-07 12:08:39 |
| run-20261007-135830-747.log | 153 B | 2026-10-07 11:58:30 |
| run-20261007-134820-746.log | 153 B | 2026-10-07 11:48:21 |
| run-20261007-133811-745.log | 190 B | 2026-10-07 11:38:12 |
| run-20261007-132802-744.log | 190 B | 2026-10-07 11:28:03 |
| run-20261007-114753-743.log | 250 KB | 2026-10-07 11:17:54 |
| run-20261007-094305-742.log | 286 KB | 2026-10-07 09:37:44 |
| run-20261007-082626-741.log | 272 KB | 2026-10-07 07:32:57 |
| run-20261007-070551-740.log | 263 KB | 2026-10-07 06:16:16 |
| run-20261007-052216-739.log | 354 KB | 2026-10-07 04:55:42 |
| run-20261007-033957-738.log | 428 KB | 2026-10-07 03:12:08 |
| run-20261007-023935-737.log | 310 KB | 2026-10-07 01:29:49 |
| run-20261007-012521-736.log | 162 KB | 2026-10-07 00:29:26 |
| run-20261007-005238-735.log | 232 KB | 2026-10-06 23:15:11 |
Tail — run-20261008-023653-784.log (last 200 lines)
queue-source-check: OK - one queue: [0.4.254] pointer-only, 111 item line(s) frozen across 209 section(s), 198 PROGRESS bullet(s), 1 path token(s)
rc=0
=== Budget Status ===
Month: 2026-10
Allowance: 5.00 €
Spent: 0.00 € (no October charge recorded anywhere — gladex.de renews at 1.50/mo, renewal date NOT on file, raised as NEEDS-INVESTOR in REPORT.md §14, so this figure may understate a known recurring cost)
Remaining: 5.00 €
Log:
- 2026-09-20: init, no domains ordered yet
● identity-run@jonas.service loaded failed failed Scheduled persona run (jonas)
/dev/mapper/ubuntu--vg-ubuntu--lv 98G 90G 3.3G 97% /
10
e41735e dispatcher: shift log 2026-10-07T17:03:00Z
> build · mimo-v2.6-flash-free
[0m$ [0mcd /data/repo && sed -n '488,530p' tests/test_healthcheck.sh; echo "=== healthcheck battery?"; grep -n "DO_.*MUT\|battery\|Battery" tests/test_healthcheck.sh | head
echo "=== D. four plants, each asserted to FLIP the reading section C pins ==="
# The flipped READING is what is asserted, not a second copy of section C:
# if the assertion in C can no longer fail, this is the run that says so.
start_world 200 "$BAD_BODY"
if [ -n "${WORLD_PORT:-}" ]; then
# M1 — the body's verdict dropped: healthy forced true whatever the endpoint says.
if make_copy m1-status "$WORLD_PORT" \
' result["healthy"] = data.get("status") == "ok"' \
' result["healthy"] = True'; then
read_world "$SB/m1-status" dev
assert_rc "M1 with the status check dropped, an error body reads exit 0 (so C2's rc assertion CAN fail)" 0 "$W_RC"
assert_has "M1 and its human row reads HEALTHY (so C2's state assertion CAN fail)" "HEALTHY" "$W_OUT"
fi
# M2 — the unhealthy exit branch rewritten to 0: the state and the code disagree.
if make_copy m2-exit "$WORLD_PORT" \
' sys.exit(1) # One or more unhealthy' \
' sys.exit(0) # One or more unhealthy'; then
read_world "$SB/m2-exit" dev
assert_rc "M2 with the exit-1 branch rewritten, an error body exits 0 (so C2's rc assertion CAN fail)" 0 "$W_RC"
assert_has "M2 while the row still says UNHEALTHY — two reads, one plant" "UNHEALTHY" "$W_OUT"
fi
# M4 (the pre-fix replay) is asserted against the 500 world below: a 200
# world never RAISES, so an except-clause plant has nothing to flip here.
else
bad "D: the fake endpoint never reported a port"
fi
stop_world
# --- M4: the defect this run repaired, put back --------------------------------
# The pre-fix tool reported an answered 500 through the CONNECTION-error
# handler: status_code null, response null, error "HTTP Error 500: ...",
# exit 3. The plant therefore replaces the HTTPError branch's REPORTING BODY
# (the five lines that turn a response into a status) with the old
# `result["error"]` line — swapping only the class name would change nothing,
# because the duplicate handler below is never reached. The find is BUILT from
# lines of the live file so this suite holds no literal of what it plants.
start_world 500 "$GOOD_BODY"
if [ -n "${WORLD_PORT:-}" ]; then
M4_FIND=' result["status_code"] = e.code
try:
=== healthcheck battery?
[0m$ [0mcd /data/repo && sed -n '1,80p' tests/test_ip_drift_cron.sh | grep -n "mutant\|M1\|battery" ; echo "=== cron help"; awk '/--help\)/,/exit 0 ;;/' tests/test_ip_drift_cron.sh | head -40; echo "=== cron plant roster"; grep -c "run_mutation M[0-9]" tests/test_ip_drift_cron.sh; grep -c "run_writer_plant M[0-9]" tests/test_ip_drift_cron.sh; grep -c "run_suite_plant M[0-9]" tests/test_ip_drift_cron.sh
41:# Set by --mutations: run the mutation battery instead of the suite.
=== cron help
=== cron plant roster
38
0
20
> build · mimo-v2.6-flash-free
[0m$ [0mdu -x -d1 -h / 2>/dev/null | sort -h | tail -8; echo "=== /data"; du -x -d1 -h /data 2>/dev/null | sort -h | tail -8; echo "=== tmp"; du -x -d1 -h /tmp 2>/dev/null | sort -h | tail -5
156M /.cache
241M /home
2.5G /root
4.4G /usr
4.7G /opt
9.9G /var
51G /tmp
73G /
=== /data
72K /data/.config
96K /data/homelab
968K /data/.shift-jonas
87M /data/agent-logs
108M /data/tmp-regression
573M /data/shared
6.1G /data/repo
6.9G /data
=== tmp
585M /tmp/gopath
882M /tmp/gomodcache
2.5G /tmp/opencode
46G /tmp/gocache
51G /tmp
[0m$ [0msleep 60; tail -8 /tmp/opencode/run784teeth/run.log; echo "=== regression"; pgrep -f regression-run >/dev/null && echo running || echo done; wc -c /tmp/opencode/run784-regression.log
pins redirected; M23 pin left: 0 | M24 pin left: 0 | target23 present: 2 | target24 present: 2
bash -n OK after the redirect
=== clean run in the redirected tree ===
=== Results: 759 passed, 0 failed ===
clean FAIL lines: 0
target23 printed as its own ok row: 1
target24 printed as its own ok row: 1
=== battery in the redirected tree ===
=== regression
running
0 /tmp/opencode/run784-regression.log
> build · mimo-v2.6-flash-free
[0m$ [0mls -lat /data/tmp-regression | head -8; echo "=== count"; ls /data/tmp-regression | wc -l; echo "=== ps"; ps -o pid,etime,pcpu,cmd -p $(pgrep -f "regression-run" | head -2) 2>/dev/null; echo "=== how regression-run reports"; grep -n "print\|flush\|stdout" /data/repo/tools/regression-run | head -10
total 28
drwxr-xr-x 9 root root 4096 Oct 7 05:52 ..
drwxr-xr-x 7 root root 4096 Sep 30 19:54 .
drwxr-xr-x 116 root root 4096 Sep 30 19:53 opencode
drwx------ 2 root root 4096 Sep 30 19:50 gladex-e2e-3739311163
drwx------ 2 root root 4096 Sep 30 19:49 gladex-e2e-1360382551
drwx------ 2 root root 4096 Sep 30 19:38 gladex-e2e-1497649488
drwx------ 2 root root 4096 Sep 30 19:37 gladex-e2e-1579225453
=== count
5
=== ps
PID ELAPSED %CPU CMD
3036050 11:49 0.0 /usr/bin/bash -c cd /data/repo && nohup ./tools/regression-run > /tmp/opencode/run784-regression.log 2>&1 & echo "started pid=$!"
3036051 11:49 0.0 python3 ./tools/regression-run
=== how regression-run reports
8: guessed ONE summary format and printed "1854 passed / 0 failed" while
23: the combined stdout+stderr wins.
24: "Last match", not "last line": seven suites print trailing noise after
31: match is used rather than reporting no summary — a suite really did print
40: document; --baseline FILE replays a later run against one and prints the
58: stores the text in the document and `--baseline FILE` prints it as a
65: characters: print_baseline renders it behind a fixed two-space prefix, so
89: Precedence: 2 > 6 > 3 > 4 > 1 > 0, and EVERY suite's outcome is printed
149: printed for a run that did not finish). A suite that moves a child into its
183:# Numbers, never a format: the four shapes this tree prints are all covered by
> build · mimo-v2.6-flash-free
[0m$ [0msleep 120; tail -6 /tmp/opencode/run784teeth/run.log; echo "=== regression"; pgrep -f regression-run >/dev/null && echo running || echo done; wc -c /tmp/opencode/run784-regression.log; grep -c '^## \[0.4.255\]' /data/repo/CHANGELOG.md
=== clean run in the redirected tree ===
=== Results: 759 passed, 0 failed ===
clean FAIL lines: 0
target23 printed as its own ok row: 1
target24 printed as its own ok row: 1
=== battery in the redirected tree ===
=== regression
running
0 /tmp/opencode/run784-regression.log
0
> build · mimo-v2.6-flash-free
[0m$ [0mcd /data/repo && bash tests/test_repo_lint.sh 2>&1 | tail -2; bash tests/test_queue_source.sh 2>&1 | tail -2
repo-lint suite: 473 passed, 0 failed
===============================
queue-source-check suite: 278 passed, 0 failed
===============================
> build · mimo-v2.6-flash-free
[0m$ [0msleep 240; tail -7 /tmp/opencode/run784teeth/run.log; echo "=== regression"; pgrep -f regression-run >/dev/null && echo running || echo done; wc -c /tmp/opencode/run784-regression.log
bash -n OK after the redirect
=== clean run in the redirected tree ===
=== Results: 759 passed, 0 failed ===
clean FAIL lines: 0
target23 printed as its own ok row: 1
target24 printed as its own ok row: 1
=== battery in the redirected tree ===
=== regression
running
0 /tmp/opencode/run784-regression.log
> build · mimo-v2.6-flash-free
[0m$ [0mcd /data/repo && sed -n '1887,1915p' tests/test_ip_drift_cron.sh
# Read a twenty-fifth time for M56 (queue item (as), 2026-10-07): the
# `PY30PLANT` `ORDER` entry-drop plant added below — the tuple's third entry
# removed, so the `' ALSO: '.join(...)` never emits the unparseable body and
# the two OTHER classes' step-4 teeth-proofs lose the text they `grep -qF` —
# its pin redirected to the SAME target, in a throwaway tree built the eighth
# reading's way (`tests/` + the WHOLE `tools/` copied so `REPO=` resolves
# there). Source-checked BEFORE the redirect was built: the target is line
# **177**, call count **1** as a LINE-START assertion, quoted here on its own
# line so this reading sits inside the count it reports:
# assert_lacks "no drift → nothing appended to ALERTS"
# (raw **9** at redirect time — line 177 plus the seventeenth through
# twenty-fourth readings above; this line takes it to **10**, and the bare-body
# count **19 → 20** with it); the pin's QUOTED argument occurred **1** time,
# and so did each of its two BARE fragments — the class+label head and the
# body-carrying head — the call and nothing else, because the (as) block below
# never quotes the pin whole (its full text lives only at the call, measured
# **1** there, each fragment **1**); no backslash in the target (a backslash is
# LITERAL under `grep -F`); `bash -n` OK after the redirect. Result:
# redirected tree's clean run **340 / 0, rc 0** with the target still printing
# its own `ok` row (four `no drift` rows print in every clean run — the target
# among them, same as the unredirected run), battery in that tree **580 passed
# / 1 failed, rc 1**, the one red being
# `wrong verdict is NOT the intended one (expected a failure of: 'no drift →
# nothing appended to ALERTS')` — the single redirected pin check, so the
# redirect moved that pin and nothing else — and
# `grep -cE '^ ok - M5[456]'` → **14**: the fifteen less the redirected pin
# check.
# =============================================================================
if [ "$DO_MUTATIONS" = "1" ]; then
> build · mimo-v2.6-flash-free
[0m$ [0mcd /data/repo && grep -rn "did not bite" tests/*.sh tools/* 2>/dev/null | grep -i "grep -c\|count\|wc -l" | head; echo "=== who counts target strings"; grep -rn "replay: the writer" tests/*.sh | head; echo "=== control24"; grep -rn "control24: the plant applied" tests/*.sh | head
=== who counts target strings
tests/test_system_status_ip_drift.sh:972: bad "replay: the writer or its sandbox hooks are absent, so its exit branches cannot be replayed"
tests/test_system_status_ip_drift.sh:974: ok "replay: the writer and both sandbox hooks it needs are present"
=== control24
tests/test_system_status_ip_drift.sh:1358: ok "control24: the plant applied — the branch text is gone from the copy"
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 8 03:35:07 2026] 127.0.0.1:38914 Accepted [Thu Oct 8 03:35:07 2026] 127.0.0.1:38914 Closing [Thu Oct 8 03:35:07 2026] 127.0.0.1:38928 Accepted [Thu Oct 8 03:35:07 2026] 127.0.0.1:38928 Closing [Thu Oct 8 03:35:08 2026] 127.0.0.1:38940 Accepted [Thu Oct 8 03:35:08 2026] 127.0.0.1:38940 Closing [Thu Oct 8 03:35:08 2026] 127.0.0.1:38954 Accepted [Thu Oct 8 03:35:08 2026] 127.0.0.1:38954 Closing [Thu Oct 8 03:35:11 2026] 127.0.0.1:38962 Accepted [Thu Oct 8 03:35:11 2026] 127.0.0.1:38962 Closing [Thu Oct 8 03:35:11 2026] 127.0.0.1:38976 Accepted [Thu Oct 8 03:35:11 2026] 127.0.0.1:38976 Closing [Thu Oct 8 03:35:13 2026] 127.0.0.1:38982 Accepted [Thu Oct 8 03:35:13 2026] 127.0.0.1:38982 Closing [Thu Oct 8 03:35:13 2026] 127.0.0.1:38994 Accepted [Thu Oct 8 03:35:13 2026] 127.0.0.1:38994 Closing [Thu Oct 8 03:35:14 2026] 127.0.0.1:38996 Accepted [Thu Oct 8 03:35:14 2026] 127.0.0.1:38996 Closing [Thu Oct 8 03:35:14 2026] 127.0.0.1:39004 Accepted [Thu Oct 8 03:35:14 2026] 127.0.0.1:39004 Closing [Thu Oct 8 03:35:18 2026] 127.0.0.1:38966 Accepted [Thu Oct 8 03:35:18 2026] 127.0.0.1:38966 Closing [Thu Oct 8 03:35:24 2026] 127.0.0.1:38972 Accepted [Thu Oct 8 03:35:24 2026] 127.0.0.1:38972 Closing [Thu Oct 8 03:35:24 2026] 127.0.0.1:38984 Accepted [Thu Oct 8 03:35:24 2026] 127.0.0.1:38984 Closing [Thu Oct 8 03:35:29 2026] 127.0.0.1:54172 Accepted [Thu Oct 8 03:35:29 2026] 127.0.0.1:54172 Closing [Thu Oct 8 03:35:39 2026] 127.0.0.1:43028 Accepted [Thu Oct 8 03:35:39 2026] 127.0.0.1:43028 Closing [Thu Oct 8 03:36:03 2026] 127.0.0.1:54588 Accepted [Thu Oct 8 03:36:03 2026] 127.0.0.1:54588 Closing [Thu Oct 8 03:36:08 2026] 127.0.0.1:42104 Accepted [Thu Oct 8 03:36:08 2026] 127.0.0.1:42104 Closing [Thu Oct 8 03:36:10 2026] 127.0.0.1:42114 Accepted [Thu Oct 8 03:36:10 2026] 127.0.0.1:42114 Closing [Thu Oct 8 03:36:10 2026] 127.0.0.1:42128 Accepted [Thu Oct 8 03:36:10 2026] 127.0.0.1:42128 Closing [Thu Oct 8 03:36:13 2026] 127.0.0.1:42142 Accepted [Thu Oct 8 03:36:13 2026] 127.0.0.1:42142 Closing [Thu Oct 8 03:36:29 2026] 127.0.0.1:39210 Accepted [Thu Oct 8 03:36:29 2026] 127.0.0.1:39210 Closing [Thu Oct 8 03:37:15 2026] 127.0.0.1:45148 Accepted [Thu Oct 8 03:37:15 2026] 127.0.0.1:45148 Closing [Thu Oct 8 03:37:16 2026] 127.0.0.1:45154 Accepted [Thu Oct 8 03:37:16 2026] 127.0.0.1:45154 Closing [Thu Oct 8 03:37:23 2026] 127.0.0.1:45160 Accepted [Thu Oct 8 03:37:23 2026] 127.0.0.1:45160 Closing [Thu Oct 8 03:37:25 2026] 127.0.0.1:58252 Accepted [Thu Oct 8 03:37:25 2026] 127.0.0.1:58252 Closing [Thu Oct 8 03:37:46 2026] 127.0.0.1:33420 Accepted [Thu Oct 8 03:37:46 2026] 127.0.0.1:33420 Closing [Thu Oct 8 03:37:46 2026] 127.0.0.1:33426 Accepted [Thu Oct 8 03:37:46 2026] 127.0.0.1:33426 Closing [Thu Oct 8 03:38:24 2026] 127.0.0.1:46600 Accepted [Thu Oct 8 03:38:24 2026] 127.0.0.1:46600 Closing [Thu Oct 8 03:39:35 2026] 127.0.0.1:58266 Accepted [Thu Oct 8 03:39:35 2026] 127.0.0.1:58266 Closing [Thu Oct 8 03:39:36 2026] 127.0.0.1:58272 Accepted
Generated 2026-10-08 01:39:36 UTC · Gladex.de