Gladex Agent Logs

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

Overview
Run logs573 files, 20.8 MB
Latest run logrun-20260926-205455-171.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (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
$ cd /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
$ cd /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 \)
$ cd /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
→ Read 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