Gladex Agent Logs

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

Overview
Run logs833 files, 40.6 MB
Latest run logrun-20261001-050850-431.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20261001-050850-431.log 228 KB 2026-10-01 03:26:41
run-20261001-042252-430.log 198 KB 2026-10-01 02:58:43
run-20261001-032127-429.log 327 KB 2026-10-01 02:12:46
run-20261001-022005-428.log 263 KB 2026-10-01 01:11:21
run-20261001-020022-427.log 205 KB 2026-10-01 00:09:58
run-20261001-015015-426.log 153 B 2026-09-30 23:50:16
run-20261001-014008-425.log 153 B 2026-09-30 23:40:09
run-20261001-013001-424.log 153 B 2026-09-30 23:30:02
run-20261001-011954-423.log 153 B 2026-09-30 23:19:55
run-20261001-010947-422.log 153 B 2026-09-30 23:09:48
run-20261001-005940-421.log 153 B 2026-09-30 22:59:41
run-20261001-004933-420.log 153 B 2026-09-30 22:49:34
run-20261001-003926-419.log 153 B 2026-09-30 22:39:27
run-20261001-002920-418.log 190 B 2026-09-30 22:29:20
run-20261001-001913-417.log 153 B 2026-09-30 22:19:13
run-20261001-000906-416.log 153 B 2026-09-30 22:09:07
run-20260930-231805-415.log 582 KB 2026-09-30 21:59:00
run-20260930-223504-414.log 194 KB 2026-09-30 21:07:59
run-20260930-212614-413.log 270 KB 2026-09-30 20:24:58
run-20260930-201407-412.log 423 KB 2026-09-30 19:16:08
run-20260930-184629-411.log 463 KB 2026-09-30 18:04:01
run-20260930-165104-410.log 325 KB 2026-09-30 16:36:29
run-20260930-161443-409.log 189 KB 2026-09-30 14:41:04
run-20260930-160441-408.log 153 B 2026-09-30 14:04:43
run-20260930-155440-407.log 153 B 2026-09-30 13:54:41
run-20260930-154440-406.log 153 B 2026-09-30 13:44:40
run-20260930-153439-405.log 153 B 2026-09-30 13:34:40
run-20260930-152438-404.log 190 B 2026-09-30 13:24:39
run-20260930-151438-403.log 190 B 2026-09-30 13:14:38
run-20260930-150437-402.log 153 B 2026-09-30 13:04:37
run-20260930-145436-401.log 153 B 2026-09-30 12:54:37
run-20260930-144435-400.log 153 B 2026-09-30 12:44:36
run-20260930-143435-399.log 190 B 2026-09-30 12:34:35
run-20260930-142434-398.log 153 B 2026-09-30 12:24:35
run-20260930-141433-397.log 153 B 2026-09-30 12:14:34
run-20260930-140433-396.log 153 B 2026-09-30 12:04:33
run-20260930-135432-395.log 153 B 2026-09-30 11:54:33
run-20260930-134431-394.log 153 B 2026-09-30 11:44:32
run-20260930-133431-393.log 190 B 2026-09-30 11:34:31
run-20260930-132430-392.log 153 B 2026-09-30 11:24:31
run-20260930-131429-391.log 153 B 2026-09-30 11:14:30
run-20260930-130429-390.log 153 B 2026-09-30 11:04:29
run-20260930-125428-389.log 153 B 2026-09-30 10:54:29
run-20260930-124427-388.log 153 B 2026-09-30 10:44:28
run-20260930-123427-387.log 153 B 2026-09-30 10:34:27
run-20260930-122426-386.log 153 B 2026-09-30 10:24:27
run-20260930-121425-385.log 153 B 2026-09-30 10:14:26
run-20260930-120425-384.log 153 B 2026-09-30 10:04:25
run-20260930-115424-383.log 153 B 2026-09-30 09:54:25
run-20260930-114423-382.log 153 B 2026-09-30 09:44:24
Tail — run-20261001-050850-431.log (last 200 lines)
  "$(sget_live ec_run)" "$(sget_live ec_ok)"
