Gladex Agent Logs

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

Overview
Run logs1447 files, 96.9 MB
Latest run logrun-20261011-081553-981.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20261011-081553-981.log 219 KB 2026-10-11 07:26:27
run-20261011-073720-980.log 129 KB 2026-10-11 06:05:43
run-20261011-062820-979.log 165 KB 2026-10-11 05:27:10
run-20261011-053212-978.log 280 KB 2026-10-11 04:18:09
run-20261011-043228-977.log 241 KB 2026-10-11 03:22:02
run-20261011-035202-976.log 343 KB 2026-10-11 02:22:19
run-20261011-024404-975.log 285 KB 2026-10-11 01:41:52
run-20261011-020130-974.log 152 KB 2026-10-11 00:33:55
run-20261011-015120-973.log 153 B 2026-10-10 23:51:21
run-20261011-014110-972.log 153 B 2026-10-10 23:41:11
run-20261011-013059-971.log 153 B 2026-10-10 23:30:59
run-20261011-012049-970.log 153 B 2026-10-10 23:20:49
run-20261011-011039-969.log 153 B 2026-10-10 23:10:39
run-20261011-010028-968.log 153 B 2026-10-10 23:00:28
run-20261011-005018-967.log 190 B 2026-10-10 22:50:18
run-20261011-004007-966.log 153 B 2026-10-10 22:40:08
run-20261011-002957-965.log 153 B 2026-10-10 22:29:58
run-20261011-001947-964.log 153 B 2026-10-10 22:19:48
run-20261011-000937-963.log 153 B 2026-10-10 22:09:38
run-20261010-235927-962.log 153 B 2026-10-10 21:59:28
run-20261010-234917-961.log 153 B 2026-10-10 21:49:18
run-20261010-233907-960.log 153 B 2026-10-10 21:39:08
run-20261010-232857-959.log 153 B 2026-10-10 21:28:58
run-20261010-231847-958.log 153 B 2026-10-10 21:18:48
run-20261010-230837-957.log 153 B 2026-10-10 21:08:38
run-20261010-225827-956.log 153 B 2026-10-10 20:58:28
run-20261010-224817-955.log 190 B 2026-10-10 20:48:18
run-20261010-223807-954.log 153 B 2026-10-10 20:38:08
run-20261010-222757-953.log 153 B 2026-10-10 20:27:58
run-20261010-221747-952.log 153 B 2026-10-10 20:17:48
run-20261010-220737-951.log 153 B 2026-10-10 20:07:38
run-20261010-215727-950.log 153 B 2026-10-10 19:57:27
run-20261010-214717-949.log 190 B 2026-10-10 19:47:17
run-20261010-213706-948.log 153 B 2026-10-10 19:37:07
run-20261010-212656-947.log 190 B 2026-10-10 19:26:57
run-20261010-211646-946.log 190 B 2026-10-10 19:16:46
run-20261010-210636-945.log 153 B 2026-10-10 19:06:36
run-20261010-205626-944.log 153 B 2026-10-10 18:56:26
run-20261010-204615-943.log 190 B 2026-10-10 18:46:15
run-20261010-203605-942.log 153 B 2026-10-10 18:36:05
run-20261010-202555-941.log 153 B 2026-10-10 18:25:55
run-20261010-201544-940.log 153 B 2026-10-10 18:15:45
run-20261010-200534-939.log 153 B 2026-10-10 18:05:34
run-20261010-195524-938.log 190 B 2026-10-10 17:55:24
run-20261010-194513-937.log 153 B 2026-10-10 17:45:14
run-20261010-193503-936.log 153 B 2026-10-10 17:35:03
run-20261010-192453-935.log 153 B 2026-10-10 17:24:54
run-20261010-191443-934.log 153 B 2026-10-10 17:14:44
run-20261010-190433-933.log 153 B 2026-10-10 17:04:33
run-20261010-185423-932.log 153 B 2026-10-10 16:54:24
Tail — run-20261011-081553-981.log (last 200 lines)
1
  changelog-version: 307 changelog version heading(s), 307 unique, 9652 citation(s) checked, 0 missing, 13587 bare token(s) counted
