Skip to content

docs(2c-F): Def 14.2 settlement receipt — survey and rulings draft (FOR RULING) - #858

Merged
cryptskii merged 1 commit into
mainfrom
docs/def-14-2-settlement-receipt-rulings
Sep 11, 2026
Merged

cryptskii merged 1 commit into
mainfrom
docs/def-14-2-settlement-receipt-rulings

Conversation

@cryptskii

Copy link
Copy Markdown
Collaborator

For owner ruling — do not merge before the rulings

docs/papers/amendment-2c-f-sofi-receipt-rulings.md: a survey of the four Def 14.2 blockers and Q publication, structured as requested (existing state → conflicts → compatibility → proposed rulings → alternatives → frozen text → implementation work). No code, no registry change, no tag change. The registry entries in §6.5–6.6 are proposals only.

The four blockers, and the smallest ruling proposed for each

Blocker What the survey found Proposed ruling
X mismatch Rev 15: X = H(DSM/route-set ‖ CCB(Q)), with Q carrying a multi-route choice set. Shipped: X = H(DSM/ext ‖ RouteCommitV1 with signature cleared), one route per signature. It is signed in DlvSettle (fields 10 and 17), carried in b, and committed in 0x0021 leaves and owner applies. Q and R have never been encodable. R1: ratify the shipped X. No bytes move. The RouteCommit is already inside b (DlvSettle preimage field 9, inside 0x0031), so "Q in the publication set" is met by B itself. Burn 0x000C and 0x0017.
DSM/receipt collision The shipped use matches the spec's own tag table (stitched receipt). It feeds recovery rollups that are sealed in capsules and signed in tombstones. R2: fresh DSM/sofi-receipt/v1 for the new class only. No migration.
Undefined set members successor_hash_v and witness_hash_v are defined nowhere, and "the published receipt set" is never enumerated. R3: successor_hash_v = c_{n+1}. witness_hash_v must be absent in schema 1 (P_v present ⇒ refuse). Publication set is exactly {receipt, B, TA_B}; trader lineage by reference to 2c-D §7.
No registered class Nothing is allocated; 0x0034 is free. R4: 0x0034 SofiReceipt schema 1, 137 bytes.

Also for ruling

  • "Q" meant two things. Q is the route-commitment body (C2-R1 point 9's sense); q is the quorum (the brief's sense). R5 answers both. Quorum is measured over S_v, which is derivable from B, using the existing Req 15.8 counting; there is no quorum certificate.
  • The FB-4 reading. B, and with it the RouteCommit, must be at quorum before binding (§16.2 step 12). R5 reads FB-4 as governing the successful-receipt publication, not that pre-bind availability.
  • R6 ordering (O2): the receipt is a pure function of (B, TA_B), built only after certification, and independent of fence release. C2's release condition is untouched. The alternative, O1, is in §5.4.
  • R7: no predicate may consume the receipt or its publication state.

All eleven frozen boundaries are checked per ruling (§4). Five incidental findings are recorded but not ruled (§2), among them registry §5.13/§5.14 citing TradeIntent fields that schema 2 no longer has.

PR #857 is independent and decides none of these questions.

…or owner ruling

A survey of the four blockers on the Def 14.2 receipt and Q publication, with a
proposed smallest ruling for each. Nothing is frozen, nothing is implemented,
and no registry row or domain tag is changed: this is returned for ruling.

- X: Rev 15 says H(DSM/route-set ‖ CCB(Q)); the shipped X is
  H(DSM/ext ‖ signature-cleared RouteCommitV1), signed by two parties and carried
  in b. Recommends ratifying the shipped X (no bytes move). The shipped Q preimage
  is already inside b via 0x0031's operation bytes.
- DSM/receipt: already hashed into recovery rollups that are sealed in capsules
  and signed in tombstones. Recommends a fresh DSM/sofi-receipt/v1 for the new
  class only.
- Set members: successor_hash_v = c_{n+1}; witness_hash_v absent in schema 1;
  publication set is exactly {receipt, B, TA_B}; lineage by reference.
- Registry: proposes 0x0034 SofiReceipt schema 1 (137 bytes), not applied.

