kibi-cli 0.16.1 → 0.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/dist/cli-json-command.d.ts.map +1 -1
  2. package/dist/cli-json-command.js +87 -11
  3. package/dist/cli-register-maintenance.d.ts.map +1 -1
  4. package/dist/cli-register-maintenance.js +8 -0
  5. package/dist/cli-register-reporting.d.ts.map +1 -1
  6. package/dist/cli-register-reporting.js +5 -0
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +2 -1
  9. package/dist/commands/aggregated-checks.d.ts.map +1 -1
  10. package/dist/commands/aggregated-checks.js +1 -0
  11. package/dist/commands/check.d.ts.map +1 -1
  12. package/dist/commands/check.js +1 -1
  13. package/dist/commands/coverage.d.ts +5 -0
  14. package/dist/commands/coverage.d.ts.map +1 -1
  15. package/dist/commands/coverage.js +5 -0
  16. package/dist/commands/discovery-table.d.ts.map +1 -1
  17. package/dist/commands/discovery-table.js +96 -5
  18. package/dist/commands/sync/cache.d.ts +2 -0
  19. package/dist/commands/sync/cache.d.ts.map +1 -1
  20. package/dist/commands/sync/cache.js +8 -0
  21. package/dist/commands/sync/manifest.d.ts +12 -1
  22. package/dist/commands/sync/manifest.d.ts.map +1 -1
  23. package/dist/commands/sync/manifest.js +22 -5
  24. package/dist/commands/sync/persistence.d.ts.map +1 -1
  25. package/dist/commands/sync/persistence.js +76 -2
  26. package/dist/commands/sync.d.ts.map +1 -1
  27. package/dist/commands/sync.js +72 -15
  28. package/dist/commands/usage-metrics.d.ts +66 -2
  29. package/dist/commands/usage-metrics.d.ts.map +1 -1
  30. package/dist/commands/usage-metrics.js +34 -24
  31. package/dist/commands/usage-remediation.d.ts +9 -0
  32. package/dist/commands/usage-remediation.d.ts.map +1 -0
  33. package/dist/commands/usage-remediation.js +52 -0
  34. package/dist/extractors/markdown.d.ts +17 -1
  35. package/dist/extractors/markdown.d.ts.map +1 -1
  36. package/dist/extractors/markdown.js +81 -2
  37. package/dist/logic/ir.d.ts +112 -0
  38. package/dist/logic/ir.d.ts.map +1 -0
  39. package/dist/logic/ir.js +729 -0
  40. package/dist/operations/modeling/logic-modeling.d.ts +22 -0
  41. package/dist/operations/modeling/logic-modeling.d.ts.map +1 -0
  42. package/dist/operations/modeling/logic-modeling.js +120 -0
  43. package/dist/operations/modeling/model-requirement.d.ts.map +1 -1
  44. package/dist/operations/modeling/model-requirement.js +83 -2
  45. package/dist/operations/modeling/predicate-applyplan.d.ts +1 -1
  46. package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
  47. package/dist/operations/modeling/predicate-applyplan.js +29 -4
  48. package/dist/operations/modeling/predicate-inference.d.ts.map +1 -1
  49. package/dist/operations/modeling/predicate-inference.js +3 -0
  50. package/dist/operations/modeling/predicate-loader.d.ts.map +1 -1
  51. package/dist/operations/modeling/predicate-loader.js +7 -1
  52. package/dist/operations/modeling/predicate-ranker.d.ts.map +1 -1
  53. package/dist/operations/modeling/predicate-ranker.js +40 -2
  54. package/dist/operations/modeling/predicate-types.d.ts +12 -1
  55. package/dist/operations/modeling/predicate-types.d.ts.map +1 -1
  56. package/dist/operations/modeling/requirement-types.d.ts +12 -0
  57. package/dist/operations/modeling/requirement-types.d.ts.map +1 -1
  58. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
  59. package/dist/operations/modeling/suggest-predicates.js +35 -11
  60. package/dist/operations/mutation/audit.js +1 -1
  61. package/dist/operations/mutation/contradictions.d.ts +1 -1
  62. package/dist/operations/mutation/contradictions.d.ts.map +1 -1
  63. package/dist/operations/mutation/contradictions.js +23 -18
  64. package/dist/operations/mutation/relationships.d.ts.map +1 -1
  65. package/dist/operations/mutation/relationships.js +8 -0
  66. package/dist/operations/mutation/serialization.d.ts.map +1 -1
  67. package/dist/operations/mutation/serialization.js +6 -0
  68. package/dist/operations/mutation/strict-fact.d.ts.map +1 -1
  69. package/dist/operations/mutation/strict-fact.js +68 -3
  70. package/dist/operations/mutation/upsert.d.ts +3 -1
  71. package/dist/operations/mutation/upsert.d.ts.map +1 -1
  72. package/dist/operations/mutation/upsert.js +51 -12
  73. package/dist/operations/mutation/validate-upsert.d.ts.map +1 -1
  74. package/dist/operations/mutation/validate-upsert.js +18 -2
  75. package/dist/operations/mutation/validation.d.ts.map +1 -1
  76. package/dist/operations/mutation/validation.js +8 -0
  77. package/dist/operations/semantic-advisor/analysis-receipt.d.ts +2 -2
  78. package/dist/operations/semantic-advisor/analysis-receipt.d.ts.map +1 -1
  79. package/dist/operations/semantic-advisor/analysis-receipt.js +30 -16
  80. package/dist/operations/semantic-advisor/analyze-prose.d.ts +1 -1
  81. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
  82. package/dist/operations/semantic-advisor/analyze-prose.js +464 -27
  83. package/dist/operations/semantic-advisor/clauses.d.ts +1 -0
  84. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
  85. package/dist/operations/semantic-advisor/clauses.js +7 -7
  86. package/dist/operations/semantic-advisor/ingestion-boundary.d.ts +18 -0
  87. package/dist/operations/semantic-advisor/ingestion-boundary.d.ts.map +1 -0
  88. package/dist/operations/semantic-advisor/ingestion-boundary.js +167 -0
  89. package/dist/operations/semantic-advisor/observation-plan.d.ts.map +1 -1
  90. package/dist/operations/semantic-advisor/observation-plan.js +15 -3
  91. package/dist/operations/semantic-advisor/shared.d.ts +9 -0
  92. package/dist/operations/semantic-advisor/shared.d.ts.map +1 -1
  93. package/dist/operations/semantic-advisor/shared.js +38 -4
  94. package/dist/operations/semantic-advisor/types.d.ts +66 -1
  95. package/dist/operations/semantic-advisor/types.d.ts.map +1 -1
  96. package/dist/prolog/codec.d.ts.map +1 -1
  97. package/dist/prolog/codec.js +19 -2
  98. package/dist/prolog.d.ts +6 -0
  99. package/dist/prolog.d.ts.map +1 -1
  100. package/dist/prolog.js +247 -63
  101. package/dist/public/diagnostic-usage.d.ts +17 -0
  102. package/dist/public/diagnostic-usage.d.ts.map +1 -0
  103. package/dist/public/diagnostic-usage.js +152 -0
  104. package/dist/public/distribution-parity.d.ts +90 -0
  105. package/dist/public/distribution-parity.d.ts.map +1 -0
  106. package/dist/public/distribution-parity.js +367 -0
  107. package/dist/public/impact/full-kb-quality.d.ts +2 -0
  108. package/dist/public/impact/full-kb-quality.d.ts.map +1 -1
  109. package/dist/public/impact/full-kb-quality.js +53 -1
  110. package/dist/public/impact-diagnostics.d.ts +2 -0
  111. package/dist/public/impact-diagnostics.d.ts.map +1 -1
  112. package/dist/public/impact-diagnostics.js +1 -0
  113. package/dist/public/operations/catalog.d.ts +235 -11
  114. package/dist/public/operations/catalog.d.ts.map +1 -1
  115. package/dist/public/operations/check-executor.d.ts.map +1 -1
  116. package/dist/public/operations/check-executor.js +4 -0
  117. package/dist/public/operations/discovery-executors.d.ts +6 -0
  118. package/dist/public/operations/discovery-executors.d.ts.map +1 -1
  119. package/dist/public/operations/discovery-executors.js +18 -2
  120. package/dist/public/operations/index.d.ts +5 -0
  121. package/dist/public/operations/index.d.ts.map +1 -1
  122. package/dist/public/operations/index.js +5 -0
  123. package/dist/public/operations/legacy-migration-plan.d.ts +113 -0
  124. package/dist/public/operations/legacy-migration-plan.d.ts.map +1 -0
  125. package/dist/public/operations/legacy-migration-plan.js +409 -0
  126. package/dist/public/operations/node-ports.d.ts.map +1 -1
  127. package/dist/public/operations/node-ports.js +90 -0
  128. package/dist/public/operations/repair-plan.d.ts +184 -0
  129. package/dist/public/operations/repair-plan.d.ts.map +1 -0
  130. package/dist/public/operations/repair-plan.js +397 -0
  131. package/dist/public/operations/runtime-types.d.ts +7 -0
  132. package/dist/public/operations/runtime-types.d.ts.map +1 -1
  133. package/dist/public/operations/specs/check.d.ts +3 -3
  134. package/dist/public/operations/specs/check.d.ts.map +1 -1
  135. package/dist/public/operations/specs/check.js +5 -2
  136. package/dist/public/operations/specs/discovery.d.ts +1 -1
  137. package/dist/public/operations/specs/discovery.js +1 -1
  138. package/dist/public/operations/specs/modeling.d.ts +35 -1
  139. package/dist/public/operations/specs/modeling.d.ts.map +1 -1
  140. package/dist/public/operations/specs/modeling.js +32 -1
  141. package/dist/public/operations/specs/mutation-schemas.d.ts +133 -3
  142. package/dist/public/operations/specs/mutation-schemas.d.ts.map +1 -1
  143. package/dist/public/operations/specs/mutation-schemas.js +67 -1
  144. package/dist/public/operations/specs/reporting.d.ts +42 -1
  145. package/dist/public/operations/specs/reporting.d.ts.map +1 -1
  146. package/dist/public/operations/specs/reporting.js +70 -6
  147. package/dist/public/operations/specs/semantic.d.ts +30 -2
  148. package/dist/public/operations/specs/semantic.d.ts.map +1 -1
  149. package/dist/public/operations/specs/semantic.js +35 -3
  150. package/dist/public/operations/specs/upsert.d.ts +133 -3
  151. package/dist/public/operations/specs/upsert.d.ts.map +1 -1
  152. package/dist/public/operations/workspace-snapshot.d.ts +10 -0
  153. package/dist/public/operations/workspace-snapshot.d.ts.map +1 -0
  154. package/dist/public/operations/workspace-snapshot.js +20 -0
  155. package/dist/public/schemas/entity.d.ts.map +1 -1
  156. package/dist/public/schemas/entity.js +332 -0
  157. package/dist/public/schemas/relationship.d.ts.map +1 -1
  158. package/dist/public/schemas/relationship.js +1 -0
  159. package/dist/public/skills/kibi-traceability/SKILL.md +7 -1
  160. package/dist/public/skills/kibi-usage/SKILL.md +44 -12
  161. package/dist/public/skills/kibi-usage/resources/fact-lanes.md +12 -2
  162. package/dist/public/skills/kibi-usage/resources/logic-ir.md +43 -0
  163. package/dist/public/skills/kibi-usage/resources/operation-access.md +19 -19
  164. package/dist/public/skills/kibi-usage/resources/ui-requirements.md +96 -0
  165. package/dist/public/skills/kibi-usage/resources/workflows.md +40 -8
  166. package/dist/public/symbol-granularity.d.ts +9 -0
  167. package/dist/public/symbol-granularity.d.ts.map +1 -1
  168. package/dist/public/symbol-granularity.js +16 -0
  169. package/dist/public/telemetry-acceptance.d.ts +89 -0
  170. package/dist/public/telemetry-acceptance.d.ts.map +1 -0
  171. package/dist/public/telemetry-acceptance.js +597 -0
  172. package/dist/public/telemetry-remediation.d.ts +33 -0
  173. package/dist/public/telemetry-remediation.d.ts.map +1 -0
  174. package/dist/public/telemetry-remediation.js +257 -0
  175. package/dist/public/verification-receipt.d.ts +75 -0
  176. package/dist/public/verification-receipt.d.ts.map +1 -0
  177. package/dist/public/verification-receipt.js +129 -0
  178. package/dist/schemas/entity.schema.json +401 -4
  179. package/dist/traceability/staged-diagnostics.d.ts +1 -1
  180. package/dist/traceability/staged-diagnostics.d.ts.map +1 -1
  181. package/dist/traceability/staged-diagnostics.js +17 -10
  182. package/dist/traceability/staged-impact-contract.js +1 -1
  183. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  184. package/dist/traceability/staged-symbols-manifest.js +28 -10
  185. package/dist/traceability/temp-kb.d.ts.map +1 -1
  186. package/dist/traceability/temp-kb.js +49 -3
  187. package/dist/types/entities.d.ts +1 -0
  188. package/dist/types/entities.d.ts.map +1 -1
  189. package/dist/types/relationships.d.ts +1 -1
  190. package/dist/types/relationships.d.ts.map +1 -1
  191. package/dist/utils/rule-registry.d.ts +2 -0
  192. package/dist/utils/rule-registry.d.ts.map +1 -1
  193. package/dist/utils/rule-registry.js +18 -0
  194. package/dist/utils/schema-version.d.ts +1 -1
  195. package/dist/utils/schema-version.js +1 -1
  196. package/package.json +34 -2
  197. package/src/public/diagnostic-usage.ts +206 -0
  198. package/src/public/distribution-parity.ts +580 -0
  199. package/src/public/impact/full-kb-quality.ts +74 -1
  200. package/src/public/impact-diagnostics.ts +16 -0
  201. package/src/public/operations/check-executor.ts +4 -0
  202. package/src/public/operations/discovery-executors.ts +24 -2
  203. package/src/public/operations/index.ts +5 -0
  204. package/src/public/operations/legacy-migration-plan.ts +688 -0
  205. package/src/public/operations/node-ports.ts +109 -0
  206. package/src/public/operations/repair-plan.ts +562 -0
  207. package/src/public/operations/runtime-types.ts +8 -0
  208. package/src/public/operations/specs/check.ts +5 -2
  209. package/src/public/operations/specs/discovery.ts +1 -1
  210. package/src/public/operations/specs/modeling.ts +39 -1
  211. package/src/public/operations/specs/mutation-schemas.ts +77 -1
  212. package/src/public/operations/specs/reporting.ts +91 -6
  213. package/src/public/operations/specs/semantic.ts +42 -3
  214. package/src/public/operations/workspace-snapshot.ts +28 -0
  215. package/src/public/schemas/entity.ts +340 -1
  216. package/src/public/schemas/relationship.ts +1 -0
  217. package/src/public/skills/kibi-traceability/SKILL.md +7 -1
  218. package/src/public/skills/kibi-usage/SKILL.md +44 -12
  219. package/src/public/skills/kibi-usage/resources/fact-lanes.md +12 -2
  220. package/src/public/skills/kibi-usage/resources/logic-ir.md +43 -0
  221. package/src/public/skills/kibi-usage/resources/operation-access.md +19 -19
  222. package/src/public/skills/kibi-usage/resources/ui-requirements.md +96 -0
  223. package/src/public/skills/kibi-usage/resources/workflows.md +40 -8
  224. package/src/public/symbol-granularity.ts +25 -0
  225. package/src/public/telemetry-acceptance.ts +859 -0
  226. package/src/public/telemetry-remediation.ts +462 -0
  227. package/src/public/verification-receipt.ts +170 -0
  228. package/src/schemas/entity.schema.json +401 -4
  229. package/src/schemas/relationship.schema.json +1 -0
