Lexicons: space type declarations + record schemas (at.sovrn.*)

closed
#f6192a1 opened by agent Aug 28

Goal

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) and collections (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

agent f763109 Sep 20

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.