Programming Language

Nocter

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

/development/releases/v0.13.0.md

Nocter v0.13.0 Stabilization and Qualification

Status: Published and audited on 2026-08-12.

This record owns the final engineering audit and release-candidate evidence for v0.13.0. The completed feature contracts are frozen in ../milestones/v0.13.0.md, including Phases 0 through 6. Stabilization may correct release-blocking defects, strengthen regression coverage, and repair documentation, but it must not add another public feature.

The published compatibility boundary remains v0.12.0 until v0.13.0 is qualified and published. Its release record, tag, archive, and public download instructions are immutable.

Contract Audit

The audit establishes all of the following from source, specification, and tests:

  • user-defined types own readonly and readwrite indexing declarations, and structural index requirements select the same immutable operation plans as ordinary expressions;
  • built-in error construction, catch _, built-in instance source, and the core prelude use source-backed declarations without retaining the removed Error alias;
  • reachable catch blocks produce values through the same fallback, branch-state, destination, provenance, ownership, and cleanup model as otherwise;
  • readonly, readwrite, and consuming expansion declarations are the sole collection-to-iterator authority for for loops and sequence spread, including mutable collection iteration;
  • source-defined strict less-than supplies all four ordered comparisons through one comparison plan while preserving source evaluation order, coercion selection, and generic evidence;
  • contiguous observation belongs to slices, canonical construct and instance members own public standard-library behavior, and removed forwarding APIs have no compatibility aliases;
  • borrow coercions are instance members, and structural where Source as Target evidence uses the same visible one-step selector as contextual, explicit, receiver, comparison, and indexing conversions;
  • compiler, formatter, diagnostics, AST JSON, native lowering, standard source, public examples, and editor operations agree on the released syntax and source declaration identities;
  • no TODO, FIXME, HACK, XXX, todo!, or unimplemented! marker remains under compiler or standard-library production source.

The pre-release architecture audit also identified internal migration work for v0.14.0: semantic identity still depends too heavily on strings and byte spans, type-check facts are recomputed after checking, coercion and operator callables retain compiler-private synthetic names, lowering remains coupled to raw AST shapes, and several editor services still walk syntax independently. These are not alternate public semantics or known v0.13.0 miscompilations. They are explicitly deferred to a single semantic-model and typed-IR migration rather than patched into the frozen release.

Any release-blocking defect found during qualification requires focused regression coverage and a separate implementation commit before the candidate is rebuilt and requalified.

Candidate Identity

The Cargo package and lockfile, installed VERSION, distribution manifest, archive name, distributed std/nocter.nct, CLI version, and LSP server version identify v0.13.0. The specification identifies the completed candidate, while the root README and public release index continue to identify v0.12.0 until publication completes.

Public English release notes exist at ../../releases/v0.13.0.md without presenting an unpublished archive as downloadable.

Repository Qualification

The exact release-content commit must pass both incremental and clean runs of development/compiler/scripts/verify.sh. Each run includes compiler-library, CLI build, formatter, framed LSP, package, native run, native test-command, distributed-home, public-example, source-corpus, Rust formatting, and warnings-denied Clippy coverage.

Public Markdown is regenerated with node docs/build-docs.js. Generated page count, git diff --check, and a clean release-content worktree are part of the evidence.

Release-content commit 718b8ca80ec96553f4e4d13d054a9f9eca3f1e70 passed one incremental development/compiler/scripts/verify.sh run and a second run after cargo clean -p nocter removed 424 files and 643.9 MiB of candidate build artifacts. Each run covered:

  • 2,534 compiler-library tests;
  • 263 build CLI tests;
  • 7 formatter CLI tests;
  • 29 framed LSP CLI tests;
  • 20 package CLI tests;
  • 481 native run tests;
  • 11 native-test CLI tests;
  • 223 distributed-home tests;
  • 9 public-example tests;
  • 7 source-corpus tests.