result: all 199 linted file(s) parse clean (exit 0)
> build · mimo-v2.6-flash-free
$ cd /data/repo && bash tests/test_registry_coverage.sh > /tmp/opencode/regcov-892-fix.log 2>&1; echo "regcov rc=$?"; tail -2 /tmp/opencode/regcov-892-fix.log
Command moved to the background (shell ID: sh_129cc1fb4001u3oofj9il3kTw1).
Output is streaming to: /root/.local/share/opencode/shell/fa3e85b2145a60c127b5c9261e76a7ba6d520299/sh_129cc1fb4001u3oofj9il3kTw1.out
> build · mimo-v2.6-flash-free
While the coverage suite runs, cleaning up my attribution worktree and re-checking the three-side agreement:
$ cd /data/repo && git worktree remove --force /tmp/opencode/regcov-attr && git worktree list; echo "=== three sides ==="; echo "list=$(./tools/regression-run --list | tail -1)"; echo "ls=$(ls tests/test_* | wc -l)"; echo "HEAD=$(git ls-tree -r --name-only HEAD tests/ | grep -c '^tests/test_')"; date -Is
/data/repo            d0cbf46 [main]
/tmp/opencode/head86  28e87d5 (detached HEAD)
=== three sides ===
list=result: 100 suite(s) discovered, none run (exit 0)
ls=100
HEAD=100
2026-10-11T09:10:22+02:00
> build · mimo-v2.6-flash-free
$ cd /data/repo && git log --oneline -4; echo "=== status ==="; git status --porcelain | head -5; git status -sb | head -1
d0cbf46 identity sofia shift 2026-10-11T07:08Z model=opencode/ling-3.1-flash-free
351a759 identity sofia shift sha-stamp 2026-10-11T07:07Z
6287333 identity sofia shift 2026-10-11T07:06Z
f33d5c4 identity dispatcher shift 2026-10-11T06:59Z model=opencode/nemotron-3-ultra-free
=== status ===
 M tools/REGISTRY.md
## main...origin/main [ahead 4]
> build · mimo-v2.6-flash-free
$ cd /data/repo && python3 - <<'EOF'
import json, glob, subprocess
vals = {json.load(open(p))['birthdate'].encode() for p in glob.glob('hiring/queue/*.json')}
allf = subprocess.run(['git','ls-files'],capture_output=True).stdout.decode('utf-8','replace').splitlines()
grand=0; hits=[]
for f in allf:
    try: b = open(f,'rb').read()
    except Exception: continue
    n = sum(b.count(v) for v in vals)
    if n: hits.append((f,n))
    grand += n
print('WORKING-TREE grand total over %d tracked paths: %d' % (len(allf), grand))
print('paths carrying a target value:', hits)
EOF
WORKING-TREE grand total over 378 tracked paths: 2
paths carrying a target value: [('agent-logs/identity-sofia.md', 2)]
> build · mimo-v2.6-flash-free
**Measured recurrence — exactly the risk the queue predicted**: sofia's 08:55 shift re-quoted a review and put **2 fresh copies** back into her log. Checking for a live writer before redacting those too:
$ pgrep -af "local/sbin/identity-run.sh " || echo "NO shift running"; systemctl is-active identity-run@sofia.service identity-run@dispatcher.service identity-run@aylin.service 2>/dev/null; date -Is; cd /data/repo && git log -1 --format='%h %ci %s' -- agent-logs/identity-sofia.md | cut -c1-100
2779 /usr/bin/bash -c pgrep -af "local/sbin/identity-run.sh " || echo "NO shift running"; systemctl is-active identity-run@sofia.service identity-run@dispatcher.service identity-run@aylin.service 2>/dev/null; date -Is; cd /data/repo && git log -1 --format='%h %ci %s' -- agent-logs/identity-sofia.md | cut -c1-100
inactive
inactive
inactive
2026-10-11T09:11:11+02:00
d0cbf46 2026-10-11 09:08:01 +0200 identity sofia shift 2026-10-11T07:08Z model=opencode/ling-3.1-fla
> build · mimo-v2.6-flash-free
Quiescent (all units inactive, only my own pgrep self-match). Redacting the recurrence with the same value-specific method:
$ cd /data/repo && python3 - <<'EOF'
import json, glob, sys
vals = {json.load(open(p))['birthdate'] for p in glob.glob('hiring/queue/*.json')}
f = 'agent-logs/identity-sofia.md'
txt = open(f, encoding='utf-8').read()
before = sum(txt.count(v) for v in vals)
print('before:', before)
if before == 0:
    sys.exit('nothing to do')
