Generic Workflow: Separate-Mode Marriage Agreement
Non-normative persona walkthrough mapping the formation journey onto protocol operations and the conformance example corpus.
Non-normative walkthrough mapping the logical formation journey onto
Anklet operations, in the style of the ODR track's
Generic-ODR-workflow.md. Personas: P1 (initiating party, India) and
P2 (invited party, USA); a professional reviewer; a verification
provider. Each step names the example pair in this directory.
Phase 1 — Matter creation and joining
- P1's Consumer Application opens the Matter:
create_matter(separate-mode-cross-border). Context carries the jurisdiction object with both party jurisdictions; state becomesinitiated. - P1 invites P2:
invite_party(second-party). The PP returns an invitation reference; the bearer token travels out of band and is stored only hashed. State:awaiting_party. - P2 redeems the invitation from their own CA:
join_matter(invitation-redeemed). Pre-join, P2 saw only the privacy-safe public context. State:party_in_progress.
Phase 2 — Private capture and selective disclosure
- Each party captures sections privately:
update_section(financial-disclosure-private-capture). Content travels by reference; disclosure state iscaptured— structurally invisible to the other party. - Sharing is an explicit consent act:
share_section(financial-disclosure). The PP records the act as an audited event before projecting content into the shared space. - A party may reverse a pending disclosure:
withdraw_section(ceremony-expenses); history is retained. - When done, each party declares completion:
submit_participation(party-two-complete), locking their sections.
Phase 3 — Gates, reconciliation, drafting, review
- Any participant may ask where things stand:
request_status(blocked-on-disclosure-and-reconciliation) — the PP answers with lifecycle state plus typed Blocking Reasons and operation-level action hints (never application routes). - With gates green, a draft is requested:
request_instrument(first-draft). The callback carries the content-addressed Instrument Version, evaluation status (fail-loud if evaluation did not run), and the coverage audit. - Professional review:
request_review(professional-review-risk-flag) assigns a reviewer;record_review(approved-with-privileged-notes) records the outcome — note theprivilegedconfidentiality class on the exchange and the privileged notes traveling only as a reference.
Phase 4 — Verification and execution
- Identity proofing for each signer:
verify(identity-proofing-party-two). The callback shows the normalized outcome — including the cross-party uniqueness check — andrefetched_from_provider: true, reflecting the callbacks-are-hints rule (core §11.4). - Execution:
execute(seal-and-sign), carried under thesealedclass. The callback returns the Evidence Seal manifest (instrument hash, disclosure ledger hash, process-record head) and pending signature ceremonies for both parties. Signer identity must join to the proofing outcome before completion.
Phase 5 — After execution
- Changes happen only as linked successors:
amend(successor-agreement). - Process grievances:
escalate(process-grievance) — with an offered handoff to PULSE ODR for independent resolution. - Mutual wrap-up:
close(mutual-acknowledgment) returns the vault export reference and the final process-record hash.
Reading the corpus
Every file pairs <op>-request-<scenario>.json with
on_<op>-callback-<scenario>.json. All exchanges share one
transaction_id (the Matter). Bodies never embed documents or secrets —
only record:, blob:, and sha256: references per core §5.3.