Skip to content
Open
Show file tree
Hide file tree
Changes from 30 commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
0fc9b15
ci: onboard Blacksmith Testbox
lawrencecchen Aug 13, 2026
e407046
ci: provision cmux-tui Rust Testbox lane
lawrencecchen Aug 13, 2026
67f398f
ci: serialize Testbox benchmark stages
lawrencecchen Aug 13, 2026
5e31e66
ci: harden trusted Blacksmith Testbox lane
lawrencecchen Aug 13, 2026
33b0dfe
docs: tighten Testbox source preflight
lawrencecchen Aug 13, 2026
22800c1
ci: serialize and recover trusted Testbox runs
lawrencecchen Aug 13, 2026
42ab3da
ci: bind Testbox cleanup to setup receipts
lawrencecchen Aug 13, 2026
5735ee5
ci: pin Testbox hydration failure reporting
lawrencecchen Aug 13, 2026
bc7ff77
ci: bound and verify remote Testbox builds
lawrencecchen Aug 13, 2026
5cdb5fc
ci: verify Testbox ready phone-home
lawrencecchen Aug 13, 2026
94c6187
ci: fence setup markers and preserve evidence
lawrencecchen Aug 13, 2026
5da1401
docs: state Testbox trust configuration limits
lawrencecchen Aug 13, 2026
bd89ec7
ci: preview owned Testbox cleanup
lawrencecchen Aug 13, 2026
c1999b8
ci: assert trusted runner identity
lawrencecchen Aug 13, 2026
ba2fd40
ci: finalize Testbox readiness and cleanup states
lawrencecchen Aug 13, 2026
dd3765c
ci: make Testbox readiness and cleanup explicit
lawrencecchen Aug 13, 2026
b0c5b80
ci: gate Testbox readiness and destructive cleanup
lawrencecchen Aug 13, 2026
4a05ae6
ci: verify Testbox ownership before cleanup
lawrencecchen Aug 13, 2026
1c95667
ci: restrict Testbox token setup to main
lawrencecchen Aug 13, 2026
1dd0e2a
ci: validate Testbox inputs before cleanup
lawrencecchen Aug 13, 2026
7e1e7cc
ci: align Testbox cleanup with CLI inventory
lawrencecchen Aug 13, 2026
3c283ab
ci: make Testbox cleanup status-specific
lawrencecchen Aug 13, 2026
4465525
ci: parse Testbox status formats safely
lawrencecchen Aug 13, 2026
9fc1b55
ci: require a current Testbox cleanup preview
lawrencecchen Aug 13, 2026
63d74f3
ci: close final Testbox trust gaps
lawrencecchen Aug 13, 2026
d0e7108
ci: bound Testbox control-plane operations
lawrencecchen Aug 13, 2026
905939f
ci: use portable bounded Testbox commands
lawrencecchen Aug 13, 2026
ad1206b
ci: require preview-bound Testbox cleanup
lawrencecchen Aug 13, 2026
53fbe79
docs: bound Testbox downloads and cleanup hashing
lawrencecchen Aug 13, 2026
d210746
ci: handle Testbox metadata and CLI schema drift
lawrencecchen Aug 13, 2026
229119d
ci: tighten Testbox ownership parsing
lawrencecchen Aug 13, 2026
07c1856
ci: enforce hydrated toolchain identity
lawrencecchen Aug 13, 2026
2af052b
ci: bound warmup and preserve interrupted stages
lawrencecchen Aug 13, 2026
89bd10d
ci: compare toolchain identity in cmux-tui
lawrencecchen Aug 13, 2026
5c529ba
ci: own bounded Testbox keepalive
lawrencecchen Aug 13, 2026
6042481
ci: fix keepalive SSH activity detection
lawrencecchen Aug 13, 2026
00634a2
docs: require independently reviewed cleanup preview
lawrencecchen Aug 13, 2026
1f21d21
ci: pin reviewed Testbox branch and SHA
lawrencecchen Aug 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/actionlint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,5 @@ self-hosted-runner:
# Linux: Blacksmith primary (LINUX_RUNNER), WarpBuild overflow fallback.
- blacksmith-4vcpu-ubuntu-2404
- blacksmith-8vcpu-ubuntu-2404
- blacksmith-32vcpu-ubuntu-2404
- warp-ubuntu-latest-x64-4x
433 changes: 433 additions & 0 deletions .github/workflows/ci-workflow-guard-tests-testbox.yml

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,7 @@ artifacts/

# tmux verbose debug logs (tmux -v) that land in the cwd
tmux-*.log

# Remote-only Blacksmith cmux-tui benchmark output
/testbox-benchmark/
/.cmux-scratch/
40 changes: 40 additions & 0 deletions scripts/blacksmith-bounded-command.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/usr/bin/env bash
set -euo pipefail

if [[ $# -lt 2 || ! "$1" =~ ^[0-9]+$ ]]; then
echo "usage: $0 <timeout-seconds> <command> [args...]" >&2
exit 64
fi
seconds="$1"
shift

# Prefer GNU coreutils when present, while keeping the operator workflow
# usable on macOS hosts that have neither `timeout` nor `gtimeout`.
for candidate in gtimeout timeout; do
if command -v "$candidate" >/dev/null && "$candidate" --version 2>&1 | grep -q 'GNU coreutils'; then
exec "$candidate" --kill-after=5s "${seconds}s" "$@"
fi
done

exec python3 - "$seconds" "$@" <<'PY'
import os
import signal
import subprocess
import sys

seconds = float(sys.argv[1])
argv = sys.argv[2:]
if not argv:
raise SystemExit("missing command")
process = subprocess.Popen(argv, start_new_session=True)
try:
raise SystemExit(process.wait(timeout=seconds))
except subprocess.TimeoutExpired:
os.killpg(process.pid, signal.SIGTERM)
try:
process.wait(timeout=5)
except subprocess.TimeoutExpired:
os.killpg(process.pid, signal.SIGKILL)
process.wait()
raise SystemExit(124)
PY
Loading