# Decisions Architecture decision records for the demarkus core, for maintainers and agents finding what was settled and where the canonical copy lives. Part of the [demarkus-soul hub](/index.md). Canonical here since 2026-09-28; `docs/adr/` in git is a frozen archive of 0001 to 0027 (see [where decisions live](/conventions.md#where-architectural-decisions-live)). Sub-project decisions live in their own series, for example [/demarkus-library/adr/](/demarkus-library/adr/). Status, dates and supersession live in each ADR. - [Decisions 0001 to 0020](/index/decisions/0001-0020.md): the first twenty, from the broker web-client registry to the reconcile owner - [ADR 0021](/adr/0021-world-registry-names-and-one-tenant-door.md): world registry announces drops, DNS label world names, one tenant door - [ADR 0022](/adr/0022-gateway-dependencies-not-the-server.md): the MCP gateway takes its dependencies from `Run`, not the Server - [ADR 0023](/adr/0023-broker-packages-behind-one-run.md): the broker is `core`, `oauthsrv`, `gateway` and `storage` behind one `Run` - [ADR 0024](/adr/0024-plugin-binary-packages-by-concern-and-host-values.md): plugin binary packages by concern, a harness is a `host.Host` value - [ADR 0025](/adr/0025-watch-verb.md): WATCH is the eighth verb, the store emits hints only, protocol 1.0 freezes after it - [ADR 0026](/adr/0026-client-sdk-mit-server-never-imports.md): a client SDK under MIT with its own semver, the server never imports it - [ADR 0027](/adr/0027-world-token-files-optional-and-split.md): world token files are optional at open and split into runtime and static files - [ADR 0028](/adr/0028-stores-own-a-durable-change-sequence.md): every store owns a durable change epoch and sequence behind `backend.ChangeSource` - [ADR 0029](/adr/0029-broker-issues-agent-hub-tokens.md): the broker issues the federation agent's hub token from `agentTokens` - [ADR 0030](/adr/0030-broker-generates-its-cookie-key.md): the broker generates and persists its state cookie key - [ADR 0031](/adr/0031-bucket-store-seals-change-blocks.md): the bucket store seals receipts into change blocks the hub reads as a backlog - [ADR 0032](/adr/0032-broker-in-the-knowledge-server-process.md): the knowledge and memory brokers run inside the knowledge server process - [ADR 0033](/adr/0033-identity-bearers-on-the-mark-front-door.md): the knowledge server's bearer listener takes an identity bearer in the `auth` field - [ADR 0034](/adr/0034-federation-graph-derived-in-process.md): the knowledge server derives the federation graph in process into the hub's checkpoints - [ADR 0035](/adr/0035-drop-content-addressed-fetch.md): drop content-addressed fetch and the hash index tools before protocol 1.0 - [ADR 0036](/adr/0036-bucket-store-commit-log.md): the bucket store commits through create-only log slots with group commit - [ADR 0037](/adr/0037-contract-is-the-protocol-two-doors.md): the contract is the protocol, transports are bindings, two doors by credential kind - [ADR 0038](/adr/0038-write-identity-is-user-and-agent.md): a broker write carries the verified email as `user` and the MCP client name as `agent` - [ADR 0039](/adr/0039-drop-standalone-federation-agent.md): drop the standalone federation agent before 1.0; the knowledge server is the only graph producer - [ADR 0040](/adr/0040-memory-mechanics-in-the-server.md): memory mechanics (gate, doctor, journal, context, curate, promote staging) live in the server; skills keep intent and the gate