Gladex Agent Logs

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

Overview
Run logs1391 files, 94.1 MB
Latest run logrun-20261010-125933-925.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20261010-125933-925.log 435 KB 2026-10-10 12:21:51
run-20261010-123337-924.log 152 KB 2026-10-10 10:49:24
run-20261010-115741-923.log 208 KB 2026-10-10 10:23:28
run-20261010-112119-922.log 259 KB 2026-10-10 09:47:32
run-20261010-104503-921.log 231 KB 2026-10-10 09:11:10
run-20261010-100305-920.log 243 KB 2026-10-10 08:34:54
run-20261010-090754-919.log 608 KB 2026-10-10 07:52:55
run-20261010-081222-918.log 384 KB 2026-10-10 06:57:44
run-20261010-074045-917.log 404 KB 2026-10-10 06:02:12
run-20261010-064359-916.log 252 KB 2026-10-10 05:30:35
run-20261010-061545-915.log 131 KB 2026-10-10 04:33:49
run-20261010-041808-914.log 422 KB 2026-10-10 04:05:36
run-20261010-032250-913.log 225 KB 2026-10-10 02:07:59
run-20261010-023524-912.log 340 KB 2026-10-10 01:12:41
run-20261010-020034-911.log 121 KB 2026-10-10 00:25:15
run-20261010-015024-910.log 153 B 2026-10-09 23:50:25
run-20261010-014014-909.log 153 B 2026-10-09 23:40:15
run-20261010-013004-908.log 153 B 2026-10-09 23:30:05
run-20261010-011954-907.log 153 B 2026-10-09 23:19:55
run-20261010-010944-906.log 153 B 2026-10-09 23:09:45
run-20261010-005935-905.log 153 B 2026-10-09 22:59:35
run-20261010-004925-904.log 153 B 2026-10-09 22:49:26
run-20261010-003915-903.log 153 B 2026-10-09 22:39:16
run-20261010-002906-902.log 153 B 2026-10-09 22:29:06
run-20261010-001856-901.log 153 B 2026-10-09 22:18:57
run-20261010-000846-900.log 153 B 2026-10-09 22:08:47
run-20261009-235837-899.log 153 B 2026-10-09 21:58:37
run-20261009-234827-898.log 153 B 2026-10-09 21:48:28
run-20261009-233817-897.log 153 B 2026-10-09 21:38:18
run-20261009-232808-896.log 153 B 2026-10-09 21:28:08
run-20261009-231758-895.log 153 B 2026-10-09 21:17:59
run-20261009-230748-894.log 153 B 2026-10-09 21:07:49
run-20261009-225738-893.log 153 B 2026-10-09 20:57:39
run-20261009-224729-892.log 153 B 2026-10-09 20:47:29
run-20261009-223719-891.log 153 B 2026-10-09 20:37:20
run-20261009-222709-890.log 153 B 2026-10-09 20:27:10
run-20261009-221659-889.log 153 B 2026-10-09 20:17:00
run-20261009-220649-888.log 190 B 2026-10-09 20:06:50
run-20261009-215639-887.log 153 B 2026-10-09 19:56:40
run-20261009-214628-886.log 153 B 2026-10-09 19:46:29
run-20261009-213618-885.log 153 B 2026-10-09 19:36:19
run-20261009-212608-884.log 153 B 2026-10-09 19:26:09
run-20261009-211558-883.log 153 B 2026-10-09 19:15:59
run-20261009-210548-882.log 153 B 2026-10-09 19:05:49
run-20261009-205539-881.log 190 B 2026-10-09 18:55:39
run-20261009-204528-880.log 190 B 2026-10-09 18:45:29
run-20261009-203518-879.log 153 B 2026-10-09 18:35:19
run-20261009-202508-878.log 190 B 2026-10-09 18:25:09
run-20261009-201458-877.log 153 B 2026-10-09 18:14:59
run-20261009-200448-876.log 190 B 2026-10-09 18:04:49
Tail — run-20261010-125933-925.log (last 200 lines)
> build · mimo-v2.6-flash-free
$ cd /data/repo && sed -n '/^_run()/,/^}/p' tests/test_system_status_promote_gates.sh; echo "=== REPOF:"; grep -n "REPOF=\|PG_BIN=\|STUB=" tests/test_system_status_promote_gates.sh | head -20
_run() {  # _run <format>
    rm -f "$PG_LOG" "$SS_LOG" "$GIT_LOG"
    env PATH="$STUB:$PATH" \
        GLADEX_DEV_DB="$SANDBOX/no.db" GLADEX_PROD_DB="$SANDBOX/no.db" \
        GLADEX_REPO_DIR="$REPOF" \
        GLADEX_REPO_LINT_BIN="$STUB/repo-lint" GLADEX_GO_LINT_TIMEOUT=5 \
        GLADEX_GO_BIN=go GLADEX_GO_TIMEOUT=5 \
        GLADEX_PROMOTE_BIN="$PG_BIN" GLADEX_PROMOTE_TIMEOUT="$PG_TMO" \
        GLADEX_SOURCE_SYNC_BIN="$SS_BIN" GLADEX_SOURCE_SYNC_TIMEOUT="$SS_TMO" \
        GLADEX_GIT_BIN="$SHIP_BIN" GLADEX_SHIP_TIMEOUT="$SHIP_TMO" \
        GLADEX_CLOUD_DOCKER_BIN="$STUB/docker-not-under-test" \
        STUB_RL_MODE="$RL_MODE" STUB_PG_MODE="$PG_MODE" \
        STUB_RL_SHA="$RL_SHA" STUB_PG_SHA="$PG_SHA" \
        STUB_PG_CHILD="$PG_CHILD" STUB_PG_MB="$PG_MB" STUB_PG_TS="$PG_TS" \
        STUB_PG_DSCHILD="$PG_DSCHILD" STUB_PG_SHIPCHILD="$PG_SHIPCHILD" \
        STUB_SS_MODE="$SS_MODE" STUB_SS_LOG="$SS_LOG" \
        STUB_GIT_LOG="$GIT_LOG" \
        STUB_PG_LOG="$PG_LOG" \
        "$TOOL" --format "$1"
}
=== REPOF:
142:STUB="$SANDBOX/bin"
463:REPOF="$SANDBOX/repo"; mkrepo "$REPOF"
478:PG_BIN="$STUB/promote-stub"
708:PG_BIN="$SANDBOX/no-such-promote"
710:PG_BIN="$STUB/promote-stub"
> build · mimo-v2.6-flash-free
$ cd /data/repo && sed -n '/^mkrepo()/,/^}/p' tests/test_system_status_promote_gates.sh
mkrepo() {
    local dir="$1"
    rm -rf "$dir"; mkdir -p "$dir"
    git -C "$dir" init -q 2>/dev/null
    git -C "$dir" config user.email "suite@example.invalid"
    git -C "$dir" config user.name  "suite"
    mkdir -p "$dir/app/src/php"
    printf '<?php // x\n' > "$dir/app/src/php/x.php"
    mkdir -p "$dir/examples/workflows"
    printf '{"name":"w"}\n' > "$dir/examples/workflows/hello.json"
    git -C "$dir" add -A >/dev/null 2>&1
    git -C "$dir" commit -qm init >/dev/null 2>&1
}
> build · mimo-v2.6-flash-free
$ cd /data/repo && grep -n "^# ===\|^# ---" tests/test_system_status_promote_gates.sh | tail -30; echo ===; grep -n "section 19\|section 18" tests/test_system_status_promote_gates.sh | head
141:# ---------------------------------------------------------------- stubs -----
449:# ------------------------------------------------------------- fixtures ----
1488:# ---- M7-M12: the divergence guard's COMMIT EVIDENCE (section 14b) ----------
1596:# ---- M13-M18: the row's two NEW pieces of evidence --------------------------
1707:# ---- M19-M23: the age must be THIS report's arithmetic, or say why it is not --
1782:# ---- M24-M29: the SECOND pair (sections 14d/14e) -----------------------------
1924:# ---- M32-M39: the THIRD pair (sections 14f/14g/15c) ---------------------------
2182:# --- scoping: exactly one block per copy, or the comparison reads the wrong one
2193:# --- each copy must actually state the three cases
2210:# --- the comparisons
2227:# --- the promise every copy must still make: a refusal is never a failure,
2239:# --- the claim the tool makes about this file, now that this file reads it
2247:# --- negative controls: each plant must BREAK a comparison above, otherwise the
===
72:#     a day, `3d 8h` above it (section 18c); states where that subtraction
> build · mimo-v2.6-flash-free
$ cd /data/repo && grep -n '^echo "=== \|^echo "========\|^echo "[0-9]*\.' tests/test_system_status_promote_gates.sh | tail -30; echo ===; grep -n 'Results:' tests/test_system_status_promote_gates.sh
583:echo "=== 3. dev-sync refuses -> named with its own reason ==="
599:echo "=== 4. commit-lint refuses while go-compile can only warn -> no divergence ==="
609:echo "=== 4b. ship-tree refuses while HEAD lints clean -> named, and never a divergence ==="
637:echo "=== 5. an unevaluated gate is reported, never silently skipped ==="
648:echo "=== 6. dry_run not confirmed -> cannot verify, never a verdict ==="
658:echo "=== 7. ready contradicted by its own gates -> cannot verify ==="
667:echo "=== 8. gates green but ready false -> cannot verify (contract drift) ==="
676:echo "=== 9. gates green but the run failed -> not promotable, exit carried ==="
686:echo "=== 10. output we cannot read -> cannot verify (three shapes) ==="
697:echo "=== 11. a hanging child is bounded by our own budget ==="
707:echo "=== 12. a missing child -> cannot verify, never ok ==="
716:echo "=== 13. the DEFAULT child path is relative to the REPORTED repo ==="
726:echo "=== 14. DIVERGENCE: the gate and the go-compile row contradict ==="
745:echo "=== 14b. divergence EVIDENCE: the commit each check actually measured ==="
817:echo "=== 14c. divergence EVIDENCE: WHICH child each check actually ran ==="
856:echo "=== 14d. the SECOND pair: dev == repo asked twice (gate vs this run) ==="
952:echo "=== 14e. the second pair's EVIDENCE: which child each side ran ==="
988:echo "=== 14f. the THIRD pair: the trees that would ship, asked twice ==="
1079:echo "=== 14g. the third pair's EVIDENCE: which git each side ran ==="
1115:echo "=== 15. the invocation the child RECEIVES ==="
1129:echo "=== 15b. the second child's invocation (what source-sync-check RECEIVES) ==="
1145:echo "=== 15c. the third sighting's invocation + the tree set it scans ==="
1196:echo "=== 16. the human renderer carries the row ==="
1207:echo "=== 17. --help documents the row, its verdicts and its hooks ==="
1238:echo "=== 18. static: the child call carries all four safety tokens ==="
1256:echo "=== 18b. the refusal is DATED from the reviewer mailbox - four states ==="
1298:echo "=== 18c. the age must be dated by THIS report's stamps, or say why not ==="
1352:echo "=== 19. mutations — each plant must break the INTENDED assertion ==="
2068:echo "=== 20. the promote-gates contract's THREE prose copies must agree ==="
2293:echo "=== Results: $PASS passed, $FAIL failed, $SKIP skipped ==="
===
2293:echo "=== Results: $PASS passed, $FAIL failed, $SKIP skipped ==="
> build · mimo-v2.6-flash-free
→ Read repo/tests/test_system_status_promote_gates.sh [offset=2239, limit=55]
> build · mimo-v2.6-flash-free
← Edit repo/tests/test_system_status_promote_gates.sh
Index: repo/tests/test_system_status_promote_gates.sh
===================================================================
--- repo/tests/test_system_status_promote_gates.sh
+++ repo/tests/test_system_status_promote_gates.sh
@@ -1425,11 +1425,15 @@
     bad "mutation M2 (want real=yes mutant=no, got real=$r mutant=$m)"
   fi
 fi
 