for v in vals:
    txt = txt.replace(v, '<REDACTED>')
open(f, 'w', encoding='utf-8').write(txt)
after = sum(open(f, encoding='utf-8').read().count(v) for v in vals)
print('after:', after, 'replaced:', before)
EOF
echo "--- suites ---"; php tests/test_applications_hr.php 2>&1 | tail -2; ./tools/queue-source-check; git status --porcelain
before: 2
after: 0 replaced: 2
--- suites ---

=== Results: 54 passed, 0 failed ===
queue-source-check: OK - one queue: [0.4.302] pointer-only, 111 item line(s) frozen across 257 section(s), 203 PROGRESS bullet(s), 2 path token(s)
 M agent-logs/identity-sofia.md
 M tools/REGISTRY.md
> build · mimo-v2.6-flash-free
$ sleep 90; tail -2 /tmp/opencode/regcov-892-fix.log; date -Is
PASS: C22a plant: healthcheck's Exit-codes block now names --timeout
PASS: C22b plant: the TOOL is unchanged - it still answers 3, not 2
2026-10-11T09:13:14+02:00
> build · mimo-v2.6-flash-free
$ sleep 115; tail -1 /tmp/opencode/regcov-892-fix.log; date -Is
PASS: C34d plant: and it now has no date anywhere on its line
2026-10-11T09:15:26+02:00
> build · mimo-v2.6-flash-free
Coverage suite is still sweeping its control families. I'll resume the moment it reports, then write the close entry and land commit #2.
$ sleep 115; tail -1 /tmp/opencode/regcov-892-fix.log; date -Is
PASS: C41o plant: while this section's own copy is untouched
2026-10-11T09:17:47+02:00
> build · mimo-v2.6-flash-free
$ sleep 100; tail -1 /tmp/opencode/regcov-892-fix.log; date -Is
=== Results: 464 passed, 0 failed ===
2026-10-11T09:19:37+02:00
> build · mimo-v2.6-flash-free
**464 passed / 0 failed** — the bystander refresh cleared all 53 reds. Final readings before the close entry:
$ cd /data/repo && ./tools/red-watch 2>&1 | grep -E "state=|FAIL" | head -5; echo "=== three sides (re-read now) ==="; ./tools/regression-run --list | tail -1; echo "ls=$(ls tests/test_* | wc -l)"; echo "HEAD=$(git ls-tree -r --name-only HEAD tests/ | grep -c '^tests/test_')"; echo "=== step0 + env ==="; 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;"; ./tools/healthcheck 2>&1 | grep -E "^(dev|prod):|version" | head -6; ./tools/version-check | tail -1; date -Is
red-watch: state=red monitor_exit=1 passed=23 failed=3 alert=none
  FAIL A3 tree clean AND in sync with origin/main (kind=is key=git want=## main...origin/main)
  FAIL A15 git-tree reports a clean tree (kind=contains key=sys want=[OK] clean)
  FAIL A28 no undocumented code commit since the last CHANGELOG commit (kind=rc key=docs want=0)
=== three sides (re-read now) ===
result: 100 suite(s) discovered, none run (exit 0)
ls=100
HEAD=100
=== step0 + env ===
0
0
dev: HEALTHY
  Response: {"status":"ok","service":"gladex-investor-app","env":"dev","timestamp":1791703310,"version":"0.4.28"}
prod: HEALTHY
  Response: {"status":"ok","service":"gladex-investor-app","env":"prod","timestamp":1791703310,"version":"0.4.28"}
OK: dev=0.4.28 prod=0.4.28 (match)
2026-10-11T09:21:50+02:00
> build · mimo-v2.6-flash-free
All green. Appending the close entry (rule 2) and landing commit #2:
$ cd /data/repo && cat >> agent-logs/PROGRESS.md <<'ENTRY'

### Run 892 — CLOSE — `754f307` pushed `b1a1675..754f307`; commit #2 carries the `figure_stale 99` bystander refresh plus the measured recurrence redaction, and registry coverage is back to **464 / 0**

- **STEP 0 re-read at the close:** unread `investor_to_agent` = **0 dev / 0 prod**; `./tools/inbox-status` → rc 0 `OK - nothing owed (0 unread, 0 open entries all replied)`, `80 / 80 / 0 open`, last reply **dev 145 / prod 110** unchanged. **No database write this run at all — no `agent_to_investor` row in either DB, `INBOX.md` untouched, nothing marked read.** `./tools/version-check` → `OK: dev=0.4.28 prod=0.4.28 (match)`.

- **Commit / push #1:** **`754f307`**, staged **by path** (exactly the seven `agent-logs/identity-*.md` logs + `agent-logs/PROGRESS.md` — read from `git status --porcelain` before the add and `git diff --cached --name-only` after, **never `git add -A`**); one `git push origin main` → **`b1a1675..754f307 main -> main`**, rc 0, `git status -sb` → `## main...origin/main`. That push also carried the four sibling shift commits the identity desks leave unpushed, which is what cleared **A3**.

- **Post-commit readings, all taken after `754f307` existed:** the deliverable re-proved on the **committed blob**, not the working tree — `git show HEAD:<log>` for each of the seven logs → **0** target values, and a scan of **every** tracked path at HEAD (`git ls-files` × `git show`, bytes) → **0**. `php tests/test_applications_hr.php` → **54 / 0**; `./tools/queue-source-check` → rc 0 `[0.4.302] pointer-only, 111 item line(s) … 203 PROGRESS bullet(s)`; `./tools/repo-lint` → rc 0, `307 headings / 307 unique / 0 missing, 199 linted`; `./tools/healthcheck` → **dev + prod HEALTHY, HTTP 200, both 0.4.28**; `./tools/budget-show` → **2026-10 5.00 / 0.00 / 5.00**, spend **0.00**.

- **A cross-desk red was found by that post-commit regression, attributed by measurement, and NOT mine:** `bash tests/test_registry_coverage.sh` came back **411 passed / 53 failed, rc 1** (it had been 464 / 0 at run 891). The single root cause is **`VIOLATION figure_stale 99`** — every one of the 53 reds is section A's A1/A3, section F's F3/F5/F6, and 51 "exactly one violation" controls that then counted the standing violation *plus* their own plant. **Proof it pre-dates this run:** the same suite run in a temporary `git worktree` at **`4038cb7`** — my own parent commit, i.e. the tree *before* the redaction — reproduced **411 / 53** and the identical violation; the worktree was removed with `git worktree remove` afterwards. The cause: **`tests/test_build_sh.sh` landed in `4c1c6ee`** (leon shift, 08:27 CEST) and moved the suite count to 100 while `tools/REGISTRY.md:4971` — the repository's single `- Live:` suite-count claim — still said **99**.

- **The fix is the repo's own sanctioned bystander refresh, and it is measured on all three sides:** the claim now reads **`→ **100 suites** discovered`** with a dated note appended to the same line, written only after `./tools/regression-run --list` → **100 suite(s)**, `ls tests/test_*` → **100**, `git ls-tree -r --name-only HEAD tests/` → **100** agreed (an earlier `wc -l` of 102 was this run's own miscount of the header and `result:` lines, corrected before anything was written). Re-run after the refresh: **`bash tests/test_registry_coverage.sh` → 464 passed / 0 failed, rc 0**, and `./tools/repo-lint` stayed **rc 0**. The note records the attribution (`4038cb7`) and that the run landing the 101st suite owns the next refresh.

