Skip to content

test(lock): let contention watchdog own liveness - #217

Merged
steipete merged 2 commits into
mainfrom
test/sidecar-contention-watchdog-budget
Sep 3, 2026
Merged

test(lock): let contention watchdog own liveness#217
steipete merged 2 commits into
mainfrom
test/sidecar-contention-watchdog-budget

Conversation

@steipete

@steipete steipete commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Summary

  • make the whole-worker watchdog the sole liveness budget for sidecar contention proof children;
  • remove the proof's accidental per-acquisition fairness requirement while preserving every mutual-exclusion, ownership, cleanup, and workload assertion;
  • keep the un-watched POSIX permission case on its existing finite acquisition budget;
  • add a static proof-contract guard and an operational 0.7.3 changelog entry.

Root cause

The contention proof launches four processes and requires each to complete 25 acquisitions. Every acquisition previously had a 15-second timeout and a finite retry count, while the parent independently enforced a 60-second whole-worker watchdog.

Actual Windows native proof reproduced the mismatch:

  • pathname async/sync and Root async completed 300/300;
  • Root sync made healthy progress but completed 71/100;
  • two workers completed all 25 acquisitions, a third completed 21, and a fourth completed none;
  • the latter two reported file_lock_timeout in acquisition;
  • no 60-second child watchdog fired; the case failed after about 30 seconds;
  • the unchanged failed job reran successfully, and many surrounding exact-head runs passed.

Cross-process locks promise exclusion, exact ownership, fail-closed stale behavior, and caller-selected waiting budgets—not FIFO fairness. A releasing worker can reacquire while another process sleeps or inspects the old record. Requiring every contender to win within 15 seconds can therefore false-fail while other workers are safely progressing.

Repair

Contention children now use lockOptions(Infinity) with no retry-count limit. The existing 60-second parent watchdog owns liveness for their whole workload. It starts at child launch, kills a stuck child, resolves failed barriers on child closure, and reaps every sibling before scratch cleanup.

The finite 15-second default remains in lockOptions() and is still used by the POSIX permission/release case, which has no child watchdog. Backoff/jitter, stale timeout, and fail-closed recovery are unchanged.

The proof still requires:

  • four cases, four workers each, 25 acquisitions per worker;
  • 400 exact contention acquisitions;
  • a 2 ms critical section;
  • live ownership and payload verification;
  • an exclusive marker and exact shared counter;
  • release completion plus marker/sidecar/reclaim absence;
  • the two-acquisition POSIX release-retry proof where supported.

No production source, lock API/default, fairness behavior, denial cap, test timeout, workflow timeout, workload size, native code, exports, or types changed. Production LOC delta: zero.

Regression guard

A new static contract test reads the standalone proof without importing or launching it and pins:

  • finite lockOptions() default;
  • worker-only Infinity and omitted retry count;
  • unchanged backoff/jitter and fail-closed recovery;
  • finite permission-case calls;
  • four-by-25 workload and 2 ms critical section;
  • 60-second watchdog, SIGKILL, child-close settlement, sibling kill, and Promise.allSettled reaping.

Local validation

  • focused proof-contract test: 5 passed;
  • relevant lock suites: 163 passed / 6 skipped;
  • complete macOS arm64 Node.js 24.20.0 proof, native off: 400/400 contention plus 2/2 permission acquisitions;
  • complete macOS arm64 Node.js 24.20.0 proof, native require: 400/400 contention plus 2/2 permission acquisitions;
  • build and host native binding staging: passed;
  • full CI=1 pnpm check: 202 test files passed / 2 skipped, 7,085 tests passed / 80 skipped;
  • security suite: 84 passed;
  • release-package smoke: passed;
  • git diff --check: passed;
  • Codex autoreview: no accepted/actionable finding, patch correct at 0.99.

Neither local proof hit the watchdog or failed an exclusion, identity, counter, release, or cleanup assertion.

Windows validation results

The standalone PR run passed 400/400 in both Windows fallback and Windows required-native modes. Four of the original five whole workflow runs passed. The fifth, 33767148513, failed with a separate Root async EPERM; it remains preserved and was not retried away. That discovery prompted the separate production repair in #218, rather than broadening this harness-only PR.