-# M3: the probe pin dropped (the child's own defence against a lost flag)
-if plant M3 'GLADEX_GATE_PROBE=1 \' \
-  's|GLADEX_GATE_PROBE=1 \\|GLADEX_PROMOTE_PROBE=1 \\|; $a # MUTANT: M3 probe pin dropped'; then
+# M3: the probe pin dropped (the child's own defence against a lost flag).
+# Anchored on THIS row's own child line since [0.4.294], when the deploy-path
+# row (section 21) started running a child under the same pin: the bare
+# `GLADEX_GATE_PROBE=1 \` then named two places, and `plant` refuses to guess
+# which one it was asked about (it wants exactly one match).
+if plant M3 'PG_OUT=$(GLADEX_REPO_DIR="$REPO_DIR" GLADEX_GATE_PROBE=1 \' \
+  's|PG_OUT=$(GLADEX_REPO_DIR="$REPO_DIR" GLADEX_GATE_PROBE=1 \\|PG_OUT=$(GLADEX_REPO_DIR="$REPO_DIR" GLADEX_PROMOTE_PROBE=1 \\|; $a # MUTANT: M3 probe pin dropped'; then
   PG_MODE=ready
   run_status >/dev/null
   real_probe=$(sed -n '2p' "$PG_LOG" 2>/dev/null || true)
   run_mutant json >/dev/null 2>&1

> build · mimo-v2.6-flash-free
$ cd /data/repo && grep -n "ERRORS" tools/system-status | tail -15; echo ===; sed -n '2700,2760p' tools/system-status
1490:#     already grade the tree itself (error + ERRORS++). The point of this row
1499:# Warnings never touch ERRORS (the renderer's standing rule), so this row can
1663:    ((ERRORS++)) || true
1680:#   child exit 1 -> error + ERRORS++: a violation. This row deliberately does
1730:    ((ERRORS++)) || true
1839:    ((ERRORS++)) || true
1861:#   a committed file that does not compile      -> error + ERRORS++: the
2023:    ((ERRORS++)) || true
2646:    ((ERRORS++)) || true
2659:#   child exit 1 -> error, ERRORS++: a file carries no record holding its sha,
2717:    ((ERRORS++)) || true
2722:    echo "{\"overall\":\"$([ $ERRORS -eq 0 ] && echo ok || echo error)\",\"errors\":$ERRORS,\"checks\":[$ITEMS]}"
2740:    if [[ $ERRORS -eq 0 ]]; then
2743:        echo "Overall: $ERRORS CHECK(S) FAILED"
2754:if [[ $ERRORS -eq 0 ]]; then
===
print("ok" if c==0 else ("error" if c==1 else "warning"))' 2>/dev/null || echo "")
        DP_DETAIL=$(printf '%s' "$DP_OUT" | python3 -c 'import json,sys
print(json.load(sys.stdin).get("detail") or "")' 2>/dev/null || echo "")
    fi
    # A status without a detail is as unreadable as no status at all: the
    # renderer prints the detail, so an empty one would be a verdict with no
    # sentence behind it.
    if [[ -z "$DP_STATUS" || -z "$DP_DETAIL" ]]; then
        DP_STATUS="warning"
        DP_DETAIL="cannot verify: promote-dev-to-prod --ledger-check output unreadable (exit $DP_RC)"
    fi
else
    DP_STATUS="warning"
    DP_DETAIL="cannot verify: promote-dev-to-prod --ledger-check not runnable at $DP_BIN"
fi
STATUS_ITEMS+=("{\"name\":\"deploy-path\",\"status\":\"$DP_STATUS\",\"detail\":\"$DP_DETAIL\"}")
if [[ "$DP_STATUS" == "error" ]]; then
    ((ERRORS++)) || true
fi

if [[ "$FORMAT" == "json" ]]; then
    ITEMS=$(IFS=,; echo "${STATUS_ITEMS[*]}")
    echo "{\"overall\":\"$([ $ERRORS -eq 0 ] && echo ok || echo error)\",\"errors\":$ERRORS,\"checks\":[$ITEMS]}"
else
    echo "=== Gladex System Status ==="
    echo ""
    for item in "${STATUS_ITEMS[@]}"; do
        NAME=$(echo "$item" | grep -o '"name":"[^"]*"' | cut -d'"' -f4)
        STATUS=$(echo "$item" | grep -o '"status":"[^"]*"' | cut -d'"' -f4)
        DETAIL=$(echo "$item" | grep -o '"detail":"[^"]*"' | cut -d'"' -f4)
        if [[ "$STATUS" == "ok" ]]; then
            ICON="[OK]"
        elif [[ "$STATUS" == "warning" ]]; then
            ICON="[WARN]"
        else
            ICON="[FAIL]"
        fi
        printf "  %-25s %s %s\n" "$NAME" "$ICON" "$DETAIL"
    done
    echo ""
    if [[ $ERRORS -eq 0 ]]; then
        echo "Overall: ALL SYSTEMS HEALTHY"
    else
        echo "Overall: $ERRORS CHECK(S) FAILED"
    fi
fi

# Exit-code contract (this tool's own --help): 0 = healthy, 1 = one or more
# checks failed, 2 = invalid arguments (reserved by the parser above). The
# script used to hand the raw error COUNT to exit, so exactly 2 failing checks
# exited 2 — indistinguishable from a usage error — and 3+ failures exited
# undocumented values. The count itself is not lost: the JSON "errors" field
# and the human "N CHECK(S) FAILED" line still carry it.
# Pinned by case 11 + mutation M3 of tests/test_system_status_mx_soa.sh.
if [[ $ERRORS -eq 0 ]]; then
    exit 0
fi
exit 1
> 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)
[Sat Oct 10 14:16:06 2026] 127.0.0.1:35250 Accepted
[Sat Oct 10 14:16:06 2026] 127.0.0.1:35250 Closing
[Sat Oct 10 14:16:06 2026] 127.0.0.1:35252 Accepted
[Sat Oct 10 14:16:06 2026] 127.0.0.1:35252 Closing
[Sat Oct 10 14:16:06 2026] 127.0.0.1:35262 Accepted
[Sat Oct 10 14:16:06 2026] 127.0.0.1:35262 Closing
[Sat Oct 10 14:16:06 2026] 127.0.0.1:35276 Accepted
[Sat Oct 10 14:16:06 2026] 127.0.0.1:35276 Closing
[Sat Oct 10 14:16:06 2026] 127.0.0.1:35282 Accepted
[Sat Oct 10 14:16:06 2026] 127.0.0.1:35282 Closing
[Sat Oct 10 14:16:06 2026] 127.0.0.1:35288 Accepted
[Sat Oct 10 14:16:06 2026] 127.0.0.1:35286 Accepted
[Sat Oct 10 14:16:06 2026] 127.0.0.1:35288 Closing
[Sat Oct 10 14:16:06 2026] 127.0.0.1:35286 Closing
[Sat Oct 10 14:16:06 2026] 127.0.0.1:35294 Accepted
[Sat Oct 10 14:16:06 2026] 127.0.0.1:35294 Closing
[Sat Oct 10 14:16:07 2026] 127.0.0.1:35308 Accepted
[Sat Oct 10 14:16:07 2026] 127.0.0.1:35308 Closing
[Sat Oct 10 14:16:07 2026] 127.0.0.1:35310 Accepted
[Sat Oct 10 14:16:07 2026] 127.0.0.1:35310 Closing
[Sat Oct 10 14:16:07 2026] 127.0.0.1:35314 Accepted
[Sat Oct 10 14:16:07 2026] 127.0.0.1:35314 Closing
[Sat Oct 10 14:16:07 2026] 127.0.0.1:35326 Accepted
[Sat Oct 10 14:16:07 2026] 127.0.0.1:35326 Closing
[Sat Oct 10 14:16:07 2026] 127.0.0.1:35342 Accepted
[Sat Oct 10 14:16:07 2026] 127.0.0.1:35342 Closing
[Sat Oct 10 14:16:08 2026] 127.0.0.1:35346 Accepted
[Sat Oct 10 14:16:08 2026] 127.0.0.1:35346 Closing
[Sat Oct 10 14:16:08 2026] 127.0.0.1:35360 Accepted
[Sat Oct 10 14:16:08 2026] 127.0.0.1:35360 Closing
[Sat Oct 10 14:16:08 2026] 127.0.0.1:35364 Accepted
[Sat Oct 10 14:16:08 2026] 127.0.0.1:35364 Closing
[Sat Oct 10 14:16:08 2026] 127.0.0.1:35380 Accepted
[Sat Oct 10 14:16:08 2026] 127.0.0.1:35380 Closing
[Sat Oct 10 14:16:08 2026] 127.0.0.1:35384 Accepted
[Sat Oct 10 14:16:08 2026] 127.0.0.1:35384 Closing
[Sat Oct 10 14:16:13 2026] 127.0.0.1:35394 Accepted
[Sat Oct 10 14:16:13 2026] 127.0.0.1:35394 Closing
[Sat Oct 10 14:17:45 2026] 127.0.0.1:43552 Accepted
[Sat Oct 10 14:17:45 2026] 127.0.0.1:43552 Closing
[Sat Oct 10 14:19:04 2026] 127.0.0.1:59682 Accepted
[Sat Oct 10 14:19:04 2026] 127.0.0.1:59682 Closing
[Sat Oct 10 14:19:36 2026] 127.0.0.1:43356 Accepted
[Sat Oct 10 14:19:36 2026] 127.0.0.1:43356 Closing
[Sat Oct 10 14:19:40 2026] 127.0.0.1:43358 Accepted
[Sat Oct 10 14:19:40 2026] 127.0.0.1:43358 Closing
[Sat Oct 10 14:19:48 2026] 127.0.0.1:48430 Accepted
[Sat Oct 10 14:19:48 2026] 127.0.0.1:48430 Closing
[Sat Oct 10 14:19:52 2026] 127.0.0.1:48434 Accepted
[Sat Oct 10 14:19:52 2026] 127.0.0.1:48434 Closing
[Sat Oct 10 14:19:57 2026] 127.0.0.1:57692 Accepted
[Sat Oct 10 14:19:57 2026] 127.0.0.1:57692 Closing
[Sat Oct 10 14:20:00 2026] 127.0.0.1:57702 Accepted
[Sat Oct 10 14:20:00 2026] 127.0.0.1:57702 Closing
[Sat Oct 10 14:20:04 2026] 127.0.0.1:57704 Accepted
[Sat Oct 10 14:20:04 2026] 127.0.0.1:57704 Closing
[Sat Oct 10 14:20:17 2026] 127.0.0.1:36310 Accepted
[Sat Oct 10 14:20:17 2026] 127.0.0.1:36310 Closing
[Sat Oct 10 14:22:48 2026] 127.0.0.1:39936 Accepted

Generated 2026-10-10 12:22:48 UTC · Gladex.de