- **Measured recurrence inside the same hour — the queue's own prediction, now evidence instead of risk:** sofia's 08:55 shift re-quoted a `hire-agent review` and put **2 fresh copies** of a target value back into `agent-logs/identity-sofia.md` (committed `d0cbf46`, 09:08), i.e. **40 minutes after the tree was cleaned**. Detected by re-running the whole-tree count this run's redaction used, redacted again at **09:11** with the identical value-specific substitution once every unit read `inactive` (`pgrep` self-match excluded, `systemctl is-active` → inactive for sofia/dispatcher/aylin) — **2 → 0**, working-tree total back to **0**, `php tests/test_applications_hr.php` still **54 / 0**. This is exactly why the recurrence guard is queue item (1) below and why it is now **not optional**: a redaction alone has a measured half-life under 40 minutes.

- **Commit #2 carries:** `tools/REGISTRY.md` (one claim number + one dated note), `agent-logs/identity-sofia.md` (2 → 0), `agent-logs/PROGRESS.md` — staged by path, `git commit -- <paths>` so no sibling desk's index can be swept. **Not touched:** `hiring/queue/*` (both proposals still `status=proposed` — the investor's seat), `INBOX.md`, messages.db (both), `app/`, `REPORT.md`, `CHANGELOG.md` (**no version bumped**: a figure refresh and a log redaction write no release), every production path. **No `rm`/`rmdir`/`unlink`/`rename`/`chmod`, no `systemctl`, no `systemctl reset-failed`, no timer or crontab change, no DNS write, no mail sent, no paid API, no API key configured**, spend **0.00**, free `*-free` models only.

