Repository navigation
docs: record AF-CTR-03 part A1a (identity and device store, ingress refusals, native token documents) - #44
Merged
Merged
Conversation
…refusals and native token documents Cloud #118 (merged at d4e1110) delivered AF-CTR-03 part A1a. Record its Design companions: - errors.md: the center ingress rows auth.token_expired and auth.credential_revoked (gRPC 16) for a known native bearer, with the browser-cookie behaviour; token_expired answered by a refresh call itself means sign in again (adversarial review F10). - data/cloud-store.md §6: the identity and device store of migration 0002 and its differences from the D1 model (no realm_id, session scope and device binding, auth_flow replacing the two D1 flow tables, nullable installation keys, client_installation_id, trust level 3, NO ACTION foreign keys with the child-first purge order, retention, personal data, the stale browser device rule and the acceptance environment's opt-in ceiling). - contracts/reuse-map.md: the version-1 native token documents stay published but unserved by the Go center; browser sessions use WebBrowserSession. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H6Cf6jwiVwD6XtQ5VR1vLq
- cloud-store.md §6: device retention follows 11 §5 (revoked + 30 days, the device's sessions and installations deleted with it, children first); the revocation cascade is A1b's; the owner's account purge is AF-ID-02's decision; the acceptance audits grow with prefixes times windows; the further D1 differences (dropped step_up_classes and password_hash, new aaguid and attestation_format, the reshaped step-up challenge, revoke_reason and installation user_id, the nine D1 tables not yet carried, bootstrap and rate_limit without a D1 counterpart); 0002 applied to production by run 40840154517. - reuse-map.md: node sign-in is NodeEnrollmentService and AF-CLD-02 is QR pairing only; the Android Custom Tab sign-in has no center-served document yet (open; AF-AND-01 depends on it); WebBrowserSession is served from part A2, and the version-1 BrowserSession document is retained unserved. - errors.md: only the Go center produces the two rows, and only methods that require a session read a credential. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H6Cf6jwiVwD6XtQ5VR1vLq
The identity periods are storage limits, not holds; billing records keep their statutory minimum. The reuse of identity_native_authorization needs its later PostgreSQL migration. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H6Cf6jwiVwD6XtQ5VR1vLq
Contributor
Author
Review record: ArcForges-Design PR #44 at bb0a7c9Reviewer: independent reviewer agent, not the author. Head Verdict: changes required. 2 BLOCKING and 5 NON-BLOCKING findings, all fixable in text only. Findings
Checks run
Residual risks
Generated by Claude Code |
Contributor
Author
Delta review record: ArcForges-Design PR #44 at 8b5635dReviewer: independent reviewer agent, not the author. Range: Verdict: approve. All 7 earlier findings are resolved. Two new NON-BLOCKING wording issues were found; the author fixed them in Earlier findings
New findings, both fixed in e22907a
Checks run
Residual risks
Generated by Claude Code |
Contributor
Author
Final delta check: ArcForges-Design PR #44 at e22907aReviewer: independent reviewer agent, not the author. Verdict: approve. Nothing is wrong at this head.
Generated by Claude Code |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Records the Design companions of AF-CTR-03 part A1a (Plan milestone MC), delivered by Cloud #118 at
d4e1110. AF-CTR-03 staysactive: A1b, A2 and B follow, so this PR marks only A1a's delivered behaviour and leaves the target text of later parts as it is.
Changes
contracts/errors.md, "Center ingress transport statuses":
UNAUTHENTICATED:auth.token_expired: its access token, or its session's absolute lifetime, has expired;auth.credential_revoked: its session, device or installation is revoked;auth.unauthenticated, because the browsersigns in again in either case. This was checked against
session/verify.goat the merge.AUTHENTICATION/token_expired: when a refresh call itself answers it (RefreshSession, laterRefreshNodeSession), therefresh credential has expired and the client signs in again. This is wording only; the catalogue's retry advice is
unchanged. It is item F10 of #118's adversarial review.
data/cloud-store.md §6: a new "Identity and device" block for migration
0002_identity_device.sql, applied to production on 2026-10-29(run 40840154517). It also gives:
periods are maximums, not holds);
identity.bootstrapandplatform.rate_limitas new tables. It records thedifferences from the D1 model:
realm_id;scopewithout anagentscope, and nocsrf_hash;auth_flowreplacing the two D1 flow tables;client_installation_id;It also records:
NO ACTIONforeign keys and the child-first purge order;data;
what that ceiling does not bound.
contracts/reuse-map.md: the version-1 native token documents (
public/http/v1/native-auth.schema.json) and BrowserSessiondocument (
browser.schema.json) stay published but are not served by the Go center.arcforges-mobileinstallation signs in throughIdentityService.fleet.v1.NodeEnrollmentService(AF-CTR-04); AF-CLD-02 is QR pairing only.AF-AND-01 depends on it, and the AF-CTR-03 Plan record registers the owning task.
/session/v1/web/*), served from part A2.Evidence
bb0a7c9(changes required: 2 blocking, 5 non-blocking), a delta review of8b5635d(approve, plus 2 non-blocking wording findings fixed in
e22907a) and a final check ofe22907a(approve). The records areposted as comments.
d4e111091535b3f59ce652eb1cf21c552955794b, headbd655a6.c7406aae8669a0422ab33b7d5afecbda88b0860a1c9bdd8f3791a50f96c46317on main.a delta review, a delta adversarial review with 10 confirmed findings that were fixed, and a round-2 review.
0.1.0-ci.459.1:neondb;d4e1110, runtime go andhelloBackendpostgresql-runtime;STATE/not_activated(reasonidentity) from the Worker, where before the merge they answered 404.python3 tools/check_design.py --require-protoc: 0 errors.🤖 Generated with Claude Code
https://claude.ai/code/session_01H6Cf6jwiVwD6XtQ5VR1vLq