the commons: lexicons & spaces
Every record and space on this branch, wired together. Tap a node to trace where it goes on the map (the map stays put so you can see it) and the matching entry opens in the list below. Hit view ↓ when you want to read it.
A space type is a lexicon with "type": "space", paired with a policy (read / write / manage predicate trees over signed claims). Roles ladder as member 10 · builder 20 · facilitator 30 · steward 40.
coop.lexicon.space.contact
A person's contact space.
view source
{
"lexicon": 1,
"id": "coop.lexicon.space.contact",
"defs": {
"main": {
"type": "space",
"description": "A person's contact space. Readers = the owner's connections. Placing a channel here IS the introduction-disclosure consent.",
"key": "literal:self",
"name": "Contact space",
"collections": [
"coop.lexicon.contactChannel"
]
}
}
}view source
{
"lexicon": 1,
"id": "coop.lexicon.space.contact.policy",
"defs": {
"main": {
"type": "spacePolicy",
"description": "Access policy for coop.lexicon.space.contact: the owner's connections read; only the owner writes/manages.",
"policy": {
"read": {
"$type": "coop.lexicon.policy#connectionOf",
"of": "authority"
},
"write": {
"$type": "coop.lexicon.policy#authorityOnly"
},
"manage": {
"$type": "coop.lexicon.policy#authorityOnly"
}
}
}
}
}coop.lexicon.space.event.detail
An event's private-detail space: confirmed attendees read the exact location / attendee details.
view source
{
"lexicon": 1,
"id": "coop.lexicon.space.event.detail",
"defs": {
"main": {
"type": "space",
"description": "An event's private-detail space: confirmed attendees read the exact location / attendee details. Same skey as the event's invite space — one subject, two audiences, two spaces.",
"key": "any",
"name": "Event detail space",
"collections": [
"coop.lexicon.event.detail"
]
}
}
}view source
{
"lexicon": 1,
"id": "coop.lexicon.space.event.detail.policy",
"defs": {
"main": {
"type": "spacePolicy",
"description": "Access policy for coop.lexicon.space.event.detail: confirmed attendees read, AND whoever can HOST the event reads the detail they wrote — the solo person-host (authorityOnly: viewer DID = authority DID) and a hosting scene's Builder+ (memberRole of authority atLeast 20, matching the owner_or_builder event-authoring/host gate: a Builder creates the event and writes its gated detail, so must be able to read it back). Only the authority writes/manages. (U2: the published policy IS the enforced behaviour — a host could not read their own gated detail.)",
"policy": {
"read": {
"$type": "coop.lexicon.policy#any",
"of": [
{
"$type": "coop.lexicon.policy#confirmedFor",
"event": "this"
},
{
"$type": "coop.lexicon.policy#authorityOnly"
},
{
"$type": "coop.lexicon.policy#memberRole",
"of": "authority",
"atLeast": 20
}
]
},
"write": {
"$type": "coop.lexicon.policy#authorityOnly"
},
"manage": {
"$type": "coop.lexicon.policy#authorityOnly"
}
}
}
}
}coop.lexicon.space.event.invite
An event's invite space: the invited (plus the hosting scene's members) read and author their intents here.
view source
{
"lexicon": 1,
"id": "coop.lexicon.space.event.invite",
"defs": {
"main": {
"type": "space",
"description": "An event's invite space: the invited (plus the hosting scene's members) read and author their intents here. skey = the event.",
"key": "any",
"name": "Event invite space",
"collections": [
"coop.lexicon.invite",
"community.lexicon.calendar.rsvp",
"coop.lexicon.approval",
"coop.lexicon.presence",
"coop.lexicon.evaluation",
"community.lexicon.calendar.event",
"coop.lexicon.event.listing",
"coop.lexicon.event.config",
"coop.lexicon.share"
]
}
}
}view source
{
"lexicon": 1,
"id": "coop.lexicon.space.event.invite.policy",
"defs": {
"main": {
"type": "spacePolicy",
"description": "Access policy for coop.lexicon.space.event.invite: invitees (including, via includeMembers, the members of an INVITED scene — they can see and author their RSVPs; a scene invite never opens the detail space), link-holders (a share claim — bearer access, no status), or hosting-scene members read AND write; hosting-scene Builders (memberRole of authority atLeast 20, matching the owner_or_builder host gate) manage.",
"policy": {
"read": {
"$type": "coop.lexicon.policy#any",
"of": [
{
"$type": "coop.lexicon.policy#invited",
"event": "this",
"includeMembers": true
},
{
"$type": "coop.lexicon.policy#sharedWith",
"of": "this"
},
{
"$type": "coop.lexicon.policy#memberRole",
"of": "authority",
"atLeast": 10,
"includeMemberScenes": true
}
]
},
"write": {
"$type": "coop.lexicon.policy#any",
"of": [
{
"$type": "coop.lexicon.policy#invited",
"event": "this",
"includeMembers": true
},
{
"$type": "coop.lexicon.policy#sharedWith",
"of": "this"
},
{
"$type": "coop.lexicon.policy#memberRole",
"of": "authority",
"atLeast": 10,
"includeMemberScenes": true
}
]
},
"manage": {
"$type": "coop.lexicon.policy#memberRole",
"of": "authority",
"atLeast": 20
}
}
}
}
}coop.lexicon.space.intro
A brokered-introduction space.
view source
{
"lexicon": 1,
"id": "coop.lexicon.space.intro",
"defs": {
"main": {
"type": "space",
"description": "A brokered-introduction space. The connector authors the introProposal here and a `share` per party so exactly the two parties (plus the connector authority) can read it. A party mirrors it for the intro OUTCOME: their own space.intro instance holding an evaluation + a share to the connector. skey = the proposal/outcome instance.",
"key": "any",
"name": "Introduction space",
"collections": [
"coop.lexicon.introProposal",
"coop.lexicon.share",
"coop.lexicon.evaluation"
]
}
}
}view source
{
"lexicon": 1,
"id": "coop.lexicon.space.intro.policy",
"defs": {
"main": {
"type": "spacePolicy",
"description": "Access policy for coop.lexicon.space.intro: the authority (connector, or the outcome author) reads/writes/manages; the two parties read via a per-party `share` the authority authored. No status is derived from a space.intro membership — the proposal/outcome records are just there for whoever the authority shared them with.",
"policy": {
"read": {
"$type": "coop.lexicon.policy#any",
"of": [
{
"$type": "coop.lexicon.policy#authorityOnly"
},
{
"$type": "coop.lexicon.policy#sharedWith",
"of": "this"
}
]
},
"write": {
"$type": "coop.lexicon.policy#authorityOnly"
},
"manage": {
"$type": "coop.lexicon.policy#authorityOnly"
}
}
}
}
}coop.lexicon.space.passage
A passage's member space: the small cohort tending one passage.
view source
{
"lexicon": 1,
"id": "coop.lexicon.space.passage",
"defs": {
"main": {
"type": "space",
"description": "A passage's member space: the small cohort tending one passage. Membership claims for a passage are PLACED IN the passage space itself (in-space membership — one authority may steward many passages, so the space, not the authority, binds the cohort).",
"key": "any",
"name": "Passage space",
"collections": [
"coop.lexicon.passage",
"coop.lexicon.membership",
"coop.lexicon.evaluation",
"coop.lexicon.market.ask"
]
}
}
}view source
{
"lexicon": 1,
"id": "coop.lexicon.space.passage.policy",
"defs": {
"main": {
"type": "spacePolicy",
"description": "Access policy for coop.lexicon.space.passage: passage members (in-space membership claims, bound by `this` — the space instance itself) read AND write — tending/outreach are member acts, and the published policy must equal the enforced one; facilitators manage.",
"policy": {
"read": {
"$type": "coop.lexicon.policy#memberRole",
"of": "this",
"atLeast": 10
},
"write": {
"$type": "coop.lexicon.policy#memberRole",
"of": "this",
"atLeast": 10
},
"manage": {
"$type": "coop.lexicon.policy#memberRole",
"of": "this",
"atLeast": 30
}
}
}
}
}coop.lexicon.space.personal
A person's personal space: audience of one (the owner).
view source
{
"lexicon": 1,
"id": "coop.lexicon.space.personal",
"defs": {
"main": {
"type": "space",
"description": "A person's personal space: audience of one (the owner). The private-to-just-me end of the placement spectrum.",
"key": "literal:self",
"name": "Personal space",
"collections": [
"coop.lexicon.market.ask",
"coop.lexicon.contactChannel",
"coop.lexicon.event.survey",
"coop.lexicon.approval",
"coop.lexicon.interest"
]
}
}
}view source
{
"lexicon": 1,
"id": "coop.lexicon.space.personal.policy",
"defs": {
"main": {
"type": "spacePolicy",
"description": "Access policy for coop.lexicon.space.personal: owner only, all capabilities.",
"policy": {
"read": {
"$type": "coop.lexicon.policy#authorityOnly"
},
"write": {
"$type": "coop.lexicon.policy#authorityOnly"
},
"manage": {
"$type": "coop.lexicon.policy#authorityOnly"
}
}
}
}
}coop.lexicon.space.scene.member
A scene's member space.
view source
{
"lexicon": 1,
"id": "coop.lexicon.space.scene.member",
"defs": {
"main": {
"type": "space",
"description": "A scene's member space. Readers/writers = the scene's members (per the companion policy). Singleton per scene.",
"key": "literal:self",
"name": "Scene member space",
"collections": [
"coop.lexicon.membership",
"coop.lexicon.scene"
]
}
}
}view source
{
"lexicon": 1,
"id": "coop.lexicon.space.scene.member.policy",
"defs": {
"main": {
"type": "spacePolicy",
"description": "Access policy for coop.lexicon.space.scene.member: members read (incl. one hop via member scenes), builders write, facilitators manage.",
"policy": {
"read": {
"$type": "coop.lexicon.policy#memberRole",
"of": "authority",
"atLeast": 10,
"includeMemberScenes": true
},
"write": {
"$type": "coop.lexicon.policy#memberRole",
"of": "authority",
"atLeast": 20
},
"manage": {
"$type": "coop.lexicon.policy#memberRole",
"of": "authority",
"atLeast": 30
}
}
}
}
}public · firehose
Records whose declared homes include the public firehose (per the placement manifest), broadcast openly and indexed by any AppView. No access perimeter; portable, re-derivable commons data. Many of these can also be placed in a space when the thing they describe is permissioned (an event's records follow the event).
coop.lexicon.policy
the predicate vocabulary: the 8 leaves every policy composes.
| predicate | params | grants when… |
|---|---|---|
| memberRole | of, atLeast, includeMemberScenes | V holds a membership claim with role >= atLeast. `of: authority` binds to claims authored by the space's authority (the scene); `of: this` binds to claims PLACED IN this space instance (in-space membership — e.g. a passage cohort). `includeMemberScenes: true` adds exactly ONE hop: a role via a scene V is a member of (bounded: claims naming V + one indexed join; no recursion). |
| connectionOf | of | There is a `connection` claim authored by the bound identity naming V as subject. |
| confirmedFor | event | There is a confirmed `approval` claim naming V for the bound event. |
| invited | event | There is an `invite` claim naming V (post-bind DID subject) for the bound event. |
| sharedWith | of | There is a `share` claim naming V for the bound space (the one instance-level access record). |
| authorityOnly | — | Only the space's authority. (The authority also IMPLICITLY satisfies write/manage for every space it owns.) |
| any | of | Union of sub-predicates. EMPTY = deny (no vacuous truth). |
| all | of | Intersection of sub-predicates. EMPTY = deny (no vacuous truth). |