Orthogonal result model¶
SemanticResult[T] and ResultTensor keep independent axes for core
presence/status, semantic domain, execution, observation, operation decision,
representation, compilation, and ambiguity. Stable integer codes are explicit;
enum declaration order has no serialization meaning, and unknown codes fail
closed.
Every result also has a ResultOrigin. ASSERTED_INPUT and
EXTERNAL_OBSERVATION make no floating-runtime claim; EXACT_COMPUTATION
records an exact operation; FLOATING_COMPUTATION requires an immutable
ExecutionEvidence; and legacy or incomplete lineage is explicitly
DESERIALIZED_LEGACY or UNKNOWN_UNQUALIFIED. Exact semantic identity,
payload origin, and floating execution evidence are separate claims.
ExecutionEvidence binds a registered floating-profile identifier to its
canonical SHA-256 and, for provider-backed runtimes, an optional runtime
contract SHA-256. The registry is the single source of truth for backend,
dtype, device/provider, rounding, and supported operators. An asserted result
may omit evidence; a computed floating result may not. A result with no payload
does not carry payload-execution evidence. Arbitrary-callable composition is
always unqualified; only the closed strict operation set enters the validated
Python execution path. Custom profile evidence requires an explicitly supplied
immutable registry both when it is created and when serialized data is loaded.
Exact bottom is PRESENT + SEMANTIC_BOTTOM with no numeric payload. A floating
fault is NO_CORE + NUMERICAL_FAULT. A finite payload may simultaneously be
censored and operationally rejected. No global precedence enum erases those
facts.
ResultTensor stores internal finite fill values where a payload is absent,
but status tensors—not fill values—carry meaning. Its named masks distinguish
partial bottom from all-bottom, faults, missingness, invalid observations,
rejection, ambiguity, refusal, and representation faults. The mandatory
scalar and tensor arithmetic paths consume within-axis priorities from the
packaged composition-v1.json table. A non-fault NO_CORE input, such as
missing observation or exact task-domain invalidity, remains NO_CORE without
acquiring a numerical-fault cause. The tensor contract also carries fixed-width
exact-zero-evidence and cause codes.
Elementwise evidence may be supplied only through ExactZeroTensorEvidence
with a certificate-manifest identity for proven-zero cells. The mandatory
elementwise arithmetic fragment shares the scalar composition tables; broad
reductions and sparse/zero-skipping behavior are deferred.
Scalar finite construction accepts finite integers, floats, and canonical
fractions.Fraction values. Arbitrary objects, strings, context-sensitive
decimal values, and non-finite NumPy scalars are refused. The Python type of a
zero payload never proves exactness: direct typed division produces semantic
bottom only for ExactZeroEvidence.PROVEN_ZERO with a certificate. An
uncertified 0 or 0.0 produces ambiguous rejected NO_CORE with a
machine-zero cause. Tensor exact-zero codes are defensively copied and
integrity-checked before composition so post-validation mutation cannot upgrade
machine evidence to semantic bottom.
ResultTensor is a working, backend-native object. It breaks constructor
aliasing and guards all arrays with an integrity digest, but a Torch working
payload remains usable by autograd and therefore is not durable evidence.
Call freeze_evidence() at serialization, monitoring, reporting, checkpoint,
or external API boundaries. The returned ResultTensorSnapshot is detached,
CPU-canonical, storage-independent, read-only, size-bounded, and digest-bound.
Only snapshots have canonical tensor serialization.
Scalar serialization schema v2 stores origin plus the complete evidence
object. Strict loading rejects schema v1; SemanticResult.from_legacy_dict()
is the explicit compatibility path and always returns unqualified legacy
origin. See ADR-0016 and ADR-0017 for the rationale and threat model.
Legacy numeric rendering and merged masks are opt-in lossy projections and emit a warning naming the lost distinctions.