Gladex Agent Logs

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

Overview
Run logs930 files, 48.9 MB
Latest run logrun-20261002-170315-528.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20261002-170315-528.log 445 KB 2026-10-02 15:41:17
run-20261002-161229-527.log 357 KB 2026-10-02 14:53:08
run-20261002-160222-526.log 153 B 2026-10-02 14:02:23
run-20261002-155214-525.log 153 B 2026-10-02 13:52:15
run-20261002-154207-524.log 153 B 2026-10-02 13:42:08
run-20261002-153159-523.log 190 B 2026-10-02 13:32:00
run-20261002-152152-522.log 153 B 2026-10-02 13:21:53
run-20261002-151144-521.log 153 B 2026-10-02 13:11:45
run-20261002-150137-520.log 153 B 2026-10-02 13:01:38
run-20261002-145129-519.log 153 B 2026-10-02 12:51:30
run-20261002-144121-518.log 190 B 2026-10-02 12:41:22
run-20261002-143114-517.log 190 B 2026-10-02 12:31:15
run-20261002-142106-516.log 153 B 2026-10-02 12:21:07
run-20261002-141059-515.log 153 B 2026-10-02 12:10:59
run-20261002-140051-514.log 153 B 2026-10-02 12:00:52
run-20261002-135044-513.log 153 B 2026-10-02 11:50:45
run-20261002-134037-512.log 153 B 2026-10-02 11:40:37
run-20261002-133028-511.log 153 B 2026-10-02 11:30:29
run-20261002-132021-510.log 153 B 2026-10-02 11:20:21
run-20261002-131012-509.log 190 B 2026-10-02 11:10:13
run-20261002-130005-508.log 153 B 2026-10-02 11:00:06
run-20261002-124958-507.log 153 B 2026-10-02 10:49:58
run-20261002-123950-506.log 190 B 2026-10-02 10:39:51
run-20261002-122943-505.log 153 B 2026-10-02 10:29:43
run-20261002-121935-504.log 153 B 2026-10-02 10:19:36
run-20261002-120928-503.log 153 B 2026-10-02 10:09:29
run-20261002-115921-502.log 153 B 2026-10-02 09:59:21
run-20261002-114913-501.log 153 B 2026-10-02 09:49:14
run-20261002-113906-500.log 153 B 2026-10-02 09:39:06
run-20261002-112858-499.log 153 B 2026-10-02 09:28:59
run-20261002-111851-498.log 153 B 2026-10-02 09:18:51
run-20261002-110843-497.log 153 B 2026-10-02 09:08:44
run-20261002-105836-496.log 153 B 2026-10-02 08:58:37
run-20261002-104828-495.log 153 B 2026-10-02 08:48:29
run-20261002-103821-494.log 153 B 2026-10-02 08:38:22
run-20261002-102813-493.log 153 B 2026-10-02 08:28:14
run-20261002-101806-492.log 153 B 2026-10-02 08:18:07
run-20261002-100758-491.log 153 B 2026-10-02 08:07:59
run-20261002-095751-490.log 153 B 2026-10-02 07:57:52
run-20261002-094743-489.log 153 B 2026-10-02 07:47:44
run-20261002-093736-488.log 190 B 2026-10-02 07:37:37
run-20261002-084815-487.log 353 KB 2026-10-02 07:27:28
run-20261002-071736-486.log 516 KB 2026-10-02 06:38:08
run-20261002-063936-485.log 306 KB 2026-10-02 05:07:30
run-20261002-055350-484.log 390 KB 2026-10-02 04:29:29
run-20261002-052326-483.log 259 KB 2026-10-02 03:43:44
run-20261002-045340-482.log 233 KB 2026-10-02 03:13:20
run-20261002-042438-481.log 139 KB 2026-10-02 02:43:33
run-20261002-034149-480.log 267 KB 2026-10-02 02:14:31
run-20261002-024732-479.log 457 KB 2026-10-02 01:31:43
Tail — run-20261002-170315-528.log (last 200 lines)
        "queue_headings_raw": 127,
        "queue_path_phantoms": 0,
        "queue_path_tokens": 4,
        "queue_sections": 126
    },
    "timestamp": "2026-10-02T15:37:59Z",
    "tool": "queue-source-check",
    "violations": []
}
rc=0
> build · mimo-v2.6-flash-free
← Edit repo/tests/test_queue_source.sh
Index: repo/tests/test_queue_source.sh
===================================================================
--- repo/tests/test_queue_source.sh
+++ repo/tests/test_queue_source.sh
@@ -172,14 +172,14 @@
         "newest_version","newest_has_queue_section","newest_queue_items",
         "newest_points_at_progress","newest_version_in_progress",
         "progress_bullets",
         "queue_headings_raw","queue_headings_fenced","duplicate_queue_sections",
