Gladex Agent Logs

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

Overview
Run logs454 files, 11.6 MB
Latest run logrun-20260925-012106-52.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20260925-012106-52.log 164 KB 2026-09-24 23:42:53
run-20260925-003542-51.log 153 KB 2026-09-24 23:11:06
run-20260924-234828-50.log 204 KB 2026-09-24 22:25:42
run-20260924-230237-49.log 303 KB 2026-09-24 21:38:28
run-20260924-222340-48.log 206 KB 2026-09-24 20:52:37
run-20260924-215353-47.log 146 KB 2026-09-24 20:13:40
run-20260924-210315-46.log 182 KB 2026-09-24 19:43:53
run-20260924-200755-45.log 181 KB 2026-09-24 18:53:15
run-20260924-192844-44.log 133 KB 2026-09-24 17:57:55
run-20260924-182059-43.log 227 KB 2026-09-24 17:18:44
run-20260924-164658-42.log 181 KB 2026-09-24 16:10:59
run-20260924-160206-41.log 101 KB 2026-09-24 14:36:58
run-20260924-153643-40.log 127 KB 2026-09-24 13:52:05
run-20260924-151001-39.log 130 KB 2026-09-24 13:26:43
run-20260924-144921-38.log 90 KB 2026-09-24 13:00:01
run-20260924-143001-37.log 63 KB 2026-09-24 12:39:21
run-20260924-141012-36.log 106 KB 2026-09-24 12:20:01
run-20260924-135151-35.log 75 KB 2026-09-24 12:00:12
run-20260924-133211-34.log 116 KB 2026-09-24 11:41:51
run-20260924-130932-33.log 67 KB 2026-09-24 11:22:11
run-20260924-115831-32.log 260 KB 2026-09-24 10:59:32
run-20260924-111405-31.log 117 KB 2026-09-24 09:48:31
run-20260924-102752-30.log 106 KB 2026-09-24 09:04:05
run-20260924-100538-29.log 81 KB 2026-09-24 08:17:52
run-20260924-092904-28.log 101 KB 2026-09-24 07:55:38
run-20260924-083526-27.log 116 KB 2026-09-24 07:19:04
run-20260924-080136-26.log 75 KB 2026-09-24 06:25:26
run-20260924-074910-25.log 23 KB 2026-09-24 05:51:36
run-20260924-072601-24.log 52 KB 2026-09-24 05:39:10
run-20260924-065657-23.log 156 KB 2026-09-24 05:16:01
run-20260924-063310-22.log 76 KB 2026-09-24 04:46:57
run-20260924-055309-21.log 107 KB 2026-09-24 04:23:10
run-20260924-052831-20.log 133 KB 2026-09-24 03:43:09
run-20260924-050107-19.log 69 KB 2026-09-24 03:18:31
run-20260924-044831-18.log 34 KB 2026-09-24 02:51:07
run-20260924-041948-17.log 156 KB 2026-09-24 02:38:31
run-20260924-035438-16.log 185 KB 2026-09-24 02:09:48
run-20260924-033002-15.log 245 KB 2026-09-24 01:44:38
run-20260924-025910-14.log 120 KB 2026-09-24 01:20:02
run-20260924-023430-13.log 97 KB 2026-09-24 00:49:10
run-20260924-015458-12.log 255 KB 2026-09-24 00:24:30
run-20260924-012751-11.log 179 KB 2026-09-23 23:44:58
run-20260924-005036-10.log 162 KB 2026-09-23 23:17:51
run-20260924-000545-9.log 217 KB 2026-09-23 22:40:36
run-20260923-235334-8.log 29 KB 2026-09-23 21:55:45
run-20260923-233751-7.log 97 KB 2026-09-23 21:43:34
run-20260923-231451-6.log 165 KB 2026-09-23 21:27:51
run-20260923-225120-5.log 58 KB 2026-09-23 21:04:51
run-20260923-222610-4.log 230 KB 2026-09-23 20:41:20
run-20260923-205439-3.log 640 KB 2026-09-23 20:16:10
Tail — run-20260925-012106-52.log (last 200 lines)
assert_rc "rc0-with-failure refuses (exit 7)" 7 "$RC"
assert_contains "rc0-with-failure says the tree is not clean" "did not report a clean tree" "$OUT"
assert_not_contains "rc0-with-failure never says LINT OK" "LINT OK" "$OUT"

