Debugger data contracts #
These v1 JSON Schemas describe the shipped debugger evidence: shadow records,
explicit availability values, session sidecars, hook capabilities, journal manifests
and immutable export manifests. Top-level unknown fields and unsupported versions
are rejected. payload.native retains the original native response verbatim; it is
raw evidence, not a promise that every native field has been normalized.
record-v1.schema.json has a closed record-kind union. The current exporter emits
observations, operation results, trace-window boundaries, attempts, contacts and
stream gaps. It never synthesizes unavailable move lifecycle transitions. Native
time on attempt/contact events becomes clock.engine_seconds; original events
remain in the journal. Tick/time comparisons require the same session/generation.
Host monotonic timestamps require the same host_clock_id.
The teleport callback observer uses raw native event kinds
teleport_callback and teleport_observer. They remain inside
observation.payload.native, not new members of the v1 closed record-kind union.
Its operation result retains separate host config fingerprints and explicit
unavailable stages. Actor water queries likewise use generic native observations.
No schema/reader version change is needed; raw values are not discarded or
promoted to action_transition, arrival or verified task completion.
Observed values require a value and null reason. Unavailable/not-enabled values
require null and a reason. An observed absent target belongs in a typed value such
as { "present": false }; null is not evidence of observed absence. Raw native
sentinels remain raw and must not be mistaken for normalized measurements.
Use debug evidence-verify MANIFEST to verify digests, row sequence, session
identity, operation accounting and the implemented record invariants. The included
Rust reader rejects unsupported versions, unknown record kinds/fields and malformed
availability. Neither verifier claims that a well-formed trace is a valid combat
comparison or that the Rust model is equivalent to the game.
Full experiment-plan, episode/aggregate and variant-installation schemas from
architecture §§15–17 belong to the gated batch expansion. They are not shipped
under these debugger schema names. plans/hag-pilot.json is explicitly the minimal
primitive throughput gate: it marks all combat outcome statistics ineligible until
a complete pre-reviewed reset/contamination envelope exists. The measured failed
throughput gate stopped expansion rather than relabeling this pilot as the full
simulator contract.