Also records that "Q" (the route-commitment body) and "q" (the quorum) were
conflated, and five incidental findings (stale TradeIntent field references in
registry §5.13/§5.14 among them).
@cryptskii
cryptskii marked this pull request as ready for review September 11, 2026 08:45
@cryptskii
cryptskii merged commit b2271d7 into main Sep 11, 2026
2 checks passed
cryptskii added a commit that referenced this pull request Sep 11, 2026
…publication obligation that never gates the release (#859)

* docs(2c-F): freeze the Def 14.2 rulings — spec, registry and amendment

The owner ruled 2026-09-11 on the draft merged as #858. This records the
rulings verbatim and carries them into the normative text, before the code
that implements them.

- 2c-F: status FROZEN; the four answers quoted; two corrections applied in
  place — S_v is the authenticated consumed parent's committed set, never one
  read off B's proposed successor, and proof material never refuses a receipt.
  Recovery replays the frozen bytes and never re-certifies. R2, R4 and R7 had
  no competing option and are adopted as proposed.
- Spec: Def 14.2 is SofiReceipt with rho_B under DSM/sofi-receipt/v1 and the
  publication set {receipt, B, A_B}; Req 14.6-14.10 (quorum over the
  authenticated S_v, ordering, determinism, recovery, non-authority); §9.3 and
  §7.2 ratify X = H(DSM/ext ‖ RC*); §16.2 re-quotes instead of retrying a
  pre-committed alternative; the tag table retires DSM/route-set.
- Registry: 0x0034 SofiReceipt (§5.42, 137 bytes); 0x000C and 0x0017 burned;
  §2.10 names RC* as a second foreign grammar, on its own ground; §4 counts;
  stale TradeIntent field citations (I-1) and schema headings (I-2) corrected.
- 2c-D: C2-R1 point 9 marked discharged; I-3 (the Rev 15 text is in-repo).
- 2c-A Ruling 2: Q is the signed RouteCommit that B already carries.

* feat(2c-F): SofiReceipt 0x0034 — the Def 14.2 receipt as a projection of (B, TA_B)

dsm::dlv::sofi_receipt: a pure projection of the canonical market bundle and
the certified acceptance identity — b, X, a_B, and one successor commitment per
transition with witness_hash always absent in schema 1. It carries no
signature, entropy, clock or node order, so every holder of (B, TA_B)
produces identical bytes. It has a strict decoder, and verify re-derives and
compares field by field; neither is authority for anything (2c-F R7). Proof
material never refuses a receipt.

- TAG_DSM_SOFI_RECEIPT_V1 = "DSM/sofi-receipt/v1", registered (count 350).
  DSM/receipt stays the stitched receipt: its recovery rollup already reaches
  sealed capsules and signed tombstones.
- ccb: class 0x0034 allocated; RouteSet 0x000C and RouteCommitmentBody 0x0017
  move from declared_unencoded to burned_class (R1 ratified the shipped X).
- Class-1 vectors: the 137-byte receipt of the pinned market bundle, from the
  pinned identities alone; and RC* -> X from hand-written protobuf bytes, so
  a protobuf-library refactor that moved X is caught.

* feat(2c-F): publish the Def 14.2 receipt as an obligation that never gates the release

After the walk certifies a market settlement, complete_settlement projects the
SofiReceipt from the certified fold's own acceptance, and freezes the closure
{receipt, CCB(B), CCB(TA_B)} for the composed V_n's committed storage set,
before the release step. The generic sweep then publishes it. A failure to
project or freeze is logged and never holds the fence. Publication may land
after the release. Nothing re-fences, re-binds, re-admits or re-certifies
(owner ruling on R6).

- FoldedParent carries certified_acceptance: the exact TA_B 2c-D §7 accepted,
  so the receipt is built from what certified.
- MarketCompletion carries CCB(B); both the settle route and D-f supply it.
- sofi_receipt_publication: closure / freeze / publication. publication()
  reports BoundToAnotherSet rather than counting another set's quorum as the
  vault's (I-5; unreachable in beta).
- Tests: the published receipt is exactly the projection, frozen for the
  vault's own set; with receipt PUTs refused the fence still releases, and the
  sweep alone publishes afterwards with no binding round and no transition; an
  uncertified settlement has no receipt.
- Mutation controls MS1-MS3 executed: each named test red, each source
  restored and cmp-verified.

* formal(2c-F): DSMSofiReceipt — the receipt never gates the release

The 19th Lean module restates C2's completion pass with the 2c-F obligation
and proves:
- the fence follows C2's rule alone, and neither the receipt's state nor its
  reachability moves it;
- a receipt obligation is created only by a certified pass;
- the sweep alone finishes a frozen obligation, after the release, and touches
  nothing else;
- a second pass and a second sweep change nothing.

The samples show a release with the receipt still owed and the sweep then
publishing it. Two mutation controls were executed, each with the kernel
proving the named sample false. CI Lean pin 18 -> 19.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant