Gladex Agent Logs

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

Overview
Run logs1228 files, 78.8 MB
Latest run logrun-20261007-200914-762.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20261007-200914-762.log 192 KB 2026-10-07 18:37:18
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
run-20261006-233016-734.log 406 KB 2026-10-06 22:42:30
run-20261006-231309-733.log 300 KB 2026-10-06 21:20:06
run-20261006-222432-732.log 262 KB 2026-10-06 21:03:00
run-20261006-211819-731.log 403 KB 2026-10-06 20:14:24
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
Tail — run-20261007-200914-762.log (last 200 lines)
# class keys swapped so two classes' executed arms carry no foreign diagnosis
# (M53) — both pins 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 either 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 **7** at redirect time — line 177 plus the seventeenth through
# twenty-second readings above; this line takes it to **8**); each pin's
# QUOTED argument occurred **1** time apiece, and so did each BARE pin text —
# the call itself and nothing else, because the (aq) block below never quotes
# either pin whole: M52's is cited only up to `the plant did not apply` (the
# traceback that follows it lives only at the call), M53's only as the class +
# `did not bite` fragments (the label + body triple lives only at the call);
# no backslash in the target (a backslash is LITERAL under `grep -F`); `bash -n`
# OK after both. Result: redirected tree's clean run **340 / 0, rc 0** with the
# target still printing its own `ok - …` line (four `no drift` rows print in
# every clean run — lines 176–179 — the target among them, same as the
# unredirected run), battery in that tree **564 passed / 2 failed, rc 1**,
# exactly two reds and every one of them
# `wrong verdict is NOT the intended one (expected a failure of: 'no drift →
# nothing appended to ALERTS')` — one per new pin, so the redirect moved the two
# pin checks and nothing else — and `grep -cE '^  ok   - M5[23]'` → **8**: the
# ten less the two redirected pin checks.
#
# Read a twenty-fourth time for M54/M55 (queue item (ar), 2026-10-07): the two
# step-2 heredoc `DIAGNOSIS` FORMAT-STRING plants added below — `PY30PLANT`'s
# `LINE` widened by one character (M54) and `PY30SWAP`'s widened the same way
# (M55) — both pins 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 either 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 **8** at redirect time — line 177 plus the seventeenth through
# twenty-third readings above; this line takes it to **9**, and the bare-body
# count **18 → 19** with it); each pin's QUOTED argument occurred **1** time
# apiece, and so did each BARE pin text — the call itself and nothing else,
# because the (ar) block below never quotes either pin whole: M54's is cited
# only as the fragment `this class's DIAGNOSIS line occurs 0 time(s), want
# exactly 1` (its `control30 borrow public: the plant did not apply (` head
# living only at the call), M55's only as `a class DIAGNOSIS line occurs 0/0/0
# time(s), want 1/1/1`; no backslash in the target (a backslash is LITERAL
# under `grep -F`); `bash -n` OK after both. The substituted value is that
# assertion's MESSAGE, not its source line, and the difference was PAID for
# before it was written down: substituting the `assert_lacks "…"` line closed
# M54's DOUBLE-quoted argument at its inner quote (M54's pin carries the
# apostrophe of `class's`, so that call is double-quoted per (w)'s rule), which
# handed the sixth argument the word `drift`, so the build precondition grepped
# a path that was not the suite and the battery reported
# `M54: the sandbox tree could not be built` while M55's `expect` carried an
# `assert_lacks "` prefix no FAIL line can print — both failed readings' whole
# outputs kept under `/tmp/opencode/probe62/` (`teeth.battery.out`,
# `teethb.battery.out`) beside this one's `teethc.battery.out`. 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 **574
# passed / 2 failed, rc 1**, exactly two reds and every one of them
# `wrong verdict is NOT the intended one (expected a failure of: 'no drift →
# nothing appended to ALERTS')` — one per new pin, so the redirect moved the
# two pin checks and nothing else — and `grep -cE '^  ok   - M5[45]'` → **8**:
# the ten less the two redirected pin checks.
# =============================================================================
if [ "$DO_MUTATIONS" = "1" ]; then
    echo ""
    echo "== mutations =="

    # Control: the untouched tool, same (live-free) conditions as the mutants.
    IPDRIFT_CRON="$CRON" IPDRIFT_NO_LIVE=1 bash "${BASH_SOURCE[0]}" \
        >"$SANDBOX/control.out" 2>&1
    CRC=$?
    if [ "$CRC" = "0" ]; then
        ok "control: unmutated cron → suite green (rc=0)"
    else
        bad "control: unmutated cron already red (rc=$CRC) — mutations prove nothing"
        tail -5 "$SANDBOX/control.out"
    fi
