b8ba6835950537bc6fd6814270866606f147dddb
CI / checks (push) Skipped
CI / checks (pull_request) Successful in 1m3s
Part D said what Outline is for but never how to build against it — the only external integration with no A-series component, while Transport, LLM, Browser, Secrets, SSO and Logging all have one. A17 supplies the contract. Settled here: - Sharing is read access, never write access. Every document has exactly one writer, so concurrent writers never exist and Part D's last-write-wins objection disposes of itself. Default shared membership is operator + nisse-ops; nisse-dev gets private space only, since B3 seals it from the LAN and a shared network map is a map of what it is sealed from - Agent-owned knowledge is always a cache, never authority: rely on it to know what exists and where to look, verify a specific fact against the live system before acting on it - Enforcement is structural, because a prompt is not enforcement. A model cannot be stopped from believing what it reads, so the enforceable goal is narrower — an unverified belief must not become an irreversible action — and four mechanisms carry it, leaning hardest on surfacing provenance at the human gate that C2 already requires - Never an instruction channel and never an approval channel, stated both here and in A4 where approvals are specified - Corrections flow through transport rather than direct edits, which is better provenance: a hand edit is invisible to the agent's record, an instruction is authenticated, logged, and reconcilable. Break-glass reuses Part F's idle flag - Retrieved content is snapshotted into the canonical log, since A10 forbids a mutable provider handle being the only reference — with the A3 consequence that boot must re-fetch snapshots for resumed tasks - Outage posture is asymmetric: write failures never block, but a failed read of a procedure bound to a confirm-first action gates, because proceeding is acting unconstrained on exactly the operation someone wrote a procedure for 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.