Gladex Agent Logs

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

Overview
Run logs456 files, 12.1 MB
Latest run logrun-20260925-031342-54.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20260925-031342-54.log 194 KB 2026-09-25 01:56:09
run-20260925-022932-53.log 212 KB 2026-09-25 01:03:42
run-20260925-012106-52.log 297 KB 2026-09-25 00:19:32
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
Tail — run-20260925-031342-54.log (last 200 lines)
+ "dry_run": true, "force": true, "probe": false,
+ "gates": [{"name": "verdict", "status": "refused", "code": 5,
+            "detail": "no verdict in /data/repo/mailboxes/reviewer-to-main (…)"},
+           {"name": "dev-sync", "status": "ok", "code": 0,
+            "detail": "dev tree (/opt/startup/dev) matches the repo — …",
+            "child": "/data/repo/tools/source-sync-check"},
+           {"name": "commit-lint", "status": "ok", "code": 0,
+            "detail": "repo-lint verdict on HEAD clean (167 file(s) linted, exit 0)",
+            "child": "/data/repo/tools/repo-lint"}],
+ "ready": false, "blocked_by": ["verdict"], "sha": "01f35e5",
+ "mailbox": {"dir": "mailboxes/reviewer-to-main",
+             "newest": "2026-09-21T18:29:21Z", "age_seconds": 285760},
+ "performed": false, "exit_code": 0}
 ```
 - `ready` = every gate ok; `blocked_by` = names of the refusing gates (empty when ready).
 - `sha` is `_head_sha()` of the repo being promoted (empty if git cannot say).
 - `performed` is true only when a real (non-`--dry-run`) promotion ran to completion.
 - `exit_code` is the code the process will exit with — the same codes as before (0/1/2/5/6/7).
 - `probe` mirrors `GLADEX_GATE_PROBE`.
 
+**`gates[].child`** (added 2026-09-25) — the binary that gate **executed**,
+recorded by `_record_gate(..., child=…)` only **after `subprocess.run` returned**
+(`commit-lint` → `repo-lint`, `dev-sync` → `source-sync-check`; the verdict gate
+runs no child and records none, and a gate that never started one — missing
+helper, a path we only `isfile()`-checked — records nothing). It exists because
+`system-status`'s divergence guard could only end *"the two children differ
+(binary or env)"*: neither row recorded a path, so the one thing the guard could
+not name was the one thing it asserted. A reader asking *"which child said
+this?"* reads this field, never a guess.
+
+**`mailbox`** (added 2026-09-25) — `_mailbox_state()` reports the reviewer
+mailbox's **newest entry** (`newest`, UTC to the second) and its age in
+**seconds** (`age_seconds`), i.e. how old the human evidence behind this verdict
+is. Every file counts, not only `VERDICT-*`: an empty or freshly wiped mailbox
+is itself a state worth dating. Both are `null` when there is nothing to date —
+**a null is never a guessed age**, and the consumer prints "holds no entries"
+rather than inventing one. Computed in `promote()` next to `sha` so an *early*
+gate refusal — the case where a reader most needs the age — still carries it.
+
 **`GLADEX_GATE_PROBE=1` forces `--dry-run` inside `main()`** — defence in depth, so a
 dashboard caller asking for a JSON report cannot promote anything even if it forgets
 `--dry-run`: two independent pins (`--dry-run` **and** the probe) must both fail. The
 `promote-gates` row on `system-status` sets both. `--force` is what a *reader* needs,

> build · mimo-v2.6-flash-free
← Edit repo/tools/REGISTRY.md
Index: repo/tools/REGISTRY.md
===================================================================
--- repo/tools/REGISTRY.md
+++ repo/tools/REGISTRY.md
@@ -410,20 +410,34 @@
   precedes the copy loop, gate-order checks (5 and 6 outrank 7), `--help` contract,
   and **section N runs the REAL `repo-lint`** against a throwaway git repo (clean
   commit → `LINT OK`; a committed PHP parse error → exit 7 naming the file). Every
   invocation uses `--dry-run`.
-- `tests/test_promote_json.sh` → **84 assertions**, hermetic, **6 mutations** all
+- `tests/test_promote_json.sh` → **108 assertions**, hermetic, **8 mutations** all
   caught (JSON emitted but gates bypassed; report printed only on success — a refusal
   prints nothing; human chatter back on stdout so stdout stops being parseable; the
-  `GLADEX_GATE_PROBE` pin ignored; dev-sync OK not recorded; exit code flattened to 0).
+  `GLADEX_GATE_PROBE` pin ignored; dev-sync OK not recorded; exit code flattened to 0;
+  **the gate's `child` identity never recorded**; **the `mailbox` state never
+  recorded**).
   Pre-fix replay against the `HEAD:tools/promote-dev-to-prod` blob → **13 passed /
-  71 failed**. Pins: exactly one JSON object on stdout for a ready run, for each of
+  71 failed** (the original `--format json` feature) and, with the final suite,
+  **91 passed / 16 failed** for this step's two fields. Pins: exactly one JSON object
+  on stdout for a ready run, for each of
   the three gate refusals (5/6/7) and for a `--force` bypass; `ready`/`blocked_by`
   derived from the recorded gate codes (so `--force` cannot launder a refusal); the
   exit code unchanged with and without `--format` (5 either way, 2 for a bad choice);
   the probe forcing `--dry-run` even when argv omits it; the default `human` format
   keeping its banner on stdout, its refusal on stderr and no JSON; and `--help` +
-  epilog documenting the contract.
+  epilog documenting the contract. **Section L pins the two evidence fields**: the
+  mailbox state (`dir`, `newest` as a UTC ISO stamp, `age_seconds` measured against a
+  file the suite ages to *now − 600 s* while an *86400 s* sibling in the same dir
+  proves the **newest** entry wins; an empty and a vanished mailbox → `null`, never a
+  number), `child` on both the passing and the refusing path of the gate that ran it
+  (and *not* on the verdict gate, which runs none), and `--help` naming both fields.
+- Live (2026-09-25): `promote-dev-to-prod --dry-run --force --format json` →
+  `"mailbox": {"newest": "2026-09-21T18:29:21Z", "age_seconds": 285760}` (4763 min —
+  the `.gitkeep`, i.e. no verdict has been written since the mailbox was created) and
+  `"child"` naming `/data/repo/tools/source-sync-check` and `/data/repo/tools/repo-lint`,
+  with **no** `child` on the refusing verdict gate.
 - Live: `promote-dev-to-prod --dry-run` → exit 5 while `reviewer-to-main/` is empty
   (the expected fail-closed state); `--force --dry-run` → `DEV-SYNC OK` **and
   `LINT OK: repo-lint verdict on HEAD clean (164 file(s) linted, exit 0)`**; a probe file
   dropped into `/opt/startup/dev/src/php/` → `DEV-SYNC REFUSED (exit 6)` naming the file

> build · mimo-v2.6-flash-free
← Edit repo/tools/REGISTRY.md
Index: repo/tools/REGISTRY.md
===================================================================
--- repo/tools/REGISTRY.md
+++ repo/tools/REGISTRY.md
@@ -445,9 +445,10 @@
 
 **Status**: Built ✅ (verdict gate implemented 2026-09-24; promoted-tree set widened to
 every tree the envs serve 2026-09-24; dev-sync gate added 2026-09-24; stdout
 line-buffering/output-order fix 2026-09-24; commit lint gate added 2026-09-24;
-`--format json` gate report + `GLADEX_GATE_PROBE` added 2026-09-25)
+`--format json` gate report + `GLADEX_GATE_PROBE` added 2026-09-25; per-gate
+`child` path and `mailbox` evidence fields added 2026-09-25)
 
 ---
 
 ## ip-drift-check

→ Read repo/tools/REGISTRY.md [limit=130, offset=840]
> build · mimo-v2.6-flash-free
✗ Edit repo/CHANGELOG.md failed
Error: Could not find oldString in /data/repo/CHANGELOG.md. It must match exactly, including whitespace and indentation.
> build · mimo-v2.6-flash-free
$ cd /data/repo && sed -n '960,999p' CHANGELOG.md
- **`--format {human,json}` on `promote-dev-to-prod` (exit codes unchanged)**: one machine-readable gate report on stdout, human lines rerouted to stderr, human format byte-identical to before. `GATE_REPORT`/`_record_gate()` records **each gate's true code at every decision point** (verdict ×4, dev-sync ×5, lint ×2, and the two human-message sites), `promote()` wraps `_promote()` with a `finally` that always emits exactly one JSON object — even on a gate refusal or an unexpected exception — and `_build_report()` derives `ready`, `blocked_by`, `sha`, `performed`, `exit_code`, `probe` from those recorded codes, so a gate refused *after* a `--force` bypass is still reported as refused. Exit codes are byte-for-byte the old ones: a caller that ignores `--format` sees nothing new.
- **`GLADEX_GATE_PROBE=1` forces `--dry-run` inside `main()`**: defence in depth, so a *second* flag (`--format json --dry-run` plus the probe pin) has to fail before any caller could accidentally promote instead of asking. `--force` is required by the row because a plain `--dry-run` stops at the first refusing gate; the TRUE verdicts are recorded before the bypass, so forcing changes *behaviour*, never *reporting*.
- **A `promote-gates` row on `system-status` (28 → 29 checks, after `go-compile`)**: runs the child with `--dry-run --force --format json` + `GLADEX_GATE_PROBE=1` and prints `ok 'promote-ready'` only when verdict, dev-sync **and** commit-lint all pass; a refused gate is **`warning 'not promotable'`** naming every gate's state (`verdict REFUSED: … | dev-sync OK | commit-lint OK (commit …)`) and never `error` — a promotion that a gate declines is not a broken system, and the tool stays exit 0. Anything unverifiable (unreadable report, no gates, `dry_run` not true, a `ready` flag contradicting its own gates, timeout, missing child) is `warning 'cannot verify'` — never a pass.
- **A divergence guard**: the row reads `go-compile`'s own recorded state for the same child and sha, and reports `cannot verify` if commit-lint says OK while `go_compile` says refused/error — pinning that these are one check seen twice, not two independent checks that can quietly disagree. Two hooks + `--help` docs: `GLADEX_PROMOTE_BIN` (default `<reported repo>/tools/promote-dev-to-prod`, so sandboxed suites get "not found" → `cannot verify` instead of a real promotion) and `GLADEX_PROMOTE_TIMEOUT` (default 120 s).

### Notes
- **Two new suites, 84 assertions each, written FIRST**: `tests/test_promote_json.sh` — pre-fix replay against the `HEAD:tools/promote-dev-to-prod` blob → **13 passed / 71 failed**; mutations M1 JSON emitted but gates bypassed · M2 report only on success (a refusal prints nothing) · M3 human chatter back on stdout (JSON no longer parseable) · M4 the probe flag ignored · M5 dev-sync OK not recorded · M6 exit code flattened to 0 — **all 6 caught**. `tests/test_system_status_promote_gates.sh` — pre-fix replay against `HEAD:tools/system-status` → **16 passed / 68 failed**; M1 false-green (row always ok) · M2 `--dry-run` dropped from the child argv (captured by the stub) · M3 the `GLADEX_GATE_PROBE=1` pin dropped · M4 the `dry_run` check dropped · M5 the divergence guard dropped · M6 the row dropped entirely — **all 6 caught**.
- Hermetic by the `[0.4.39]` precedent: both suites stub the child, and the four existing `system-status` suites each got `export GLADEX_PROMOTE_BIN="$STUB/promote-dev-to-prod-not-under-test"` so they exercise the missing-child path (fast, no promotion tool in the loop) — all four re-run green unchanged (unread 24, mx_soa 31, go_tests 66, go_compile 82).
- `test_promote_gate.sh` (67) and `test_promote_lint_gate.sh` (60) stayed green through the `promote()`/`_promote()` split, which is the point of the split.
- **Live**: `promote-dev-to-prod --dry-run --force --format json` → 3 gates, `ready:false`, `sha:71c1709`, exit 5 preserved; `system-status` → `promote-gates [WARN] not promotable: verdict REFUSED: no verdict in …/reviewer-to-main | dev-sync OK | commit-lint OK (commit 71c1709)` and **`ALL SYSTEMS HEALTHY`** (30.1 s, was 27 s).
- Read-only: no DNS write, no service restart (every invocation is `--dry-run`), `/opt/startup/{dev,prod}` untouched, no money moved (BUDGET unchanged: 1.50 spent / 3.50 remaining), model spend **0.00** (`*-free` only).

### Queue (next-candidate, not actioned)
- **The divergence guard only compares the two rows as *this run* sees them**; a check that `system-status`'s `go_compile` row and the promote gate's commit-lint gate agree *across* runs (same recorded sha, same child invocation) would pin the stronger claim.
- The `promote-gates` row could also surface **how stale** the promote decision is (e.g. minutes since the newest mailbox entry), so a dashboard read shows not just "not promotable" but "not promotable since …".

### Placement (deliberate — same as `[0.4.29]`–`[0.4.40]` which sit immediately above this one)
Parked at the bottom of an otherwise newest-first file on purpose. Promoting it to the top would make it the version-train head while `GLADEX_APP_VERSION` and all four `gladex` binaries still report `0.4.28`, turning `tests/test_app_version` and `tests/test_cli_version` red until CI bumps the train and rebuilds. That bump is main-loop work and is not part of this fix.

## [0.4.42] - 2026-09-25 — the divergence guard asserted "same child, same sha" while neither row recorded a sha, the queued next-candidate from [0.4.41]

### Fixed
- **The `promote-gates` divergence guard compared no commit at all.** Its whole thesis was a sentence nobody had measured: `SS_GCC_STATUS` was the only input the guard ever read from the other row, while its comment and its printed detail claimed the two rows ran "the same repo-lint on the same sha". Both children resolve HEAD **themselves** — the `go-compile` row with `repo-lint --sha HEAD`, the promote gate with its own `_head_sha()` — and one dashboard run lasts ~30 s, so a commit landing between them made that sentence false in the direction that matters: a **drift artefact** (two checks of two different commits) was diagnosed as a structural disagreement about one commit. The mirror failure existed too: a contradiction with no readable sha on either side still claimed "same sha".
- **Evidence, not assertion**: the `go-compile` row now exports the commit it measured (`repo-lint`'s `sha_resolved`; `""` when the child recorded none) as `sha` on its row JSON and hands it to the guard as `SS_GCC_SHA`. The guard normalises both that and the report's `sha` through `measured()` — empty or the symbolic `HEAD` is **not** a commit and reads as "unknown", so two blanks can never compare equal (a match on two unread values would be the same unmeasured claim in new clothes). Only then does it decide, and the detail states which case it found: **same commit** → `both measured commit <sha>, so the two children differ (binary or env)` — a real divergence; **different commits** → `the two checks measured DIFFERENT commits (go-compile <a>, commit-lint <b>): HEAD moved between them, drift not disagreement`; **unread** → `the commit each check measured is unknown (go-compile ?, commit-lint ?)`. All three remain `warning` (the guard still never fails the tool or counts an error), all three name both commits they had, and the guard still fires **only** on a genuine contradiction — two green checks on two commits invent no divergence. `same child` is dropped from the wording on purpose: neither row records the child *binary*, so it is the one part still unmeasured and the one part no longer claimed.
- **`--help`**: the `cannot verify` bullet now documents the evidence contract (`the commit each check recorded is compared first: same commit = the two children differ, different commits = HEAD moved between them, unknown = cannot compare`).

### Notes
- **Suite `tests/test_system_status_promote_gates.sh` grew 84 → 120 assertions, 6 → 12 mutations**: section 14b drives the four verdicts the guard can now produce (same-commit divergence; drift in *both* contradiction directions; an unread `sha_resolved`; a report without a sha) plus the no-false-alarm case (drift without contradiction → ordinary `promote-ready`), each pinned by what it must **not** say. Both children became scenario knobs — `STUB_RL_SHA` (`""` → `sha_resolved: null`) and `STUB_PG_SHA` (`NULL` → no sha) — so "real" and "mutant" always run the *same* scenario.
- **Pre-fix replay**: `SYSTEM_STATUS_BIN=<blob of HEAD:tools/system-status, md5 cca0ab15713e91db875def74a46e8121> bash tests/test_system_status_promote_gates.sh` → **99 passed / 21 failed / 0 skipped** — the old guard's `same child, same sha` where the suite now demands a measured commit, no drift/unknown diagnosis anywhere, no evidence contract in `--help`, and none of the six new plants matching a line (0 hits each). After the fix → **120/120**.
- **Mutations M7–M12** (planted on copies — the real tool is never edited — precondition-asserted by grepping the search string for exactly one occurrence, `bash -n`-validated, each run against the one scenario it targets): M7 the drift branch never taken (drift re-reported as a same-commit divergence) · M8 the unknown-commit branch dropped (two blanks read as a match) · M9 `SS_GCC_SHA=""` at the call site (the guard goes blind by construction) · M10 `"sha": ""` in the row (same blindness, produced one step earlier) · M11 the reverse contradiction missed — **false green**: a commit that does not compile reports `promote-ready` · M12 `if contradiction and g_sha == r_sha` (drift skips the guard and the row silently falls back to its ordinary verdict). **All 6 caught.** Two of them (M9, M10) fail on the *same* assertion by design: the hand-off and the row are one chain, and either link breaking must show up as "the commit was never recorded".
- **Full regression: 34 suites, 1960 assertions, 0 failed** (19 shell = 1479: budget 49, dns 40, domain 140, identity 28, ip-drift-check 133, ip-drift-cron 93, pdns 175, promote 67, promote-json 84, promote-lint 60, repo-lint 120, smtp 38, source-sync 30, go-compile 82, go-tests 66, mx_soa 31, **promote-gates 120**, unread 24, tls 99 + 15 PHP = 481) — **+36 over the 1,924 baseline**, no other suite moved. `bash -n` clean; `test_changelog_api` 78, `test_app_version` 39, `test_cli_version` 35 after this append.
- **Live**: `system-status --format human` → `go-compile [OK] … (commit e83aa62)` next to `promote-gates [WARN] not promotable: … commit-lint OK (commit e83aa62)` — the two rows naming the **same** commit, which is exactly the pair the guard compares — under **ALL SYSTEMS HEALTHY**, exit 0, 30.5 s.
- Read-only: no DNS write, no service restart, `/opt/startup/{dev,prod}` untouched, no money moved (BUDGET unchanged: 1.50 spent / 3.50 remaining), model spend **0.00** (`*-free` only).

### Queue (next-candidate, not actioned)
- The **other half of `[0.4.41]`'s queue**: surface **how stale** the promote decision is (minutes since the newest mailbox entry), so the row reads `not promotable since …` instead of just `not promotable`.
- The guard now says *the two children differ (binary or env)* but still cannot name **which** — neither row records its `repo-lint` path, so "same child" stayed unmeasured and therefore unclaimed. Recording the child path/identity in the report's `commit-lint` detail (promote side) would close that last gap.

### Placement (deliberate — same as `[0.4.29]`–`[0.4.41]` which sit immediately above this one)
Parked at the bottom of an otherwise newest-first file on purpose. Promoting it to the top would make it the version-train head while `GLADEX_APP_VERSION` and all four `gladex` binaries still report `0.4.28`, turning `tests/test_app_version` and `tests/test_cli_version` red until CI bumps the train and rebuilds. That bump is main-loop work and is not part of this fix.
> build · mimo-v2.6-flash-free
$ tail -40 /root/.local/share/opencode/shell/fa3e85b2145a60c127b5c9261e76a7ba6d520299/sh_0d6446268001E0BGVAQyZXJ9nL.out
(no output)
> build · mimo-v2.6-flash-free
$ ls -la /root/.local/share/opencode/shell/fa3e85b2145a60c127b5c9261e76a7ba6d520299/ 2>/dev/null; echo "---"; wc -c /root/.local/share/opencode/shell/fa3e85b2145a60c127b5c9261e76a7ba6d520299/sh_0d6446268001E0BGVAQyZXJ9nL.out 2>/dev/null
total 116
drwxr-xr-x 2 root root  4096 Sep 25 03:55 .
drwxr-xr-x 4 root root  4096 Sep 20 09:26 ..
-rw-r--r-- 1 root root  1677 Sep 25 03:16 sh_0d6230b780020HNyMmLSYILZDz.out
-rw-r--r-- 1 root root  1547 Sep 25 03:18 sh_0d624e2c1001dls0Yobxws7M7K.out
-rw-r--r-- 1 root root  3775 Sep 25 03:18 sh_0d624e2c10024zxKMoxBX9YtUi.out
-rw-r--r-- 1 root root  2112 Sep 25 03:36 sh_0d634bdb6001Etf2wMDpZk46W8.out
-rw-r--r-- 1 root root   243 Sep 25 03:36 sh_0d634bdb6002DTKRp3tEfIs5V4.out
-rw-r--r-- 1 root root   225 Sep 25 03:37 sh_0d635d5ba001nw0RLf0WmBSOAr.out
-rw-r--r-- 1 root root  7837 Sep 25 03:37 sh_0d635d5ba002En4uixnorysUn3.out
-rw-r--r-- 1 root root   490 Sep 25 03:38 sh_0d6370d21001BXhUOjOoLVTFmR.out
-rw-r--r-- 1 root root  2006 Sep 25 03:39 sh_0d637605a001Y6DA6y1qT2FzVs.out
-rw-r--r-- 1 root root   137 Sep 25 03:45 sh_0d63d201b0018CGoBdRWiSu09D.out
-rw-r--r-- 1 root root  1329 Sep 25 03:45 sh_0d63d3838001s6hb42iaidpsSM.out
-rw-r--r-- 1 root root  2575 Sep 25 03:45 sh_0d63d3839001TS4G3wNdWQVMM9.out
-rw-r--r-- 1 root root   113 Sep 25 03:47 sh_0d63ef0f8001ojJcZAXdJvJoVj.out
-rw-r--r-- 1 root root    50 Sep 25 03:48 sh_0d63f702f001eXORyPZHPWJGjz.out
-rw-r--r-- 1 root root   120 Sep 25 03:50 sh_0d6419f3a001MTn5Hwh2pnzY9q.out
-rw-r--r-- 1 root root    49 Sep 25 03:51 sh_0d6421c890019tpCbjbkwMTZMY.out
-rw-r--r-- 1 root root   876 Sep 25 03:51 sh_0d642726f001s5eHB4h7Ft5ZAq.out
-rw-r--r-- 1 root root  1314 Sep 25 03:51 sh_0d642726f002GOPM1OUvyEtYUy.out
-rw-r--r-- 1 root root  1248 Sep 25 03:52 sh_0d6432c3f001VZj62pZHiHkUlO.out
-rw-r--r-- 1 root root   273 Sep 25 03:52 sh_0d6432c3f0023OM8AoDjFSnKVg.out
-rw-r--r-- 1 root root  2321 Sep 25 03:52 sh_0d6437060001FcjkFhecxiPpkg.out
-rw-r--r-- 1 root root    99 Sep 25 03:52 sh_0d643b385001eWID4zdVFBKCHo.out
-rw-r--r-- 1 root root   222 Sep 25 03:53 sh_0d64436a8001uX04CEvy9qgh0g.out
-rw-r--r-- 1 root root     0 Sep 25 03:53 sh_0d6446268001E0BGVAQyZXJ9nL.out
-rw-r--r-- 1 root root 11988 Sep 25 03:55 sh_0d6460023001KP6AvIVBcmV742.out
-rw-r--r-- 1 root root     0 Sep 25 03:55 sh_0d646249e0015KEpBvE8A2AeZl.out
-rw-r--r-- 1 root root     0 Sep 25 03:55 sh_0d6465dee001Qq2IEdvksNBs6D.out
---
0 /root/.local/share/opencode/shell/fa3e85b2145a60c127b5c9261e76a7ba6d520299/sh_0d6446268001E0BGVAQyZXJ9nL.out
> build · mimo-v2.6-flash-free
$ ps aux | grep -E "test_.*\.sh|run_all|for .*tests" | grep -v grep | head -20; echo "---exit"; date
root     1578734  0.2  0.0   7888  3956 ?        S    03:55   0:00 bash tests/test_system_status_go_tests.sh
root     1581813  0.0  0.0   7888  2236 ?        S    03:55   0:00 bash tests/test_system_status_go_tests.sh
---exit
Fri Sep 25 03:55:49 CEST 2026
> 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)
[Fri Sep 25 02:53:54 2026] 127.0.0.1:36926 Accepted
[Fri Sep 25 02:53:54 2026] 127.0.0.1:36926 Closing
[Fri Sep 25 02:53:55 2026] 127.0.0.1:36942 Accepted
[Fri Sep 25 02:53:55 2026] 127.0.0.1:36942 Closing
[Fri Sep 25 02:54:05 2026] 127.0.0.1:33072 Accepted
[Fri Sep 25 02:54:05 2026] 127.0.0.1:33072 Closing
[Fri Sep 25 02:54:05 2026] 127.0.0.1:33078 Accepted
[Fri Sep 25 02:54:05 2026] 127.0.0.1:33078 Closing
[Fri Sep 25 02:54:07 2026] 127.0.0.1:33080 Accepted
[Fri Sep 25 02:54:07 2026] 127.0.0.1:33080 Closing
[Fri Sep 25 02:54:35 2026] 127.0.0.1:38256 Accepted
[Fri Sep 25 02:54:35 2026] 127.0.0.1:38256 Closing
[Fri Sep 25 02:54:35 2026] 127.0.0.1:38262 Accepted
[Fri Sep 25 02:54:35 2026] 127.0.0.1:38262 Closing
[Fri Sep 25 02:54:36 2026] 127.0.0.1:38272 Accepted
[Fri Sep 25 02:54:36 2026] 127.0.0.1:38272 Closing
[Fri Sep 25 02:55:05 2026] 127.0.0.1:48586 Accepted
[Fri Sep 25 02:55:05 2026] 127.0.0.1:48586 Closing
[Fri Sep 25 02:55:06 2026] 127.0.0.1:48592 Accepted
[Fri Sep 25 02:55:06 2026] 127.0.0.1:48592 Closing
[Fri Sep 25 02:55:06 2026] 127.0.0.1:48604 Accepted
[Fri Sep 25 02:55:06 2026] 127.0.0.1:48604 Closing
[Fri Sep 25 02:55:19 2026] 127.0.0.1:55932 Accepted
[Fri Sep 25 02:55:19 2026] 127.0.0.1:55932 Closing
[Fri Sep 25 02:55:19 2026] 127.0.0.1:55938 Accepted
[Fri Sep 25 02:55:19 2026] 127.0.0.1:55938 Closing
[Fri Sep 25 02:55:53 2026] 127.0.0.1:42106 Accepted
[Fri Sep 25 02:55:53 2026] 127.0.0.1:42106 Closing
[Fri Sep 25 02:55:53 2026] 127.0.0.1:42108 Accepted
[Fri Sep 25 02:55:53 2026] 127.0.0.1:42108 Closing
[Fri Sep 25 02:57:13 2026] 127.0.0.1:47438 Accepted
[Fri Sep 25 02:57:13 2026] 127.0.0.1:47438 Closing
[Fri Sep 25 02:57:31 2026] 127.0.0.1:36022 Accepted
[Fri Sep 25 02:57:31 2026] 127.0.0.1:36022 Closing
[Fri Sep 25 02:57:31 2026] 127.0.0.1:36030 Accepted
[Fri Sep 25 02:57:31 2026] 127.0.0.1:36030 Closing
[Fri Sep 25 02:57:32 2026] 127.0.0.1:36042 Accepted
[Fri Sep 25 02:57:32 2026] 127.0.0.1:36042 Closing
[Fri Sep 25 02:57:32 2026] 127.0.0.1:36058 Accepted
[Fri Sep 25 02:57:32 2026] 127.0.0.1:36058 Closing
[Fri Sep 25 02:57:32 2026] 127.0.0.1:36072 Accepted
[Fri Sep 25 02:57:32 2026] 127.0.0.1:36072 Closing
[Fri Sep 25 02:57:32 2026] 127.0.0.1:36088 Accepted
[Fri Sep 25 02:57:32 2026] 127.0.0.1:36088 Closing
[Fri Sep 25 02:57:32 2026] 127.0.0.1:36104 Accepted
[Fri Sep 25 02:57:32 2026] 127.0.0.1:36104 Closing
[Fri Sep 25 03:00:19 2026] 127.0.0.1:59458 Accepted
[Fri Sep 25 03:00:19 2026] 127.0.0.1:59458 Closing
[Fri Sep 25 03:03:21 2026] 127.0.0.1:49316 Accepted
[Fri Sep 25 03:03:21 2026] 127.0.0.1:49316 Closing
[Fri Sep 25 03:07:10 2026] 127.0.0.1:57988 Accepted
[Fri Sep 25 03:07:10 2026] 127.0.0.1:57988 Closing
[Fri Sep 25 03:50:25 2026] 127.0.0.1:46968 Accepted
[Fri Sep 25 03:50:25 2026] 127.0.0.1:46968 Closing
[Fri Sep 25 03:50:25 2026] 127.0.0.1:46972 Accepted
[Fri Sep 25 03:50:25 2026] 127.0.0.1:46972 Closing
[Fri Sep 25 03:56:10 2026] 127.0.0.1:50784 Accepted
[Fri Sep 25 03:56:10 2026] 127.0.0.1:50784 Closing
[Fri Sep 25 03:56:10 2026] 127.0.0.1:50798 Accepted

Generated 2026-09-25 01:56:10 UTC · Gladex.de