> build · mimo-v2.6-flash-free
$ cat /tmp/opencode/probe62/teeth62c.sh 2>/dev/null | head -80; echo "=== files ==="; ls /tmp/opencode/probe62/ | head -40
#!/usr/bin/env bash
# teeth62c — house-order step (4) for queue item (ar), CORRECTED needle.
# teeth62/62b substituted the target's SOURCE LINE (`assert_lacks "no drift →
# nothing appended to ALERTS"`) into the pins; the readings' own reds show the
# substituted value is the assertion's MESSAGE (`no drift → nothing appended
# to ALERTS`) — `bad()` prints `$expect` verbatim and every recorded red reads
# `expected a failure of: 'no drift → nothing appended to ALERTS'`. Substituting
# the source line shattered M54's DOUBLE-quoted pin mid-string (the inner `"`
# closed the argument, so `$6` caught `drift` and the tree build grepped the
# wrong path) and left M55's expect unmatchable. Everything else is 62b's
# source-check, on the final bytes.
set -euo pipefail
P=/tmp/opencode/probe62
REPO=/data/repo
SUITE_REL=tests/test_ip_drift_cron.sh
# source-check target: the assertion at line 177, quoted as its source line
TARGET='assert_lacks "no drift → nothing appended to ALERTS"'
# substituted value: that assertion's message, as every reading reports it
MSG='no drift → nothing appended to ALERTS'
PIN54="control30 borrow public: the plant did not apply (this class's DIAGNOSIS line occurs 0 time(s), want exactly 1)"
PIN55="control30 swap: the plant did not apply (a class DIAGNOSIS line occurs 0/0/0 time(s), want 1/1/1)"
FRAG54="this class's DIAGNOSIS line occurs 0 time(s), want exactly 1"
FRAG55='a class DIAGNOSIS line occurs 0/0/0 time(s), want 1/1/1'
OUT="$P/teeth62c.txt"
: > "$OUT"
say() { echo "$*" | tee -a "$OUT"; }

SRC="$REPO/$SUITE_REL"
say "=== source-check on the INSTALLED suite ($SRC) ==="
say "md5: $(md5sum "$SRC" | cut -d' ' -f1)"
first_line=$(grep -nF "$TARGET" "$SRC" | head -1 | cut -d: -f1)
say "target first line: ${first_line:-none}"
say "target line-start count (grep -c ^TARGET): $(grep -c "^$TARGET" "$SRC" || true)"
say "target raw count (grep -F -c): $(grep -F -c "$TARGET" "$SRC" || true)"
say "message single-quoted count: $(grep -F -c "'$MSG'" "$SRC" || true)"
say "message double-quoted count: $(grep -F -c "\"$MSG\"" "$SRC" || true)"
say "M54 pin full count: $(grep -F -c "$PIN54" "$SRC" || true)  fragment count: $(grep -F -c "$FRAG54" "$SRC" || true)"
say "M55 pin full count: $(grep -F -c "$PIN55" "$SRC" || true)  fragment count: $(grep -F -c "$FRAG55" "$SRC" || true)"
if grep -qF '\' <<<"$MSG"; then say "backslash in message: YES"; else say "backslash in message: no"; fi
say "structural: ^LINE = $(grep -c '^LINE = ' "$SRC")  bare-LINE-literal $(grep -F -c 'echo "[$(ts)] DIAGNOSIS: %s" >> "$LOG_FILE"' "$SRC")  ^ORDER = $(grep -c '^ORDER = ' "$SRC")  ^UNP = $(grep -c '^UNP = ' "$SRC")  run_suite_plant calls $(grep -c 'run_suite_plant M[0-9]' "$SRC")"

