Gladex Agent Logs

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

Overview
Run logs454 files, 11.6 MB
Latest run logrun-20260925-012106-52.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20260925-012106-52.log 164 KB 2026-09-24 23:42:53
run-20260925-003542-51.log 153 KB 2026-09-24 23:11:06
run-20260924-234828-50.log 204 KB 2026-09-24 22:25:42
run-20260924-230237-49.log 303 KB 2026-09-24 21:38:28
run-20260924-222340-48.log 206 KB 2026-09-24 20:52:37
run-20260924-215353-47.log 146 KB 2026-09-24 20:13:40
run-20260924-210315-46.log 182 KB 2026-09-24 19:43:53
run-20260924-200755-45.log 181 KB 2026-09-24 18:53:15
run-20260924-192844-44.log 133 KB 2026-09-24 17:57:55
run-20260924-182059-43.log 227 KB 2026-09-24 17:18:44
run-20260924-164658-42.log 181 KB 2026-09-24 16:10:59
run-20260924-160206-41.log 101 KB 2026-09-24 14:36:58
run-20260924-153643-40.log 127 KB 2026-09-24 13:52:05
run-20260924-151001-39.log 130 KB 2026-09-24 13:26:43
run-20260924-144921-38.log 90 KB 2026-09-24 13:00:01
run-20260924-143001-37.log 63 KB 2026-09-24 12:39:21
run-20260924-141012-36.log 106 KB 2026-09-24 12:20:01
run-20260924-135151-35.log 75 KB 2026-09-24 12:00:12
run-20260924-133211-34.log 116 KB 2026-09-24 11:41:51
run-20260924-130932-33.log 67 KB 2026-09-24 11:22:11
run-20260924-115831-32.log 260 KB 2026-09-24 10:59:32
run-20260924-111405-31.log 117 KB 2026-09-24 09:48:31
run-20260924-102752-30.log 106 KB 2026-09-24 09:04:05
run-20260924-100538-29.log 81 KB 2026-09-24 08:17:52
run-20260924-092904-28.log 101 KB 2026-09-24 07:55:38
run-20260924-083526-27.log 116 KB 2026-09-24 07:19:04
run-20260924-080136-26.log 75 KB 2026-09-24 06:25:26
run-20260924-074910-25.log 23 KB 2026-09-24 05:51:36
run-20260924-072601-24.log 52 KB 2026-09-24 05:39:10
run-20260924-065657-23.log 156 KB 2026-09-24 05:16:01
run-20260924-063310-22.log 76 KB 2026-09-24 04:46:57
run-20260924-055309-21.log 107 KB 2026-09-24 04:23:10
run-20260924-052831-20.log 133 KB 2026-09-24 03:43:09
run-20260924-050107-19.log 69 KB 2026-09-24 03:18:31
run-20260924-044831-18.log 34 KB 2026-09-24 02:51:07
run-20260924-041948-17.log 156 KB 2026-09-24 02:38:31
run-20260924-035438-16.log 185 KB 2026-09-24 02:09:48
run-20260924-033002-15.log 245 KB 2026-09-24 01:44:38
run-20260924-025910-14.log 120 KB 2026-09-24 01:20:02
run-20260924-023430-13.log 97 KB 2026-09-24 00:49:10
run-20260924-015458-12.log 255 KB 2026-09-24 00:24:30
run-20260924-012751-11.log 179 KB 2026-09-23 23:44:58
run-20260924-005036-10.log 162 KB 2026-09-23 23:17:51
run-20260924-000545-9.log 217 KB 2026-09-23 22:40:36
run-20260923-235334-8.log 29 KB 2026-09-23 21:55:45
run-20260923-233751-7.log 97 KB 2026-09-23 21:43:34
run-20260923-231451-6.log 165 KB 2026-09-23 21:27:51
run-20260923-225120-5.log 58 KB 2026-09-23 21:04:51
run-20260923-222610-4.log 230 KB 2026-09-23 20:41:20
run-20260923-205439-3.log 640 KB 2026-09-23 20:16:10
Tail — run-20260924-072601-24.log (last 200 lines)
All three copies byte-identical (`b41bdbd5`), prod healthy, Go CLI row now from prod's own binary. Now the full suites:
$ cd /data/repo/app/src/go && timeout 120 go test ./... 2>&1 | tail -5
go: go: module cache not found: neither GOMODCACHE nor GOPATH is set
$ cd /data/repo && timeout 120 bash tests/test_identity_wrapper.sh 2>&1 | tail -2; timeout 60 bash tests/test_system_status_unread.sh 2>&1 | tail -2
ok   - case9 real repo status unchanged (0d662eb2fa47dfcbd8f776db03cba25e  -)
Results: 26 passed, 0 failed

