Skip to content

fix(live-proof): unblock Crabbox setup and terminal cleanup - #1272

Merged
steipete merged 1 commit into
mainfrom
fix/live-proof-bootstrap-scope
Aug 28, 2026
Merged

fix(live-proof): unblock Crabbox setup and terminal cleanup#1272
steipete merged 1 commit into
mainfrom
fix/live-proof-bootstrap-scope

Conversation

@steipete

Copy link
Copy Markdown
Contributor

Related: openclaw/crabbox#1557 (comment) — verification stopped before the requested Node runtime test executed.

Additional instructions

MUST: Keep Allow edits from maintainers enabled for this PR so maintainers can help update the branch when needed.

What Problem This Solves

Fixes an issue where maintainers reviewing Crabbox would receive a failed live-verification result before the requested worker test ran. The published reason showed only Corepack's download notice, hiding the actionable setup error.

The exact receipt came from https://github.com/openclaw/clawsweeper/actions/runs/33059981352, ClawSweeper source 13f77495c4620d3a783eb0b055f9a18723027a7e, reviewing Crabbox 2477578b9cf3e6767bd6cb9bd0f0fdd06067c386. All four files in its artifact inventory were verified against recorded byte lengths and SHA-256 hashes. The requested command was npm test --prefix worker -- test/node-runtime.test.ts; the receipt marks both assertions as not_run.

Why This Change Was Made

The bootstrap correctly materializes the reviewed head into a scratch target checkout and uses a private HOME/cache. But Crabbox had no explicit repository profile, so it inherited an owner-level pnpm install --frozen-lockfile at the target root. That root has no package manifest; Crabbox's npm manifest and lockfile live under worker/. Node 24 was appropriate. The repair selects npm and npm ci --prefix worker through the existing repository-profile boundary, rather than adding package discovery, changing the target, or bypassing Corepack prompts.

The existing setup normalizer still adds --ignore-scripts. Close rules, validation commands, changed-gate settings, plan gates, environment filtering, and execution/publication contracts remain unchanged. Separately, the shared failure-detail producer now reserves bounded space for stderr, stdout, and any spawn error instead of selecting the first nonempty stream. Flattening that summary preserves both streams in one-line verification reasons.

The fresh current-main proof exposed a connected terminal cleanup blocker on a busy Darwin host. Stock lsof repeatedly scanned mapped images and working directories, and TTY discovery scanned all host processes. The watchdog was alive and the target had exited zero, but discovery consumed the existing cleanup window. Darwin now uses documented lsof -X descriptor/fileport discovery; TTY enumeration selects the already-bound terminal with ps -t. Duplicate lease descriptors on Darwin, exact identity checks, pre-signal revalidation, watchdog receipts, sweeps, and budgets are unchanged. Linux's inherited-fd contract is unchanged.

One independent test-only correction replaces a parent wall-clock assertion while its CLI clock was frozen. The fixture now directly observes forbidden sleeps and verifies exact pre/post-close reports, command counts, archives, and cursors. A deterministic shared-budget case checks elapsed time, the report-flush reserve, equality, and scope restoration. Production apply behavior and fixture budgets are unchanged.

User Impact

Crabbox verification can reach the declared worker command after target-native dependency setup. When setup or another proof command fails, informational stderr no longer suppresses a useful stdout cause. This PR does not change Crabbox runtime behavior, tests, permissions, or release notes.

The related release-owned changelog finding was a separate wrong-target policy injection. It is already fixed by #1261. No target changelog entry is removed here, and the old Crabbox public review is not rerun or rewritten.

OpenClaw Bay Impact

None. No lifecycle, queue, public schema, status, route, or observer contract changes. The existing verification schema and publication path remain in use.

Documentation Impact

Updated the active docs/live-proof.md and docs/target-repositories.md references. They document target-root setup CWD, explicit nested-package commands, repository-specific toolchain ownership, bounded multi-stream failure summaries, and descriptor/TTY-scoped cleanup discovery. ClawSweeper maintainers own these references; the source of truth remains repository profiles and the live-proof executor, diagnostic producer, and terminal driver. Revisit them when those contracts change.

