knowledge_write
Create or update a shared knowledge page by slug to store facts or artifacts with citations for other agents to read and revise.
Instructions
Upsert a knowledge page by slug. Two classes:
world/ (default) — facts true independent of us. Domain = "music/gear", "software/loom", etc.
ours/ — Art-created artifacts, revised-in-place (breakbrain density model, homelab design,
wake-chain spec, script templates). Domain starts with "ours/", e.g. "ours/art-ops".
On an existing slug: body REPLACES by default (mode: "append" adds to it instead), title/domain follow the write, citations always appended with exact-duplicate dedup — safe to re-send.
Epistemic gate (§E1):
• conversation-only citations → provisional (both classes).
• ours/ domain + any repo citation → internal (ours/ class artifact; repo = git path / commit / live-system probe).
• any web/repo citation on a non-ours/ domain → sourced (world/ default).
NOTE: repo citations on world-class pages (domain not starting with "ours/") are treated as sourced, not internal.
A citation to github.com/someone-else/project is a world source.
World filing test: knowledge must be true independent of Jonathan. For our own artifacts use ours/.
Shared surface, not a scratchpad: knowledge is readable by other identities (e.g. Mark) and by Jonathan, not just you. Write pages as finished synthesis for that audience — no raw inner-monologue reasoning, no private-to-you deliberation, nothing that assumes only you will ever read it. A personal reflection or working-out-loud note belongs in remember, not here.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Synthesized markdown body for the entity or artifact page (max 64 KB) | |
| mode | No | Body combine mode when the slug already exists: "replace" (default) overwrites the stored body; "append" adds this body after the existing one. Citations are appended (deduped) in both modes. Ignored when creating a new page. | |
| slug | No | Entity key for upsert — stable URL-safe identifier. Derived from title if omitted. | |
| title | Yes | Page title — the entity name (e.g. "Mutable Instruments Rings") or artifact name (e.g. "breakbrain density model") | |
| domain | Yes | Domain tag. World class: "music/eurorack", "programming/typescript". Ours class: prefix with "ours/" — e.g. "ours/art-ops", "ours/breakbrain", "ours/homelab". Hierarchical string; sub-domains queryable via prefix filter. | |
| version | No | ours/ class: artifact version or revision tag (e.g. "v2", "2026-08-31", "t-81"). Preserved across upserts when omitted. | |
| citations | Yes | Support citations. At least one required. All-conversation → provisional. ours/ domain + repo → internal. Any web or repo on non-ours/ → sourced. | |
| created_by | No | ours/ class: who created or last owned this artifact (e.g. "art", "jonathan"). Preserved across upserts when omitted; defaults to the calling identity for ours/ pages. On the knowledge-only service this must equal your own identity — you cannot attribute a write to a different identity than the one your bearer token resolved to. | |
| freshness_anchor | No | The version/date the page's claims are valid as-of — e.g. "Syntakt OS 1.21" for a device, "as of 2026-05" for a topic, or "t-81 / 2026-08-31" for an ours/ artifact. Drives the verification engine: a page is re-verified when this anchor moves or the freshness SLA elapses. |