Programming Language

Nocter

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

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

v0.31.0 Phase 4 Tooling and Practical Integration Review

Result: passed (2026-09-03). Phase 4 adds one ordinary public package and qualifies its authored source across formatter, editor, native, command, and installed-home boundaries. It adds no compiler exception or second subprocess implementation.

Public Package

examples/subprocess-output contains a short package root, one implementation source, and one repository-owned executable helper. capture.nct uses only public standard-library contracts:

  1. 1. Command.new validates and owns the helper path;
  2. Command.arg copies a whitespace-bearing argument;
  3. consuming Command.output returns one Output;
  4. Output.status is checked as a typed nonzero exit;
  5. Output.stdout and Output.stderr are converted through String.from_utf8 because this caller knows the helper's text contract;
  6. both exact strings are validated before a deterministic report is written through std/io.

The example does not assume UTF-8 in the process API, merge stream order, invoke a shell API, search PATH, expose descriptors, or reproduce launch and drain policy.

Shared Execution Contract

PUBLIC_PACKAGE_EXAMPLES owns the executable helper bytes and exact process result. The same entry is consumed by complete native compilation and public command execution. The installed-home CLI test selects the same catalog entry, builds the authored package against a validated installed standard library, runs it beside its repository helper, and compares exact status, stdout, and stderr.

The formatter recursively discovers the authored example sources. Adding the package therefore extends the existing formatter authority without a second path list. The public examples catalog continues to assert that every directory containing a package index.nct has exactly one runtime contract.

Editor Evidence

The language-server reference-application test opens the real capture.nct. A complete generation has no diagnostic. Hover renders the public Command.output(): Output! signature, definition navigation selects std/process/index.nct, and implementation navigation selects the joined body in command_darwin.nct. An incomplete output.status. expression retains receiver semantics and offers the public code, signal, and success methods.

The test does not embed a copied process declaration or infer an implementation filename from syntax. All editor results come from the same compiler query authority used by other package sources.

Findings

No tooling-only source, duplicated process policy, private standard-library dependency, hidden text assumption, caller-owned cleanup step, or conflicting example contract was found. Phase 5 may run the final repository qualification and review directly on this integration boundary.