Rendered from docs/obligations/0030-the-provenance-block-belongs-to-the-engine-and-nothing-states.md in the Headwater
corpus. Every document on this half of the site is typed by the taxonomy
the descriptor names: corpus.json.
The provenance block belongs to the engine, and nothing states its shape
Context
Spec 3 puts the shape of the provenance block with the engine rather than with a taxonomy. It also says that four engine rules turn on the warrant. The meta-schema declares no provenance block. Since #1438, warrant.value.not_permitted and warrant.acceptance.unpaired read the warrant and the acceptor in it. No check reads the shape of the block as a whole.
Obligation
The query surface is the first code to read provenance.warrant, because spec 5 makes a pointer state the asserted warrant beside the summary. So a read depends on a key that nothing validates. A document that misspells the key gets a pointer with no warning on it, and every rule that spec 3 promises is still absent.
Discharge
Onboarding was the obvious place to settle this and it settled the other half instead. headwater init and headwater infer write no provenance block into any document, and the reason is not the missing shape. accepted_by records a human act, so a verb that wrote one across a corpus would assert an acceptance that nobody performed. The first typing of this corpus already did that once by hand, and the retrofit record states the result. A scaffolder that mints one document is where a warrant can be true.
The scaffolder mints one document, and it writes the one member that checks read. headwater new writes the facets that a kind requires. Since #1409, it also writes warrant: asserted, because nobody has accepted the new document yet. Two checks read that member on the document, and warrant.evidence.unsupported reads it on each evidence edge onto the document. The scaffolder writes no other member of the block. No taxonomy declares the rest of the block. A member that the scaffolder writes and no check reads is the drift that this record is about. So each document that headwater new writes carries warrant: asserted alone, and each hand-typed document carries a full block. The documents that the scaffolder wrote before #1409 carry no block, and nothing adds one to them.
The acceptance half stays where it was, and the drafting half is now answerable. accepted_by records a human act, and a run of a verb is not one. warrant, agency, drafted_by and activity describe who produced the text, and a scaffolder knows all four about the document it just wrote. What closes this record is a shape that a check reads, and the scaffolder is the caller that would fill it.
The recorder contract is the instance with no other field
A transcript is the artifact of this corpus whose whole value turns on the warrant. Spec 15 states what a recorder writes, and every value in that list is a value a person can type. The lock digest and the selection digest are both printed by headwater probe plan. So a recorded transcript and a typed one are one file to every check here. provenance.warrant is the only field that separates them, and it is the field this record says has no shape. A shelf index prints it and docs/probe-runs/ has no index, so the one reader it has does not reach the artifact that needs it.
That does not raise the priority of a shape. It names the reader a shape would serve. A rate is derived from the events rather than typed, so a forged rate needs a forged event log. The warrant is what a reader consults to decide whether to count the events at all.