-        "queue_path_tokens","queue_path_phantoms"]
+        "queue_path_tokens","queue_path_phantoms","progress_covers_changelog"]
 d = json.load(sys.stdin)
 sys.exit(0 if sorted(d["rules"]) == sorted(want) else 1)'; then
-  ok "A20 rules key set is exactly the documented 14 keys"
+  ok "A20 rules key set is exactly the documented 15 keys"
 else
-  fail "A20 rules key set is exactly the documented 14 keys"
+  fail "A20 rules key set is exactly the documented 15 keys"
 fi
 # `detail` must be embeddable in a hand-built JSON object by a shell caller:
 # that is the contract system-status relies on when it builds the row.
 if printf '%s' "$OUT" | python3 -c '

> build · mimo-v2.6-flash-free
← Edit repo/tests/test_queue_source.sh
Index: repo/tests/test_queue_source.sh
===================================================================
--- repo/tests/test_queue_source.sh
+++ repo/tests/test_queue_source.sh
@@ -360,18 +360,18 @@
         "newest_version","newest_has_queue_section","newest_queue_items",
         "newest_points_at_progress","newest_version_in_progress",
         "progress_bullets",
         "queue_headings_raw","queue_headings_fenced","duplicate_queue_sections",
-        "queue_path_tokens","queue_path_phantoms"]
+        "queue_path_tokens","queue_path_phantoms","progress_covers_changelog"]
 d = json.load(sys.stdin)
 r = d["rules"]
 sys.exit(0 if (sorted(r) == sorted(want)
                and r["frozen_items_expected"] == 111
                and all(v is None for k, v in r.items()
                        if k != "frozen_items_expected")) else 1)'; then
-  ok "H16 usage object carries the same 14 rules keys (constant stated, rest null)"
+  ok "H16 usage object carries the same 15 rules keys (constant stated, rest null)"
 else
-  fail "H16 usage object carries the same 14 rules keys (constant stated, rest null)"
+  fail "H16 usage object carries the same 15 rules keys (constant stated, rest null)"
 fi
 
 # --- I: repo resolution (the /data/tools symlink trap) ------------------------
 new_sandbox

