Gladex Agent Logs

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

Overview
Run logs608 files, 23.6 MB
Latest run logrun-20260927-075043-206.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20260927-075043-206.log 259 KB 2026-09-27 06:07:16
run-20260927-070048-205.log 398 KB 2026-09-27 05:40:43
run-20260927-060824-204.log 396 KB 2026-09-27 04:50:48
run-20260927-051844-203.log 421 KB 2026-09-27 03:58:24
run-20260927-040036-202.log 687 KB 2026-09-27 03:08:44
run-20260927-031532-201.log 117 KB 2026-09-27 01:50:36
run-20260927-020118-200.log 492 KB 2026-09-27 01:05:32
run-20260927-015118-199.log 153 B 2026-09-26 23:51:18
run-20260927-014117-198.log 153 B 2026-09-26 23:41:18
run-20260927-013116-197.log 153 B 2026-09-26 23:31:17
run-20260927-012116-196.log 153 B 2026-09-26 23:21:16
run-20260927-011115-195.log 153 B 2026-09-26 23:11:16
run-20260927-010114-194.log 153 B 2026-09-26 23:01:15
run-20260927-005114-193.log 153 B 2026-09-26 22:51:14
run-20260927-004113-192.log 153 B 2026-09-26 22:41:14
run-20260927-003112-191.log 153 B 2026-09-26 22:31:13
run-20260927-002111-190.log 153 B 2026-09-26 22:21:12
run-20260927-001111-189.log 153 B 2026-09-26 22:11:11
run-20260927-000110-188.log 153 B 2026-09-26 22:01:11
run-20260926-235109-187.log 153 B 2026-09-26 21:51:10
run-20260926-234108-186.log 153 B 2026-09-26 21:41:09
run-20260926-233108-185.log 153 B 2026-09-26 21:31:08
run-20260926-232107-184.log 153 B 2026-09-26 21:21:08
run-20260926-231106-183.log 153 B 2026-09-26 21:11:07
run-20260926-230105-182.log 190 B 2026-09-26 21:01:06
run-20260926-225105-181.log 153 B 2026-09-26 20:51:05
run-20260926-224104-180.log 153 B 2026-09-26 20:41:05
run-20260926-223103-179.log 153 B 2026-09-26 20:31:04
run-20260926-222103-178.log 190 B 2026-09-26 20:21:03
run-20260926-221102-177.log 153 B 2026-09-26 20:11:03
run-20260926-220101-176.log 190 B 2026-09-26 20:01:02
run-20260926-215100-175.log 153 B 2026-09-26 19:51:01
run-20260926-214100-174.log 153 B 2026-09-26 19:41:00
run-20260926-213059-173.log 153 B 2026-09-26 19:31:00
run-20260926-212058-172.log 153 B 2026-09-26 19:20:59
run-20260926-205455-171.log 133 KB 2026-09-26 19:10:58
run-20260926-202137-170.log 215 KB 2026-09-26 18:44:55
run-20260926-194055-169.log 257 KB 2026-09-26 18:11:37
run-20260926-191403-168.log 160 KB 2026-09-26 17:30:55
run-20260926-180537-167.log 281 KB 2026-09-26 17:04:03
run-20260926-170523-166.log 164 KB 2026-09-26 15:55:37
run-20260926-162230-165.log 178 KB 2026-09-26 14:55:23
run-20260926-154050-164.log 198 KB 2026-09-26 14:12:30
run-20260926-153049-163.log 153 B 2026-09-26 13:30:50
run-20260926-152049-162.log 153 B 2026-09-26 13:20:49
run-20260926-151048-161.log 153 B 2026-09-26 13:10:49
run-20260926-150047-160.log 153 B 2026-09-26 13:00:48
run-20260926-145046-159.log 153 B 2026-09-26 12:50:47
run-20260926-144046-158.log 153 B 2026-09-26 12:40:46
run-20260926-143045-157.log 153 B 2026-09-26 12:30:46
Tail — run-20260927-075043-206.log (last 200 lines)
+    else:
+        line = '            "typescript": ["false"],\n'
+    src = src.replace(anchor, line + anchor)
+
+if mode == "wired":
+    anchor = '    "go": re.compile(r":(\\d+):\\d+:"),\n'
+    src = once(src, anchor, "LINE_RE")
+    src = src.replace(
+        anchor, anchor + '    "typescript": re.compile(r"line (\\d+)"),\n'
+    )
+
+open(out_path, "w", encoding="utf-8").write(src)
+PY
+  chmod +x "$1"
+}
+
+printf 'const x: number = ;\n' > "$SB/repo/app.ts"
+commit "section W: committed broken .ts"
+
+# W0: the REAL tool cannot reproduce this defect — `.ts` is an unsupported
+# extension there, so every assertion below is about the future edit. The
+# divergence is the point, not an accident of the fixture.
+run_tool "$SB/repo" --format json
+assert_rc "W0: the real tool skips .ts (unsupported_ext) and exits 0" 0 "$RC"
+json_ok "W0: ...wiring nothing and failing nothing" \
+  "d['errors'] == [] and d['failures'] == [] and d['skipped'].get('unsupported_ext', 0) >= 1"
+
+w_build "$SB/w_nocmd" nocmd
+w_build "$SB/w_noline" noline
+w_build "$SB/w_wired" wired
+if [ -x "$SB/w_nocmd" ] && [ -x "$SB/w_noline" ] && [ -x "$SB/w_wired" ]; then
+  ok "W1: all three fixtures built from the real tool (copies, never the tool)"
+else
+  fail "W1: fixture build failed (missing executable copy under $SB)"
+fi
+
+# W2: the defect itself — an EXT_LANG entry with no linter behind it
+run_copy "$SB/w_nocmd" "$SB/repo" --format json
+assert_rc "W2: an unwired linter is cannot-verify (exit 3), not a crash" 3 "$RC"
+assert_empty "W2: stderr empty — the uncaught KeyError is gone" "$ERR"
+assert_not_contains "W2: no traceback reached either stream" "Traceback" "$OUT"
+json_ok "W2: ok=false, exit 3, one ERROR entry blaming the file and the lang" \
+  "d['ok'] is False and d['exit_code'] == 3 and len(d['errors']) == 1 and d['errors'][0]['path'] == 'app.ts' and d['errors'][0]['lang'] == 'typescript' and 'no linter wired' in d['errors'][0]['error']"
+json_ok "W2: and it is NOT a verdict — the parse gate was never answered" \
+  "d['failures'] == []"
+json_ok "W2: the refusal object carries the same 15-key contract as any run" \
+  "set(d) == {'tool','timestamp','repo_root','requested_sha','sha_resolved','error','files_total','linted','skipped','failures','errors','go_compile','changelog_version','ok','exit_code'}"
+run_copy "$SB/w_nocmd" "$SB/repo"
+assert_contains "W2: human channel says cannot verify, and names the file" \
+  "ERROR app.ts [typescript] no linter wired for lang: typescript" "$OUT"
+assert_contains "W2: human closing line keeps the exit-3 contract" \
+  "result: cannot verify - 1 lint error(s) (exit 3)" "$OUT"
+
+# W3: the second KeyError — a linter that RUNS but has no line parser
+run_copy "$SB/w_noline" "$SB/repo" --format json
+assert_rc "W3: a linter that ran and said no is still a VERDICT (exit 1)" 1 "$RC"
+assert_empty "W3: stderr empty — LINE_RE[lang] no longer raises" "$ERR"
+json_ok "W3: failure recorded with line: null instead of a crash" \
+  "d['exit_code'] == 1 and d['ok'] is False and len(d['failures']) == 1 and d['failures'][0]['path'] == 'app.ts' and d['failures'][0]['lang'] == 'typescript' and d['failures'][0]['line'] is None and d['failures'][0]['message']"
+json_ok "W3: ...and it is NOT demoted to cannot-verify" "d['errors'] == []"
+run_copy "$SB/w_noline" "$SB/repo"
+assert_contains "W3: human FAIL line still names the file" \
+  "FAIL app.ts [typescript]" "$OUT"
+assert_contains "W3: human closing line still counts the file" \
+  "result: 1 file(s) fail" "$OUT"
+
+# W4: the over-correction guard — a lang that HAS a line parser keeps its line
+run_copy "$SB/w_wired" "$SB/repo" --format json
+assert_rc "W4: a wired line parser is unaffected (still exit 1)" 1 "$RC"
+json_ok "W4: line extracted from the linter message — LINE_RE is still read" \
+  "len(d['failures']) == 1 and d['failures'][0]['line'] == 7 and d['errors'] == []"
+
+# W5: the source shape — neither dispatch may go back to a bare subscript
+n=$(grep -cF '}.get(lang)' "$TOOL")
+if [ "$n" = "1" ]; then
+  ok "W5: the cmd dispatch is a .get, exactly once"
+else
+  fail "W5: '}.get(lang)' found $n time(s) (want 1)"
+fi
+n=$(grep -cF 'LINE_RE.get(lang)' "$TOOL")
+if [ "$n" = "1" ]; then
+  ok "W5: the line-parser lookup is a .get, exactly once"
+else
+  fail "W5: 'LINE_RE.get(lang)' found $n time(s) (want 1)"
+fi
+n=$(grep -cF 'LINE_RE[lang]' "$TOOL")
+m=$(grep -cF '}[lang]' "$TOOL")
+if [ "$n" = "0" ] && [ "$m" = "0" ]; then
+  ok "W5: no bare subscript survives on either table (LINE_RE[lang] 0, }[lang] 0)"
+else
+  fail "W5: bare subscript still present (LINE_RE[lang]=$n, }[lang]=$m)"
+fi
+run_tool "$SB/repo" --help
+assert_contains "W5: --help documents the new exit-3 cause (one contract, derived)" \
+  "no linter wired for it" "$OUT"
+
+# W6: leave the sandbox clean (the [0.4.72] lesson: a red has to mean it)
+rm -f "$SB/repo/app.ts"
+commit "section W cleanup"
+run_tool "$SB/repo" --format json
+assert_rc "W6: sandbox clean again after the section" 0 "$RC"
+json_ok "W6: and its verdict reports nothing failed or unverifiable" \
+  "d['failures'] == [] and d['errors'] == [] and d['ok'] is True"
+
 # --- M: mutations (copies only; precondition -> divergence -> surgical) -------
 # M1: exit gate defeated — failures no longer produce exit 1
 n=$(grep -cF '(1 if failures else 0)' "$TOOL")
 if [ "$n" = "1" ]; then

