kibi-cli 2.2.0 → 2.3.0

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 (183) hide show
  1. package/dist/cli-operation-loader.d.ts.map +1 -1
  2. package/dist/cli-operation-loader.js +3 -0
  3. package/dist/cli-operation-metadata.d.ts +4 -0
  4. package/dist/cli-operation-metadata.d.ts.map +1 -1
  5. package/dist/cli-operation-metadata.js +5 -0
  6. package/dist/cli-register-reporting.d.ts.map +1 -1
  7. package/dist/cli-register-reporting.js +4 -0
  8. package/dist/commands/check-diff.d.ts +5 -0
  9. package/dist/commands/check-diff.d.ts.map +1 -0
  10. package/dist/commands/check-diff.js +62 -0
  11. package/dist/commands/check-generated.d.ts.map +1 -1
  12. package/dist/commands/check-generated.js +41 -18
  13. package/dist/commands/check.d.ts.map +1 -1
  14. package/dist/commands/check.js +210 -73
  15. package/dist/commands/doctor.d.ts.map +1 -1
  16. package/dist/commands/doctor.js +63 -29
  17. package/dist/commands/github-init.d.ts.map +1 -1
  18. package/dist/commands/github-init.js +9 -2
  19. package/dist/commands/sync/manifest.d.ts.map +1 -1
  20. package/dist/commands/sync/manifest.js +3 -1
  21. package/dist/engine.d.ts +15 -1
  22. package/dist/engine.d.ts.map +1 -1
  23. package/dist/engine.js +252 -52
  24. package/dist/extractors/symbols-coordinator.d.ts +7 -0
  25. package/dist/extractors/symbols-coordinator.d.ts.map +1 -1
  26. package/dist/extractors/symbols-coordinator.js +75 -39
  27. package/dist/operations/modeling/predicate-inference-1.js +1 -1
  28. package/dist/operations/mutation/source-authoring.d.ts.map +1 -1
  29. package/dist/operations/mutation/source-authoring.js +175 -53
  30. package/dist/operations/mutation/upsert.d.ts.map +1 -1
  31. package/dist/operations/mutation/upsert.js +5 -7
  32. package/dist/operations/planning/apply-plan.d.ts.map +1 -1
  33. package/dist/operations/planning/apply-plan.js +5 -9
  34. package/dist/operations/proof/ingest-proof.d.ts.map +1 -1
  35. package/dist/operations/proof/ingest-proof.js +1 -0
  36. package/dist/operations/semantic-advisor/analysis-receipt.d.ts.map +1 -1
  37. package/dist/operations/semantic-advisor/analysis-receipt.js +7 -1
  38. package/dist/operations/semantic-advisor/analyze-prose.d.ts.map +1 -1
  39. package/dist/operations/semantic-advisor/analyze-prose.js +26 -4
  40. package/dist/operations/semantic-advisor/clauses.d.ts +1 -0
  41. package/dist/operations/semantic-advisor/clauses.d.ts.map +1 -1
  42. package/dist/operations/semantic-advisor/clauses.js +7 -1
  43. package/dist/performance-trace.d.ts +17 -0
  44. package/dist/performance-trace.d.ts.map +1 -0
  45. package/dist/performance-trace.js +134 -0
  46. package/dist/plugins/approved-source-analyzers.d.ts +13 -0
  47. package/dist/plugins/approved-source-analyzers.d.ts.map +1 -0
  48. package/dist/plugins/approved-source-analyzers.generated.d.ts +71 -0
  49. package/dist/plugins/approved-source-analyzers.generated.d.ts.map +1 -0
  50. package/dist/plugins/approved-source-analyzers.generated.js +77 -0
  51. package/dist/plugins/approved-source-analyzers.js +3 -0
  52. package/dist/plugins/maintenance-source-analysis.d.ts +14 -0
  53. package/dist/plugins/maintenance-source-analysis.d.ts.map +1 -0
  54. package/dist/plugins/maintenance-source-analysis.js +191 -0
  55. package/dist/plugins/registry.d.ts +2 -1
  56. package/dist/plugins/registry.d.ts.map +1 -1
  57. package/dist/plugins/registry.js +6 -1
  58. package/dist/plugins/source-analysis-service.d.ts +36 -1
  59. package/dist/plugins/source-analysis-service.d.ts.map +1 -1
  60. package/dist/plugins/source-analysis-service.js +184 -27
  61. package/dist/plugins/source-change-analysis.d.ts +15 -0
  62. package/dist/plugins/source-change-analysis.d.ts.map +1 -0
  63. package/dist/plugins/source-change-analysis.js +54 -0
  64. package/dist/plugins/source-classification.d.ts +41 -0
  65. package/dist/plugins/source-classification.d.ts.map +1 -0
  66. package/dist/plugins/source-classification.js +490 -0
  67. package/dist/prolog/swipl-resolver.d.ts +88 -0
  68. package/dist/prolog/swipl-resolver.d.ts.map +1 -0
  69. package/dist/prolog/swipl-resolver.js +446 -0
  70. package/dist/prolog.d.ts +15 -1
  71. package/dist/prolog.d.ts.map +1 -1
  72. package/dist/prolog.js +67 -6
  73. package/dist/public/impact/analyzer.d.ts.map +1 -1
  74. package/dist/public/impact/analyzer.js +56 -5
  75. package/dist/public/impact/diagnostics.d.ts.map +1 -1
  76. package/dist/public/impact/diagnostics.js +3 -1
  77. package/dist/public/impact/manifest.d.ts.map +1 -1
  78. package/dist/public/impact/manifest.js +15 -1
  79. package/dist/public/impact/source-changes.d.ts.map +1 -1
  80. package/dist/public/impact/source-changes.js +35 -27
  81. package/dist/public/impact/types.d.ts +2 -0
  82. package/dist/public/impact/types.d.ts.map +1 -1
  83. package/dist/public/operations/catalog.d.ts +44 -0
  84. package/dist/public/operations/catalog.d.ts.map +1 -1
  85. package/dist/public/operations/catalog.js +2 -0
  86. package/dist/public/operations/contracts.d.ts.map +1 -1
  87. package/dist/public/operations/contracts.js +309 -8
  88. package/dist/public/operations/impact-review-preparation.d.ts +14 -0
  89. package/dist/public/operations/impact-review-preparation.d.ts.map +1 -0
  90. package/dist/public/operations/impact-review-preparation.js +379 -0
  91. package/dist/public/operations/index.d.ts +2 -0
  92. package/dist/public/operations/index.d.ts.map +1 -1
  93. package/dist/public/operations/index.js +2 -0
  94. package/dist/public/operations/node-ports.d.ts.map +1 -1
  95. package/dist/public/operations/node-ports.js +1 -35
  96. package/dist/public/operations/proof-receipt-projection.d.ts +5 -0
  97. package/dist/public/operations/proof-receipt-projection.d.ts.map +1 -0
  98. package/dist/public/operations/proof-receipt-projection.js +36 -0
  99. package/dist/public/operations/specs/impact-review-preparation.d.ts +47 -0
  100. package/dist/public/operations/specs/impact-review-preparation.d.ts.map +1 -0
  101. package/dist/public/operations/specs/impact-review-preparation.js +43 -0
  102. package/dist/public/operations/types.d.ts +1 -1
  103. package/dist/public/operations/types.d.ts.map +1 -1
  104. package/dist/public/skills/kibi-usage/resources/operation-access.md +1 -0
  105. package/dist/traceability/analysis-gate.d.ts +39 -0
  106. package/dist/traceability/analysis-gate.d.ts.map +1 -0
  107. package/dist/traceability/analysis-gate.js +51 -0
  108. package/dist/traceability/git-change-snapshot.d.ts +27 -0
  109. package/dist/traceability/git-change-snapshot.d.ts.map +1 -0
  110. package/dist/traceability/git-change-snapshot.js +411 -0
  111. package/dist/traceability/git-staged.d.ts +5 -1
  112. package/dist/traceability/git-staged.d.ts.map +1 -1
  113. package/dist/traceability/git-staged.js +16 -11
  114. package/dist/traceability/impact-evaluator.d.ts +54 -0
  115. package/dist/traceability/impact-evaluator.d.ts.map +1 -0
  116. package/dist/traceability/impact-evaluator.js +270 -0
  117. package/dist/traceability/impact-git-tree.d.ts +12 -0
  118. package/dist/traceability/impact-git-tree.d.ts.map +1 -0
  119. package/dist/traceability/impact-git-tree.js +46 -0
  120. package/dist/traceability/impact-knowledge.d.ts +16 -0
  121. package/dist/traceability/impact-knowledge.d.ts.map +1 -0
  122. package/dist/traceability/impact-knowledge.js +165 -0
  123. package/dist/traceability/impact-policy.d.ts +15 -0
  124. package/dist/traceability/impact-policy.d.ts.map +1 -0
  125. package/dist/traceability/impact-policy.js +48 -0
  126. package/dist/traceability/impact-policy.v1.schema.json +48 -0
  127. package/dist/traceability/impact-pr-diff.d.ts +5 -0
  128. package/dist/traceability/impact-pr-diff.d.ts.map +1 -0
  129. package/dist/traceability/impact-pr-diff.js +83 -0
  130. package/dist/traceability/impact-record-validation.d.ts +9 -0
  131. package/dist/traceability/impact-record-validation.d.ts.map +1 -0
  132. package/dist/traceability/impact-record-validation.js +113 -0
  133. package/dist/traceability/impact-review.d.ts +148 -0
  134. package/dist/traceability/impact-review.d.ts.map +1 -0
  135. package/dist/traceability/impact-review.js +494 -0
  136. package/dist/traceability/impact-review.schema.json +365 -0
  137. package/dist/traceability/impact-side-evidence.d.ts +13 -0
  138. package/dist/traceability/impact-side-evidence.d.ts.map +1 -0
  139. package/dist/traceability/impact-side-evidence.js +240 -0
  140. package/dist/traceability/reviewed-coordinate-refresh.d.ts +10 -0
  141. package/dist/traceability/reviewed-coordinate-refresh.d.ts.map +1 -0
  142. package/dist/traceability/reviewed-coordinate-refresh.js +49 -0
  143. package/dist/traceability/snapshot-knowledge.d.ts +4 -0
  144. package/dist/traceability/snapshot-knowledge.d.ts.map +1 -0
  145. package/dist/traceability/snapshot-knowledge.js +98 -0
  146. package/dist/traceability/staged-file-coverage.d.ts +23 -0
  147. package/dist/traceability/staged-file-coverage.d.ts.map +1 -1
  148. package/dist/traceability/staged-impact-contract.d.ts.map +1 -1
  149. package/dist/traceability/staged-impact-contract.js +2 -16
  150. package/dist/traceability/staged-symbols-manifest.d.ts +4 -0
  151. package/dist/traceability/staged-symbols-manifest.d.ts.map +1 -1
  152. package/dist/traceability/staged-symbols-manifest.js +17 -6
  153. package/dist/traceability/symbol-extract.d.ts +3 -5
  154. package/dist/traceability/symbol-extract.d.ts.map +1 -1
  155. package/dist/traceability/symbol-extract.js +49 -34
  156. package/dist/traceability/temp-kb.d.ts +1 -1
  157. package/dist/traceability/temp-kb.d.ts.map +1 -1
  158. package/dist/traceability/temp-kb.js +49 -13
  159. package/dist/traceability/trusted-pr-event.d.ts +13 -0
  160. package/dist/traceability/trusted-pr-event.d.ts.map +1 -0
  161. package/dist/traceability/trusted-pr-event.js +105 -0
  162. package/dist/utils/canonical-path.d.ts +3 -0
  163. package/dist/utils/canonical-path.d.ts.map +1 -0
  164. package/dist/utils/canonical-path.js +33 -0
  165. package/package.json +14 -5
  166. package/src/public/impact/analyzer.ts +88 -5
  167. package/src/public/impact/diagnostics.ts +7 -5
  168. package/src/public/impact/manifest.ts +14 -1
  169. package/src/public/impact/source-changes.ts +39 -34
  170. package/src/public/impact/types.ts +5 -0
  171. package/src/public/operations/catalog.ts +2 -0
  172. package/src/public/operations/contracts.ts +385 -9
  173. package/src/public/operations/impact-review-preparation.ts +548 -0
  174. package/src/public/operations/index.ts +2 -0
  175. package/src/public/operations/node-ports.ts +1 -39
  176. package/src/public/operations/proof-receipt-projection.ts +39 -0
  177. package/src/public/operations/specs/impact-review-preparation.ts +46 -0
  178. package/src/public/operations/types.ts +1 -0
  179. package/src/public/skills/kibi-usage/resources/operation-access.md +1 -0
  180. package/src/traceability/impact-policy.v1.schema.json +48 -0
  181. package/src/traceability/impact-review.schema.json +365 -0
  182. package/templates/github/kibi-badge.yml +0 -4
  183. package/templates/github/kibi-report.yml +0 -4
@@ -16,6 +16,7 @@ export type OperationName =
16
16
  | "kb_validate_upsert"
17
17
  | "kb_delete"
18
18
  | "kb_check"
19
+ | "kb_prepare_impact_review"
19
20
  | "kb_model_requirement"
20
21
  | "kb_suggest_predicates"
21
22
  | "kb_plan_bootstrap"
@@ -23,6 +23,7 @@ per operation. Effects are authoritative for mutability and adapter annotations.
23
23
  | `kb_upsert` | `upsert` | --input JSON | write | yes | kb-write, workspace-write | peer; capability-selected | kibi.kb_upsert.v1 | yes | unsafe | no | yes |
24
24
  | `kb_delete` | `delete` | --input JSON | write | yes | kb-write, workspace-write | peer; capability-selected | kibi.kb_delete.v1 | yes | unsafe | no | yes |
25
25
  | `kb_check` | `check` | --input JSON or flags | read | yes | kb-read, workspace-read | peer; capability-selected | kibi.kb_check.v1 | no | safe | no | yes |
26
+ | `kb_prepare_impact_review` | `prepare-impact-review` | --input JSON | read | no | workspace-read, kb-read | peer; capability-selected | kibi.kb_prepare_impact_review.v1 | no | safe | no | yes |
26
27
  | `kb_sparql_remote` | `sparql-remote` | --input JSON | read | no | network-read | peer; capability-selected | kibi.kb_sparql_remote.v1 | no | safe | yes | yes |