# --- G: repo-lint binary missing -> fail closed ---------------------------------
rm -f "$SB/repo/tools/repo-lint"
LINT_STUB_MODE=ok
run_tool "$SB"
assert_rc "missing repo-lint refuses (exit 7)" 7 "$RC"
assert_contains "missing repo-lint says it is not found" "not found" "$OUT"
write_lint_stub "$SB/repo/tools/repo-lint"

# --- H: child hangs -> bounded, fail closed ------------------------------------
export GLADEX_LINT_TIMEOUT=1
LINT_STUB_MODE=hang
run_tool "$SB"
unset GLADEX_LINT_TIMEOUT
assert_rc "hanging child refuses (exit 7)" 7 "$RC"
assert_contains "hanging child says it timed out" "timed out" "$OUT"
assert_contains "hanging child names the bound" "after 1s" "$OUT"

# --- I: --force bypasses the lint gate, loudly ---------------------------------
LINT_STUB_MODE=php-fail
run_tool "$SB" --force
assert_rc "--force bypasses the lint gate (exit 0)" 0 "$RC"
assert_contains "--force warns on stderr" "--force bypassing commit lint gate" "$OUT"
assert_contains "--force reaches the rsync" "[DRY-RUN] Would run: rsync" "$OUT"

# --- J: --help documents the gate, its exit code and its hooks -----------------
LINT_STUB_MODE=ok
run_tool "$SB" --help
assert_rc "--help exits 0" 0 "$RC"
assert_contains "--help documents the gate" "Commit lint gate" "$OUT"
assert_contains "--help documents exit code 7" "7  commit lint gate refused" "$OUT"
assert_contains "--help documents the repo-lint hook" "GLADEX_REPO_LINT_BIN" "$OUT"
> build · mimo-v2.6-flash-free
$ cd /data/repo && sed -n '240,400p' tests/test_promote_lint_gate.sh
assert_contains "--help documents the repo-lint hook" "GLADEX_REPO_LINT_BIN" "$OUT"
assert_contains "--help documents the timeout hook" "GLADEX_LINT_TIMEOUT" "$OUT"
assert_contains "--help still documents --force" "--force" "$OUT"
assert_contains "--help still documents the verdict gate" "Reviewer verdict gate" "$OUT"
assert_contains "--help still documents the dev-sync gate" "Dev-sync gate" "$OUT"
assert_contains "--help still documents exit code 6" "6  dev-sync gate refused" "$OUT"

# --- K: gate order — verdict (5) and dev-sync (6) outrank the lint gate (7) ----
new_sandbox
write_verdict "$SB" "VERDICT-20260924-150100-stale.md" \
  "VERDICT: APPROVE
" '2026-09-24 15:01:00'
touch -d '2026-09-24 16:00:00' "$SB/repo/app/src/php/a.php"
LINT_STUB_MODE=php-fail
run_tool "$SB"
assert_rc "stale verdict wins the refusal (exit 5, not 7)" 5 "$RC"
assert_contains "the verdict refusal is the one reported" "STALE" "$OUT"

new_sandbox
write_verdict "$SB" "VERDICT-20260924-150200-devdrift.md" \
  "VERDICT: APPROVE
" '2026-09-24 15:02:00'
printf '<?php // dev-only\n' > "$SB/dev/src/php/hotfix.php"
LINT_STUB_MODE=php-fail
run_tool "$SB"
assert_rc "dev-sync refusal outranks the lint gate (exit 6, not 7)" 6 "$RC"
assert_contains "the dev-sync refusal is the one reported" "DEV-SYNC REFUSED" "$OUT"

