carlos / platform Public

gate: the probes are reverted; a passing job prints only its package lines

Probes 1-6 (eb2904d0..34a958a6) narrowed the runner's SIGTERM to a run that included root shard 2 and then lost it: after fix round 2's later commits every run finished, and probe 6 passed the whole gate with the same shard set that had died in probe 5. The gate goes back to its real shape (console in eight shards, root in three, e2e in four after the rest). Passing jobs now print only their package lines so a failing job's output stays inside the hub's 1 MB log tail.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev 7a782725ca26b9d64ed90b2987392096155ef6f5 parent 34a958a
1 file changed, +11 −18
  • .amadan/test-gate.sh +11 −18

CI failed — run details

CI log
=== gate ===
.amadan/test-gate.sh
gate: 2026-10-24T01:54:49Z on aarch64, 32 cpus, 61753 MB available, go1.26.8 linux/arm64
gate: +0s start launchctx
gate: +0s start vet
gate: +0s start gofmt
gate: +1s start rest
gate: +12s start internal_console@0
gate: +12s start internal_console@1
gate: +12s start internal_console@2
gate: +12s start internal_console@3
gate: +12s start internal_console@4
gate: +12s start internal_console@5
gate: +12s start internal_console@6
gate: +12s start internal_console@7
gate: +14s start root@0
gate: +14s start root@1
gate: +14s start root@2

amadan: step gate failed: signal: terminated

amadan: job failed at step gate — its output is above, not at the tail of this log
diff --git a/.amadan/test-gate.sh b/.amadan/test-gate.sh
index 57fc880cb..6b7c043dd 100755
--- a/.amadan/test-gate.sh
+++ b/.amadan/test-gate.sh
@@ -33,13 +33,7 @@
# next) can surface here. That is a bug in the test, not in the split.
set -eu
-: "${TEST_SPLIT=.=3}"
-: "${PROBE_ONLY=root@2}"
-: "${PROBE_PARALLEL=}"
-# PROBE (revert me): internal/console is not tested at all in this run, to
-# learn whether the runner's TERM (ten runs, ~35 s after the shards start)
-# follows the console tests. Nothing else changes.
-PROBE_SKIP="github.com/carlosframework/platform/internal/console"
+: "${TEST_SPLIT=./internal/console=8 .=3}"
weights=$(pwd)/.amadan/test-weights.tsv
# A shard count that is not a whole number of at least 1 would take a
@@ -185,7 +179,7 @@ if [ -z "$all" ]; then
fi
rest=""
for p in $all; do
- case " $split_paths $PROBE_SKIP " in
+ case " $split_paths " in
*" $p "*) ;;
*) rest="$rest $p" ;;
esac
@@ -244,15 +238,7 @@ for spec in $TEST_SPLIT; do
while [ "$i" -lt "$shards" ]; do
pattern=$(awk -v i="$i" -F '\t' '$1 == i { printf "%s%s", sep, $2; sep = "|" }' "$out/deal-$tag")
if [ -n "$pattern" ]; then
- if [ -z "$PROBE_ONLY" ] || [ "$tag@$i" = "$PROBE_ONLY" ]; then
- # PROBE: when .amadan/probe-names exists, this one shard runs
- # exactly the tests named there (the bisection's current half).
- if [ -s .amadan/probe-names ]; then
- pattern=$(paste -sd '|' .amadan/probe-names)
- fi
- # PROBE: PROBE_PARALLEL caps the shard's -parallel.
- start "$tag@$i" go test -count=1 -timeout 30m ${PROBE_PARALLEL:+-parallel $PROBE_PARALLEL} -run "^($pattern)\$" "$dir"
- fi
+ start "$tag@$i" go test -count=1 -timeout 30m -run "^($pattern)\$" "$dir"
launched=$((launched + $(awk -v i="$i" -F '\t' '$1 == i' "$out/deal-$tag" | wc -l)))
fi
i=$((i + 1))
@@ -317,7 +303,14 @@ for name in $names; do
# A job with no status file was killed before it could write one.
rc=$(cat "$out/$name.rc" 2>/dev/null || echo 1)
echo "=== $name ($(cat "$out/$name.secs" 2>/dev/null || echo '?') s)"
- cat "$out/$name.log" 2>/dev/null || true
+ # A passing job prints only its package lines: the hub keeps the last
+ # 1 MB of the log, and on 2026-10-24 the passing shards' chatter pushed
+ # a failing job's output out of it. A failing job prints everything.
+ if [ "$rc" -eq 0 ]; then
+ grep -E '^(ok|\?|FAIL|---|PASS|gofmt|no test files)' "$out/$name.log" 2>/dev/null || true
+ else
+ cat "$out/$name.log" 2>/dev/null || true
+ fi
case $name in
*@*)
if grep -q 'no tests to run' "$out/$name.log"; then