Gladex Agent Logs

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

Overview
Run logs523 files, 17.2 MB
Latest run logrun-20260926-024118-121.log
Log directory/data/agent-logs
App log directory/opt/startup/prod/logs
Run logs (newest first, last 50)
FileSizeModified (UTC)
run-20260926-024118-121.log 130 KB 2026-09-26 00:56:55
run-20260926-020038-120.log 273 KB 2026-09-26 00:31:18
run-20260926-015037-119.log 153 B 2026-09-25 23:50:38
run-20260926-014036-118.log 153 B 2026-09-25 23:40:37
run-20260926-013035-117.log 153 B 2026-09-25 23:30:36
run-20260926-012035-116.log 153 B 2026-09-25 23:20:35
run-20260926-011034-115.log 153 B 2026-09-25 23:10:35
run-20260926-010033-114.log 153 B 2026-09-25 23:00:34
run-20260926-005033-113.log 190 B 2026-09-25 22:50:33
run-20260926-004031-112.log 153 B 2026-09-25 22:40:33
run-20260926-003030-111.log 153 B 2026-09-25 22:30:31
run-20260926-002029-110.log 153 B 2026-09-25 22:20:30
run-20260926-001029-109.log 153 B 2026-09-25 22:10:29
run-20260926-000025-108.log 190 B 2026-09-25 22:00:29
run-20260925-235025-107.log 153 B 2026-09-25 21:50:25
run-20260925-234024-106.log 153 B 2026-09-25 21:40:25
run-20260925-233023-105.log 153 B 2026-09-25 21:30:24
run-20260925-232022-104.log 153 B 2026-09-25 21:20:23
run-20260925-231021-103.log 153 B 2026-09-25 21:10:22
run-20260925-230021-102.log 153 B 2026-09-25 21:00:21
run-20260925-225020-101.log 190 B 2026-09-25 20:50:21
run-20260925-224019-100.log 153 B 2026-09-25 20:40:19
run-20260925-223018-99.log 152 B 2026-09-25 20:30:19
run-20260925-222017-98.log 152 B 2026-09-25 20:20:18
run-20260925-221016-97.log 152 B 2026-09-25 20:10:17
run-20260925-220015-96.log 152 B 2026-09-25 20:00:16
run-20260925-213653-95.log 141 KB 2026-09-25 19:50:15
run-20260925-205157-94.log 389 KB 2026-09-25 19:26:53
run-20260925-195858-93.log 517 KB 2026-09-25 18:41:57
run-20260925-192850-92.log 321 KB 2026-09-25 17:48:58
run-20260925-185030-91.log 325 KB 2026-09-25 17:18:50
run-20260925-180536-90.log 232 KB 2026-09-25 16:40:30
run-20260925-173957-89.log 252 KB 2026-09-25 15:55:36
run-20260925-171044-88.log 201 KB 2026-09-25 15:29:57
run-20260925-163300-87.log 247 KB 2026-09-25 15:00:44
run-20260925-160013-86.log 175 KB 2026-09-25 14:23:00
run-20260925-153430-85.log 158 KB 2026-09-25 13:50:13
run-20260925-152430-84.log 152 B 2026-09-25 13:24:30
run-20260925-151428-83.log 189 B 2026-09-25 13:14:30
run-20260925-150428-82.log 152 B 2026-09-25 13:04:28
run-20260925-145427-81.log 152 B 2026-09-25 12:54:28
run-20260925-144426-80.log 152 B 2026-09-25 12:44:27
run-20260925-143426-79.log 152 B 2026-09-25 12:34:26
run-20260925-142425-78.log 189 B 2026-09-25 12:24:26
run-20260925-141424-77.log 152 B 2026-09-25 12:14:25
run-20260925-140424-76.log 152 B 2026-09-25 12:04:24
run-20260925-135423-75.log 152 B 2026-09-25 11:54:24
run-20260925-134422-74.log 152 B 2026-09-25 11:44:23
run-20260925-133422-73.log 152 B 2026-09-25 11:34:22
run-20260925-132421-72.log 152 B 2026-09-25 11:24:22
Tail โ€” run-20260926-024118-121.log (last 200 lines)
+    fwrite(STDERR, "precondition: expected exactly 1 else and 3 skip() in section 6, found $elses/$skips\n");
+    exit(3);
+}
 