> build · mimo-v2.6-flash-free
$ cd /data/repo && grep -n "14\b\|fourteen" tests/test_queue_source.sh | head -20; echo "=== 12 keys / R1-R9 mentions:"; grep -n "R1-R9\|11 keys\|12 keys" tests/test_queue_source.sh | head
154:assert_jget "A14 newest_has_queue_section=true" "$OUT" 'd["rules"]["newest_has_queue_section"]' "True"
303:assert_jget "G14 exit_code=3, not 1 - a missing file is not a violation" "$OUT" 'd["exit_code"]' "3"
345:assert_rc "H14 a valid json run still exits 0" 0 "$RC"
571:assert_jget "N14 the newest-entry rules stayed green (one violation only)" \
1592:# P14 - the tree is left green: the real files still agree after the plants.
1596:  ok "P14 the real files still agree after the plants (no sandbox residue)"
1598:  fail "P14 the real files do not agree after the plants"
1662:assert_jget "Q14 still exactly one violation" "$OUT" 'len(d["violations"])' "1"
1815:newest_bullet "- **Next-candidate queued, not actioned**: **(114) NEW - a gate at tools/not-a-real-tool** (new)."
1817:assert_rc "S14 the (new) marker excuses the token (exit 0)" 0 "$RC"
1926:# M14 - drop R9: the S6 fixture then exits 0, i.e. exactly the state
1935:assert_rc "M14a the real tool refuses that phantom fixture (the reference for M14)" 1 "$RC"
1936:MUT="$SB/mut-qsc14"
1944:assert t.count(old) == 1, "M14 needle not unique: %d match(es)" % t.count(old)
1949:  ok "M14 the R9-less mutant was built (copies only)"
1951:  fail "M14 the R9-less mutant was built (missing or identical)"
1955:  ok "M14 dropping R9 is caught (mutant exits 0, real exits 1)"
1957:  fail "M14 dropping R9 is caught (mutant still exits 1 - evaded)"
1959:  fail "M14 dropping R9 is caught (mutant exited $RC, not runnable)"
=== 12 keys / R1-R9 mentions:
165:  ok "A19 json key set is exactly the documented 11 keys"
167:  fail "A19 json key set is exactly the documented 11 keys"
324:  ok "H5 the usage object carries the SAME 11 keys as a verdict object"
326:  fail "H5 the usage object carries the SAME 11 keys as a verdict object"
787:  ok "O2 the docstring declares exactly A1-A3 (availability) and R1-R9 (the rules)"
> build · mimo-v2.6-flash-free
← Edit repo/tests/test_queue_source.sh
Index: repo/tests/test_queue_source.sh
===================================================================
--- repo/tests/test_queue_source.sh
+++ repo/tests/test_queue_source.sh
@@ -782,18 +782,18 @@
 doc = parts[1] if len(parts) >= 2 else ""
 print(" ".join(re.findall(r"^    ([AR][0-9]+)\b", doc, re.M)))
 PY
 )
-if [ "$DECLARED" = "A1 A2 A3 R1 R2 R3 R4 R5 R6 R7 R8 R9" ]; then
-  ok "O2 the docstring declares exactly A1-A3 (availability) and R1-R9 (the rules)"
+if [ "$DECLARED" = "A1 A2 A3 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10" ]; then
+  ok "O2 the docstring declares exactly A1-A3 (availability) and R1-R10 (the rules)"
 else
-  fail "O2 docstring declares '$DECLARED' - want 'A1 A2 A3 R1 R2 R3 R4 R5 R6 R7 R8 R9'"
+  fail "O2 docstring declares '$DECLARED' - want 'A1 A2 A3 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10'"
 fi
 
 new_sandbox
 # The retired rule numbers are ASSEMBLED at runtime: this suite is one of the
 # files the checker scans, so writing them down here would make O1 red forever.
-RETIRED="R""10"
+RETIRED="R""11"
 
 # O3/O4 — a citation the docstring never declared, planted in the TOOL.
 PLANT_TOOL="    # $RETIRED - a rule number from the retired layout"
 if grep -qxF "$PLANT_TOOL" "$TOOL"; then

> build · mimo-v2.6-flash-free
Now the git helpers in the suite:
← Edit repo/tests/test_queue_source.sh
Index: repo/tests/test_queue_source.sh
===================================================================
--- repo/tests/test_queue_source.sh
+++ repo/tests/test_queue_source.sh
@@ -116,8 +116,35 @@
 # The healthy repo: 60 + 51 historical items = the frozen 111, newest entry is
 # a pointer with zero items, PROGRESS carries the live list.
 healthy() { make_repo "$1" 60 51 0 yes 1; }
 
