2026-07-20 02:07:36 +02:00
{
"$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-]+$" }
} ,
2026-09-14 15:28:58 +02:00
"flavor" : {
"enum" : [ "planning" , "implementation" , "refactoring" , "extension" , "residual" ]
} ,
"flavor_promotion_reason" : {
"enum" : [ "demand" , "risk" ]
} ,
2026-07-20 02:07:36 +02:00
"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" } ,
2026-09-14 15:28:58 +02:00
"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 }
}
2026-07-20 02:07:36 +02:00
}
}
}
}