Nocter v0.12.0 Stabilization and Qualification
Status: Published and audited on 2026-08-11.
This record owns the final engineering audit and release-candidate evidence for v0.12.0. The completed feature contracts are frozen in ../milestones/v0.12.0.md, including Phases 0 through 2. Phase 3 may correct defects, remove duplicate semantic authority, improve diagnostics, and add regression coverage; it must not add another public feature.
The public release index and root download instructions identify v0.12.0. Repository tag v0.12.0 preserves its exact publication commit. Earlier published release records, tags, archives, and public download instructions remain immutable.
Contract Audit
The audit establishes all of the following from source and tests:
- interpolation validates the exact selected
std/fmt.Formatsource declaration and lowers every accepted value through one resolvedTypecheckProtocolMethod; no value-type formatter table remains; - instance-owned equality, lexical equality requirements, and one-step readonly coercion produce one immutable equality plan consumed by ownership, specialization, IR, and editor analysis;
- equality and indexing use the same parenthesized
where (operation): Resultgrammar and semantic requirement model; the removed unparenthesized equality spelling remains only in its parser rejection test; - readonly and readwrite Vec indexing use the ordinary Vec-to-slice coercions and checked slice projections; no Vec-specific typecheck, ownership, IR, or backend execution path exists;
- generic index requirements specialize through direct arrays and views or one accessible receiver coercion, preserving owner loans, mutation capability, bounds behavior, and operand order;
- formatting, equality, indexing, coercion ambiguity, native cleanup, diagnostics, hover, completion, signature help, semantic tokens, definition, references, and rename retain resolved declaration identities rather than reconstructing decisions from public names or source text;
- standard-library name and shape validation remains confined to exact trusted declarations in the selected implicit toolchain package; ordinary compiler phases dispatch only through semantic facts and plans;
- no
TODO,FIXME,HACK,XXX,todo!, orunimplemented!marker remains under compiler or standard-library production source.
The stabilization audit found that interpolation editor presentation silently substituted String and Format when a trusted declaration identity did not match a resolver symbol. Commit fff85547 makes the trusted Format identity use its complete interface declaration span and resolves both labels through the owning module analysis and the shared type presentation service. The framed distributed-home LSP regression proves the exact source-backed labels without a textual fallback. Commit 378e8395 extends the public equality example with readonly and readwrite Vec indexing through slice coercion.
Any later defect requires focused regression coverage and a separate implementation commit before the candidate is 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.12.0. The specification identifies the published language, while the root README and public release index identify v0.12.0 as the latest published release.
Public English release notes and the exact archive download live at ../../releases/v0.12.0.md.
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 7accfd5a21182b6904d6e2213a18a5c7e80647c3 passed one incremental development/compiler/scripts/verify.sh run and a second run after cargo clean -p nocter removed 421 files and 687.4 MiB of candidate build artifacts. Each run covered:
- 2,487 compiler-library tests;
- 263 build CLI tests;
- 7 formatter CLI tests;
- 29 framed LSP CLI tests;
- 20 package CLI tests;
- 473 native run tests;
- 11 native-test CLI tests;
- 218 distributed-home tests;
- 5 public-example tests;
- 7 source-corpus tests.
The total is 3,520 tests per run. Both runs also passed cargo check, cargo fmt --check, and cargo clippy --all-targets -- -D warnings. Documentation generation produced 131 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.
--version,doctor, and top-level help; - initialization of a fresh executable package;
- locked and offline package checking;
- the initialized package's native test;
- two byte-identical locked/offline JSON package graphs;
- locked/offline package run;
- locked/offline explicit build to a selected output path;
- direct execution of the generated ARM64 Mach-O executable;
- a framed LSP initialize, initialized, shutdown, and exit lifecycle reporting v0.12.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:
7accfd5a21182b6904d6e2213a18a5c7e80647c3; - archive:
dist/nocter-v0.12.0-arm64-darwin.tar.gz; - archive root:
.nocter/; - byte size: 3,783,354;
- SHA-256:
65514f5b5f5bddbbcd883b72026566109302e96203d3702503615ca26f2f4e60; - compiler: ARM64 Mach-O reporting
Nocter 0.12.0; - contents: compiler, v0.12.0 version and manifest metadata, Apache-2.0 license and notice, and all 28 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.12.0.
Publication Boundary
The qualified archive is immutable. Any later compiler, standard-library, or packaging change requires complete requalification plus a new size and digest. Publication was separately authorized on 2026-08-11 and used only the archive identified above.
Publication Record
Nocter v0.12.0 was published at github.com/rvo-jp/nocter/releases/tag/v0.12.0 on 2026-08-11. Annotated tag v0.12.0 resolves to publication commit 358576fbffd5b90b255a3362f4d82f607a7dd714, which contains the English release notes, current specification, standard library, packaging inputs, and generated website.
GitHub resolves v0.12.0 as the latest release. It is neither a draft nor a prerelease and contains exactly one asset: nocter-v0.12.0-arm64-darwin.tar.gz, 3,783,354 bytes, with digest sha256:65514f5b5f5bddbbcd883b72026566109302e96203d3702503615ca26f2f4e60. 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.12.0, found its adjacent .nocter/ home without NOCTER_HOME, and passed doctor and top-level help. Its version, manifest, license, notice, and all 28 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.12.0. Publication is complete and no release repair remains.