The total is 3,584 tests per run. Both runs also passed cargo check, cargo fmt --check, and cargo clippy --all-targets -- -D warnings. Documentation generation produced 143 pages, and git diff --check passed.

Artifact Qualification

development/compiler/scripts/qualify-local-release.sh must create the archive twice and compare the extracted .nocter/ trees recursively. The retained archive must contain exactly one .nocter/ root with the ARM64 compiler, standard library, version and manifest metadata, license, and notice.

Without inherited NOCTER_HOME, the second fresh extraction must pass:

  1. 1. --version, doctor, and top-level help;
  2. initialization of a fresh executable package;
  3. locked and offline package checking;
  4. the initialized package's native test;
  5. two byte-identical locked/offline JSON package graphs;
  6. locked/offline package run;
  7. locked/offline explicit build to a selected output path;
  8. direct execution of the generated ARM64 Mach-O executable;
  9. a framed LSP initialize, initialized, shutdown, and exit lifecycle reporting v0.13.0.

The installed VERSION, MANIFEST.json, LICENSE, and NOTICE must match tracked inputs byte for byte. The final evidence records archive name, size, SHA-256, release-content commit, and standard-library file count.

The qualification script created the archive twice and compared the two extracted .nocter/ trees recursively. The second archive is the retained local candidate:

  • release-content commit: 718b8ca80ec96553f4e4d13d054a9f9eca3f1e70;
  • archive: dist/nocter-v0.13.0-arm64-darwin.tar.gz;
  • archive root: .nocter/;
  • byte size: 3,888,262;
  • SHA-256: 515b4c696bfc3f3a9bd96d9278904d16ca70a8cd32d57ddaa159836aa04bd761;
  • compiler: ARM64 Mach-O reporting Nocter 0.13.0;
  • contents: compiler, v0.13.0 version and manifest metadata, Apache-2.0 license and notice, and all 27 standard-library files.

The extracted metadata and legal files match tracked inputs byte for byte. Without NOCTER_HOME, the second extraction passed all nine matrix entries above, including one generated native test, byte-identical JSON graphs, direct execution of the selected output, and a framed LSP lifecycle whose initialization result reports server version 0.13.0.

Publication Boundary

The qualified archive is immutable. Publication must tag the exact documentation commit, upload only the qualified archive, and update public download instructions without rebuilding the asset. Any later compiler, standard-library, or packaging change invalidates the candidate and requires complete requalification.

Publication Record

Nocter v0.13.0 was published at github.com/rvo-jp/nocter/releases/tag/v0.13.0 on 2026-08-12. Annotated tag v0.13.0 resolves to publication commit 07dec92c87d5209b85d6e807404158742d270bfe, which contains the English release notes, current specification, standard library, packaging inputs, and generated website.

GitHub resolves v0.13.0 as the latest release. It is neither a draft nor a prerelease and contains exactly one asset: nocter-v0.13.0-arm64-darwin.tar.gz, 3,888,262 bytes, with digest sha256:515b4c696bfc3f3a9bd96d9278904d16ca70a8cd32d57ddaa159836aa04bd761. This matches the qualified local archive; the asset was not rebuilt or replaced during publication.

Post-Publication Audit

The asset was downloaded from its public release URL into a new temporary directory and compared byte for byte with the qualified local archive. Its size and SHA-256 matched this record. The extracted ARM64 Mach-O compiler reported Nocter 0.13.0, found its adjacent .nocter/ home without NOCTER_HOME, and passed doctor and top-level help. Its version, manifest, license, notice, and all 27 standard-library files matched the tracked distribution inputs.

The downloaded compiler initialized a fresh executable package. That package passed locked/offline check, its generated native test, two byte-identical JSON graph runs, package run, explicit build, and direct execution of the generated Mach-O executable. A framed initialize, initialized, shutdown, and exit LSP lifecycle completed successfully and reported server version 0.13.0. Publication is complete and no release repair remains.