Skip to content

Windows development supervisor (phase 2) - #61

Merged
1bye merged 11 commits into
mainfrom
codex/windows-dev-57
Nov 12, 2026
Merged

1bye merged 11 commits into
mainfrom
codex/windows-dev-57

Conversation

@1bye

@1bye 1bye commented Nov 12, 2026 •

Copy link
Copy Markdown
Owner

Phase 2 of #57, targeting main after #59 merged as 616ab4c.

rake dev now runs the desktop and Web supervisor on Windows. App/build/service children use the existing suspended-enrollment, kill-on-close Job boundary; readers finish after owned descendants stop. Browser openers run as detached raw processes outside owned Jobs and survive session shutdown. Windows --preview fails explicitly because native capture remains macOS Swift. CLI inspection, CDP enablement and native source opening remain phase 3.

Windows readiness preserves byte bounds and EOF/last-line behavior using cancellable anonymous-pipe polling. Named-pipe reload/checkpoint exchanges retain the total deadline, mutation keys and matching abort after cancellation. HTTP request reads poll for shutdown on Windows; responses send their FIN before socket handles close. Unix retains its process groups, signals and existing I/O behavior. Flags, status/JSON formats, session layout and protocols are unchanged.

Security: phase 1's current-user-only DACL, owner and reparse validation protects discovery, checkpoints and JSON output. Session/helper directories are exclusively created with owner-only DACLs. Children enter the Job while suspended, preventing descendants escaping initial enrollment. Windows fingerprints use UTF-16 paths and skip reparse points; Unix path bytes and ordering remain unchanged. Web origins retain token authentication and the refusal to bridge native IPC without authorization.

Windows integration coverage uses real Jobs, production private files/named pipes and a headless app fixture. It exercises start, stateful reload, checkpoint abort, inherited output readers, descendant termination, UTF-8 output, detached-opener survival, Web reload/origin shutdown, readiness EOF/last-line/overflow/cancellation and junction-excluding fingerprints. CDP/companion readiness uses explicit process fixtures. No test bounds or assertions were relaxed.

Validation at current head b6ef6ad: main-base CI run passed every active job:

Mac validation: full CLI suite 355 passed, zero failed, two existing ignored with installed Python 3.14.4; relevant project-build repeat 68 passed; final HTTP suite 6 passed. CLI/client all-target Clippy with warnings denied, formatting, full spacing and rake lint passed (734 files, 14 existing diagnostics, zero denied). Workflow YAML parsed locally.

Live Mac Fieldnotes desktop --cdp --no-open --port 18082: real control info/tree and matching CDP target, stateful reloads restored generations 2 and 3. Ctrl-C exited zero, status became stopped, discovery emptied and every owned process exited. The live Web --target web --no-open --port 18081 invocation failed before startup because matching wasm-bindgen 0.2.129 is absent; no tools were installed. Linux verification is CI, not a local devbox run. Full Windows-target Clippy was attempted but ring requires missing Windows CRT assert.h; an isolated Windows boundary/helper harness passed Clippy compilation. Actual Windows execution is established by the desktop CI job above, not that harness.

The clearly labelled temporary stacked-PR trigger was removed in 59c95dd after stacked validation. After the approved phase-1 merge, this PR was retargeted to main and origin/main was merged without conflicts in b6ef6ad. Main's lint/workflow changes are preserved; the PR diff contains only phase 2. All six Mac HTTP tests, formatting and workflow YAML parsing passed after the merge. Fresh main-base CI passed every active job, including Windows desktop, at that exact merge head. No lint code was edited. This PR remains draft and is not authorized for merge.

🤖 Generated with Claude Code

1bye and others added 10 commits November 12, 2026 12:09
Reuse owned Jobs for desktop and Web children, cancellation and output. Add private session directories, named-pipe reload exchanges and pipe readiness. Keep browser openers outside owned Jobs and reject Swift capture explicitly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Exercise real Jobs and named pipes through reload, cancellation and shutdown. Keep inherited output readers and detached browser openers in the cleanup assertions. Run Windows supervisor tests before GPUI CI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Use a YAML block for the Rust module filter and document the Windows supervisor security and lifetime boundaries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Initialize portable watch roots in bundle fixtures. Keep unavailable capture adapters inhabited and run source subprocesses through owned Jobs with bounded cancellable pipe reads.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pass the complete terminated UTF-16 buffer to FileRenameInfoEx. Cover varying Unicode filename alignments and replacement while readers retain the previous snapshot.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reset accepted sockets before bounded request readers use them.
Use native path components in the junction confinement fixture.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Poll request reads instead of blocking in Winsock recv during shutdown.\nKeep the existing 15-second read bound and Unix I/O behavior.\nObserve pending Windows test connections without a receive timeout,\nwhich can invalidate them before the remaining request is sent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Keep the response socket alive until an explicit send shutdown queues
its FIN. Preserve strict segmented-response assertions and include
handler errors and partial response bytes in test failure diagnostics.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Windows and all other active jobs passed at 22c6211. Restore the
original main-only PR trigger after stacked validation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@1bye
1bye changed the base branch from codex/windows-endpoints-57 to main November 12, 2026 15:15
Bring in merged phase 1 and preserve main's lint/workflow updates.
Keep the Windows supervisor changes and main-only PR trigger.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@1bye
1bye marked this pull request as ready for review November 12, 2026 16:42
@1bye
1bye merged commit 083a370 into main Nov 12, 2026
8 checks passed
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