v0.15.0 Release Preparation
Status: release candidate qualified and published (2026-08-24). This record owns the completed preparation of v0.15.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 compiler, standard library, specification, or public examples. Phase 0 through Phase 6 have complete scope and focused evidence in the v0.15.0 milestone. The public specification contains no unlabeled proposed behavior in those completed scopes.
The candidate closes the architectural gaps found after v0.14.0 and qualifies the new public surfaces through a practical native application:
- checking, specialization, runtime types, and native ABI consume explicit predecessor contracts instead of reopening presentation or semantic storage;
- physical-source
includeand directory-moduleusehave distinct discovery and visibility contracts, while module roots own public API contracts; - interface defaults, construction, instances, and conformances can separate public contracts from private bodies without creating a second callable identity;
- typed callable argument packs and sequence packs share ownership and transport plans without exposing the hidden descriptor as a source value;
- one context-independent constant-expression engine serves header and lexical body contexts;
- the
text-reportpackage and shared example catalog exercise the public language, standard library, command path, native backend, and process behavior together.
Candidate Identity
The tracked release inputs now identify v0.15.0:
development/packaging/VERSIONcontains0.15.0;development/packaging/MANIFEST.jsonnames release0.15.0andnocter-v0.15.0-arm64-darwin.tar.gz;development/std/nocter.nctdeclares standard package version0.15.0;- compiler and LSP reports derive that identity from the validated installed home.
The public release notes are prepared in ../../releases/v0.15.0.md. The published release index and download instructions remain on v0.14.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 external Cargo target directories;
- the explicit public-HTTPS acquisition test;
- two independent optimized package generations 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 lifecycle checks;
- 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
Release-content commit d19c6951b79a58e0dc39bbfff4f36bcd869c6a74 passed the complete source matrix on ARM64 macOS:
- incremental
cargo test --workspace --quiet: 1,217 passed, zero failed, one ignored public-HTTPS test; - clean
cargo test --workspace --quietwith a new external target directory: the same 1,217 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;- packaging manifest validation: passed;
node docs/build-docs.js: generated 156 pages with no tracked difference;git diff --check: passed.
The clean test and Clippy target directories were distinct and outside the repository. The successful clean rerun also proved that the public example corpus and Git worktree remained unchanged. All repository and external Cargo target directories were removed after qualification.
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:
d19c6951b79a58e0dc39bbfff4f36bcd869c6a74; - path:
dist/nocter-v0.15.0-arm64-darwin.tar.gz; - root:
.nocter/; - byte size: 7,137,169;
- SHA-256:
50d63f70bff105b1abc5eb62e777fe31d89678913f3481b00c8fdf2c3d3429cf; - compiler: ARM64 Mach-O reporting release
0.15.0; - contents: compiler, exact tracked metadata and legal files, and all 45 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.15.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.14.0 download link. The qualified archive is now frozen; those operations require explicit user authorization.