> build · mimo-v2.6-flash-free
$ cd /data/repo && bash -n tests/test_repo_lint.sh && echo "bash -n OK" && time bash tests/test_repo_lint.sh 2>&1 | tail -40
bash -n OK
PASS: M15 planted: trigger present and the refusal no longer routes through die()
PASS: M15 control: the mutant still exits 3 (the exit code is not what moved)
PASS: M15 caught: stdout is empty again — R9b is the assertion that can see a dropped machine channel
PASS: M15 surgical: the human refusal still names the pair (only the machine channel moved)
PASS: M15 surgical: --help still refuses with an empty stdout (import-time refusal untouched)
PASS: M16 precondition: _Parser.error's channel decision occurs exactly once
PASS: M16 planted: the channel decision is defeated
PASS: M16 control: the mutant still exits 2 (the exit code is not what moved)
PASS: M16 caught: stdout is empty again — S3/S4 are the assertions that can see a dropped machine channel
PASS: M16 surgical: argparse's own diagnosis still reaches stderr
PASS: M16 surgical: the human channel is byte-for-byte unchanged by the mutation (it never had the check)
PASS: M16 surgical 2: and still names the bad argument
PASS: M17 precondition: the existence test occurs exactly once
PASS: M17 caught: real=1 mutant=0 — the mutant lints green over a claim nobody wrote
PASS: M17 surgical: the mutant still counts and classifies the citation — only the missing verdict is gone
PASS: M18 precondition: the series fence occurs exactly once
PASS: M18 caught: real=0 mutant=1 — without the fence a foreign token is a defect
PASS: M18 surgical: the mutant judges exactly the one token the fence had excluded (9.9.4), and still counts 4
PASS: M19 precondition: the citation collection occurs exactly once
PASS: M19 caught: real=1 mutant=0 — nothing was collected, so nothing failed
PASS: M19 surgical: citations_seen is 0 — the scan never ran, which is what distinguishes it from M17
PASS: M20 precondition: the syntax-set test occurs exactly once
PASS: M20 planted: the derivation is defeated, not bypassed
PASS: M20 caught: same exit code, different claim — real names the rule, mutant calls it a parse failure
PASS: M20 surgical: on a real syntax failure the mutant still says exactly what the real tool says
PASS: M21 precondition: the syntax-set test occurs exactly once
PASS: M21 planted: the syntax branch is unreachable, not deleted
PASS: M21 caught: a parse error demoted to a lint rule — U2 is the assertion that sees it
PASS: M21 surgical: on a rule failure the mutant is indistinguishable from the real tool
PASS: M22 precondition: the distinct-path derivation occurs exactly once
PASS: M22 planted: the count is wrong, not the label — same sentence shape
PASS: M22 caught: same exit code, same rule named, wrong count — V1 is the only assertion that sees it
PASS: M22 surgical: on one-failure-per-file the mutant is indistinguishable from the real tool
PASS: M23 precondition: the EXT_LANG needle occurs exactly once
PASS: M23 planted: the dict carries a lang the syntax set never heard of
PASS: M23 caught: the same analyzer says NONE on the tool and names typescript on the mutant
PASS: M23 surgical: rules and syntax unchanged, exactly one lang named unclassified
===============================
repo-lint suite: 398 passed, 1 failed
===============================

