Programming Language

Nocter

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

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

v0.14.0 Release Preparation

Status: release candidate qualified and published (2026-08-23). This record owns the completed preparation of v0.14.0. Final publication and downloaded-asset evidence is frozen in the immutable release record.

Release Blocker Audit

The initial audit compared the normative command-line specification with the specification-first compiler. It found that nocter init and nocter graph had not crossed the rewrite boundary even though both remained current public commands. That omission was repaired before release identity changed:

  • init now owns a preflighted, rollback-capable three-file source transaction and does not select an installed Nocter home;
  • graph projects the exact package resolver result without package acquisition, generated locks, store mutation, or source mutation;
  • human and versioned JSON graph output have one command-owned typed projection;
  • initialized executable and library packages cross real public checking and native testing.

Candidate Identity

The tracked release inputs now identify v0.14.0:

  • development/packaging/VERSION contains 0.14.0;
  • development/packaging/MANIFEST.json names release 0.14.0 and nocter-v0.14.0-arm64-darwin.tar.gz;
  • development/std/nocter.nct declares standard package version 0.14.0;
  • compiler and LSP reports derive that identity from the validated installed home rather than a duplicate compiled constant.

The public release notes are prepared in ../../releases/v0.14.0.md. The published release index and download instructions remain on v0.13.0 until publication.

Qualification Contract

Release qualification must run from a clean release-content commit. It must complete:

  1. 1. incremental workspace tests, strict Clippy, formatting, documentation generation, and textual consistency checks;
  2. clean tests and strict Clippy with distinct external Cargo target directories;
  3. the explicit public-HTTPS acquisition test;
  4. two independent optimized package generations with byte-identical compressed archives and recursively identical extracted homes;
  5. installed-home identity, diagnosis, help, initialization, locked/offline check and native test, deterministic JSON graph, run, explicit build, direct Mach-O execution, and framed LSP lifecycle checks;
  6. proof that the installed home remains unchanged throughout the smoke matrix.

The retained candidate record must include its exact release-content commit, byte size, SHA-256, and standard-library file count. Any subsequent compiler, standard-library, packaging, or release- identity change invalidates that evidence and requires the whole matrix again.

Source Requalification

The release-content commit passed the complete source matrix on ARM64 macOS:

  • incremental cargo test --workspace --quiet: 1,138 passed, zero failed, one ignored public-HTTPS test;
  • clean cargo test --workspace --quiet with a new external target directory: the same 1,138 passed, zero failed, and one ignored;
  • explicit clones_resolves_and_materializes_without_external_git: one passed against public HTTPS;
  • incremental and distinct clean external-target cargo clippy --workspace --all-targets -- -D warnings: passed;
  • cargo fmt --all --check: passed;
  • node docs/build-docs.js: generated 129 pages with no tracked difference;
  • git diff --check: passed.

The clean test and Clippy target directories were distinct and outside the repository. Their result logs were inspected before the generated target directories were removed.

Artifact Qualification

development/packaging/qualify-local-release.sh generated the optimized archive twice from the clean release-content commit. The two gzip archives matched byte for byte, and their extracted .nocter/ trees matched recursively. The retained second archive is:

  • release-content commit: a59d4e387eff45c4975b38c771597688417ae4d6;
  • path: dist/nocter-v0.14.0-arm64-darwin.tar.gz;
  • root: .nocter/;
  • byte size: 6,933,923;
  • SHA-256: f0ce9d0f14e69fca33340aca85574f254e2e457a68299eaeb6a81f7f3e366bd7;
  • compiler: ARM64 Mach-O reporting release 0.14.0;
  • contents: compiler, exact tracked metadata and legal files, and all 28 tracked standard-library files.

Without inherited NOCTER_HOME, the fresh extraction passed exact version reporting, doctor, top-level help, package initialization, locked/offline check and native test, two byte-identical JSON package graphs, locked/offline run, explicit build, direct generated-Mach-O execution, and a framed LSP initialize/initialized/shutdown/exit lifecycle reporting version 0.14.0. A recursive comparison before and after the smoke matrix proved that the installed Nocter home was not mutated.

Publication Boundary

Preparation does not authorize an annotated tag, push, GitHub release, asset upload, public latest- release update, or replacement of the v0.13.0 download link. The qualified archive is now frozen; those operations require explicit user authorization.