assert_ge "E5 non-vacuity: at least 10 bad-argument probes actually ran" 10 "$(sget_live badarg_run)"
assert_not_contains "E6 live tree: no badarg_* VIOLATION line" "VIOLATION badarg_" "$LIVE_OUT"

# ==========================================================================
# F — (63) the registry's full-regression figure has a reader now. Six lines
# in tools/REGISTRY.md quote a suite total; the one that reads as current
# said 40 while `regression-run --list` discovered 59, and no suite in the
# tree read either side. F asserts the live tree (via LIVE_OUT, never $OUT —
# every control in C reassigns it), C16-C20 plant one defect per kind in a
# sandbox copy. Granularity is declared: the SUITE COUNT is checked against
# the tool, the assertion totals beside it are dated prose, and a dated
# figure is allowed to be old because that is what history means.
# ==========================================================================
assert_contains "F0 the live snapshot carries the figure keys" "fig_disc=" "$LIVE_OUT"
assert_ge "F1 non-vacuity: discovery found a real suite count (an unread count is never a pass)" \
  10 "$(sget_live fig_disc)"
assert_eq "F2 exactly one Live line carries a suite figure" 1 "$(sget_live fig_live)"
assert_eq "F3 and that figure equals what regression-run --list discovers" \
  "$(sget_live fig_disc)" "$(sget_live fig_claim)"
assert_eq "F4 no suite figure anywhere in the registry is undated" 0 "$(sget_live fig_undated)"
assert_eq "F5 and nothing is stale, duplicate or missing" 0 "$(sget_live fig_stale)"
assert_not_contains "F6 live tree: no figure_* VIOLATION line" "VIOLATION figure_" "$LIVE_OUT"
# (83) both counts, so a red can name the side that moved. F8 is the
# non-vacuity half: a repository that could not be read answers `na`, and `na`
# is not a number the floor can be evaluated against — an input that was not
# read is never a pass, so that case reddens here rather than staying silent.
assert_contains "F7 the live snapshot carries the COMMITTED count as well as the discovered one (83)" \
  "fig_head=" "$LIVE_OUT"
assert_ge "F8 non-vacuity: the committed side was really read, not reported as na (83)" \
  10 "$(sget_live fig_head)"

# ==========================================================================
# G — (65) a documented exit 2 is probed for a bad VALUE, not only for an
# unknown flag: E's probe used a name no getopt table could carry, so a tool
# could pass E while ignoring the value of a flag it defines — which is the
# argv a caller actually types. Scope is derived, never hand-listed: `--format`
# from the tool's own --help (17 tools today), `--timeout` from the table's own
# exit-2 bullet (7 tables since (71), 6 before it), and (69) a PORT metavar from
# the tool's own --help (4 flags across 3 tools today — the metavar IS the scope,
# because a port is always an integer 1-65535). Every derived list is asserted
# for non-vacuity, because a derivation that matched nothing would otherwise
# read as "every bad value refused" with zero probes. Reads LIVE_OUT, never
# $OUT — every control in C reassigns it. G20–G23 add the (77) subject, which
> build · mimo-v2.6-flash-free
Now implementing item **(98)**. First the header and declaration table:
$ cd /data/repo && sed -n '2160,2172p' tests/test_registry_coverage.sh
|| fail "C31i VIOLATION figure_stale $disc31"
assert_eq "C31j exactly one violation - the plant, and nothing else" 1 "$(sget violations)"
assert_eq "C31k the DISCOVERED count moved: it counts the checkout" \
  "$((disc31 + 1))" "$(sget fig_disc)"
assert_eq "C31l the COMMITTED count did not: it counts the repository" \
  "$disc31" "$(sget fig_head)"
assert_eq "C31m and the report names the side the claim agrees with" "head" "$(sget fig_src)"
assert_contains "C31n the basis is printed where the reader sees the red, not only in the counters" \
  "DIAG figure_basis side=head claim=$disc31 head=$disc31 disc=$((disc31 + 1))" "$OUT"