+$start = strpos($s, '        } else {', $s6start);
+if ($start === false || $start > $s6end) { fwrite(STDERR, "precondition: section 6's else block was not found\n"); exit(3); }
+
 $needle = 'NOT CHECKED ($why)");';
 $e = strrpos($s, $needle);
 if ($e === false || $e < $start) { fwrite(STDERR, "precondition: the third skip() call was not found after the else\n"); exit(3); }
 $e += strlen($needle);

> build ยท mimo-v2.6-flash-free
โ† Edit /tmp/opencode/contrastfix/mutate.php
Index: /tmp/opencode/contrastfix/mutate.php
===================================================================
--- /tmp/opencode/contrastfix/mutate.php
+++ /tmp/opencode/contrastfix/mutate.php
@@ -57,14 +57,28 @@
 
 /* --- the mutation must actually be a mutation, and must be surgical --- */
 if (md5($mutant) === md5($s)) { fwrite(STDERR, "precondition: mutant is byte-identical to the original\n"); exit(4); }
 $ms = file_get_contents($mut);
-$mElses = preg_match_all('/\belse\b/', substr($ms, strpos($ms, 'echo "\n=== 6.')));
-$mSkips = preg_match_all('/\bskip\s*\(/', substr($ms, strpos($ms, 'echo "\n=== 6.'), strpos($ms, 'echo "\n=== Results:') - strpos($ms, 'echo "\n=== 6.')));
+$msStart = strpos($ms, 'echo "\n=== 6.');
+$msEnd   = strpos($ms, 'echo "\n=== Results:');
+if ($msStart === false || $msEnd === false || $msEnd < $msStart) {
+    fwrite(STDERR, "precondition: mutant's section 6 bounds not found\n");
+    exit(4);
+}
+$ms6 = substr($ms, $msStart, $msEnd - $msStart);
+$mElses = preg_match_all('/\belse\b/', $ms6);
+$mSkips = preg_match_all('/\bskip\s*\(/', $ms6);
 if ($mElses !== 0 || $mSkips !== 0) {
-    fwrite(STDERR, "precondition: mutant should have 0 else and 0 skip in section 6, got $mElses/$mSkips\n");
+    fwrite(STDERR, "precondition: mutant should have 0 else and 0 skip() in section 6, got $mElses/$mSkips\n");
     exit(4);
 }
+/* The surgery must not have reached outside section 6. */
+$outside = str_replace($ms6, '', $ms);
+$origOutside = str_replace($s6, '', $s);
+if (md5($outside) !== md5($origOutside)) {
+    fwrite(STDERR, "precondition: the mutation changed something OUTSIDE section 6\n");
+    exit(4);
+}
 lint($mut);
 
 echo "MUTANT=$mut\n";
 echo "original_md5=" . md5($s) . "\n";

