Skip to content

Add RPC HTTP messages and local Sandbox previews - #127

Merged
forhappy merged 6 commits into
mainfrom
codex/sandbox-http-qualification
Oct 26, 2026
Merged

forhappy merged 6 commits into
mainfrom
codex/sandbox-http-qualification

Conversation

@forhappy

@forhappy forhappy commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

This adds Node Workers HTTP-message RPC and runs the published Sandbox 0.12.9 HTTP preview helper on Cellar’s native containers.

  • Transfer Requests in RPC results and Request/Response arguments with native metadata validation, streaming bodies, original producer authority and live abort signals after EOF. Later-event aborts wait for that caller’s storage proof; idle signal watchers and unused bodies have joined cleanup.
  • Exercise published Containers sleep/wake hooks across runtime/host restart. Exercise preview method/query/binary forwarding, forged-header removal, invalid-token refusal, stale runtime URLs, explicit re-exposure and revocation against the pinned image.
  • Add bounded per-class exposed_ports for image-independent TCP publication, with loopback/daemon-assigned bindings and a container-ports-v1 deployment gate.
  • Preserve first shutdown cause alongside main’s V8 startup admission fixes. Add Workers promise-rejection events and native crypto.subtle.timingSafeEqual; ordinary Node fatal rejection behavior remains unchanged.
  • Fix the reproduced overlapping callback/alarm deadlock: asynchronous alarm APIs now await the async native bridge so the language thread can finish the held callback. Restore the original extra-barrier image regression; native admission gates and deadlines remain intact.

Validation: the merged-main baseline passed 750 selected Rust tests and four exact-image scenarios. After the alarm fix, 88 JS/tool/type checks, all 16 Workers tests, three module tests and all four pinned-image scenarios pass. Strict adapter all-target, affected core/container/package, and independent Node-only/V8-only Clippy pass. Rust/JS formatting, layout, docs and the native-only dependency guard pass.

Qualification remains partial: the complete module target currently has an intermittent first /alice/count timeout at its existing 250 ms handler budget. This also reproduces with the prior alarm implementation restored; a passing instrumented run does not resolve its cause. Initial V8 authority/first-request timeouts pass in isolation and on the Workers repeat but remain recorded as intermittent. No assertions or budgets were weakened.

Next priorities are first-call latency, callback-owned queued controls, remaining hooks and upgraded Worker/DO routing, followed by named durable provider reconnect/expiry/orphan cleanup and independently qualified Sandbox 1.x/additional providers. E2B/Vercel real-account qualification awaits configuration. The delivery plan and implementation ledger record exact evidence and remaining requirements.

@forhappy forhappy changed the title Fix runtime shutdown qualification Add RPC HTTP message transfers and fix runtime shutdown Oct 26, 2026
@forhappy
forhappy marked this pull request as ready for review October 26, 2026 15:24
Run the published preview helper against the pinned image. Add bounded
port declarations for hosts that need Docker publication, and supply the
Workers rejection events and native token comparison required by the SDK.
@forhappy forhappy changed the title Add RPC HTTP message transfers and fix runtime shutdown Add RPC HTTP messages and local Sandbox previews Oct 26, 2026
Keep runtime failures distinct from requested shutdown after the V8 merge.
Check SQLite authorizer installation before testing reserved-table refusal.
Record the selected delivery evidence and remaining callback/alarm gap.
A pending alarm must yield while native callback admission is held, so
the language thread can finish that callback. Use the async bridge for
async alarm APIs and restore the original overlapping-barrier image
probe. Native gates and existing deadlines remain intact.

Record the separately reproduced first-call timeout without claiming
complete module or provider qualification.
@forhappy
forhappy merged commit 70c369c into main Oct 26, 2026
15 of 16 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