Complete combined after-fix proof now records five independent Windows x64 / Node 24.19.0 fallback/native pairs at frozen integration head dab64dbb922afb5a86cd2fb782544d9d334a3052, tree 0e27501c81d73003da4a05c48df6e7d1fbc30e3d: ten successful 400/400 invocations, 4,000 acquisitions, exact counters, marker/sidecar absence, and no watchdog expiry. Checkout SHAs were verified from job logs. This is the combined validation tree, not this PR's standalone head; this PR's script and guard are byte-identical in that tree.

Six combined workflows were launched: five completed both proofs, while 33777327817 failed an existing private-store stress test before its fallback proof. The additional independent run supplied the missing executed pair; the failed workflow is retained, not counted as passing. No dedicated physical Windows provider is claimed: these are actual Windows GitHub Actions executions.

Disposable local negative controls also verified that four deliberately blocked sync children were killed and reaped at the existing 60-second watchdog, and that retained sidecars fail the proof despite complete counters. Both exited nonzero and left their scratch roots empty. Local combined full-check attempts separately stalled in a workflow-dispatch fixture and are preserved as failures, not represented as successful checks.

@steipete
steipete requested a review from a team as a code owner September 3, 2026 14:29
@clawsweeper

clawsweeper Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

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

@clawsweeper clawsweeper Bot added P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. merge-risk: 🚨 automation 🚨 Merging this PR could break CI, automerge, proof capture, label sync, or automation. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Sep 3, 2026
@clawsweeper

clawsweeper Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed September 3, 2026, 1:00 PM ET / 17:00 UTC.

ClawSweeper review

What this changes

The PR moves sidecar-lock contention proof workers to an unbounded per-acquisition wait governed by their existing 60-second parent watchdog, and adds a static contract test plus an Unreleased changelog entry.

Regression provenance

Possible regression — probable (reproduction; reviewed change; failure trace). No predecessor PR is attributed.

Merge readiness

Ready for maintainer review

Keep open: this is a focused, active CI-proof repair with strong after-fix Windows evidence and no introduced correctness or security defect found.

Priority: P3
Reviewed head: 6199a22201329b32aff90c3ca79490a2fbef0e14

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) A small, contract-guarded CI-proof correction with strong real Windows execution evidence and no actionable defect found.
Proof confidence 🦞 diamond lobster (5/6) Sufficient (logs): The changed production-facing proof owner is the sidecar contention script invoked by CI; supplied Windows fallback and required-native traces exercise its built-package entrypoint and report 4,000 successful post-fix acquisitions with counter and cleanup assertions, while preserved unrelated failures are not counted as passes.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Verified Sufficient (logs): The changed production-facing proof owner is the sidecar contention script invoked by CI; supplied Windows fallback and required-native traces exercise its built-package entrypoint and report 4,000 successful post-fix acquisitions with counter and cleanup assertions, while preserved unrelated failures are not counted as passes.
Evidence reviewed 6 items Introduced worker budget: The introduced worker options use the documented unlimited timeout with an omitted retry count, while retaining fail-closed stale recovery; this is confined to the proof script.
Bounded liveness owner: Every spawned child retains the existing 60-second deadline, is killed on expiry, and is awaited before scratch cleanup.
Public lock contract: The lock documentation explicitly permits timeoutMs: Infinity and states that omitted retry counts are unlimited; the PR keeps the finite default for the unwatched permission case.
Findings None None.
Security None None.

How this fits together

The sidecar contention proof exercises the public cross-process file-lock API in child processes and is run by CI in JavaScript-fallback and required-native modes. It verifies mutual exclusion, ownership, release, and cleanup without changing the package’s production lock behavior.

flowchart LR
  A[CI job] --> B[Contention proof]
  B --> C[Four child workers]
  C --> D[Sidecar lock acquisition]
  D --> E[Ownership and counter checks]
  C --> F[60-second worker watchdog]
  F --> G[Kill and reap on stall]
  E --> H[Pass or fail result]
Loading

Before merge

None.

Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Validation-only surface 0 production files; 1 proof script changed; 1 contract test added; 1 changelog line added The package API and production lock implementation are untouched while the CI proof’s liveness contract gains regression coverage.

Technical review

Best possible solution:

Land the narrowly scoped proof-harness change after normal maintainer review, retaining the finite permission-case budget and the 60-second kill-and-reap watchdog.

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

Yes—retained Windows evidence shows the prior false timeout under healthy contention, and the current-main baseline in the verified PR delta has the finite worker acquisition budget that permits it.

Is this the best way to solve the issue?

