ADR 0044: Public integer conversion result subset
Historical-evidence note: verification paths named below record the evidence used when this ADR was accepted; deleted aggregate checks are not active architecture or release owners. Current ownership is the four-surface ASL tree, with per-ID AVS coverage projected into
spec/evidence/release-traceability-readiness.json.
Decision scope
Same-width signedness changes, profile support, floating conversion, rounding, saturation, flags, and exceptional results remain open.
Context
The public PTO type system defines integer widening and narrowing independently
of any backend. Widening sign-extends a signed source and zero-extends an
unsigned source. Narrowing truncates the high source bits. The public type table
also fixes the signedness and width of i8/u8/i16/u16/i32/u32/i64/u64, and
identifies pto.tcvt as the tile conversion operation.
The existing ASL integer path normalized only to the destination type. That is
correct for truncation, but not for signed widening: an S8 payload 0x80
could become positive 128 in S16 instead of negative -128.
Decision
For TCVT, when both operands use one of the eight public integer types and
their widths differ:
- Interpret the source payload at the source width.
- On widening, sign-extend a signed source and zero-extend an unsigned source.
- On narrowing, retain the low destination-width bits and discard all higher bits.
- Canonicalize the destination payload to PTO's 64-bit model word using the destination signedness.
The rule defines 48 ordered unequal-width source/destination tuples: 24 widening and 24 narrowing. It defines results only after a target profile has accepted the type pair. It does not make any pair supported by A2/A3 or A5.
Same-width conversions are excluded from this bounded decision. Floating- point, float/integer, quantization, rounding, saturation, exception, and flag behavior remain behind their existing numeric profile hooks.
Consequences
TileConvertValue now normalizes the source before the destination. Direct and
decoded TCVT therefore agree for signed widening, unsigned widening, and
narrowing corners without changing any floating path.
S5-T2-A6 closes this 48-tuple portable result subset. It does not accept the
parent ADR 0090 decision, complete the tile-convert domain, select any of the
99 broad variation-point routes, or change the M4 maturity floor.
Evidence
spec/evidence/public-integer-conversion-contract.jsonscripts/generate-public-integer-conversion-contractasl/tile/conversion.asltests/asl/tile/model/numeric/formats/tile-exec-conversion-001.aslspec/evidence/public-numeric-type-baseline.jsonspec/evidence/numeric-profile-decision-inputs.jsonspec/evidence/executable-model-comparison.jsonscripts/check-catalogs