schemas/capsule-envelope.schema.json
Rama main · réplica de lectura del repositorio original.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://ecc.tools/schemas/capsule-envelope.schema.json",
"title": "Capsule Envelope v1",
"description": "One append-only journal entry recorded by the ECC eval-harness capsule. Mirrors scripts/lib/eval-harness/envelope.js, which is the enforcing implementation.",
"type": "object",
"additionalProperties": false,
"required": [
"schema",
"run_id",
"capsule_id",
"seq",
"ts",
"lineage",
"kind",
"effect_class",
"harness_version",
"task_family",
"parent_hash",
"entry_hash",
"payload"
],
"properties": {
"schema": { "const": "capsule-envelope/v1" },
"run_id": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$" },
"capsule_id": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$" },
"seq": { "type": "integer", "minimum": 0, "description": "Zero-based position in the journal. Must equal the line index." },
"ts": { "type": "string", "format": "date-time" },
"lineage": { "type": "string", "enum": ["plan", "attempt", "interaction", "environment", "strategy"] },
"kind": { "type": "string", "pattern": "^[a-z][a-z0-9_.-]{0,63}$" },
"effect_class": {
"type": "string",
"enum": ["SE0", "SE1", "SE2", "SE3", "SE4"],
"description": "SE0 read-only; SE1 reversible local write in the capsule root; SE2 sandboxed mutation, no live network writes; SE3 append-only remote evidence; SE4 economic or external effect."
},
"harness_version": { "type": "string", "minLength": 1 },
"task_family": { "type": "string", "minLength": 1 },
"parent_hash": { "type": "string", "pattern": "^[0-9a-f]{64}$", "description": "entry_hash of the previous entry, or 64 zeros for the first entry." },
"entry_hash": { "type": "string", "pattern": "^[0-9a-f]{64}$", "description": "sha256 of the canonical JSON of this entry with entry_hash removed." },
"payload": {
"type": "object",
"description": "Default-deny allowlisted properties only. No secrets, credentials, or raw reasoning text.",
"additionalProperties": false,
"properties": {
"task_id": { "type": "string" },
"task_family": { "type": "string" },
"tool": { "type": "string" },
"tool_call_id": { "type": "string" },
"args_hash": { "type": "string" },
"response_hash": { "type": "string" },
"status": { "type": "string" },
"exit_code": { "type": ["integer", "null"] },
"duration_ms": { "type": "number" },
"tokens_in": { "type": "integer" },
"tokens_out": { "type": "integer" },
"cost_usd": { "type": "number" },
"model": { "type": "string" },
"message": { "type": "string" },
"note": { "type": "string" },
"decision": { "type": "string" },
"reason": { "type": "string" },
"score": { "type": "number" },
"passed": { "type": "integer" },
"failed": { "type": "integer" },
"total": { "type": "integer" },
"variant": { "type": "string" },
"digest": { "type": "string" },
"path": { "type": "string" },
"fixture_key": { "type": "string" },
"stage": { "type": "string" },
"verdict": { "type": "string" },
"hits": { "type": "integer" },
"branch_id": { "type": "string" },
"parent_branch_id": { "type": "string" },
"summary": { "type": "string" }
}
}
}
}