Spec vs. implementations
Two version lines move independently:- The protocol spec —
afauth_versionis"0.1", carried in every discovery document (§4.3). This is the wire contract. - The reference implementations — the TypeScript SDK, Go CLI, trust attestor, and registry version on their own release cadence (the docs reference, e.g.,
@afauthhq/server0.2.0+and the CLI0.6.0+). They implement spec v0.1; their package versions are not the spec version.
The forward-compatibility you can build on
v0.1 has no formal SemVer or deprecation policy (see below), but it does define explicit forward-compatibility rules — and those are the real stability guarantee. A conformant implementation MUST:- Treat unknown discovery fields as opaque (§4.2) — new fields can appear without breaking you.
- Not assume absent features are supported (§4.4) — gate on what’s advertised.
- Ignore unknown
verificationvalues rather than reject them (§10.3.1) — new attestation signals can be added safely. - Ignore unknown error codes safely (§11.3) — program against the
codeyou know, tolerate the rest.
Already removed
A few surfaces from early drafts are gone. Implementations MUST NOT require them:- The
@authoritycovered component —@target-urisubsumes it (§5.2). - The
AFAuth-Accountheader —keyidis the sole identity surface (§5.2, §14.2).
What isn’t promised yet
In the interest of honesty:- No SemVer commitment. “Stable” is the spec’s own word; it isn’t paired with a formal versioning scheme or a “breaking changes will…” clause.
- No deprecation window. The removals above happened during v0.1’s drafting, not through a staged deprecation cycle.
- No signed discovery document. Integrity depends on TLS in v0.1; signing the document is flagged as a possible future revision (§12.8).
.well-known/afauth URI registration is Provisional, and the change controller is the AFAuth Protocol editors (§14.1). Proposals are welcome — the spec invites them in its status line.
Where to next
Changelog
What shipped in each release.
Conformance
The v0.1 criteria and test vectors.