Implement canon conformance and maintenance optimizations
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a06e82-3e08-7042-a79d-438ac6eed8db
This commit is contained in:
parent
a2e7f22d8d
commit
b081d39da1
64 changed files with 4491 additions and 373 deletions
159
infospace/schemas/emission-cadence.schema.yaml
Normal file
159
infospace/schemas/emission-cadence.schema.yaml
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
$schema: https://json-schema.org/draft/2020-12/schema
|
||||
$id: https://info-tech-canon.local/schemas/emission-cadence.schema.yaml
|
||||
title: InfoTechCanon EmissionCadenceDeclaration 0.1
|
||||
description: Generic source-authored event emission cadence declaration.
|
||||
type: object
|
||||
required:
|
||||
- schema_version
|
||||
- declaration_id
|
||||
- source
|
||||
- sources
|
||||
properties:
|
||||
schema_version:
|
||||
const: "0.1"
|
||||
declaration_id:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
source:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
stream_id:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
sources:
|
||||
type: array
|
||||
minItems: 1
|
||||
items:
|
||||
$ref: "#/$defs/cadence_entry"
|
||||
extensions:
|
||||
$ref: "#/$defs/extensions"
|
||||
additionalProperties: false
|
||||
$defs:
|
||||
non_empty_string:
|
||||
type: string
|
||||
minLength: 1
|
||||
duration:
|
||||
type: string
|
||||
pattern: "^(?:P(?=\\d|T\\d)(?:\\d+D)?(?:T(?:\\d+H)?(?:\\d+M)?(?:\\d+S)?)?|[1-9][0-9]*(?:s|m|h|d))$"
|
||||
extensions:
|
||||
type: object
|
||||
minProperties: 1
|
||||
propertyNames:
|
||||
pattern: "^[a-z][a-z0-9.-]*$"
|
||||
additionalProperties:
|
||||
type: object
|
||||
heartbeat:
|
||||
type: object
|
||||
required:
|
||||
- event_class
|
||||
- assertion
|
||||
- missing
|
||||
properties:
|
||||
event_class:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
interval:
|
||||
$ref: "#/$defs/duration"
|
||||
interval_seconds:
|
||||
type: integer
|
||||
minimum: 1
|
||||
assertion:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
missing:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
extensions:
|
||||
$ref: "#/$defs/extensions"
|
||||
oneOf:
|
||||
- required: [interval]
|
||||
not:
|
||||
required: [interval_seconds]
|
||||
- required: [interval_seconds]
|
||||
not:
|
||||
required: [interval]
|
||||
additionalProperties: false
|
||||
reconciliation:
|
||||
type: object
|
||||
required:
|
||||
- compare_local
|
||||
- compare_observed
|
||||
- divergence
|
||||
properties:
|
||||
compare_local:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
compare_observed:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
divergence:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
undrained_local:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
extensions:
|
||||
$ref: "#/$defs/extensions"
|
||||
additionalProperties: false
|
||||
cadence_entry:
|
||||
type: object
|
||||
required:
|
||||
- source_id
|
||||
- event_class
|
||||
- form
|
||||
properties:
|
||||
source_id:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
source_system:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
event_class:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
form:
|
||||
enum:
|
||||
- expected-rate
|
||||
- heartbeat-or-reconciliation
|
||||
window:
|
||||
$ref: "#/$defs/duration"
|
||||
window_seconds:
|
||||
type: integer
|
||||
minimum: 1
|
||||
expected_min:
|
||||
type: integer
|
||||
minimum: 0
|
||||
drop_below:
|
||||
$ref: "#/$defs/non_empty_string"
|
||||
heartbeat:
|
||||
$ref: "#/$defs/heartbeat"
|
||||
reconciliation:
|
||||
$ref: "#/$defs/reconciliation"
|
||||
extensions:
|
||||
$ref: "#/$defs/extensions"
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
form:
|
||||
const: expected-rate
|
||||
required: [form]
|
||||
then:
|
||||
required:
|
||||
- expected_min
|
||||
- drop_below
|
||||
oneOf:
|
||||
- required: [window]
|
||||
not:
|
||||
anyOf:
|
||||
- required: [window_seconds]
|
||||
- required: [heartbeat]
|
||||
- required: [reconciliation]
|
||||
- required: [window_seconds]
|
||||
not:
|
||||
anyOf:
|
||||
- required: [window]
|
||||
- required: [heartbeat]
|
||||
- required: [reconciliation]
|
||||
- if:
|
||||
properties:
|
||||
form:
|
||||
const: heartbeat-or-reconciliation
|
||||
required: [form]
|
||||
then:
|
||||
anyOf:
|
||||
- required: [heartbeat]
|
||||
- required: [reconciliation]
|
||||
not:
|
||||
anyOf:
|
||||
- required: [window]
|
||||
- required: [window_seconds]
|
||||
- required: [expected_min]
|
||||
- required: [drop_below]
|
||||
additionalProperties: false
|
||||
|
|
@ -25,3 +25,5 @@ schemas:
|
|||
path: capability-record.schema.yaml
|
||||
- id: attribute-value-type
|
||||
path: attribute-value-type.schema.yaml
|
||||
- id: emission-cadence
|
||||
path: emission-cadence.schema.yaml
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue