@graphrefly/stack 0.1.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 (110) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +214 -0
  3. package/dist/assets/contracts/repository/v1/repository-config.schema.json +23 -0
  4. package/dist/assets/contracts/repository/v1/review.schema.json +182 -0
  5. package/dist/assets/contracts/v1/schemas/artifacts.schema.json +584 -0
  6. package/dist/assets/contracts/v1/schemas/cli-result.schema.json +49 -0
  7. package/dist/assets/contracts/v1/schemas/golden-suite.schema.json +95 -0
  8. package/dist/assets/contracts/v1/schemas/plan-proposal.schema.json +15 -0
  9. package/dist/assets/contracts/v1/schemas/replan-proposal.schema.json +25 -0
  10. package/dist/assets/fixtures/contracts/v1/golden-suite.json +954 -0
  11. package/dist/assets/fixtures/flagship/v1/repository-template.json +48 -0
  12. package/dist/grfs.js +11102 -0
  13. package/dist/review/assets/abnfDiagram-VRR7QNED-5JVeQ-ZW.js +1 -0
  14. package/dist/review/assets/arc-CB8DclF7.js +1 -0
  15. package/dist/review/assets/architecture-TIHT7OUA-Bqe2DsxB.js +1 -0
  16. package/dist/review/assets/architectureDiagram-ZJ3FMSHR-BnEvDO7X.js +36 -0
  17. package/dist/review/assets/array-BifhSqXX.js +1 -0
  18. package/dist/review/assets/blockDiagram-677ZJIJ3-ButhTken.js +132 -0
  19. package/dist/review/assets/c4Diagram-LMCZKHZV-Dv1rgwuU.js +10 -0
  20. package/dist/review/assets/channel-HyWlF92n.js +1 -0
  21. package/dist/review/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  22. package/dist/review/assets/chunk-32BRIVSS-DPG_L6Ow.js +1 -0
  23. package/dist/review/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
  24. package/dist/review/assets/chunk-7BUUIJ7U-Bb538aSH.js +1 -0
  25. package/dist/review/assets/chunk-C7G6YPKG-WgqYOC9I.js +1 -0
  26. package/dist/review/assets/chunk-EX3LRPZG-BrpCa9zr.js +231 -0
  27. package/dist/review/assets/chunk-HOUHSVGY-BrlsNa-I.js +1 -0
  28. package/dist/review/assets/chunk-ICXQ74PX-Bmw_N4Lw.js +2 -0
  29. package/dist/review/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  30. package/dist/review/assets/chunk-KEIR6QF5-Dj-OpFgW.js +161 -0
  31. package/dist/review/assets/chunk-MOJQB5TN-BshP08Ez.js +88 -0
  32. package/dist/review/assets/chunk-OGEWGWER-fU6SYJIg.js +1 -0
  33. package/dist/review/assets/chunk-PUDLZKDR-HkwEqIVB.js +156 -0
  34. package/dist/review/assets/chunk-Q4XR5HBZ-BpeC1YXL.js +70 -0
  35. package/dist/review/assets/chunk-RYQCIY6F-0ervO6Fl.js +1 -0
  36. package/dist/review/assets/chunk-V7JOEXUC-CswDacm3.js +206 -0
  37. package/dist/review/assets/chunk-VR4S4FIN-OVY3vSUk.js +1 -0
  38. package/dist/review/assets/chunk-WYO6CB5R-C36byBU-.js +127 -0
  39. package/dist/review/assets/chunk-XXDRQBXY-D6m_P2Gv.js +1 -0
  40. package/dist/review/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  41. package/dist/review/assets/chunk-ZGVPDNZ5-_Ehp2Vnm.js +62 -0
  42. package/dist/review/assets/classDiagram-OUVF2IWQ-U8e_ZvC4.js +1 -0
  43. package/dist/review/assets/classDiagram-v2-EOCWNBFH-U8e_ZvC4.js +1 -0
  44. package/dist/review/assets/cose-bilkent-JH36ORCC-CRp3s0ZJ.js +1 -0
  45. package/dist/review/assets/cynefin-VYW2F7L2-C0b7xdyt.js +1 -0
  46. package/dist/review/assets/cynefinDiagram-TSTJHNR4-CfYu2mB5.js +62 -0
  47. package/dist/review/assets/cytoscape.esm-CQFVGiJu.js +321 -0
  48. package/dist/review/assets/dagre-VKFMJZFB-BvyihZfA.js +4 -0
  49. package/dist/review/assets/dagre-dpRSp0QF.js +1 -0
  50. package/dist/review/assets/defaultLocale-C8Fc0cco.js +1 -0
  51. package/dist/review/assets/diagram-FQU43EPY-DRoOWbTK.js +3 -0
  52. package/dist/review/assets/diagram-G47NLZAW-qFNMv5An.js +24 -0
  53. package/dist/review/assets/diagram-NH7WQ7WH-CsvacND9.js +24 -0
  54. package/dist/review/assets/diagram-OA4YK3LP-qFtWcyNi.js +30 -0
  55. package/dist/review/assets/diagram-WEI45ONY-C5nYGL8t.js +41 -0
  56. package/dist/review/assets/dist-Q9n2Bb2K.js +1 -0
  57. package/dist/review/assets/ebnfDiagram-CCIWWBDH-D_0nhpry.js +1 -0
  58. package/dist/review/assets/erDiagram-Q63AITRT-CIS7hpdK.js +85 -0
  59. package/dist/review/assets/eventmodeling-45OFAUF4-BD32wstC.js +1 -0
  60. package/dist/review/assets/flowDiagram-23GEKE2U-Df5sjnlg.js +1 -0
  61. package/dist/review/assets/ganttDiagram-NO4QXBWP-YVgrRl0A.js +292 -0
  62. package/dist/review/assets/gitGraph-TEB2WS4Q-VVXGfjmO.js +1 -0
  63. package/dist/review/assets/gitGraphDiagram-IHSO6WYX-DU6K2oph.js +106 -0
  64. package/dist/review/assets/graphlib-DS17s2tU.js +1 -0
  65. package/dist/review/assets/index-Bt3i8n39.css +1 -0
  66. package/dist/review/assets/index-CqjR4YYp.js +64 -0
  67. package/dist/review/assets/info-DKCQHKI2-Bzf5qgtg.js +1 -0
  68. package/dist/review/assets/infoDiagram-FWYZ7A6U-CT7TZgi6.js +2 -0
  69. package/dist/review/assets/init-D6jRqBbL.js +1 -0
  70. package/dist/review/assets/ishikawaDiagram-FXEZZL3T-BUpotH7r.js +70 -0
  71. package/dist/review/assets/journeyDiagram-5HDEW3XC-Dfq1Zgbg.js +139 -0
  72. package/dist/review/assets/kanban-definition-HUTT4EX6-e-emfNuh.js +89 -0
  73. package/dist/review/assets/katex-B7rAX3Vi.js +257 -0
  74. package/dist/review/assets/line-fLz2iEv2.js +1 -0
  75. package/dist/review/assets/linear-BPTPEtRN.js +1 -0
  76. package/dist/review/assets/map-BaFkSB1l.js +1 -0
  77. package/dist/review/assets/mermaid-parser.core-BJLV4lM2.js +7 -0
  78. package/dist/review/assets/mindmap-definition-LN4V7U3C-ClSEPrvR.js +96 -0
  79. package/dist/review/assets/ordinal-hYBb2elL.js +1 -0
  80. package/dist/review/assets/packet-7NZHBO7P-DV-IpgNt.js +1 -0
  81. package/dist/review/assets/path-BWPyau1x.js +1 -0
  82. package/dist/review/assets/pegDiagram-2B236MQR-Ck_v89jl.js +1 -0
  83. package/dist/review/assets/pie-RZYD4A2V-B0Ht5h6P.js +1 -0
  84. package/dist/review/assets/pieDiagram-ENE6RG2P-C63dxyZj.js +39 -0
  85. package/dist/review/assets/quadrantDiagram-ABIIQ3AL-STCrBeWw.js +7 -0
  86. package/dist/review/assets/radar-I7S5WNFK-BDk7gJ8s.js +1 -0
  87. package/dist/review/assets/railroad-3IZDKUUU-DFw02UTf.js +1 -0
  88. package/dist/review/assets/railroad-abnf-AHOZXSZD-CHMMM8DG.js +1 -0
  89. package/dist/review/assets/railroad-ebnf-EBAXGLYW-yQjh1dCt.js +1 -0
  90. package/dist/review/assets/railroad-peg-LSFZ7HO6-B9LBaRcJ.js +1 -0
  91. package/dist/review/assets/railroadDiagram-RFXS5EU6-DYI7CPMt.js +1 -0
  92. package/dist/review/assets/requirementDiagram-TGXJPOKE-BMW46SXM.js +84 -0
  93. package/dist/review/assets/rough.esm-CSKSodPl.js +1 -0
  94. package/dist/review/assets/sankeyDiagram-HTMAVEWB-wTvFx0iK.js +40 -0
  95. package/dist/review/assets/sequenceDiagram-DBY2YBRQ-DVtyVuxr.js +162 -0
  96. package/dist/review/assets/sizeCapture-X5ZJPWSS-B0uUizjq.js +1 -0
  97. package/dist/review/assets/src-BMa7vLb8.js +1 -0
  98. package/dist/review/assets/stateDiagram-2N3HPSRC-BM1s-zUo.js +1 -0
  99. package/dist/review/assets/stateDiagram-v2-6OUMAXLB-BEfolAkc.js +1 -0
  100. package/dist/review/assets/swimlanes-5IMT3BWC-Bnu9mzxz.js +2 -0
  101. package/dist/review/assets/swimlanesDiagram-G3AALYLV-DlNNBK53.js +8 -0
  102. package/dist/review/assets/timeline-definition-FHXFAJF6-CwlO71Lp.js +120 -0
  103. package/dist/review/assets/treeView-QDETBFTQ-e6oHg1mF.js +1 -0
  104. package/dist/review/assets/treemap-6X3UGDF4-HYeYMCQq.js +1 -0
  105. package/dist/review/assets/vennDiagram-L72KCM5P-DZxbcc_O.js +34 -0
  106. package/dist/review/assets/wardley-OPB4EBWU-BCMNVDbK.js +1 -0
  107. package/dist/review/assets/wardleyDiagram-EHGQE667-DGQto3hn.js +78 -0
  108. package/dist/review/assets/xychartDiagram-FW5EYKEG-BfD1lSXX.js +7 -0
  109. package/dist/review/index.html +32 -0
  110. package/package.json +64 -0
