Programming Language

Nocter

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

/development/milestones/v0.31.0-release-preparation.md

v0.31.0 Release Preparation

Status: release candidate qualified, published, and externally audited (2026-09-03). This record owns the candidate identity, qualification contract, and local artifact evidence. The immutable publication evidence is ../releases/v0.31.0.md.

Release Boundary

v0.31.0 adds complete standard-output and standard-error capture to the closed synchronous subprocess lifecycle introduced in v0.30.0. Consuming Command.output creates one child, drains both finite pipes concurrently, waits for that exact child, and returns an owning Output with arbitrary stdout and stderr bytes plus typed terminal status. Staged child launch reporting keeps descriptor-setup rejection distinct from executable rejection and ordinary child exit.

The Phase 5 review found no remaining correctness or architecture finding. Public release notes are ../../releases/v0.31.0.md. Root download links and the public release index advance to v0.31.0 in the separate publication commit.

Candidate Identity

The release inputs agree on 0.31.0:

  • development/packaging/VERSION, the sole authored release-version input;
  • the #package version in development/std/index.nct;
  • the archive name and installed manifest derived from VERSION and RELEASE.json;
  • compiler and language-server reporting derived from the validated installed home.

The qualified release-content commit is c06cb1b1ca86622c926b4a4dcbfd08fb481acb96. Documentation-only qualification evidence recorded after that commit is not an artifact input.

Qualification Contract

The clean release-content commit must pass:

  1. 1. two independent complete locked workspace test runs in distinct external Cargo targets;
  2. warnings-denied all-target Clippy in both external targets;
  3. formatter, no-default-features checking, documentation generation and reproducibility, repository whitespace, and packaging-input validation;
  4. the explicit public-HTTPS dependency-acquisition test;
  5. checks and representative native execution for every public example against an isolated candidate home;
  6. two independent optimized package builds with byte-identical archives and recursively identical installed homes;
  7. fresh extraction checks for version, doctor, help, initialization, locked/offline check and test, deterministic graph, exact text-banner, stdin-prefix, subprocess-status, and subprocess-output process contracts, native run, explicit build and execution, and framed LSP analysis;
  8. rejection after either the installed compiler or standard-library content is changed, plus proof that ordinary qualification commands do not mutate the installed home.

Qualification Evidence

The exact candidate commit passed two complete locked workspace runs in distinct external Cargo targets. Each run executed 1,540 tests and reported 1,539 passed, zero failed, and one ignored public-network test. Warnings-denied all-target Clippy passed independently in both targets. The ignored HTTPS Git acquisition test was then run explicitly and passed without invoking an external Git executable.

The candidate also passed no-default-features checking, formatter verification, documentation generation and reproducibility, packaging-script syntax validation, manifest-input validation, and repository whitespace validation. Documentation generation produced 437 pages.

Two independent optimized package builds produced byte-identical archives and recursively identical installed homes. Fresh extraction then passed:

  • --version, doctor, and --help against release 0.31.0;
  • package initialization plus locked/offline checking and testing;
  • locked/offline checking of every public single-file and package example;
  • exact text-banner native output with empty stderr;
  • exact stdin-prefix argument, stdin, status, stdout, and stderr behavior through nocter run;
  • exact subprocess-status launch, argument, typed nonzero status, stdout, and stderr behavior;
  • exact subprocess-output argument, typed nonzero status, captured stdout, captured stderr, and empty parent stderr behavior;
  • two byte-identical package-graph queries;
  • package run, explicit build, and direct execution;
  • one framed LSP initialize/open/diagnostic/hover/completion/definition/shutdown session;
  • installed-home immutability across all ordinary commands;
  • rejection of separately tampered compiler and standard-library copies.

The retained local candidate is:

  • archive: dist/nocter-v0.31.0-arm64-darwin.tar.gz;
  • size: 8,286,135 bytes;
  • archive SHA-256: 914ad97e360f8451aa2c212a21445af7ec457d1cc64d102f64a181fd6c563453;
  • compiler SHA-256: 6ac577f60551674f91d739ad23ed82ea6a6225847fd3b6c5538d9a27670115e7;
  • standard-library tree SHA-256: f51680483a0fbfaa7a654324560680fdd801a13d295e66b0c1e6552e46b170b7;
  • standard-library regular files: 147.

Publication Boundary

Separately authorized publication reused the qualified archive without rebuilding it, advanced public latest-release links in a separate commit, created and pushed one annotated v0.31.0 tag, uploaded exactly one archive, and verified the public asset byte for byte. Existing tags and assets must not be replaced.