Skip to content

docs: tidy the attestation gate after its merge - #18

Merged
Aladeenb merged 3 commits into
mainfrom
soroban/attestation-gate
Sep 3, 2026
Merged

Aladeenb merged 3 commits into
mainfrom
soroban/attestation-gate

Conversation

@Aladeenb

@Aladeenb Aladeenb commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Three follow-ups to PR #17, which merged the contract itself. No contract logic changes.

Restore the clause that says what is signed

The Attestation doc comment had been tightened down to "is XDR-serialized, and every field below is bound by the signature", which drops the part that names the mechanism: those bytes are what the authority keys sign. The table underneath it is entirely about per-field binding, and test.rs depends on the same fact, since it rebuilds the struct and calls to_xdr rather than hand-rolling bytes. The rest of the tightening is kept, rewrapped to the file's margin.

Attribute placement goes back to doc-comment-first. Both orderings compile to byte-identical Wasm, verified by building each with the prose held constant, so this is convention rather than correctness: soroban-sdk's own source puts docs above #[contract*] in every instance, as does std above #[derive].

Add the root README row

Building, not Working. The contract is written and its eight happy path tests pass, but the refusal matrix is unwritten and it has not been deployed to testnet, so nobody has run it end to end from a clean clone.

Delete BRIEF.md

Marked delete-before-merge from the start, slipped through with #17. Nothing else in the repo references it, and it stays readable at ef82b15.

Known open, not addressed here

  • The refusal matrix. The happy paths also leave three gaps I found by mutating the contract and re-running: nothing pins that the distributor is the address whose auth is required (swapping it for admin keeps all 8 tests green), the expiry comparison is never tested at its boundary, and contribute's auth is caught only incidentally by the host's recording-auth rule rather than by an assertion.
  • Four TODOs in the example README waiting on a testnet deploy.

🤖 Generated with Claude Code

https://claude.ai/code/session_01AcvxDnqPzixzsnf4dj1Fvd

Aladeenb and others added 3 commits September 3, 2026 20:57
The prose tightening dropped "and *those bytes* are what the authority keys
sign", which is the clause that says what the signature actually covers. The
table beneath it is entirely about per-field binding, so the sentence that
names the bytes being bound is load-bearing rather than decorative. It is also
what the tests depend on: test.rs rebuilds the struct and calls to_xdr rather
than hand-rolling bytes, and that is only obviously correct if the doc says the
XDR is the signed payload.

Attribute placement goes back to doc-comment-first. Both orderings compile to
byte-identical Wasm, verified by building each with the prose held constant, so
this is convention rather than correctness: soroban-sdk's own source puts docs
above #[contract*] in every instance, and so does std above #[derive].

The rest of the tightening is kept, rewrapped to the file's ~78 column margin.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AcvxDnqPzixzsnf4dj1Fvd
Building, not Working. The contract is written and its eight happy path tests
pass, but the refusal matrix is unwritten and it has not been deployed to
testnet through the reproducible-build pipeline, so nobody has run it end to end
from a clean clone. Working means that has happened.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AcvxDnqPzixzsnf4dj1Fvd
It was always marked delete-before-merge and slipped through with PR #17. The
README is what ships; the brief was the working document behind it, and it
carries a layout, a build pipeline and a test matrix that would go stale the
moment either changed.

What it specified is not all done. The refusal matrix is unwritten, the README
still has TODOs waiting on a testnet deploy, and none of that is lost: the file
stays readable at ef82b15 for as long as the history does.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AcvxDnqPzixzsnf4dj1Fvd
@vercel

vercel Bot commented Sep 3, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
privy-stellar-onboarding Ready Ready Preview Sep 3, 2026 6:03pm UTC
stellar-trace Ready Ready Preview Sep 3, 2026 6:03pm UTC
stellar-wallets-kit-onboarding Ready Ready Preview Sep 3, 2026 6:03pm UTC

Request Review

@Aladeenb
Aladeenb merged commit b7c7e89 into main Sep 3, 2026
10 checks passed

This branch was successfully deployed

3 active deployments
Preview – privy-stellar-onboarding — 381ac814 Deployed Sep 3, 2026 by vercel[bot]
Preview – stellar-trace — 381ac814 Deployed Sep 3, 2026 by vercel[bot]
Preview – stellar-wallets-kit-onboarding — 381ac814 Deployed Sep 3, 2026 by vercel[bot]
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