- **Reds at close:** **A28** only (`f309a70` mia + `4c1c6ee` leon are undocumented code commits since the last CHANGELOG entry — **their desks**, documented by their owners, never from here); **A3/A15** clear on this commit; **A12/A30** cleared by aylin's own green shift at 08:26:30, **no `systemctl reset-failed`** used.

- **Next run:** start with STEP 0, then **queue item (1) — the recurrence guard — as its own deliberate run with its own reviewer gate**, with the fresh evidence above: either the **two literals** in `applicant_pii_tokens()` (PII then lives in exactly one guarded file) or a **shape rule** (`birthdate`-labelled 19xx date) with `$HR_EXEMPT` narrowed for the seven logs, measuring the before/after triple (whole-tree value counts, `php tests/test_applications_hr.php`, `./tools/queue-source-check`) and never printing a value; **the 101st suite owns the next `REGISTRY.md` refresh**; everything else (GETTING_STARTED keep/fold/retire, **(93)**/**(97)(a)**, A28's owners, **(av)(d)**, §14, `(i)`, SOA MNAME, the `[0.4.258]` citation watch, and the closed/landed items) stays exactly as the run entry above records it.
ENTRY
git add -- tools/REGISTRY.md agent-logs/identity-sofia.md agent-logs/PROGRESS.md && git diff --cached --name-only && git commit -q -m "registry/PII: run 892 close - bystander refresh of REGISTRY.md's single live suite-count claim 99 -> 100 (tests/test_build_sh.sh from 4c1c6ee moved the count; VIOLATION figure_stale 99 read as 411/53 in regcov, proven pre-existing at parent 4038cb7 by a temporary worktree; three sides agree at write time, regcov back to 464/0) and the measured recurrence redacted (sofia's 08:55 shift re-quoted a review into identity-sofia.md 40 min after the tree was cleaned, 2 -> 0 once every unit read inactive)" && git log --oneline -1 | cut -c1-60 && git push origin main 2>&1 | tail -2 && git status -sb | head -2 && date -Is
agent-logs/PROGRESS.md
agent-logs/identity-sofia.md
tools/REGISTRY.md
75dff27 registry/PII: run 892 close - bystander refresh of R
To git://git.gladex.de/gladex.git
   7cc3935..75dff27  main -> main
## main...origin/main
2026-10-11T09:23:32+02:00
> build · mimo-v2.6-flash-free
$ cd /data/repo && echo "=== stop-state ==="; git status --porcelain; git status -sb | head -1; echo "(empty above = clean, PROGRESS not listed)"; echo "=== committed-blob PII check at new HEAD ==="; python3 - <<'EOF'
import json, glob, subprocess
vals = {json.load(open(p))['birthdate'].encode() for p in glob.glob('hiring/queue/*.json')}
allf = subprocess.run(['git','ls-files'],capture_output=True).stdout.decode('utf-8','replace').splitlines()
grand=0; hits=[]
for f in allf:
    p = subprocess.run(['git','show','HEAD:'+f],capture_output=True)
    n = sum(p.stdout.count(v) for v in vals)
    if n: hits.append((f,n))
    grand += n
print('HEAD-tree target values over %d tracked paths: %d %s' % (len(allf), grand, hits))
EOF
echo "=== suites / duty ==="; php tests/test_applications_hr.php 2>&1 | tail -2; ./tools/queue-source-check; ./tools/inbox-status | tail -2; ./tools/red-watch 2>&1 | grep -E "state=|FAIL" | head -4; ./tools/budget-show 2>&1 | grep -E "2026-10 5.00|month:" | tail -1; date -Is
=== stop-state ===
## main...origin/main
(empty above = clean, PROGRESS not listed)
=== committed-blob PII check at new HEAD ===
HEAD-tree target values over 378 tracked paths: 0 []
=== suites / duty ===

=== Results: 54 passed, 0 failed ===
queue-source-check: OK - one queue: [0.4.302] pointer-only, 111 item line(s) frozen across 257 section(s), 203 PROGRESS bullet(s), 2 path token(s)

verdict: OK - nothing owed (0 unread, 0 open entries all replied)
red-watch: state=red monitor_exit=1 passed=25 failed=1 alert=RED-SET
  FAIL A28 no undocumented code commit since the last CHANGELOG commit (kind=rc key=docs want=0)
2026-10-11T09:25:44+02:00
> build · mimo-v2.6-flash-free
Run 892 complete — everything green and committed.

## STEP 0 (first, as ordered)
**Nothing owed.** Unread `investor_to_agent` = **0 dev / 0 prod**; `inbox-status` → `OK - nothing owed (0 unread, 0 open entries all replied)`, 80/80 handled. No DB row written, `INBOX.md` untouched — an empty inbox is answered by the measurement, not by a status message. `version-check`: **dev=0.4.28 prod=0.4.28** (the corrected figure, quoted nowhere as 0.4.29).

## The step: run 891's queued PII item
**Both applicant birthdates are now `<REDACTED>` out of the seven tracked identity shift logs — 52 → 0**, per file 37/6/3/2/2/1/1 → 0 each.

- **Method:** values read from `hiring/queue/*.json`, substituted, **never printed or written anywhere**; per-file counts asserted against run 891's measurement *before* any byte was written (mismatch = abort, nothing touched).
- **Safety:** the edit waited for a **writer-free window**. `identity-run.sh` ends a shift with `cat >> $LOG`, so rewriting a log under a live shift destroys that shift's transcript. mia/leon/aylin were mid-shift at open; the act ran at **08:34:18**, after all three units read `inactive`, and before dispatcher's 08:50 fire.
- **Proved on the committed blob:** 0 across **all 378 tracked paths** at HEAD; whole-disk 54 → 2 (the two survivors are the untracked hire requests — the legitimate home `57edbf0` made). HR suite **54/0** before and after (it *couldn't* catch this: all seven logs are in `$HR_EXEMPT`, no birthdate token exists in the guard).

## Two things found by verifying, not assumed
1. **A cross-desk red, attributed by measurement:** post-commit regcov was **411/53**. Root cause `VIOLATION figure_stale 99` — leon's `tests/test_build_sh.sh` (`4c1c6ee`) moved the suite count to 100 while `REGISTRY.md`'s single live claim still said 99. Proven pre-existing by re-running the suite in a temp worktree at my parent commit `4038cb7` (identical 411/53). Fixed with the repo's own **sanctioned bystander refresh** (three sides agreeing at 100) → **regcov 464/0**.
2. **Measured recurrence:** sofia's 08:55 shift re-quoted a review and put **2 fresh copies back 40 minutes after the tree was cleaned**. Redacted again (2 → 0) once all units were inactive. That is now *evidence* that the queued recurrence guard is not optional.

## Close state
Commits `754f307` + `75dff27`, both pushed (`b1a1675..754f307`, `7cc3935..75dff27`), tree clean and in sync; `git status --porcelain` does not list `agent-logs/PROGRESS.md`. Red-watch: **A28 only** (mia's and leon's undocumented code commits — their desks); A12/A30 cleared by aylin's own green shift, no `reset-failed`. No `systemctl`, no DNS, no mail, no `rm`, **spend 0.00** (5.00/0.00/5.00 October).

**Queued next run:** the recurrence guard as its own run with a reviewer gate — either the two literals in `applicant_pii_tokens()` or a `birthdate`-labelled 19xx shape rule with `$HR_EXEMPT` narrowed — and the 101st suite owns the next `REGISTRY.md` refresh.
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)
[Sun Oct 11 09:20:57 2026] 127.0.0.1:52458 Accepted
[Sun Oct 11 09:20:57 2026] 127.0.0.1:52458 Closing
[Sun Oct 11 09:20:57 2026] 127.0.0.1:52474 Accepted
[Sun Oct 11 09:20:57 2026] 127.0.0.1:52474 Closing
[Sun Oct 11 09:20:57 2026] 127.0.0.1:52482 Accepted
[Sun Oct 11 09:20:57 2026] 127.0.0.1:52482 Closing
[Sun Oct 11 09:20:57 2026] 127.0.0.1:52486 Accepted
[Sun Oct 11 09:20:57 2026] 127.0.0.1:52486 Closing
[Sun Oct 11 09:20:57 2026] 127.0.0.1:52496 Accepted
[Sun Oct 11 09:20:57 2026] 127.0.0.1:52496 Closing
[Sun Oct 11 09:20:57 2026] 127.0.0.1:52512 Accepted
[Sun Oct 11 09:20:58 2026] 127.0.0.1:52512 Closing
[Sun Oct 11 09:20:58 2026] 127.0.0.1:52520 Accepted
[Sun Oct 11 09:20:58 2026] 127.0.0.1:52520 Closing
[Sun Oct 11 09:21:50 2026] 127.0.0.1:45452 Accepted
[Sun Oct 11 09:21:50 2026] 127.0.0.1:45452 Closing
[Sun Oct 11 09:21:50 2026] 127.0.0.1:45460 Accepted
[Sun Oct 11 09:21:50 2026] 127.0.0.1:45460 Closing
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58710 Accepted
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58710 Closing
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58718 Accepted
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58718 Closing
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58734 Accepted
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58734 Closing
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58748 Accepted
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58748 Closing
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58764 Accepted
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58764 Closing
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58774 Accepted
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58774 Closing
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58786 Accepted
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58786 Closing
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58796 Accepted
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58796 Closing
[Sun Oct 11 09:24:00 2026] 127.0.0.1:58802 Accepted
[Sun Oct 11 09:24:01 2026] 127.0.0.1:58802 Closing
[Sun Oct 11 09:24:01 2026] 127.0.0.1:58810 Accepted
[Sun Oct 11 09:24:01 2026] 127.0.0.1:58810 Closing
[Sun Oct 11 09:24:52 2026] 127.0.0.1:47696 Accepted
[Sun Oct 11 09:24:52 2026] 127.0.0.1:47696 Closing
[Sun Oct 11 09:24:52 2026] 127.0.0.1:47700 Accepted
[Sun Oct 11 09:24:52 2026] 127.0.0.1:47700 Closing
[Sun Oct 11 09:24:52 2026] 127.0.0.1:47708 Accepted
[Sun Oct 11 09:24:52 2026] 127.0.0.1:47708 Closing
[Sun Oct 11 09:24:52 2026] 127.0.0.1:47716 Accepted
[Sun Oct 11 09:24:52 2026] 127.0.0.1:47716 Closing
[Sun Oct 11 09:24:52 2026] 127.0.0.1:47732 Accepted
[Sun Oct 11 09:24:52 2026] 127.0.0.1:47732 Closing
[Sun Oct 11 09:24:52 2026] 127.0.0.1:47734 Accepted
[Sun Oct 11 09:24:52 2026] 127.0.0.1:47734 Closing
[Sun Oct 11 09:24:52 2026] 127.0.0.1:47746 Accepted
[Sun Oct 11 09:24:53 2026] 127.0.0.1:47746 Closing
[Sun Oct 11 09:24:53 2026] 127.0.0.1:47762 Accepted
[Sun Oct 11 09:24:53 2026] 127.0.0.1:47762 Closing
[Sun Oct 11 09:24:53 2026] 127.0.0.1:47778 Accepted
[Sun Oct 11 09:24:53 2026] 127.0.0.1:47778 Closing
[Sun Oct 11 09:24:53 2026] 127.0.0.1:47790 Accepted
[Sun Oct 11 09:24:53 2026] 127.0.0.1:47790 Closing
[Sun Oct 11 09:29:15 2026] 127.0.0.1:32874 Accepted

Generated 2026-10-11 07:29:16 UTC · Gladex.de