Schemas, examples and a flag registry for the twelve HUX cards, a dependency-free validator, the governance rules (memory ledger, autonomy matrix, friendly modes mapped to real Switchyard routes, privacy defaults, suggestion gating, release state machine) and the contract doc UI work codes against. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RNPhwu2bsaRNg3DETSAZoM
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}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|