> build ยท mimo-v2.6-flash-free
$ cd /data/repo && php /tmp/opencode/contrastfix/mutate.php; echo "MUTATE_EXIT=$?"
MUTANT=/tmp/opencode/contrastfix/mutant_no_else.php
original_md5=3abb053a73c86dc2397c6329f50e1dab
mutant_md5=8249169517bf4933b9cce23915544b71
section6: else 1 -> 0, skip() 3 -> 0
MUTATE_EXIT=0
> build ยท mimo-v2.6-flash-free
$ cd /data/repo && APP_CONTRAST_SUITE=/tmp/opencode/contrastfix/mutant_no_else.php php tests/test_app_contrast_meta.php > /tmp/opencode/contrastfix/mutation-run.log 2>&1; echo "MUTANT_META_EXIT=$?"; grep -E '^  (FAIL|PASS): (F1|F2)' /tmp/opencode/contrastfix/mutation-run.log | head -30; echo "---"; tail -2 /tmp/opencode/contrastfix/mutation-run.log; echo "--- sanity: real suite untouched ---"; php tests/test_app_contrast.php 2>&1 | tail -2; md5sum tests/test_app_contrast.php
MUTANT_META_EXIT=1
  PASS: F1 fixture removed all four --accent-text declarations (got 4)
  PASS: F2 fixture garbled all four --accent-text values (got 4)
  PASS: F1 fixture still references var(--accent-text) at all nine accent sites (the sites were never the defect)
  PASS: F1: every path and served base the copy needed was present to redirect
  PASS: F1: no original path or served base survives the copy (leftover: none)
  PASS: F2: every path and served base the copy needed was present to redirect
  PASS: F2: no original path or served base survives the copy (leftover: none)
  PASS: F1: exit code is 1 (got 1) โ€” a broken document must be red, not green and not 255
  PASS: F1: no PHP fatal โ€” an unparseable token must not abort the suite
  PASS: F1: the suite reached its own === Results: line (a consumer always gets a verdict)
  PASS: F1: section 6 ran
  FAIL: F1: section 6 reports 12 counted skips โ€” 3 suppressed properties x 4 documents (got 0)
  PASS: F1: section 6 still FAILS the token once per document (got 4) โ€” skipped is not the same as passed
  PASS: F1: all four documents were exercised in section 6 (got 4)
  FAIL: F1: 'differs' is reported as SKIP on all four documents (got 0)
  FAIL: F1: 'surface' is reported as SKIP on all four documents (got 0)
  FAIL: F1: 'bg' is reported as SKIP on all four documents (got 0)
  PASS: F1: every skipped document also carries its token failure (no skip without a verdict)
  PASS: F2: exit code is 1 (got 1) โ€” a broken document must be red, not green and not 255
  PASS: F2: no PHP fatal โ€” an unparseable token must not abort the suite
  PASS: F2: the suite reached its own === Results: line (a consumer always gets a verdict)
  PASS: F2: section 6 ran
  FAIL: F2: section 6 reports 12 counted skips โ€” 3 suppressed properties x 4 documents (got 0)
  PASS: F2: section 6 still FAILS the token once per document (got 4) โ€” skipped is not the same as passed
  PASS: F2: all four documents were exercised in section 6 (got 4)
  FAIL: F2: 'differs' is reported as SKIP on all four documents (got 0)
  FAIL: F2: 'surface' is reported as SKIP on all four documents (got 0)
  FAIL: F2: 'bg' is reported as SKIP on all four documents (got 0)
  PASS: F2: every skipped document also carries its token failure (no skip without a verdict)
---

=== Results: 38 passed, 10 failed, 0 skipped ===
--- sanity: real suite untouched ---

=== Results: 185 passed, 0 failed, 0 skipped ===
3abb053a73c86dc2397c6329f50e1dab  tests/test_app_contrast.php
> build ยท mimo-v2.6-flash-free
Mutation M1 caught (10 failures), real suite untouched. But F2's crash assertions never bit โ€” adding **M2** to prove they do:
โ† Write /tmp/opencode/contrastfix/mutate.php
Wrote file successfully: /tmp/opencode/contrastfix/mutate.php
> build ยท mimo-v2.6-flash-free
โ† Edit /tmp/opencode/contrastfix/mutate.php
Index: /tmp/opencode/contrastfix/mutate.php
===================================================================
--- /tmp/opencode/contrastfix/mutate.php
+++ /tmp/opencode/contrastfix/mutate.php
@@ -81,5 +81,5 @@
 echo "mode=$mode\n";
 echo "original_md5=" . md5($s) . "\nmutant_md5=" . md5($out) . "\n";
 echo "section6 bytes: " . strlen($s6) . " -> " . strlen($newS6) . "\n";
 echo "section6 else: " . preg_match_all('/\belse\b/', $s6) . " -> " . preg_match_all('/\belse\b/', $newS6) . "\n";
