A person reaches signatio today only through a client whose proof is a secret or a minisign signature over the challenge, made by a command on their machine (pinned.rs; examples/consumer). No published client logs a person in for themselves or asks Authorize for them: the CLI is the administrator's (adr-002), and desk runs it as a subprocess. A consumer measured the gap on 2026-09-29: SpecDossier's guest, with no copy of the project, takes part in a dossier's round on the web, and each of their acts carries their own signed Authorize decision for the document and the bytes (signatio 1919c0c, asked for by SpecDossier as option A). With no person client they cannot log in nor comment by any face; the walk runs against an authority in process. The principal asked for a person client in the CLI and in the browser.
A minisign key does not live in a browser. The problem this settles is the one reflection/qa.ncl leaves open as P2: an authenticator that demands presence. adr-002 rejected a local web page served by a client process (a browser on 127.0.0.1, open to every uid, with the client's token behind it); that is not this case — a browser reaching the deployed signatiod over its TLS listener, holding the person's token itself.
A WEBAUTHN CREDENTIAL IS A PERSON'S PROOF SCHEME. Besides minisign, a person's client may be registered with a WebAuthn public-key credential (a passkey, or a security key) as its proof — only for a client bound to a Person — and prove it on /v1/token by an assertion over the challenge's nonce. The authority accepts it only with user presence and user verification asserted, the relying party it was registered for, and a signature counter that does not go back. It is added to the proofs a token request accepts (SignedChallenge, ClientSecret, Mtls, WebAuthn) in the protocol, which is signatio's (adr-001), and not to `proof_schemes`, which are the schemes a person signs documents with; what it proves is presence, not a signature over a document: VerifySignature still attests minisign signatures only, until a decision says otherwise.
THE CREDENTIAL IS BOUND TO THE ORIGIN ITS CLIENT DECLARES. A client registration names the web origins it answers for; a WebAuthn credential is registered for the relying party of that origin, and an assertion is accepted only from the origin the client declared. The ceremony runs on the consumer's page — the browser holds the credential, the challenge and, after /v1/token, the person's token — so no consumer's server ever holds a person's token, and signatio serves no page.
SIGNATIOD ANSWERS THAT ORIGIN ON ITS THREE ROUTES. /v1/challenge, /v1/token and /v1/op answer the cross-origin requests of an origin some active client declares, and only those; the preflight is answered on the same routes. No route, listener or page is added (adr-002 signatiod-serves-three-routes, signatiod-declares-one-listener).
WHAT THIS DOES NOT DECIDE: a person signing a document with a WebAuthn credential (its statement form, and whether an assertion can be attested as a signature); enrolment beyond the administrator's PutPrincipal of the credential's public key, which the consumer's page produces with the person present.
signatiod answers a cross-origin request only when its Origin is declared by an active client, on its three routes
A WebAuthn assertion is accepted on /v1/token only with user presence and verification, the declared relying party and origin, and a counter that does not go back
A login page on signatio's own origin (the ceremony there, redirecting back with a signed answer)
Rejected: A fourth surface on signatiod or a new process serving pages, against adr-002's three routes and one listener.
The consumer's server relays challenge and token for the person
Rejected: The person's token would pass through and could be kept by the consumer's server; the consumer's identity-is-the-authoritys forbids holding it.
minisign in the browser (a key file loaded into the page, signing in WASM)
Rejected: The private key in page memory, readable by any script of that origin; no presence.
One coarse Authorize at login for the whole dossier, no browser proof per act
Rejected: Drops the act signed per bytes the principal accredited as option A (2026-09-27).