Evidence

Validated commit: 5954ad0dcfd09209269d80f9494395ad627960cb
Validated base: 6230a9d7c8b4bb103a6872de63add3f7e3b77701.

Native macOS validation used Node 24.20.0, repository-pinned pnpm 11.10.0, npm 11.19.0, Bash 5.3.15, and tmux 3.7c. The generated terminal wrapper/watchdog use the system /bin/bash; selecting modern PATH Bash only supplies the unrelated workflow test prerequisite.

Validation Result
pnpm run check on the final frozen patch Exit 0; 3,874 tests: 3,865 passed, 0 failed, 9 platform skips
Separate changed-coverage stage in that check 12 passed, 0 failed
Full two-file terminal surface after cleanup repair 137 passed, 0 failed/skipped
node --test test/apply-runtime-budget.test.ts 11 passed, 0 failed/skipped
Existing release-policy prompt matrix Seven target tests passed; core rule absent for Crabbox and retained for OpenClaw
pnpm build:all, lint, formatting, docs/limits checks, git diff --check Passed
Fresh isolated Codex review before commit No actionable P0 findings

Final full-check coverage: 82.22% lines, 74.70% branches, 87.68% functions. The pre-commit diff SHA-256 remained ab871792539af5268ab227749ee74be20b4001c8b591b6682206a019b3bf4c69 throughout full validation and review. Source, assertions, suite concurrency, and coverage thresholds were not changed during the run.

The original pre-fix regression run had eight passes and six failures: the profile selected pnpm instead of npm, and browser/terminal setup failures lost stdout evidence behind stderr. The six failures include the parent test's failure accounting; they are not six independent defects.

Earlier full-check attempts are retained as history, not represented as passing proof: macOS Bash 3.2 lacked mapfile; the same workflow test passed with installed Bash 5. Two old deadline fixtures later failed when a shared budget expired before an assumed subprocess phase. The current base includes the phase-based fixture repair from #1270. This PR neither changes those tests nor increases budgets or changes assertions to accommodate them.

The first refreshed full check then had 3,847 passes, 16 failures, and 10 platform skips: 15 terminal cleanup failures plus the parent-clock apply assertion. These were diagnosed and repaired as described above; the failures are not discarded as retries.

Runtime TypeScript: +16/-8 (net +8), comprising bounded multi-stream diagnostics and three cleanup-query substitutions plus their invariant comments. Configuration: +20, for the explicit existing-contract Crabbox profile. Tests: +418/-74. Docs: +29/-5. No new dependency, configuration option, or production abstraction is introduced.

Real Behavior Proof

Claim and exercised surface: the real executeReviewLiveProofs owner materializes the exact reviewed commit, starts its normal child, resolves the authoritative Crabbox profile, runs official npm against the nested worker package, and produces a verification result without weakening install-script, environment, or exit-status controls. The diagnostic producer also retains the actionable stdout from an actual cold Corepack failure.

Environment and scenario: native macOS, Node 24, repository-pinned pnpm 11.10.0, npm, tmux, and modern Bash. The executed target is trusted synthetic source: a Go-style root without package.json, a worker/package.json and frozen lock, an offline local dependency, pre/postinstall hooks that would leave a marker, and root/worker verification scripts. No Crabbox source, credentials, provider, PostgreSQL server, or cloud resource is executed or allocated by this proof. The source fixture is dirtied after its commit to ensure the child uses the recorded head, not current filesystem contents.

Command: after building, execute the real-child scenario and its negative exit-status leg:

node --test --test-name-pattern='Crabbox profile bootstraps a trusted synthetic Go-root/nested npm fixture through the review child' test/live-proof-review-environment.test.ts

Inside the child the configured setup is normalized to npm ci --ignore-scripts --prefix worker. Its entry executes node verify.cjs root && npm test --prefix worker -- pass; a second independent exact-head child uses fail and exits 7.

Observed result and normalized trace:

