Snapshot: a0fbb1bf9a100bb3215219f54301b9ee82ffe71f (main / PR #13 merged).
This is the alpha.2 codebase plus the Windows follow-ups, not a claim that those
follow-ups are in the published alpha.2 archives. This report supersedes the
accumulated integration history. Local failures in historical lane reports do
not describe current required CI coverage.
Conclusion: all required CI jobs are green on this exact commit. Production epoll, kqueue, IOCP, WASI 0.2, experimental WASI 0.3 and web backends, the executor, and protocol adapters exist and execute tests. The complete DESIGN is not implemented: this audit found reproducible gaps outside those gates, missing capabilities, and unfinished Perry integration.
- Section-by-section DESIGN audit: classifications, source lines, named tests and verification limits.
- Remaining work: concrete internal and Perry implementation lanes.
- Evidence and reproduction: commands, local failures and CI provenance.
- Open-marker inventory: every matched marker and cfg selection at the audited snapshot, with current disposition.
Job metadata was read with gh run view <id> --json jobs (plus SHA/status fields),
and every successful job log with
gh api repos/PerryTS/turnloop/actions/jobs/<job>/logs.
The job inventory records IDs, URLs, conclusions, log hashes
and runner counts: 111 successful job logs across three runs.
| Run | Commit | Result and relationship |
|---|---|---|
| 34919345014 | a0fbb1b |
Exact audited main: 37 successful jobs; optional self-hosted-windows skipped |
| 34918732035 | 163fd0c |
PR #13 head: same tree as audited main; 37 successful jobs, optional self-hosted job skipped |
| 34916140575 | 7f37e7e |
Earlier main: 37 successful jobs, optional self-hosted job skipped |
The following citations refer to exact main. A successful workspace invocation does not turn ignored or cfg-excluded bodies into passing tests. Repeated workspace/member runs are not unique test totals.
| Evidence key / job | Execution observed |
|---|---|
N-L: test-native (ubuntu-24.04, default) log |
252 workspace tests; independent core 16 / contract 49. Both Linux architectures run default, executor, epoll-timerfd, process-sigchld, combined fallbacks and all-features: 12 required arms |
N-A: test-native (ubuntu-24.04-arm, default) log |
Same default counts; actual arm64 runtime |
N-M: test-native (macos-15, default) log |
251 workspace; independent core 14 / contract 50. Executor and all-features are separate required arms |
N-W: test-native (windows-2025, default) log |
267 workspace; independent core 19 / contract 62. Executor arm: 274 / 20 / 69; all-features arm: 323 / 20 / 69 |
W2: wasi (wasm32-wasip2, nightly-2026-08-20) log |
Wasmtime 46: 7 core, 22 debug contracts, 22 release contracts, 9 release allocation tests |
W3: wasi (wasm32-wasip3, nightly-2026-09-07) log |
Wasmtime 46: 9 core, 23 debug contracts, 23 release contracts, 10 release allocation tests; experimental feature enabled |
WEB: web log |
13 tests each in Chrome, Firefox and Node. Each fixture reports 5 fetches, 2 aborts, 6 WebSockets and 7,937 echoed bytes |
P: protocol log |
18 native protocol suites, plus WASI 0.2 portable and real-server suites. Actual PostgreSQL 16, MySQL 9.6, Redis cluster/Sentinel, MongoDB replica set and Postfix transactions; TLS probes and fixture assertions execute |
PW2, PW3: protocol-wasi p2, p3 |
19 selected suites each: stream/TLS/HTTP/SQL/Redis/SMTP/MongoDB/WebSocket and allocation cases. These jobs use scripted peers; the additional real-server run is p2 in P, not p3 |
H2: h2spec log |
147 strict tests, 147 passed, 0 skipped, against the async turnloop server |
MODEL: loom log, miri log |
Six production Loom models; two Miri filters (timer::tests, table::tests), not an all-core Miri run |
PERF: instructions log |
Interleaved Callgrind gate: control 527; idle 111,569 ≤ 191,486; notify 108,089 ≤ 188,006; timer_cancel 321,820 ≤ 414,171. Identical min/max across three rounds. No TCP or blocking-job instruction budget yet |
DEP: dependencies log |
Zero-runtime dependency graph audit, cargo-deny, seven-day soak: 251 registry versions and one existing reviewed rustls security exception. Seven-day policy remains active |
LINT: lint-native, lint-wasm, workflow-lint automation log |
Native fmt/strict Clippy/docs/stable/MSRV; wasm target Clippy; 97 automation tests. Mock runner outputs inside gate unit tests are not backend execution evidence |
GATE: ci-gate log |
Required dependency fan-in succeeded; only the explicitly optional self-hosted Windows arm was skipped |
Every native mode also executes eight HTTP/TLS/WebSocket interop suites (38 tests). The intentional curl-unavailable regression proves the Node 100-stream fallback; its logged UNRUN curl leg is expected. The normal Windows curl path now uses a checksum-pinned build with HTTP/2. Neither case means HTTP/2 interop is unrun.
- Native:
native::idle_socket_timers_do_not_spin,native::transfer_inflight,native::shared_pool,steady_read_write_timer_and_accept_allocate_nothing. Windows additionally executes backlog/deadline, direct versus foreign-port routing, console, child teardown and handle-count subjects incrates/turnloop-contract/tests/windows_lifetimes.rs:507andcrates/turnloop/src/backend/iocp/pipes.rs:333. - WASI: no-spin/timer/executor/stdio subjects in
crates/turnloop-contract/tests/wasi.rs:67andtests/allocations.rs:1065. WASI 0.2resolve_and_cancel_reuse_executor_slotsruns; p3'sunsupported_wasi_dns_releases_reserved_slotsproves rejection, not DNS support. - Browser/Node:
fetch_bytes_abort_and_close_ordering,timer_no_spin_with_idle_websocket,worker_mpsc_backpressure_and_no_lost_wake,steady_rust_websocket_posts_and_timers_allocate_nothing. - Real SQL:
real_async_required_channel_binding_authenticates_over_ssl,real_async_tls_queries_copy_cancel_pool_and_connection_kill,real_async_tls_rsa_text_binary_multi_results_transactions_pool. - Real Redis/MongoDB/SMTP:
real_async_tls_pipeline_pubsub_deadlines_reconnect_cluster_sentinel,real_async_auth_tls_sdam_pool_cursor_retry_and_primary_stepdown,real_async_postfix_delivery. All execute natively and under WASI 0.2 in P.
Backend selection is crates/turnloop/build.rs:8; CI matrices are
.github/workflows/ci.yml:48, :106, :193, :232, :378.
| Platform | Current evidence | Limits relative to DESIGN §3 / §7.6 / §11 |
|---|---|---|
| Linux x86_64 / arm64, GNU | Required runtime + lint, all six native modes | One hosted Ubuntu/kernel family; no overnight churn or syscall-trace gates |
| macOS arm64 | Required runtime + lint, three modes | Does not verify Apple mobile or macOS x86_64 |
| Windows x86_64 | Required Windows 11 runtime + lint, three modes | Minimum Windows 10 version, other VMs and cycle/ETW attribution unverified; optional private runner skipped |
| WASI 0.2 | Required core/contract/adapter runtime; real servers | No filesystem API or TTY size API; detach and generic blocking jobs unsupported |
| WASI 0.3 | Required experimental core/contracts and scripted adapter runtime | No DNS/filesystem; strict host-progress/cancellation bound remains unproved; no real DB service suite or second runtime |
| Web | Required Chrome + Firefox + Node, live fetch/WS fixtures | No general Web Streams adapter, no non-isolated postMessage Poster; worker producers are JS, not a demonstrated Rust loop per worker |
| FreeBSD x86_64 | Local cross-clippy PASS for core/contracts | No CI job, including the DESIGN-required nightly; runtime UNRUN |
| Android aarch64 | Backend selected; local all-target cross-clippy FAIL | portable_tests.rs:13 triggers missing_const_for_thread_local despite const initializers; no emulator/device CI; runtime UNRUN |
| iOS device + simulator aarch64 | Local cross-clippy PASS for core/contracts | No simulator/device CI, linking/package/lifecycle tests; runtime UNRUN |
| tvOS / visionOS / watchOS aarch64 | Local cross-clippy PASS for core/contracts | No CI or runtime evidence; OS capabilities/entitlements are not established by type checking |
| Linux x86_64 musl | Backend selected; local cross-clippy FAIL | Deprecated libc::time_t at backend/poller.rs:25; no CI; runtime UNRUN |
| OpenBSD / NetBSD / DragonFly | kqueue selected | No compile or runtime evidence in this audit; not all contract cfgs include them |
| Windows arm64, macOS x86_64, other architectures | No runtime evidence in reviewed jobs | Do not infer support from the x86_64 Windows / arm64 macOS arms |
WASI preview 1 / wasip1-threads, other OSes |
Dependency audit may resolve their graphs | No production backend selected for preview 1; graph coverage is not backend support |
- Reproduced outside current gates: WASI 0.2 compressed MongoDB commands
allocate once per command. (The queued post + idle UDP OS poll was resolved by
the tl-i01b amendment of DESIGN §10 rule 3: queued turns never block, may make one
zero-timeout discovery poll only with native operations pending, and make no OS
call otherwise;
discovery_pollsis counted separately from blocking waits.) See local evidence. - No-spin assurance is partial: ordinary native/WASI/web subjects pass;
WASI private timer events undercount
zero_event_waits, and p3 still relies on host cooperative yield and synchronous cancellation with no proven latency bound. - Missing capability/API work: WASI filesystem and p3 DNS, native typed file operations/fs-watch, per-loop blocking-pool option, generic Windows handle passing/named-pipe listener transfer, web streams/non-isolated worker routing.
- Verification work: FreeBSD nightly/mobile CI, broader fault/leak/long soak, syscall traces, full operation instruction budgets, controlled SRV/TXT fixture, broader protocol conformance and target allocation gates.
- Release/security:
SECURITY.mdis absent. The exact-main release workflow verified CI but failed creating its GitHub App token because the app/client ID was empty; publish was skipped. The alpha.2 release exists, but reviewed workflows do not prove successful OIDC publication. - Perry P0–P8: turnloop supplies building blocks, not the Perry hook/ABI/GC/JS migration. This repository contains no implementation or end-to-end evidence for those phases. No claim is made about changes in another Perry checkout.
PASS: cargo fmt --check; strict workspace Clippy, default and all-features;
cargo +stable check --locked --workspace --all-targets --all-features;
cargo test --workspace with default parallelism; zero-tokio, soak and feature-mode
gates. Cross-check results and additional failing probes are listed above and in
the complete command ledger.
Local Linux/Windows runtime, SQL servers, browsers and Docker were UNRUN in this lane. Their cited hosted CI runs are verified separately. This audit changes documentation only; it does not repair or relax any failing behavior or gate.