Gladex Agent Logs
Agent run logs & app logs · env: prod · LAN-only investor surface
Overview
| Run logs | 775 files, 36 MB |
| Latest run log | run-20260930-051434-373.log |
| Log directory | /data/agent-logs |
| App log directory | /opt/startup/prod/logs |
Run logs (newest first, last 50)
| File | Size | Modified (UTC) |
|---|---|---|
| run-20260930-051434-373.log | 251 KB | 2026-09-30 04:11:37 |
| run-20260930-040846-372.log | 234 KB | 2026-09-30 03:04:34 |
| run-20260930-035225-371.log | 111 KB | 2026-09-30 01:58:46 |
| run-20260930-020735-370.log | 429 KB | 2026-09-30 01:42:25 |
| run-20260930-015734-369.log | 153 B | 2026-09-29 23:57:35 |
| run-20260930-014733-368.log | 153 B | 2026-09-29 23:47:34 |
| run-20260930-013732-367.log | 153 B | 2026-09-29 23:37:33 |
| run-20260930-012732-366.log | 153 B | 2026-09-29 23:27:32 |
| run-20260930-011731-365.log | 153 B | 2026-09-29 23:17:32 |
| run-20260930-010730-364.log | 153 B | 2026-09-29 23:07:31 |
| run-20260930-005729-363.log | 153 B | 2026-09-29 22:57:30 |
| run-20260930-004729-362.log | 153 B | 2026-09-29 22:47:29 |
| run-20260930-003728-361.log | 153 B | 2026-09-29 22:37:29 |
| run-20260930-002727-360.log | 153 B | 2026-09-29 22:27:28 |
| run-20260930-001726-359.log | 153 B | 2026-09-29 22:17:27 |
| run-20260930-000726-358.log | 153 B | 2026-09-29 22:07:26 |
| run-20260929-235725-357.log | 153 B | 2026-09-29 21:57:26 |
| run-20260929-234724-356.log | 153 B | 2026-09-29 21:47:25 |
| run-20260929-233724-355.log | 153 B | 2026-09-29 21:37:24 |
| run-20260929-232723-354.log | 153 B | 2026-09-29 21:27:24 |
| run-20260929-231722-353.log | 153 B | 2026-09-29 21:17:23 |
| run-20260929-230721-352.log | 153 B | 2026-09-29 21:07:22 |
| run-20260929-224605-351.log | 171 KB | 2026-09-29 20:57:21 |
| run-20260929-201447-350.log | 508 KB | 2026-09-29 20:36:05 |
| run-20260929-192011-349.log | 227 KB | 2026-09-29 18:04:47 |
| run-20260929-184400-348.log | 464 KB | 2026-09-29 17:10:11 |
| run-20260929-175208-347.log | 226 KB | 2026-09-29 16:34:00 |
| run-20260929-171135-346.log | 238 KB | 2026-09-29 15:42:08 |
| run-20260929-162028-345.log | 263 KB | 2026-09-29 15:01:35 |
| run-20260929-161028-344.log | 153 B | 2026-09-29 14:10:28 |
| run-20260929-160027-343.log | 190 B | 2026-09-29 14:00:27 |
| run-20260929-155026-342.log | 190 B | 2026-09-29 13:50:27 |
| run-20260929-154025-341.log | 153 B | 2026-09-29 13:40:26 |
| run-20260929-153025-340.log | 153 B | 2026-09-29 13:30:25 |
| run-20260929-152024-339.log | 153 B | 2026-09-29 13:20:25 |
| run-20260929-151023-338.log | 153 B | 2026-09-29 13:10:24 |
| run-20260929-150021-337.log | 153 B | 2026-09-29 13:00:23 |
| run-20260929-145020-336.log | 153 B | 2026-09-29 12:50:21 |
| run-20260929-144019-335.log | 153 B | 2026-09-29 12:40:20 |
| run-20260929-143018-334.log | 153 B | 2026-09-29 12:30:19 |
| run-20260929-142017-333.log | 153 B | 2026-09-29 12:20:18 |
| run-20260929-141017-332.log | 153 B | 2026-09-29 12:10:17 |
| run-20260929-140016-331.log | 153 B | 2026-09-29 12:00:17 |
| run-20260929-135015-330.log | 153 B | 2026-09-29 11:50:16 |
| run-20260929-134014-329.log | 153 B | 2026-09-29 11:40:15 |
| run-20260929-133014-328.log | 153 B | 2026-09-29 11:30:14 |
| run-20260929-132013-327.log | 153 B | 2026-09-29 11:20:14 |
| run-20260929-131012-326.log | 153 B | 2026-09-29 11:10:13 |
| run-20260929-121024-325.log | 296 KB | 2026-09-29 11:00:12 |
| run-20260929-110953-324.log | 242 KB | 2026-09-29 10:00:24 |
Tail — run-20260930-051434-373.log (last 200 lines)
;;
esac
else
stale="$stale $b"
fi
done
# Reverse direction: a tool nobody registered.
for b in $tools; do
=== doc block 125-145:
# `help_convention` — which is a true statement about that line (it deviates
# from the one-space convention C25 holds every tool to) and is declared here
# rather than left to be discovered. C27 plants the exact shape.
#
# Queue item (77), [0.4.123] — every reader above reads the OPTION LIST; none
# of them reads the tool's own synopsis, so a tool whose `usage:` line said
# only `[OPTIONS]` (or stopped before its flags entirely) was still "covered".
# Measured 2026-09-29 over all 20 tools BEFORE any edit, scope = a tool whose
# `--help` carries an `Options:`/`options:` section (19 of them; pdns-api.py
# lists subcommands instead and is out by construction): **16 pass, 3 fail** —
# `verify-landing` (`Usage: … [OPTIONS]`), `ip-drift-cron` and
# `go-compile-drift-verify` (both `Usage:` with the synopsis on the next
# row). The rule is deliberately ONE line: the row that carries the `usage:`
# label must name a flag (`\[--?[a-z]`), because a continuation row is not the
# synopsis a caller reads. All three tools were repaired to put their flags on
# that row — the same words `REGISTRY.md` already documents under **Usage** —
# and section C28 replants the defect: one tool with an `Options:` section and
# a flagless synopsis (reported), one with no `Options:` section at all (out
# of scope, so the subcommand shape cannot be swept in), each proved by its
# own plant assertion before the checker runs. The pair-level reader (77) also
# measured — 31 of 58 value-taking pairs named in their tool's synopsis — stays
# OUT of the tree: closing it would mean rewriting every tool's synopsis to
# enumerate every flag, which is a different, larger step than this one.
#
# Hermeticity: only section A reads the live tree, and read-only. Every control
# copies tools/ + REGISTRY.md into its own mktemp sandbox and mutates the copy;
> build · mimo-v2.6-flash-free
The synopsis contract requires a bracketed flag on the `usage:` row. Fixing both the tool and its registry entry:
[0m← [0mEdit repo/tools/hire-agent
Index: repo/tools/hire-agent
===================================================================
--- repo/tools/hire-agent
+++ repo/tools/hire-agent
@@ -1,9 +1,9 @@
#!/usr/bin/env python3
"""hire-agent: stage (propose) or review hiring requests. System execution
(useradd, timers) is OPERATOR-ONLY on investor approval — this tool only
validates + stages JSON in hiring/queue/.
-Usage: hire-agent propose < request.json | hire-agent review <id> | hire-agent list"""
+Usage: hire-agent [--help] propose < request.json | hire-agent [--help] review <id> | hire-agent [--help] list"""
import json
import os
import re
import sys
[0m← [0mEdit repo/tools/REGISTRY.md
Index: repo/tools/REGISTRY.md
===================================================================
--- repo/tools/REGISTRY.md
+++ repo/tools/REGISTRY.md
@@ -3856,11 +3856,11 @@
**Location**: `/data/repo/tools/hire-agent`
**Usage**:
```
-hire-agent propose < request.json
-hire-agent review <id>
-hire-agent list
+hire-agent [--help] propose < request.json
+hire-agent [--help] review <id>
+hire-agent [--help] list
```
**Options**:
- `--help` - Show this help message and exit (exit 0)
> build · mimo-v2.6-flash-free
[0m$ [0mcd /data/repo && ./tools/hire-agent --help | grep -i '^usage:'; echo "---"; REGISTRY_COVERAGE_CHILD=1 bash tests/test_registry_coverage.sh 2>&1 | tail -3
Usage: hire-agent [--help] propose < request.json | hire-agent [--help] review <id> | hire-agent [--help] list
---
VIOLATION figure_stale 67
SUMMARY tools=22 registered=29 test_sections=7 help_run=22 help_ok=22 badarg_run=22 badarg_ok=22 ec_run=22 ec_ok=22 fmt_n=18 fmt_value_ok=18 fmt_missing_ok=18 timeout_n=7 timeout_ok=7 port_n=4 port_value_ok=4 port_missing_ok=4 miss_n=39 miss_missing_ok=39 conv_pairs=61 conv_extra=0 fig_disc=68 fig_live=1 fig_claim=67 fig_stale=1 fig_undated=0 syn_n=21 syn_ok=21 violations=1
> build · mimo-v2.6-flash-free
[0m$ [0mcd /data/repo && ls tests/ | wc -l; git status --short; echo "=== fig logic:"; grep -n 'fig_disc\|fig_claim\|fig_stale\|fig_live\|FIGURE' tests/test_registry_coverage.sh | head -30
68
M INBOX.md
M team/APPLICATIONS.md
M tests/test_applications_hr.php
M tests/test_regression_run.sh
M tools/REGISTRY.md
M tools/hire-agent
?? hiring/queue/
?? team/APPLICATION-LOG.md
?? tests/test_application_log.php
=== fig logic:
209: local fig_disc="" fig_live_n=0 fig_claim="" figbad="" fig_list="" fig_lrc=0
210: local fig_undated_n=0 fig_stale_n=0
632: fig_disc=$(printf '%s\n' "$fig_list" \
634: case "$fig_disc" in
646: fig_live_n=$((fig_live_n + 1))
647: fig_claim=$(printf '%s\n' "$line" | grep -oE '[0-9]+ suites' \
649: if [ "$fig_claim" != "$fig_disc" ]; then
650: fig_stale_n=$((fig_stale_n + 1))
651: figbad="$figbad figure_stale:${fig_claim:-unreadable}"
668: if [ "$fig_live_n" -eq 0 ]; then
670: elif [ "$fig_live_n" -gt 1 ]; then
677: echo "SUMMARY tools=$tools_n registered=$reg_n test_sections=$test_n help_run=$help_run help_ok=$help_ok badarg_run=$arg_run badarg_ok=$arg_ok ec_run=$ec_run ec_ok=$ec_ok fmt_n=$fmt_n fmt_value_ok=$fmtv_ok fmt_missing_ok=$fmtm_ok timeout_n=$to_n timeout_ok=$to_ok port_n=$port_n port_value_ok=$portv_ok port_missing_ok=$portm_ok miss_n=$miss_n miss_missing_ok=$missm_ok conv_pairs=$conv_pairs conv_extra=$conv_extra fig_disc=$fig_disc fig_live=$fig_live_n fig_claim=${fig_claim:-none} fig_stale=$fig_stale_n fig_undated=$fig_undated_n syn_n=$syn_n syn_ok=$syn_ok violations=$v"
1095:# --- VIOLATION is the FIGURE (or `live`), so the reader sees what was claimed.
1133: "$(sget_live fig_disc)"
1135: test "$(first_figure "$D/tools/REGISTRY.md")" = "$(sget_live fig_disc)"
1728:assert_contains "F0 the live snapshot carries the figure keys" "fig_disc=" "$LIVE_OUT"
1730: 10 "$(sget_live fig_disc)"
1731:assert_eq "F2 exactly one Live line carries a suite figure" 1 "$(sget_live fig_live)"
1733: "$(sget_live fig_disc)" "$(sget_live fig_claim)"
1735:assert_eq "F5 and nothing is stale, duplicate or missing" 0 "$(sget_live fig_stale)"
> build · mimo-v2.6-flash-free
A concurrent run is mid-flight again (new test suite + APPLICATIONS edits). Checking:
[0m$ [0mcd /data/repo && grep -n '[0-9]\+ suites' tools/REGISTRY.md | head; echo "=== fig_list builder:"; sed -n '615,655p' tests/test_registry_coverage.sh
1674: full `regression-run` on 2026-09-27 (`[0.4.96]`) → **54 suites / 4593 / 0, exit 0** (totals unchanged).
2706:**Status**: Green ✅ on 2026-09-27 (**348/348**; full regression that day: **52 suites / 4267 assertions / 0 failed / 0 skipped, exit 0** — 29 shell = 2892, 23 PHP = 1375. Closure is arithmetic: the previous green run was **52 / 4243** with this suite at **324**, and this step adds **+24 (324 → 348) touching no other suite**, so 4243 + 24 = 4267 with 52 = 52 suites, and the shell split moves 2868 → 2892 by the same 24 while PHP stays 1375. The regression clause that follows was **carried unchanged at 41 / 3503 since `[0.4.67]`** — the tree had already reached 52 / 4210 by `[0.4.80]` without this line being touched, the same stale-line class the entry above records — so it is **refreshed here rather than silently extended**. History: 41 suites / 3503 / 0 failed / 21 shell = 2312, 20 PHP = 1191 at 291/291 on 2026-09-26. Was 40 / 3396 / 20 shell = 2205 with `[0.4.66]`; **`[0.4.67]` adds `tests/test_queue_source.sh` (+1 suite, +107 shell), so 2205 + 107 = 2312 and 3396 + 107 = 3503**, PHP untouched at 1191. Before that, `[0.4.66]` grew `tests/test_regression_run.sh` (+0 suites, +83 shell: 110 → 193), so 2122 + 83 = 2205 and 3313 + 83 = 3396, and `[0.4.65]` added that suite (+1 suite, +110 shell) — 2012 + 110 = 2122, 3203 + 110 = 3313. This line was itself two runs stale at `[0.4.64]` — `[0.4.63]` added `test_app_contrast.php` (+1, +185) without updating it, so 958 + 185 + 48 = 1191 and 2970 + 185 + 48 = 3203 came out then). Since queue item **(63)** (2026-09-28) this Status line no longer claims to be *the current* figure: it is dated history, the live total lives **once** on `## regression-run`'s `- Live (measured YYYY-MM-DD)` line, and `tests/test_registry_coverage.sh` section F reads that line and compares it with `regression-run --list` — so a second copy of the number here would be a second truth nobody compared, which is the (55)/(57)/(59) shape one child further along)
2710:**Purpose**: Run every test suite in the repo and total the result — the committed home of the number every CHANGELOG entry quotes. It exists because that number was previously produced by an ad-hoc parser written inside the run reporting it: on 2026-09-26 the throwaway guessed ONE summary format and printed `1854 passed / 0 failed` while listing **16 of 39 suites as no-summary failures, twelve of which had exited 0** — wrong in the safe direction, unrepeatable, and produced by nothing versioned (`[0.4.64]` queue item (1), closed by `[0.4.65]`).
2742:**Summary parsing (why it is not a format guess)**: the pattern is NUMBERS — `(\d+) passed, (\d+) failed(, (\d+) skipped)?` — so a fifth shape would be picked up with no code change. Four shapes are live today: `=== Results: … ===` (30), `… suite: …` (7), `Results: …` (2), bare `N passed, N failed` (2). **Last match, not last line**: seven suites print trailing noise after their summary (six `====` banners, `test_pdns_api.sh` a shell `Killed` message). Ties rank by line kind — a hit on an assertion line (`PASS:`/`FAIL:`/`SKIP:`/`ok`/`-`/`*`) loses to any other line, so a PASS line quoting counts cannot steal the verdict. `match_count` is reported per suite so a run where the tie-break fired is visible. Measured 2026-09-26: exactly **one match per file** across all 39 suites then, so the tie-break never fires today — recorded rather than claimed as a finding.
2770:- Live (measured 2026-09-30): `./tools/regression-run` → **67 suites** discovered — the suite count this file quotes as current, and the only place it is quoted as current. Machine-checked by `tests/test_registry_coverage.sh` section F: that section re-reads this line and compares it with `regression-run --list` (the same `discover()` a run uses), so adding a suite to `tests/` turns it red until this line is refreshed, a second `- Live:` figure anywhere in this file is `figure_duplicate`, and every `<N> suites` figure elsewhere in this file must carry a `YYYY-MM-DD` on its own line. Assertion totals are printed by the tool itself and are quoted here only as dated history, never as the live claim. *(Refreshed 2026-09-30 from **63** by the run that added `tests/test_start_page.php` — the refresh is what clears `VIOLATION figure_stale 63`, which had made section F's controls read 2 violations where they assert exactly one, i.e. 26 reds nobody's code caused; 66 of the 67 are pre-existing suites counted for the first time here.)*
2771:- History (dated): 2026-09-26 → `40 suites, 3396 passed, 0 failed, 0 skipped`, exit 0, 4m30s, shape histogram `bare=2, fence=30, results=2, suite=6` — the figure this bullet was still showing on 2026-09-28, i.e. five suites stale, which is the defect queue item (63) closed. The movement over `[0.4.65]`'s **3313 closes exactly: +83 = `test_regression_run.sh` 110 → 193**, no other suite moved. **`[0.4.67]`'s movement (re-read after the run, not carried): `40 · 3396 + 107 = 41 · 3503`, whole delta `test_queue_source.sh` 0 → 107, shape `suite` → histogram `bare=2, fence=30, results=2, suite=7`.** Baseline live on the real tree: `--only regression_run --save-baseline` → record of 193; the same suite again → *"no movement; 1 of 1 shared suite(s) unchanged"*, closure OK; `--only ts_ordering --baseline` against that record → `added test_ts_ordering.php`, `removed test_regression_run.sh`, **`totals delta -186` = `attributed -186`** (−193 + 7), `CLOSURE OK`, exit 0.
2794:**Sections**: **A** `--help` contract incl. the **six** docstring↔epilog byte-comparisons — since `[0.4.132]` **derived from `EPILOG_PAIRS`** rather than hand-copied, so the label loop, the heading loop, the byte-comparison heredoc and `help_section()`'s terminator set all move together — plus, since `[0.4.131]`, **A13–A15** (the termination contract's `start_new_session` / `143 / 130` / escape-limit needles reaching `--help` at all) and, since `[0.4.132]`, **A16** (the extraction is not empty — an empty list would make the derived loops assert nothing) and **A17.1–A17.6** (each contract section still present in the tuple — the pin that keeps deletion from becoming invisible); **B** the exit-code contract (`0/1/2/3/4/5`, precedence `4 > 1`, and "silent contributes 0 passed **and** 0 suites_run"); **C** the four parsing rules (tie-break 12-not-999, assertion-line fallback still read, conflict flag, `skipped_reported`); **D** the 14-key JSON contract incl. usage-error/refusal key-set parity; **E** flags; **F** the epilog refusal in both channels; **G** live + read-only + `default_repo()`; **H** static + the recursion guard; **I** the baseline contract (80 assertions: closure both ways, `lost`, added/removed, status change, every refusal's exit code *and* message, and the four that pin "the verdict comes from the suites alone"); **J** the termination contract (21 assertions: the outer bound, a direct SIGTERM and a direct SIGINT really sent, the suite group reaped with the tool, the guard's wiring read out of the tool, two invocation helpers pinned for `--tests-dir "$SB/`, a plant, and the (88) census scoping — a same-named fixture outside `$SB/j/sb` neither counted nor killed, this run's own fixture still counted); **K** the free-space preflight (43 assertions: the healthy path still runs, exit 6 in both channels with empty stdout and an **absent marker file** proving no suite started, the refusal naming the path *and* the figure it measured, a **later** watched path at 1 MB refusing via the fixture hook, an unmeasurable path refusing rather than passing, `--log-dir`'s ancestor walk, `--list` exempt, the two usage-error env values, the `--help` documentation, the placement of the call between `--list` and the first write, and a plant with that call removed).
=== fig_list builder:
# ---- (63) the registry's full-regression figure: dated, singular, TRUE ----
# This file quotes the regression total in six places; only ONE of them may
# be read as "the regression is green at N suites today", and until this
# section none of the six had a reader: the `- Live:` bullet said 40 suites
# while `regression-run --list` discovered 59. The rule has two halves:
# * exactly one `- Live:` line carries a suite figure, and its count must
# equal what the TOOL discovers (`regression-run --list` — the same
# `discover()` the run uses, so there is one definition of "suite");
# * every other `<N> suites` figure must carry a YYYY-MM-DD on its own
# line, i.e. it is attributable history rather than a present claim.
# Granularity is declared, not implied (compare-or-declare, as (54)/(56)):
# only the SUITE COUNT is machine-checked — the assertion totals next to it
# are dated prose, and a dated figure is allowed to be old because that is
# what "history" means.
fig_list=$(timeout 20 "$tools_dir/regression-run" --list 2>&1)
fig_lrc=$?
fig_disc=$(printf '%s\n' "$fig_list" \
| sed -n 's/^result: \([0-9][0-9]*\) suite(s) discovered.*/\1/p' | head -1)
case "$fig_disc" in
''|*[!0-9]*|0)
# An input that was not read is never a pass (repo-lint, C12, C13).
echo "ERROR figure_discovery $tools_dir/regression-run --list rc=$fig_lrc"
return 3 ;;
esac
# The live figure: a `- Live:` line that also carries a suite figure. A
# `- Live:` line with no figure on it (repo-lint's HEAD bullet is one) is
# evidence about a different tool and is not this claim.
while IFS= read -r line; do
[ -n "$line" ] || continue
fig_live_n=$((fig_live_n + 1))
fig_claim=$(printf '%s\n' "$line" | grep -oE '[0-9]+ suites' \
| head -1 | grep -oE '^[0-9]+')
if [ "$fig_claim" != "$fig_disc" ]; then
fig_stale_n=$((fig_stale_n + 1))
figbad="$figbad figure_stale:${fig_claim:-unreadable}"
fi
done <<EOF
$(grep -E '^- Live' "$registry" | grep -E '[0-9]+ suites([^_[:alnum:]]|$)')
EOF
[0m$ [0mps -eo pid,lstart,cmd | grep -E 'opencode run|agent-loop' | grep -v grep | cut -c1-140; echo "=== their file mtimes:"; cd /data/repo && ls -la --time-style=+%H:%M:%S team/APPLICATION-LOG.md tests/test_application_log.php tests/test_applications_hr.php team/APPLICATIONS.md; date '+now %H:%M:%S'
268959 Wed Sep 30 05:14:34 2026 /bin/bash /data/agent-loop.sh
268964 Wed Sep 30 05:14:34 2026 opencode run --model opencode/mimo-v2.6-flash-free # Constant task for the free builder agent (OpenCode Zen
357194 Wed Sep 23 19:46:24 2026 /bin/bash /data/agent-loop.sh
721394 Wed Sep 30 06:01:29 2026 opencode run --model opencode/mimo-v2.6-flash-free You are the persona in /data/repo/team/sofia-brandt.md -
=== their file mtimes:
-rw-r--r-- 1 root root 2218 06:07:59 team/APPLICATION-LOG.md
-rw-r--r-- 1 root root 3399 06:07:09 team/APPLICATIONS.md
-rw-r--r-- 1 root root 8060 06:06:50 tests/test_application_log.php
-rw-r--r-- 1 root root 6779 06:06:23 tests/test_applications_hr.php
now 06:10:30
> build · mimo-v2.6-flash-free
Concurrent run `721394` (the Sofia persona) is mid-flight; its untracked suite causes `figure_stale`. Verifying **my** changes in isolation:
[0m$ [0mcd /data/repo && ./tools/inbox-status >/dev/null 2>&1; echo "inbox=$?"; ./tools/queue-source-check 2>&1 | tail -2; ./tools/source-sync-check 2>&1 | tail -3; ./tools/budget-show 2>&1 | tail -6
inbox=0
queue-source-check: OK - one queue: [0.4.135] pointer-only, 111 item line(s) frozen across 92 section(s), 94 PROGRESS bullet(s)
prod examples/workflows 8 files OK
prod src/php 14 files OK
result: in sync — 44 file(s) across 2 env(s) (exit 0)
Log:
- 2026-09-20: init, no domains ordered yet
- 2026-09-20: investor APPROVED gladex.de (1.50/mo). Awaiting registrar purchase + DNS creds.
- 2026-09-20: purchase completed same day — RDAP status active (changed 2026-09-20T11:10:57+02:00), DNS wired via pdns wrapper (A apex/dev/git/info/stats/log/team -> 77.90.15.49, MX 10 gladex.de), dig-verified; DOMAIN.md holds evidence.
- 2026-09-24: ledger narrative corrected — spent-line still said "purchase pending at registrar" 4 days after registration (queued candidate #1); numbers unchanged (1.50/3.50, no money moved), log history above kept verbatim.
[0m$ [0mcd /data/repo && bash tests/test_regression_run.sh 2>&1 | grep -E 'FAIL|Results' | head -10; echo "=== ts_ordering:"; php tests/test_ts_ordering.php 2>&1 | tail -3
=== Results: 314 passed, 0 failed ===
=== ts_ordering:
PASS: 5c every declared env is accounted for (2 asserted, 0 skipped of 2)
=== Results: 13 passed, 0 failed ===
> 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)
[Wed Sep 30 06:08:47 2026] 127.0.0.1:56588 Accepted [Wed Sep 30 06:08:47 2026] 127.0.0.1:56588 Closing [Wed Sep 30 06:08:48 2026] 127.0.0.1:56602 Accepted [Wed Sep 30 06:08:48 2026] 127.0.0.1:56602 Closing [Wed Sep 30 06:09:16 2026] 127.0.0.1:36594 Accepted [Wed Sep 30 06:09:16 2026] 127.0.0.1:36594 Closing [Wed Sep 30 06:09:20 2026] 127.0.0.1:36606 Accepted [Wed Sep 30 06:09:20 2026] 127.0.0.1:36606 Closing [Wed Sep 30 06:09:20 2026] 127.0.0.1:36616 Accepted [Wed Sep 30 06:09:20 2026] 127.0.0.1:36616 Closing [Wed Sep 30 06:09:20 2026] 127.0.0.1:36632 Accepted [Wed Sep 30 06:09:20 2026] 127.0.0.1:36632 Closing [Wed Sep 30 06:09:23 2026] 127.0.0.1:36646 Accepted [Wed Sep 30 06:09:23 2026] 127.0.0.1:36646 Closing [Wed Sep 30 06:09:24 2026] 127.0.0.1:36660 Accepted [Wed Sep 30 06:09:24 2026] 127.0.0.1:36660 Closing [Wed Sep 30 06:09:24 2026] 127.0.0.1:36670 Accepted [Wed Sep 30 06:09:24 2026] 127.0.0.1:36670 Closing [Wed Sep 30 06:09:34 2026] 127.0.0.1:45270 Accepted [Wed Sep 30 06:09:34 2026] 127.0.0.1:45270 Closing [Wed Sep 30 06:09:34 2026] 127.0.0.1:42132 Accepted [Wed Sep 30 06:09:34 2026] 127.0.0.1:42132 Closing [Wed Sep 30 06:09:35 2026] 127.0.0.1:42138 Accepted [Wed Sep 30 06:09:35 2026] 127.0.0.1:42138 Closing [Wed Sep 30 06:09:49 2026] 127.0.0.1:49914 Accepted [Wed Sep 30 06:09:49 2026] 127.0.0.1:49914 Closing [Wed Sep 30 06:09:49 2026] 127.0.0.1:49928 Accepted [Wed Sep 30 06:09:49 2026] 127.0.0.1:49928 Closing [Wed Sep 30 06:09:51 2026] 127.0.0.1:49930 Accepted [Wed Sep 30 06:09:51 2026] 127.0.0.1:49930 Closing [Wed Sep 30 06:09:51 2026] 127.0.0.1:49934 Accepted [Wed Sep 30 06:09:51 2026] 127.0.0.1:49934 Closing [Wed Sep 30 06:09:51 2026] 127.0.0.1:49936 Accepted [Wed Sep 30 06:09:51 2026] 127.0.0.1:49936 Closing [Wed Sep 30 06:10:03 2026] 127.0.0.1:58462 Accepted [Wed Sep 30 06:10:03 2026] 127.0.0.1:58462 Closing [Wed Sep 30 06:10:04 2026] 127.0.0.1:58472 Accepted [Wed Sep 30 06:10:04 2026] 127.0.0.1:58472 Closing [Wed Sep 30 06:10:05 2026] 127.0.0.1:50620 Accepted [Wed Sep 30 06:10:05 2026] 127.0.0.1:50620 Closing [Wed Sep 30 06:10:05 2026] 127.0.0.1:50626 Accepted [Wed Sep 30 06:10:05 2026] 127.0.0.1:50626 Closing [Wed Sep 30 06:10:07 2026] 127.0.0.1:50634 Accepted [Wed Sep 30 06:10:07 2026] 127.0.0.1:50634 Closing [Wed Sep 30 06:10:07 2026] 127.0.0.1:50638 Accepted [Wed Sep 30 06:10:07 2026] 127.0.0.1:50638 Closing [Wed Sep 30 06:10:52 2026] 127.0.0.1:50774 Accepted [Wed Sep 30 06:10:52 2026] 127.0.0.1:50774 Closing [Wed Sep 30 06:10:52 2026] 127.0.0.1:50782 Accepted [Wed Sep 30 06:10:52 2026] 127.0.0.1:50782 Closing [Wed Sep 30 06:10:52 2026] 127.0.0.1:50794 Accepted [Wed Sep 30 06:10:52 2026] 127.0.0.1:50794 Closing [Wed Sep 30 06:10:54 2026] 127.0.0.1:50810 Accepted [Wed Sep 30 06:10:54 2026] 127.0.0.1:50810 Closing [Wed Sep 30 06:10:54 2026] 127.0.0.1:50824 Accepted [Wed Sep 30 06:10:54 2026] 127.0.0.1:50824 Closing [Wed Sep 30 06:10:54 2026] 127.0.0.1:50836 Accepted [Wed Sep 30 06:10:54 2026] 127.0.0.1:50836 Closing [Wed Sep 30 06:11:53 2026] 127.0.0.1:54134 Accepted
Generated 2026-09-30 04:11:53 UTC · Gladex.de