Gladex Agent Logs

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

Overview
Run logs608 files, 23.5 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 141 KB 2026-09-27 05:54:02
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)
  hostage to CONCURRENT shifts: mid-edit files make them falsely red.
  repo-lint reads `git show <sha>:<path>` for a pinned revision (default
  HEAD): it reports exactly what a checkout of that commit would contain,
  immune to uncommitted work in the tree, and it can lint any historical
  commit (bisect-style: `repo-lint --sha 219fd8f` still flags that test).

env:
GLADEX_REPO_DIR   repo to lint (default: this script's parent repo,
                  realpath'd so the documented /data/tools symlink
                  resolves to /data/repo - same trap as
                  source-sync-check)
GLADEX_GO_GOPATH  GOPATH for the compile gate (default /tmp/gopath,
                  shared with system-status so the module cache is
                  warm); GOMODCACHE is $GLADEX_GO_GOPATH/pkg/mod
GLADEX_GO_GOCACHE build cache for the compile gate (default /tmp/gocache)
                  The gate always runs with GOPROXY=off: a cold or
                  wiped cache fails CLOSED (exit 3), never offline-red.

examples:
repo-lint                       # lint HEAD, human output
repo-lint --format json         # machine-readable single JSON object
repo-lint --sha 219fd8f         # lint a historical commit
repo-lint --sha 395b9b5         # that commit's broken Go test package
rc=0
=== json help
usage: repo-lint [-h] [--sha SHA] [--format {human,json}] [--timeout TIMEOUT]
                 [--go-timeout GO_TIMEOUT]

Parse-check every lintable file of a COMMITTED tree (git blobs, not the working tree).

options:
  -h, --help            show this help message and exit
  --sha SHA             git revision to lint (default: HEAD); any rev git
                        accepts
  --format {human,json}
                        output format (default: human)
  --timeout TIMEOUT     per-command timeout in seconds (default: 10)
  --go-timeout GO_TIMEOUT
                        timeout for the Go compile gate in seconds (default:
                        120; compile-only, so a real run is a couple of
                        seconds)

exit codes:
0 - every linted file parses cleanly (and the committed Go module compiles
    and every changelog version it cites exists in the committed
    CHANGELOG.md)
1 - at least one committed file fails to parse, a committed Go file does
    not compile, or the committed CHANGELOG.md repeats a version token,
    or a committed file cites a version CHANGELOG.md never wrote
    (see failures[])
2 - invalid arguments; under `--format json` that is still ONE JSON object
    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, or a docstring section this epilog is built from
    that is missing or empty (a lint that did not run is never a pass)

languages:
.php php -l | .sh bash -n | .py compile()
.go gofmt (parse only; unformatted != broken)
.json json.loads
Extensionless files are dispatched by shebang (python/bash/sh); binaries
(NUL byte in the first 8 KiB), symlinks, submodule gitlinks, empty files
and unsupported types are COUNTED and reported under skipped - never
silently ignored.

go compile gate:
gofmt runs on STDIN with no file args, so it exits 0 for anything
PARSEABLE - a parse gate is structurally blind to a file that parses
but does not build. On 2026-09-24 commit 395b9b5 shipped
app/src/go/cmd/gladex/commands/status_test.go with `import "json"`:
repo-lint answered "all 105 linted file(s) parse clean (exit 0)" for
that exact commit while `go test` could not build the package at all
(`package json is not in std ... FAIL [setup failed]`). It sat in main
for an hour because NO check in this repo compiled Go.
So: when the committed tree contains a go.mod, the Go module is
REBUILT FROM GIT BLOBS (never the worktree) into a temp dir outside
the repo and compiled with
    go test -exec=true ./... -run '^$' -count=1
i.e. every test binary is BUILT and LINKED but never executed - a
compile, not a test run. Results are attributed ONLY to files this
commit actually ships: a failure naming a dependency, the go toolchain
or a temp path is "cannot verify" (exit 3), never a verdict on a file
we did not write. go.mod/go.sum count as module files; a .go tree with
no go.mod is not a module and is reported as such, not guessed.

changelog version gate:
`version` is the identity /api/changelog hands its consumers, and
several identities append to CHANGELOG.md, so a remembered rule cannot
hold: on 2026-09-25 commit 6c98b18 published `## [0.4.49]` at 11:07 and
6e61874 appended a SECOND `## [0.4.49]` at 13:17. 55 entries yielded 54
keys - one entry unreachable BY VERSION, the victim decided by file
order - and every suite stayed green, because the suite's own reference
parse carried the same duplicate (both sides wrong, equally) while its
keyed lookups only targeted 0.4.11/0.4.12. The guard existed as a TEST;
nothing at run time checked the commit. So the COMMITTED CHANGELOG.md
blob is scanned too: every repeated `## [x.y.z]` token is a failure
(exit 1) blamed on the LATER heading's line, with "first at line N"
pointing at the earlier one. A `##` heading that does not parse as a
version is COUNTED (`unparseable`), never entered and never a verdict -
the changelog API skips such headings too. A tree with no CHANGELOG.md
is `attempted: false, reason: no_changelog`: not a pass for a check
that never ran, and not a failure either.
The same blob is also the RULEBOOK for prose elsewhere in the tree: a
committed file that cites `[x.y.z]` in a series this CHANGELOG has an
entry for, when that exact token is not one of its headings, is a
failure (exit 1) blamed on the citing file's line - a claim that
version N exists cannot outlive the entry nobody wrote. The incident:
on 2026-09-26 a test header cited a version no heading had yet, and
nothing could notice, because prose existence was checked by nobody.
SCOPE is the judgment call: the rule governs only series the changelog
itself has headings for (its `series` list), because committed test
fixtures are full of version-shaped tokens that are not ours - a
throwaway repo's `## [1.0.0]` and the suite's own `[9.9.9]` are not
citations of this file. A citation in a series no heading belongs to
(a first 0.5.0 written before the first 0.5 entry) is therefore out
of scope by construction: counted in `citations_seen`, never a verdict.
Citations are collected from EVERY committed text blob, BEFORE the
extension dispatch, so `.md` prose that is never linted as code is in
scope too - and with no CHANGELOG.md to compare against, the tokens are
still counted while nothing is judged.

