Skip to content

Windows portability: locking, temp dirs, shell quoting, paths and permission tests - #887

Merged
spilist merged 14 commits into
mainfrom
windows-portability
Oct 31, 2026
Merged

spilist merged 14 commits into
mainfrom
windows-portability

Conversation

@spilist

@spilist spilist commented Oct 31, 2026

Copy link
Copy Markdown
Collaborator

Why

charness did not run on Windows hosts (the ceal team's Windows seats). Each seat carried a local patch that had to be reapplied on every charness update.

What changes

Windows portability fixes:

  1. Scratch owner locking works without fcntl (Windows has none).
  2. Runtime snapshots honor the Windows temporary-directory variables, so child processes use the right temp folder.
  3. Reviewer commands are quoted for the Windows shell instead of POSIX quoting, which cmd.exe rejects.
  4. Windows critique producers use the running Python interpreter.
  5. Scratch inventory and restored paths are normalized for Windows separators.
  6. POSIX permission-bit assertions are limited to platforms that support them.

Fixes found while running the full release lane on this branch:

  • Final lane progress is observed after output capture drains (a receipt could miss the terminal report); the lane-watch test fake now matches the interface.
  • Release fixtures no longer recurse through Git wrappers.
  • Final progress observation catches only recoverable I/O failures instead of every exception.
  • The app-server client reports a child that already exited before it reports a response timeout. Under load, the old order turned an exit into a timeout. The EOF case passed 50 of 50 runs with 8 in parallel.
  • The Windows critique producer interpreter selection has a test.

Verification

./scripts/run-quality.sh --full --read-only --release passed at d034937: 90 passed, 0 failed (4 opt-in phases not run). The pre-push hook ran the same lane on push.

Slice-reopen: keep runtime roots stable when child processes inherit a Windows temporary directory.
Slice-reopen: use Windows byte-range locks when flock is unavailable.
Slice-reopen: generate cmd.exe-compatible command lines.
Slice-reopen: resolve python3 producer commands on Windows.
Slice-reopen: refresh file sizes and report repository paths consistently.
Slice-reopen: verify the final progress observation and its deterministic regression before the pre-push release lane.
Slice-reopen: focused regression repair; release lane is run by the lead.
Slice-reopen: focused race repair with loaded repeat proof; full release lane belongs to the lead.
@coderabbitai

coderabbitai Bot commented Oct 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: d1c30fdc-bbeb-49f2-82a3-f2037ddd70f7

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

@spilist spilist closed this Oct 31, 2026
@spilist
spilist merged commit f3eae63 into main Oct 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant