fix(mantis): stop Crabbox setup hanging on stalled checkout#108940
Conversation
|
Codex review: needs maintainer review before merge. Reviewed July 16, 2026, 7:25 AM ET / 11:25 UTC. Summary PR surface: Tests +17, Config 0. Total +17 across 6 files. Reproducibility: yes. Injecting a Git transport that stalls until TERM reproduces the unbounded setup condition, and the controlled after-fix run exercises all five extracted production steps. Review metrics: 1 noteworthy metric.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Next step before merge
Security Review detailsBest possible solution: Land the bounded TERM-then-KILL retrieval behavior after normal required checks complete, keeping the existing refs, shallow checkout, build, and proof semantics unchanged. Do we have a high-confidence way to reproduce the issue? Yes. Injecting a Git transport that stalls until TERM reproduces the unbounded setup condition, and the controlled after-fix run exercises all five extracted production steps. Is this the best way to solve the issue? Yes. Applying the repository’s existing bounded-process pattern directly to the only fallible network retrieval command is narrower and safer than adding retries, fallback sources, or new workflow configuration. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 122c6e4439cf. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Tests +17, Config 0. Total +17 across 6 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
0afcaa6 to
2bf8f8f
Compare
|
Maintainer review complete for head Best-fix verdict: the direct timeout around each fallible Crabbox Git retrieval is the clean owner-boundary fix. It preserves refs, build/install destinations, and proof behavior; a shared action or retry/fallback stack would add more surface without improving the hard bound. Proof:
Known proof gaps: none for this workflow-only change. |
|
Merged via squash.
|
…eout Cover all git fetch commands in the npm release workflow with a 120-second deadline and 10-second termination grace period, matching the pattern already applied to Mantis Crabbox workflows in openclaw#108940 (commit 16c2bbb). This includes the previously unbounded SHA-pinned origin/main fetch that ClawSweeper flagged as incomplete coverage. Fixes openclaw#109176
…eout Wrap all six git fetch commands with a 120-second deadline and 10-second termination grace period, matching the pattern established in openclaw#108940. Fixes openclaw#109176
## Summary - Problem: The `git clone` of `openclaw/docs.git` in `docs-sync-publish.yml` had no timeout bound, risking indefinite CI hangs on network stalls. Same pattern already fixed for Mantis Crabbox workflows in #108940. - Solution: Add `timeout --signal=TERM --kill-after=10s 120s` before the `git clone` command. - What changed: Wrapped the `git clone` command with timeout, matching the bounded pattern from #108940. - What did NOT change: All retry logic, publish sync steps, and non-network operations remain unchanged. ## Real behavior proof - **Behavior addressed:** CI docs-sync-publish workflow could hang indefinitely during git clone of external docs repo. - **Real environment tested:** Pattern analysis and cross-reference with already-merged Crabbox fix (#108940 / 16c2bbb). - **Exact change:** `if timeout --signal=TERM --kill-after=10s 120s git clone \` replaces `if git clone \`. - **Evidence after fix:** Same `timeout --signal=TERM --kill-after=10s 120s` wrapper applied to Crabbox source retrieval. - **What was not tested:** Live CI run. ## Root Cause - The git clone was added before the timeout-bounding pattern was standardized across CI workflows. Missing automated check for unbounded external git operations.
## Summary - Problem: The `git fetch` in `macos-release.yml` had no timeout bound, risking indefinite CI hangs on network stalls. Same pattern already fixed for Mantis Crabbox workflows in #108940. - Solution: Add `timeout --signal=TERM --kill-after=10s 120s` before the `git fetch` command. - What changed: Wrapped the `git fetch --no-tags origin` command with timeout. - What did NOT change: All release logic remains unchanged. ## Real behavior proof - **Behavior addressed:** CI macos-release could hang during git fetch. - **Evidence:** Same timeout pattern as merged Crabbox fix (#108940 / 16c2bbb). - **Change:** `timeout --signal=TERM --kill-after=10s 120s git fetch --no-tags origin` replaces `git fetch --no-tags origin`. ## Root Cause - The git fetch was added before the timeout-bounding pattern was standardized across CI workflows.
## Summary - Problem: The `git clone` of `openclaw/docs.git` in `docs-sync-publish.yml` had no timeout bound, risking indefinite CI hangs on network stalls. Same pattern already fixed for Mantis Crabbox workflows in openclaw#108940. - Solution: Add `timeout --signal=TERM --kill-after=10s 120s` before the `git clone` command. - What changed: Wrapped the `git clone` command with timeout, matching the bounded pattern from openclaw#108940. - What did NOT change: All retry logic, publish sync steps, and non-network operations remain unchanged. ## Real behavior proof - **Behavior addressed:** CI docs-sync-publish workflow could hang indefinitely during git clone of external docs repo. - **Real environment tested:** Pattern analysis and cross-reference with already-merged Crabbox fix (openclaw#108940 / 05fa39e). - **Exact change:** `if timeout --signal=TERM --kill-after=10s 120s git clone \` replaces `if git clone \`. - **Evidence after fix:** Same `timeout --signal=TERM --kill-after=10s 120s` wrapper applied to Crabbox source retrieval. - **What was not tested:** Live CI run. ## Root Cause - The git clone was added before the timeout-bounding pattern was standardized across CI workflows. Missing automated check for unbounded external git operations.
## Summary - Problem: The `git fetch` in `macos-release.yml` had no timeout bound, risking indefinite CI hangs on network stalls. Same pattern already fixed for Mantis Crabbox workflows in openclaw#108940. - Solution: Add `timeout --signal=TERM --kill-after=10s 120s` before the `git fetch` command. - What changed: Wrapped the `git fetch --no-tags origin` command with timeout. - What did NOT change: All release logic remains unchanged. ## Real behavior proof - **Behavior addressed:** CI macos-release could hang during git fetch. - **Evidence:** Same timeout pattern as merged Crabbox fix (openclaw#108940 / 05fa39e). - **Change:** `timeout --signal=TERM --kill-after=10s 120s git fetch --no-tags origin` replaces `git fetch --no-tags origin`. ## Root Cause - The git fetch was added before the timeout-bounding pattern was standardized across CI workflows.
…#109176) * fix(ci): bound all openclaw-npm-release git fetch operations with timeout Wrap all six git fetch commands with a 120-second deadline and 10-second termination grace period, matching the pattern established in #108940. Fixes #109176 * test(ci): cover npm release fetch deadlines Co-authored-by: wanyongstar <[email protected]> * ci: raise Control UI startup budget Unblock exact-head builds after the compressed startup bundle reached the previous 370 KiB ratchet. * ci: drop superseded Control UI budget bump Current main now carries the smaller 340 KiB startup ratchet from #110528, so remove the temporary 372 KiB adjustment while keeping the PR head conflict-free. --------- Co-authored-by: Peter Steinberger <[email protected]>
…openclaw#109176) * fix(ci): bound all openclaw-npm-release git fetch operations with timeout Wrap all six git fetch commands with a 120-second deadline and 10-second termination grace period, matching the pattern established in openclaw#108940. Fixes openclaw#109176 * test(ci): cover npm release fetch deadlines Co-authored-by: wanyongstar <[email protected]> * ci: raise Control UI startup budget Unblock exact-head builds after the compressed startup bundle reached the previous 370 KiB ratchet. * ci: drop superseded Control UI budget bump Current main now carries the smaller 340 KiB startup ratchet from openclaw#110528, so remove the temporary 372 KiB adjustment while keeping the PR head conflict-free. --------- Co-authored-by: Peter Steinberger <[email protected]>
What Problem This Solves
Fixes an issue where Mantis Discord, Slack, and Telegram live-proof jobs could remain stuck in Crabbox setup until their 2–6 hour job timeout when the Git checkout transport stalled.
Why This Change Was Made
All five repeated
Install Crabbox CLIsteps now run their existing clone or fetch through the repository's bounded process pattern: a 120-second deadline, followed by a 10-second termination grace period. Ref selection, shallow checkout, build, warmup, and proof behavior are unchanged.User Impact
Maintainers get a prompt, actionable checkout failure instead of losing a live-proof runner for hours before the requested proof begins.
Evidence
node scripts/run-vitest.mjs test/scripts/package-acceptance-workflow.test.ts --run --testNamePattern="bounds Mantis Crabbox source retrieval"— 1 passed.TERM. Every step returned 124 in about 1.03 seconds, the Git fixture observedTERM, and none reached the five-second outer watchdog.pnpm exec oxfmt --checkpassed for all six changed files;git diff --checkpassed.