CAT-K1: mesh-knowledge asks for its records as a ledger, its states and its reviews stream, and says the new events

The manifest keeps postgres-database until the drop and asks, in the typed form, the ledger records (a type for each
kind, the operations of the move), the states drafts, asked, findings and sent, and the stream reviews (kept for good,
refusing when full, granted by the trusted value readers). It consumes claude-code's judged and says the eleven new
events. The mesh-delivery indexer's judge accepts it (checked against main).

Issue 1966.

Claude-Session: https://claude.ai/code/session_01JG73KJNrH5EgFXMKKYSrig
This commit is contained in:
2026-11-04 11:39:47 +01:00
parent 7a7db0166a
commit c973b31820
5 changed files with 221 additions and 9 deletions
+104 -2
View File
@@ -3,7 +3,81 @@
"version": "1",
"slug": "knowledge",
"requires": [
"postgres-database"
"postgres-database",
{
"name": "records", "storage": "ledger", "template": "ledger", "options": {"max-mib": 1024},
"types": [
{
"name": "decision",
"schema": {
"kind": {"type": "string"},
"number": {"type": "integer"},
"entry": {"type": "object"},
"version": {"type": "object"},
"pending-sections": {"type": "object"},
"title": {"type": "string"},
"text": {"type": "string"},
"digest": {"type": "string", "digest-of": "text"},
"why": {"type": "string"},
"reason": {"type": "string"}
},
"operations": [
{"name": "reserve", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true},
{"name": "propose", "effect": "set-fields", "fields": ["kind", "number", "entry", "pending-sections"], "sequence": true, "author": true},
{"name": "write-section", "effect": "set-entry", "into": "pending-sections", "key": "title", "fields": ["title", "digest"], "sequence": true, "author": true},
{"name": "submit", "effect": "set-fields", "fields": ["kind", "number", "entry", "pending-sections"], "sequence": true, "author": true},
{"name": "drop", "effect": "set-fields", "fields": ["kind", "number", "entry", "pending-sections"], "sequence": true, "author": true},
{"name": "import", "effect": "set-fields", "fields": ["kind", "number", "entry", "pending-sections"], "sequence": true, "author": true},
{"name": "form", "effect": "set-fields", "fields": ["kind", "number", "entry", "pending-sections"], "sequence": true, "author": true},
{"name": "take-over", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true},
{"name": "review", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true},
{"name": "ask", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true},
{"name": "warrant", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true},
{"name": "accept", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true},
{"name": "withdraw", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true},
{"name": "retract", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true},
{"name": "draft", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true}
]
},
{
"name": "research",
"schema": {
"kind": {"type": "string"},
"number": {"type": "integer"},
"entry": {"type": "object"},
"version": {"type": "object"},
"pending-sections": {"type": "object"},
"title": {"type": "string"},
"text": {"type": "string"},
"digest": {"type": "string", "digest-of": "text"},
"why": {"type": "string"},
"reason": {"type": "string"}
},
"operations": [
{"name": "reserve", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true},
{"name": "propose", "effect": "set-fields", "fields": ["kind", "number", "entry", "pending-sections"], "sequence": true, "author": true},
{"name": "write-section", "effect": "set-entry", "into": "pending-sections", "key": "title", "fields": ["title", "digest"], "sequence": true, "author": true},
{"name": "submit", "effect": "set-fields", "fields": ["kind", "number", "entry", "pending-sections"], "sequence": true, "author": true},
{"name": "drop", "effect": "set-fields", "fields": ["kind", "number", "entry", "pending-sections"], "sequence": true, "author": true},
{"name": "import", "effect": "set-fields", "fields": ["kind", "number", "entry", "pending-sections"], "sequence": true, "author": true},
{"name": "form", "effect": "set-fields", "fields": ["kind", "number", "entry", "pending-sections"], "sequence": true, "author": true},
{"name": "take-over", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true},
{"name": "review", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true},
{"name": "ask", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true},
{"name": "warrant", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true},
{"name": "accept", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true},
{"name": "withdraw", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true},
{"name": "retract", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true},
{"name": "draft", "effect": "set-fields", "fields": ["kind", "number", "entry"], "sequence": true, "author": true}
]
}
]
},
{"name": "drafts", "storage": "key-value", "template": "state", "options": {"key-ttl": true}},
{"name": "asked", "storage": "key-value", "template": "state"},
{"name": "findings", "storage": "key-value", "template": "state"},
{"name": "sent", "storage": "key-value", "template": "state"},
{"name": "reviews", "storage": "stream", "configuration": {"when-full": "refuse", "max-mib": 512, "max-age-days": "none", "grant": "readers"}}
],
"contributes": {
"postgres-database": {
@@ -74,7 +148,21 @@
"imported",
"drafted",
"confirmed",
"returned"
"returned",
"opened",
"written",
"removed",
"ordered",
"submitted",
"dropped",
"taken-over",
"part-reviewed",
"moved",
"checked",
"formed"
],
"consumes": [
"claude-code.judged"
],
"uses": [
"operator-channel"
@@ -96,6 +184,11 @@
"seat:mesh-delivery.groups"
],
"config": {
"readers": {
"type": "object",
"description": "The modules heard on the reviews of records (the stream of each part's verdict), by name, each with why; empty grants none. Set only at the controller's terminal or on the operator's Approve.",
"default": {}
},
"judge-model": {
"type": "string",
"description": "The model the knowledge base's drafting and confirming judgements ask, by the agent's name for it, such as sonnet; empty is sonnet.",
@@ -138,6 +231,15 @@
"merge": "json",
"template": "files/settings.json"
},
{
"id": "readers",
"type": "file",
"path": "${dir:state}/readers.json",
"mode": "0600",
"takes-config": ["readers"],
"merge": "json",
"template": "files/readers.json"
},
{
"id": "prepare",
"type": "process",