Default workspaces, inboxes and feeds
Before anyone creates anything, the platform has already created something for them. Every entity has a home workspace, provisioned at the moment the entity is created, and it is the reason a person, an agent, a service account or a device can be addressed, messaged and given work the instant it exists.
The universal home invariant
There is one idempotent entry point that every entity-creation path calls, so that no entity ever exists without a workspace. It dispatches on the entity kind, one of the six canonical kinds (user, organization, node, agent, device, service account), to the right per-kind provisioner.
Calling it twice for the same entity returns the same workspace, never a duplicate. A setup step sweeps for any entity that predates the wiring and homes it, and the sweep is per-entity fail-soft so it can never abort a bring-up.
The model is deliberately the one a Unix home directory follows: the account is not usable until it has somewhere to put things and somewhere to be reached. A workspace is that place, and the platform will not let an entity exist without one.
What provisioning creates
Every home workspace comes out of provisioning with all of this already in place:
| Created | What it is |
|---|---|
| The workspace record | With a scope_kind binding that says what kind of home it is |
| A dedicated storage namespace | An object-storage bucket of its own, so isolation is structural rather than a prefix convention |
| An inbox subject | The addressable destination on the message bus for anything sent to this entity |
| Default streams | Inbox, feed and alerts, depending on the kind |
| Owner membership | The entity is the owner of its own home |
| Default-workspace marking | On first provision the workspace is marked the subject's default, which is what makes it the entity's inbox home |
A home is also bound to a service group, and that binding is what makes the workspace, and therefore its owner's inbox and feed, actually deliverable rather than merely recorded.
What each entity kind gets
The stream set is not uniform, and the differences are deliberate.
| Entity kind | Inbox | Feed | Alerts | Notes |
|---|---|---|---|---|
| User | Yes | Yes | Yes | The full home. A person has a social surface as well as a mailbox |
| Organization | Yes | Yes | Yes | Keyed on the organization's base id rather than its entity id |
| Node | Yes | Yes | Yes | Keyed on the node's base id |
| Agent | Yes | Yes | Yes | An agent is staff, so it gets a personnel-shaped home |
| Service account | Yes | No | Yes | The service stream set. A headless principal has no social feed |
| Device | Yes | No | Yes | The minimal home. Reachable and alertable, with no feed |
A service account and a device both stay entity-scoped homes. They are reachable and alertable because a headless principal still has to be told things, and it still has to be able to raise something. What they do not get is a feed, because there is nobody on the other side of it.
An organization or a node resolves its home from its base id rather than its entity id, because those homes key on the organization or node itself. A base id that does not resolve raises rather than binding the home to the wrong owner, which is the fail-closed choice: a misattributed inbox is worse than a missing one.
Why every entity needs one
Three things follow from the invariant, and they are why it is worth the cost of provisioning homes nobody asked for.
Addressability. An entity with an inbox subject can be sent a message, delegated a task, or handed a signed job envelope. Without a home there is nothing to address.
Attribution. Work done by an entity lands somewhere that belongs to that entity, under its own membership, with its own storage namespace. Cost, classification and audit attach to a scope that exists rather than to a null.
A surface to govern. A workspace is the unit that carries policy, residency, lifecycle and access. An entity without one is an actor the governance model cannot reach.
Homes are not the only workspaces
A home workspace is where an entity is. It is not where a team's work necessarily happens. Beyond the automatic home you create:
- Collaboration workspaces, the ordinary shared environments a team works in;
- Clean rooms, where two or more trust domains collaborate without trusting each other.
Both are covered in workspaces and clean rooms, and choosing a boundary is the decision between them.
Related
- Workspaces and clean rooms, the boundary model in full.
- Capacity and placement, binding a workspace to cells.
- Messaging, the bus an inbox subject lives on, and the feed and publishing layer.
- The entity model, the six entity kinds these homes are provisioned for.