Yes—the change uses the documented unlimited-wait mode only inside watched proof workers while preserving the finite budget where no parent watchdog exists.

AGENTS.md: found and applied where relevant.

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

Labels

Label changes:

  • add proof: sufficient: Contributor real behavior proof is sufficient. The changed production-facing proof owner is the sidecar contention script invoked by CI; supplied Windows fallback and required-native traces exercise its built-package entrypoint and report 4,000 successful post-fix acquisitions with counter and cleanup assertions, while preserved unrelated failures are not counted as passes.
  • add rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (logs): The changed production-facing proof owner is the sidecar contention script invoked by CI; supplied Windows fallback and required-native traces exercise its built-package entrypoint and report 4,000 successful post-fix acquisitions with counter and cleanup assertions, while preserved unrelated failures are not counted as passes.
  • remove status: 📣 needs proof: Current PR status label is status: 👀 ready for maintainer look.
  • remove rating: 🦪 silver shellfish: Current PR rating is rating: 🐚 platinum hermit, so this older rating label is no longer current.
  • remove merge-risk: 🚨 automation: Current PR review selected no merge-risk labels.

Label justifications:

  • P3: This is a low-risk CI proof-harness reliability improvement with no production behavior change.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (logs): The changed production-facing proof owner is the sidecar contention script invoked by CI; supplied Windows fallback and required-native traces exercise its built-package entrypoint and report 4,000 successful post-fix acquisitions with counter and cleanup assertions, while preserved unrelated failures are not counted as passes.
  • proof: sufficient: Contributor real behavior proof is sufficient. The changed production-facing proof owner is the sidecar contention script invoked by CI; supplied Windows fallback and required-native traces exercise its built-package entrypoint and report 4,000 successful post-fix acquisitions with counter and cleanup assertions, while preserved unrelated failures are not counted as passes.

Evidence

What I checked:

  • Introduced worker budget: The introduced worker options use the documented unlimited timeout with an omitted retry count, while retaining fail-closed stale recovery; this is confined to the proof script. (scripts/sidecar-contention-proof.mjs:31, 6199a2220132)
  • Bounded liveness owner: Every spawned child retains the existing 60-second deadline, is killed on expiry, and is awaited before scratch cleanup. (scripts/sidecar-contention-proof.mjs:102, 6199a2220132)
  • Public lock contract: The lock documentation explicitly permits timeoutMs: Infinity and states that omitted retry counts are unlimited; the PR keeps the finite default for the unwatched permission case. (docs/sidecar-lock.md:110, 6199a2220132)
  • CI integration: CI invokes this proof in fallback and required-native jobs, so the watchdog and reaping behavior are exercised through the built public package path. (.github/workflows/ci.yml:70, 6199a2220132)
  • Feature history: Blame attributes the introduced unlimited worker options to the PR’s original watchdog commit, while the existing watchdog implementation predates it. (scripts/sidecar-contention-proof.mjs:31, 07e65986b153)
  • After-fix Windows proof: The supplied PR body and linked validation comment record five Windows fallback/native pairs with 400/400 acquisitions each, exact counters, absent marker/sidecar files, and no watchdog expiry; the comment distinguishes the retained unrelated failures and identifies the validated tree as the current head tree. (6199a2220132)

Likely related people:

  • unknown: Suggested for follow-up; no historical authorship or introduction is verified. (role: unverified routing candidate; confidence: low)

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.

History

Review history (3 earlier review cycles)
  • reviewed 2026-09-03T14:32:22.523Z sha 07e6598 :: needs real behavior proof before merge. :: none
  • reviewed 2026-09-03T16:43:10.559Z sha 07e6598 :: blocked before merge. :: none
  • reviewed 2026-09-03T16:50:30.957Z sha 07e6598 :: blocked before merge. :: [P2] Keep the standalone Windows proof green before merge

@steipete

steipete commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

Windows validation update: this PR remains on hold; the declared five-run whole-proof gate has not passed.

At candidate 07e65986b15398d82db7c74bb4cd683710490785, four independent workflows completed successfully (33767135233, 33767151601, 33767154830, and 33767158548). Workflow 33767148513 failed and is preserved without a rerun.

The failed fallback Windows job reported pathname-async 100/100, pathname-sync 100/100, root-async 78/100, and root-sync 100/100. One root-async worker returned EPERM during acquisition after three completed cycles; the other three completed 25 cycles each. No watchdog fired. The native Windows job passed.