reads GIT BLOBS:
  Every other check in this repo lints files ON DISK, which is blind to the
  state of the commit itself. On 2026-09-24 a shift auto-commit landed
  tests/test_mailbox_a11y.php with a PHP parse error (unexpected "," on line
  208, commit 219fd8f) while the working tree was ALREADY fixed - HEAD was
  broken and every worktree-based suite still passed. Disk lints are also
  hostage to CONCURRENT shifts: mid-edit files make them falsely red.
  repo-lint reads `git show <sha>:<path>` for a pinned revision (default
  HEAD): it reports exactly what a checkout of that commit would contain,
  immune to uncommitted work in the tree, and it can lint any historical
  commit (bisect-style: `repo-lint --sha 219fd8f` still flags that test).

env:
GLADEX_REPO_DIR   repo to lint (default: this script's parent repo,
                  realpath'd so the documented /data/tools symlink
                  resolves to /data/repo - same trap as
                  source-sync-check)
GLADEX_GO_GOPATH  GOPATH for the compile gate (default /tmp/gopath,
                  shared with system-status so the module cache is
                  warm); GOMODCACHE is $GLADEX_GO_GOPATH/pkg/mod
GLADEX_GO_GOCACHE build cache for the compile gate (default /tmp/gocache)
                  The gate always runs with GOPROXY=off: a cold or
                  wiped cache fails CLOSED (exit 3), never offline-red.

examples:
repo-lint                       # lint HEAD, human output
repo-lint --format json         # machine-readable single JSON object
repo-lint --sha 219fd8f         # lint a historical commit
repo-lint --sha 395b9b5         # that commit's broken Go test package
rc=0
> build · mimo-v2.6-flash-free
$ cd /data/repo && grep -n "LINE_RE\|cmd = \|def lint\|errors\.append\|exit_code\|cannot verify\|_SYNTAX_LANGS\|EXT_LANG\|SHEBANG_LANG" tools/repo-lint | head -80
41:    or a temp path is "cannot verify" (exit 3), never a verdict on a file
116:        on stdout (exit_code 2, error naming the bad argument) - never empty
119:    3 - cannot verify: not a git repo, unknown revision, a linter binary
159:main() reports it through die() with exit_code 2, so "you typed a bad flag"
188:EXT_LANG = {
197:SHEBANG_LANG = {
205:LINE_RE = {
215:# we cannot attribute to a committed file is "cannot verify", not a verdict.
321:def die(p, repo, message, sha_requested, args_format, exit_code=EXIT_CANNOT):
332:    `exit_code` exists for ONE caller: a usage error is the same non-verdict
358:                    "exit_code": exit_code,
365:    return exit_code
525:    printing - main() turns the exception into die()'s object with exit_code
670:    for name, lang in SHEBANG_LANG.items():
676:def lint(lang, blob, path, timeout):
707:        cmd = {
737:        m = LINE_RE[lang].search(msg)
763:                       broken toolchain (exit 3 - cannot verify, never a
826:        cmd = ["go", "test", "-exec=true", "./...", "-run", "^$", "-count=1"]
858:                # path): we have no right to a verdict -> cannot verify.
1043:# promote-dev-to-prod calls `_SYNTAX_LANGS` when it words the refusal this
1048:_SYNTAX_LANGS = frozenset({"php", "bash", "python", "json", "go", "go-compile"})
1051:def _result_line(failures, exit_code, n_linted) -> str:
1089:    if all(k in _SYNTAX_LANGS for k in kinds):
1092:            f"(exit {exit_code})"
1096:        f"({', '.join(kinds)}) (exit {exit_code})"
1141:            exit_code=EXIT_USAGE,
1149:    # exit 3 (cannot verify), distinct from 1 (verified and broken). No
1210:            errors.append({"path": path, "lang": None, "error": f"git failed: {e}"})
1213:            errors.append({"path": path, "lang": None, "error": str(e)})
1237:        lang = EXT_LANG.get(ext)
1260:            errors.append(info)
1308:    exit_code = 3 if errors else (1 if failures else 0)
1327:                    "ok": exit_code == 0,
1328:                    "exit_code": exit_code,
1333:        return exit_code
1361:            f"result: cannot verify - {len(errors)} lint error(s) "
1362:            f"(exit {exit_code})"
1365:        print(_result_line(failures, exit_code, n_linted))
1366:    return exit_code
> build · mimo-v2.6-flash-free
→ Read repo/tools/repo-lint [offset=660, limit=120]
→ Read repo/tools/repo-lint [offset=1180, limit=140]
> 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:33680 Accepted
[Sun Sep 27 07:31:39 2026] 127.0.0.1:33680 Closing
[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

Generated 2026-09-27 05:55:18 UTC · Gladex.de