mirror of
https://github.com/openclaw/openclaw.git
synced 2026-09-28 14:12:28 +08:00
The checkout fixture's lease reader only recognized ENOENT as retirement. Windows can return EPERM when the supervisor deletes the lease while an actor reopens it, crashing the sentinel into workflow.log after the Git owner correctly returned 124. The token-reread assumption was introduced by da7d113b90af21b5cc6d355a6f7706ea3912a8e1;8868f7ed8clater made those reads watcher-driven. Treat the denied lease as unavailable authority and stop the actor. Preserve other errors, Git exit codes, ownership checks, and cleanup joins. Extend the existing git-exit-124 case to inject the Windows denial during lease-only sentinel shutdown and require an unsignaled zero exit with empty workflow output. Proof on Blacksmith Testbox, Linux Node 24.19.0, CI=1, the tooling project and CI's four-worker/file-parallel route: unchanged pinned maince73f2c8f2passed the seven-file shard; the injected regression failed 3/3 against the baseline fixture. After the fix, 20/20 full-file runs passed (72 tests each), all 3 seven-file shard runs passed (187 passed, 4 existing platform skips each), and sibling coverage passed 614 tests (2 existing skips). Single-worker file cost: 52s wall; no added test cases, sleeps, or timeout changes. check-changed against the pinned base, formatting, and diff checks passed remotely. Native Windows execution was unavailable. Local hooks were disabled under the explicit no-local-checks constraint; review and push are delegated to the lead.