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.nctowns the only general decimal input scans: one unsignedu64accumulator and one negativei64accumulator. Destination publication performs range checks only and never reads the source text again.std/fmt/formatting.nctremains the only decimal output algorithm.std/numcalls its append contracts;std/fmtdoes not importstd/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, andnocter-discoverytests passed: 96 tests total, zero failures.- The dedicated native standard numeric target compiled and executed all three current
std/numtests. - 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.nctsuccessfully.
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.