Programming Language

Nocter

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

/development/reviews/v0.35.0-phase-5.md

v0.35.0 Phase 5 Tooling and Practical Integration Review

Result: complete with no open Phase 5 finding (2026-09-05). The static-data and Unicode-text product now crosses public example, source tooling, semantic editor, installed compiler, native execution, and installed LSP boundaries. No feature owns a Unicode-specific semantic fallback.

Practical Product

The single-file Unicode example is the practical authority for ordinary use. It trims U+3000 whitespace, lowercases Greek text with Final_Sigma, expands sharp S during uppercase conversion, queries an emoji property, pops a four-byte scalar, truncates at an earlier scalar boundary, and prints the resulting owned Strings. The example uses only public std contracts.

The standard example runner checks exact output after compiling and executing every public single-file example. The formatter corpus independently requires every example to be canonical. An installed-toolchain test builds and executes the same Phase 4 API families against a manifest-selected standard tree rather than repository-internal modules.

Editor Boundary

Reference-application tests open the real Unicode example and follow str.to_lowercase from its use to the public std/str/index.nct contract and private casing.nct body. It also verifies references across those sources, String.truncate signature help, semantic tokens, and member completion after an intentionally incomplete expression. All responses come from the existing workspace-analysis and semantic-query products.

The installed LSP qualification opens the generated 165-kilobyte Unicode static source and the casing implementation in addition to established contract/body fixtures. Each source must produce semantic tokens and no diagnostics in one framed server lifecycle. Request identities are derived from the source list, so adding another installed-source fixture cannot collide with shutdown.

Existing Generic Evidence Reused

Phase 1 already qualifies immutable-static parsing, canonical formatting, tokens and AST JSON, diagnostics, hover, completion, definition, references, rename, semantic highlighting, target-data selection, and native read-only placement. Repeating those tests with Unicode table contents would test data volume rather than a new responsibility. Phase 5 instead exercises the generated source through the installed LSP and retains the Phase 1 semantic identity tests as the static tooling authority. Standard-source rename remains read-only through the general dependency-source rule.

Findings Closed During Implementation

  • The public Unicode example stopped at scalar iteration and append, so no user-facing source exercised the Phase 3 or Phase 4 APIs. It now covers the complete practical Unicode-text slice.
  • Installed LSP qualification opened only the small error contract and implementation. Generated immutable statics and Unicode-dependent ordinary bodies now cross the same installed workspace path.
  • The LSP script used a hard-coded shutdown request identity tied to exactly two source fixtures. Shutdown now follows the fixture count, eliminating a caller-maintained parallel value.

Evidence

  • focused language-server reference-application test passes;
  • every public single-file example compiles, runs, and matches its exact output contract;
  • every public example remains canonical formatter output;
  • the installed-standard CLI test builds and executes Unicode trim, casing, pop, and truncate;
  • a fresh optimized archive was assembled and extracted; its compiler checked and ran the Unicode example with exact output, and its LSP analyzed generated tables and casing source without a diagnostic;
  • the complete workspace, warnings-denied Clippy, no-default-features, Rustdoc, generated-data, documentation, and repository-integrity gates pass at the reviewed commit.

Boundary Result

Source tooling sees only syntax. Editor features see semantic identities and presentations. The installed compiler sees a content-validated standard tree. Public applications see only std contracts. Unicode data remains private to std/internal/unicode, and no tooling layer interprets its ranges, mappings, UTF-8 semantics, or casing context.