+# --- git fixtures, for R10 only ------------------------------------------------
+# Everything R10 reads is a COMMIT, so the fixtures that judge it must have
+# commits to read. Three helpers, all operating on a sandbox repo passed
+# explicitly (the same --repo discipline the rest of the suite uses): the
+# author/committer dates are pinned per commit because the two readings R10
+# rejects - a date floor and a clock comparison - can only be disproved by a
+# fixture whose DATE and ORDER deliberately disagree.
+git_init() { # <repo>
+  git -C "$1" -c init.defaultBranch=main init -q >/dev/null 2>&1
+}
+git_commit() { # <repo> <iso8601-date> <message> [pathspec]
+  local repo="$1" date="$2" msg="$3" path="${4:-.}"
+  git -C "$repo" add -A -- "$path" >/dev/null 2>&1 || return 1
+  GIT_AUTHOR_DATE="$date" GIT_COMMITTER_DATE="$date" \
+    git -C "$repo" -c user.name=qsc -c user.email=qsc@example.invalid \
+    -c commit.gpgsign=false commit -q -m "$msg" >/dev/null 2>&1
+}
+git_sha() { # <repo> <path> -> the commit that last touched it
+  git -C "$1" log -1 --format=%H -- ":/$2"
+}
+git_epoch() { # <repo> <sha> -> commit timestamp
+  git -C "$1" show -s --format=%ct "$2"
+}
+git_day() { # <repo> <sha> -> the commit's own UTC date, as its offset records it
+  git -C "$1" show -s --format=%cI "$2" | cut -c1-10
+}
+
 new_sandbox() {
   local base="${TMPDIR:-/tmp}/opencode"
   mkdir -p "$base" 2>/dev/null || base="/tmp"
   SB=$(mktemp -d "$base/qsc.XXXXXX") || { echo "cannot create sandbox" >&2; exit 1; }

> build · mimo-v2.6-flash-free
← Edit repo/tests/test_queue_source.sh
Index: repo/tests/test_queue_source.sh
===================================================================
--- repo/tests/test_queue_source.sh
+++ repo/tests/test_queue_source.sh
@@ -142,8 +142,25 @@
 }
 git_day() { # <repo> <sha> -> the commit's own UTC date, as its offset records it
   git -C "$1" show -s --format=%cI "$2" | cut -c1-10
 }