The PR's own Windows outputs show 400/400 in both fallback and native modes on Node 24.19.0 x64, including exact counters and marker/sidecar absence. That is useful after-fix evidence, but it does not erase the independent failure.

The observed EPERM is distinct from the root-sync file_lock_timeout this harness change targets. Its exact filesystem origin is not present in the intentionally redacted worker report. Root-backed acquisition denial handling is being investigated separately, with deterministic tests before any production change. This PR remains harness-only, and production denial caps, caller budgets, and filesystem safety checks will not be weakened to obtain a passing proof.

@steipete

steipete commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

Combined Windows validation is complete for the lock changes in #217 and #218.

Frozen validation head: dab64dbb922afb5a86cd2fb782544d9d334a3052; tree: 0e27501c81d73003da4a05c48df6e7d1fbc30e3d. This combines the unchanged reviewed watchdog patch 07e65986b15398d82db7c74bb4cd683710490785 and the separate Root exclusive-create retry patch 570fa9710693b4fa209cd2441585b518e43752ef. It is a validation-only merge, not either PR's standalone head and not a merge to main.

Five independent workflow-dispatch runs, all attempt 1, each completed Windows x64 / Node 24.19.0 fallback off and native require:

Run Fallback Required native
33777333762 400/400 400/400
33777339065 400/400 400/400
33777343904 400/400 400/400
33777348487 400/400 400/400
33778308002 400/400 400/400

Each job's checkout log was verified against the frozen SHA, not merely its workflow metadata. All four cases per invocation reported 100/100, counter 100, markerAbsent=true, and sidecarAbsent=true. Each summary reported 16 launched processes and 400/400 contention acquisitions. Total: ten successful Windows proof invocations, 4,000 acquisitions. The POSIX permission case is explicitly skipped on Windows. The new 21-test Root exclusive-create regression suite also passed in each successful Windows fallback job, covering injected denial recovery, bounded exhaustion, and original-error/replay protections.

Preserved failure: six workflows were launched. 33777327817, attempt 1, failed its existing private-store stress test at 5,000ms before reaching fallback contention. It was not rerun or counted as a passing fallback proof. Its native job passed. The additional independent run obtained the missing executed proof; it does not turn the failed workflow into a pass.

The earlier watchdog-only failure 33767148513, with Root async EPERM, also remains preserved. No EPERM or watchdog failure appeared in the ten successful combined invocations. This is after-fix behavioral evidence, not proof that the original runtime syscall has been conclusively identified or that no undiscovered bug remains.

Local combined contention also passed 400/400 plus 2/2 permission recovery acquisitions in each of off and require on macOS arm64 / Node 24.20.0. Disposable harness negative controls verified that blocked sync children are killed and reaped by the unchanged 60-second watchdog, and that deliberately retained sidecars cause failure despite counters reaching 100. Both negative fixtures exited nonzero and left their scratch roots empty.

Local combined full-check failures are separately preserved: one stalled in an unbounded workflow-dispatch Bash fixture and was manually interrupted; its repeat reached an external validation watchdog. That test-lifetime issue is being handled separately; these attempts are not claimed as local full-check passes. The production-only Root repair's complete local check passed 7,101 tests / 80 skipped and its CI passed across platforms.

Neither PR is being represented as a release, and their implementation scopes remain separate.

@steipete

steipete commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

Windows proof is now in the updated PR body and combined proof comment. The standalone PR head passed 400/400 in both modes; the unchanged watchdog patch plus the separate #218 repair has five complete independent Windows fallback/native pairs (4,000 acquisitions), with checkout SHA verification, retained failed attempts, and executed watchdog negative controls. The validation-only merge is clearly distinguished from this PR's head.

Please replace the earlier future-proof verdict using the current evidence. No source changes were made to this PR, and no failed workflow was erased or reclassified as passing.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event exact_review_queue).
Result: when the review finishes, ClawSweeper will create the durable review comment if needed or update the existing comment in place.

Re-review progress:

Update the watchdog proof PR onto main without changing its script or guard. The resulting tree matches the frozen combined Windows validation tree byte for byte.
@steipete

steipete commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

Updated this PR onto the separately landed Root denial repair, #218 (ae0cc7e3f6e66b75965d413c7084a0dfbeb5c788).

Current PR head: 6199a22201329b32aff90c3ca79490a2fbef0e14.
Tree: 0e27501c81d73003da4a05c48df6e7d1fbc30e3d.