# --- L: static contract — the gate call sits BEFORE the first mutating step ----
# promote() copies PROMOTED_TREES in step 3; the gate must be called before it.
GATE_LINE=$(grep -n "lint_rc = check_lint_gate" "$TOOL" | head -1 | cut -d: -f1)
COPY_LINE=$(grep -n "# 3. Copy every promoted tree" "$TOOL" | head -1 | cut -d: -f1)
if [ -n "$GATE_LINE" ] && [ -n "$COPY_LINE" ] && [ "$GATE_LINE" -lt "$COPY_LINE" ]; then
  ok "static: lint gate called (line $GATE_LINE) before the copy loop (line $COPY_LINE)"
else
  fail "static: gate call (line ${GATE_LINE:-absent}) must precede the copy loop (line ${COPY_LINE:-absent})"
fi

# --- M: GLADEX_REPO_LINT_BIN overrides the child -------------------------------
new_sandbox
write_verdict "$SB" "VERDICT-20260924-150300-hook.md" \
  "VERDICT: APPROVE
" '2026-09-24 15:03:00'
write_lint_stub "$SB/external-lint"
export GLADEX_REPO_LINT_BIN="$SB/external-lint"
LINT_STUB_MODE=php-fail
run_tool "$SB"
unset GLADEX_REPO_LINT_BIN
assert_rc "GLADEX_REPO_LINT_BIN is used instead of tools/repo-lint (exit 7)" 7 "$RC"
assert_contains "the external child's failure is reported" "app/src/php/b.php" "$OUT"
export GLADEX_REPO_LINT_BIN="$SB/repo/tools/repo-lint"
LINT_STUB_MODE=ok
run_tool "$SB"
unset GLADEX_REPO_LINT_BIN
assert_rc "a clean external child opens the gate (exit 0)" 0 "$RC"

# --- N: live child — the REAL repo-lint against a throwaway git repo -----------
new_sandbox
cp "$REAL_REPO_LINT" "$SB/repo/tools/repo-lint"
chmod +x "$SB/repo/tools/repo-lint"
git -C "$SB/repo" init -q 2>/dev/null
git -C "$SB/repo" -c user.email=lint@sandbox.invalid -c user.name=lint \
    add -A >/dev/null 2>&1
git -C "$SB/repo" -c user.email=lint@sandbox.invalid -c user.name=lint \
    commit -qm "clean tree" >/dev/null 2>&1
# future-dated verdict: stays fresh across BOTH runs below (the second adds a
# file whose mtime is "now", i.e. later than any hand-picked date)
write_verdict "$SB" "VERDICT-20270101-000000-live.md" \
  "VERDICT: APPROVE
" '2027-01-01 00:00:00'
LINT_STUB_MODE=ok
run_tool "$SB"
assert_rc "live: clean committed tree exits 0" 0 "$RC"
assert_contains "live: gate reports LINT OK" "LINT OK" "$OUT"
printf '<?php echo "unterminated\n' > "$SB/repo/app/src/php/bad.php"
cp "$SB/repo/app/src/php/bad.php" "$SB/dev/src/php/bad.php"
git -C "$SB/repo" -c user.email=lint@sandbox.invalid -c user.name=lint \
    add -A >/dev/null 2>&1
git -C "$SB/repo" -c user.email=lint@sandbox.invalid -c user.name=lint \
    commit -qm "broken tree" >/dev/null 2>&1
run_tool "$SB"
assert_rc "live: broken committed tree refuses (exit 7)" 7 "$RC"
assert_contains "live: the committed bad file is named" "bad.php" "$OUT"

