Skip to content

docs(specs): X holds its token body to the exact five-field form - #43

Open
xgreenx wants to merge 3 commits into
docs/github-public-clientfrom
specs/x-exact-token-form
Open

xgreenx wants to merge 3 commits into
docs/github-public-clientfrom
specs/x-exact-token-form

Conversation

@xgreenx

@xgreenx xgreenx commented Sep 20, 2026 •

Copy link
Copy Markdown
Contributor

Stacked on #35. libid-contracts#47 holds every token body to its profile's field list on chain, X's included. #35 gives GitHub that rule as REQ-PLAT-61 and leaves X on ASM-PROV-07; this makes the specification say what the verifier does for X, and trims one clause of REQ-PLAT-61.

Changes

  • platform-ceremonies.md: REQ-PLAT-63 (upholds SP-EXCHANGE-01, SP-BIND-01, SP-CLIENT-01), REQ-PLAT-61's counterpart for X: the complete body is the canonical serialization of exactly grant_type, client_id, code, redirect_uri, code_verifier, in that order, once each, nonempty; malformed encoding, noncanonical spelling, extra or duplicate fields and bytes outside are rejected; client_id per REQ-COMMON-16B, code_verifier per §7, grant_type exactly authorization_code; acceptance does not depend on X rejecting malformed or duplicate forms. The paragraph under the X table says the table fixes field order.
  • REQ-PLAT-61 and REQ-PLAT-63: the Platform Verifier holds the body's shape and the serializer's alphabet and reads no value it does not use. code, redirect_uri and client_secret are nonempty values with no further constraint; their comparisons stay with the Prover. The UTF-8 and printable-ASCII clauses go, with their TEST-PLAT-09C and TEST-PLAT-12 vectors: a value in the alphabet cannot become another field, and no contract reads those three.
  • TEST-PLAT-09C cites REQ-PLAT-63 with the TEST-PLAT-12 form vectors.
  • Every sentence that had X relying on ASM-PROV-07 now says neither launch profile does. ASM-PROV-07 stays defined for a future profile that reads a decoded form it does not hold whole; TEST-PLAT-19's launch probe set is stated as empty. REQ-COMMON-32 unchanged.

Verified

  • lint_spec.py over the three documents: base 0 errors / 7 warnings, branch 0 / 7, delta zero. No ids renumbered, no links changed, only the two ceremony documents in the diff.

Not verified / known issues

  • The verifier side is libid-contracts#47, open; this text assumes it merges as written.

🤖 Generated with Claude Code

Revealing a range does not reject a form delimiter inside it, so X's
soundness argument rested on X's parser (ASM-PROV-07). REQ-PLAT-63 mirrors
REQ-PLAT-61: Prover and Platform Verifier hold the whole body to the
canonical serialization of the five X fields, in order, each once. No
launch profile cites ASM-PROV-07; the assumption stays defined for a
future profile that reads a form it does not hold whole. TEST-PLAT-09C
carries the form vectors TEST-PLAT-12 lists for GitHub.

Assisted-by: Claude Fable 5.1
Signed-off-by: xgreenx <xgreenx9999@gmail.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Sep 20, 2026 •

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
❌ Deployment failed
View logs
libid 7ff7f72 Sep 20 2026, 09:47 AM

…alues decode to

A value in the serializer's alphabet cannot become another field, which
is all the verifier needs; `code`, `redirect_uri` and `client_secret` are
read by no contract, so a UTF-8 or printable-ASCII rule on chain protects
nothing and costs a decoder. REQ-PLAT-61 and REQ-PLAT-63 now put those
values with the party that compares them.

Assisted-by: Claude Fable 5.1
Signed-off-by: xgreenx <xgreenx9999@gmail.com>
@xgreenx
xgreenx marked this pull request as ready for review September 20, 2026 09:46
@xgreenx
xgreenx requested a review from Wondertan September 20, 2026 09:46
@xgreenx xgreenx self-assigned this Sep 20, 2026
Assisted-by: Claude Fable 5.1
Signed-off-by: xgreenx <xgreenx9999@gmail.com>

This branch has not been deployed

No deployments
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