the-custodian/canon/standards/schemas/work-records/spine.schema.json
codex ffad21146f
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 3s
Python Tests / pytest (push) Successful in 26s
Canonize work-record flavor and residual default-exclusion.
STATE-WP-0092-T01: flavor is a closed bucket on workplans and tasks;
residuals are a flavor, not a kind, and are omitted from default open
views until demand or risk promotes them. depends_on is the workplan
frontmatter edge.
2026-09-14 15:28:58 +02:00

52 lines
1.8 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://canon.coulomb.social/schemas/work-records/spine.schema.json",
"title": "Work Record Spine (shared definitions)",
"description": "Shared spine per canon/standards/work-record-types_v0.1.md. Kind schemas $ref these definitions. additionalProperties stays open: kind-specific fields extend the spine, never replace it.",
"$defs": {
"lane": {
"enum": ["green", "blue", "yellow", "orange", "red"]
},
"uuid": {
"type": "string",
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
},
"date": {
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
},
"tags": {
"type": "array",
"items": { "type": "string", "pattern": "^[a-z0-9-]+$" }
},
"flavor": {
"enum": ["planning", "implementation", "refactoring", "extension", "residual"]
},
"flavor_promotion_reason": {
"enum": ["demand", "risk"]
},
"owner": {
"type": "string",
"minLength": 2
},
"spineOpen": {
"type": "object",
"description": "Spine requirements for records in a non-terminal status.",
"required": ["id", "lane"],
"properties": {
"lane": { "$ref": "#/$defs/lane" },
"owner": { "$ref": "#/$defs/owner" },
"tags": { "$ref": "#/$defs/tags" },
"uuid": { "$ref": "#/$defs/uuid" },
"created_at": { "$ref": "#/$defs/date" },
"flavor": { "$ref": "#/$defs/flavor" },
"flavor_promotion_reason": { "$ref": "#/$defs/flavor_promotion_reason" },
"flavor_promoted_from": { "$ref": "#/$defs/flavor" },
"depends_on": {
"type": "array",
"items": { "type": "string", "minLength": 3 }
}
}
}
}
}