CI / checks (push) Skipped
CI / checks (pull_request) Successful in 58s
Observed rather than assumed, after checking the running instance: collections carry per-user permissions in three tiers and permissions are collection-scoped, not per-document. So one collection per writing principal, with read membership for everyone else. - States precisely what that enforces: no other agent can write a given agent's world model. It does not enforce operator-versus-agent exclusion, since the operator holds manager on their own wiki; that half is procedural, via the break-glass routine that stops the agents first. Two different strengths, so the spec no longer implies one guarantee covers both - Per-user grants, not groups: Outline groups are not federated with LLDAP, so using them would put membership somewhere nothing syncs. Three principals make the manual mapping trivial - Outline API keys are per-user, so each agent's token must belong to that agent's own Outline user. A token minted from an admin account voids every boundary above while appearing to work — the same shape as the Gitea permission surprise - Collections identified by ID from config, documents by ID recorded in the state store, which also makes writes idempotent across a retry - The conditional-write requirement softens to a revision *read*: break-glass stops the agents, so compare-and-swap is unnecessary and only divergence detection is needed for A3 Also records Outline's MCP server as considered and deferred. A17's enforcement depends on this library sitting between the model and the store; MCP's purpose is direct model access, and a procedure the model may decline to fetch does not constrain it. Still a candidate for the discretionary search tool, with two things to verify first. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>