profile: openclaw/crabbox; package_manager=npm
setup: npm ci --ignore-scripts --prefix worker
success: root/worker checks passed at the exact fixture head
success: drive_status=completed; overall_pass=true; cleanup completed
negative: same checks passed, then target exited 7
negative: drive_status=failed; overall_pass=false; no cleanup failure
source checkout: still dirty as seeded; no dependencies installed into it
worker lockfile: unchanged; install-hook marker: absent

Both legs verify the recorded head, root and worker CWDs, installed local dependency, absent install-hook marker, stripped credential-name sentinels, private HOME/cache, unchanged lockfile, and untouched dirty source checkout. The negative leg prints its completion marker and then exits 7; verification must still fail, so a marker cannot mask a failed command.

Cold bootstrap reproduction: an empty root with only a nested worker manifest was run with Corepack 0.35.0, pnpm 11.24.0, piped stdin, and private HOME/cache. It exited 1 rather than waiting for confirmation:

stderr: ! Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-11.24.0.tgz
stdout: [ERR_PNPM_NO_PKG_MANIFEST] No package.json found in <scratch>/target

Replaying those captured real streams through the repaired producer retains both the notice and manifest error within the existing 1,000-character cap. Corepack's actual interactive confirmation requires stdin.isTTY && !CI; the notice alone is not proof of a prompt blockage. Historical raw stdout was discarded, so the exact historical stdout cannot be recovered.

Cleanup before/after: an identical real printf/exit_zero plan failed before with an armed watchdog, held target exit 0, legitimate wrapper/sleep lease holders, and no completed cleanup receipt. Observed lsof calls took 1.93–2.39 seconds; whole-host ps scanned roughly 2,300 processes in 1.31 seconds versus 14–30 ms for bound-TTY selection. The complete repair produced the exact controller|ok|0 receipt and the original pane's death. Total drive time changed from 19.831 seconds (failed) to 16.622 seconds (completed); these are total drive times, not cleanup-budget measurements. An intermediate descriptor-only change was insufficient; both discovery costs were addressed. All 137 terminal tests passed afterward, including duplicated/closed/unrelated descriptors, resistant descendants, pane death, and both npm-fixture outcomes.

Apply fixture controls: the complete apply-budget file passed 11 tests. Deliberately inserting a sleep before either close guard was rejected immediately by the armed sleep observer. Ignoring elapsed time, dropping the flush reserve, and permitting the equality boundary each failed the corresponding deterministic assertion. A sixth control omitting pre-close admission was rejected by the report-shape assertion after another freshness guard intervened; the scratch driver's prediction of a close-command assertion was over-specific and failed. That attempt is retained as an observed rejection, not a clean driver run; neither source nor test assertions were changed to accommodate it. No real GitHub close occurred: the existing controlled transport fixtures were used.

Limits: this proves ClawSweeper's bootstrap, diagnostic, and native macOS cleanup boundaries, not a rerun of Crabbox's Node/PostgreSQL or managed-provider proof. Those successful target-specific runs remain documented in the original Crabbox PR. The synthetic child is unsandboxed with the existing sanitized scratch environment; environment filtering is not kernel isolation. This change does not expand source-trust permissions or claim to solve that separate containment boundary. No media or agent transcript is attached.

Select Crabbox's npm worker setup through its existing repository profile
instead of running the owner fallback's pnpm install at a manifest-less root.
Retain bounded stderr, stdout, and spawn-error evidence so an informational
download notice cannot hide the actual setup failure.

Limit Darwin lease discovery to descriptors/fileports and query the bound
TTY directly, avoiding unrelated host scans without changing cleanup
identity checks, sweeps, or budgets. Replace an unrelated mixed-clock apply
fixture assertion with direct sleep observation and exact yield outcomes.

Proven with real trusted npm/PTY fixtures, negative controls, the full local
gate (3,865 passed, zero failed, nine platform skips), and independent Codex
review. No target Crabbox code, tests, changelog, permissions, or gates change.

Context: openclaw/crabbox#1557 (comment)
@clawsweeper

clawsweeper Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

