Programming Language

Nocter

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

/development/reviews/v0.23.0-phase-1.md

v0.23.0 Phase 1 Decimal Authority Review

Status: complete (2026-08-31). This review covers the shared parsing and private narrowing foundation. Public type-owned declarations remain Phase 2 work.

Authority and Dependency Findings

  • std/num/decimal.nct owns the only general decimal input scans: one unsigned u64 accumulator and one negative i64 accumulator. Destination publication performs range checks only and never reads the source text again.
  • std/fmt/formatting.nct remains the only decimal output algorithm. std/num calls its append contracts; std/fmt does not import std/num, so no dependency cycle or reverse callback exists.
  • Narrowing is not expressed as a generic unchecked function. Each private primitive has one exact source and result type, and the compiler's closed runtime-role registry, target-program contract, session profile, and ARM64 ABI selector agree on that identity.
  • ARM64 narrowing emits no second computation: after the source range check, the one-word argument and result intentionally share the ABI result register. The declared destination type owns later width interpretation.

Failure and Boundary Findings

The unsigned accumulator admits u64::MAX and rejects the adjacent decimal value before multiply or addition can overflow. The signed accumulator retains a negative value throughout the scan, so i64::MIN is representable without constructing its positive magnitude. Positive i64::MAX, the adjacent positive overflow, narrow signed minima, and narrow unsigned maxima cross native tests.

Invalid syntax and overflow remain none; no parser allocation or built-in error construction was introduced. The private primitives are source-private, target-independent numeric roles rather than target syscalls.

Qualification

  • Rust formatting passed.
  • nocter-runtime-contract, nocter-target-program, nocter-session, nocter-arm64, and nocter-discovery tests passed: 96 tests total, zero failures.
  • The dedicated native standard numeric target compiled and executed all three current std/num tests.
  • The separated Unicode/JSON native target retained 19 passing cases after numeric tests moved to their own target.
  • A current debug compiler with an isolated home containing the authored standard library checked examples/hello.nct successfully.

No legacy free function was removed in Phase 1, and no compatibility API was added. Phase 2 can replace the declarations while retaining this parsing and output authority unchanged.