/ components / _registry / schema.cspec
schema.cspec
  1  # Component Schema Definition v1.0.0
  2  # Defines the structure for all .component.cspec files
  3  # AI workers MUST validate components against this schema
  4  
  5  schema_version: 1.0.0
  6  created: 2026-01-07
  7  
  8  # === REQUIRED SECTIONS ===
  9  required:
 10    - metadata
 11    - dependencies
 12    - interface
 13    - spec
 14  
 15  # === METADATA SECTION ===
 16  metadata:
 17    id:
 18      type: string
 19      pattern: "^[A-Z]{1,2}[0-9]{2,3}$"  # T001, A001, AC01, etc.
 20      required: true
 21    name:
 22      type: string
 23      pattern: "^[a-z_]+$"
 24      required: true
 25    version:
 26      type: semver
 27      pattern: "^[0-9]+\\.[0-9]+\\.[0-9]+$"
 28      required: true
 29    domain:
 30      type: enum
 31      values: [tokens, alpha, delta, runtime, nodes, network, infra, acdc, security, future, frontend]
 32      required: true
 33    stability:
 34      type: enum
 35      values: [high_change, stable, future]
 36      required: true
 37    updated:
 38      type: date
 39      format: "YYYY-MM-DD"
 40      required: true
 41    cascade_priority:
 42      type: integer
 43      min: 0
 44      max: 100
 45      default: 50
 46      required: false
 47  
 48    # Role Expertise (for AI worker routing)
 49    roles:
 50      type: object
 51      required: false
 52      properties:
 53        primary:
 54          type: array
 55          items:
 56            type: enum
 57            values: [Dev, Ops, Arch, Security]
 58          description: "Roles that typically work on this component"
 59        review:
 60          type: array
 61          items:
 62            type: enum
 63            values: [Dev, Ops, Arch, Security]
 64          description: "Roles that must review changes to this component"
 65  
 66    expertise:
 67      type: object
 68      required: false
 69      properties:
 70        required:
 71          type: array
 72          items: string
 73          description: "Skills required to work on this component"
 74        helpful:
 75          type: array
 76          items: string
 77          description: "Skills that help but aren't required"
 78  
 79    context_tags:
 80      type: array
 81      items: string
 82      description: "Semantic tags for search and filtering"
 83      required: false
 84  
 85  # === DEPENDENCIES SECTION ===
 86  dependencies:
 87    upstream:
 88      type: array
 89      items:
 90        id:
 91          type: string
 92          required: true
 93        version:
 94          type: semver_constraint
 95          patterns:
 96            - "^>=?[0-9]+\\.[0-9]+\\.[0-9]+$"      # >=1.0.0, >1.0.0
 97            - "^\\^[0-9]+\\.[0-9]+\\.[0-9]+$"      # ^1.0.0 (compatible)
 98            - "^~[0-9]+\\.[0-9]+\\.[0-9]+$"        # ~1.0.0 (patch only)
 99            - "^[0-9]+\\.[0-9]+\\.[0-9]+$"         # 1.0.0 (exact)
100          required: true
101        interface:
102          type: array
103          items: string
104          required: true
105        relationship:
106          type: enum
107          values: [requires, uses, extends]
108          default: requires
109    downstream:
110      type: array
111      items:
112        id:
113          type: string
114          required: true
115        exposed_interface:
116          type: array
117          items: string
118          required: true
119  
120  # === INTERFACE SECTION ===
121  interface:
122    types_ref:
123      type: string
124      description: "Reference to shared types file"
125      default: "_registry/types.cspec"
126    types:
127      type: object
128      description: "Embedded type definitions (subset of types.cspec)"
129    functions:
130      type: object
131      items:
132        inputs:
133          type: array
134          description: "Function input parameters"
135        outputs:
136          type: array
137          description: "Function output values"
138        requires:
139          type: array
140          description: "Preconditions"
141        emits:
142          type: array
143          description: "Events emitted"
144    events:
145      type: array
146      items:
147        type: object
148        description: "Event name and payload fields"
149    constants:
150      type: object
151      description: "Named constant values"
152  
153  # === SPEC SECTION ===
154  spec:
155    type: object
156    description: "Specification content - structure varies by component"
157    required: true
158  
159  # === CHANGELOG SECTION ===
160  changelog:
161    type: array
162    required: true
163    items:
164      version:
165        type: semver
166        required: true
167      date:
168        type: date
169        required: true
170      type:
171        type: enum
172        values: [initial, major, minor, patch, cascade]
173        required: true
174      description:
175        type: string
176        required: true
177      breaking:
178        type: boolean
179        default: false
180      cascade_from:
181        type: string
182        description: "Source component ID if this was a cascade update"