@steipete
steipete marked this pull request as ready for review August 28, 2026 01:48
writeFileSync(clockHookPath, `Date.now = () => ${Date.now()};\n`, "utf8");
writeFileSync(
clockHookPath,
`Date.now = () => ${Date.now()};\n${applySleepObserverPreload(sleepTracePath)}`,
@clawsweeper clawsweeper Bot added P2 Normal priority bug or improvement with limited blast radius. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Aug 28, 2026
@clawsweeper

clawsweeper Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed August 27, 2026, 9:53 PM ET / August 28, 2026, 01:53 UTC.

ClawSweeper review

What this changes

The PR adds a Crabbox-specific nested npm setup profile, preserves both stdout and stderr in live-proof failures, and narrows terminal-cleanup process discovery.

Merge readiness

⚠️ Ready for maintainer review - 1 item remains

Keep this PR open: current main still lacks the Crabbox-specific setup profile, and the introduced repair is a focused, evidence-backed fix with no actionable correctness finding.

Priority: P2
Reviewed head: 5954ad0dcfd09209269d80f9494395ad627960cb

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A focused implementation with direct after-fix runtime evidence and targeted regression coverage.
Proof confidence 🐚 platinum hermit (4/6) Sufficient (live_output): The PR body supplies after-fix native macOS live output for the real review child using a synthetic nested npm target, including blocked lifecycle hooks, sanitized credentials, and observed success and failure receipts.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Verified Sufficient (live_output): The PR body supplies after-fix native macOS live output for the real review child using a synthetic nested npm target, including blocked lifecycle hooks, sanitized credentials, and observed success and failure receipts.
Evidence reviewed 7 items Current main does not contain the fix: The fetched main revision has no explicit openclaw/crabbox profile; its generic OpenClaw fallback still selects pnpm setup, while this PR introduces npm ci for worker/.
Focused target-native setup: The introduced profile selects npm and runs npm ci --prefix worker; the existing executor runs configured setup from the materialized target worktree.
Failure diagnostics retain bounded evidence: The diagnostic helper retains nonempty stderr, stdout, and spawn-error text within a 1,000-character flattened result, and its regression cases exercise mixed streams and sanitization.
Findings None None.
Security None None.

Live Verification

Command: pnpm run build:node && node --test --test-name-pattern='Crabbox profile bootstraps a trusted synthetic Go-root/nested npm fixture through the review child' test/live-proof-review-environment.test.ts

Result: PASS (completed)

$ pnpm run build && pnpm run build:repair
$ tsc -p tsconfig.json
$ tsc -p tsconfig.repair.json
[live-proof synthetic nested npm] {"schema_version":1,"repo":"openclaw/crabbox","item":42,"head_sha":"34a3fe8fe95298f9c49e6cd09e46deed23d159c5","surface":"termi
nal","entry":"node verify.cjs root && npm test --prefix worker -- pass","drive_status":"completed","steps":[{"action":"expect_output","status":"completed","deta
il":"ok","subject":"synthetic worker checks passed","assertion":"synthetic worker checks passed","present_at_start":false,"satisfied":true}],"output":"synthetic
 root checks passed head=34a3fe8fe95298f9c49e6cd09e46deed23d159c5\n\n› synthetic-worker@1.0.0 test\n› node ../verify.cjs worker pass\n\nsynthetic worker checks
passed head=34a3fe8fe95298f9c49e6cd09e46deed23d159c5\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","overall_pass":tru
e,"verified_at":"2026-08-28T01:53:36.641Z"}
[live-proof synthetic nested npm] {"schema_version":1,"repo":"openclaw/crabbox","item":43,"head_sha":"34a3fe8fe95298f9c49e6cd09e46deed23d159c5","surface":"termi
nal","entry":"node verify.cjs root && npm test --prefix worker -- fail","drive_status":"failed","steps":[{"action":"expect_output","status":"failed","detail":"t
erminal command failed with exit status 7: \"node verify.cjs root && npm test --prefix worker -- fail\"","subject":"synthetic worker checks passed","assertion":
"synthetic worker checks passed","present_at_start":false,"satisfied":false}],"output":"[failure]\nterminal command failed with exit status 7: \"node verify.cjs
 root && npm test --prefix worker -- fail\"\n\n[command 1 combined output]\nsynthetic root checks passed head=34a3fe8fe95298f9c49e6cd09e46deed23d159c5\n\n› synt
