Gladex Agent Logs

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

Overview
Run logs1641 files, 123.9 MB
Latest run logrun-20261016-013053-1175.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20261016-013053-1175.log 493 KB 2026-10-16 00:23:29
run-20261016-005916-1174.log 140 KB 2026-10-15 23:20:42
run-20261015-233037-1173.log 286 KB 2026-10-15 22:49:05
run-20261015-223228-1172.log 323 KB 2026-10-15 21:20:26
run-20261015-214009-1171.log 189 KB 2026-10-15 20:22:17
run-20261015-203630-1170.log 237 KB 2026-10-15 19:29:57
run-20261015-200016-1169.log 117 KB 2026-10-15 18:26:20
run-20261015-192507-1168.log 243 KB 2026-10-15 17:50:05
run-20261015-180909-1167.log 298 KB 2026-10-15 17:14:55
run-20261015-160058-1166.log 530 KB 2026-10-15 15:58:58
run-20261015-141814-1165.log 370 KB 2026-10-15 13:50:48
run-20261015-120445-1164.log 767 KB 2026-10-15 12:08:04
run-20261015-100121-1163.log 543 KB 2026-10-15 09:54:35
run-20261015-070843-1162.log 1.2 MB 2026-10-15 07:51:10
run-20261015-054521-1161.log 416 KB 2026-10-15 04:58:33
run-20261015-033336-1160.log 684 KB 2026-10-15 03:35:11
run-20261015-020624-1159.log 212 KB 2026-10-15 01:23:26
run-20261015-015612-1158.log 154 B 2026-10-14 23:56:13
run-20261015-014600-1157.log 191 B 2026-10-14 23:46:01
run-20261015-013549-1156.log 191 B 2026-10-14 23:35:50
run-20261015-012537-1155.log 154 B 2026-10-14 23:25:38
run-20261015-011525-1154.log 191 B 2026-10-14 23:15:26
run-20261015-010513-1153.log 154 B 2026-10-14 23:05:14
run-20261015-005502-1152.log 154 B 2026-10-14 22:55:03
run-20261015-004450-1151.log 154 B 2026-10-14 22:44:51
run-20261015-003439-1150.log 154 B 2026-10-14 22:34:40
run-20261015-002427-1149.log 154 B 2026-10-14 22:24:28
run-20261015-001416-1148.log 154 B 2026-10-14 22:14:17
run-20261015-000405-1147.log 191 B 2026-10-14 22:04:06
run-20261014-235353-1146.log 191 B 2026-10-14 21:53:54
run-20261014-234342-1145.log 191 B 2026-10-14 21:43:43
run-20261014-233330-1144.log 154 B 2026-10-14 21:33:31
run-20261014-232318-1143.log 154 B 2026-10-14 21:23:19
run-20261014-231307-1142.log 154 B 2026-10-14 21:13:08
run-20261014-230255-1141.log 154 B 2026-10-14 21:02:56
run-20261014-225244-1140.log 154 B 2026-10-14 20:52:45
run-20261014-222900-1139.log 142 KB 2026-10-14 20:42:33
run-20261014-212813-1138.log 571 KB 2026-10-14 20:18:50
run-20261014-201639-1137.log 370 KB 2026-10-14 19:18:02
run-20261014-174154-1136.log 835 KB 2026-10-14 18:06:28
run-20261014-170319-1135.log 320 KB 2026-10-14 15:31:41
run-20261014-161418-1134.log 270 KB 2026-10-14 14:53:09
run-20261014-150444-1133.log 323 KB 2026-10-14 14:04:07
run-20261014-133301-1132.log 340 KB 2026-10-14 12:54:34
run-20261014-124552-1131.log 194 KB 2026-10-14 11:22:49
run-20261014-103913-1130.log 525 KB 2026-10-14 10:35:42
run-20261014-082946-1129.log 630 KB 2026-10-14 08:29:02
run-20261014-061713-1128.log 454 KB 2026-10-14 06:19:36
run-20261014-052042-1127.log 96 KB 2026-10-14 04:07:02
run-20261014-044319-1126.log 200 KB 2026-10-14 03:10:30
Tail — run-20261016-013053-1175.log (last 200 lines)
          # All three are bounded `timeout 5`: validation before any I/O, the
          # same assertion E's bad-flag probe makes.
          if printf '%s\n' "$helpout" | grep -q -- '--format'; then
            fmt_n=$((fmt_n + 1))
            timeout 5 "$tools_dir/$b" --format xml >/dev/null 2>&1
            if [ $? -eq 2 ]; then
              fmtv_ok=$((fmtv_ok + 1))
            else
              badval="$badval $b:format-value"
            fi
            timeout 5 "$tools_dir/$b" --format >/dev/null 2>&1