# ==========================================================================
# D — this suite's own argv surface: the rule it enforces for everyone else.
# ==========================================================================
> build · mimo-v2.6-flash-free
← Edit repo/tests/test_registry_coverage.sh
Index: repo/tests/test_registry_coverage.sh
===================================================================
--- repo/tests/test_registry_coverage.sh
+++ repo/tests/test_registry_coverage.sh
@@ -241,13 +241,24 @@
 # exist to be compared.
 #
 # 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;
-# the sandbox is trap-removed on exit. No network, no sqlite, no writes outside
-# the sandbox, the `--help` probes are the same bounded `timeout 20` in both
-# modes, and the bad-argument probes are bounded `timeout 5` — a tool that must
-# reach the network (or hang) to discover that an argument is nonsense is the
-# defect E is looking for, so the short bound is the assertion, not a caveat.
+# the sandbox is trap-removed on exit. No EXTERNAL network, no sqlite, no
+# writes outside the sandbox, the `--help` probes are the same bounded
+# `timeout 20` in both modes, and the bad-argument probes are bounded
+# `timeout 5` — a tool that must reach the network (or hang) to discover that
+# an argument is nonsense is the defect E is looking for, so the short bound is
+# the assertion, not a caveat. One declared exception, added by queue item
+# (98): the three declared-contract probes below are bounded `timeout 10` and
+# one of them (`smtp-relay-probe`) opens a socket to `127.0.0.1:25` — loopback
+# only, never the internet, and deliberately scoped to that single endpoint so
+# the tool's own default set (which includes the VPS path `77.90.15.49:25`) is
+# never dialled from here. It needs the container's own Postfix (`enabled`,
+# `active`) to accept an unauthenticated relay from 127.0.0.0/8, which is what
+# `mynetworks` says by design and what the tool's own `DEFAULT_EXPECT_OPEN`
+# already assumes; a run where that is not true reports `want=1 got=3` on the
+# `DIAG declared_probe` line below, which names the dependency rather than
+# mislabelling it as a contract break.
 #
 # Usage: bash tests/test_registry_coverage.sh [--help]
 # Exit:  0 all assertions pass, 1 one or more failed, 2 bad arguments.
 set -u

> build · mimo-v2.6-flash-free
← Edit repo/tests/test_registry_coverage.sh
Index: repo/tests/test_registry_coverage.sh
===================================================================
--- repo/tests/test_registry_coverage.sh
+++ repo/tests/test_registry_coverage.sh
@@ -239,8 +239,45 @@
 # moved — not for a second red. C31 is the control, and it is the only one in
 # this file that builds a repository (`git init` + commit) so that two counts
 # exist to be compared.
 #
+# Queue item (98), [0.4.150] — the THREE pairs (73) had to declare out of its
+# value-probe classes, because each metavar's type rejects a value the tool
+# then answers with something other than 2: `repo-lint --sha
+# not-a-hex-digest` → **3**, `immich-roundtrip --email
+# not-an-email-address` → **3**, `smtp-relay-probe --expect-open
+# not-an-endpoint` → **1**, all three measured 2026-09-30 and written down in
+# tools/REGISTRY.md as prose. Writing them down was (75)/(76)'s rule applied to
+# exclusion — a hole nobody can see cannot be red — but prose is not a
+# contract: nothing in the tree asked whether those codes were still true, so
+# repo-lint collapsing "a lint that did not run" into exit 0 would have left
+# every assertion in this file green. That is the whole defect. The three now
+# live in ONE table inside `run_check()` (`DECLARED_PAIRS`, `tool|flag|
+# expected-exit|argv`), each pair is probed with its own type-invalid value,
+# and the measured code must EQUAL the declared one — no tolerance, no
+# "non-2": an exact code is what a machine consumer reads, so it is what this
+# asserts. On mismatch the child prints `DIAG declared_probe <pair> want=<n>
+# got=<n>` *and* the usual `VIOLATION badvalue_contract`, because a red that
+# says only "some value probe failed" would send a reader hunting through six
+# classes to find one tool. The class is non-vacuous the same way every other
+# class here is: zero declared pairs in a tree that is supposed to carry three
+# is an `ERROR` (exit 3), never a pass, and the parent holds the count to
+# exactly **3** so a pair that quietly lost its flag reddens instead of
+# shrinking the scope. `cl_other` — the pairs with NO type-invalid value at
+# all, because `PATH`/`DIR`/`ENV`/`REPO`… accept any string — keeps its name
+# and drops by three (25 → **22**), and the partition gains a sixth bucket.
+# Candidate (b) in the item ("repair the tools to exit 2") was measured and
+# REJECTED rather than skipped: repo-lint's own table defines 3 as "cannot
+# verify: unknown revision" and its own suite pins `--sha deadbeef123` → 3
+# (`R16` asserts the refusal STILL exits 3), while its `--help` promises "any
+# rev git accepts", so `not-a-hex-digest` is an unresolvable revision and not
+# a type error — exiting 2 there would be the wrong contract, and would break
+# `--sha main` if it were implemented as a hex check. `immich-roundtrip`'s 3
+# is measured to hold EITHER way (service up → auth failed, service down →
+# "service unreachable", both 3), so the probe is service-independent by
+# construction rather than by luck. Only (a) closes the item without touching
+# a tool or a second suite.
+#
 # 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;
 # the sandbox is trap-removed on exit. No EXTERNAL network, no sqlite, no
 # writes outside the sandbox, the `--help` probes are the same bounded

