PermDock
Standards

Standards watch list

Every specification PermDock follows, its maturity as of September 2026, why it matters for a permissions library, and what PermDock does about it in which phase.

Status: tracking Phase: 1

This page is the inventory behind the standards section. Each standards page covers one specification PermDock implements or targets; this list also covers the ones it only follows. It is the single place to check whether a draft that changed last month affects a PermDock adapter.

How the list is maintained

  • The list is reviewed at every release. Each row's "Date and maturity" is checked against the publishing body's index (the OpenID Foundation specifications index, the IETF datatracker, the OpenAPI Initiative specification site, the MCP and A2A specification sites) and updated in the same pull request as the release changeset.
  • A row whose "PermDock action" is a concrete change to an adapter, the core or the CLI stays here until that change ships, then keeps a short pointer to the page that documents it.
  • A specification gets its own page under standards/ when PermDock implements it, or when it shapes a public API even before code exists (as GNAP and FAPI 2.0 do). The row stays; the page becomes its link.
  • Rows never disappear silently. A specification PermDock stops following moves to "Removed rows" with the reason and the release in which it was removed.
  • Dates and maturity levels are copied from the publishing body, never inferred. A row without a date means the source index did not give one at the last review.

Status vocabulary for the "PermDock action" column: implements (an adapter or core feature exists or is planned with a phase), consumes (PermDock reads what the spec produces, without a dedicated adapter), checklist (the spec constrains how an adapter is written), tracking (followed, no code planned).

