v0.16.0 Release Preparation
Status: release candidate qualified and published (2026-08-24). This record owns the completed preparation of v0.16.0. Final publication and downloaded-asset evidence is frozen in the immutable release record.
Release Blocker Audit
The preparation audit found no remaining TODO, FIXME, todo!, or unimplemented! marker in the active compiler, standard library, specification, public examples, or release notes. Phase 0 and Phase 1 have complete scope and focused evidence in the v0.16.0 milestone. The public specification contains no unlabeled proposed behavior in those completed scopes.
The candidate closes the practical failure-value and trusted-runtime gaps found after v0.15.0:
- one move-only owned
errorhandle safely snapshots dynamic text, preserves root classification, attaches context, reports without allocation, and cleans up exactly once; - one source-independent runtime schema owns error layout, node kinds, fields, static nodes, and report scratch for Machine and ARM64 consumers;
- a closed primitive registry validates exact trusted exposure without reopening ordinary source visibility in target or backend stages;
- the physical bundled standard library qualifies dynamic and static errors, propagation, recovery, context, reporting, and cleanup through public APIs;
- installed standard-library contract and implementation sources share one toolchain identity in editor analysis instead of colliding with a second path package.
Candidate Identity
The tracked release inputs now identify v0.16.0:
development/packaging/VERSIONcontains0.16.0;development/packaging/MANIFEST.jsonnames release0.16.0andnocter-v0.16.0-arm64-darwin.tar.gz;development/std/nocter.nctdeclares standard package version0.16.0;- compiler and LSP reports derive that identity from the validated installed home.
The public candidate notes are prepared in ../../releases/v0.16.0.md. The release index and download instructions remain on v0.15.0 until publication.
Qualification Contract
Release qualification must run from a clean release-content commit. It must complete:
- 1. incremental workspace tests, strict Clippy, formatting, documentation generation, manifest validation, and textual consistency checks;
- clean tests and strict Clippy with distinct temporary external Cargo target directories;
- the explicit public-HTTPS acquisition test;
- two independent optimized package generations, each in its own temporary Cargo target, with byte-identical compressed archives and recursively identical extracted homes;
- 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 analysis of installed standard contract and implementation sources;
- 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, release- identity, or normative specification change invalidates that evidence and requires the complete matrix again.
Release packaging uses disposable external Cargo targets. Qualification must leave no repository- local target/ cache and must not retain its temporary build roots.
Source Requalification
Release-content commit 1d656283f27fb02a61f9ff1b1593040989e54cf2 passed the complete source matrix on ARM64 macOS:
- workspace
cargo test --workspace --quietin a disposable external target: 1,229 passed, zero failed, and one ignored public-HTTPS test; - the same workspace test from a distinct clean external target: the same 1,229 passed, zero failed, and one ignored;
- the explicit
clones_resolves_and_materializes_without_external_gitpublic-HTTPS test: one passed; - warnings-denied workspace Clippy in the first target and again from a third distinct clean external target: passed;
cargo fmt --all --check: passed;- packaging manifest validation: passed;
node docs/build-docs.js: generated 161 pages with no tracked difference;git diff --check: passed.
All three Cargo targets were outside the repository and were removed after the source matrix. The successful clean rerun also proved that the public example corpus and Git worktree remained unchanged. No repository-local Cargo target was recreated.
Artifact Qualification
development/packaging/qualify-local-release.sh generated the optimized archive twice from the clean release-content commit. Each generation used a separate disposable Cargo target. The two gzip archives matched byte for byte, and their extracted .nocter/ trees matched recursively. The retained second archive is:
- release-content commit:
1d656283f27fb02a61f9ff1b1593040989e54cf2; - path:
dist/nocter-v0.16.0-arm64-darwin.tar.gz; - root:
.nocter/; - byte size: 7,140,438;
- SHA-256:
516b212138f8af2d1fef8d7b6a7c3577a670608d86b02c31ed6ca48d006f37b0; - compiler: ARM64 Mach-O reporting release
0.16.0; - contents: compiler, exact tracked metadata and legal files, and all 46 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, and direct generated-Mach-O execution. The framed LSP opened installed std/error/index.nct and std/error/construction.nct from outside the user workspace, produced semantic tokens for both, reported no diagnostics, and completed the initialize/initialized/shutdown/exit lifecycle as version 0.16.0. A recursive comparison before and after the smoke matrix proved that the installed Nocter home was not mutated.
Final Boundary Review
The final adversarial review found no release blocker:
nocter-runtime-contractremains the only numeric owner of error handle, node, static-leaf, and reporting-buffer layout; Machine and ARM64 consume its accessors;- MIR, Machine, ARM64, and Mach-O contain no source visibility, source index, or semantic type-store lookup with which to reopen an earlier decision;
- target validation alone maps the closed primitive exposure class to normalized declaration visibility, while later stages receive selected primitive roles;
- editor presentation contains only the ordinary rendering of the built-in type spelling and source-backed standard members, with no synthetic error API;
- the installed standard package is selected once even when its physical source is opened outside the initialized user workspace;
- release packaging leaves no persistent compiler target and qualifies the exact tracked standard
package rather than the previously installed
dist/.noctertree.
Publication Boundary
Preparation does not authorize an annotated tag, push, GitHub release, asset upload, public latest- release update, or replacement of the v0.15.0 download link. The qualified archive is now frozen; those operations require explicit user authorization.