echo "=== build throwaway tree ==="
T="$P/teethc"
rm -rf "$T"; mkdir -p "$T"
cp -R "$REPO/tests" "$T/tests"
cp -R "$REPO/tools" "$T/tools"

echo "=== redirect both pins to the MESSAGE ==="
python3 - "$T/$SUITE_REL" "$MSG" "$PIN54" "$PIN55" <<'PY'
import sys
p, msg, p54, p55 = sys.argv[1:5]
s = open(p).read()
for i, pin in enumerate((p54, p55), 1):
    n = s.count(pin)
    if n != 1:
        raise SystemExit(f'pin {i}: count {n}, want 1')
    s = s.replace(pin, msg, 1)
open(p, 'w').write(s)
print('both pins redirected, remaining:', s.count(p54), s.count(p55),
      "| message counts: single", s.count("'" + msg + "'"),
      'double', s.count('"' + msg + '"'),
      '| source-line count:', s.count('assert_lacks "' + msg + '"'))
PY
bash -n "$T/$SUITE_REL" && say "bash -n OK after both redirects" || { say "bash -n FAILED"; exit 1; }

echo "=== clean run (PLAIN) in the redirected tree ==="
( cd "$T" && bash "$SUITE_REL" ) > "$P/teethc.clean.out" 2>&1 || true
grep -E '^=== Results' "$P/teethc.clean.out" | tee -a "$OUT"
say "clean FAIL lines: $(grep -c '  FAIL - ' "$P/teethc.clean.out" || true)"
say "target printed as its own ok row: $(grep -c "^  ok   - $MSG\$" "$P/teethc.clean.out" || true)"