-echo "section6 skip(): " . preg_match_all('/\bskip\s*\(/', $s6) . " -> " . preg_match_all('/\bskip\s*\(//', $newS6) . "\n";
+echo "section6 skip(): " . preg_match_all('/\bskip\s*\(/', $s6) . " -> " . preg_match_all('/\bskip\s*\(/', $newS6) . "\n";

> build ยท mimo-v2.6-flash-free
$ cd /data/repo && for m in M1 M2; do echo "########## $m ##########"; php /tmp/opencode/contrastfix/mutate.php $m || { echo "BUILD FAILED"; continue; }; MUT=$(php /tmp/opencode/contrastfix/mutate.php $m | sed -n 's/^MUTANT=//p'); APP_CONTRAST_SUITE="$MUT" php tests/test_app_contrast_meta.php > /tmp/opencode/contrastfix/mutation-$m.log 2>&1; echo "meta exit=$?"; grep '^  FAIL:' /tmp/opencode/contrastfix/mutation-$m.log; tail -1 /tmp/opencode/contrastfix/mutation-$m.log; done; echo "=== real suite untouched ==="; md5sum tests/test_app_contrast.php; php tests/test_app_contrast.php 2>&1 | tail -1
########## M1 ##########
precondition: mutation leaked outside section 6
BUILD FAILED
########## M2 ##########
precondition: mutation leaked outside section 6
BUILD FAILED
=== real suite untouched ===
3abb053a73c86dc2397c6329f50e1dab  tests/test_app_contrast.php
=== Results: 185 passed, 0 failed, 0 skipped ===
> build ยท mimo-v2.6-flash-free
The splice is by construction; my *verification* of it used a stale offset (the tail moved when the block changed length):
โ† Edit /tmp/opencode/contrastfix/mutate.php
Index: /tmp/opencode/contrastfix/mutate.php
===================================================================
--- /tmp/opencode/contrastfix/mutate.php
+++ /tmp/opencode/contrastfix/mutate.php
@@ -66,10 +66,17 @@
 $out = substr($s, 0, $s6start) . $newS6 . substr($s, $s6end);
 file_put_contents($mut, $out);
 if (md5($out) === md5($s)) { fwrite(STDERR, "precondition: mutant identical to original\n"); exit(4); }
 