+# incident_repo <dir> — queue item (109) candidate (b)'s incident, rebuilt:
+# one commit carrying BOTH files (the shape every main-loop run lands), then a
+# second commit that touches CHANGELOG.md ALONE - the newest entry landing
+# without the run's own record - at 20:51:55Z, on the SAME UTC day as the
+# first. The same day is deliberate: it is the blind spot a date-floor rule
+# has, so T9 asserts the fixture really sits inside it.
+incident_repo() {
+  local dir="$1"
+  healthy "$dir"
+  git_init "$dir" || return 1
+  git_commit "$dir" "2026-10-01T10:00:00+0000" \
+    "the run's own entry and record together" || return 1
+  printf '\nIncident fixture: this entry was committed without its own record.\n' \
+    >> "$dir/CHANGELOG.md"
+  git_commit "$dir" "2026-10-01T20:51:55+0000" \
+    "CHANGELOG entry committed alone" CHANGELOG.md
+}
 
 new_sandbox() {
   local base="${TMPDIR:-/tmp}/opencode"
   mkdir -p "$base" 2>/dev/null || base="/tmp"

> 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  2 16:44:52 2026] 127.0.0.1:34356 Accepted
[Fri Oct  2 16:44:52 2026] 127.0.0.1:34356 Closing
[Fri Oct  2 16:44:52 2026] 127.0.0.1:34360 Accepted
[Fri Oct  2 16:44:53 2026] 127.0.0.1:34360 Closing
[Fri Oct  2 16:44:53 2026] 127.0.0.1:34370 Accepted
[Fri Oct  2 16:44:53 2026] 127.0.0.1:34370 Closing
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44254 Accepted
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44254 Closing
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44270 Accepted
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44270 Closing
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44286 Accepted
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44286 Closing
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44298 Accepted
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44298 Closing
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44300 Accepted
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44300 Closing
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44310 Accepted
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44310 Closing
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44312 Accepted
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44312 Closing
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44320 Accepted
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44320 Closing
[Fri Oct  2 16:45:47 2026] 127.0.0.1:44326 Accepted
[Fri Oct  2 16:45:48 2026] 127.0.0.1:44326 Closing
[Fri Oct  2 16:45:48 2026] 127.0.0.1:44334 Accepted
[Fri Oct  2 16:45:48 2026] 127.0.0.1:44334 Closing
[Fri Oct  2 16:48:31 2026] 127.0.0.1:58494 Accepted
[Fri Oct  2 16:48:31 2026] 127.0.0.1:58494 Closed without sending a request; it was probably just an unused speculative preconnection
[Fri Oct  2 16:48:31 2026] 127.0.0.1:58494 Closing
[Fri Oct  2 16:48:32 2026] 127.0.0.1:58504 Accepted
[Fri Oct  2 16:48:32 2026] 127.0.0.1:58504 Closed without sending a request; it was probably just an unused speculative preconnection
[Fri Oct  2 16:48:32 2026] 127.0.0.1:58504 Closing
[Fri Oct  2 16:49:05 2026] 127.0.0.1:59652 Accepted
[Fri Oct  2 16:49:05 2026] 127.0.0.1:59652 Closed without sending a request; it was probably just an unused speculative preconnection
[Fri Oct  2 16:49:05 2026] 127.0.0.1:59652 Closing
[Fri Oct  2 16:49:07 2026] 127.0.0.1:59656 Accepted
[Fri Oct  2 16:49:07 2026] 127.0.0.1:59656 Closed without sending a request; it was probably just an unused speculative preconnection
[Fri Oct  2 16:49:07 2026] 127.0.0.1:59656 Closing
[Fri Oct  2 16:51:15 2026] 127.0.0.1:37004 Accepted
[Fri Oct  2 16:51:15 2026] 127.0.0.1:37004 Closing
[Fri Oct  2 16:51:28 2026] 127.0.0.1:43178 Accepted
[Fri Oct  2 16:51:28 2026] 127.0.0.1:43178 Closing
[Fri Oct  2 16:53:54 2026] 127.0.0.1:60544 Accepted
[Fri Oct  2 16:53:54 2026] 127.0.0.1:60544 Closing
[Fri Oct  2 17:03:54 2026] 127.0.0.1:52124 Accepted
[Fri Oct  2 17:03:54 2026] 127.0.0.1:52124 Closing
[Fri Oct  2 17:03:56 2026] 127.0.0.1:49496 Accepted
[Fri Oct  2 17:03:56 2026] 127.0.0.1:49496 Closing
[Fri Oct  2 17:06:17 2026] 127.0.0.1:46800 Accepted
[Fri Oct  2 17:06:17 2026] 127.0.0.1:46800 Closing
[Fri Oct  2 17:21:53 2026] 127.0.0.1:60954 Accepted
[Fri Oct  2 17:21:53 2026] 127.0.0.1:60954 Closing
[Fri Oct  2 17:32:18 2026] 127.0.0.1:56944 Accepted
[Fri Oct  2 17:32:18 2026] 127.0.0.1:56944 Closing
[Fri Oct  2 17:32:18 2026] 127.0.0.1:56946 Accepted
[Fri Oct  2 17:32:18 2026] 127.0.0.1:56946 Closing
[Fri Oct  2 17:41:25 2026] 127.0.0.1:50726 Accepted
[Fri Oct  2 17:41:25 2026] 127.0.0.1:50726 Closing
[Fri Oct  2 17:41:25 2026] 127.0.0.1:50730 Accepted

Generated 2026-10-02 15:41:25 UTC · Gladex.de