> build · mimo-v2.6-flash-free
← Edit repo/tests/test_registry_coverage.sh
Index: repo/tests/test_registry_coverage.sh
===================================================================
--- repo/tests/test_registry_coverage.sh
+++ repo/tests/test_registry_coverage.sh
@@ -353,9 +353,10 @@
   local port_n=0 portv_ok=0 portm_ok=0 miss_n=0 missm_ok=0
   local conv_pairs=0 conv_extra=0
   local syn_n=0 syn_ok=0 synp_n=0 synp_ok=0
   local cl_scope=0 cl_fmt=0 cl_port=0 cl_enum=0 cl_enum_ok=0
-  local cl_num=0 cl_num_ok=0 cl_other=0
+  local cl_num=0 cl_num_ok=0 cl_other=0 cl_declared=0 cl_declared_ok=0
+  local dline="" dcode="" dargs="" drc=0
   local fig_disc="" fig_live_n=0 fig_claim="" figbad="" fig_list="" fig_lrc=0
   local fig_undated_n=0 fig_stale_n=0
   # (83) the second count, and which side the claim agrees with.
   local fig_head="na" fig_src="na"

> build · mimo-v2.6-flash-free
← Edit repo/tests/test_registry_coverage.sh
Index: repo/tests/test_registry_coverage.sh
===================================================================
--- repo/tests/test_registry_coverage.sh
+++ repo/tests/test_registry_coverage.sh
@@ -369,8 +369,21 @@
   # The one deliberately-unrecognised flag both probes use. Every tool must
   # reject it; no tool defines it (a name no getopt table could carry).
   local bad_flag="--regcov-not-a-real-flag"
 
+  # (98) the declared-contract table: `tool|flag|expected-exit|argv`, one line
+  # per pair whose METAVAR type rejects a value its tool answers with a
+  # documented non-2 code. The argv is the exact argv the contract was
+  # measured with, so the probe can never drift from the claim; the fourth
+  # field may carry extra arguments, and `smtp-relay-probe`'s carries
+  # `127.0.0.1:25` so that probe dials the container's own Postfix and never
+  # the tool's default set (which includes the VPS path). Read by a single
+  # `grep -m1 "^<tool>|<flag>|"`, so a pair the table does not name falls
+  # through to `cl_other` exactly as it did before this item existed.
+  local DECLARED_PAIRS='repo-lint|--sha|3|not-a-hex-digest
+immich-roundtrip|--email|3|not-an-email-address
+smtp-relay-probe|--expect-open|1|not-an-endpoint 127.0.0.1:25'
+
   if [ ! -d "$tools_dir" ]; then
     echo "ERROR missing_tools_dir $tools_dir"; return 3
   fi
   if [ ! -f "$registry" ]; then

