Gladex Agent Logs
Agent run logs & app logs · env: prod · LAN-only investor surface
Overview
| Run logs | 573 files, 20.8 MB |
| Latest run log | run-20260926-205455-171.log |
| Log directory | /data/agent-logs |
| App log directory | /opt/startup/prod/logs |
Run logs (newest first, last 50)
| File | Size | Modified (UTC) |
|---|---|---|
| run-20260926-205455-171.log | 83 KB | 2026-09-26 18:56:42 |
| run-20260926-202137-170.log | 215 KB | 2026-09-26 18:44:55 |
| run-20260926-194055-169.log | 257 KB | 2026-09-26 18:11:37 |
| run-20260926-191403-168.log | 160 KB | 2026-09-26 17:30:55 |
| run-20260926-180537-167.log | 281 KB | 2026-09-26 17:04:03 |
| run-20260926-170523-166.log | 164 KB | 2026-09-26 15:55:37 |
| run-20260926-162230-165.log | 178 KB | 2026-09-26 14:55:23 |
| run-20260926-154050-164.log | 198 KB | 2026-09-26 14:12:30 |
| run-20260926-153049-163.log | 153 B | 2026-09-26 13:30:50 |
| run-20260926-152049-162.log | 153 B | 2026-09-26 13:20:49 |
| run-20260926-151048-161.log | 153 B | 2026-09-26 13:10:49 |
| run-20260926-150047-160.log | 153 B | 2026-09-26 13:00:48 |
| run-20260926-145046-159.log | 153 B | 2026-09-26 12:50:47 |
| run-20260926-144046-158.log | 153 B | 2026-09-26 12:40:46 |
| run-20260926-143045-157.log | 153 B | 2026-09-26 12:30:46 |
| run-20260926-142044-156.log | 153 B | 2026-09-26 12:20:45 |
| run-20260926-141044-155.log | 153 B | 2026-09-26 12:10:44 |
| run-20260926-140043-154.log | 153 B | 2026-09-26 12:00:44 |
| run-20260926-135042-153.log | 190 B | 2026-09-26 11:50:43 |
| run-20260926-134042-152.log | 153 B | 2026-09-26 11:40:42 |
| run-20260926-133041-151.log | 153 B | 2026-09-26 11:30:42 |
| run-20260926-132040-150.log | 190 B | 2026-09-26 11:20:41 |
| run-20260926-131039-149.log | 153 B | 2026-09-26 11:10:40 |
| run-20260926-130039-148.log | 153 B | 2026-09-26 11:00:39 |
| run-20260926-125038-147.log | 190 B | 2026-09-26 10:50:39 |
| run-20260926-124037-146.log | 153 B | 2026-09-26 10:40:38 |
| run-20260926-123037-145.log | 153 B | 2026-09-26 10:30:37 |
| run-20260926-122036-144.log | 190 B | 2026-09-26 10:20:37 |
| run-20260926-121035-143.log | 190 B | 2026-09-26 10:10:36 |
| run-20260926-120035-142.log | 153 B | 2026-09-26 10:00:35 |
| run-20260926-115034-141.log | 153 B | 2026-09-26 09:50:34 |
| run-20260926-114033-140.log | 153 B | 2026-09-26 09:40:34 |
| run-20260926-113032-139.log | 153 B | 2026-09-26 09:30:33 |
| run-20260926-112032-138.log | 153 B | 2026-09-26 09:20:32 |
| run-20260926-111031-137.log | 153 B | 2026-09-26 09:10:32 |
| run-20260926-110026-136.log | 153 B | 2026-09-26 09:00:31 |
| run-20260926-105025-135.log | 153 B | 2026-09-26 08:50:26 |
| run-20260926-104024-134.log | 190 B | 2026-09-26 08:40:25 |
| run-20260926-103023-133.log | 153 B | 2026-09-26 08:30:24 |
| run-20260926-102023-132.log | 153 B | 2026-09-26 08:20:23 |
| run-20260926-101022-131.log | 190 B | 2026-09-26 08:10:23 |
| run-20260926-100021-130.log | 153 B | 2026-09-26 08:00:22 |
| run-20260926-095021-129.log | 153 B | 2026-09-26 07:50:21 |
| run-20260926-090029-128.log | 230 KB | 2026-09-26 07:40:21 |
| run-20260926-081623-127.log | 209 KB | 2026-09-26 06:50:29 |
| run-20260926-073109-126.log | 146 KB | 2026-09-26 06:06:23 |
| run-20260926-061035-125.log | 341 KB | 2026-09-26 05:21:09 |
| run-20260926-052113-124.log | 352 KB | 2026-09-26 04:00:35 |
| run-20260926-043030-123.log | 311 KB | 2026-09-26 03:11:13 |
| run-20260926-032802-122.log | 338 KB | 2026-09-26 02:20:30 |
Tail — run-20260926-205455-171.log (last 200 lines)
# child exit 0 -> ok
# child exit 1 -> error + ERRORS++: a second list exists, the pointer was
# dropped, or the authoritative list is empty - that is the
# defect this row exists for
# child exit 3 ("cannot verify") -> warning, never ok and never an error:
> build · mimo-v2.6-flash-free
[0m$ [0mcd /data/repo && grep -n "count_unread\|DEV_DB=\|PROD_DB=\|sqlite3\|SQLITE" tools/system-status | head -40; echo "=== count_unread def ==="; sed -n "$(grep -n 'count_unread()' tools/system-status | head -1 | cut -d: -f1),+40p" tools/system-status
22:DEV_DB="${GLADEX_DEV_DB:-/opt/startup/dev/data/messages.db}"
23:PROD_DB="${GLADEX_PROD_DB:-/opt/startup/prod/data/messages.db}"
25:# count_unread <db-path> -> integer count, or '?' when the DB cannot be read at
28:count_unread() {
31: n=$(sqlite3 "$db" "SELECT COUNT(*) FROM messages WHERE direction='investor_to_agent' AND read=0;" 2>/dev/null || true)
823:UNREAD_DEV=$(count_unread "$DEV_DB")
824:UNREAD_PROD=$(count_unread "$PROD_DB")
=== count_unread def ===
count_unread() {
local db="$1" n
if [[ ! -f "$db" ]]; then printf '?'; return 0; fi
n=$(sqlite3 "$db" "SELECT COUNT(*) FROM messages WHERE direction='investor_to_agent' AND read=0;" 2>/dev/null || true)
if [[ "$n" =~ ^[0-9]+$ ]]; then printf '%s' "$n"; else printf '?'; fi
}
# Defaults
FORMAT="human"
# Parse args
while [[ $# -gt 0 ]]; do
case "$1" in
--help|-h)
echo "Usage: system-status [--format human|json]"
echo ""
echo "Quick overview of the Gladex system health."
echo ""
echo "Options:"
echo " --format human|json Output format (default: human)"
echo " --help, -h Show this help"
echo ""
echo "Test hooks (env):"
echo " GLADEX_DEV_DB unread-count DB for dev (default /opt/startup/dev/data/messages.db)"
echo " GLADEX_PROD_DB unread-count DB for prod (default /opt/startup/prod/data/messages.db)"
echo " Both envs are counted; an unreadable DB reports '?' and warns."
echo " GLADEX_REPO_DIR repo to report on (default: parent dir of this script);"
echo " lets tests run mutated copies from a sandbox path"
echo " GLADEX_GO_BIN go binary for the go-tests check (default: go)"
echo " GLADEX_GO_TIMEOUT seconds the go test run is given (default: 120)"
echo " GLADEX_GO_GOPATH GOPATH for the go test run (default: /tmp/gopath)"
echo " GLADEX_GO_GOCACHE GOCACHE for the go test run (default: /tmp/gocache)"
echo ""
echo "cloud verdicts (Nextcloud status.php + Immich /api/server/ping + docker):"
echo " ok both endpoints 200, every expected container Up,"
echo " no container has a non-zero RestartCount"
echo " warning Nextcloud reachable but installed=false (first-run"
echo " wizard not finished), a 200 whose body could not be"
echo " read, docker unavailable, or RestartCount > 0"
echo " error either endpoint is not 200, or an expected container"
echo " is absent / not Up"
> build · mimo-v2.6-flash-free
[0m$ [0mcd /data/repo && ls tests/ | head -60; echo "=== count pins ==="; grep -rn "checks\b.*35\|35 checks\|len(.checks.\)\|checks must be\|checks)\s*==\s*35" tests/*.sh | head -20
test_app_contrast.php
test_app_contrast_meta.php
test_app_version.php
test_budget_show.sh
test_changelog_api.php
test_chat_a11y.php
test_chat_frontend.php
test_cli_version.php
test_dig_tools_transport.sh
test_dns_verify.sh
test_domain_availability.sh
test_grid_320.php
test_identity_wrapper.sh
test_inbox_status.sh
test_investor_heading.php
test_ip_drift_check.sh
test_ip_drift_cron.sh
test_ip_drift_safety.php
test_lan_middleware.php
test_mailbox_a11y.php
test_main_landmark.php
test_page_lang.php
test_pdns_api.sh
test_php_busy_timeout.php
test_promote_gate.sh
test_promote_json.sh
test_promote_lint_gate.sh
test_queue_source.sh
test_regression_run.sh
test_repo_lint.sh
test_smtp_relay_probe.sh
test_source_sync_check.sh
test_stats_dbpath.php
test_stats_gocli_path.php
test_system_status_cloud.sh
test_system_status_dig_single_point.sh
test_system_status_dns.sh
test_system_status_go_compile.sh
test_system_status_go_tests.sh
test_system_status_mx_soa.sh
test_system_status_mx_soa_transport.sh
test_system_status_promote_gates.sh
test_system_status_tls_expiry.sh
test_system_status_unread.sh
test_team_page.php
test_templates_contrast.php
test_templates_gallery.php
test_tls_check.sh
test_trust_mobile.php
test_ts_ordering.php
test_webmail_session_routing.php
=== count pins ===
grep: Unmatched ) or \)
[0m$ [0mcd /data/repo && ./tools/inbox-status --format json; echo "rc=$?"; echo "=== help ==="; ./tools/inbox-status --help 2>&1 | head -40
{
"tool": "inbox-status",
"timestamp": "2026-09-26T18:56:34Z",
"sources": {
"inbox": "/data/repo/INBOX.md",
"dev_db": "/opt/startup/dev/data/messages.db",
"prod_db": "/opt/startup/prod/data/messages.db"
},
"unread": {
"dev": 0,
"prod": 0,
"total": 0,
"rows": []
},
"last_reply": {
"dev": {
"id": 76,
"ts": "2026-09-26T18:23:31Z"
},
"prod": {
"id": 42,
"ts": "2026-09-26T18:23:31Z"
}
},
"inbox": {
"entries": 73,
"handled": 72,
"open": 1,
"open_replied": [
{
"line": 452,
"heading": "2026-09-26 investor: agents get matching accounts on Nextcloud + Immich"
}
],
"open_unreplied": []
},
"owed": {
"unread_messages": 0,
"unreplied_entries": 0,
"total": 0
},
"ok": true,
"exit_code": 0
}
rc=0
=== help ===
usage: inbox-status [-h] [--format {human,json}] [--repo REPO] [--inbox INBOX]
[--dev-db DEV_DB] [--prod-db PROD_DB]
Grade the STEP 0 investor-reply duty (read-only).
options:
-h, --help show this help message and exit
--format {human,json}
output format (default: human)
--repo REPO repo root used to derive the default INBOX.md path
--inbox INBOX path to INBOX.md
--dev-db DEV_DB path to the dev messages.db
--prod-db PROD_DB path to the prod messages.db
exit codes:
0 nothing owed - 0 unread investor_to_agent rows in BOTH databases and
every open INBOX.md entry carries a reply marker
1 the duty is open - an unread investor message exists, or an INBOX.md
entry is neither struck ~~HANDLED nor replied to (both are reported)
2 invalid arguments
3 cannot verify: INBOX.md or a messages.db is missing/unreadable, or the
schema is not the documented one - an input that was not read is never
a pass
obligations graded:
O1 every investor_to_agent row in dev AND prod has read=1
O2 every `## ` entry in INBOX.md is ~~HANDLED in its heading or carries a
reply marker in its body (`REPLY SENT (dev N / prod N)`,
`Reply sent (dev N / prod N)`, `reply dev N / prod N`)
notes:
- read-only: this tool never marks a row read, never edits INBOX.md
- message BODIES are never printed - unread rows report db/id/ts only
- open-but-replied entries are ALLOWED (blocked work is legitimately open);
they are listed separately under `inbox.open_replied`
env overrides (test hooks): GLADEX_INBOX_FILE, GLADEX_MSG_DB_DEV,
GLADEX_MSG_DB_PROD, GLADEX_REPO_DIR
> build · mimo-v2.6-flash-free
[0m→ [0mRead repo/tests/test_system_status_unread.sh
> 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 Sep 26 20:35:31 2026] 127.0.0.1:47442 Accepted [Sat Sep 26 20:35:31 2026] 127.0.0.1:47442 Closing [Sat Sep 26 20:35:31 2026] 127.0.0.1:47454 Accepted [Sat Sep 26 20:35:31 2026] 127.0.0.1:47454 Closing [Sat Sep 26 20:35:31 2026] 127.0.0.1:47460 Accepted [Sat Sep 26 20:35:31 2026] 127.0.0.1:47460 Closing [Sat Sep 26 20:35:31 2026] 127.0.0.1:47466 Accepted [Sat Sep 26 20:35:31 2026] 127.0.0.1:47466 Closing [Sat Sep 26 20:35:49 2026] 127.0.0.1:35894 Accepted [Sat Sep 26 20:35:49 2026] 127.0.0.1:35894 Closing [Sat Sep 26 20:35:49 2026] 127.0.0.1:35906 Accepted [Sat Sep 26 20:35:49 2026] 127.0.0.1:35906 Closing [Sat Sep 26 20:35:52 2026] 127.0.0.1:35918 Accepted [Sat Sep 26 20:35:52 2026] 127.0.0.1:35918 Closing [Sat Sep 26 20:35:52 2026] 127.0.0.1:35922 Accepted [Sat Sep 26 20:35:52 2026] 127.0.0.1:35922 Closing [Sat Sep 26 20:35:52 2026] 127.0.0.1:35930 Accepted [Sat Sep 26 20:35:52 2026] 127.0.0.1:35930 Closing [Sat Sep 26 20:35:52 2026] 127.0.0.1:35946 Accepted [Sat Sep 26 20:35:52 2026] 127.0.0.1:35946 Closing [Sat Sep 26 20:35:52 2026] 127.0.0.1:35950 Accepted [Sat Sep 26 20:35:52 2026] 127.0.0.1:35950 Closing [Sat Sep 26 20:36:08 2026] 127.0.0.1:51526 Accepted [Sat Sep 26 20:36:08 2026] 127.0.0.1:51526 Closing [Sat Sep 26 20:36:08 2026] 127.0.0.1:51530 Accepted [Sat Sep 26 20:36:08 2026] 127.0.0.1:51530 Closing [Sat Sep 26 20:36:08 2026] 127.0.0.1:51532 Accepted [Sat Sep 26 20:36:08 2026] 127.0.0.1:51532 Closing [Sat Sep 26 20:36:08 2026] 127.0.0.1:51548 Accepted [Sat Sep 26 20:36:08 2026] 127.0.0.1:51548 Closing [Sat Sep 26 20:36:08 2026] 127.0.0.1:51560 Accepted [Sat Sep 26 20:36:08 2026] 127.0.0.1:51560 Closing [Sat Sep 26 20:36:08 2026] 127.0.0.1:51572 Accepted [Sat Sep 26 20:36:08 2026] 127.0.0.1:51572 Closing [Sat Sep 26 20:36:08 2026] 127.0.0.1:51586 Accepted [Sat Sep 26 20:36:08 2026] 127.0.0.1:51586 Closing [Sat Sep 26 20:36:08 2026] 127.0.0.1:51594 Accepted [Sat Sep 26 20:36:09 2026] 127.0.0.1:51594 Closing [Sat Sep 26 20:36:09 2026] 127.0.0.1:51608 Accepted [Sat Sep 26 20:36:09 2026] 127.0.0.1:51608 Closing [Sat Sep 26 20:36:09 2026] 127.0.0.1:51620 Accepted [Sat Sep 26 20:36:09 2026] 127.0.0.1:51620 Closing [Sat Sep 26 20:36:09 2026] 127.0.0.1:51628 Accepted [Sat Sep 26 20:36:09 2026] 127.0.0.1:51628 Closing [Sat Sep 26 20:36:09 2026] 127.0.0.1:51636 Accepted [Sat Sep 26 20:36:09 2026] 127.0.0.1:51636 Closing [Sat Sep 26 20:36:09 2026] 127.0.0.1:51646 Accepted [Sat Sep 26 20:36:09 2026] 127.0.0.1:51646 Closing [Sat Sep 26 20:36:09 2026] 127.0.0.1:51654 Accepted [Sat Sep 26 20:36:09 2026] 127.0.0.1:51654 Closing [Sat Sep 26 20:36:09 2026] 127.0.0.1:51668 Accepted [Sat Sep 26 20:36:09 2026] 127.0.0.1:51668 Closing [Sat Sep 26 20:41:25 2026] 127.0.0.1:36016 Accepted [Sat Sep 26 20:41:25 2026] 127.0.0.1:36016 Closing [Sat Sep 26 20:41:33 2026] 127.0.0.1:36022 Accepted [Sat Sep 26 20:41:33 2026] 127.0.0.1:36022 Closing [Sat Sep 26 20:57:00 2026] 127.0.0.1:58916 Accepted [Sat Sep 26 20:57:00 2026] 127.0.0.1:58916 Closing [Sat Sep 26 20:57:00 2026] 127.0.0.1:58926 Accepted
Generated 2026-09-26 18:57:00 UTC · Gladex.de