a17-knowledge-store
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>
Nisse
Two self-hosted AI agents sharing a common library, named for the Nordic farm spirit that keeps the place running overnight and expects to be treated well in return.
| Package | Role |
|---|---|
nisse-core/ |
Shared library both agents sit on (Part A) |
nisse-dev/ |
Dev Agent — plans and implements software projects (Part B) |
nisse-ops/ |
Sysadmin Agent — operates infrastructure (Part C) |
One repository, three packages. The library does not exist as code yet: it is
extracted from nisse-dev once that agent works (build-order step 10), as a
package split within this tree.
Architecture
The system-level specification lives at
docs/Architecture-Build-Spec.md. It covers the
shared library, both agents, the supporting services, the build order, and the
remaining open decisions.