59 lines
2.7 KiB
JSON
59 lines
2.7 KiB
JSON
|
|
{
|
||
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||
|
|
"$id": "https://hermes.bstein.dev/contracts/hux/v1/memory.schema.json",
|
||
|
|
"title": "HUX memory ledger entry",
|
||
|
|
"description": "A single remembered item (HUX-02). Memory is a ledger: entries are appended, approved, expired or forgotten, never edited in place. Forgotten entries keep their audit trail but drop content.",
|
||
|
|
"type": "object",
|
||
|
|
"additionalProperties": false,
|
||
|
|
"required": ["schema", "id", "owner", "scope", "kind", "content", "status", "approval_mode", "sensitivity", "ttl", "source", "provenance", "created_at", "updated_at", "audit"],
|
||
|
|
"properties": {
|
||
|
|
"schema": {"const": "hux.memory.v1"},
|
||
|
|
"id": {"$ref": "common.schema.json#/$defs/id"},
|
||
|
|
"owner": {"$ref": "common.schema.json#/$defs/user_ref"},
|
||
|
|
"scope": {
|
||
|
|
"type": "object",
|
||
|
|
"additionalProperties": false,
|
||
|
|
"required": ["level"],
|
||
|
|
"properties": {
|
||
|
|
"level": {"type": "string", "enum": ["global", "project", "conversation"]},
|
||
|
|
"scope_id": {"$ref": "common.schema.json#/$defs/id"}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"kind": {"type": "string", "enum": ["preference", "fact", "instruction", "context"]},
|
||
|
|
"content": {"type": "string", "maxLength": 2000},
|
||
|
|
"status": {"type": "string", "enum": ["proposed", "active", "rejected", "expired", "forgotten"]},
|
||
|
|
"approval_mode": {"type": "string", "enum": ["automatic", "ask"]},
|
||
|
|
"sensitivity": {"$ref": "common.schema.json#/$defs/sensitivity"},
|
||
|
|
"topic": {"type": "string", "enum": ["general", "health", "finance", "legal", "relationships", "credentials", "minors", "location", "biometric"]},
|
||
|
|
"ttl": {
|
||
|
|
"type": "object",
|
||
|
|
"additionalProperties": false,
|
||
|
|
"required": ["policy"],
|
||
|
|
"properties": {
|
||
|
|
"policy": {"type": "string", "enum": ["never", "expires_at", "decay"]},
|
||
|
|
"expires_at": {"$ref": "common.schema.json#/$defs/timestamp"},
|
||
|
|
"decay_days": {"type": "integer", "minimum": 1, "maximum": 3650}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"source": {"$ref": "common.schema.json#/$defs/evidence_ref"},
|
||
|
|
"provenance": {"$ref": "common.schema.json#/$defs/provenance"},
|
||
|
|
"created_at": {"$ref": "common.schema.json#/$defs/timestamp"},
|
||
|
|
"updated_at": {"$ref": "common.schema.json#/$defs/timestamp"},
|
||
|
|
"audit": {
|
||
|
|
"type": "array",
|
||
|
|
"minItems": 1,
|
||
|
|
"items": {
|
||
|
|
"type": "object",
|
||
|
|
"additionalProperties": false,
|
||
|
|
"required": ["at", "action", "actor"],
|
||
|
|
"properties": {
|
||
|
|
"at": {"$ref": "common.schema.json#/$defs/timestamp"},
|
||
|
|
"action": {"type": "string", "enum": ["proposed", "approved", "rejected", "expired", "forgotten", "exported"]},
|
||
|
|
"actor": {"$ref": "common.schema.json#/$defs/actor"},
|
||
|
|
"note": {"type": "string", "maxLength": 200}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|