The tree is byte-for-byte identical to frozen validation head dab64dbb922afb5a86cd2fb782544d9d334a3052, already exercised in the five complete independent Windows fallback/native pairs. The script and contract guard are unchanged from this PR's original head. The changelog merge preserved both entries.

Focused tests on the updated branch passed 26/26. Updated-base Codex autoreview found no accepted/actionable P0 findings. Fresh exact-head CI is running.

The documented failure-latency consequence is accepted: watched children may spend up to the existing 60-second whole-worker deadline, rather than requiring each acquisition to succeed within 15 seconds. The deadline is unchanged and tested to kill/reap blocked sync children; production lock budgets and the unwatched parent permission case remain bounded as before. This is the intended separation between contention safety and harness liveness.

The original Root async EPERM failure and the later pre-proof store-stress timeout remain preserved, with the latter not counted as a successful proof.

@clawsweeper clawsweeper Bot added 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. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. merge-risk: 🚨 automation 🚨 Merging this PR could break CI, automerge, proof capture, label sync, or automation. labels Sep 3, 2026
@steipete
steipete merged commit 9edca2c into main Sep 3, 2026
28 checks passed
@steipete

steipete commented Sep 3, 2026

Copy link
Copy Markdown
Contributor Author

Sidecar watchdog proof repair landed

PR: #217
Merge: 9edca2c
Reviewed head: 6199a22
Reviewed and merged tree: 0e27501c81d73003da4a05c48df6e7d1fbc30e3d
Base: ae0cc7e (separate Root repair #218)

Watched contention children now use an infinite per-acquisition deadline with omitted retry count. The existing 60-second parent watchdog remains the sole whole-worker liveness bound; four cases, four workers per case, 25 acquisitions per worker, ownership checks, exclusive marker, exact counters, release barrier, and kill/reap cleanup are unchanged. Unwatched POSIX permission acquisitions retain the finite 15-second default. Production LOC changed by this PR: zero.

The initial Windows Root-sync failure exhausted per-acquisition budgets while other workers progressed and before the whole-worker watchdog fired. Cross-process FIFO fairness is not a lock contract. This repair removes that accidental proof requirement without changing production lock budgets or safety checks. The exact historical scheduling cause is not claimed to be proven.

Initial local proof passed 400/400 plus 2/2 permission acquisitions in each mode. Initial full check passed 7,085 tests / 80 skipped; security 84; package smoke and diff checks passed. Updated-base focused tests passed 26/26, and autoreview found no accepted P0 findings. Exact final-head CI run 33781536626 passed; ClawSweeper reviewed head 6199a22 with no correctness/security findings and sufficient Windows logs.

Five complete independent Windows x64 / Node 24.19.0 fallback/native pairs, all attempt 1, passed on frozen integration head dab64db. Its entire tree is identical to the landed tree. Each of ten invocations completed 400/400 with counter and marker/sidecar absence assertions: 4,000 successful acquisitions. Every checkout SHA was verified from job logs. Evidence: root-create-denial-combined-windows-summary.json and per-job logs.

Six workflows were launched. Run 33777327817 failed its existing private-store stress test before fallback proof; it was preserved, not rerun or counted as passing. The supplemental independent run provided the missing executed pair. The earlier watchdog-only run 33767148513 also remains preserved: Root async EPERM was separate from this harness concern and led to the independently reproduced Root-create fix in #218. No claim that all workflows passed or that the original EPERM syscall was conclusively identified.

Disposable negative controls executed the actual watchdog: four deliberately blocked sync children were SIGKILLed after the unchanged 60-second deadline and reaped before scratch cleanup. Deliberately retained sidecars caused all contention cases to fail the absence check despite counters reaching 100. Both fault fixtures exited nonzero and left scratch empty.

After merging, main was synchronized and verified clean at 9edca2c. A fresh build, the 26 relevant regressions, and complete built-package off/require proofs were rerun from actual merged main on macOS arm64 / Node 24.20.0. Both modes passed 400/400 plus the POSIX permission recovery case. Outputs: sidecar-landed-main-{regressions.log,off.jsonl,require.jsonl}.

Separate local combined full-check attempts stalled or timed out in other fixtures and remain failed evidence. The dispatch subprocess lifetime follow-up is PR219 and is not part of this merge. No release, tag, version bump, or registry publication was performed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. 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.

1 participant