Vocabulary for the "Posture" column, which says what PermDock may do with an unfinished text (ADR 0025): build (PermDock implements the draft's current shape, pinned to a named revision that is written on the standards page and, for documents, into the output; the row names the pin), name (PermDock reserves the public identifiers the specification will need so adopting it later renames nothing, and emits or consumes nothing from the draft), track (followed, no identifier depends on it), stable (the text is Final, an RFC or Released; the action column alone applies). A row is built only when PermDock needs the capability in the same phase, the draft is concrete enough to write fixtures against, and a stable twin can carry the same information for consumers that ignore the draft.

Reading the table

The "Date and maturity" column uses each body's own vocabulary, which is not interchangeable:

TermBodyMeaning for PermDock
FinalOpenID FoundationStable; PermDock may implement and, where a programme exists, certify against it
Implementer's draftOpenID FoundationStable enough to build against with the expectation of small changes; PermDock implements only when the feature is needed in the same phase
RFCIETFStable; referenced by number
RFC Editor queueIETFApproved by the IESG and awaiting publication; content is final, the RFC number is not yet assigned
WG draftIETFAdopted by a working group; field names may still change, so PermDock designs against it but does not fix wire formats on it
Individual draftIETFNot yet adopted by a working group; tracking only
ReleasedOpenAPI Initiative, MCP, A2AA versioned specification is published; PermDock may emit or consume it
In developmentOpenAPI InitiativeOn a development branch with an open milestone; emitted only behind an experimental target and only when the row's posture is build
Draft Community Group ReportW3CAn incubation document that may change without notice; PermDock builds against it only with a pinned date
DevelopmentOpenTelemetrySemantic conventions whose names may still change; PermDock pins the names it copies

The "Phase" column is the first phase in which PermDock acts on the row, following the same rule as the Phase line on every standards page. Adapter phases are those of the adapter matrix. A row whose action is tracking has no phase and says so. The "Posture" column applies the vocabulary above; the pin named in a build row is the revision PermDock's output and fixtures follow until a maintainer bumps it.

The list

SpecBodyDate and maturityRelevancePermDock actionPhasePosture
Authorization API 1.0 (AuthZEN)OpenID FoundationFinal, Jan 2026Wire format between PEPs and PDPsImplements: the decision endpoint (1), permdock/authzen (2), permdock/pdp (4)1stable
Shared Signals Framework 1.0, CAEP 1.0, RISC 1.0OpenID FoundationFinal, Sept 2025 (approved 2 Sept 2025)Session revocation and credential-change eventsImplements: permdock/ssf receiver invalidating snapshots3stable
CAEP Interoperability Profile 1.0OpenID Foundation (Shared Signals WG)Implementer's draft, Jul 2026Which CAEP events and delivery a receiver must support to interoperateChecklist for the ssf adapter3name
OpenID Federation 1.0OpenID FoundationFinal, Feb 2026Trust establishment between parties without pairwise configurationTracking: candidate for establishing trust between a remote PDP and PEPs in permdock/pdp4track
OpenID Connect Enterprise Extensions (session_expiry)OpenID FoundationDraft, Sep 2025ID token claim stating when the IdP session endsConsumes: session_expiry as an upper bound on snapshot staleness for provider adapters4name
OpenID Provider CommandsOpenID FoundationDraft, Sep 2025IdP-initiated lifecycle commands to relying parties (deprovision, revoke)Tracking: overlap with CAEP for snapshot invalidationtrackingtrack
IPSIE Common Requirements 1.0OpenID Foundation (IPSIE WG)Draft 00, Aug 2025Enterprise interoperability levels: Session Lifecycle SL1-SL3, Account Lifecycle AL1-AL3Checklist for provider adapters (supabase, better-auth, clerk, convex)3name
IPSIE SL1 OpenID Connect ProfileOpenID Foundation (IPSIE WG)Draft 00, Apr 2025iss in responses, PKCE, RFC 8414 metadata, acr / amr / auth_time / session_expiry, re-authentication, DPoP SHOULDChecklist: which token claims provider adapters expose to the principal3name
IPSIE AL1 SCIM 2.0 ProfileOpenID Foundation (IPSIE WG)DraftRFC 7523 JWT profile for SCIM authenticationTracking: relevant only if PermDock reads role assignments from SCIM; the open-source path is the auth layer or your own table, a Cloud SCIM receiver is considered and not scheduled (authentication single sign-on)trackingtrack
OpenID4VP 1.0, OpenID4VCI 1.0OpenID FoundationFinal, Jul 2025 and Sep 2025Verifiable credential presentation and issuanceTracking: verified attributes as inputs to principal fieldstrackingstable
OpenID Connect for Identity Assurance 1.0 (verified_claims)OpenID FoundationFinal with errata, Jul 2026Claims carrying assurance level and evidenceConsumes: assurance-level conditions on principal.assurance in provider adapters4stable
OpenID Connect Ephemeral Subject IdentifierOpenID FoundationDraft, Jul 2026Per-transaction subject identifiersChecklist: audit events must not assume a stable principal.id across sessionstrackingname
OpenID Connect Key BindingOpenID FoundationDraft, Aug 2026Binding ID tokens to client keysTracking: relevant to permdock/jwt sender once stabletrackingtrack
Grant Management for OAuth 2.0OpenID Foundation (FAPI WG)Implementer's draftGrants as manageable consent objectsTracking: grant_id in audit, revoked grants as invalidation; see FAPI 2.0trackingtrack
FAPI 2.0 Security ProfileOpenID Foundation (FAPI WG)FinalResource-server requirements 5.3.4 and cryptography 5.4.1Implements: permdock/jwt profile: 'fapi2'; x-permdock-securityProfile in permdock openapi1stable
RFC 9700 OAuth 2.0 Security Best Current PracticeIETF OAuth WGRFC, Jan 2025Baseline security for OAuth resource serversChecklist for permdock/jwt defaults and the threat model1stable
RFC 8725 JWT Best Current Practices and rfc8725bisIETF OAuth WGRFC; bis in the RFC Editor queue, Aug 2026Algorithm allow-lists, typ, kid handling, key confusionChecklist for permdock/jwt; the bis replaces it when published1name
RFC 9068 JWT access tokens: roles, groups, entitlements claimsIETF OAuth WGRFC, Oct 2021; claims registered at IANARegistered claim names and SCIM (RFC 7643) encoding for role and group material on access tokensImplements: the default claim mapping in permdock/jwt into principal.roles and team memberships (tenancy)1stable
RFC 7643 / RFC 7644 SCIM 2.0 Core Schema and ProtocolIETF SCIM WGRFCs, Sep 2015; RFC 9865 cursor pagination, 2025Group resource shape (id, displayName, members[].value); the encoding RFC 9068 borrowsChecklist: team ids are SCIM group ids, never display names; no tenant attribute exists, so tenancy stays a claim mapping1stable
OAuth AuthZEN Claims (draft-gazitt-oauth-authzen-claims)IETF (individual draft)Draft 00, 2026Binding roles, groups, entitlements claims to AuthZEN Resource Search so an authorization server obtains them from a PDPTracking: permdock/authzen /search/resource as a claim source once adopted (JWT authorization claims)trackingtrack
RFC 9396 Rich Authorization RequestsIETF OAuth WGRFCStructured authorization_details instead of flat scopesImplements: delegation.authorizationDetails, one type per permission1stable
OAuth 2.0 RAR Metadata and Error RemediationIETF OAuth WGDraft, Aug 2026Metadata for RAR types and structured remediation on insufficient authorizationImplements: Decision.alternatives rendered in the remediation shape for step-up; see delegation2build (pinned: draft-ietf-oauth-rar-metadata-remediation, Aug 2026 revision)
OAuth Identity and Authorization Chaining Across DomainsIETF OAuth WGRFC Editor queue, Jul 2026Carrying identity and authorization across trust domainsImplements: delegation.chain verification4name
Transaction TokensIETF OAuth WGWG draft rev 11, Jul 2026Propagating identity and authorization context through a call chain inside a trust domainConsumes: snapshot id and decision id in azd, subject re-derived from sub_id and azd; see delegation4name
Transaction Tokens for Agents; Cross-domain Transaction Tokens; Transaction Tokens BCPIETF (individual drafts)Drafts, May to Jul 2026Agent context and cross-domain extensions of transaction tokensTracking: follow with the transaction-token rowtrackingtrack
WIMSE architectureIETF WIMSE WGWG draft 08, Jul 2026Workload identity, identity proxies, context propagationChecklist: workloads as service principals in the subject model1name
GNAP (RFC 9635)IETFRFCSuccessor negotiation protocol; access rights arrayConsumes: delegation.access next to authorizationDetails; no client4stable (RFC); OpenAPI scheme: name
OAuth 2.1IETF OAuth WGDraftConsolidated OAuth 2.0 with PKCE and without implicit and password grantsChecklist: MCP servers are OAuth 2.1 resource servers; permdock/jwt defaults follow it1name
RFC 9449 DPoP, RFC 8705 mTLSIETF OAuth WGRFCsSender-constrained tokens (cnf.jkt, cnf.x5t#S256)Implements: permdock/jwt sender: 'dpop' or 'mtls'; the verified binding is recorded on the subject1stable
RFC 9728 Protected Resource MetadataIETF OAuth WGRFCDiscovery document a resource server publishesConsumes: required by MCP authorization; permdock/mcp reads its scopes2stable
Web Bot Auth (RFC 9421 HTTP Message Signatures, Signature-Agent)IETFDraftsVerified identity for automated HTTP clientsImplements: verified signer becomes actor in HTTP adapters4build (pinned per draft revision on the Web Bot Auth page)
OpenAPI 3.3OpenAPI InitiativeIn development (v3.3-dev is still the 3.2 text; Security Profiles designed in Discussion #5304)Security Profiles (type: profile, securityProfileRequirements), security configuration updates, Standardized API FeaturesImplements: --target 3.3 emits the pinned Security Profile draft with x-permdock-securityProfile as twin and the pin in x-permdock-catalog.drafts; see ADR 00252build (pinned: Discussion #5304 expanded design notes, Sep 2026)
OpenAPI Overlay 1.1OpenAPI InitiativeReleased Jan 2026Repeatable transformations of OpenAPI documents (update, remove, copy actions)Implements: permdock openapi applies its security additions as an Overlay; see ADR 00192stable
Arazzo 1.1OpenAPI InitiativeReleased May 2026Multi-step API workflows over OpenAPI and AsyncAPI sourcesConsumes: the permissions a workflow needs, step by step; see the Arazzo page2stable
Overlay 1.2OpenAPI InitiativeIn development (v1.2-dev text complete, release date TBD)Reusable actions: components.actions and $ref references in actions; no targetFormat in the current textImplements: permdock openapi emit --format overlay --overlay 1.2 emits the pinned draft with one reusable action per permission set; 1.1.0 stays the default until the appliers accept 1.2 (Overlay, ADR 0025)2build (pinned: v1.2-dev at edd4adea, Aug 2026)
AsyncAPI 3AsyncAPI InitiativeReleasedEvent-driven API descriptions; Arazzo 1.1 source typeTracking: no emitter. If needed, the same Overlay engine pointed at an AsyncAPI document (Overlay targets are JSONPath, not format-bound), not a new adapter (Arazzo)trackingtrack
OpenAPI registriesOpenAPI InitiativeLiving registriesExtension and namespace registrationImplements: register the x-permdock- namespace2stable
A2A 1.0Linux Foundation1.0Agent Card security schemes and requirementsImplements: permdock/a2a2stable
MCP authorizationModel Context ProtocolSpec 2026-07-28OAuth 2.1 resource servers, scope challenges, Enterprise-Managed AuthorizationImplements: permdock/mcp2stable
SPIFFE / SPIRECNCFGraduated project; SVID formats stableWorkload identity documents (X.509-SVID, JWT-SVID) for service-to-service callsConsumes: a verified SVID as actor material for workload callers, next to the WIMSE row; see subject4stable
OCSF (Open Cybersecurity Schema Framework)Linux FoundationSchema 1.x releasedVendor-neutral event schema SIEMs ingest; has authentication and authorization event classesConsumes: a documented projection of PermDock decision events onto the OCSF authorization class for DecisionSink implementations; see audit and observability3stable
CloudEvents 1.0CNCFReleasedCommon envelope for event dataConsumes: the envelope for decision events leaving a DecisionSink over HTTP or a queue; see wire formats3stable
AG-UICopilotKit (open protocol)Released, evolvingEvent stream between an agent backend and a UI, including tool-call and human-in-the-loop eventsTracking: where an approval-required decision surfaces in a chat UI; see agent frameworkstrackingtrack
TypeSpecMicrosoft (open source)1.0 GA, 2025; @typespec/openapi3 emits 3.0 to 3.2Design-first API language whose emitter output is an OpenAPI descriptionConsumes: the Overlay applies to the emitted document, never to .tsp source; see OpenAPI ecosystem2stable
CedarAWS (Apache-2.0); used by Amazon Verified Permissions and Bedrock AgentCore PolicyLanguage 4.x; @cedar-policy/cedar-wasm on npmPermit and forbid policies with when conditions and deny-overrides-permit combining, the same rule as PermDock'sTracking: a compile target for portable conditions is considered and not scheduled; see commercial landscape and comparisontrackingtrack
OpenFeatureCNCF (incubating)Specification 0.9.0, Jul 2026; JavaScript SDK stableVendor-neutral feature-flag evaluation APIConsumes: the recommended way a subject or context function reads a flag before selecting roles; no flag SDK gets an adapter; see policiestrackingtrack
OpenTelemetry GenAI semantic conventionsOpenTelemetry (CNCF)Development status; execute_tool span and gen_ai.tool.* attributes not yet stableSpan names and attributes for model and tool calls in agentsConsumes: permdock.decide nests under execute_tool and copies gen_ai.tool.name and gen_ai.tool.call.id; attribute names pinned until stable; see OpenTelemetry adapter2build (pinned: semconv release recorded on the OpenTelemetry adapter page)

By PermDock concept

The same rows, grouped by the part of PermDock they touch. This is the view to use when changing one of these concepts: every specification listed under it may constrain the change.

  • Subject (principal, actor, binding, memberships). FAPI 2.0, DPoP and mTLS, RFC 8725 and rfc8725bis, RFC 9700, OAuth 2.1 and the IPSIE SL1 profile define what permdock/jwt may accept and which claims reach the principal. RFC 9068 and SCIM define the roles, groups and entitlements claims that become global roles and team memberships, and the AuthZEN claims draft is how a PDP could supply them. WIMSE and the transaction-token drafts define workloads as principals. Web Bot Auth fills actor for plain HTTP. IDA verified_claims and the verifiable-credential specifications are the candidate sources for principal.assurance. The Ephemeral Subject Identifier draft is a reminder that principal.id may not be stable across sessions.
  • Delegation (scopes, authorizationDetails, access, chain). RFC 9396 and GNAP define the two structured formats; RAR Metadata and Error Remediation defines how insufficient authorization is reported back; Identity and Authorization Chaining defines chain; Grant Management defines the consent object the delegation came from.
  • Decision (granted, denied, approval-required, alternatives). AuthZEN is the wire format; RAR Error Remediation and RFC 6750 (through FAPI 2.0) shape how alternatives is rendered to OAuth clients; MCP and A2A shape how it is rendered to agents.
  • Snapshot freshness. SSF, CAEP, RISC and the CAEP Interoperability Profile deliver invalidation events; OpenID Provider Commands is the overlapping alternative; session_expiry from the Enterprise Extensions and the IPSIE SL1 profile bound how long a snapshot may live.
  • Catalog and documents. OpenAPI 3.2 and 3.3, Overlay 1.1 (and the pinned 1.2 draft behind --overlay 1.2), Arazzo and the registries define what permdock openapi and permdock collect emit and how x-permdock- extensions are registered; AsyncAPI is tracked as a format a later Overlay revision might target; TypeSpec is a producer whose output the Overlay applies to. RFC 9728 defines the metadata an MCP server publishes about itself.
  • Policy inputs. OpenFeature defines how a flag is read before it selects a role; Cedar is the one external policy language whose combining rule matches PermDock's and is therefore a possible compile target.
  • Audit events. OCSF defines the class a DecisionSink projects decision events onto for SIEMs; CloudEvents defines the envelope when those events leave the process; the OpenTelemetry GenAI conventions define the tool span a decision nests under.
  • Trust between services. Transaction tokens carry context inside a domain; Identity Chaining carries it across domains; WIMSE and SPIFFE define the workload identities that become actor; OpenID Federation is the candidate for establishing trust between permdock/pdp and a remote PDP without pairwise configuration.

Review cadence

Each release the maintainer running the release checks, per row: has the maturity changed (draft to implementer's draft, RFC Editor queue to RFC, in development to released); has the publishing body renamed or split the document; does the change touch a PermDock action that has already shipped. A maturity change alone updates the row. A change to a shipped behaviour opens an issue against the adapter page and, if a wire format or security default moves, a decision record. Rows whose action is "checklist" are re-read against the adapter they constrain at the release that ships that adapter. Rows whose posture is "build" are checked against their pin: if the draft moved, the maintainer either bumps the pin (standards page, output, fixtures, changeset) or records why the old revision is kept; a build row whose text reaches Final, RFC or Released loses its pin and becomes stable in the release that adopts the final shape.

How to propose a row

  1. Open an issue titled watch: <spec name> with the canonical URL from the publishing body, the current maturity (final, implementer's draft, RFC, RFC Editor queue, working-group draft, individual draft, in development) and its date.
  2. State the relevance in one sentence: which PermDock concept (subject, delegation, decision, snapshot, catalog, adapter) the specification touches.
  3. Propose the action using the vocabulary above (implements, consumes, checklist, tracking) and, for anything other than tracking, the phase from the roadmap in which it lands.
  4. If the text is unfinished, propose the posture (build, name, track) and, for build, the revision to pin and the stable twin that carries the same information.
  5. If the specification changes a wire format or a security default, say so; that row also needs a decision record and the updates listed in AGENTS.md.

Rows are added by pull request against this page only. A row that reaches "implements" gets its own standards page in the same pull request as the code.

Removed rows

None yet. When a row is removed it is listed here with the release, the reason (superseded, abandoned by its body, out of scope) and the row that replaces it if any.

A removed row's standards page, if one existed, is kept and marked superseded rather than deleted, following the same append-only rule as decision records.

Sources

On this page