# --- O: mutations — each plant must break the INTENDED assertion ---------------
# Planted on copies (the real tool is never edited), precondition-asserted by
# GREPPING THE SEARCH STRING for exactly one occurrence (counting sed OUTPUT
# lines would miscount a replacement that inserts a newline), py-validated so
# the red can only come from behaviour, then run against the one scenario it
# targets.
plant() { # <label> <search-string> <sed-script> -> sets PLANTED
  local label="$1" search="$2" script="$3"
  PLANTED="$SB/mutant_$label"
  local hits
  hits=$(grep -cF -- "$search" "$TOOL")
  if [ "$hits" -ne 1 ]; then
    fail "mutation $label setup: plant matched $hits line(s), want 1"
    PLANTED=""
    return 1
  fi
  sed "$script" "$TOOL" > "$PLANTED"
  chmod +x "$PLANTED"
  if ! grep -qF -- "MUTANT: $label" "$PLANTED"; then
    fail "mutation $label setup: sed did not apply (no MUTANT: $label marker)"
    PLANTED=""
    return 1
  fi
  if ! python3 -c "import ast,sys; ast.parse(open(sys.argv[1]).read())" "$PLANTED" 2>/dev/null; then
    fail "mutation $label setup: mutant does not parse as Python"
    PLANTED=""
    return 1
  fi
  return 0
}

expect_divergence() { # <label> <real-want> <mut-want> [extra-mutant-args...]
  local label="$1" real_want="$2" mut_want="$3"
  shift 3
  local real_rc=$RC
  run_mutant "$PLANTED" "$SB" "$@"
  local mut_rc=$RC
  if [ "$real_rc" = "$real_want" ] && [ "$mut_rc" = "$mut_want" ]; then
    ok "mutation $label caught (real=$real_rc mutant=$mut_rc)"
  else
    fail "mutation $label (want real=$real_want mutant=$mut_want, got real=$real_rc mutant=$mut_rc)"
  fi
}

# M1: the gate result ignored at the call site (the original defect class)
new_sandbox
write_verdict "$SB" "VERDICT-20260924-150500-m1.md" "VERDICT: APPROVE
" '2026-09-24 15:05:00'
if plant M1 '    if lint_rc != 0:' \
  's/    if lint_rc != 0:/    if False:  # MUTANT: M1 lint gate result ignored/'; then
  LINT_STUB_MODE=php-fail
  run_tool "$SB"
  expect_divergence M1 7 0
fi

# M2: a refusal that exits success
if plant M2 '        return EXIT_LINT' \
  's/^        return EXIT_LINT$/        return 0  # MUTANT: M2 refusal reports success/'; then
  LINT_STUB_MODE=php-fail
  run_tool "$SB"
  expect_divergence M2 7 0
fi

# M3: rc 0 alone treated as clean (the child's own JSON ignored)
if plant M3 'if rc == 0 and _lint_reports_clean(payload):' \
  's/if rc == 0 and _lint_reports_clean(payload):/if rc == 0:  # MUTANT: M3 exit code only/'; then
  LINT_STUB_MODE=rc0-not-ok
  run_tool "$SB"
  expect_divergence M3 7 0
fi

# M4: the timeout handler re-raises (a hang escapes as a crash, not a refusal)
if plant M4 'except subprocess.TimeoutExpired:  # lint gate: child ran past the bound' \
  's/except subprocess.TimeoutExpired:  # lint gate: child ran past the bound/except subprocess.TimeoutExpired:  # MUTANT: M4 handler re-raises\n        raise/'; then
  export GLADEX_LINT_TIMEOUT=1
  LINT_STUB_MODE=hang
  run_tool "$SB"