27
28
  | `kb_compile_intent` | `compile-intent` | --input JSON | read | yes | kb-read, workspace-read | peer; capability-selected | kibi.kb_compile_intent.v1 | no | safe | no | yes |
28
29
  | `kb_apply_plan` | `apply-plan` | --input JSON | write | yes | kb-read, kb-write, workspace-read, workspace-write | peer; capability-selected | kibi.kb_apply_plan.v1 | yes | unsafe | no | yes |
@@ -0,0 +1,48 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:kibi:impact-policy:v1",
4
+ "title": "Kibi trusted base-tree impact policy",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "contractVersion",
9
+ "id",
10
+ "version",
11
+ "allowUnsupportedReview",
12
+ "allowedPartial",
13
+ "notApplicablePaths"
14
+ ],
15
+ "properties": {
16
+ "contractVersion": { "const": "kibi.impact-policy.v1" },
17
+ "id": { "type": "string", "minLength": 1 },
18
+ "version": { "type": "string", "minLength": 1 },
19
+ "allowUnsupportedReview": { "type": "boolean" },
20
+ "allowedPartial": {
21
+ "type": "array",
22
+ "items": {
23
+ "type": "object",
24
+ "additionalProperties": false,
25
+ "required": [
26
+ "providerId",
27
+ "providerFingerprint",
28
+ "diagnosticCode",
29
+ "limitationClass"
30
+ ],
31
+ "properties": {
32
+ "providerId": { "type": "string", "minLength": 1 },
33
+ "providerFingerprint": { "$ref": "#/$defs/sha256" },
34
+ "diagnosticCode": { "type": "string", "minLength": 1 },
35
+ "limitationClass": { "type": "string", "minLength": 1 }
36
+ }
37
+ }
38
+ },
39
+ "notApplicablePaths": {
40
+ "type": "array",
41
+ "uniqueItems": true,
42
+ "items": { "type": "string", "minLength": 1, "pattern": "^[^/].*$" }
43
+ }
44
+ },
45
+ "$defs": {
46
+ "sha256": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" }
47
+ }
48
+ }
@@ -0,0 +1,365 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "urn:kibi:impact-review:v1",
4
+ "title": "Kibi content-bound local impact review record",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "contractVersion",
9
+ "policy",
10
+ "evaluator",
11
+ "scope",
12
+ "reviewer",
13
+ "reviewedAt",
14
+ "files"
15
+ ],
16
+ "properties": {
17
+ "contractVersion": { "const": "kibi.impact-review.v1" },
18
+ "policy": { "$ref": "#/$defs/policy" },
19
+ "evaluator": { "$ref": "#/$defs/evaluator" },
20
+ "scope": { "$ref": "#/$defs/scope" },
21
+ "reviewer": { "$ref": "#/$defs/reviewer" },
22
+ "reviewedAt": {
23
+ "type": "string",
24
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?(Z|[+-][0-9]{2}:[0-9]{2})$"
25
+ },
26
+ "files": { "type": "array", "items": { "$ref": "#/$defs/file" } }
27
+ },
28
+ "$defs": {
29
+ "sha256": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
30
+ "policy": {
31
+ "type": "object",
32
+ "additionalProperties": false,
33
+ "required": ["id", "version", "fingerprint"],
34
+ "properties": {
35
+ "id": { "type": "string", "minLength": 1 },
36
+ "version": { "type": "string", "minLength": 1 },
37
+ "fingerprint": { "$ref": "#/$defs/sha256" }
38
+ }
39
+ },
40
+ "evaluator": {
41
+ "type": "object",
42
+ "additionalProperties": false,
43
+ "required": ["contractVersion", "fingerprint"],
44
+ "properties": {
45
+ "contractVersion": { "const": "kibi.impact-evaluator.v1" },
46
+ "fingerprint": { "$ref": "#/$defs/sha256" }
47
+ }
48
+ },
49
+ "scope": {
50
+ "type": "object",
51
+ "additionalProperties": false,
52
+ "required": [
53
+ "fingerprint",
54
+ "knowledgeFingerprint",
55
+ "providerSetFingerprint"
56
+ ],
57
+ "properties": {
58
+ "fingerprint": { "$ref": "#/$defs/sha256" },
59
+ "knowledgeFingerprint": { "$ref": "#/$defs/sha256" },
60
+ "providerSetFingerprint": { "$ref": "#/$defs/sha256" }
61
+ }
62
+ },
63
+ "reviewer": {
64
+ "type": "object",
65
+ "additionalProperties": false,
66
+ "required": ["id", "source"],
67
+ "properties": {
68
+ "id": { "type": "string", "minLength": 1 },
69
+ "source": { "const": "self-claimed-local" }
70
+ }
71
+ },
72
+ "range": {
73
+ "type": "object",
74
+ "additionalProperties": false,
75
+ "required": ["start", "end"],
76
+ "properties": {
77
+ "start": { "type": "integer", "minimum": 0 },
78
+ "end": { "type": "integer", "minimum": 0 }
79
+ }
80
+ },
81
+ "uncoveredRange": {
82
+ "type": "object",
83
+ "additionalProperties": false,
84
+ "required": [
85
+ "startLine",
86
+ "startColumn",
87
+ "endLine",
88
+ "endColumn",
89
+ "reason"
90
+ ],
91
+ "properties": {
92
+ "startLine": { "type": "integer", "minimum": 1 },
93
+ "startColumn": { "type": "integer", "minimum": 0 },
94
+ "endLine": { "type": "integer", "minimum": 1 },
95
+ "endColumn": { "type": "integer", "minimum": 0 },
96
+ "reason": { "type": "string", "minLength": 1 }
97
+ }
98
+ },
99
+ "analysis": {
100
+ "type": "object",
101
+ "additionalProperties": false,
102
+ "required": [
103
+ "contractVersion",
104
+ "status",
105
+ "language",
106
+ "sourceFile",
107
+ "providerId",
108
+ "providerStamp",
109
+ "providerFingerprint",
110
+ "inputFingerprint",
111
+ "resultFingerprint",
112
+ "diagnosticCodes",
113
+ "uncoveredRanges"
114
+ ],
115
+ "properties": {
116
+ "contractVersion": { "const": "kibi.symbol-extractor.v2" },
117
+ "status": { "enum": ["ok", "partial", "unsupported", "failed"] },
118
+ "language": { "type": "string", "minLength": 1 },
119
+ "sourceFile": { "type": "string", "minLength": 1 },
120
+ "providerId": { "type": ["string", "null"] },
121
+ "providerStamp": {},
122
+ "providerFingerprint": {
123
+ "oneOf": [{ "$ref": "#/$defs/sha256" }, { "type": "null" }]
124
+ },
125
+ "inputFingerprint": { "$ref": "#/$defs/sha256" },
126
+ "resultFingerprint": { "$ref": "#/$defs/sha256" },
127
+ "diagnosticCodes": {
128
+ "type": "array",
129
+ "items": { "type": "string", "minLength": 1 }
130
+ },
131
+ "uncoveredRanges": {
132
+ "type": "array",
133
+ "items": { "$ref": "#/$defs/uncoveredRange" }
134
+ }
135
+ }
136
+ },
137
+ "side": {
138
+ "type": "object",
139
+ "additionalProperties": false,
140
+ "required": ["mode", "objectId", "byteFingerprint", "kind", "analysis"],
141
+ "properties": {
142
+ "mode": { "enum": ["100644", "100755", "120000", "160000"] },
143
+ "objectId": {
144
+ "oneOf": [
145
+ { "type": "string", "pattern": "^[0-9a-f]{40,64}$" },
146
+ { "type": "null" }
147
+ ]
148
+ },
149
+ "byteFingerprint": { "$ref": "#/$defs/sha256" },
150
+ "kind": { "enum": ["regular", "symlink", "gitlink"] },
151
+ "contentProjection": { "const": "proof_receipts_stripped" },
152
+ "analysis": {
153
+ "oneOf": [{ "$ref": "#/$defs/analysis" }, { "type": "null" }]
154
+ }
155
+ },
156
+ "allOf": [
157
+ {
158
+ "if": {
159
+ "required": ["contentProjection"],
160
+ "properties": {
161
+ "contentProjection": { "const": "proof_receipts_stripped" }
162
+ }
163
+ },
164
+ "then": { "properties": { "objectId": { "type": "null" } } }
165
+ },
166
+ {
167
+ "if": { "not": { "required": ["contentProjection"] } },
168
+ "then": {
169
+ "properties": {
170
+ "objectId": {
171
+ "type": "string",
172
+ "pattern": "^[0-9a-f]{40,64}$"
173
+ }
174
+ }
175
+ }
176
+ }
177
+ ]
178
+ },
179
+ "partialReview": {
180
+ "type": "object",
181
+ "additionalProperties": false,
182
+ "required": ["kind", "side", "limitationClass", "ranges", "rationale"],
183
+ "properties": {
184
+ "kind": { "const": "partial_review" },
185
+ "side": { "enum": ["before", "after"] },
186
+ "limitationClass": { "type": "string", "minLength": 1 },
187
+ "ranges": {
188
+ "type": "array",
189
+ "minItems": 1,
190
+ "items": { "$ref": "#/$defs/uncoveredRange" }
191
+ },
192
+ "rationale": { "type": "string", "minLength": 1 }
193
+ }
194
+ },
195
+ "unsupportedReview": {
196
+ "type": "object",
197
+ "additionalProperties": false,
198
+ "required": ["kind", "side", "wholeFile", "rationale"],
199
+ "properties": {
200
+ "kind": { "const": "unsupported_review" },
201
+ "side": { "enum": ["before", "after"] },
202
+ "wholeFile": { "const": true },
203
+ "rationale": { "type": "string", "minLength": 1 }
204
+ }
205
+ },
206
+ "updatedEntity": {
207
+ "type": "object",
208
+ "additionalProperties": false,
209
+ "required": [
210
+ "entityId",
211
+ "artifactPath",
212
+ "beforeFingerprint",
213
+ "afterFingerprint"
214
+ ],
215
+ "properties": {
216
+ "entityId": { "type": "string", "minLength": 1 },
217
+ "artifactPath": { "type": "string", "minLength": 1 },
218
+ "beforeFingerprint": {
219
+ "oneOf": [{ "$ref": "#/$defs/sha256" }, { "type": "null" }]
220
+ },
221
+ "afterFingerprint": { "$ref": "#/$defs/sha256" }
222
+ }
223
+ },
224
+ "impactDecision": {
225
+ "type": "object",
226
+ "additionalProperties": false,
227
+ "required": ["kind", "requirementIds", "knowledge"],
228
+ "properties": {
229
+ "kind": { "const": "impact" },
230
+ "requirementIds": {
231
+ "type": "array",
232
+ "minItems": 1,
233
+ "uniqueItems": true,
234
+ "items": { "type": "string", "minLength": 1 }
235
+ },
236
+ "knowledge": {
237
+ "oneOf": [
238
+ {
239
+ "type": "object",
240
+ "additionalProperties": false,
241
+ "required": ["state", "rationale"],
242
+ "properties": {
243
+ "state": { "const": "still_current" },
244
+ "rationale": { "type": "string", "minLength": 1 }
245
+ }
246
+ },
247
+ {
248
+ "type": "object",
249
+ "additionalProperties": false,
250
+ "required": ["state", "entities"],
251
+ "properties": {
252
+ "state": { "const": "updated" },
253
+ "entities": {
254
+ "type": "array",
255
+ "minItems": 1,
256
+ "uniqueItems": true,
257
+ "items": { "$ref": "#/$defs/updatedEntity" }
258
+ },
259
+ "stillCurrent": {
260
+ "type": "array",
261
+ "uniqueItems": true,
262
+ "items": {
263
+ "type": "object",
264
+ "additionalProperties": false,
265
+ "required": ["requirementId", "rationale"],
266
+ "properties": {
267
+ "requirementId": {
268
+ "type": "string",
269
+ "minLength": 1,
270
+ "pattern": "\\S"
271
+ },
272
+ "rationale": {
273
+ "type": "string",
274
+ "minLength": 1,
275
+ "pattern": "\\S"
276
+ }
277
+ }
278
+ }
279
+ }
280
+ }
281
+ }
282
+ ]
283
+ }
284
+ }
285
+ },
286
+ "decision": {
287
+ "oneOf": [
288
+ { "$ref": "#/$defs/impactDecision" },
289
+ {
290
+ "type": "object",
291
+ "additionalProperties": false,
292
+ "required": ["kind", "reason", "rationale"],
293
+ "properties": {
294
+ "kind": { "const": "no_impact" },
295
+ "reason": { "type": "string", "minLength": 1 },
296
+ "rationale": { "type": "string", "minLength": 1 }
297
+ }
298
+ },
299
+ {
300
+ "type": "object",
301
+ "additionalProperties": false,
302
+ "required": ["kind", "policyReason", "rationale"],
303
+ "properties": {
304
+ "kind": { "const": "not_applicable" },
305
+ "policyReason": { "type": "string", "minLength": 1 },
306
+ "rationale": { "type": "string", "minLength": 1 }
307
+ }
308
+ }
309
+ ]
310
+ },
311
+ "file": {
312
+ "type": "object",
313
+ "additionalProperties": false,
314
+ "required": [
315
+ "path",
316
+ "status",
317
+ "analysisDepth",
318
+ "disposition",
319
+ "oldHunkRanges",
320
+ "newHunkRanges",
321
+ "before",
322
+ "after",
323
+ "analysisReviews",
324
+ "decision"
325
+ ],
326
+ "properties": {
327
+ "path": { "type": "string", "minLength": 1 },
328
+ "status": { "enum": ["A", "M", "R", "C", "T", "D"] },
329
+ "oldPath": { "type": "string", "minLength": 1 },
330
+ "copyFromPath": { "type": "string", "minLength": 1 },
331
+ "analysisDepth": { "enum": ["symbol", "metadata", "file", "none"] },
332
+ "disposition": { "enum": ["checked", "advisory", "skipped"] },
333
+ "skipReason": {
334
+ "enum": ["binary", "unsupported_encoding", "symlink", "submodule"]
335
+ },
336
+ "gitMode": { "type": "string" },
337
+ "previousMode": { "type": "string" },
338
+ "oldHunkRanges": {
339
+ "type": "array",
340
+ "items": { "$ref": "#/$defs/range" }
341
+ },
342
+ "newHunkRanges": {
343
+ "type": "array",
344
+ "items": { "$ref": "#/$defs/range" }
345
+ },
346
+ "before": { "oneOf": [{ "$ref": "#/$defs/side" }, { "type": "null" }] },
347
+ "after": { "oneOf": [{ "$ref": "#/$defs/side" }, { "type": "null" }] },
348
+ "analysisReviews": {
349
+ "type": "array",
350
+ "items": {
351
+ "oneOf": [
352
+ { "$ref": "#/$defs/partialReview" },
353
+ { "$ref": "#/$defs/unsupportedReview" }
354
+ ]
355
+ }
356
+ },
357
+ "decision": { "$ref": "#/$defs/decision" }
358
+ },
359
+ "anyOf": [
360
+ { "properties": { "before": { "$ref": "#/$defs/side" } } },
361
+ { "properties": { "after": { "$ref": "#/$defs/side" } } }
362
+ ]
363
+ }
364
+ }
365
+ }
@@ -44,10 +44,6 @@ jobs:
44
44
  with:
45
45
  node-version: 24
46
46
  cache: npm
47
- - name: Install SWI-Prolog
48
- run: |
49
- sudo apt-get update
50
- sudo apt-get install -y swi-prolog
51
47
  - run: npm ci
52
48
  - run: npm exec -- kibi sync
53
49
  - run: npm exec -- kibi report --output kibi-report
@@ -42,10 +42,6 @@ jobs:
42
42
  with:
43
43
  node-version: 24
44
44
  cache: npm
45
- - name: Install SWI-Prolog
46
- run: |
47
- sudo apt-get update
48
- sudo apt-get install -y swi-prolog
49
45
  - run: npm ci
50
46
  - run: npm exec -- kibi sync
51
47
  - run: npm exec -- kibi report --output kibi-report