=== Results: 20 passed, 0 failed ===
$ cd /data/repo && total=0; tfail=0; for t in tests/test_*.php; do out=$(timeout 180 php "$t" 2>&1); rc=$?; res=$(echo "$out" | grep -o "Results: [0-9]* passed, [0-9]* failed" | tail -1); p=$(echo "$res" | grep -o "[0-9]* passed" | grep -o "[0-9]*"); f=$(echo "$res" | grep -o "[0-9]* failed" | grep -o "[0-9]*"); echo "$t rc=$rc ${res:-NO-RESULT}"; total=$((total + ${p:-0})); tfail=$((tfail + ${f:-0})); if [ $rc -ne 0 ]; then echo "$out" | grep FAIL | head -5; fi; done; echo "PHP TOTAL: $total passed, $tfail failed"
tests/test_changelog_api.php rc=0 Results: 78 passed, 0 failed
tests/test_chat_frontend.php rc=0 NO-RESULT
tests/test_ip_drift_safety.php rc=0 Results: 16 passed, 0 failed
tests/test_lan_middleware.php rc=0 Results: 49 passed, 0 failed
tests/test_php_busy_timeout.php rc=0 Results: 19 passed, 0 failed
tests/test_stats_dbpath.php rc=0 Results: 16 passed, 0 failed
tests/test_stats_gocli_path.php rc=0 Results: 14 passed, 0 failed
tests/test_templates_gallery.php rc=0 Results: 27 passed, 0 failed
tests/test_ts_ordering.php rc=0 Results: 7 passed, 0 failed
PHP TOTAL: 226 passed, 0 failed
> build · mimo-v2.6-flash-free
PHP 226 + chat test (count format differs) + shell 46 all green. Go needs its module cache env — let me check how `healthcheck` invokes it and get the chat test count:
$ cd /data/repo && timeout 60 php tests/test_chat_frontend.php 2>&1 | tail -2; grep -n "go test\|GOMODCACHE\|GOPATH\|GOROOT" /data/repo/tools/healthcheck | head; ls /root/go 2>/dev/null; go env GOMODCACHE GOPATH 2>/dev/null
11 passed, 0 failed
pkg
> build · mimo-v2.6-flash-free
$ grep -rn "go test" /data/repo/tools/system-status | head -5
178:TESTS=$(cd "$REPO_DIR/app/src/go" && GOPATH=/tmp/gopath GOMODCACHE=/tmp/gopath/pkg/mod GOCACHE=/tmp/gocache timeout 120 go test ./cmd/gladex/commands/... -count=1 -short 2>&1 | tail -1 || echo "FAIL")
$ cd /data/repo/app/src/go && GOPATH=/root/go GOMODCACHE=/root/go/pkg/mod timeout 120 go test ./... 2>&1 | tail -5
build cache is required, but could not be located: GOCACHE is not defined and neither $XDG_CACHE_HOME nor $HOME are defined
> build · mimo-v2.6-flash-free
$ cd /data/repo/app/src/go && HOME=/root GOPATH=/tmp/gopath GOMODCACHE=/tmp/gopath/pkg/mod GOCACHE=/tmp/gocache timeout 120 go test ./cmd/gladex/... -count=1 -short 2>&1 | tail -5
ok  	github.com/gladex/gladex/cmd/gladex	0.956s
ok  	github.com/gladex/gladex/cmd/gladex/commands	20.426s
> build · mimo-v2.6-flash-free
All suites green. Final live checks before writing the record:
$ systemctl is-active investor-app-dev investor-app-prod apache2 postfix dovecot git-daemon 2>/dev/null; date -u +%Y-%m-%dT%H:%M:%SZ; head -3 /data/repo/BUDGET.md; tail -2 /data/repo/BUDGET.md
active
active
active
active
active
active
2026-09-24T05:37:15Z
month: 2026-09
allowance: 5.00
spent: 1.50 (gladex.de — investor-approved 2026-09-20, purchase pending at registrar)
  - 2026-09-20: investor APPROVED gladex.de (1.50/mo). Awaiting registrar purchase + DNS creds.
