Skip to main content
Every imported field carries provenance: EXPLICIT (stated in the spec), DERIVED (a deterministic transformation of it), or LLM_EXTRACTED (model output). Observed traffic can add a fourth tier, OBSERVED, that sits between derived and extracted. The levels never merge.

Refinement

Off by default. When enabled, observed traffic accumulates an overlay beside the spec-derived contract, and observations that clear the gates are admitted into the effective contract the sandbox serves. Admission is journaled and versioned, so any historical version stays reproducible. What can be admitted, and the gate for each: The warmup gate is the same min_samples and min_hours pair drift alerts use, so nothing enters the sandbox you were not told about first. A type conflict that does not clear its gate is still recorded as a contradiction; nothing is erased. The sanitizer is respected: a field whose value never reached disk still teaches presence, because the record carries the pointer that was redacted. It cannot teach a type.

Reading it

--format json emits the overlay and the state machine as one document. Every sandbox response carries x-pikopod-contract-version. Pinned scenarios come from from-drift and reproduce: a pack carries contractVersion and runs at that version whatever refinement admits later.

Conformance

Drift is baseline-relative. Conformance is spec-relative: does the provider obey its own documentation?
A check whose evidence the sanitizer redacted is counted as unverifiable and never scored as a pass. Values of curated volatile fields are exempt from enum checks. Without --strict, conformance exits 0 regardless; with it, an error-severity violation exits 1. --handoff writes the report for pikopod pr comment.

Spec update

Both signals can become a patch to the original document:
Additive changes (a new field, a new enum value, a new status) are applied in place, format-preserving. Narrowings are listed as suggestions and never applied. See pikopod spec-update.