> build · mimo-v2.6-flash-free
Now I have the full picture. Writing the two registry sections:
$ cd /data/repo && tail -3 tools/REGISTRY.md
figure is claimed here, by the decision `[0.4.354]` recorded: the assertion
counts are quoted in CHANGELOG, never as a claim in a section
`tests/test_registry_figure_readers.sh` would have to read.
> build · mimo-v2.6-flash-free
$ cd /data/repo && grep -n "fig_claim=\|fig_live_n=\|fig_disc=\|figure_live\|fig_live" tests/test_registry_coverage.sh | head -20 && sed -n '/# ---- (63)/,/fig_claim/p' tests/test_registry_coverage.sh | head -60
687:  local fig_disc="" fig_live_n=0 fig_claim="" figbad="" fig_list="" fig_lrc=0
1386:  fig_disc=$(printf '%s\n' "$fig_list" \
1401:    fig_live_n=$((fig_live_n + 1))
1402:    fig_claim=$(printf '%s\n' "$line" | grep -oE '[0-9]+ suites' \
1451:  if [ "$fig_live_n" -eq 0 ]; then
1453:  elif [ "$fig_live_n" -gt 1 ]; then
1634:  echo "SUMMARY tools=$tools_n registered=$reg_n test_sections=$test_n help_run=$help_run help_ok=$help_ok badarg_run=$arg_run badarg_ok=$arg_ok ec_run=$ec_run ec_ok=$ec_ok fmt_n=$fmt_n fmt_value_ok=$fmtv_ok fmt_missing_ok=$fmtm_ok timeout_n=$to_n timeout_ok=$to_ok port_n=$port_n port_value_ok=$portv_ok port_missing_ok=$portm_ok miss_n=$miss_n miss_missing_ok=$missm_ok conv_pairs=$conv_pairs conv_extra=$conv_extra fig_disc=$fig_disc fig_live=$fig_live_n fig_claim=${fig_claim:-none} fig_stale=$fig_stale_n fig_undated=$fig_undated_n fig_head=$fig_head fig_src=$fig_src syn_n=$syn_n syn_ok=$syn_ok synp_n=$synp_n synp_ok=$synp_ok cl_scope=$cl_scope cl_fmt=$cl_fmt cl_port=$cl_port cl_enum=$cl_enum cl_enum_ok=$cl_enum_ok cl_num=$cl_num cl_num_ok=$cl_num_ok cl_declared=$cl_declared cl_declared_ok=$cl_declared_ok cl_declared_seen=${cl_declared_seen:-none} cl_other=$cl_other live_re_sites=$live_re_sites gloss_sites=$gloss_sites fmt_claim_pairs=$fmtcp fmt_claim_mismatch=$fmtcm allflag_pairs=$afcp allflag_mismatch=$afcm allflag_numeq=$afnq violations=$v"
3171:  1 "$(sget fig_live)"
3211:assert_eq "C35g fig_live counted both claims" 2 "$(sget fig_live)"
3305:  1 "$(sget fig_live)"
4325:assert_contains "F0 the live snapshot carries the figure keys" "fig_disc=" "$LIVE_OUT"
4328:assert_eq "F2 exactly one Live line carries a suite figure" 1 "$(sget_live fig_live)"
  # ---- (63) the registry's full-regression figure: dated, singular, TRUE ----
  # This file quotes the regression total in six places; only ONE of them may
  # be read as "the regression is green at N suites today", and until this
  # section none of the six had a reader: the `- Live:` bullet said 40 suites
  # while `regression-run --list` discovered 59. The rule has two halves:
  #   * exactly one `- Live:` line carries a suite figure, and its count must
  #     equal what the TOOL discovers (`regression-run --list` — the same
  #     `discover()` the run uses, so there is one definition of "suite");
  #   * every other `<N> suites` figure must carry a YYYY-MM-DD on its own
  #     line, i.e. it is attributable history rather than a present claim —
  #     and, since queue item (119), so must every numeric `Live` claim line,
  #     because an undated "live" claim is indistinguishable from a stale one;
  #     and, since queue item (120), "claim line" is read from `$LIVE_RE`
  #     rather than spelled `^- Live` at each use site, so an indented
  #     continuation of a bullet is in scope as its parent is.
  # Granularity is declared, not implied (compare-or-declare, as (54)/(56)):
  # for the STALENESS rule only the SUITE COUNT is machine-checked — the
  # assertion totals next to it are dated prose — while for the UNDATED rule
  # only the DATE is checked, never the number on the line: a dated figure is
  # allowed to be old, because that is what "history" means.
  fig_list=$(timeout 20 "$tools_dir/regression-run" --list 2>&1)
  fig_lrc=$?
  fig_disc=$(printf '%s\n' "$fig_list" \
    | sed -n 's/^result: \([0-9][0-9]*\) suite(s) discovered.*/\1/p' | head -1)
  case "$fig_disc" in
    ''|*[!0-9]*|0)
      # An input that was not read is never a pass (repo-lint, C12, C13).
      echo "ERROR figure_discovery $tools_dir/regression-run --list rc=$fig_lrc"
      return 3 ;;
  esac

  # The live figure: a `Live` claim line (read from `$LIVE_RE`) that also
  # carries a suite figure. A claim line with no figure on it (repo-lint's
  # HEAD bullet is one) is evidence about a different tool and is not this
  # claim.
  while IFS= read -r line; do
    [ -n "$line" ] || continue
    fig_live_n=$((fig_live_n + 1))
    fig_claim=$(printf '%s\n' "$line" | grep -oE '[0-9]+ suites' \
> build · mimo-v2.6-flash-free
$ cd /data/repo && sed -n '2760,2775p' tests/test_registry_coverage.sh && sed -n '4495,4515p' tests/test_registry_coverage.sh
run_child "$D"
assert_eq "C28d a usage row that names no flag -> exit 1" 1 "$RC"
has_v synopsis_flags verify-landing \
  && ok "C28e VIOLATION synopsis_flags verify-landing" \
  || fail "C28e VIOLATION synopsis_flags verify-landing"
assert_eq "C28f exactly one violation - the plant, and nothing else" 1 "$(sget violations)"
assert_eq "C28g scope now 32 tools that print an option list (pdns-api.py out; 23 -> 24 with cache-show; 24 -> 25 with tmp-lock; 25 -> 26 with download-stats; 26 -> 27 with shift-tally; 27 -> 28 with shift-deploy; 28 -> 29 with shift-census; 29 -> 30 with attribution-gap; 30 -> 31 with coverage-guard; 31 -> 32 with baseline-stale)" \
  32 "$(sget syn_n)"
assert_eq "C28h and exactly one of them lost the promise - syn_ok is one below the scope" \
  "$(( $(sget syn_n) - 1 ))" "$(sget syn_ok)"

# --- C29 the (73) class: two metavars whose own TYPE says the value is wrong.
# --- The plant is CORRECT everywhere the older classes look — unknown flag,
# --- missing value, PORT and (absent) --format all still answer 2 — so the
# --- only thing it can be caught by is the value half of a metavar: `--mode
# --- {a,b}` accepts `z` (an enum metavar IS the list of legal values) and
  "$(sget_live cl_declared)" "$(sget_live cl_declared_ok)"
# A scope CLAIM about this tree, not a constant — the same ruling C28g makes:
# every value-taking pair whose metavar decides nothing (27 today: 22 before
# `cache-show` added `--cache-dir DIR` and `--mount PATH`, neither of which any
# class can call invalid without asking the tool, and 25 once `tmp-lock` added
# `--lock-file PATH` — a path is not a type any class may reject, and 27 once
# `attribution-gap` added `--since DATE` and `--repo DIR`, neither of which
# decides anything a class may reject) lands in
# `cl_other`, so a deliberate growth is a refresh and a SHRINK would be the
# drift G38 exists
# to catch. Recounted 2026-10-09 with `tools/tmp-lock` on the tree, and
# 2026-10-14 with `tools/attribution-gap`.
assert_eq "G38 and the three left cl_other rather than being counted twice (27 non-classified pairs: 22 before cache-show, 24 with it, 25 with tmp-lock, 27 with attribution-gap)" \
  27 "$(sget_live cl_other)"
# The live digits are reported, not asserted: `cl_declared_seen` reads the
# code each probe actually returned (today `3,3,1`), so a reader can see the
# environment's answer without an assertion betting on the one whose value is
# a fact about Postfix rather than about the argument. A snapshot that ran no
# declared probe at all reads `none`, which is the state G35/G36 already
# refuse — this line is a DIAG, not a claim.
assert_contains "G39 and the codes the three probes actually returned are printed for a reader to watch" \
> build · mimo-v2.6-flash-free
$ cd /data/repo && grep -n "LIVE_RE=" tests/test_registry_coverage.sh && sed -n '1395,1460p' tests/test_registry_coverage.sh
374:#     The definition, quoted: LIVE_RE='^[[:space:]]*(- )?[[:space:]]*(\*\*)?[[:space:]]*Live'
425:LIVE_RE='^[[:space:]]*(- )?[[:space:]]*(\*\*)?[[:space:]]*Live'
1506:  # `LIVE_RE=` line in the suite file in scope — in the live run this very
1520:  # the first `^LIVE_RE=` hit is pinned here instead of being found twice by
1522:  live_re_line=$(grep -n '^LIVE_RE=' "$live_re_src" 2>/dev/null | head -1)
1524:  live_re=${live_re#LIVE_RE=}
1529:    echo "ERROR live_re_source no LIVE_RE= line in $live_re_src"
1533:  live_re_lit="LIVE_RE=$live_re"
1671:The definition, quoted: LIVE_RE='^[[:space:]]*(- )?[[:space:]]*(\*\*)?[[:space:]]*Live'
3227:# checker compares each copy with the `LIVE_RE=` line in the suite file in
3233:c36_lit=$(grep '^LIVE_RE=' "$SELF" | head -1)
3319:c37_val=${c36_lit#LIVE_RE=}
3320:c37_new=${c36_new#LIVE_RE=}
3464:new = "LIVE_RE='^[[:space:]]*(- )?[[:space:]]*(\\*\\*)?[[:space:]]*Live.*X?'"
3472:  grep -qxF -- "LIVE_RE='^[[:space:]]*(- )?[[:space:]]*(\\*\\*)?[[:space:]]*Live.*X?'" \
3498:c40_def=$(grep -n '^LIVE_RE=' "$SELF" | head -1 | cut -d: -f1)
3511:d = next(i for i, l in enumerate(lines) if l.startswith("LIVE_RE="))
3545:c40a_def=$(grep -n '^LIVE_RE=' "$D/tests/test_registry_coverage.sh" | head -1 | cut -d: -f1)
3562:d = next(i for i, l in enumerate(lines) if l.startswith("LIVE_RE="))
3581:c40b_def=$(grep -n '^LIVE_RE=' "$D/tests/test_registry_coverage.sh" | head -1 | cut -d: -f1)
3611:d = next(i for i, l in enumerate(lines) if l.startswith("LIVE_RE="))
  # The live figure: a `Live` claim line (read from `$LIVE_RE`) that also
  # carries a suite figure. A claim line with no figure on it (repo-lint's
  # HEAD bullet is one) is evidence about a different tool and is not this
  # claim.
  while IFS= read -r line; do
    [ -n "$line" ] || continue
    fig_live_n=$((fig_live_n + 1))
    fig_claim=$(printf '%s\n' "$line" | grep -oE '[0-9]+ suites' \
      | head -1 | grep -oE '^[0-9]+')
    if [ "$fig_claim" != "$fig_disc" ]; then
      fig_stale_n=$((fig_stale_n + 1))
      figbad="$figbad figure_stale:${fig_claim:-unreadable}"
    fi
  done <<EOF
$(grep -E "$LIVE_RE" "$registry" | grep -E '[0-9]+ suites([^_[:alnum:]]|$)')
EOF

  # Every figure line, the live one included, must be attributable to a date.
  # (119) widens the scope from `<N> suites` alone — which guarded the
  # regression figure and nothing else — to EVERY numeric `- Live:` bullet:
  # six of them quoted live exit codes, a percentage and a file count with no
  # date anywhere on the line, and one (`source-sync-check`, "42 files") was
  # already false when re-read against a tool that printed 44. (120) then
  # found the same restriction written as PROSE three times over, so the rule
  # could not see a claim line that was merely INDENTED: five `Live` claim
  # lines in this registry are continuations of their own bullet, three of
  # them numeric and none dated, and `^- Live` matched none. The selector
  # below is now `$LIVE_RE`, the one definition at the top of this file, so
  # bullet, bold and indented spellings are one scope. Granularity is
  # declared, not implied, exactly as the paragraph above declares it: the
  # DATE of the line is the machine-checked fact, never the number on it (a
  # dated figure is allowed to be old — that is what history means).
  # Both selectors are unioned and deduplicated BEFORE the loop, so a line
  # that satisfies them both (the `- Live:` suite figure line, and any
  # indented one that carries a figure too) yields ONE
  # `figure_undated` and not two — one line, one finding, the rule every
  # control's `exactly one violation` count rests on. A line with no suite
  # figure on it takes `live` as its subject: the same word `figure_missing`
  # and `figure_duplicate` already use for a `- Live:` line, so a reader never
  # sees an empty `VIOLATION figure_undated ` subject.
  fig_scope=$( { grep -E '[0-9]+ suites([^_[:alnum:]]|$)' "$registry"
                 grep -E "$LIVE_RE" "$registry" | grep -E '[0-9]'; } \
               | awk '!seen[$0]++' )
  while IFS= read -r line; do
    [ -n "$line" ] || continue
    printf '%s\n' "$line" | grep -qE '[0-9]{4}-[0-9]{2}-[0-9]{2}' \
      || { fig_undated_n=$((fig_undated_n + 1))
           fig_subj=$(printf '%s\n' "$line" | grep -oE '[0-9]+ suites' \
             | head -1 | grep -oE '^[0-9]+')
           [ -n "$fig_subj" ] || fig_subj=live
           figbad="$figbad figure_undated:$fig_subj"
           echo "DIAG figure_undated_line subject=$fig_subj text=$(printf '%s\n' "$line" | grep -oE "$LIVE_RE.{0,60}")"; }
  done <<EOF
$fig_scope
EOF

  if [ "$fig_live_n" -eq 0 ]; then
    echo "VIOLATION figure_missing live"; v=$((v + 1))
  elif [ "$fig_live_n" -gt 1 ]; then
    echo "VIOLATION figure_duplicate live"; v=$((v + 1))
  fi
  for f in $figbad; do
    echo "VIOLATION ${f%%:*} ${f#*:}"; v=$((v + 1))
  done

  # ---- (83) the second count: what is COMMITTED, not what is checked out ----
> 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)
[Fri Oct 16 02:01:32 2026] 127.0.0.1:44354 Accepted
[Fri Oct 16 02:01:32 2026] 127.0.0.1:44354 Closing
[Fri Oct 16 02:01:32 2026] 127.0.0.1:44364 Accepted
[Fri Oct 16 02:01:32 2026] 127.0.0.1:44364 Closing
[Fri Oct 16 02:01:32 2026] 127.0.0.1:44366 Accepted
[Fri Oct 16 02:01:33 2026] 127.0.0.1:44366 Closing
[Fri Oct 16 02:01:33 2026] 127.0.0.1:44376 Accepted
[Fri Oct 16 02:01:33 2026] 127.0.0.1:44376 Closing
[Fri Oct 16 02:01:33 2026] 127.0.0.1:44386 Accepted
[Fri Oct 16 02:01:33 2026] 127.0.0.1:44386 Closing
[Fri Oct 16 02:01:33 2026] 127.0.0.1:44390 Accepted
[Fri Oct 16 02:01:33 2026] 127.0.0.1:44390 Closing
[Fri Oct 16 02:12:22 2026] 127.0.0.1:39232 Accepted
[Fri Oct 16 02:12:22 2026] 127.0.0.1:39232 Closing
[Fri Oct 16 02:15:23 2026] 127.0.0.1:53528 Accepted
[Fri Oct 16 02:15:23 2026] 127.0.0.1:53528 Closing
[Fri Oct 16 02:15:23 2026] 127.0.0.1:53542 Accepted
[Fri Oct 16 02:15:23 2026] 127.0.0.1:53542 Closing
[Fri Oct 16 02:15:23 2026] 127.0.0.1:53548 Accepted
[Fri Oct 16 02:15:23 2026] 127.0.0.1:53548 Closing
[Fri Oct 16 02:15:23 2026] 127.0.0.1:53554 Accepted
[Fri Oct 16 02:15:23 2026] 127.0.0.1:53554 Closing
[Fri Oct 16 02:15:23 2026] 127.0.0.1:53562 Accepted
[Fri Oct 16 02:15:23 2026] 127.0.0.1:53562 Closing
[Fri Oct 16 02:15:23 2026] 127.0.0.1:53564 Accepted
[Fri Oct 16 02:15:23 2026] 127.0.0.1:53564 Closing
[Fri Oct 16 02:15:23 2026] 127.0.0.1:53570 Accepted
[Fri Oct 16 02:15:24 2026] 127.0.0.1:53570 Closing
[Fri Oct 16 02:15:24 2026] 127.0.0.1:53584 Accepted
[Fri Oct 16 02:15:24 2026] 127.0.0.1:53584 Closing
[Fri Oct 16 02:15:24 2026] 127.0.0.1:53586 Accepted
[Fri Oct 16 02:15:24 2026] 127.0.0.1:53586 Closing
[Fri Oct 16 02:15:24 2026] 127.0.0.1:53592 Accepted
[Fri Oct 16 02:15:24 2026] 127.0.0.1:53592 Closing
[Fri Oct 16 02:16:31 2026] 127.0.0.1:58774 Accepted
[Fri Oct 16 02:16:31 2026] 127.0.0.1:58774 Closing
[Fri Oct 16 02:16:31 2026] 127.0.0.1:58782 Accepted
[Fri Oct 16 02:16:31 2026] 127.0.0.1:58782 Closing
[Fri Oct 16 02:16:31 2026] 127.0.0.1:58798 Accepted
[Fri Oct 16 02:16:31 2026] 127.0.0.1:58798 Closing
[Fri Oct 16 02:16:31 2026] 127.0.0.1:58806 Accepted
[Fri Oct 16 02:16:31 2026] 127.0.0.1:58806 Closing
[Fri Oct 16 02:16:31 2026] 127.0.0.1:58818 Accepted
[Fri Oct 16 02:16:31 2026] 127.0.0.1:58818 Closing
[Fri Oct 16 02:16:31 2026] 127.0.0.1:58828 Accepted
[Fri Oct 16 02:16:31 2026] 127.0.0.1:58828 Closing
[Fri Oct 16 02:16:31 2026] 127.0.0.1:58844 Accepted
[Fri Oct 16 02:16:32 2026] 127.0.0.1:58844 Closing
[Fri Oct 16 02:16:32 2026] 127.0.0.1:58848 Accepted
[Fri Oct 16 02:16:32 2026] 127.0.0.1:58848 Closing
[Fri Oct 16 02:16:32 2026] 127.0.0.1:58850 Accepted
[Fri Oct 16 02:16:32 2026] 127.0.0.1:58850 Closing
[Fri Oct 16 02:16:32 2026] 127.0.0.1:58866 Accepted
[Fri Oct 16 02:16:32 2026] 127.0.0.1:58866 Closing
[Fri Oct 16 02:20:42 2026] 127.0.0.1:33526 Accepted
[Fri Oct 16 02:20:42 2026] 127.0.0.1:33526 Closing
[Fri Oct 16 02:22:26 2026] 127.0.0.1:60648 Accepted
[Fri Oct 16 02:22:26 2026] 127.0.0.1:60648 Closing
[Fri Oct 16 02:24:27 2026] 127.0.0.1:39248 Accepted

Other app logs: downloads.log

Generated 2026-10-16 00:24:27 UTC · Gladex.de