@@ -2,6 +2,209 @@
2
2
  "$id": "entity.schema.json",
3
3
  "title": "Entity",
4
4
  "type": "object",
5
+ "$defs": {
6
+ "logicTerm": {
7
+ "oneOf": [
8
+ {
9
+ "type": "object",
10
+ "required": ["kind", "name", "type"],
11
+ "properties": {
12
+ "kind": { "const": "var" },
13
+ "name": { "type": "string", "pattern": "^[A-Z][A-Za-z0-9_]*$" },
14
+ "type": { "type": "string", "pattern": "^[a-z][a-z0-9_:.\\/-]*$" }
15
+ },
16
+ "additionalProperties": false
17
+ },
18
+ {
19
+ "type": "object",
20
+ "required": ["kind", "value"],
21
+ "properties": {
22
+ "kind": { "const": "const" },
23
+ "value": { "type": "string", "minLength": 1 },
24
+ "type": { "type": "string", "pattern": "^[a-z][a-z0-9_:.\\/-]*$" }
25
+ },
26
+ "additionalProperties": false
27
+ },
28
+ {
29
+ "type": "object",
30
+ "required": ["kind", "value"],
31
+ "properties": {
32
+ "kind": { "const": "number" },
33
+ "value": { "type": "number" },
34
+ "unit": { "type": "string", "pattern": "^[a-z][a-z0-9_:.\\/-]*$" }
35
+ },
36
+ "additionalProperties": false
37
+ },
38
+ {
39
+ "type": "object",
40
+ "required": ["kind", "value", "unit"],
41
+ "properties": {
42
+ "kind": { "const": "duration" },
43
+ "value": { "type": "number", "minimum": 0 },
44
+ "unit": {
45
+ "type": "string",
46
+ "enum": ["ms", "s", "m", "h", "d", "w"]
47
+ }
48
+ },
49
+ "additionalProperties": false
50
+ },
51
+ {
52
+ "type": "object",
53
+ "required": ["kind", "value"],
54
+ "properties": {
55
+ "kind": { "const": "timestamp" },
56
+ "value": { "type": "string" }
57
+ },
58
+ "additionalProperties": false
59
+ },
60
+ {
61
+ "type": "object",
62
+ "required": ["kind", "start", "end"],
63
+ "properties": {
64
+ "kind": { "const": "interval" },
65
+ "start": { "type": "string" },
66
+ "end": { "type": "string" }
67
+ },
68
+ "additionalProperties": false
69
+ }
70
+ ]
71
+ },
72
+ "logicAtom": {
73
+ "type": "object",
74
+ "required": ["kind", "name", "args"],
75
+ "properties": {
76
+ "kind": { "const": "atom" },
77
+ "namespace": { "type": "string", "pattern": "^[a-z][a-z0-9_:.\\/-]*$" },
78
+ "name": { "type": "string", "pattern": "^[a-z][a-z0-9_:.\\/-]*$" },
79
+ "args": {
80
+ "type": "array",
81
+ "maxItems": 8,
82
+ "items": { "$ref": "#/$defs/logicTerm" }
83
+ },
84
+ "polarity": { "enum": ["positive", "negative"] },
85
+ "closedWorld": { "type": "boolean" }
86
+ },
87
+ "additionalProperties": false
88
+ },
89
+ "logicExpression": {
90
+ "oneOf": [
91
+ { "$ref": "#/$defs/logicAtom" },
92
+ {
93
+ "type": "object",
94
+ "required": ["kind", "items"],
95
+ "properties": {
96
+ "kind": { "enum": ["all", "any"] },
97
+ "items": {
98
+ "type": "array",
99
+ "minItems": 1,
100
+ "maxItems": 32,
101
+ "items": { "$ref": "#/$defs/logicExpression" }
102
+ }
103
+ },
104
+ "additionalProperties": false
105
+ },
106
+ {
107
+ "type": "object",
108
+ "required": ["kind", "item"],
109
+ "properties": {
110
+ "kind": { "const": "not" },
111
+ "item": { "$ref": "#/$defs/logicAtom" }
112
+ },
113
+ "additionalProperties": false
114
+ },
115
+ {
116
+ "type": "object",
117
+ "required": ["kind", "operator", "left", "right"],
118
+ "properties": {
119
+ "kind": { "const": "compare" },
120
+ "operator": { "enum": ["eq", "neq", "lt", "lte", "gt", "gte"] },
121
+ "left": { "$ref": "#/$defs/logicTerm" },
122
+ "right": { "$ref": "#/$defs/logicTerm" }
123
+ },
124
+ "additionalProperties": false
125
+ },
126
+ {
127
+ "type": "object",
128
+ "required": ["kind", "atom", "operator", "value"],
129
+ "properties": {
130
+ "kind": { "const": "count" },
131
+ "atom": { "$ref": "#/$defs/logicAtom" },
132
+ "operator": { "enum": ["eq", "neq", "lt", "lte", "gt", "gte"] },
133
+ "value": { "type": "integer", "minimum": 0 }
134
+ },
135
+ "additionalProperties": false
136
+ },
137
+ {
138
+ "type": "object",
139
+ "required": ["kind", "relation", "left", "right"],
140
+ "properties": {
141
+ "kind": { "const": "temporal" },
142
+ "relation": {
143
+ "enum": [
144
+ "before",
145
+ "after",
146
+ "during",
147
+ "overlaps",
148
+ "starts",
149
+ "finishes"
150
+ ]
151
+ },
152
+ "left": { "$ref": "#/$defs/logicTerm" },
153
+ "right": { "$ref": "#/$defs/logicTerm" }
154
+ },
155
+ "additionalProperties": false
156
+ }
157
+ ]
158
+ },
159
+ "logicRule": {
160
+ "type": "object",
161
+ "required": ["version", "kind", "modality"],
162
+ "properties": {
163
+ "version": { "const": "kibi.logic.v1" },
164
+ "kind": { "enum": ["atom", "rule", "constraint"] },
165
+ "modality": {
166
+ "enum": ["assert", "deny", "oblige", "permit", "forbid"]
167
+ },
168
+ "head": { "$ref": "#/$defs/logicAtom" },
169
+ "body": { "$ref": "#/$defs/logicExpression" },
170
+ "variables": {
171
+ "type": "array",
172
+ "maxItems": 32,
173
+ "items": {
174
+ "type": "object",
175
+ "required": ["name", "type"],
176
+ "properties": {
177
+ "name": { "type": "string", "pattern": "^[A-Z][A-Za-z0-9_]*$" },
178
+ "type": {
179
+ "type": "string",
180
+ "pattern": "^[a-z][a-z0-9_:.\\/-]*$"
181
+ },
182
+ "quantifier": { "enum": ["forall", "exists"] }
183
+ },
184
+ "additionalProperties": false
185
+ }
186
+ },
187
+ "exceptions": {
188
+ "type": "array",
189
+ "maxItems": 16,
190
+ "items": { "$ref": "#/$defs/logicExpression" }
191
+ },
192
+ "scope": {
193
+ "type": "object",
194
+ "properties": {
195
+ "authority": { "type": "string" },
196
+ "name": { "type": "string" },
197
+ "tags": { "type": "array", "items": { "type": "string" } }
198
+ },
199
+ "additionalProperties": false
200
+ },
201
+ "validFrom": { "type": "string" },
202
+ "validTo": { "type": "string" },
203
+ "ruleSchemaId": { "type": "string", "minLength": 1 }
204
+ },
205
+ "additionalProperties": false
206
+ }
207
+ },
5
208
  "properties": {
6
209
  "id": { "type": "string" },
7
210
  "title": { "type": "string" },
@@ -38,12 +241,80 @@
38
241
  "severity": { "type": "string" },
39
242
  "links": { "type": "array", "items": { "type": "string" } },
40
243
  "text_ref": { "type": "string" },
244
+ "semantic_text": {
245
+ "type": "string",
246
+ "description": "Requirement-only authored prose whose exact UTF-8 bytes anchor the semantic inventory without replacing text_ref evidence."
247
+ },
41
248
  "logic_claims": {
42
249
  "type": "array",
43
250
  "minItems": 1,
44
251
  "uniqueItems": true,
45
252
  "items": { "type": "string", "pattern": "^CLAIM-[A-F0-9]{16}$" }
46
253
  },
254
+ "semantic_clauses": {
255
+ "type": "array",
256
+ "minItems": 1,
257
+ "items": { "type": "string", "minLength": 1 }
258
+ },
259
+ "semantic_inventory_version": {
260
+ "type": "string",
261
+ "const": "kibi.semantic-inventory.v1"
262
+ },
263
+ "semantic_source_field": {
264
+ "type": "string",
265
+ "enum": ["semantic_text", "text_ref", "title"]
266
+ },
267
+ "semantic_source_hash": {
268
+ "type": "string",
269
+ "pattern": "^[a-f0-9]{64}$"
270
+ },
271
+ "semantic_inventory": {
272
+ "type": "array",
273
+ "items": {
274
+ "type": "object",
275
+ "required": ["claim_key", "claim_text", "role", "status", "span"],
276
+ "properties": {
277
+ "claim_key": { "type": "string", "pattern": "^CLAIM-[A-F0-9]{16}$" },
278
+ "claim_text": { "type": "string", "minLength": 1 },
279
+ "role": {
280
+ "type": "string",
281
+ "enum": [
282
+ "normative",
283
+ "definition",
284
+ "descriptive",
285
+ "condition",
286
+ "exception",
287
+ "rationale",
288
+ "example",
289
+ "subjective"
290
+ ]
291
+ },
292
+ "status": {
293
+ "type": "string",
294
+ "enum": [
295
+ "modeled",
296
+ "ambiguous",
297
+ "ontology_gap",
298
+ "nonlogical",
299
+ "missing"
300
+ ]
301
+ },
302
+ "span": {
303
+ "type": "object",
304
+ "required": ["start", "end"],
305
+ "properties": {
306
+ "start": { "type": "integer", "minimum": 0 },
307
+ "end": { "type": "integer", "minimum": 0 }
308
+ },
309
+ "additionalProperties": false
310
+ },
311
+ "semantic_key": { "type": "string" },
312
+ "payload_hash": { "type": "string" },
313
+ "reason": { "type": "string" }
314
+ },
315
+ "additionalProperties": false
316
+ }
317
+ },
47
318
  "sourceFile": { "type": "string" },
48
319
  "granularity_reason": {
49
320
  "type": "string",
@@ -73,6 +344,63 @@
73
344
  "type": "string",
74
345
  "enum": ["internal", "consumer"]
75
346
  },
347
+ "verification_receipts": {
348
+ "type": "array",
349
+ "maxItems": 50,
350
+ "items": {
351
+ "type": "object",
352
+ "required": [
353
+ "version",
354
+ "receipt_id",
355
+ "test_id",
356
+ "runner",
357
+ "command",
358
+ "scope",
359
+ "outcome",
360
+ "code_snapshot",
361
+ "environment_hash",
362
+ "started_at",
363
+ "finished_at",
364
+ "artifact_digest"
365
+ ],
366
+ "properties": {
367
+ "version": {
368
+ "type": "string",
369
+ "const": "kibi.verification-receipt.v1"
370
+ },
371
+ "receipt_id": {
372
+ "type": "string",
373
+ "pattern": "^VR-[A-Za-z0-9][A-Za-z0-9._:-]{7,127}$"
374
+ },
375
+ "test_id": { "type": "string", "minLength": 1 },
376
+ "runner": { "type": "string", "minLength": 1 },
377
+ "command": { "type": "string", "minLength": 1 },
378
+ "scope": {
379
+ "type": "string",
380
+ "enum": ["unit", "integration", "end_to_end"]
381
+ },
382
+ "outcome": {
383
+ "type": "string",
384
+ "enum": ["passed", "failed", "errored", "cancelled", "skipped"]
385
+ },
386
+ "code_snapshot": {
387
+ "type": "string",
388
+ "pattern": "^[a-f0-9]{64}$"
389
+ },
390
+ "environment_hash": {
391
+ "type": "string",
392
+ "pattern": "^[a-f0-9]{64}$"
393
+ },
394
+ "started_at": { "type": "string", "minLength": 1 },
395
+ "finished_at": { "type": "string", "minLength": 1 },
396
+ "artifact_digest": {
397
+ "type": "string",
398
+ "pattern": "^[a-f0-9]{64}$"
399
+ }
400
+ },
401
+ "additionalProperties": false
402
+ }
403
+ },
76
404
  "type": {
77
405
  "type": "string",
78
406
  "enum": [
@@ -94,7 +422,9 @@
94
422
  "observation",
95
423
  "meta",
96
424
  "predicate_schema",
97
- "predicate"
425
+ "predicate",
426
+ "rule_schema",
427
+ "rule"
98
428
  ]
99
429
  },
100
430
  "subject_key": { "type": "string" },
@@ -134,7 +464,14 @@
134
464
  },