@@ -0,0 +1,584 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "urn:graphrefly-stack:schema:artifacts:v1",
4
+ "definitions": {
5
+ "Hash": {
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["algorithm", "value"],
9
+ "properties": {
10
+ "algorithm": { "const": "sha256" },
11
+ "value": { "type": "string", "pattern": "^[0-9a-f]{64}$" }
12
+ }
13
+ },
14
+ "GitOid": {
15
+ "oneOf": [
16
+ {
17
+ "type": "object",
18
+ "additionalProperties": false,
19
+ "required": ["algorithm", "value"],
20
+ "properties": {
21
+ "algorithm": { "const": "sha1" },
22
+ "value": { "type": "string", "pattern": "^[0-9a-f]{40}$" }
23
+ }
24
+ },
25
+ {
26
+ "type": "object",
27
+ "additionalProperties": false,
28
+ "required": ["algorithm", "value"],
29
+ "properties": {
30
+ "algorithm": { "const": "sha256" },
31
+ "value": { "type": "string", "pattern": "^[0-9a-f]{64}$" }
32
+ }
33
+ }
34
+ ]
35
+ },
36
+ "RepoPath": {
37
+ "type": "string",
38
+ "minLength": 1,
39
+ "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))[A-Za-z0-9._/-]+$"
40
+ },
41
+ "ReasonCode": {
42
+ "type": "string",
43
+ "enum": [
44
+ "SCHEMA_INVALID",
45
+ "PROVIDER_CAPABILITY_UNSUPPORTED",
46
+ "BLUEPRINT_DIAGNOSTICS_ERROR",
47
+ "COMMIT_NOT_FOUND",
48
+ "COMMIT_BINDING_MISMATCH",
49
+ "PATCH_ID_AMBIGUOUS",
50
+ "SOURCE_SCOPE_VIOLATION",
51
+ "SEMANTIC_PARENT_STALE",
52
+ "DEPENDENCY_INVALID",
53
+ "BLUEPRINT_WITNESS_STALE",
54
+ "POLICY_REVISION_STALE",
55
+ "POLICY_SESSION_WRITE_REQUIRES_BROKER",
56
+ "REQUIRED_CHECK_MISSING",
57
+ "REQUIRED_CHECK_FAILED",
58
+ "ARTIFACT_HASH_MISMATCH"
59
+ ]
60
+ },
61
+ "Node": {
62
+ "type": "object",
63
+ "additionalProperties": false,
64
+ "required": ["id", "factory", "deps"],
65
+ "properties": {
66
+ "id": { "type": "string", "minLength": 1 },
67
+ "name": { "type": "string", "minLength": 1 },
68
+ "factory": { "type": "string", "minLength": 1 },
69
+ "deps": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
70
+ "meta": { "type": "object", "additionalProperties": true }
71
+ }
72
+ },
73
+ "Edge": {
74
+ "type": "object",
75
+ "additionalProperties": false,
76
+ "required": ["from", "to"],
77
+ "properties": {
78
+ "from": { "type": "string", "minLength": 1 },
79
+ "to": { "type": "string", "minLength": 1 }
80
+ }
81
+ },
82
+ "Topology": {
83
+ "type": "object",
84
+ "additionalProperties": false,
85
+ "required": ["nodes", "edges"],
86
+ "properties": {
87
+ "name": { "type": "string" },
88
+ "nodes": { "type": "array", "items": { "$ref": "#/definitions/Node" } },
89
+ "edges": { "type": "array", "items": { "$ref": "#/definitions/Edge" } },
90
+ "subgraphs": {
91
+ "type": "array",
92
+ "items": { "$ref": "#/definitions/Topology" }
93
+ }
94
+ }
95
+ },
96
+ "GraphBlueprint": {
97
+ "type": "object",
98
+ "additionalProperties": false,
99
+ "required": ["version", "topology", "hash"],
100
+ "properties": {
101
+ "version": { "const": "graphrefly.blueprint.v1" },
102
+ "topology": { "$ref": "#/definitions/Topology" },
103
+ "provenance": { "type": "object", "additionalProperties": true },
104
+ "diagnostics": {
105
+ "type": "object",
106
+ "additionalProperties": false,
107
+ "required": ["ok", "issues"],
108
+ "properties": {
109
+ "ok": { "type": "boolean" },
110
+ "issues": {
111
+ "type": "array",
112
+ "items": { "type": "object", "additionalProperties": true }
113
+ }
114
+ }
115
+ },
116
+ "hash": {
117
+ "type": "object",
118
+ "additionalProperties": false,
119
+ "required": ["kind", "algorithm", "input", "value"],
120
+ "properties": {
121
+ "kind": { "const": "topology" },
122
+ "algorithm": { "const": "sha256" },
123
+ "input": { "const": "strictCanonicalTopologyBytes" },
124
+ "value": { "type": "string", "pattern": "^[0-9a-f]{64}$" }
125
+ }
126
+ }
127
+ }
128
+ },
129
+ "Task": {
130
+ "type": "object",
131
+ "additionalProperties": false,
132
+ "required": ["schema", "taskId", "text"],
133
+ "properties": {
134
+ "schema": { "const": "urn:graphrefly-stack:schema:task:v1" },
135
+ "taskId": { "type": "string", "pattern": "^[a-z0-9][a-z0-9.-]*$" },
136
+ "text": { "type": "string", "minLength": 1 }
137
+ }
138
+ },
139
+ "GitStack": {
140
+ "type": "object",
141
+ "additionalProperties": false,
142
+ "required": ["schema", "linearity", "base", "head", "commits"],
143
+ "properties": {
144
+ "schema": { "const": "urn:graphrefly-stack:schema:git-stack:v1" },
145
+ "linearity": { "const": "linear" },
146
+ "base": { "$ref": "#/definitions/GitOid" },
147
+ "head": { "$ref": "#/definitions/GitOid" },
148
+ "commits": {
149
+ "type": "array",
150
+ "minItems": 1,
151
+ "items": {
152
+ "type": "object",
153
+ "additionalProperties": false,
154
+ "required": ["oid", "parent", "role", "workUnitId"],
155
+ "properties": {
156
+ "oid": { "$ref": "#/definitions/GitOid" },
157
+ "parent": {
158
+ "anyOf": [{ "$ref": "#/definitions/GitOid" }, { "type": "null" }]
159
+ },
160
+ "role": { "enum": ["base", "concurrent", "work-unit", "replan"] },
161
+ "workUnitId": { "type": ["string", "null"] }
162
+ }
163
+ }
164
+ }
165
+ }
166
+ },
167
+ "BlueprintProviderCapabilities": {
168
+ "type": "object",
169
+ "additionalProperties": false,
170
+ "required": ["schema", "providerId", "providerVersion", "blueprintVersion", "capabilities"],
171
+ "properties": {
172
+ "schema": { "const": "urn:graphrefly-stack:schema:blueprint-provider-capabilities:v1" },
173
+ "providerId": { "const": "graphrefly" },
174
+ "providerVersion": { "type": "string", "minLength": 1 },
175
+ "blueprintVersion": { "const": "graphrefly.blueprint.v1" },
176
+ "capabilities": {
177
+ "type": "object",
178
+ "additionalProperties": false,
179
+ "required": [
180
+ "commitSnapshot",
181
+ "canonicalTopologyBytes",
182
+ "nodeMetadata",
183
+ "subgraphs",
184
+ "diagnostics",
185
+ "structuralDelta",
186
+ "mergeParentSelection",
187
+ "claimImpact"
188
+ ],
189
+ "properties": {
190
+ "commitSnapshot": { "const": true },
191
+ "canonicalTopologyBytes": { "const": true },
192
+ "nodeMetadata": { "const": true },
193
+ "subgraphs": { "const": true },
194
+ "diagnostics": { "const": true },
195
+ "structuralDelta": { "const": true },
196
+ "mergeParentSelection": { "const": false },
197
+ "claimImpact": { "const": false }
198
+ }
199
+ }
200
+ }
201
+ },
202
+ "BlueprintSnapshot": {
203
+ "type": "object",
204
+ "additionalProperties": false,
205
+ "required": [
206
+ "schema",
207
+ "commit",
208
+ "semanticParent",
209
+ "provider",
210
+ "blueprint",
211
+ "topologyHash",
212
+ "policyRevision"
213
+ ],
214
+ "properties": {
215
+ "schema": { "const": "urn:graphrefly-stack:schema:blueprint-snapshot:v1" },
216
+ "commit": { "$ref": "#/definitions/GitOid" },
217
+ "semanticParent": { "anyOf": [{ "$ref": "#/definitions/GitOid" }, { "type": "null" }] },
218
+ "provider": { "$ref": "#/definitions/BlueprintProviderCapabilities" },
219
+ "blueprint": { "$ref": "#/definitions/GraphBlueprint" },
220
+ "topologyHash": { "$ref": "#/definitions/Hash" },
221
+ "policyRevision": { "type": "string", "minLength": 1 }
222
+ }
223
+ },
224
+ "BlueprintDelta": {
225
+ "type": "object",
226
+ "additionalProperties": false,
227
+ "required": ["schema", "from", "to", "structural", "claimImpacts"],
228
+ "properties": {
229
+ "schema": { "const": "urn:graphrefly-stack:schema:blueprint-delta:v1" },
230
+ "from": { "$ref": "#/definitions/Hash" },
231
+ "to": { "$ref": "#/definitions/Hash" },
232
+ "structural": {
233
+ "type": "object",
234
+ "additionalProperties": false,
235
+ "required": ["addedNodes", "removedNodeIds", "addedEdges", "removedEdges"],
236
+ "properties": {
237
+ "addedNodes": { "type": "array", "items": { "$ref": "#/definitions/Node" } },
238
+ "removedNodeIds": {
239
+ "type": "array",
240
+ "items": { "type": "string" },
241
+ "uniqueItems": true
242
+ },
243
+ "addedEdges": { "type": "array", "items": { "$ref": "#/definitions/Edge" } },
244
+ "removedEdges": { "type": "array", "items": { "$ref": "#/definitions/Edge" } }
245
+ }
246
+ },
247
+ "claimImpacts": {
248
+ "type": "array",
249
+ "items": {
250
+ "type": "object",
251
+ "additionalProperties": false,
252
+ "required": ["workUnitId", "claimId", "impact"],
253
+ "properties": {
254
+ "workUnitId": { "type": "string" },
255
+ "claimId": { "type": "string" },
256
+ "impact": { "enum": ["none", "affected"] }
257
+ }
258
+ }
259
+ }
260
+ }
261
+ },
262
+ "WorkUnit": {
263
+ "type": "object",
264
+ "additionalProperties": false,
265
+ "required": [
266
+ "id",
267
+ "title",
268
+ "intent",
269
+ "dependencies",
270
+ "allowedSourceScopes",
271
+ "blueprintClaims",
272
+ "requiredChecks"
273
+ ],
274
+ "properties": {
275
+ "id": { "type": "string", "pattern": "^U[1-9][0-9]*$" },
276
+ "title": { "type": "string", "minLength": 1 },
277
+ "intent": { "type": "string", "minLength": 1 },
278
+ "dependencies": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
279
+ "allowedSourceScopes": {
280
+ "type": "array",
281
+ "items": { "$ref": "#/definitions/RepoPath" },
282
+ "minItems": 1,
283
+ "uniqueItems": true
284
+ },
285
+ "blueprintClaims": {
286
+ "type": "array",
287
+ "items": {
288
+ "type": "object",
289
+ "additionalProperties": false,
290
+ "required": ["id", "statement"],
291
+ "properties": {
292
+ "id": { "type": "string", "minLength": 1 },
293
+ "statement": { "type": "string", "minLength": 1 }
294
+ }
295
+ }
296
+ },
297
+ "requiredChecks": {
298
+ "type": "array",
299
+ "items": { "type": "string", "minLength": 1 },
300
+ "minItems": 1,
301
+ "uniqueItems": true
302
+ }
303
+ }
304
+ },
305
+ "ChangePlan": {
306
+ "type": "object",
307
+ "additionalProperties": false,
308
+ "required": [
309
+ "schema",
310
+ "planId",
311
+ "taskDigest",
312
+ "baseCommit",
313
+ "baseBlueprintHash",
314
+ "policyRevision",
315
+ "source",
316
+ "workUnits"
317
+ ],
318
+ "properties": {
319
+ "schema": { "const": "urn:graphrefly-stack:schema:change-plan:v1" },
320
+ "planId": { "type": "string", "minLength": 1 },
321
+ "taskDigest": { "$ref": "#/definitions/Hash" },
322
+ "baseCommit": { "$ref": "#/definitions/GitOid" },
323
+ "baseBlueprintHash": { "$ref": "#/definitions/Hash" },
324
+ "policyRevision": { "type": "string", "minLength": 1 },
325
+ "source": { "enum": ["fixture", "codex"] },
326
+ "workUnits": {
327
+ "type": "array",
328
+ "items": { "$ref": "#/definitions/WorkUnit" },
329
+ "minItems": 1
330
+ }
331
+ }
332
+ },
333
+ "SemanticChangeRecord": {
334
+ "type": "object",
335
+ "additionalProperties": false,
336
+ "required": [
337
+ "schema",
338
+ "recordId",
339
+ "workUnitId",
340
+ "commit",
341
+ "stablePatchId",
342
+ "diffDigest",
343
+ "semanticParentRecordId",
344
+ "semanticParentCommit",
345
+ "allowedSourceScopes",
346
+ "sourceScopeDigest",
347
+ "blueprintClaims",
348
+ "dependencies",
349
+ "requiredChecks",
350
+ "blueprintHash",
351
+ "policyRevision",
352
+ "providerId",
353
+ "providerVersion",
354
+ "contractVersion",
355
+ "rebindFrom"
356
+ ],
357
+ "properties": {
358
+ "schema": { "const": "urn:graphrefly-stack:schema:semantic-change-record:v1" },
359
+ "recordId": { "type": "string", "minLength": 1 },
360
+ "workUnitId": { "type": "string", "pattern": "^U[1-9][0-9]*$" },
361
+ "commit": { "$ref": "#/definitions/GitOid" },
362
+ "stablePatchId": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
363
+ "diffDigest": { "$ref": "#/definitions/Hash" },
364
+ "semanticParentRecordId": { "type": ["string", "null"] },
365
+ "semanticParentCommit": {
366
+ "anyOf": [{ "$ref": "#/definitions/GitOid" }, { "type": "null" }]
367
+ },
368
+ "allowedSourceScopes": {
369
+ "type": "array",
370
+ "items": { "$ref": "#/definitions/RepoPath" },
371
+ "minItems": 1,
372
+ "uniqueItems": true
373
+ },
374
+ "sourceScopeDigest": { "$ref": "#/definitions/Hash" },
375
+ "blueprintClaims": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
376
+ "dependencies": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
377
+ "requiredChecks": {
378
+ "type": "array",
379
+ "items": { "type": "string" },
380
+ "minItems": 1,
381
+ "uniqueItems": true
382
+ },
383
+ "blueprintHash": { "$ref": "#/definitions/Hash" },
384
+ "policyRevision": { "type": "string" },
385
+ "providerId": { "const": "graphrefly" },
386
+ "providerVersion": { "type": "string" },
387
+ "contractVersion": { "const": "v1" },
388
+ "rebindFrom": { "type": ["string", "null"] }
389
+ }
390
+ },
391
+ "CheckResult": {
392
+ "type": "object",
393
+ "additionalProperties": false,
394
+ "required": ["schema", "checkId", "command", "exitCode", "stdoutDigest", "stderrDigest"],
395
+ "properties": {
396
+ "schema": { "const": "urn:graphrefly-stack:schema:check-result:v1" },
397
+ "checkId": { "type": "string", "minLength": 1 },
398
+ "command": { "type": "array", "items": { "type": "string" }, "minItems": 1 },
399
+ "exitCode": { "type": "integer", "minimum": 0, "maximum": 255 },
400
+ "stdoutDigest": { "$ref": "#/definitions/Hash" },
401
+ "stderrDigest": { "$ref": "#/definitions/Hash" }
402
+ }
403
+ },
404
+ "GateResult": {
405
+ "type": "object",
406
+ "additionalProperties": false,
407
+ "required": ["schema", "gateVersion", "inputDigest", "verdict", "units", "checkIds"],
408
+ "properties": {
409
+ "schema": { "const": "urn:graphrefly-stack:schema:gate-result:v1" },
410
+ "gateVersion": { "const": "v1" },
411
+ "inputDigest": { "$ref": "#/definitions/Hash" },
412
+ "verdict": { "enum": ["pass", "blocked", "error"] },
413
+ "units": {
414
+ "type": "array",
415
+ "items": {
416
+ "type": "object",
417
+ "additionalProperties": false,
418
+ "required": ["workUnitId", "verdict", "reasonCodes", "invalidDependencies"],
419
+ "properties": {
420
+ "workUnitId": { "type": "string" },
421
+ "verdict": { "enum": ["valid", "invalid"] },
422
+ "reasonCodes": {
423
+ "type": "array",
424
+ "items": { "$ref": "#/definitions/ReasonCode" },
425
+ "uniqueItems": true
426
+ },
427
+ "invalidDependencies": {
428
+ "type": "array",
429
+ "items": { "type": "string" },
430
+ "uniqueItems": true
431
+ }
432
+ }
433
+ }
434
+ },
435
+ "checkIds": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }
436
+ }
437
+ },
438
+ "SelectiveReplan": {
439
+ "type": "object",
440
+ "additionalProperties": false,
441
+ "required": [
442
+ "schema",
443
+ "planId",
444
+ "inputUnits",
445
+ "preservedUnits",
446
+ "replacements",
447
+ "finalLineage"
448
+ ],
449
+ "properties": {
450
+ "schema": { "const": "urn:graphrefly-stack:schema:selective-replan:v1" },
451
+ "planId": { "type": "string" },
452
+ "inputUnits": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
453
+ "preservedUnits": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
454
+ "replacements": {
455
+ "type": "array",
456
+ "items": {
457
+ "type": "object",
458
+ "additionalProperties": false,
459
+ "required": ["workUnitId", "fromCommit", "toCommit"],
460
+ "properties": {
461
+ "workUnitId": { "type": "string" },
462
+ "fromCommit": { "$ref": "#/definitions/GitOid" },
463
+ "toCommit": { "$ref": "#/definitions/GitOid" }
464
+ }
465
+ }
466
+ },
467
+ "finalLineage": {
468
+ "type": "array",
469
+ "items": { "$ref": "#/definitions/GitOid" },
470
+ "minItems": 1
471
+ }
472
+ }
473
+ },
474
+ "BundleManifest": {
475
+ "type": "object",
476
+ "additionalProperties": false,
477
+ "required": [
478
+ "schema",
479
+ "runId",
480
+ "recordedAt",
481
+ "sourceCommit",
482
+ "canonicalInputDigest",
483
+ "schemaVersion",
484
+ "promptVersion",
485
+ "model",
486
+ "provider",
487
+ "graphreflyVersion",
488
+ "policyRevision",
489
+ "artifacts"
490
+ ],
491
+ "properties": {
492
+ "schema": { "const": "urn:graphrefly-stack:schema:bundle-manifest:v1" },
493
+ "runId": { "type": "string", "minLength": 1 },
494
+ "recordedAt": {
495
+ "type": "string",
496
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$"
497
+ },
498
+ "sourceCommit": { "$ref": "#/definitions/GitOid" },
499
+ "canonicalInputDigest": { "$ref": "#/definitions/Hash" },
500
+ "schemaVersion": { "const": "v1" },
501
+ "promptVersion": { "type": "string" },
502
+ "model": {
503
+ "type": "object",
504
+ "additionalProperties": false,
505
+ "required": ["source", "id", "reasoningEffort"],
506
+ "properties": {
507
+ "source": { "enum": ["fixture", "codex"] },
508
+ "id": { "type": "string" },
509
+ "reasoningEffort": { "type": "string" }
510
+ }
511
+ },
512
+ "provider": { "$ref": "#/definitions/BlueprintProviderCapabilities" },
513
+ "graphreflyVersion": { "type": "string" },
514
+ "policyRevision": { "type": "string" },
515
+ "artifacts": {
516
+ "type": "array",
517
+ "items": {
518
+ "type": "object",
519
+ "additionalProperties": false,
520
+ "required": ["path", "hash"],
521
+ "properties": {
522
+ "path": {
523
+ "allOf": [
524
+ { "$ref": "#/definitions/RepoPath" },
525
+ { "not": { "enum": ["README.md", "manifest.json"] } }
526
+ ]
527
+ },
528
+ "hash": { "$ref": "#/definitions/Hash" }
529
+ }
530
+ }
531
+ }
532
+ }
533
+ },
534
+ "RawDiff": {
535
+ "type": "object",
536
+ "additionalProperties": false,
537
+ "required": ["schema", "workUnitId", "commit", "paths", "patch"],
538
+ "properties": {
539
+ "schema": { "const": "urn:graphrefly-stack:schema:raw-diff:v1" },
540
+ "workUnitId": { "type": "string", "minLength": 1 },
541
+ "commit": { "$ref": "#/definitions/GitOid" },
542
+ "paths": {
543
+ "type": "array",
544
+ "items": { "$ref": "#/definitions/RepoPath" },
545
+ "uniqueItems": true
546
+ },
547
+ "patch": { "type": "string" }
548
+ }
549
+ },
550
+ "PortableBundle": {
551
+ "type": "object",
552
+ "additionalProperties": false,
553
+ "required": ["schema", "manifest", "artifacts"],
554
+ "properties": {
555
+ "schema": { "const": "urn:graphrefly-stack:schema:portable-bundle:v1" },
556
+ "manifest": { "$ref": "#/definitions/BundleManifest" },
557
+ "artifacts": { "type": "object", "additionalProperties": true }
558
+ }
559
+ },
560
+ "ReviewDecision": {
561
+ "type": "object",
562
+ "additionalProperties": false,
563
+ "required": [
564
+ "schema",
565
+ "decision",
566
+ "reviewerLabel",
567
+ "recordIds",
568
+ "recordedAt",
569
+ "identityVerified"
570
+ ],
571
+ "properties": {
572
+ "schema": { "const": "urn:graphrefly-stack:schema:review-decision:v1" },
573
+ "decision": { "enum": ["approve", "defer", "reject"] },
574
+ "reviewerLabel": { "type": "string", "minLength": 1 },
575
+ "recordIds": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
576
+ "recordedAt": {
577
+ "type": "string",
578
+ "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$"
579
+ },
580
+ "identityVerified": { "const": false }
581
+ }
582
+ }
583
+ }
584
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "urn:graphrefly-stack:schema:cli-result:v1",
4
+ "title": "GraphReFly Stack CLI result v1",
5
+ "oneOf": [
6
+ {
7
+ "type": "object",
8
+ "additionalProperties": false,
9
+ "required": ["schema", "command", "ok", "mode", "data"],
10
+ "properties": {
11
+ "schema": { "const": "urn:graphrefly-stack:schema:cli-result:v1" },
12
+ "command": { "$ref": "#/definitions/Command" },
13
+ "ok": { "const": true },
14
+ "mode": { "$ref": "#/definitions/Mode" },
15
+ "data": {}
16
+ }
17
+ },
18
+ {
19
+ "type": "object",
20
+ "additionalProperties": false,
21
+ "required": ["schema", "command", "ok", "mode", "error"],
22
+ "properties": {
23
+ "schema": { "const": "urn:graphrefly-stack:schema:cli-result:v1" },
24
+ "command": { "$ref": "#/definitions/Command" },
25
+ "ok": { "const": false },
26
+ "mode": { "$ref": "#/definitions/Mode" },
27
+ "error": { "$ref": "#/definitions/Error" }
28
+ }
29
+ }
30
+ ],
31
+ "definitions": {
32
+ "Command": {
33
+ "enum": ["init", "fixture-create", "plan", "gate", "replan", "review", "export"]
34
+ },
35
+ "Mode": {
36
+ "enum": ["deterministic", "replay", "live", "replay-fallback"]
37
+ },
38
+ "Error": {
39
+ "type": "object",
40
+ "additionalProperties": false,
41
+ "required": ["code", "message"],
42
+ "properties": {
43
+ "code": { "type": "string", "minLength": 1 },
44
+ "message": { "type": "string", "minLength": 1 },
45
+ "details": {}
46
+ }
47
+ }
48
+ }
49
+ }