Skip to content

docs(exposure-seam): record O1-a on-chain execute-approval gate (code-landed dormant, live in Slice-1b)#32

Merged
temrjan merged 1 commit into
mainfrom
docs/slice1-exposure-seam
Jun 25, 2026
Merged

docs(exposure-seam): record O1-a on-chain execute-approval gate (code-landed dormant, live in Slice-1b)#32
temrjan merged 1 commit into
mainfrom
docs/slice1-exposure-seam

Conversation

@temrjan

@temrjan temrjan commented Jun 25, 2026

Copy link
Copy Markdown
Member

Docs-only. Records the durable threat-record fact before entering the dangerous Slice-1b: the on-chain execute-approval code-gate is code-landed but dormant.

What

  • New bullet in docs/EXPOSURE-SEAM.md after the "Three F5 locks" block: On-chain execute-approval code-gate (O1-a) — CODE-LANDED in Slice-1, fail-closed-DISABLED.
    • ExecuteTransaction is the only on-chain execute path; rejects fail-closed unless it carries a valid user approval bound to preview_id, verified before the signer and before the one-shot take.
    • Prod ships no approval issuer → always rejects. Accept path only under off-by-default test-approval feature; CI guard proves the release binary lacks the literal rustok-test-approval: (durable invariant; approval-guard job = current mechanism).
    • Issuer = the Telegram-initData approval channel = Slice-1b (the un-gate).
  • Scope disambiguation: this is the on-chain execute surface. O1's "approval code-gate on the decoded order" (off-chain swap-SIGN via request_swapSignTypedData over the UniswapX order) is a separate, not-yet-built surface (lock docs: standards map and v1 codebase analysis #2). Cross-link in lock ci: hardened CI/CD with best practices #1 updated to match.
  • Preview-simulation note updated to the merged B1 state (revert tri-state + 7-variant decode, explicit field presence — core #73).

Anchors

Facts verified against merged core #72 (482251b) + core #73 (77fc225).

Scope

docs-only, 1 file (+27/−2). No code. Meta CI (validate) touches compose/Caddyfile/observability only — unaffected.

…-landed dormant, live in Slice-1b)

The arbitrary-tx handle (core #72) removed the un-gated PreviewSend/ExecuteSend; the
only on-chain execute path is ExecuteTransaction, fail-closed unless it carries a valid
user approval bound to preview_id (transitively to the immutable signed bytes), verified
before the signer and before the one-shot take. Prod ships no issuer -> always rejects;
the accept path is under an off-by-default test-approval feature and a CI guard proves
the release binary lacks the literal rustok-test-approval: (durable invariant). The
issuer is the initData approval channel = Slice-1b (the un-gate).

Scope: this is the on-chain execute surface; O1's 'approval code-gate on the decoded
order' (off-chain swap-SIGN via request_swap -> SignTypedData over the UniswapX order)
is a separate, not-yet-built surface (lock #2). Cross-link in lock #1 disambiguated to
match. Also: preview simulation extended to revert tri-state + 7-variant decode with
explicit field presence (B1, core #73).
@temrjan temrjan merged commit 7b9c802 into main Jun 25, 2026
1 check passed
@temrjan temrjan deleted the docs/slice1-exposure-seam branch June 25, 2026 10:57
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