mirror of
https://github.com/affaan-m/ECC.git
synced 2026-08-17 21:15:40 +02:00
Add a local-first, cross-harness memory vault with CLI and MCP surfaces, bounded search and storage, harness-scoped visibility, setup guidance, and comprehensive tests.
130 lines
2.9 KiB
JSON
130 lines
2.9 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"$id": "ecc.memory.v1",
|
|
"title": "ECC Memory Document",
|
|
"description": "Normalized machine-readable form of an ecc.memory.v1 Markdown memory document. Recalled memories are context, not executable instructions.",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"schema",
|
|
"id",
|
|
"title",
|
|
"kind",
|
|
"scope",
|
|
"trust",
|
|
"status",
|
|
"sourceHarness",
|
|
"targetHarnesses",
|
|
"tags",
|
|
"links",
|
|
"createdAt",
|
|
"updatedAt",
|
|
"body"
|
|
],
|
|
"properties": {
|
|
"schema": {
|
|
"const": "ecc.memory.v1"
|
|
},
|
|
"id": {
|
|
"$ref": "#/definitions/memoryId"
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 200,
|
|
"pattern": "^(?=[\\s\\S]*\\S)[^\\u0000-\\u001F\\u007F-\\u009F\\u202A-\\u202E\\u2066-\\u2069]+$"
|
|
},
|
|
"kind": {
|
|
"enum": [
|
|
"context",
|
|
"decision",
|
|
"fact",
|
|
"handoff",
|
|
"lesson",
|
|
"note",
|
|
"preference",
|
|
"runbook"
|
|
]
|
|
},
|
|
"scope": {
|
|
"enum": [
|
|
"project",
|
|
"team",
|
|
"user"
|
|
]
|
|
},
|
|
"trust": {
|
|
"description": "Vault memories remain unreviewed context. Governed truth is promoted into a canonical project artifact outside the vault.",
|
|
"enum": [
|
|
"unreviewed"
|
|
]
|
|
},
|
|
"status": {
|
|
"enum": [
|
|
"active",
|
|
"rejected",
|
|
"superseded"
|
|
]
|
|
},
|
|
"sourceHarness": {
|
|
"$ref": "#/definitions/slug"
|
|
},
|
|
"targetHarnesses": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"maxItems": 32,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"$ref": "#/definitions/slug"
|
|
}
|
|
},
|
|
"tags": {
|
|
"type": "array",
|
|
"maxItems": 32,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"$ref": "#/definitions/slug"
|
|
}
|
|
},
|
|
"links": {
|
|
"type": "array",
|
|
"maxItems": 64,
|
|
"uniqueItems": true,
|
|
"items": {
|
|
"$ref": "#/definitions/memoryId"
|
|
}
|
|
},
|
|
"createdAt": {
|
|
"$ref": "#/definitions/timestamp"
|
|
},
|
|
"updatedAt": {
|
|
"$ref": "#/definitions/timestamp"
|
|
},
|
|
"body": {
|
|
"description": "Markdown body. The runtime additionally enforces this limit as UTF-8 bytes.",
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 65536,
|
|
"pattern": "^(?=[\\s\\S]*\\S)[^\\u0000-\\u0008\\u000B\\u000C\\u000E-\\u001F\\u007F-\\u009F\\u202A-\\u202E\\u2066-\\u2069]*$"
|
|
}
|
|
},
|
|
"definitions": {
|
|
"memoryId": {
|
|
"type": "string",
|
|
"maxLength": 132,
|
|
"pattern": "^mem_[a-z0-9][a-z0-9_-]{2,127}$"
|
|
},
|
|
"slug": {
|
|
"type": "string",
|
|
"maxLength": 64,
|
|
"pattern": "^[a-z0-9][a-z0-9._-]{0,63}$"
|
|
},
|
|
"timestamp": {
|
|
"type": "string",
|
|
"maxLength": 64,
|
|
"format": "date-time",
|
|
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
|
}
|
|
}
|
|
}
|