> 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 Sep 25 01:37:40 2026] 127.0.0.1:60442 Accepted
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60442 Closing
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60446 Accepted
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60446 Closing
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60462 Accepted
[Fri Sep 25 01:37:40 2026] 127.0.0.1:60462 Closing
[Fri Sep 25 01:42:50 2026] 127.0.0.1:37798 Accepted
[Fri Sep 25 01:42:50 2026] 127.0.0.1:37798 Closing
[Fri Sep 25 01:42:50 2026] 127.0.0.1:37802 Accepted
[Fri Sep 25 01:42:50 2026] 127.0.0.1:37802 Closing
[Fri Sep 25 01:42:51 2026] 127.0.0.1:37814 Accepted
[Fri Sep 25 01:42:51 2026] 127.0.0.1:37814 Closing
[Fri Sep 25 01:42:51 2026] 127.0.0.1:37818 Accepted
[Fri Sep 25 01:42:51 2026] 127.0.0.1:37818 Closing
[Fri Sep 25 01:42:54 2026] 127.0.0.1:37824 Accepted
[Fri Sep 25 01:42:54 2026] 127.0.0.1:37824 Closing
[Fri Sep 25 01:42:55 2026] 127.0.0.1:44098 Accepted
[Fri Sep 25 01:42:55 2026] 127.0.0.1:44098 Closing
[Fri Sep 25 01:42:55 2026] 127.0.0.1:44106 Accepted
[Fri Sep 25 01:42:55 2026] 127.0.0.1:44106 Closing
[Fri Sep 25 01:43:00 2026] 127.0.0.1:44120 Accepted
[Fri Sep 25 01:43:00 2026] 127.0.0.1:44120 Closing
[Fri Sep 25 01:43:00 2026] 127.0.0.1:44134 Accepted
[Fri Sep 25 01:43:00 2026] 127.0.0.1:44134 Closing
[Fri Sep 25 01:43:00 2026] 127.0.0.1:44150 Accepted
[Fri Sep 25 01:43:00 2026] 127.0.0.1:44150 Closing
[Fri Sep 25 01:43:04 2026] 127.0.0.1:44164 Accepted
[Fri Sep 25 01:43:04 2026] 127.0.0.1:44164 Closing
[Fri Sep 25 01:43:04 2026] 127.0.0.1:38886 Accepted
[Fri Sep 25 01:43:04 2026] 127.0.0.1:38886 Closing
[Fri Sep 25 01:43:05 2026] 127.0.0.1:38896 Accepted
[Fri Sep 25 01:43:05 2026] 127.0.0.1:38896 Closing
[Fri Sep 25 01:43:09 2026] 127.0.0.1:38912 Accepted
[Fri Sep 25 01:43:09 2026] 127.0.0.1:38912 Closing
[Fri Sep 25 01:43:10 2026] 127.0.0.1:38918 Accepted
[Fri Sep 25 01:43:10 2026] 127.0.0.1:38918 Closing
[Fri Sep 25 01:43:10 2026] 127.0.0.1:38934 Accepted
[Fri Sep 25 01:43:10 2026] 127.0.0.1:38934 Closing
[Fri Sep 25 01:43:30 2026] 127.0.0.1:53584 Accepted
[Fri Sep 25 01:43:30 2026] 127.0.0.1:53584 Closing
[Fri Sep 25 01:43:30 2026] 127.0.0.1:53596 Accepted
[Fri Sep 25 01:43:30 2026] 127.0.0.1:53596 Closing
[Fri Sep 25 01:43:30 2026] 127.0.0.1:53610 Accepted
[Fri Sep 25 01:43:30 2026] 127.0.0.1:53610 Closing
[Fri Sep 25 01:43:39 2026] 127.0.0.1:34760 Accepted
[Fri Sep 25 01:43:39 2026] 127.0.0.1:34760 Closing
[Fri Sep 25 01:43:40 2026] 127.0.0.1:34764 Accepted
[Fri Sep 25 01:43:40 2026] 127.0.0.1:34764 Closing
[Fri Sep 25 01:43:40 2026] 127.0.0.1:34780 Accepted
[Fri Sep 25 01:43:40 2026] 127.0.0.1:34780 Closing
[Fri Sep 25 01:44:35 2026] 127.0.0.1:51444 Accepted
[Fri Sep 25 01:44:35 2026] 127.0.0.1:51444 Closing
[Fri Sep 25 01:44:35 2026] 127.0.0.1:51450 Accepted
[Fri Sep 25 01:44:35 2026] 127.0.0.1:51450 Closing
[Fri Sep 25 01:44:38 2026] 127.0.0.1:51462 Accepted
[Fri Sep 25 01:44:38 2026] 127.0.0.1:51462 Closing
[Fri Sep 25 01:44:38 2026] 127.0.0.1:51470 Accepted
[Fri Sep 25 01:44:38 2026] 127.0.0.1:51470 Closing
[Fri Sep 25 01:44:38 2026] 127.0.0.1:51474 Accepted

Generated 2026-09-24 23:44:38 UTC · Gladex.de