> 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)
[Thu Oct  1 04:56:06 2026] 127.0.0.1:45684 Accepted
[Thu Oct  1 04:56:06 2026] 127.0.0.1:45684 Closing
[Thu Oct  1 04:56:06 2026] 127.0.0.1:45688 Accepted
[Thu Oct  1 04:56:06 2026] 127.0.0.1:45688 Closing
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44758 Accepted
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44758 Closing
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44764 Accepted
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44764 Closing
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44772 Accepted
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44772 Closing
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44774 Accepted
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44774 Closing
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44778 Accepted
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44778 Closing
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44792 Accepted
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44792 Closing
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44798 Accepted
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44798 Closing
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44806 Accepted
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44806 Closing
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44814 Accepted
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44814 Closing
[Thu Oct  1 04:56:17 2026] 127.0.0.1:44816 Accepted
[Thu Oct  1 04:56:18 2026] 127.0.0.1:44816 Closing
[Thu Oct  1 04:56:18 2026] 127.0.0.1:44830 Accepted
[Thu Oct  1 04:56:18 2026] 127.0.0.1:44830 Closing
[Thu Oct  1 04:56:18 2026] 127.0.0.1:44844 Accepted
[Thu Oct  1 04:56:18 2026] 127.0.0.1:44844 Closing
[Thu Oct  1 04:56:18 2026] 127.0.0.1:44850 Accepted
[Thu Oct  1 04:56:18 2026] 127.0.0.1:44850 Closing
[Thu Oct  1 04:56:59 2026] 127.0.0.1:56966 Accepted
[Thu Oct  1 04:56:59 2026] 127.0.0.1:56966 Closing
[Thu Oct  1 04:57:29 2026] 127.0.0.1:45548 Accepted
[Thu Oct  1 04:57:29 2026] 127.0.0.1:45548 Closing
[Thu Oct  1 05:03:39 2026] 127.0.0.1:34924 Accepted
[Thu Oct  1 05:03:39 2026] 127.0.0.1:34924 Closing
[Thu Oct  1 05:09:53 2026] 127.0.0.1:53704 Accepted
[Thu Oct  1 05:09:53 2026] 127.0.0.1:53704 Closing
[Thu Oct  1 05:09:53 2026] 127.0.0.1:53712 Accepted
[Thu Oct  1 05:09:53 2026] 127.0.0.1:53712 Closing
[Thu Oct  1 05:09:53 2026] 127.0.0.1:53726 Accepted
[Thu Oct  1 05:09:53 2026] 127.0.0.1:53726 Closing
[Thu Oct  1 05:09:53 2026] 127.0.0.1:53742 Accepted
[Thu Oct  1 05:09:53 2026] 127.0.0.1:53742 Closing
[Thu Oct  1 05:09:53 2026] 127.0.0.1:53758 Accepted
[Thu Oct  1 05:09:53 2026] 127.0.0.1:53758 Closing
[Thu Oct  1 05:09:53 2026] 127.0.0.1:53766 Accepted
[Thu Oct  1 05:09:53 2026] 127.0.0.1:53766 Closing
[Thu Oct  1 05:09:53 2026] 127.0.0.1:53780 Accepted
[Thu Oct  1 05:09:54 2026] 127.0.0.1:53780 Closing
[Thu Oct  1 05:09:54 2026] 127.0.0.1:53796 Accepted
[Thu Oct  1 05:09:54 2026] 127.0.0.1:53796 Closing
[Thu Oct  1 05:09:54 2026] 127.0.0.1:53798 Accepted
[Thu Oct  1 05:09:54 2026] 127.0.0.1:53798 Closing
[Thu Oct  1 05:09:54 2026] 127.0.0.1:41328 Accepted
[Thu Oct  1 05:09:54 2026] 127.0.0.1:41328 Closing
[Thu Oct  1 05:26:46 2026] 127.0.0.1:44790 Accepted
[Thu Oct  1 05:26:46 2026] 127.0.0.1:44790 Closing
[Thu Oct  1 05:26:46 2026] 127.0.0.1:44804 Accepted

Generated 2026-10-01 03:26:46 UTC · Gladex.de