Lexicons: space type declarations + record schemas (at.sovrn.*)
closedGoal
Publish the sovrn lexicon surface for the ADR-0006 record topology. Requires the sovrn.at domain + _lexicon.sovrn.at TXT to resolve before anything here is network-visible.
Records
at.sovrn.space.tenant: # "type": "space" declaration; skey = tenant ID; collections: [at.sovrn.domain.detail]
at.sovrn.space.domain: # "type": "space" declaration; skey = domain ID; collections: [at.sovrn.mail.account]
at.sovrn.domain.detail: # record; rkey = domain ID; tenant space
domain, mode, status, mxVerifiedAt, dkimState, tierDefaults,
dns: { mx, spf, dkimSelector, dkimTxt }
at.sovrn.mail.account: # record; rkey = account ID; domain space
did, address, status, verifiedAt
Notes
- Space type declarations carry
name/name:lang(consent-screen text) andcollections(OAuth scope defaults). - Domain names live inside records, never in
at://URIs (opaque IDs). - Include Go type generation (mirror the stalwart schema-typing approach; see ADR-0003) and a validation layer with untrusted-input posture for user-authored records and postmaster-authored records alike.
Depends on: none (parallel). Blocks: spaceproj, reconciler, app-view XRPC. Basis: docs/adr/0006-data-placement-and-space-topology.md, docs/03 §3, docs/04 §4.
1 Comment
Complete: lexicons + generated Go types exist (api/sovrn/spacetypes.go, domaindetail.go, mailaccount.go; lexicons/at/sovrn/space/*, domain/detail.json, mail/account.json). Space-record validation/writing deferred to Spaces Stage B (6a79018). Closing.