Gladex Agent Logs

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

Overview
Run logs1227 files, 78.3 MB
Latest run logrun-20261007-172947-761.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20261007-172947-761.log 252 KB 2026-10-07 16:29:21
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
run-20261005-201246-712.log 321 KB 2026-10-05 18:48:47
Tail — run-20261007-172947-761.log (last 200 lines)
3975:    # M55 — PY30SWAP's format string widened the same way: the swap's own count
3978:    # single step-3 row, told apart from M54's by the `swap:` label and the
3980:    M55_A="UNP = 'egress is NOT an IP address (public_ip could not be parsed).'
3982:    M55_FIND="$M55_A$M54_L1$M54_L2"
3983:    M55_REPL="$M55_A$M54_L1$M54_W2"
3984:    run_suite_plant M55 "M55 PY30SWAP's DIAGNOSIS format string is widened, so the rotation dies on a 0/0/0 count SystemExit" \
3985:        "$M55_FIND" \
3986:        "$M55_REPL" \
> build · mimo-v2.6-flash-free
✱ Grep "SANDBOX=|^REPO=" in repo/tests/test_ip_drift_cron.sh · 3 matches
$ cd /data/repo && md5sum tests/test_ip_drift_cron.sh && git status --porcelain && git log --oneline -1 && sed -n '175,180p' tests/test_ip_drift_cron.sh && grep -cF 'assert_lacks "no drift → nothing appended to ALERTS"' tests/test_ip_drift_cron.sh
8d4ccd79355e6e2d78b7cbf1d4305bcd  tests/test_ip_drift_cron.sh
M  agent-logs/identity-jonas.md
M  agent-logs/identity-lena.md
 M agent-logs/qa-info-drift-2026-10-07.md
 M tests/test_ip_drift_cron.sh
M  tools/REGISTRY.md
c95dbb6 test: add unit tests for workflow validation internals
run_cron ok
assert_rc "no drift → exit 0" 0 "$RC"
assert_lacks "no drift → nothing appended to ALERTS" "DRIFT" "$(alerts)"
assert_lacks "no drift → no CHECK-ERROR either" "CHECK-ERROR" "$(alerts)"
assert_has "no drift → dated run log written" "OK: No drift" "$(logf)"
assert_eq "dated log file is ip-drift-YYYYMMDD.log" "1" \
8
> build · mimo-v2.6-flash-free
$ cd /data/repo && git diff --cached --stat && echo '--- worktree ---' && git diff --stat && echo '--- log ---' && git log --oneline -5
agent-logs/identity-jonas.md | 2504 ++++++++++++++++++++++++++++++++++++++++++
 agent-logs/identity-lena.md  | 1742 +++++++++++++++++++++++++++++
 tools/REGISTRY.md            |   10 +-
 3 files changed, 4252 insertions(+), 4 deletions(-)
--- worktree ---
 agent-logs/qa-info-drift-2026-10-07.md |   9 +++
 tests/test_ip_drift_cron.sh            | 139 +++++++++++++++++++++++++++++++++
 2 files changed, 148 insertions(+)
--- log ---
c95dbb6 test: add unit tests for workflow validation internals
ebd6ca2 fix: info.php byte-identical with dev/prod (removed unused --accent-text var, use --accent for contact link)
fc4476a run 62: queue item (aq) CLOSED by record — the M52/M53 record its own rate-limited shift never wrote: every (aq) number re-measured on committed bytes (battery 556 -> 566/0 confirmed both modes, defaults 340/0 plain 337/0 live-free, reader 759/0), both shapes re-planted from run-derived needles (313/9, 336/4), pre-install blindness reproduced (528/10, 551/5, M5[23]=0); PROGRESS entry + CHANGELOG in ONE commit clears queue-source R8/R10; STEP 0 owed nothing; no code changed [0.4.251]
eed5aa9 identity sofia shift 2026-10-07T11:55Z model=opencode/ling-3.1-flash-free
81e746b identity dispatcher shift 2026-10-07T11:51Z model=opencode/nemotron-3-ultra-free
> build · mimo-v2.6-flash-free
$ cd /data/repo && git show --stat --oneline c95dbb6 | head -20 && echo '=== cached REGISTRY diff ===' && git diff --cached tools/REGISTRY.md && echo '=== worktree REGISTRY ===' && git diff tools/REGISTRY.md | head -5
c95dbb6 test: add unit tests for workflow validation internals
 .../gladex/commands/workflow_validate_unit_test.go | 359 +++++++++++++++++++++
 1 file changed, 359 insertions(+)