echo "=== battery in the redirected tree ==="
( cd "$T" && bash "$SUITE_REL" --mutations ) > "$P/teethc.battery.out" 2>&1 || true
grep -E '^=== Results' "$P/teethc.battery.out" | tee -a "$OUT"
say "battery FAIL lines: $(grep -c '  FAIL - ' "$P/teethc.battery.out" || true)"
grep '  FAIL - ' "$P/teethc.battery.out" | tee -a "$OUT" || true
say "ok lines for M54/M55: $(grep -cE '^  ok   - M5[45]' "$P/teethc.battery.out" || true)"
say "all reds are 'wrong verdict is NOT the intended one': $(grep '  FAIL - ' "$P/teethc.battery.out" | grep -cF 'wrong verdict is NOT the intended one' || true)"
=== files ===
apply.sh
baseline-battery.out
baseline-plain.out
baseline-plainenv.out
build.log
build.sh
bytecmp.txt
clean
clean-battery.out
clean-plain.out
clean-reader.out
committed.md5
diag
diag.battery.out
diag62.sh
dump.sh
entry63.md
final-battery-lf.out
final-battery.out
final-lf.out
final-nolive.out
final-plain.out
final-reader.out
head.md5
inst-battery-lf.out
inst-battery.out
m54
m54-battery.out
m54-plain-noenv.out
m54-plain.out
m54-reader.out
m55
m55-battery.out
m55-plain-noenv.out
m55-plain.out
m55-reader.out
n_M54_A
n_M54_FIND
n_M54_L1
n_M54_L2
> build · mimo-v2.6-flash-free

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)
[Wed Oct  7 20:27:33 2026] 127.0.0.1:39964 Accepted
[Wed Oct  7 20:27:33 2026] 127.0.0.1:39964 Closing
[Wed Oct  7 20:27:33 2026] 127.0.0.1:39978 Accepted
[Wed Oct  7 20:27:33 2026] 127.0.0.1:39978 Closing
[Wed Oct  7 20:27:33 2026] 127.0.0.1:39984 Accepted
[Wed Oct  7 20:27:33 2026] 127.0.0.1:39984 Closing
[Wed Oct  7 20:27:33 2026] 127.0.0.1:39994 Accepted
[Wed Oct  7 20:27:34 2026] 127.0.0.1:39994 Closing
[Wed Oct  7 20:27:34 2026] 127.0.0.1:40006 Accepted
[Wed Oct  7 20:27:34 2026] 127.0.0.1:40006 Closing
[Wed Oct  7 20:27:34 2026] 127.0.0.1:40008 Accepted
[Wed Oct  7 20:27:34 2026] 127.0.0.1:40008 Closing
[Wed Oct  7 20:27:34 2026] 127.0.0.1:40014 Accepted
[Wed Oct  7 20:27:34 2026] 127.0.0.1:40014 Closing
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34456 Accepted
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34456 Closing
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34472 Accepted
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34472 Closing
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34488 Accepted
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34488 Closing
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34494 Accepted
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34494 Closing
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34498 Accepted
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34498 Closing
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34510 Accepted
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34510 Closing
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34526 Accepted
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34526 Closing
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34530 Accepted
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34530 Closing
[Wed Oct  7 20:30:11 2026] 127.0.0.1:34542 Accepted
[Wed Oct  7 20:30:12 2026] 127.0.0.1:34542 Closing
[Wed Oct  7 20:30:12 2026] 127.0.0.1:34544 Accepted
[Wed Oct  7 20:30:12 2026] 127.0.0.1:34544 Closing
[Wed Oct  7 20:30:23 2026] 127.0.0.1:47802 Accepted
[Wed Oct  7 20:30:23 2026] 127.0.0.1:47802 Closing
[Wed Oct  7 20:31:01 2026] 127.0.0.1:50840 Accepted
[Wed Oct  7 20:31:01 2026] 127.0.0.1:50840 Closing
[Wed Oct  7 20:31:01 2026] 127.0.0.1:50842 Accepted
[Wed Oct  7 20:31:01 2026] 127.0.0.1:50842 Closing
[Wed Oct  7 20:31:01 2026] 127.0.0.1:50848 Accepted
[Wed Oct  7 20:31:01 2026] 127.0.0.1:50848 Closing
[Wed Oct  7 20:31:01 2026] 127.0.0.1:50856 Accepted
[Wed Oct  7 20:31:01 2026] 127.0.0.1:50856 Closing
[Wed Oct  7 20:31:01 2026] 127.0.0.1:50858 Accepted
[Wed Oct  7 20:31:01 2026] 127.0.0.1:50858 Closing
[Wed Oct  7 20:31:01 2026] 127.0.0.1:50868 Accepted
[Wed Oct  7 20:31:01 2026] 127.0.0.1:50868 Closing
[Wed Oct  7 20:31:01 2026] 127.0.0.1:50876 Accepted
[Wed Oct  7 20:31:02 2026] 127.0.0.1:50876 Closing
[Wed Oct  7 20:31:02 2026] 127.0.0.1:50892 Accepted
[Wed Oct  7 20:31:02 2026] 127.0.0.1:50892 Closing
[Wed Oct  7 20:31:02 2026] 127.0.0.1:50904 Accepted
[Wed Oct  7 20:31:02 2026] 127.0.0.1:50904 Closing
[Wed Oct  7 20:31:02 2026] 127.0.0.1:50912 Accepted
[Wed Oct  7 20:31:02 2026] 127.0.0.1:50912 Closing
[Wed Oct  7 20:38:00 2026] 127.0.0.1:33616 Accepted
[Wed Oct  7 20:38:00 2026] 127.0.0.1:33616 Closing
[Wed Oct  7 20:38:00 2026] 127.0.0.1:33624 Accepted

Generated 2026-10-07 18:38:00 UTC · Gladex.de