hetic-worker@1.0.0 test\n› node ../verify.cjs worker fail\n\nsynthetic worker checks passed head=34a3fe8fe95298f9c49e6cd09e46deed23d159c5","failure":{"phase":"s
tep","reason":"terminal command failed with exit status 7: \"node verify.cjs root && npm test --prefix worker -- fail\"","step":1,"action":"expect_output"},"ove
rall_pass":false,"verified_at":"2026-08-28T01:53:39.774Z"}
✔ Crabbox profile bootstraps a trusted synthetic Go-root/nested npm fixture through the review child (6283.01225ms)
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 6372.22275
























Assertions:

  • PASS expect_output: synthetic worker checks passed

How this fits together

ClawSweeper materializes an exact PR head into an isolated checkout, uses its repository profile to install dependencies, then executes and publishes a bounded live-proof result. Its terminal driver also cleans up the proof process tree after execution.

flowchart LR
  A[Review artifact] --> B[Repository profile]
  B --> C[Cold target checkout]
  C --> D[Target-native setup]
  D --> E[Live proof command]
  E --> F[Verification receipt]
  E --> G[Terminal cleanup watchdog]
Loading

Before merge

  • Complete next step (P2) - No repair candidate is needed because this review found no introduced defect; remaining check completion is normal PR validation.
Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Production versus test delta production +44/-8, tests +418/-74 The production change is limited to profile and live-proof behavior, with larger focused coverage for setup, cleanup, diagnostics, and budget outcomes.

Technical review

Best possible solution:

Retain the explicit Crabbox profile and focused regression coverage, then land the repair after the exact-head check completes.

Do we have a high-confidence way to reproduce the issue?

Yes—source establishes that current main routes Crabbox through the generic pnpm fallback, while the PR’s exact-head fixture exercises the required nested npm setup and verification path.

Is this the best way to solve the issue?

Yes—the explicit repository profile is the narrowest maintainable fix because it preserves the generic fallback while declaring Crabbox’s known nested package layout.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 78540e0458bf.

Labels

Label changes:

  • add P2: This is a bounded reliability repair for review automation and proof cleanup, without an observed user-facing outage.
  • add proof: sufficient: Contributor real behavior proof is sufficient. The PR body supplies after-fix native macOS live output for the real review child using a synthetic nested npm target, including blocked lifecycle hooks, sanitized credentials, and observed success and failure receipts.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (live_output): The PR body supplies after-fix native macOS live output for the real review child using a synthetic nested npm target, including blocked lifecycle hooks, sanitized credentials, and observed success and failure receipts.

Label justifications:

  • P2: This is a bounded reliability repair for review automation and proof cleanup, without an observed user-facing outage.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (live_output): The PR body supplies after-fix native macOS live output for the real review child using a synthetic nested npm target, including blocked lifecycle hooks, sanitized credentials, and observed success and failure receipts.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body supplies after-fix native macOS live output for the real review child using a synthetic nested npm target, including blocked lifecycle hooks, sanitized credentials, and observed success and failure receipts.

Evidence