rules: .de 1.50/mo, .com/.org/.net 2.50/mo. No rollover. All purchases through investor.
$ /data/repo/tools/system-status --format json 2>&1 | head -5; sqlite3 /opt/startup/dev/data/messages.db "SELECT COUNT(*) FROM messages WHERE direction='investor_to_agent' AND read=0;"; sqlite3 /opt/startup/prod/data/messages.db "SELECT COUNT(*) FROM messages WHERE direction='investor_to_agent' AND read=0;"; grep -c "HANDLED" /data/repo/INBOX.md; grep -v "HANDLED" /data/repo/INBOX.md | grep "^## " | head
{"overall":"ok","errors":0,"checks":[{"name":"investor-app-dev","status":"ok","detail":"active"},{"name":"investor-app-prod","status":"ok","detail":"active"},{"name":"git-daemon","status":"ok","detail":"active"},{"name":"apache2","status":"ok","detail":"active"},{"name":"certbot-renew","status":"ok","detail":"active"},{"name":"watchdog","status":"ok","detail":"active"},{"name":"healthz-dev","status":"ok","detail":"200"},{"name":"healthz-prod","status":"ok","detail":"200"},{"name":"download","status":"ok","detail":"200"},{"name":"api-health","status":"ok","detail":"200"},{"name":"api-uptime","status":"ok","detail":"200"},{"name":"api-endpoints","status":"ok","detail":"200"},{"name":"api-changelog","status":"ok","detail":"200"},{"name":"api-stats","status":"ok","detail":"200"},{"name":"DNS:gladex.de","status":"ok","detail":"77.90.15.49"},{"name":"DNS:dev.gladex.de","status":"ok","detail":"77.90.15.49"},{"name":"DNS:git.gladex.de","status":"ok","detail":"77.90.15.49"},{"name":"DNS:info.gladex.de","status":"ok","detail":"77.90.15.49"},{"name":"DNS:stats.gladex.de","status":"ok","detail":"77.90.15.49"},{"name":"DNS:team.gladex.de","status":"ok","detail":"77.90.15.49"},{"name":"tls-cert-expiry","status":"ok","detail":"89d left"},{"name":"investor-messages","status":"ok","detail":"0 unread dev=0 prod=0"},{"name":"git-tree","status":"warning","detail":"2 uncommitted changes"},{"name":"go-tests","status":"ok","detail":"passing"}]}
0
0
67
> build · mimo-v2.6-flash-free
Everything green: STEP 0 re-confirmed (0 unread dev+prod, 0 unhandled INBOX), 24 checks ok, budget unchanged. Now the record — let me check PROGRESS.md's section format first:
→ Read repo/CHANGELOG.md [limit=14]
$ grep -n "^## \|^# " /data/repo/agent-logs/PROGRESS.md | tail -6; wc -l /data/repo/agent-logs/PROGRESS.md; git -C /data/repo remote -v
3044:## 2026-09-24T02:50:43Z — STEP 0 clean + stale-artifact cleanup (queued item 1)
3075:## 2026-09-24T03:18:00Z — STEP 0 clean + Dispatcher shift observed end-to-end (queued item closed)
3121:## 2026-09-24T03:45:00Z — STEP 0 clean + shipped the queued SQLITE_BUSY fix: busy_timeout on every DB open (0.4.18)
3199:## 2026-09-24T04:21:29Z — STEP 0 clean + shipped the queued PHP busy_timeout port (0.4.19)
3279:## 2026-09-24T04:46:00Z — STEP 0 clean + shipped the queued stats.php env-path fix (0.4.20)
3355:## Run 2026-09-24T05:11:38Z — STEP 0 clear + the queued unread-count fix, and the guard was blind (0.4.21)
3438 /data/repo/agent-logs/PROGRESS.md
origin	git://git.gladex.de/gladex.git (fetch)
origin	git://git.gladex.de/gladex.git (push)
> build · mimo-v2.6-flash-free
← Edit repo/CHANGELOG.md
Index: repo/CHANGELOG.md
===================================================================
--- repo/CHANGELOG.md
+++ repo/CHANGELOG.md
@@ -3,8 +3,28 @@
 All notable changes to Gladex are documented here.
 
 Format: `[version] - YYYY-MM-DD — description`
 
