SIGN IN SIGN UP

fix(ontology): gpu.codec declared Measured for rows that resolve Specification

`resolve_codecs` picks provenance per row -- a capability the reader queried
from the driver resolves Measured, one concluded from the GPU model resolves
Specification. The five entities those rows populate all declared Measured, so
the schema promised a live observation for values that may never have been
observed.

`Entity` carries one provenance and cannot express "varies per row", and adding
a Varies variant to `Provenance` would poison `is_observation()` -- the guard an
agent applies before treating a value as fact -- for every consumer of every
entity. So the declaration takes the weakest provenance a row can carry, which
is the rule `Derived` already follows: it "inherits the weakest provenance of
its inputs".

That direction is the safe one. A queried row resolving Measured against a
Specification declaration over-delivers, and costs a consumer nothing. The
reverse hands an agent a spec-sheet inference wearing a measurement's
authority.

Note for whoever adds the next cluster: nothing in the suite compares a
reading's provenance against its entity's declared provenance, so this class of
drift is uncaught by construction. This was found by reading the declarations,
not by a test.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A
Adam Erickson committed
b2dd07bcafe903ec2ed1c353b0a289be3c439506
Parent: 2e6f9e9