Programming Language

Nocter

A self-contained systems language built around simplicity, encapsulation, and foolproof design.

/development/reviews/v0.30.0-phase-4.md

v0.30.0 Phase 4 Tooling and Practical Integration Review

Status: complete with no open finding (2026-09-03). Phase 4 qualifies the published synchronous subprocess contract through one runnable user package, the canonical formatter path, semantic editor features, and a copied installed standard-library home. It adds no subprocess API and no tooling-only source fixture.

Shared Public Evidence

examples/subprocess-status is the only authored source for this qualification. Its implementation constructs Command.new("./helper.sh"), appends one whitespace-bearing argument, waits through status, and renders the resulting ExitStatus. The repository-owned helper verifies that exact argument and exits with code 17. The example consequently distinguishes successful process launch from successful child exit without reproducing launch policy or interpreting raw wait bits.

The public-example catalog owns the executable name, fixture bytes, invocation, status, stdout, and stderr once. Native-session and command tests already consume that catalog. The installed-home test compiles the actual example against a copied standard library, launches the resulting image in the example directory, and compares its observation with the same catalog entry. Host code grants the helper executable permission as a filesystem precondition; it does not perform or model the Nocter child launch.

Tooling Boundary

The formatter's existing repository example discovery reads both authored .nct files directly. The language-server qualification opens status.nct as a normal package source and verifies:

  • Command.status hover uses the public method signature;
  • declaration navigation reaches std/process/index.nct;
  • implementation navigation reaches the target implementation source;
  • incomplete ExitStatus member syntax completes code, signal, and success from recovered semantic capabilities.

No editor-only declaration, alternate standard profile, copied example source, or formatter fixture was added. Declaration and implementation navigation intentionally observe different products: the public contract is the declaration authority, while target source is the implementation authority.

Architecture Review

The new executable-fixture variant extends only the public-example filesystem contract. Permission materialization remains in the command test harness beside ordinary files, directories, and symlinks; subprocess semantics remain in standard source. No compiler crate learns the helper argument, exit code, output sentence, or Command lifecycle.

The example does not use PATH, a shell API, environment mutation, redirection, or an exposed child handle. It relies only on the documented inherited working directory and exact-path behavior. No caller must retain borrowed command inputs, close launch descriptors, distinguish exec rejection from exit code 127, or reap a child.

Qualification

Focused qualification passes public example execution, complete native-session compilation, source formatting, semantic hover/completion/navigation, and build-and-run through a copied installed standard library. Rust formatting and diff whitespace validation also pass. Complete repository qualification remains the explicit Phase 5 boundary.

No Phase 4 remediation remains.