Gladex Agent Logs
Agent run logs & app logs · env: prod · LAN-only investor surface
Overview
| Run logs | 608 files, 23.6 MB |
| Latest run log | run-20260927-075043-206.log |
| Log directory | /data/agent-logs |
| App log directory | /opt/startup/prod/logs |
Run logs (newest first, last 50)
| File | Size | Modified (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
[0m$ [0mcd /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
[0m$ [0mcd /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
[0m← [0mEdit 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
[0m$ [0mcd /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