What I checked:

  • Current main does not contain the fix: The fetched main revision has no explicit openclaw/crabbox profile; its generic OpenClaw fallback still selects pnpm setup, while this PR introduces npm ci for worker/. (config/target-repositories.json:93, 78540e0458bf)
  • Focused target-native setup: The introduced profile selects npm and runs npm ci --prefix worker; the existing executor runs configured setup from the materialized target worktree. (config/target-repositories.json:101, 5954ad0dcfd0)
  • Failure diagnostics retain bounded evidence: The diagnostic helper retains nonempty stderr, stdout, and spawn-error text within a 1,000-character flattened result, and its regression cases exercise mixed streams and sanitization. (src/clawsweeper-media-proof.ts:87, 5954ad0dcfd0)
  • Cleanup scope remains guarded: Darwin lease lookup uses lsof -X and terminal enumeration is restricted to the bound TTY, while the existing pane identity and per-candidate revalidation remain in the generated cleanup script. (src/live-proof/drivers.ts:544, 5954ad0dcfd0)
  • Real execution coverage: The new synthetic fixture materializes an exact committed head, installs a nested offline npm package with lifecycle hooks disabled, runs success and failure paths, and checks the sanitized environment and published verification result. (test/live-proof-review-environment.test.ts:1087, 5954ad0dcfd0)
  • Feature history: Recent history shows Peter Steinberger introduced and repeatedly maintained the live-proof terminal path, while Vincent Koc authored the immediately preceding terminal-result repair. (src/live-proof/drivers.ts:527, d103c0cf5c98)

Likely related people:

  • steipete: Introduced the current PR and multiple earlier live-proof/terminal-driver changes, including the initial in-job verification path. (role: live-proof feature owner; confidence: high; commits: 5954ad0dcfd0, 03c1f452ec49, a958131e8846; files: src/live-proof/drivers.ts, src/clawsweeper-media-proof.ts, config/target-repositories.json)
  • Vincent Koc: Authored the preceding terminal-result repair and the existing npm-profile treatment for another Go-root target. (role: recent area contributor; confidence: medium; commits: d103c0cf5c98, afe976209aa5; files: src/live-proof/drivers.ts, config/target-repositories.json)

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
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.

Workflow

  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@steipete

Copy link
Copy Markdown
Contributor Author

Landing verification complete for 5954ad0dcfd09209269d80f9494395ad627960cb.

The current ClawSweeper review matches this head and the unchanged PR body. It reports no actionable findings or Rank-up moves, with proof: sufficient and ready-for-maintainer status. Its remaining routine check-completion item is satisfied: exact-head CI passed the full check, sparse repair build smoke, and Windows launcher checks; CodeQL passed both analyses. Current base 78540e0458bfcf452635b259b728516d59347343 is also green.

Local validation used Node 24.20.0, pinned pnpm 11.10.0, npm 11.19.0, Bash 5.3.15, and tmux 3.7c:

pnpm build:all
pnpm run check
node --test test/apply-runtime-budget.test.ts

The final full gate passed 3,865 tests, zero failures, nine platform skips, plus its separate 12-test changed-coverage stage. The apply-budget file passed 11 tests. Earlier setup/cleanup/fixture failures and the negative-control driver's over-specific prediction remain documented in the PR body; no budgets, coverage thresholds, or gates were relaxed. Fresh isolated Codex reviews passed both before commit and on the committed branch at the configured P0 threshold.

ClawSweeper's own fresh live verifier additionally executed the following command successfully, observing both the real nested npm child's success and its intentional exit-7 rejection:

pnpm run build:node && node --test --test-name-pattern='Crabbox profile bootstraps a trusted synthetic Go-root/nested npm fixture through the review child' test/live-proof-review-environment.test.ts

The repair stays in repository-profile selection, bounded diagnostics, and cleanup-query ownership. Runtime TypeScript is +16/-8; configuration +20; tests +418/-74; documentation +29/-5. Source tree and tested blobs were verified unchanged through commit and publication.

Limits remain explicit: trusted synthetic target proof, not another run of Crabbox's actual Node/PostgreSQL or managed-provider services; no fresh recording claim; environment filtering is not kernel isolation. No original Crabbox code, test, changelog, review comment, permissions, or gates were changed. OpenClaw Bay is unaffected.

@steipete explicitly approved landing exact head 5954ad0dcfd09209269d80f9494395ad627960cb.

@steipete
steipete merged commit 2a5c59f into main Aug 28, 2026
19 checks passed
@steipete
steipete deleted the fix/live-proof-bootstrap-scope branch August 28, 2026 02:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal priority bug or improvement with limited blast radius. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants