@kungfu-tech/buildchain 3.0.9-alpha.0 → 3.0.9-alpha.10

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 (117) hide show
  1. package/bin/buildchain.mjs +9 -1
  2. package/contracts/dev-delivery-authority-v2.schema.json +253 -0
  3. package/contracts/fixtures/kfd-adopter-release-v1/kfd-4-perspective.json +16 -0
  4. package/contracts/fixtures/kfd-adopter-release-v1/kfd-4-replay.json +57 -0
  5. package/contracts/fixtures/next-development-transition-v1/anchored-manual-waiting.json +47 -0
  6. package/contracts/fixtures/next-development-transition-v1/semver-auto-planned.json +47 -0
  7. package/contracts/fixtures/next-development-transition-v1/version-model-cases.json +40 -0
  8. package/contracts/next-development-request-v1.schema.json +66 -0
  9. package/contracts/next-development-transition-v1.schema.json +292 -0
  10. package/contracts/release-cut-v1.schema.json +1 -0
  11. package/contracts/release-train-transition-v1.schema.json +1 -0
  12. package/dist/site/agent-index.json +1 -0
  13. package/dist/site/artifact-schemas.json +2 -0
  14. package/dist/site/buildchain-contract.json +91 -32
  15. package/dist/site/buildchain-site.json +353 -45
  16. package/dist/site/capability-registry.json +7 -6
  17. package/dist/site/cli-registry.json +41 -2
  18. package/dist/site/controller-registry.json +8 -4
  19. package/dist/site/kfd-claims.json +193 -9
  20. package/dist/site/kfd-upstream-aggregate.json +9 -9
  21. package/dist/site/manual-registry.json +26 -10
  22. package/dist/site/node-api-registry.json +8012 -4574
  23. package/dist/site/page-registry.json +331 -31
  24. package/dist/site/public-surface-audit.json +353 -8
  25. package/dist/site/publication-registry.json +4 -4
  26. package/dist/site/release-passport-check-manifest.json +1 -0
  27. package/dist/site/release-provenance.json +12 -0
  28. package/dist/site/schemas/dev-delivery-authority-v2.schema.json +442 -0
  29. package/dist/site/schemas/release-passport-v1.schema.json +3 -0
  30. package/dist/site/site-manifest.json +22 -14
  31. package/dist/site/workflow-registry.json +15 -7
  32. package/docs/MAP.md +5 -2
  33. package/docs/adopter-delivery-gate.md +106 -0
  34. package/docs/aws-us-elastic-runner-burst-plane.md +30 -3
  35. package/docs/cli-reference.md +200 -13
  36. package/docs/dev-alpha-candidate-patrol.md +8 -0
  37. package/docs/dev-delivery-qualification-landing-adr.md +137 -0
  38. package/docs/dev-delivery-warrant.md +164 -27
  39. package/docs/kfd-support.md +7 -2
  40. package/docs/next-development-transition.md +119 -0
  41. package/docs/node-api-reference.md +464 -277
  42. package/docs/release-governance.md +10 -7
  43. package/docs/release-passport.md +15 -2
  44. package/docs/release-train.md +46 -4
  45. package/docs/reusable-build-surface.md +26 -9
  46. package/docs/runtime-train-validation.md +6 -0
  47. package/docs/versioning.md +6 -2
  48. package/package.json +21 -6
  49. package/packages/core/README.md +25 -0
  50. package/packages/core/adopter-delivery-gate.js +576 -0
  51. package/packages/core/adopter-delivery-json.js +66 -0
  52. package/packages/core/adopter-delivery-passport.js +259 -0
  53. package/packages/core/adopter-delivery-vectors.js +158 -0
  54. package/packages/core/adopter-delivery-vectors.json +77 -0
  55. package/packages/core/artifact-verification-envelope.js +5 -5
  56. package/packages/core/buildchain-agent-manuals.js +1 -0
  57. package/packages/core/buildchain-channel-identity.js +118 -0
  58. package/packages/core/buildchain-compatibility-proof.js +54 -0
  59. package/packages/core/buildchain-contract.js +7 -0
  60. package/packages/core/buildchain-delivery-bootstrap.js +240 -0
  61. package/packages/core/buildchain-delivery-infrastructure.js +164 -0
  62. package/packages/core/channel-candidate.js +8 -0
  63. package/packages/core/channel-promotion-baseline.js +52 -0
  64. package/packages/core/controller-evidence.js +2 -1
  65. package/packages/core/dev-alpha-candidate-selection.js +10 -2
  66. package/packages/core/dev-delivery-authority.js +996 -0
  67. package/packages/core/dev-delivery-native-proof.js +418 -0
  68. package/packages/core/dev-delivery-warrant-settlement.js +67 -20
  69. package/packages/core/dev-delivery-warrant.js +141 -48
  70. package/packages/core/kfd-adopter-category-driver.js +167 -0
  71. package/packages/core/kfd-adopter-manifest.js +49 -50
  72. package/packages/core/legacy-kfd-adopter-driver.js +167 -0
  73. package/packages/core/next-development-candidate-reservation.js +186 -0
  74. package/packages/core/next-development-controller.js +726 -0
  75. package/packages/core/next-development-projection.js +288 -0
  76. package/packages/core/next-development-transition.js +738 -0
  77. package/packages/core/paper-agent-entry.js +7 -4
  78. package/packages/core/paper.js +14 -7
  79. package/packages/core/release-blocker-priority.js +192 -0
  80. package/packages/core/release-passport-contract.js +10 -6
  81. package/packages/core/release-passport.js +29 -12
  82. package/packages/core/release-train.js +220 -0
  83. package/scripts/aws-macos-jit-controller-core.mjs +239 -4
  84. package/scripts/aws-macos-jit-controller.mjs +198 -2
  85. package/scripts/aws-macos-jit-instance-rehydrate.mjs +260 -0
  86. package/scripts/aws-macos-jit-source-rebind.mjs +235 -14
  87. package/scripts/aws-macos-jit.mjs +12 -0
  88. package/scripts/buildchain-channel-router.mjs +18 -2
  89. package/scripts/buildchain-cli-help.mjs +9 -2
  90. package/scripts/buildchain-contract-lock.mjs +11 -1
  91. package/scripts/check-internal-architecture.mjs +1 -0
  92. package/scripts/check-inventory.mjs +14 -3
  93. package/scripts/dev-alpha-candidate-patrol.mjs +22 -1
  94. package/scripts/dev-delivery-authority.mjs +368 -0
  95. package/scripts/dev-delivery-native-run.mjs +235 -0
  96. package/scripts/dev-delivery-proof.mjs +64 -2
  97. package/scripts/dev-delivery-two-phase-resume.mjs +90 -0
  98. package/scripts/dev-delivery-two-phase.mjs +577 -0
  99. package/scripts/dev-delivery-warrant.mjs +47 -5
  100. package/scripts/dev-pr-delivery-warrant.mjs +19 -14
  101. package/scripts/generate-buildchain-kfd-witnesses.mjs +88 -94
  102. package/scripts/generate-channel-build-workflow.mjs +82 -31
  103. package/scripts/generate-next-development-guidance.mjs +49 -0
  104. package/scripts/generate-site-bundle.mjs +8 -3
  105. package/scripts/init-repo.mjs +135 -62
  106. package/scripts/next-development-self-dogfood-harness.mjs +409 -0
  107. package/scripts/next-development-self-dogfood.mjs +532 -0
  108. package/scripts/next-development-transition.mjs +47 -0
  109. package/scripts/promotion-channel-router.mjs +5 -3
  110. package/scripts/release-candidate-tail-reseal.mjs +426 -0
  111. package/scripts/release-train-self-dogfood.mjs +579 -0
  112. package/scripts/runtime-ref-core.mjs +4 -17
  113. package/scripts/seal-artifact-signing-requests.mjs +7 -4
  114. package/scripts/site-capability-metadata.mjs +23 -1
  115. package/scripts/stable-candidate-qualification.mjs +7 -7
  116. package/scripts/workflow-call-contract.mjs +1 -1
  117. package/templates/native-dev-delivery.yml +86 -0
@@ -1378,12 +1378,20 @@ async function handleDevCommand(args) {
1378
1378
  runScript("dev-delivery-warrant.mjs", devArgs);
1379
1379
  return;
1380
1380
  }
1381
+ if (subcommand === "authority") {
1382
+ runScript("dev-delivery-authority.mjs", devArgs);
1383
+ return;
1384
+ }
1381
1385
  if (subcommand === "proof") {
1382
1386
  runScript("dev-delivery-proof.mjs", devArgs);
1383
1387
  return;
1384
1388
  }
1389
+ if (subcommand === "two-phase") {
1390
+ runScript("dev-delivery-two-phase.mjs", devArgs);
1391
+ return;
1392
+ }
1385
1393
  if (subcommand !== "merge-queue") {
1386
- throw new Error("usage: buildchain dev <pr-admit|merge-queue|warrant|proof> [options]");
1394
+ throw new Error("usage: buildchain dev <pr-admit|merge-queue|warrant|authority|proof|two-phase> [options]");
1387
1395
  }
1388
1396
  runScript("dev-merge-queue.mjs", devArgs);
1389
1397
  return;
@@ -0,0 +1,253 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://buildchain.libkungfu.dev/schemas/dev-delivery-authority-v2.schema.json",
4
+ "title": "Buildchain Dev Delivery Authority State v2",
5
+ "description": "Opt-in durable state separating bounded qualification-only leases from one exclusive merge_group Landing Warrant.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schemaVersion",
10
+ "contract",
11
+ "authorityMode",
12
+ "repository",
13
+ "protectedBase",
14
+ "generation",
15
+ "qualificationCounter",
16
+ "landingCounter",
17
+ "policy",
18
+ "qualificationLeases",
19
+ "landingWarrant",
20
+ "candidates",
21
+ "migration",
22
+ "updatedAt",
23
+ "stateRoot"
24
+ ],
25
+ "properties": {
26
+ "schemaVersion": { "const": 2 },
27
+ "contract": { "const": "kungfu-buildchain-dev-delivery-authority" },
28
+ "authorityMode": { "const": "bounded-qualification-landing" },
29
+ "repository": {
30
+ "type": "string",
31
+ "pattern": "^[^/\\s]+/[^/\\s]+$"
32
+ },
33
+ "protectedBase": {
34
+ "type": "string",
35
+ "pattern": "^dev/v[0-9]+/v[0-9]+\\.[0-9]+$"
36
+ },
37
+ "generation": { "type": "integer", "minimum": 0 },
38
+ "qualificationCounter": { "type": "integer", "minimum": 0 },
39
+ "landingCounter": { "type": "integer", "minimum": 0 },
40
+ "policy": {
41
+ "type": "object",
42
+ "additionalProperties": false,
43
+ "required": [
44
+ "maxQualificationLeases",
45
+ "qualificationLeaseSeconds",
46
+ "landingLeaseSeconds"
47
+ ],
48
+ "properties": {
49
+ "maxQualificationLeases": { "type": "integer", "minimum": 1 },
50
+ "qualificationLeaseSeconds": { "type": "integer", "minimum": 1 },
51
+ "landingLeaseSeconds": { "type": "integer", "minimum": 1 },
52
+ "maxLandingOvertakes": { "type": "integer", "minimum": 0 },
53
+ "maxQualificationAttempts": { "type": "integer", "minimum": 1 }
54
+ }
55
+ },
56
+ "qualificationLeases": {
57
+ "type": "array",
58
+ "items": { "$ref": "#/$defs/qualificationLease" }
59
+ },
60
+ "landingWarrant": {
61
+ "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/landingWarrant" }]
62
+ },
63
+ "candidates": {
64
+ "type": "array",
65
+ "items": { "$ref": "#/$defs/candidate" }
66
+ },
67
+ "migration": {
68
+ "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/migration" }]
69
+ },
70
+ "updatedAt": { "type": "string", "format": "date-time" },
71
+ "stateRoot": { "$ref": "#/$defs/root" }
72
+ },
73
+ "$defs": {
74
+ "root": {
75
+ "type": "string",
76
+ "pattern": "^sha256:[0-9a-f]{64}$"
77
+ },
78
+ "sha": {
79
+ "type": "string",
80
+ "pattern": "^[0-9a-f]{40}$"
81
+ },
82
+ "qualificationLease": {
83
+ "type": "object",
84
+ "additionalProperties": false,
85
+ "required": [
86
+ "schema",
87
+ "authority",
88
+ "mergeGroupAdmission",
89
+ "candidateId",
90
+ "token",
91
+ "generation",
92
+ "issuedAt",
93
+ "expiresAt"
94
+ ],
95
+ "properties": {
96
+ "schema": {
97
+ "const": "kungfu.buildchain.dev-delivery-qualification-lease/v1"
98
+ },
99
+ "authority": { "const": "qualification-only" },
100
+ "mergeGroupAdmission": { "const": false },
101
+ "candidateId": { "$ref": "#/$defs/root" },
102
+ "token": { "$ref": "#/$defs/root" },
103
+ "generation": { "type": "integer", "minimum": 1 },
104
+ "issuedAt": { "type": "string", "format": "date-time" },
105
+ "heartbeatAt": { "type": "string", "format": "date-time" },
106
+ "expiresAt": { "type": "string", "format": "date-time" }
107
+ }
108
+ },
109
+ "landingWarrant": {
110
+ "type": "object",
111
+ "additionalProperties": false,
112
+ "required": [
113
+ "schema",
114
+ "authority",
115
+ "mergeGroupAdmission",
116
+ "candidateId",
117
+ "token",
118
+ "generation",
119
+ "issuedAt",
120
+ "expiresAt"
121
+ ],
122
+ "properties": {
123
+ "schema": {
124
+ "const": "kungfu.buildchain.dev-delivery-landing-warrant/v1"
125
+ },
126
+ "authority": { "const": "merge-group-admission" },
127
+ "mergeGroupAdmission": { "const": true },
128
+ "candidateId": { "$ref": "#/$defs/root" },
129
+ "token": { "$ref": "#/$defs/root" },
130
+ "generation": { "type": "integer", "minimum": 1 },
131
+ "issuedAt": { "type": "string", "format": "date-time" },
132
+ "heartbeatAt": { "type": "string", "format": "date-time" },
133
+ "expiresAt": { "type": "string", "format": "date-time" }
134
+ }
135
+ },
136
+ "qualification": {
137
+ "type": "object",
138
+ "additionalProperties": false,
139
+ "required": ["evidenceRoot", "qualifiedAt"],
140
+ "properties": {
141
+ "evidenceRoot": { "$ref": "#/$defs/root" },
142
+ "qualifiedAt": { "type": "string", "format": "date-time" }
143
+ }
144
+ },
145
+ "terminal": {
146
+ "type": "object",
147
+ "additionalProperties": false,
148
+ "required": ["outcome", "evidenceRoot", "reason", "settledAt"],
149
+ "properties": {
150
+ "outcome": {
151
+ "enum": ["merged", "terminal-failure", "dequeued", "cancelled"]
152
+ },
153
+ "evidenceRoot": { "$ref": "#/$defs/root" },
154
+ "reason": { "type": "string" },
155
+ "settledAt": { "type": "string", "format": "date-time" }
156
+ }
157
+ },
158
+ "migration": {
159
+ "type": "object",
160
+ "additionalProperties": false,
161
+ "required": ["schema", "legacyContract", "legacyStateRoot", "migratedAt"],
162
+ "properties": {
163
+ "schema": {
164
+ "const": "kungfu.buildchain.dev-delivery-authority-migration/v1"
165
+ },
166
+ "legacyContract": {
167
+ "const": "kungfu-buildchain-dev-delivery-warrant-queue"
168
+ },
169
+ "legacyStateRoot": { "$ref": "#/$defs/root" },
170
+ "migratedAt": { "type": "string", "format": "date-time" }
171
+ }
172
+ },
173
+ "candidate": {
174
+ "type": "object",
175
+ "additionalProperties": false,
176
+ "required": [
177
+ "repository",
178
+ "protectedBase",
179
+ "pullRequestNumber",
180
+ "assignmentRoot",
181
+ "initiativeRoot",
182
+ "sourceIdentityRoot",
183
+ "deliveryClass",
184
+ "candidateId",
185
+ "sourceHead",
186
+ "sourcePatchRoot",
187
+ "sourceProofRoot",
188
+ "planRoot",
189
+ "closureRoot",
190
+ "dependencyRoot",
191
+ "toolchainRoot",
192
+ "enqueuedAt",
193
+ "updatedAt",
194
+ "status",
195
+ "qualification",
196
+ "terminal"
197
+ ],
198
+ "properties": {
199
+ "repository": { "type": "string" },
200
+ "protectedBase": { "type": "string" },
201
+ "pullRequestNumber": { "type": "integer", "minimum": 1 },
202
+ "assignmentRoot": { "$ref": "#/$defs/root" },
203
+ "initiativeRoot": { "$ref": "#/$defs/root" },
204
+ "sourceIdentityRoot": { "$ref": "#/$defs/root" },
205
+ "deliveryClass": {
206
+ "enum": [
207
+ "non-native-fast",
208
+ "native-proof-required",
209
+ "cross-platform",
210
+ "release"
211
+ ]
212
+ },
213
+ "identitySemantics": { "const": "chained-attempt-v2" },
214
+ "predecessorCandidateId": { "$ref": "#/$defs/root" },
215
+ "candidateId": { "$ref": "#/$defs/root" },
216
+ "sourceHead": { "$ref": "#/$defs/sha" },
217
+ "sourcePatchRoot": { "$ref": "#/$defs/root" },
218
+ "sourceProofRoot": { "$ref": "#/$defs/root" },
219
+ "planRoot": { "$ref": "#/$defs/root" },
220
+ "closureRoot": { "$ref": "#/$defs/root" },
221
+ "dependencyRoot": { "$ref": "#/$defs/root" },
222
+ "toolchainRoot": { "$ref": "#/$defs/root" },
223
+ "qualificationDomains": {
224
+ "type": "array",
225
+ "uniqueItems": true,
226
+ "items": { "$ref": "#/$defs/root" }
227
+ },
228
+ "qualificationAttempts": { "type": "integer", "minimum": 0 },
229
+ "landingOvertakes": { "type": "integer", "minimum": 0 },
230
+ "enqueuedAt": { "type": "string", "format": "date-time" },
231
+ "updatedAt": { "type": "string", "format": "date-time" },
232
+ "status": {
233
+ "enum": [
234
+ "queued",
235
+ "qualifying",
236
+ "qualified",
237
+ "landing",
238
+ "merged",
239
+ "terminal-failure",
240
+ "dequeued",
241
+ "cancelled"
242
+ ]
243
+ },
244
+ "qualification": {
245
+ "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/qualification" }]
246
+ },
247
+ "terminal": {
248
+ "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/terminal" }]
249
+ }
250
+ }
251
+ }
252
+ }
253
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kfd-4-observer-perspective",
4
+ "standard": "kfd-4",
5
+ "id": "buildchain-release-maintainer-view",
6
+ "observer": { "id": "buildchain-release-maintainer", "kind": "human" },
7
+ "acceptedFacts": [
8
+ { "sourceId": "kungfu-systems/buildchain@{{SOURCE_SHA}}", "sourceKind": "repository" }
9
+ ],
10
+ "projectionPolicy": {
11
+ "policyVersion": "1",
12
+ "causalDominance": true,
13
+ "tieBreaker": "source-coordinate"
14
+ },
15
+ "verification": { "result": "pass" }
16
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kfd-4-perspective-replay",
4
+ "standard": "kfd-4",
5
+ "replayId": "buildchain-release-product-contrast",
6
+ "mode": "contrastive",
7
+ "sourceViews": [
8
+ {
9
+ "id": "maintainer",
10
+ "kind": "observer-view",
11
+ "coordinate": "git://kungfu-systems/buildchain@{{SOURCE_SHA}}",
12
+ "observer": "buildchain-release-maintainer",
13
+ "perspective": "release-integrity",
14
+ "acceptedFactCut": "git://kungfu-systems/buildchain@{{SOURCE_SHA}}",
15
+ "naturalObjects": ["release"],
16
+ "consequences": ["published artifact"],
17
+ "knownGaps": []
18
+ },
19
+ {
20
+ "id": "consumer",
21
+ "kind": "observer-view",
22
+ "coordinate": "npm://@kungfu-tech/buildchain@{{SOURCE_SHA}}",
23
+ "observer": "buildchain-release-consumer",
24
+ "perspective": "artifact-consumption",
25
+ "acceptedFactCut": "artifact://published-package",
26
+ "naturalObjects": ["installed package"],
27
+ "consequences": ["local build execution"],
28
+ "knownGaps": ["consumer runtime state"]
29
+ }
30
+ ],
31
+ "replayObserver": {
32
+ "id": "buildchain",
33
+ "kind": "service",
34
+ "purpose": "retain source and artifact fact boundaries"
35
+ },
36
+ "reconstruction": {
37
+ "policyVersion": "1",
38
+ "sharedContext": "same source-bound release",
39
+ "preservedElements": ["observer", "accepted-fact-cut", "evidence-boundary"],
40
+ "declaredLoss": ["consumer runtime state"],
41
+ "degradedState": "none"
42
+ },
43
+ "contrast": {
44
+ "dimensions": ["evidence-boundary"],
45
+ "mismatches": [
46
+ {
47
+ "sourceViewIds": ["maintainer", "consumer"],
48
+ "observation": "source and installed artifact evidence have different custody",
49
+ "primitiveSignal": "inconclusive"
50
+ }
51
+ ]
52
+ },
53
+ "verification": {
54
+ "result": "pass",
55
+ "evidence": ["evidence/projection-fsck.json"]
56
+ }
57
+ }
@@ -0,0 +1,47 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kungfu-buildchain-next-development-transition/v1",
4
+ "idempotencyKey": "sha256:cf805c1933cbc3e571c21af3ae030139bebafb08e2436b3c479c411b2cd2d22c",
5
+ "repository": "example/widget",
6
+ "completedAlpha": {
7
+ "outcome": "succeeded",
8
+ "version": "1.4.2-alpha.7",
9
+ "exactTag": "v1.4.2-alpha.7",
10
+ "releaseSha": "1111111111111111111111111111111111111111",
11
+ "treeSha": "2222222222222222222222222222222222222222",
12
+ "publicationRoot": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
13
+ "completedAt": "2026-08-11T01:00:00.000Z"
14
+ },
15
+ "completedAlphaRoot": "sha256:18e65c63aba0df789e0b0e68903733825d87e292b82bcb8fd3793ca45dca6266",
16
+ "alphaOutcome": "preserved-success",
17
+ "model": {
18
+ "strategy": "anchored",
19
+ "next": "manual"
20
+ },
21
+ "target": {
22
+ "version": null,
23
+ "anchor": null
24
+ },
25
+ "declaredPaths": ["package.json", "release.json"],
26
+ "adapter": {
27
+ "environmentVariable": "BUILDCHAIN_VERSION",
28
+ "sourcePaths": ["package.json"],
29
+ "derivedPaths": [],
30
+ "allowedChangePaths": ["package.json"],
31
+ "readOnlyPaths": ["release.json"],
32
+ "derivationStage": null,
33
+ "verificationStage": "lifecycle.verify"
34
+ },
35
+ "effectBounds": {
36
+ "allowedPaths": ["package.json"],
37
+ "refUpdates": [],
38
+ "forbiddenRefNamespaces": ["refs/heads/alpha/", "refs/tags/"]
39
+ },
40
+ "state": {
41
+ "status": "waiting-anchor",
42
+ "generation": 1,
43
+ "stateRoot": "sha256:4bbca86f960a7c1a10d76d01736422e3129f3f16d3e69e0800a0829201122dd4"
44
+ },
45
+ "materialization": null,
46
+ "transitions": []
47
+ }
@@ -0,0 +1,47 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "contract": "kungfu-buildchain-next-development-transition/v1",
4
+ "idempotencyKey": "sha256:37ee52799584a989b059db060b7ce062feb56fbeff452033245046fdf3b21e78",
5
+ "repository": "example/widget",
6
+ "completedAlpha": {
7
+ "outcome": "succeeded",
8
+ "version": "1.4.2-alpha.7",
9
+ "exactTag": "v1.4.2-alpha.7",
10
+ "releaseSha": "1111111111111111111111111111111111111111",
11
+ "treeSha": "2222222222222222222222222222222222222222",
12
+ "publicationRoot": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
13
+ "completedAt": "2026-08-11T01:00:00.000Z"
14
+ },
15
+ "completedAlphaRoot": "sha256:18e65c63aba0df789e0b0e68903733825d87e292b82bcb8fd3793ca45dca6266",
16
+ "alphaOutcome": "preserved-success",
17
+ "model": {
18
+ "strategy": "semver",
19
+ "next": "auto"
20
+ },
21
+ "target": {
22
+ "version": "1.4.2-alpha.8",
23
+ "anchor": null
24
+ },
25
+ "declaredPaths": ["package.json"],
26
+ "adapter": {
27
+ "environmentVariable": "BUILDCHAIN_VERSION",
28
+ "sourcePaths": ["package.json"],
29
+ "derivedPaths": [],
30
+ "allowedChangePaths": ["package.json"],
31
+ "readOnlyPaths": [],
32
+ "derivationStage": null,
33
+ "verificationStage": "lifecycle.verify"
34
+ },
35
+ "effectBounds": {
36
+ "allowedPaths": ["package.json"],
37
+ "refUpdates": [],
38
+ "forbiddenRefNamespaces": ["refs/heads/alpha/", "refs/tags/"]
39
+ },
40
+ "state": {
41
+ "status": "planned",
42
+ "generation": 1,
43
+ "stateRoot": "sha256:4ef8ac1ff07cb14633994625e65a340acb3130ae56bbc88ee81504f09df3fa0f"
44
+ },
45
+ "materialization": null,
46
+ "transitions": []
47
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "contract": "kungfu-buildchain-next-development-version-model-fixtures/v1",
3
+ "positive": [
4
+ {
5
+ "name": "semver-auto",
6
+ "model": { "strategy": "semver", "next": "auto" }
7
+ },
8
+ {
9
+ "name": "anchored-manual",
10
+ "model": { "strategy": "anchored", "next": "manual" }
11
+ }
12
+ ],
13
+ "negative": [
14
+ {
15
+ "name": "semver-manual",
16
+ "model": { "strategy": "semver", "next": "manual" },
17
+ "error": "version model must be semver/auto or anchored/manual"
18
+ },
19
+ {
20
+ "name": "anchored-auto",
21
+ "model": { "strategy": "anchored", "next": "auto" },
22
+ "error": "version model must be semver/auto or anchored/manual"
23
+ },
24
+ {
25
+ "name": "semver-auto-with-anchor",
26
+ "model": { "strategy": "semver", "next": "auto" },
27
+ "anchor": {
28
+ "manifestPath": "release.json",
29
+ "manifestRoot": "sha256:4444444444444444444444444444444444444444444444444444444444444444"
30
+ },
31
+ "error": "semver/auto must not declare an anchor"
32
+ },
33
+ {
34
+ "name": "anchored-manual-target-without-anchor",
35
+ "model": { "strategy": "anchored", "next": "manual" },
36
+ "targetVersion": "22.1.0",
37
+ "error": "anchored/manual targetVersion requires an anchor"
38
+ }
39
+ ]
40
+ }
@@ -0,0 +1,66 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://buildchain.libkungfu.dev/schemas/next-development-request-v1.schema.json",
4
+ "title": "Buildchain Next-development Request v1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["contract", "repository", "completedAlpha", "recordedAt"],
8
+ "properties": {
9
+ "contract": {
10
+ "const": "kungfu-buildchain-next-development-request/v1"
11
+ },
12
+ "repository": {
13
+ "type": "string",
14
+ "pattern": "^[^/\\s]+/[^/\\s]+$"
15
+ },
16
+ "completedAlpha": { "$ref": "#/$defs/completedAlpha" },
17
+ "targetVersion": { "$ref": "#/$defs/semver" },
18
+ "anchor": { "$ref": "#/$defs/anchor" },
19
+ "recordedAt": { "type": "string", "format": "date-time" }
20
+ },
21
+ "$defs": {
22
+ "gitSha": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
23
+ "root": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" },
24
+ "semver": {
25
+ "type": "string",
26
+ "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$"
27
+ },
28
+ "completedAlpha": {
29
+ "type": "object",
30
+ "additionalProperties": false,
31
+ "required": [
32
+ "outcome",
33
+ "version",
34
+ "exactTag",
35
+ "releaseSha",
36
+ "treeSha",
37
+ "publicationRoot",
38
+ "completedAt"
39
+ ],
40
+ "properties": {
41
+ "outcome": { "const": "succeeded" },
42
+ "version": {
43
+ "type": "string",
44
+ "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)-alpha\\.(0|[1-9][0-9]*)$"
45
+ },
46
+ "exactTag": { "type": "string", "minLength": 1 },
47
+ "releaseSha": { "$ref": "#/$defs/gitSha" },
48
+ "treeSha": { "$ref": "#/$defs/gitSha" },
49
+ "publicationRoot": { "$ref": "#/$defs/root" },
50
+ "completedAt": { "type": "string", "format": "date-time" }
51
+ }
52
+ },
53
+ "anchor": {
54
+ "type": "object",
55
+ "additionalProperties": false,
56
+ "required": ["manifestPath", "manifestRoot"],
57
+ "properties": {
58
+ "manifestPath": {
59
+ "type": "string",
60
+ "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))[^\\s]+$"
61
+ },
62
+ "manifestRoot": { "$ref": "#/$defs/root" }
63
+ }
64
+ }
65
+ }
66
+ }