Skip to content

docs(specs): align ceremony browser contract - #15

Merged
Wondertan merged 0 commit into
docs/ceremony-terminologyfrom
docs/ceremony-spec-alignment
Aug 22, 2026
Merged

docs(specs): align ceremony browser contract#15
Wondertan merged 0 commit into
docs/ceremony-terminologyfrom
docs/ceremony-spec-alignment

Conversation

@Wondertan

@Wondertan Wondertan commented Aug 20, 2026

Copy link
Copy Markdown
Member

Summary

This PR aligns the normative ceremony rules with the browser protocol. It is stacked on the terminology-only PR and contains the behavior changes only.

Changes

Ceremony boundary and lifecycle

  • Define the Ceremony as the off-ledger process that authenticates the selected identity-platform account, derives its canonical user ID and handle, and locally generates the exact OAuth Proof.
  • Retain one exact platform profile for a live ceremony and forbid profile substitution after authorization starts.
  • Keep ceremonies one-shot: remove normative mid-ceremony persistence and resume, and require a fresh GitHub ceremony when a consumed exchange response is lost.
  • Assign browsing contexts, redirect transport, interruption behavior, and application handoff to the browser architecture.

Proof construction and ledger selection

  • Remove the separate pkceNonce; derive the PKCE verifier from the Authorization Digest and its existing fresh authorizationNonce.
  • Keep that nonce private until token exchange completes, then reuse the copy already carried by the OAuth Proof for verifier recomputation.
  • Remove the redundant PKCE domain and update the golden vector and conformance requirements.
  • Let application composition select a Ledger Profile for each ceremony while requiring the Verifier Dispatcher to derive the Ledger ID independently from the Execution Ledger.

Authenticated delivery

  • Permit a deployment-configured set of application origins.
  • Deliver only over a live channel authenticated to an exact configured origin.
  • Ignore caller-supplied forwarding targets and add multi-origin positive and foreign-origin negative coverage.

Platform behavior

  • Define the GitHub Token Service and its fixed /oauth/github/token request, response, origin, size, media-type, cache, and statelessness rules in the GitHub ceremony.
  • Preserve the local checks binding the returned attestation, authorization code, client, redirect, verifier, bearer opening, and disclosure.
  • State directly that Google has no server-side token exchange; X remains browser-owned.
  • Require X's first notarized token request to reach X within the 30-second authorization-code deadline; later response and proving work are outside it.

Scope

Normative documentation only:

  • specs/libid.md
  • specs/ceremony-common.md
  • specs/platform-ceremonies.md

The TypeScript ceremony architecture and package test plan remain in #13.

Validation

@Wondertan
Wondertan force-pushed the docs/ceremony-spec-alignment branch from e99cf23 to 5b53cac Compare August 22, 2026 00:20
@Wondertan
Wondertan changed the base branch from main to docs/ceremony-terminology August 22, 2026 00:21
@Wondertan
Wondertan force-pushed the docs/ceremony-spec-alignment branch from 5b53cac to 4244b9b Compare August 22, 2026 00:38
@Wondertan
Wondertan merged commit 4244b9b into docs/ceremony-terminology Aug 22, 2026
1 check passed
@Wondertan
Wondertan force-pushed the docs/ceremony-terminology branch from 6d3d8fb to 590551b Compare August 22, 2026 00:38
@Wondertan

Copy link
Copy Markdown
Member Author

The stack was intentionally reversed so protocol behavior can merge before terminology. GitHub marked this PR merged when its rewritten head became an ancestor of the then-base terminology branch, so the behavior-only change now continues in #20; #19 is stacked on top for terminology review.

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