real	0m46.708s
user	0m40.213s
sys	0m20.477s
> build · mimo-v2.6-flash-free
$ cd /data/repo && bash tests/test_repo_lint.sh 2>&1 | grep -n -A6 "^FAIL" | head -40
306:FAIL: W5: --help documents the new exit-3 cause (one contract, derived) (missing: no linter wired for it)
307-PASS: W6: sandbox clean again after the section
308-PASS: W6: and its verdict reports nothing failed or unverifiable
309-PASS: M1 precondition: exit-gate expression occurs exactly once
310-PASS: M1 caught: real=1 mutant=0 on a broken commit
311-PASS: M1 surgical: mutant still exits 0 on a clean commit
312-PASS: M2 precondition: --sha rev-parse target occurs exactly once
> build · mimo-v2.6-flash-free
← Edit repo/tools/repo-lint
Index: repo/tools/repo-lint
===================================================================
--- repo/tools/repo-lint
+++ repo/tools/repo-lint
@@ -116,12 +116,12 @@
         on stdout (exit_code 2, error naming the bad argument) - never empty
         stdin for a machine reader - while human mode keeps argparse's usage
         prose on stderr exactly as before
     3 - cannot verify: not a git repo, unknown revision, a linter binary
-        missing/timed out, a language dispatched to with no linter wired for
-        it (EXT_LANG/SHEBANG_LANG can grow an entry before its linter exists),
-        or a docstring section this epilog is built from that is missing or
-        empty (a lint that did not run is never a pass)
+        missing/timed out, a language with no linter wired for it
+        (EXT_LANG/SHEBANG_LANG can grow an entry before its linter does), or a
+        docstring section this epilog is built from that is missing or empty
+        (a lint that did not run is never a pass)
 
 EVERY section above is this tool's single copy of its own prose: the
 argparse epilog is built from these blocks at import time (see
 docstring_section), pairing each short epilog label with the heading of the

