v0.32.0 Phase 5 Qualification and Final Review
Status: complete with no open finding (2026-09-03). v0.32.0 now implements and qualifies one complete configured synchronous subprocess operation. This phase assigns no release identity, builds no retained archive, and makes no publication claim.
End-to-End Responsibility Review
The review traced both Command.status and Command.output through every participating owner:
command.nctowns the command and terminal-status representations, exact path and argument validation, and null-terminated owned process text;configuration.nctowns failure-atomic working-directory, environment-change, and copied finite input mutation;launch_plan_darwin.nctis the sole projection from owned command state to stable post-fork addresses and exact argv/environment pointer vectors;pipe_darwin.nctowns normalized close-on-exec endpoints, idempotent closure, descriptor-localSIGPIPEsuppression, and nonblocking parent-writer configuration;command_io_darwin.nctowns only Darwin poll-record ABI and one-attempt read/write classification, including explicitwould_block;command_io_session_darwin.nctowns all three direction states, finite-input offset, capture storage, bounded fair progress, liveness, and cleanup;command_child_darwin.nctinstalls standard descriptors and enters the configured directory from prepared addresses without allocating or reconstructing policy;launch_report_darwin.nctowns one close-on-exec protocol with distinct input, output, directory, and exec rejection stages;subprocess_darwin.nctowns raw fork and exact-child wait classification;command_darwin.nctalone composes those facts, observes every created child once, applies the documented failure precedence, and selects inherited-status or captured-output completion.
The compiler continues to expose generic process-entry and Darwin syscall capabilities. It does not know command environment edits, working directories, finite input, poll direction, launch stages, or public process error codes.
Adversarial Review
Repository searches and direct source review found no remaining capture-only session, capture launch wrapper, raw environment-vector compiler primitive, old combined setup stage, process-wide SIGPIPE mutation, sequential whole-stream transfer, or alternate public-error selector. Darwin numbers and flags remain defined once under std/internal/os/darwin. Public process failure codes are constructed only by command/configuration policy; tests inspect them but do not create a second mapping.
The review also checked contracts that would require callers to know hidden state. All descriptor cleanup is owned and idempotent, command mutation commits only completed owned values, prepared pointers cannot outlive their owning command, child setup consumes only the prepared plan, and terminal methods cannot return an independently owned or unreaped child. status and output cannot diverge in launch or I/O failure precedence because both pass through one typed completion authority.
No current correctness issue or near-term structural blocker remains. The environment preparation algorithm is quadratic in the number of explicit changes, but normal command environments are small and no measured or user-visible problem justifies introducing a second keyed-storage authority in this release.
Qualification
The candidate source passes:
cargo test --locked --workspace; all enabled tests pass and the one public-HTTPS acquisition test remains intentionally ignored;cargo clippy --locked --workspace --all-targets --no-default-features -- -D warnings;cargo check --locked --workspace --no-default-features;cargo fmt --all -- --check;- deterministic 448-page documentation generation and catalog-drift rejection;
- shell syntax checks for packaging and every subprocess helper;
- JavaScript syntax checks for documentation generation;
- source-tree native execution, installed-home CLI execution, formatter discovery, and LSP diagnostics/hover/completion/navigation for the shared configured-command example;
- repository whitespace and generated-output checks.
Warnings-denied Clippy found one oversized Rust test function. Its reusable Nocter helper source is now a module constant, leaving the test responsible only for fixture selection and execution; no lint suppression was added. A focused native rerun confirms the refactor preserves the complete configured subprocess contract.
v0.32.0 is ready for release preparation. That next step may assign version identity, build two independent optimized archives, compare them byte for byte, qualify a fresh extracted home, and prepare public English release notes.