CHECKPOINT ONLY — not a deliverable, not reviewed, not complete.
Committed by mos-remediation as TRANSPORT after the authoring seat (coder-mos1) became
unable to act: its context window was exceeded at 102.6%/372k AND its overflow-recovery
path failed ("Turn prefix summarization failed: servers overloaded"). The seat could not
process instructions or commit its own work, leaving 28 modified files durable only on
local disk.
Authorship preserved as coder-mos1 — this is transport, not authorship. The work is the
seat's; committing it is the only way to make it survive the rotation that must follow.
Scope note, unresolved: this diff spans the queue-guard tools (9 files under
framework/tools/git) AND 5 framework guides plus 11 agent templates. RM-03 was scoped to
ci-queue-wait.sh and its tests. Whether the doc/template edits are consequential to the
tri-state change or drive-by was queried and never answered — the seat was bricked before
it could reply. That question stays open and must be resolved before any of this is
reviewed; the wider edits may need splitting out.
Direct instance of D-31: commit-then-rotate works, rotate-without-commit loses everything.
96 lines
3.4 KiB
Bash
96 lines
3.4 KiB
Bash
#!/usr/bin/env bash
|
|
# GitHub Actions uses Checks API check-runs, not only legacy commit statuses.
|
|
|
|
set -u
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
WORK_DIR="${MOSAIC_TEST_WORK_DIR:-$PWD/.mosaic-test-work/ci-queue-wait-github-checks}"
|
|
REPO_DIR="$WORK_DIR/repo"
|
|
STUB_DIR="$WORK_DIR/stubs"
|
|
rm -rf "$WORK_DIR"
|
|
mkdir -p "$REPO_DIR" "$STUB_DIR"
|
|
git -C "$REPO_DIR" init -q
|
|
git -C "$REPO_DIR" checkout -q -b fix/github-checks
|
|
git -C "$REPO_DIR" remote add origin https://github.com/acme/widgets.git
|
|
|
|
cat > "$STUB_DIR/gh" <<'SH'
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
endpoint=""
|
|
for arg in "$@"; do
|
|
[[ "$arg" == repos/* ]] && endpoint="$arg"
|
|
done
|
|
printf '%s\n' "$*" >> "${MOSAIC_GH_CALL_LOG:?}"
|
|
case "$endpoint" in
|
|
repos/acme/widgets/branches/fix/github-checks)
|
|
printf '%s\n' '0123456789abcdef0123456789abcdef01234567'
|
|
;;
|
|
repos/acme/widgets/commits/*/statuses?per_page=100)
|
|
printf '%s\n' '[[]]'
|
|
;;
|
|
repos/acme/widgets/commits/*/check-runs?per_page=100\&filter=latest)
|
|
case "${MOSAIC_GH_CHECK_MODE:?}" in
|
|
success) printf '%s\n' '[{"total_count":1,"check_runs":[{"name":"ci","status":"completed","conclusion":"success"}]}]' ;;
|
|
pending) printf '%s\n' '[{"total_count":1,"check_runs":[{"name":"ci","status":"in_progress","conclusion":null}]}]' ;;
|
|
failure) printf '%s\n' '[{"total_count":1,"check_runs":[{"name":"ci","status":"completed","conclusion":"failure"}]}]' ;;
|
|
late-failure) printf '%s\n' '[{"total_count":2,"check_runs":[{"name":"first-page","status":"completed","conclusion":"success"}]},{"total_count":2,"check_runs":[{"name":"later-page","status":"completed","conclusion":"failure"}]}]' ;;
|
|
*) exit 2 ;;
|
|
esac
|
|
;;
|
|
*) echo "unexpected gh endpoint: $endpoint" >&2; exit 2 ;;
|
|
esac
|
|
SH
|
|
chmod +x "$STUB_DIR/gh"
|
|
|
|
run_guard() {
|
|
local mode="$1"
|
|
(
|
|
cd "$REPO_DIR" || exit
|
|
export PATH="$STUB_DIR:$PATH"
|
|
export MOSAIC_GH_CHECK_MODE="$mode"
|
|
export MOSAIC_GH_CALL_LOG="$WORK_DIR/gh-calls.log"
|
|
export MOSAIC_CI_QUEUE_AUDIT_LOG="$WORK_DIR/audit.jsonl"
|
|
"$SCRIPT_DIR/ci-queue-wait.sh" --purpose push -t 0 -i 0
|
|
)
|
|
}
|
|
|
|
failures=0
|
|
assert_case() {
|
|
local mode="$1" expected_rc="$2" expected_state="$3" output rc
|
|
set +e
|
|
output=$(run_guard "$mode" 2>&1)
|
|
rc=$?
|
|
set -e
|
|
if [[ "$expected_rc" == zero && "$rc" -ne 0 ]]; then
|
|
echo "FAIL github-$mode: expected rc=0, got $rc" >&2
|
|
failures=$((failures + 1))
|
|
elif [[ "$expected_rc" == nonzero && "$rc" -eq 0 ]]; then
|
|
echo "FAIL github-$mode: expected rc!=0, got 0" >&2
|
|
failures=$((failures + 1))
|
|
fi
|
|
if [[ "$output" != *"state=$expected_state"* ]]; then
|
|
echo "FAIL github-$mode: expected state=$expected_state, got:" >&2
|
|
printf '%s\n' "$output" >&2
|
|
failures=$((failures + 1))
|
|
fi
|
|
}
|
|
|
|
set -e
|
|
: > "$WORK_DIR/gh-calls.log"
|
|
assert_case success zero terminal-success
|
|
assert_case pending nonzero pending
|
|
assert_case failure nonzero terminal-failure
|
|
assert_case late-failure nonzero terminal-failure
|
|
|
|
if [[ $(grep -c 'check-runs?per_page=100&filter=latest' "$WORK_DIR/gh-calls.log") -lt 4 ]]; then
|
|
echo "FAIL: expected every case to query all Checks API pages" >&2
|
|
failures=$((failures + 1))
|
|
fi
|
|
|
|
if [[ "$failures" -ne 0 ]]; then
|
|
echo "GitHub check-runs regression failed ($failures assertions)" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "GitHub check-runs regression passed (4/4 cases, including later-page failure)"
|