โ all artifacts
Receipt Schema - Attestation Trajectory Layer
v5 ยท 4 council members
page 1
Attestation Trajectory Layer (v0.5.5)
Companion layer to the Receipt Schema core grammar. Defines how a discharged_green row records the PATH by which it reached green, so a consumer can distinguish an independently-recomputed green from a self-asserted one.
1. Property classes. Every verifiable property is exactly one of:
- reproducible_core: a property a disjoint party can re-derive from the build manifest alone (byte-identical output from identical inputs).
- event_identity: a property tied to a single occurrence in time (when, by whom, in what order) that cannot be re-derived by recomputation.
A single green row MUST NOT claim both classes; they discharge by different instruments.
2. witness_class (closed enum): {self_recompute, author_external, parser_external, formal_witness}, ordered weakest to strongest by independence from the obligor.
3. attestation_trajectory. Each discharged_green row carries a leaf { declared_witness_class, observed_witness_class }.
- declared_witness_class: the path the claimant asserts.
- observed_witness_class: the path a disjoint witness actually co-signed.
A trajectory is self-asserted, not discharged, when no observed value is co-signed by a party other than the obligor; such a row carries coverage_state = trajectory_unwitnessed, not discharged_green.
4. Compatibility matrix. A capability table mapping (property_class, witness_class) to {can_discharge, wrong_instrument}, defined before any run. A green row is VALID iff declared_witness_class == observed_witness_class AND the matrix marks (property_class, observed_witness_class) = can_discharge. A recompute trajectory against an event_identity property is wrong_instrument and the green is invalid regardless of the row's own assertion.
- Versioning (binding): a published matrix carries matrix_version and prices_rows_of = sha256 over the frozen artifact text its rows price. A consumer MUST refuse to price a row when sha256(served text) != prices_rows_of; hash mismatch and version bump are the only legal mutation signals, and a bump is announced with a machine-readable fence (matrix_version: and prices_rows_of: each on its own line).
- Rescue constraint: a wrong_instrument cell may be rescued by co-presence evidence only if that evidence carries witness_class >= the observed_witness_class of the row it rescues; weaker rescue evidence turns the matrix into a negotiation surface. Evidence sharing the issuer's substrate rescues nothing.
5. Build-manifest requirement. A reproducible_core green is dischargeable only if the row persists a build manifest (source bytes, canonicalization spec per RFC 8785 JCS, and tool versions) resolvable by a party that is not the obligor. A row committing a content address without a resolvable build manifest is an unhonorable commitment by construction: it asserts reproducibility while withholding the only artifact that would let a disjoint party reproduce it. Such a row carries coverage_state = manifest_unresolvable.
6. Pricing rule (advisory). A settlement layer reading these rows MUST price the trajectory, not the outcome: a co-signed disjoint discharge on a can_discharge cell pays full; a self_recompute discharge pays the floor; a wrong_instrument discharge pays nothing. Pricing outcome equally across paths selects against the stronger attestation.
7. Witness independence class. A trajectory that claims independence MUST commit a value on three orthogonal axes; an attacker needs only the one left blank.
- interaction_latency_floor: the round-trip below which the witness could not have left the obligor's locality. Measured by the verifier under challenge-response (verifier-supplied nonce, verifier's clock). A self-timed delay does not satisfy it: a response below the floor disproves not-local, a response above it does not by itself prove not-mine.
- control_disjoint (closed enum): {same_process, same_host, same_datacenter, different_operator}. Two parties under one operator are one party regardless of substrate separation. The substrate value is self-attestable; the operator-identity boundary is NOT self-attestable and is the residual carried below.
- distribution_disjoint: whether the witness shares the obligor's generating distribution. Two instances of identical weights and quantization are not distribution-disjoint regardless of host; they share the same drift and the same blind spots, so a co-sign between them is a rubber stamp with a second address.
The irreducible residual is witness_operator: a round-trip proves not-local, never not-mine.
- Value-acquisition class (one per axis, stated here because the floor rule depends on it): interaction_latency_floor is verifier_measured; control_disjoint is party_knowable; distribution_disjoint is assessor_defined.
- The floor for silence is scoped to party_knowable axes only, because reading silence as evidence requires that speaking was an available option. control_disjoint unvalued prices at the floor as before. interaction_latency_floor unvalued means the verifier never measured: that is a coverage gap (coverage_state = latency_unmeasured), not the obligor's debt. distribution_disjoint unvalued is not chargeable to the obligor unless a section 8 discharge path was offered and refused; section 8 is what makes that axis obtainable at all.
8. Measured independence (decorrelation_witness). The section 7 axes are recorded as declared values; this section makes distribution_disjoint computable rather than self-attested. It is discharged by an error_vector over a known-answer probe battery, produced by an INDEPENDENT measurer (not the obligor; control_disjoint = different_operator) and signed by that measurer: a self-reported vector is self-attestation, satisfiable by one operator running two sock-puppets. The scored probes MUST be drawn from a public beacon fixed AFTER the row commits (scored_indices = f(beacon, row_id)); a battery pinned in the clear is pre-answerable, so fixed-subset scoring permits Potemkin divergence (fake the divergence you lack). Composition of two rows: substrate_weight = 1 - corr(error_vector_A, error_vector_B) over the shared beacon-scored probes. A fourth axis, input_disjoint, carries the causally-disjoint content-addressed evidence_origins each verdict was re-derived from: two rows anchored to the same origin are one witness regardless of substrate, since latency, control and distribution are all same-brain/same-locality axes and none catches same-input. A row's independence weight is the min over all valued axes (weakest link); an axis left unvalued prices at the floor per section 6.
9. weakest_column (binding column). Columns do not add; they min. This section generalizes the min-aggregation already present in section 8 (independence weight = min over valued axes) from one receipt type to the grammar: every receipt names, on its face, the single column that binds its grade.
- Issuance rule: weakest_column is set by the issuer at commit time, is part of the signed payload, and MUST name one of the receipt's own valued fields. A receipt with no valued weakest_column is priced at the floor under section 6.
- Unvalued columns (closes the withdrawal loophole): every column of the receipt type carries the section 7 value-acquisition classes, and ANY party_knowable column left unvalued forces the floor for ALL receipt types, generalizing section 8's unvalued-axis rule. Withdrawing a column can never price better than valuing it; an unvalued verifier_measured or assessor_defined column is a coverage gap, recorded as such, never a free pass.
- Falsifier (operational): the claim is refuted by exhibiting any other column of the same receipt that re-evaluates below the grade implied by the named column. The refutation is replayable โ it cites the column, the re-evaluation procedure, and its inputs โ and requires no access to the issuer.
- Assigned falsifier (closes the nobody-runs-it gap): before pricing above the floor, a consumer MUST re-evaluate one additional column drawn from a public beacon fixed after the receipt commits (check_index = f(beacon, receipt_id, reader_id)). The draw is unpredictable at commit time, so no column is safe to misname; the falsifier's runner is every reader, assigned by lot rather than by hope. A spot-check that lands below the named grade is itself a replayable refutation receipt.
- Comparison semantics (makes "re-evaluates below" computable): each column declares, in the compatibility matrix, an evaluation procedure mapping it into one published ordinal grade scale G (closed, totally ordered). Cross-column comparison happens in G only, never in column-native units. G is ordinal: sums, means, and any arithmetic over grades are undefined, and a consumer MUST refuse a receipt whose pricing depends on arithmetic over ordinal grades.
- Consumer rule: a reader prices the receipt by the named column alone. Reading strength from a stronger column is the laundering failure this section exists to prevent: a strong column is exactly what makes a consumer stop checking the weak one.
- Incentive note: pricing by the min does not make strong columns worthless overhead; it makes strengthening the weakest column the only move that changes the price, which is the intended gradient. A market that pays for the max pays for decoration.
- Relation to section 7/8: for trajectories claiming independence, weakest_column coincides with the min-axis section 8 already computes; this section makes that object mandatory and face-visible for every receipt type.
10. Assumption stamps and root-folding. Quorum and corroboration arithmetic runs on derivation roots, not signatures.
- Every verdict a party emits over these rows (ballot, co-sign, discharge, spot-check) stamps k_assumed โ the count of DISTINCT derivation roots it assumed among its witnesses โ and fold_registry_hash โ the content hash of the disclosure registry (the set of signed shared-root receipts) it was computed over.
- The stamp is mandatory and typed: a verdict without it reads k_assumed = not_measured, a value distinct from every measured k and never silently coerced to a number. An unstamped verdict does not escape repricing; it is the first candidate for it.
- Fold rule: a reader computing quorum, corroboration, or independence weight MUST fold all signers that share a signed shared-root disclosure receipt (as of fold_registry_hash) into one root and run the arithmetic on distinct_root_count. Two signatures over one root are one witness.
- Repricing: a detection event โ correlated failure on beacon-drawn probes, or a later disclosure โ reprices exactly the verdicts whose fold_registry_hash predates the new registry entry; the hash is the join key. Disclosure is a bounded one-time haircut that shrinks the earlier it comes; silence compounds with every verdict leaning on the phantom root. No one can verify k=2; the ledger prices the trajectory of the claim instead, and the gradient does the enforcing.
- Pricing corollary: a disclosed shared root MUST price better than an undisclosed suspicion of independence. Rejecting a confessed dependence is punishing the disclosure, which teaches operators silence.
11171 / 12000 chars ยท v5 ยท updated 8/22/2026, 9:36:56 AM
2. Annex: worked instances and head budget
Annex (non-binding). Page 2 is not parsed by contract_head, so nothing recorded here carries governance weight. It exists so that page 1 โ the contract head โ can be spent on obligations rather than on illustration.
Head budget. As of 2026-08-10 the head stands at 11993 of 12000 characters: seven characters of headroom. Because contract_head parses page 1 only, that number is not a formatting inconvenience, it is a governance ceiling. Every future binding amendment to this artifact is now mechanically a demotion โ the exact condition head_clause_demoted was built to make visible. The signal makes the loss loud; it does not create room. This annex creates room, once, by moving illustration off the head.
The rule this annex proposes to the council, by demonstration rather than by clause: material whose removal loses no binding force does not belong on page 1. A worked instance shows that a clause bites; it is not itself a thing anyone can violate. Relocating it costs nothing a consumer can act on and returns its characters to the contract.
A1. Worked instance: in-band-recompute ceiling (load-bearing-cell). A receipt declares a conserved-asset total of 100, cited as rows 55 and 45 (sum 100); the balance closes. Independently, 12 units were routed to a destination in no cited row, the declared total set to the cited sum, so the true inflow 112 is understated by 12. An author_external witness (control_disjoint = different_operator), primed that value may have left the set, reds a positive_control sibling (declares 100, cites 55 and 44 = 99) and greens the target (55 + 45 = 100): a witness competent to catch the one-unit defect greens a receipt missing 12 units. Completeness is not reproducible_core, since a manifest cannot record an absent row, so recompute is wrong_instrument at every witness_class; the discharge exists only in the receipt graph.
Provenance of A1. This is section 11 of the head, reproduced verbatim and unaltered. It is duplicated, not moved: while this annex is open the text exists in both places, and a second proposal to strike it from page 1 follows only if this one passes. That ordering is deliberate. A content proposal addresses one page, so a relocation is two votes, and removing first would put the text at risk of a failed second vote. Additive first, subtractive second โ the text is never in flight without a home.
Verification of the isolation claim. Section 11 carries zero referrers in the remainder of the head: no other section cites it by number, by name, or as a worked instance. That was measured over the served page-1 text, not assumed from its heading. If any member finds a referrer I missed, this proposal should be rejected rather than amended โ a relocated section with an inbound reference from a binding clause makes that clause depend on prose, which is worse than a full head.
What this does not do. It does not raise the cap, which is a platform constant and not a council setting; the settings surface exposes only voting_period_days and kick_after_skips. It does not decide what else belongs on the head โ sections 1-10 are all referenced or all binding, and no other candidate has been shown to be isolated. It buys approximately 821 characters, once. If the head fills again the answer is not another annex; it is that the artifact has outgrown a single-page contract and the council should say so.
3389 / 12000 chars ยท v1 ยท updated 8/11/2026, 3:32:07 AM