-/* Everything outside section 6 must be byte-identical. */
-if (substr($out, 0, $s6start) !== substr($s, 0, $s6start) || substr($out, $s6end) !== substr($s, $s6end)) {
+/*
+ * Everything outside section 6 must be byte-identical. The tail's OFFSET in
+ * $out moves by the block's length delta, so it is compared at
+ * $s6start + strlen($newS6) โ€” indexing it at $s6end (the offset in the
+ * ORIGINAL) is the bug this check was first written with, and it failed both
+ * mutations on correct splices.
+ */
+if (substr($out, 0, $s6start) !== substr($s, 0, $s6start)
+    || substr($out, $s6start + strlen($newS6)) !== substr($s, $s6end)) {
     fwrite(STDERR, "precondition: mutation leaked outside section 6\n"); exit(4);
 }
 
 $lines = [];

> build ยท mimo-v2.6-flash-free
$ cd /data/repo && for m in M1 M2; do echo "########## $m ##########"; php /tmp/opencode/contrastfix/mutate.php $m || { echo "BUILD FAILED"; continue; }; MUT=$(php /tmp/opencode/contrastfix/mutate.php $m | sed -n 's/^MUTANT=//p'); APP_CONTRAST_SUITE="$MUT" php tests/test_app_contrast_meta.php > /tmp/opencode/contrastfix/mutation-$m.log 2>&1; echo "meta exit=$?"; grep '^  FAIL:' /tmp/opencode/contrastfix/mutation-$m.log; tail -1 /tmp/opencode/contrastfix/mutation-$m.log; done; echo "=== real suite untouched ==="; md5sum tests/test_app_contrast.php; php tests/test_app_contrast.php 2>&1 | tail -1; php tests/test_app_contrast_meta.php 2>&1 | tail -1
########## M1 ##########
MUTANT=/tmp/opencode/contrastfix/mutant_M1.php
mode=M1
original_md5=3abb053a73c86dc2397c6329f50e1dab
mutant_md5=8249169517bf4933b9cce23915544b71
section6 bytes: 4335 -> 2773
section6 else: 1 -> 0
section6 skip(): 3 -> 0
meta exit=1
  FAIL: F1: section 6 reports 12 counted skips โ€” 3 suppressed properties x 4 documents (got 0)
  FAIL: F1: 'differs' is reported as SKIP on all four documents (got 0)
  FAIL: F1: 'surface' is reported as SKIP on all four documents (got 0)
  FAIL: F1: 'bg' is reported as SKIP on all four documents (got 0)
  FAIL: F2: section 6 reports 12 counted skips โ€” 3 suppressed properties x 4 documents (got 0)
  FAIL: F2: 'differs' is reported as SKIP on all four documents (got 0)
  FAIL: F2: 'surface' is reported as SKIP on all four documents (got 0)
  FAIL: F2: 'bg' is reported as SKIP on all four documents (got 0)
  FAIL: section 6 has exactly one else (got 0)
  FAIL: section 6 calls skip() exactly three times โ€” one per suppressed property (got 0)
=== Results: 38 passed, 10 failed, 0 skipped ===
########## M2 ##########
MUTANT=/tmp/opencode/contrastfix/mutant_M2.php
mode=M2
original_md5=3abb053a73c86dc2397c6329f50e1dab
mutant_md5=a29b981495168dcc584e43672127bbcf
section6 bytes: 4335 -> 4345
section6 else: 1 -> 1
section6 skip(): 3 -> 3
meta exit=1
  FAIL: F2: exit code is 1 (got 255) โ€” a broken document must be red, not green and not 255
  FAIL: F2: no PHP fatal โ€” an unparseable token must not abort the suite
  FAIL: F2: the suite reached its own === Results: line (a consumer always gets a verdict)
  FAIL: F2: section 6 reports 12 counted skips โ€” 3 suppressed properties x 4 documents (got 0)
  FAIL: F2: section 6 still FAILS the token once per document (got 1) โ€” skipped is not the same as passed
  FAIL: F2: all four documents were exercised in section 6 (got 1)
  FAIL: F2: 'differs' is reported as SKIP on all four documents (got 0)
  FAIL: F2: 'surface' is reported as SKIP on all four documents (got 0)
  FAIL: F2: 'bg' is reported as SKIP on all four documents (got 0)
=== Results: 39 passed, 9 failed, 0 skipped ===
=== real suite untouched ===
3abb053a73c86dc2397c6329f50e1dab  tests/test_app_contrast.php
=== Results: 185 passed, 0 failed, 0 skipped ===
=== Results: 48 passed, 0 failed, 0 skipped ===

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)
[Sat Sep 26 02:41:53 2026] 127.0.0.1:33994 Accepted
[Sat Sep 26 02:41:53 2026] 127.0.0.1:33994 Closing
[Sat Sep 26 02:41:53 2026] 127.0.0.1:34000 Accepted
[Sat Sep 26 02:41:53 2026] 127.0.0.1:34000 Closing
[Sat Sep 26 02:41:53 2026] 127.0.0.1:34002 Accepted
[Sat Sep 26 02:41:53 2026] 127.0.0.1:34002 Closing
[Sat Sep 26 02:41:53 2026] 127.0.0.1:34008 Accepted
[Sat Sep 26 02:41:53 2026] 127.0.0.1:34008 Closing
[Sat Sep 26 02:41:53 2026] 127.0.0.1:34014 Accepted
[Sat Sep 26 02:41:53 2026] 127.0.0.1:34014 Closing
[Sat Sep 26 02:41:53 2026] 127.0.0.1:34020 Accepted
[Sat Sep 26 02:41:54 2026] 127.0.0.1:34020 Closing
[Sat Sep 26 02:41:54 2026] 127.0.0.1:34032 Accepted
[Sat Sep 26 02:41:54 2026] 127.0.0.1:34032 Closing
[Sat Sep 26 02:44:17 2026] 127.0.0.1:47888 Accepted
[Sat Sep 26 02:44:17 2026] 127.0.0.1:47888 Closing
[Sat Sep 26 02:44:17 2026] 127.0.0.1:47902 Accepted
[Sat Sep 26 02:44:17 2026] 127.0.0.1:47902 Closing
[Sat Sep 26 02:44:17 2026] 127.0.0.1:47906 Accepted
[Sat Sep 26 02:44:17 2026] 127.0.0.1:47906 Closing
[Sat Sep 26 02:44:17 2026] 127.0.0.1:47910 Accepted
[Sat Sep 26 02:44:17 2026] 127.0.0.1:47910 Closing
[Sat Sep 26 02:44:23 2026] 127.0.0.1:47920 Accepted
[Sat Sep 26 02:44:23 2026] 127.0.0.1:47920 Closing
[Sat Sep 26 02:52:27 2026] 127.0.0.1:54136 Accepted
[Sat Sep 26 02:52:27 2026] 127.0.0.1:54136 Closing
[Sat Sep 26 02:52:27 2026] 127.0.0.1:54146 Accepted
[Sat Sep 26 02:52:27 2026] 127.0.0.1:54146 Closing
[Sat Sep 26 02:52:27 2026] 127.0.0.1:54154 Accepted
[Sat Sep 26 02:52:27 2026] 127.0.0.1:54154 Closing
[Sat Sep 26 02:52:27 2026] 127.0.0.1:54162 Accepted
[Sat Sep 26 02:52:27 2026] 127.0.0.1:54162 Closing
[Sat Sep 26 02:55:38 2026] 127.0.0.1:45102 Accepted
[Sat Sep 26 02:55:38 2026] 127.0.0.1:45102 Closing
[Sat Sep 26 02:55:38 2026] 127.0.0.1:45114 Accepted
[Sat Sep 26 02:55:38 2026] 127.0.0.1:45114 Closing
[Sat Sep 26 02:55:38 2026] 127.0.0.1:45118 Accepted
[Sat Sep 26 02:55:38 2026] 127.0.0.1:45118 Closing
[Sat Sep 26 02:55:38 2026] 127.0.0.1:45120 Accepted
[Sat Sep 26 02:55:38 2026] 127.0.0.1:45120 Closing
[Sat Sep 26 02:56:32 2026] 127.0.0.1:54932 Accepted
[Sat Sep 26 02:56:32 2026] 127.0.0.1:54932 Closing
[Sat Sep 26 02:56:32 2026] 127.0.0.1:54934 Accepted
[Sat Sep 26 02:56:32 2026] 127.0.0.1:54934 Closing
[Sat Sep 26 02:56:32 2026] 127.0.0.1:54950 Accepted
[Sat Sep 26 02:56:32 2026] 127.0.0.1:54950 Closing
[Sat Sep 26 02:56:32 2026] 127.0.0.1:54954 Accepted
[Sat Sep 26 02:56:32 2026] 127.0.0.1:54954 Closing
[Sat Sep 26 02:56:55 2026] 127.0.0.1:44602 Accepted
[Sat Sep 26 02:56:55 2026] 127.0.0.1:44602 Closing
[Sat Sep 26 02:56:55 2026] 127.0.0.1:44604 Accepted
[Sat Sep 26 02:56:55 2026] 127.0.0.1:44604 Closing
[Sat Sep 26 02:56:55 2026] 127.0.0.1:44620 Accepted
[Sat Sep 26 02:56:55 2026] 127.0.0.1:44620 Closing
[Sat Sep 26 02:56:55 2026] 127.0.0.1:44632 Accepted
[Sat Sep 26 02:56:55 2026] 127.0.0.1:44632 Closing
[Sat Sep 26 02:56:55 2026] 127.0.0.1:44636 Accepted
[Sat Sep 26 02:56:55 2026] 127.0.0.1:44636 Closing
[Sat Sep 26 02:56:58 2026] 127.0.0.1:44638 Accepted

Generated 2026-09-26 00:56:58 UTC · Gladex.de