135
465
  "aliases": { "type": "array", "items": { "type": "string" } },
136
466
  "examples": { "type": "array", "items": { "type": "string" } },
137
- "predicate_args": { "type": "array", "items": { "type": "string" } }
467
+ "predicate_args": { "type": "array", "items": { "type": "string" } },
468
+ "rule_ir": { "$ref": "#/$defs/logicRule" },
469
+ "rule_hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
470
+ "rule_schema_id": { "type": "string", "minLength": 1 },
471
+ "rule_name": { "type": "string", "minLength": 1 },
472
+ "semantic_key": { "type": "string", "pattern": "^SEM-[A-F0-9]{24}$" },
473
+ "claim_span_start": { "type": "integer", "minimum": 0 },
474
+ "claim_span_end": { "type": "integer", "minimum": 0 }
138
475
  },
139
476
  "required": [
140
477
  "id",
@@ -168,11 +505,46 @@
168
505
  "not": {
169
506
  "anyOf": [
170
507
  { "required": ["verification_scope"] },
171
- { "required": ["verification_perspective"] }
508
+ { "required": ["verification_perspective"] },
509
+ { "required": ["verification_receipts"] }
172
510
  ]
173
511
  }
174
512
  }
175
513
  },
514
+ {
515
+ "if": { "required": ["verification_receipts"] },
516
+ "then": { "required": ["verification_scope"] }
517
+ },
518
+ {
519
+ "if": {
520
+ "properties": {
521
+ "type": { "const": "fact" },
522
+ "fact_kind": { "const": "rule_schema" }
523
+ },
524
+ "required": ["type", "fact_kind"]
525
+ },
526
+ "then": {
527
+ "required": ["rule_name", "argument_names", "argument_types"]
528
+ }
529
+ },
530
+ {
531
+ "if": {
532
+ "properties": {
533
+ "type": { "const": "fact" },
534
+ "fact_kind": { "const": "rule" }
535
+ },
536
+ "required": ["type", "fact_kind"]
537
+ },
538
+ "then": {
539
+ "required": [
540
+ "rule_ir",
541
+ "rule_hash",
542
+ "rule_schema_id",
543
+ "rule_name",
544
+ "semantic_key"
545
+ ]
546
+ }
547
+ },
176
548
  {
177
549
  "if": {
178
550
  "properties": { "type": { "const": "fact" } }
@@ -207,7 +579,32 @@
207
579
  { "required": ["argument_descriptions"] },
208
580
  { "required": ["aliases"] },
209
581
  { "required": ["examples"] },
210
- { "required": ["predicate_args"] }
582
+ { "required": ["predicate_args"] },
583
+ { "required": ["rule_ir"] },
584
+ { "required": ["rule_hash"] },
585
+ { "required": ["rule_schema_id"] },
586
+ { "required": ["rule_name"] },
587
+ { "required": ["semantic_key"] },
588
+ { "required": ["claim_span_start"] },
589
+ { "required": ["claim_span_end"] }
590
+ ]
591
+ }
592
+ }
593
+ },
594
+ {
595
+ "if": {
596
+ "properties": { "type": { "const": "req" } }
597
+ },
598
+ "then": {},
599
+ "else": {
600
+ "not": {
601
+ "anyOf": [
602
+ { "required": ["semantic_inventory"] },
603
+ { "required": ["semantic_clauses"] },
604
+ { "required": ["semantic_text"] },
605
+ { "required": ["semantic_inventory_version"] },
606
+ { "required": ["semantic_source_field"] },
607
+ { "required": ["semantic_source_hash"] }
211
608
  ]
212
609
  }
213
610
  }
@@ -17,6 +17,7 @@
17
17
  "constrains",
18
18
  "requires_property",
19
19
  "requires_predicate",
20
+ "requires_rule",
20
21
  "guards",
21
22
  "publishes",
22
23
  "consumes",