=== cached REGISTRY diff ===
diff --git a/tools/REGISTRY.md b/tools/REGISTRY.md
index 28fe882..b7d5e40 100644
--- a/tools/REGISTRY.md
+++ b/tools/REGISTRY.md
@@ -1204,9 +1204,9 @@ Anything else → `public`.
   tests/test_ip_drift_cron.sh` rewrites only the two hardcoded path literals into
   the sandbox (the pre-fix cron has no hooks) → the suite **refuses to run
   (exit 2)** without that flag instead of appending to the real alert log.
-- `bash tests/test_ip_drift_cron.sh --mutations` — mutation battery, **M1–M53** (each
+- `bash tests/test_ip_drift_cron.sh --mutations` — mutation battery, **M1–M55** (each
   precondition-asserted to occur exactly once, must RUN and give the wrong
-  verdict, with a clean control); **566 assertions** measured 2026-10-07 (the
+  verdict, with a clean control); **576 assertions** measured 2026-10-07 (the
   battery counts the suite's own assertions plus its control, so it moves with
   the suite: 194 → 206 with `[0.4.214]`, 206 → 239 with `[0.4.215]`, 239 → 316
   with `[0.4.220]`, **316 → 324** with `[0.4.221]`, **324 → 332** with
@@ -1243,10 +1243,12 @@ Anything else → `public`.
   **546 → 556** with `[0.4.249]` (the TWO `PY30SRC` `BODIES` FILTER plants
   M50/M51 below — **2 × 5 = 10** lines, the same five per plant), and
   **556 → 566** with `[0.4.250]` (the TWO `PY30PLANT` `BODIES` FILTER plants
-  M52/M53 below — **2 × 5 = 10** lines, the same five per plant) — the
+  M52/M53 below — **2 × 5 = 10** lines, the same five per plant), and
+  **566 → 576** with `[0.4.252]` (the TWO step-2 heredoc `DIAGNOSIS format
+  string` plants M54/M55 below — **2 × 5 = 10** lines, the same five per plant) — the
   239 was not refreshed
   when `[0.4.216]` … `[0.4.219]` each moved the suite, so this line now carries
-  the measured figure and not the chain's arithmetic; **35/35 mutants and 17/17
+  the measured figure and not the chain's arithmetic; **35/35 mutants and 19/19
   suite-source plants caught, 0 survived**). M36/M37 are `control30`'s two src
   assertions — the count over `NH30`/`NL30` and the contract diff over
   `GOT30`/`WANT30`, the last two source readings in this file no plant was
=== worktree REGISTRY ===
> build · mimo-v2.6-flash-free
$ cd /data/repo && sed -n '3955,3995p' tests/test_ip_drift_cron.sh
# `grep -cE '^  ok   - M5[45]'` → **10** (5 + 5) and `grep -c '  FAIL - '`
    # → **0** in both modes, default run re-read after this block → **340 / 0**
    # plain and **337 / 0** live-free. Teeth read the other way in the
    # twenty-fourth reading above.
    echo ""
    # M54 — PY30PLANT's format string widened, so its own first guard counts 0
    # for every class: three dead classes × (1 step-3 row + 2 step-4 rows) = the
    # nine-red. Pin is the FIRST red, told apart from every other failure of this
    # same message by the count-0 SystemExit that opens it.
    M54_A="ORDER = ('public', 'private-or-cgnat', 'unparseable')
"
    M54_L1="LINE = '        echo \"[\$(ts)] DIAGNOSIS: "
    M54_L2="%s\" >> \"\$LOG_FILE\"'"
    M54_W2="%s \" >> \"\$LOG_FILE\"'"
    M54_FIND="$M54_A$M54_L1$M54_L2"
    M54_REPL="$M54_A$M54_L1$M54_W2"
    run_suite_plant M54 "M54 PY30PLANT's DIAGNOSIS format string is widened, so all three borrow plants die on a count-0 SystemExit" \
        "$M54_FIND" \
        "$M54_REPL" \
        "control30 borrow public: the plant did not apply (this class's DIAGNOSIS line occurs 0 time(s), want exactly 1)"
    # M55 — PY30SWAP's format string widened the same way: the swap's own count
    # guard sees 0/0/0 and the rotation never runs — the four-red, one step-3
    # row plus the three step-4 rows gated by the missing swap log. Pin is that
    # single step-3 row, told apart from M54's by the `swap:` label and the
    # three-count SystemExit message.
    M55_A="UNP = 'egress is NOT an IP address (public_ip could not be parsed).'
"
    M55_FIND="$M55_A$M54_L1$M54_L2"
    M55_REPL="$M55_A$M54_L1$M54_W2"
    run_suite_plant M55 "M55 PY30SWAP's DIAGNOSIS format string is widened, so the rotation dies on a 0/0/0 count SystemExit" \
        "$M55_FIND" \
        "$M55_REPL" \
        'control30 swap: the plant did not apply (a class DIAGNOSIS line occurs 0/0/0 time(s), want 1/1/1)'
fi

# =============================================================================
echo ""
echo "=== Results: $PASS passed, $FAIL failed ==="
[ "$FAIL" -eq 0 ] || exit 1
exit 0
$ cd /data/repo && grep -n 'twenty-third\|twenty-fourth\|twenty-fifth' tests/test_ip_drift_cron.sh | tail -20; echo '=== readings tail ==='; sed -n '1830,1860p' tests/test_ip_drift_cron.sh
1821:# Read a twenty-third time for M52/M53 (queue item (aq), 2026-10-07): the two
3958:    # twenty-fourth reading above.
=== readings tail ===
#     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.
# =============================================================================
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"
> build · mimo-v2.6-flash-free
$ df -h / | tail -1; du -sh /tmp/opencode 2>/dev/null; du -sh /tmp/* 2>/dev/null | sort -h | tail -8; ls -d /tmp/ipdriftrunc-test.* 2>/dev/null | wc -l
/dev/mapper/ubuntu--vg-ubuntu--lv   98G   92G  1.9G  99% /
2.3G	/tmp/opencode
115M	/tmp/chs.zip
149M	/tmp/gc2
263M	/tmp/chs
573M	/tmp/gomod
585M	/tmp/gopath
882M	/tmp/gomodcache
2.3G	/tmp/opencode
47G	/tmp/gocache
0
> build · mimo-v2.6-flash-free
Disk has 1.9G free (others' caches dominate — not mine to touch). Running the teeth re-take on final bytes:
$ cd /tmp/opencode/probe62 && bash teeth62b.sh 2>&1 | tail -30; echo "rc=$?"
=== source-check on the INSTALLED suite (/data/repo/tests/test_ip_drift_cron.sh) ===
md5: 8d4ccd79355e6e2d78b7cbf1d4305bcd
target first line: 177
target line-start count (grep -c ^TARGET): 1
target raw count (grep -F -c): 8
M54 pin QUOTED count: 1
M54 pin BARE count: 2
M55 pin QUOTED count: 1
M55 pin BARE count: 2
backslash in target: no
structural: ^LINE = 2  bare-LINE-literal 2  ^ORDER = 1  ^UNP = 1  run_suite_plant calls 19
=== build throwaway tree ===
=== redirect both pins ===
both pins redirected, remaining: 0 0 | target count: 10
bash -n OK after both redirects
=== clean run (PLAIN) in the redirected tree ===
=== Results: 340 passed, 0 failed ===
clean FAIL lines: 0
target printed as its own ok row: 0
=== battery in the redirected tree ===
=== Results: 570 passed, 2 failed ===
battery FAIL lines: 2
  FAIL - M54: the sandbox tree could not be built
  FAIL - M55 → wrong verdict is NOT the intended one (expected a failure of: 'assert_lacks "no drift → nothing appended to ALERTS"')
ok lines for M54/M55: 4
all reds are 'wrong verdict is NOT the intended one': 1
rc=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)
[Wed Oct  7 18:17:45 2026] 127.0.0.1:35376 Accepted
[Wed Oct  7 18:17:45 2026] 127.0.0.1:35376 Closing
[Wed Oct  7 18:19:44 2026] 127.0.0.1:36470 Accepted
[Wed Oct  7 18:19:44 2026] 127.0.0.1:36470 Closing
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60556 Accepted
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60556 Closing
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60560 Accepted
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60560 Closing
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60568 Accepted
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60568 Closing
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60574 Accepted
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60574 Closing
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60588 Accepted
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60588 Closing
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60596 Accepted
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60596 Closing
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60604 Accepted
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60604 Closing
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60612 Accepted
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60612 Closing
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60626 Accepted
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60626 Closing
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60632 Accepted
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60632 Closing
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60646 Accepted
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60646 Closing
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60656 Accepted
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60656 Closing
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60672 Accepted
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60672 Closing
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60680 Accepted
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60680 Closing
[Wed Oct  7 18:19:45 2026] 127.0.0.1:60692 Accepted
[Wed Oct  7 18:19:46 2026] 127.0.0.1:60692 Closing
[Wed Oct  7 18:19:46 2026] 127.0.0.1:60708 Accepted
[Wed Oct  7 18:19:46 2026] 127.0.0.1:60708 Closing
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34338 Accepted
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34338 Closing
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34344 Accepted
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34344 Closing
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34348 Accepted
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34348 Closing
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34350 Accepted
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34350 Closing
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34356 Accepted
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34356 Closing
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34372 Accepted
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34372 Closing
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34374 Accepted
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34374 Closing
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34382 Accepted
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34382 Closing
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34398 Accepted
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34398 Closing
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34414 Accepted
[Wed Oct  7 18:26:25 2026] 127.0.0.1:34414 Closing
[Wed Oct  7 18:29:27 2026] 127.0.0.1:41564 Accepted
[Wed Oct  7 18:29:27 2026] 127.0.0.1:41564 Closing
[Wed Oct  7 18:29:28 2026] 127.0.0.1:41568 Accepted

Generated 2026-10-07 16:29:28 UTC · Gladex.de