Skip to content

spec(exo-dcc.5): s3 holds the payee-chosen confirmation depth - #334

Merged
corpetty merged 1 commit into
mainfrom
spec/exo-e16-depth
Oct 21, 2026
Merged

corpetty merged 1 commit into
mainfrom
spec/exo-e16-depth

Conversation

@corpetty

Copy link
Copy Markdown
Owner

This amends the XMR-request typed spec derived-exo-dcc.5 through discuss-issue, with your sign-off on 2026-10-21. It follows #333.

What changes in the spec

  • s3 now reads: a part is confirmed only with at least the confirmation depth the agreed request names, 1 to 720 blocks, or 10 when it names none.
  • The depth is signed. The same request at another depth is a different request no one agreed to.
  • Refusals. A depth out of range, or one on a non-Monero split, is refused.
  • Unchanged: s1, s2 and s4–s7.

The new oracle. probe_xmr_depth_stepper is a model check over three things:

  • each named depth against the confirmation counts around it, through the real propose, agree and confirm pump;
  • an agreement signed at one depth, which is refused at every other depth;
  • the refusals.

The default-depth stepper is untouched, since invariant tests are append-only.

Tested

  • grade-specs exo-dcc.5: 8/8.
  • validate_spec: OK.
  • Mutation checks, both caught:
    • a confirm path that ignores the named depth fails the depth-1 state;
    • a depth left out of the signed bytes fails the signed state.

🤖 Generated with Claude Code

The XMR request's typed spec, amended through discuss-issue (operator sign-off
2026-10-21). This follows #333, which made the confirmation depth the payee's choice.
s3 now reads: a part is confirmed only with at least the confirmation depth the
agreed request names (1-720 blocks, 10 when it names none). The depth is part of
what everyone signed, so the same request at another depth is a different request
no one agreed to. A depth out of range, or one on a non-Monero split, is refused.
s1, s2 and s4-s7 are unchanged.

A new s3 oracle, probe_xmr_depth_stepper, is a model check over:
- each named depth against the confirmation counts around it, through the real
  propose, agree and confirm pump;
- an agreement signed at one depth, refused at every other;
- the refusals.
The default-depth stepper is untouched (append-only).

Tested-Behavior: grade-specs exo-dcc.5 8/8; exophial validate_spec OK; mutation checks — a confirm path ignoring the named depth fails the depth-1 state, and a depth left out of the signed bytes fails the signed state

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Session-Id: 836705fe-fda9-501b-8ac2-1ce50b5af64a
@corpetty
corpetty merged commit f183855 into main Oct 21, 2026
6 checks passed
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