+## [0.4.22] - 2026-09-24 — prod /stats was showing DEV's Go CLI version: the hardcoded binary path
+
+### Fixed
+- **`stats.php`'s "Go CLI" row hardcoded `/opt/startup/dev/bin/gladex`**, so prod `/stats` reported **dev's** binary version. Harmless only while all three binaries match (md5 `9cfe2f84`, v0.2.0 commit `d545d47` today); any env-specific rebuild would silently render dev's version on prod — the exact defect class already removed for the message-count DB in 0.4.20.
+  - Fix: `$gladexPath = __DIR__ . '/../../bin/gladex';` — env-relative like `app.php`/`init_db.php`/the DB path: repo → `app/bin/gladex`, env → `/opt/startup/<env>/bin/gladex` (all three targets exist and are md5-identical today, so behavior is unchanged *now* and correct on any future divergence).
+
+### Added
+- `tests/test_stats_gocli_path.php` — **14 assertions**, the two-layer pattern from 0.4.20:
+  - **STATIC**: no deployed copy (repo, dev, prod) may contain the quoted literal `'/opt/startup/dev/bin/gladex'`; every copy must carry the `__DIR__`-relative assignment. **Line comments are stripped first**, so neither a stale comment nor a comment-gaming mutant that merely *documents* the fix can satisfy either check.
+  - **BEHAVIOURAL**: `stats.php` rendered as a script in a synthetic env tree whose `fixture/bin/gladex` is a **stub** printing `{"version":"9.9.9-fixture","commit":"c0ffee1234567890",...}`; the rendered `<td>Go CLI</td>` row must equal `9.9.9-fixture (sha: c0ffee1)`. Non-vacuity guards: the stub provably prints that JSON when executed directly, and live dev's binary provably renders a *different* row (`0.2.0 (sha: d545d47)`) — so "not dev's row" can never pass vacuously.
+
+### Verified
+- **Pre-deploy run caught the live bug**: 10 passed / 4 failed — the 4 FAILs were exactly the still-unpatched dev+prod static checks, i.e. the test detects the defect in production copies as shipped.
+- **Mutation check**: repo copy mutated to the hardcoded literal **plus a comment gaming the fix expression** → **6 passed / 8 failed**: static failed on the literal (comment-stripping defeats the comment) *and* the behavioural layer rendered `0.2.0 (sha: d545d47)` instead of the fixture row. Original restored (post-restore: only the 4 expected pre-deploy dev/prod failures). Mutant never committed.
+- **Reviewer gate**: reviewer **APPROVED** the prod promote (path correctness across all three layouts, test soundness, no false-green path).
+- **Deploy**: repo → dev → (reviewer approval) → prod; all three `stats.php` md5-identical `b41bdbd5`, both units restarted, live dev **and** prod `/stats` HTTP 200 with Go CLI row `0.2.0 (sha: d545d47)` read from **each env's own** binary, `/healthz` 200 both. Byte-identity constraint (`test_changelog_api`) restored.
+- **Suites**: PHP **237** (78+49+27+19+16+16+14+11+7, 9 files) + shell **46** (26 identity + 20 unread-guard) → **283 passed, 0 failed**. Go: `ok cmd/gladex` + `ok cmd/gladex/commands` (20.4s).
+- **Live**: `system-status --format json` → `overall: ok, errors: 0, checks: 24` (the run's only warning was the expected mid-run uncommitted tree, now committed).
+- **STEP 0**: **0 unread** `investor_to_agent` rows (dev **and** prod), **0 unhandled** `INBOX.md` entries → no reply rows owed this run. Units dev/prod/apache/postfix/dovecot/git-daemon all `active`; TLS cert 89d left. No DNS write, no config change, no API key read, no spend (2026-09: **5.00 / 1.50 / 3.50**, **model spend 0.00**, `*-free` only).
+
 ## [0.4.21] - 2026-09-24 — the STEP-0 guard was blind: system-status read only dev's DB
 
 ### Fixed
 - **`tools/system-status` counted unread investor messages from the DEV database only.** This is the tool that guards **STEP 0** (an unanswered investor = a failed run), so a dev-only read is a blind guard: the investor primarily reads the **prod** thread (public `https://gladex.de` → Apache `:443` → prod `:8001`), while dev `:8000` carries a separate, already-diverged thread (dev 57 rows vs prod 22). An unread `investor_to_agent` row on **prod** reported `0 unread` / status `ok` and let a failed run slip through.

$ cat >> /data/repo/agent-logs/PROGRESS.md <<'EOF'

## Run 2026-09-24T05:45:00Z — STEP 0 clear + shipped the queued stats.php Go-CLI env-path fix (0.4.22)

**STEP 0 (first, always)**: queried `/opt/startup/dev/data/messages.db` for unread
`investor_to_agent` rows → **0** (prod mirror re-checked at end of run: also **0**).
`INBOX.md`: 67 entries, **0 unhandled** → no reply rows owed, nothing to mark.
Nothing to reply to this run; noted here per protocol.

**One small verifiable step (the queued item from 0.4.21)**: `stats.php`'s "Go CLI"
row still read the hardcoded `/opt/startup/dev/bin/gladex`, so **prod `/stats`
reported dev's binary version** — harmless only while all three binaries match
(md5 `9cfe2f84`, v0.2.0 `d545d47` today), wrong the moment an env-specific rebuild
lands. Fixed to `$gladexPath = __DIR__ . '/../../bin/gladex'`, the same env-relative
pattern as the 0.4.20 message-count DB fix. Closes the last observation of 0.4.20.

**New test `tests/test_stats_gocli_path.php` — 14 assertions, two layers:**
1. **STATIC** — no copy (repo/dev/prod) may contain the quoted literal
   `'/opt/startup/dev/bin/gladex'`, all must carry the `__DIR__` assignment.
   Line comments stripped first: a stale comment — or a mutant that merely
   *documents* the fix — satisfies neither check.
2. **BEHAVIOURAL** — `stats.php` rendered in a synthetic env tree whose
   `fixture/bin/gladex` is a stub printing `9.9.9-fixture`/`c0ffee1234567890`;
   the rendered Go CLI row must be `9.9.9-fixture (sha: c0ffee1)`. Non-vacuity:
   the stub provably prints its JSON directly, and live dev's binary provably
   renders a *different* row (`0.2.0 (sha: d545d47)`).

**Evidence trail (mutation-checked, reviewer-gated):**
- Pre-deploy run: **10 pass / 4 fail** — the 4 FAILs were exactly the
  still-unpatched dev+prod copies: the test sees the live bug as shipped.
- **Mutation**: repo copy = hardcoded literal **+ comment gaming the fix
  expression** → **6/8 fail**: static caught the literal (comment-stripped) and
  the behavioural row flipped to dev's real `0.2.0 (sha: d545d47)`. Restored;
  post-restore run back to 10/4 (only dev+prod pending). Mutant never committed.
- **Reviewer: APPROVED** prod promote (path correctness in all three layouts,
  no false-green path) → copied to `/opt/startup/prod/src/php/`, restarted
  `investor-app-prod`.
- Deployed md5 **`b41bdbd5`** identical across repo+dev+prod; live `/stats` 200
  on :8000 and :8001, Go CLI row now read from **each env's own** binary;
  `/healthz` 200 both. `test_changelog_api` byte-identity restored.

**Verified**: suites **283 passed, 0 failed** = PHP **237** (78+49+27+19+16+16+
14+11+7, 9 files) + shell **46** (26 identity + 20 unread-guard); Go
`ok cmd/gladex` + `ok cmd/gladex/commands` (20.4s, via system-status's
`/tmp/gopath` env — plain `go test` fails in this shell: no GOMODCACHE/HOME).
`system-status --format json` → `overall: ok, errors: 0, checks: 24`.
Units dev/prod/apache/postfix/dovecot/git-daemon all `active`; TLS 89d left.

**Health / rote**: no spend — BUDGET 2026-09 unchanged **5.00 / 1.50 / 3.50**,
**model spend 0.00** (`*-free` only), no DNS write, no config change, no API key
read or touched.

**NEEDS-INVESTOR (unchanged, still open)**: (a) the **A/B/C public-gating decision**
(msg #57 — investor surface world-reachable via Apache `:443` ProxyPass collapsing
peers to 127.0.0.1; I recommend **A**, or A+B; cannot close unilaterally without
locking the investor out mid-session); (b) **SOA MNAME placeholder**
(`a.misconfigured.dns.server.invalid.` — provider panel only; my granted DNS scope
is A/AAAA/CNAME/TXT/MX, `pdns-api.py` exposes no SOA command).

**Next (queued)**: (1) **LE certs on mail ports** — replace snakeoil on `:465`/`:993`/
submission with certbot certs + deploy hooks (INBOX operator item, certbot job);
(2) **live closed-relay probe** on `:25` now that the greeting bug is fixed
(`tools/smtp-relay-probe` exists — run it through the VPS path); (3) watch
`mailboxes/*` + identity shifts for Dispatcher assignments; (4) A/B/C + SOA stay
with the investor/operator. Commit + push after this write.
EOF
echo appended
appended
> build · mimo-v2.6-flash-free
Commit and push:
$ cd /data/repo && git add -A && git commit -m "fix: stats.php's 'Go CLI' row hardcoded dev's binary path — prod /stats showed dev's version (0.4.22): \$gladexPath now __DIR__-relative; 14-assertion two-layer test (static comment-stripped + behavioural stub-binary render, mutation-verified), reviewer-approved prod promote, md5 b41bdbd5 across repo/dev/prod" && git push origin main 2>&1 | tail -3 && git log --oneline -2
[main 0cc8541] fix: stats.php's 'Go CLI' row hardcoded dev's binary path — prod /stats showed dev's version (0.4.22): $gladexPath now __DIR__-relative; 14-assertion two-layer test (static comment-stripped + behavioural stub-binary render, mutation-verified), reviewer-approved prod promote, md5 b41bdbd5 across repo/dev/prod
 4 files changed, 271 insertions(+), 1 deletion(-)
 create mode 100644 tests/test_stats_gocli_path.php
To git://git.gladex.de/gladex.git
   c75b64a..0cc8541  main -> main
0cc8541 fix: stats.php's 'Go CLI' row hardcoded dev's binary path — prod /stats showed dev's version (0.4.22): $gladexPath now __DIR__-relative; 14-assertion two-layer test (static comment-stripped + behavioural stub-binary render, mutation-verified), reviewer-approved prod promote, md5 b41bdbd5 across repo/dev/prod
c75b64a fix: system-status read only DEV's messages.db, so its STEP-0 guard went blind on prod unread rows (0.4.21)
> build · mimo-v2.6-flash-free
Run complete. Summary:

**STEP 0 (first)**: Queried `messages.db` → **0 unread** `investor_to_agent` rows (dev and prod re-checked at run end), `INBOX.md` → **0 unhandled** entries (67 all HANDLED). Nothing to reply to; noted in `PROGRESS.md`.

**This run's step — the queued item from 0.4.21, shipped as 0.4.22:**

- **Bug**: `stats.php`'s "Go CLI" row hardcoded `/opt/startup/dev/bin/gladex`, so **prod `/stats` reported dev's binary version** — invisible today only because all three binaries happen to match (md5 `9cfe2f84`).
- **Fix**: `$gladexPath = __DIR__ . '/../../bin/gladex'` — same env-relative pattern as the 0.4.20 DB-path fix.
- **Test** `tests/test_stats_gocli_path.php` (14 assertions, two layers):
  - *Static*: no copy may hold the quoted literal, all must carry the `__DIR__` assignment — comments stripped first so comment-gaming can't pass.
  - *Behavioural*: rendered in a synthetic env tree with a stub binary printing `9.9.9-fixture`; the row must show the fixture version, with non-vacuity guards (stub provably prints its JSON; live dev provably renders a different row).
- **Evidence**: pre-deploy run caught the live bug (10/4 — the 4 FAILs were the unpatched dev/prod copies); **mutation check** (hardcoded literal + fix-documenting comment) killed on both layers (6/8 fail); reviewer **APPROVED** the prod promote; deployed md5 `b41bdbd5` identical across repo/dev/prod, both units restarted, live `/stats` 200 on :8000/:8001 with rows from each env's own binary.
- **Suites**: **283 passed, 0 failed** (PHP 237 across 9 files + shell 46), Go `ok` both packages, `system-status` → `overall: ok, errors: 0, checks: 24`.
- **Budget**: unchanged **5.00 / 1.50 / 3.50**, model spend **0.00** (`*-free` only).
- **Committed + pushed**: `0cc8541` → `git://git.gladex.de/gladex.git` main.

**Queued next**: LE certs on mail ports `:465`/`:993`/submission (replace snakeoil), live closed-relay probe on `:25` via `tools/smtp-relay-probe`, Dispatcher mailbox watch; the A/B/C public-gating decision and SOA MNAME remain with the investor (NEEDS-INVESTOR unchanged).
exit=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)
[Fri Sep 25 01:29:05 2026] 127.0.0.1:33658 Accepted
[Fri Sep 25 01:29:05 2026] 127.0.0.1:33658 Closing
[Fri Sep 25 01:29:05 2026] 127.0.0.1:33674 Accepted
[Fri Sep 25 01:29:05 2026] 127.0.0.1:33674 Closing
[Fri Sep 25 01:34:56 2026] 127.0.0.1:49482 Accepted
[Fri Sep 25 01:34:56 2026] 127.0.0.1:49482 Closing
[Fri Sep 25 01:34:56 2026] 127.0.0.1:49488 Accepted
[Fri Sep 25 01:34:56 2026] 127.0.0.1:49488 Closing
[Fri Sep 25 01:34:56 2026] 127.0.0.1:49494 Accepted
[Fri Sep 25 01:34:56 2026] 127.0.0.1:49494 Closing
[Fri Sep 25 01:34:56 2026] 127.0.0.1:49504 Accepted
[Fri Sep 25 01:34:56 2026] 127.0.0.1:49504 Closing
[Fri Sep 25 01:34:56 2026] 127.0.0.1:49508 Accepted
[Fri Sep 25 01:34:56 2026] 127.0.0.1:49508 Closing
[Fri Sep 25 01:34:56 2026] 127.0.0.1:49522 Accepted
[Fri Sep 25 01:34:56 2026] 127.0.0.1:49522 Closing
[Fri Sep 25 01:34:56 2026] 127.0.0.1:49536 Accepted
[Fri Sep 25 01:34:57 2026] 127.0.0.1:49536 Closing
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60400 Accepted
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60400 Closing
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60408 Accepted
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60408 Closing
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60422 Accepted
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60422 Closing
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60428 Accepted
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60428 Closing
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60442 Accepted
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60442 Closing
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60446 Accepted
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60446 Closing
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60462 Accepted
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60462 Closing
[Fri Sep 25 01:42:50 2026] 127.0.0.1:37798 Accepted
[Fri Sep 25 01:42:50 2026] 127.0.0.1:37798 Closing
[Fri Sep 25 01:42:50 2026] 127.0.0.1:37802 Accepted
[Fri Sep 25 01:42:50 2026] 127.0.0.1:37802 Closing
[Fri Sep 25 01:42:51 2026] 127.0.0.1:37814 Accepted
[Fri Sep 25 01:42:51 2026] 127.0.0.1:37814 Closing
[Fri Sep 25 01:42:51 2026] 127.0.0.1:37818 Accepted
[Fri Sep 25 01:42:51 2026] 127.0.0.1:37818 Closing
[Fri Sep 25 01:42:54 2026] 127.0.0.1:37824 Accepted
[Fri Sep 25 01:42:54 2026] 127.0.0.1:37824 Closing
[Fri Sep 25 01:42:55 2026] 127.0.0.1:44098 Accepted
[Fri Sep 25 01:42:55 2026] 127.0.0.1:44098 Closing
[Fri Sep 25 01:42:55 2026] 127.0.0.1:44106 Accepted
[Fri Sep 25 01:42:55 2026] 127.0.0.1:44106 Closing
[Fri Sep 25 01:43:00 2026] 127.0.0.1:44120 Accepted
[Fri Sep 25 01:43:00 2026] 127.0.0.1:44120 Closing
[Fri Sep 25 01:43:00 2026] 127.0.0.1:44134 Accepted
[Fri Sep 25 01:43:00 2026] 127.0.0.1:44134 Closing
[Fri Sep 25 01:43:00 2026] 127.0.0.1:44150 Accepted
[Fri Sep 25 01:43:00 2026] 127.0.0.1:44150 Closing
[Fri Sep 25 01:43:04 2026] 127.0.0.1:44164 Accepted
[Fri Sep 25 01:43:04 2026] 127.0.0.1:44164 Closing
[Fri Sep 25 01:43:04 2026] 127.0.0.1:38886 Accepted
[Fri Sep 25 01:43:04 2026] 127.0.0.1:38886 Closing
[Fri Sep 25 01:43:05 2026] 127.0.0.1:38896 Accepted
[Fri Sep 25 01:43:05 2026] 127.0.0.1:38896 Closing
[Fri Sep 25 01:43:09 2026] 127.0.0.1:38912 Accepted

Generated 2026-09-24 23:43:09 UTC · Gladex.de