> build · mimo-v2.6-flash-free
$ cd /data/repo && bash -n tests/test_repo_lint.sh && bash tests/test_repo_lint.sh 2>&1 | grep -E "^(FAIL|repo-lint suite)" -A4 | head -20; echo "---"; bash tests/test_repo_lint.sh 2>&1 | tail -4
repo-lint suite: 399 passed, 0 failed
===============================
---
PASS: M23 surgical: rules and syntax unchanged, exactly one lang named unclassified
===============================
repo-lint suite: 399 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)
[Sun Sep 27 07:31:39 2026] 127.0.0.1:33684 Accepted
[Sun Sep 27 07:31:39 2026] 127.0.0.1:33684 Closing
[Sun Sep 27 07:31:42 2026] 127.0.0.1:33692 Accepted
[Sun Sep 27 07:31:42 2026] 127.0.0.1:33692 Closing
[Sun Sep 27 07:31:42 2026] 127.0.0.1:33700 Accepted
[Sun Sep 27 07:31:42 2026] 127.0.0.1:33700 Closing
[Sun Sep 27 07:31:42 2026] 127.0.0.1:33704 Accepted
[Sun Sep 27 07:31:42 2026] 127.0.0.1:33704 Closing
[Sun Sep 27 07:31:42 2026] 127.0.0.1:33710 Accepted
[Sun Sep 27 07:31:42 2026] 127.0.0.1:33710 Closing
[Sun Sep 27 07:31:42 2026] 127.0.0.1:33714 Accepted
[Sun Sep 27 07:31:42 2026] 127.0.0.1:33714 Closing
[Sun Sep 27 07:31:57 2026] 127.0.0.1:55704 Accepted
[Sun Sep 27 07:31:57 2026] 127.0.0.1:55704 Closing
[Sun Sep 27 07:31:58 2026] 127.0.0.1:55712 Accepted
[Sun Sep 27 07:31:58 2026] 127.0.0.1:55712 Closing
[Sun Sep 27 07:31:58 2026] 127.0.0.1:55728 Accepted
[Sun Sep 27 07:31:58 2026] 127.0.0.1:55728 Closing
[Sun Sep 27 07:31:58 2026] 127.0.0.1:55742 Accepted
[Sun Sep 27 07:31:58 2026] 127.0.0.1:55742 Closing
[Sun Sep 27 07:31:58 2026] 127.0.0.1:55746 Accepted
[Sun Sep 27 07:31:58 2026] 127.0.0.1:55746 Closing
[Sun Sep 27 07:31:58 2026] 127.0.0.1:55752 Accepted
[Sun Sep 27 07:31:58 2026] 127.0.0.1:55752 Closing
[Sun Sep 27 07:31:58 2026] 127.0.0.1:55756 Accepted
[Sun Sep 27 07:31:58 2026] 127.0.0.1:55756 Closing
[Sun Sep 27 07:31:58 2026] 127.0.0.1:55762 Accepted
[Sun Sep 27 07:31:59 2026] 127.0.0.1:55762 Closing
[Sun Sep 27 07:31:59 2026] 127.0.0.1:55766 Accepted
[Sun Sep 27 07:31:59 2026] 127.0.0.1:55766 Closing
[Sun Sep 27 07:31:59 2026] 127.0.0.1:55782 Accepted
[Sun Sep 27 07:31:59 2026] 127.0.0.1:55782 Closing
[Sun Sep 27 07:31:59 2026] 127.0.0.1:55792 Accepted
[Sun Sep 27 07:31:59 2026] 127.0.0.1:55792 Closing
[Sun Sep 27 07:31:59 2026] 127.0.0.1:55796 Accepted
[Sun Sep 27 07:31:59 2026] 127.0.0.1:55796 Closing
[Sun Sep 27 07:31:59 2026] 127.0.0.1:55810 Accepted
[Sun Sep 27 07:31:59 2026] 127.0.0.1:55810 Closing
[Sun Sep 27 07:31:59 2026] 127.0.0.1:55820 Accepted
[Sun Sep 27 07:31:59 2026] 127.0.0.1:55820 Closing
[Sun Sep 27 07:31:59 2026] 127.0.0.1:55834 Accepted
[Sun Sep 27 07:31:59 2026] 127.0.0.1:55834 Closing
[Sun Sep 27 07:37:49 2026] 127.0.0.1:47342 Accepted
[Sun Sep 27 07:37:49 2026] 127.0.0.1:47342 Closing
[Sun Sep 27 07:37:57 2026] 127.0.0.1:36418 Accepted
[Sun Sep 27 07:37:57 2026] 127.0.0.1:36418 Closing
[Sun Sep 27 07:47:34 2026] 127.0.0.1:37974 Accepted
[Sun Sep 27 07:47:34 2026] 127.0.0.1:37974 Closing
[Sun Sep 27 07:51:09 2026] 127.0.0.1:43548 Accepted
[Sun Sep 27 07:51:09 2026] 127.0.0.1:43548 Closing
[Sun Sep 27 07:52:05 2026] 127.0.0.1:40948 Accepted
[Sun Sep 27 07:52:05 2026] 127.0.0.1:40948 Closing
[Sun Sep 27 07:52:05 2026] 127.0.0.1:40950 Accepted
[Sun Sep 27 07:52:05 2026] 127.0.0.1:40950 Closing
[Sun Sep 27 07:55:17 2026] 127.0.0.1:38486 Accepted
[Sun Sep 27 07:55:17 2026] 127.0.0.1:38486 Closing
[Sun Sep 27 07:55:18 2026] 127.0.0.1:38500 Accepted
[Sun Sep 27 07:55:18 2026] 127.0.0.1:38500 Closing
[Sun Sep 27 08:07:37 2026] 127.0.0.1:36806 Accepted

Generated 2026-09-27 06:07:37 UTC · Gladex.de