Nocter v0.10.0 Stabilization and Qualification
Status: Published and audited on 2026-08-09.
This record owns the final engineering audit and release-candidate evidence for v0.10.0. The completed feature contracts are frozen in ../milestones/v0.10.0.md, including the separate Phase 1, Phase 2, and Phase 3 records. Stabilization may correct defects, remove duplicate authority, improve diagnostics, and add regression coverage; it must not add another public feature.
The public release index and root download instructions identify v0.10.0. Repository tag v0.10.0 preserves its exact publication commit. Earlier published release records and artifacts remain immutable.
Contract Audit
The audit establishes all of the following from source and tests:
- every integer operation consumes one resolved width and signedness model, with no standard-library path or display-name capability exception
- directory-module identity, composed source membership, public-surface ownership, and callable body identity are shared by checking, native compilation, diagnostics, and editor analysis
- visibility is resolved once from exact
PackageIdandModuleIdvalues; re-exports cannot widen a declaration and no path spelling grants access or trusted authority - every valid graph contains exactly one implicit standard package selected from the active Nocter home, including single-file mode and a graph rooted at the standard package itself
- the reserved
stdalias cannot enter user dependencies or generated locks, and graph namespace iteration is deterministic - the selected standard package has an exact name, release version, and
PackageIdbefore any primitive or trusted runtime role can be accepted - hover, completion, signature help, definition, references, rename, semantic tokens, and diagnostics consume the same source scope, callable, and package identities as compilation
- no temporary compatibility parser, silent fallback, unfinished production marker, or user-reachable panic remains in the v0.10.0 surface
Any defect found by this audit requires focused regression coverage and a separate implementation commit before candidate identity changes.
The audit found one release-blocking invariant hole before candidate identity changed. Home resolution and version errors were previously discarded, and a missing std/nocter.nct or std/index.nct silently produced a graph without the promised implicit package. In addition, a graph rooted at std could assign it an ordinary root identity, and dependency-name enumeration depended on hash iteration order.
Commit f1d7e4b4 makes standard-package selection fallible, requires both package root files, assigns the same versioned PackageId whether std is graph root or implicit dependency, and uses an ordered namespace map. Shared compiler and integration fixtures now create a versioned test home rather than relying on the removed omission path. Focused tests reject a missing home version or package source and prove the exact root identity. The complete 3,436-test suite passed before candidate identity changed.
Commit e774909e corrects a defensive raw-text decoder diagnostic that incorrectly claimed string interpolation was unimplemented. Interpolation remains supported; the decoder now reports the actual invalid unescaped boundary and has direct regression coverage.
No TODO, FIXME, HACK, XXX, todo!, or unimplemented! marker remains under compiler or standard-library production source.
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.10.0. The specification identifies the published language, while the root README and public release index identify v0.10.0 as the latest published release.
Public English release notes and the exact archive download live at ../../releases/v0.10.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 5ed03466517b8675e4f73f420bb2e888fdb401c8 passed one incremental development/compiler/scripts/verify.sh run and a second run after cargo clean -p nocter removed 487 files and 538.5 MiB of crate build artifacts. Each run covered:
- 2,384 compiler-library tests
- 296 build CLI tests
- 7 formatter CLI tests
- 28 framed LSP CLI tests
- 20 package CLI tests
- 457 native run tests
- 11 native-test CLI tests
- 225 distributed-home tests
- 2 public-example tests
- 7 source-corpus tests
The total is 3,437 tests per run. Both runs also passed cargo check, cargo fmt --check, and cargo clippy --all-targets -- -D warnings. Documentation generation produced 113 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.10.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:
5ed03466517b8675e4f73f420bb2e888fdb401c8 - archive:
dist/nocter-v0.10.0-arm64-darwin.tar.gz - archive root:
.nocter/ - byte size: 3,465,760
- SHA-256:
fe47f69b274a23c8d83bd28d9bb28b3e3ee3a43f02bb16ed0151a42345ce61c9 - compiler: ARM64 Mach-O reporting
Nocter 0.10.0 - contents: compiler, v0.10.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.10.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-09 and used only the archive identified above.
Publication Record
Nocter v0.10.0 was published at github.com/rvo-jp/nocter/releases/tag/v0.10.0 on 2026-08-09. Annotated tag v0.10.0 resolves to publication commit cc866309e6815670e1b7e558d461fcd7415111c4, which contains the English release notes, current specification, standard library, packaging inputs, and generated website.
GitHub resolves v0.10.0 as the latest release. It is neither a draft nor a prerelease and contains exactly one asset: nocter-v0.10.0-arm64-darwin.tar.gz, 3,465,760 bytes, with digest sha256:fe47f69b274a23c8d83bd28d9bb28b3e3ee3a43f02bb16ed0151a42345ce61c9. 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. Its size and SHA-256 matched the qualification record. The extracted ARM64 Mach-O compiler reported Nocter 0.10.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.10.0. Publication is complete and no release repair remains.