@kungfu-tech/buildchain 4.1.3-alpha.1 → 4.1.3-alpha.2

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 (202) hide show
  1. package/architecture/action-taxonomy.json +16 -0
  2. package/architecture/agent-change-map.md +239 -2
  3. package/architecture/ci-lane-change-budget.json +289 -0
  4. package/architecture/decisions/0005-minimal-consumer-contract.md +122 -0
  5. package/architecture/decisions/0006-business-attempt-journal.md +89 -0
  6. package/architecture/decisions/0007-hosted-pipeline-controller.md +106 -0
  7. package/architecture/decisions/0008-pipeline-product-publication.md +99 -0
  8. package/architecture/internal-capabilities.json +331 -2
  9. package/architecture/maintainability-debt.json +3 -1
  10. package/architecture/maintainability-policy.json +8 -8
  11. package/architecture/minimal-consumer-migration.json +7558 -0
  12. package/architecture/release-topology.json +245 -11
  13. package/architecture/universal-workflow-bootstrap.json +10 -0
  14. package/architecture/universal-workflow-capability-policy.json +1 -1
  15. package/architecture/workflow-taxonomy.json +55 -0
  16. package/dist/readers/business-attempt.cjs +805 -0
  17. package/dist/site/buildchain-contract.json +7 -5
  18. package/dist/site/buildchain-site.json +18 -13
  19. package/dist/site/capability-registry.json +3 -3
  20. package/dist/site/kfd-claims.json +311 -10
  21. package/dist/site/kfd-upstream-aggregate.json +1 -1
  22. package/dist/site/manual-registry.json +1 -1
  23. package/dist/site/node-api-registry.json +7 -7
  24. package/dist/site/page-registry.json +13 -8
  25. package/dist/site/public-surface-audit.json +201 -7
  26. package/dist/site/publication-authority-registry.json +121 -1
  27. package/dist/site/publication-registry.json +4 -4
  28. package/dist/site/site-manifest.json +5 -5
  29. package/dist/site/workflow-registry.json +416 -7
  30. package/docs/node-api-reference.md +11 -11
  31. package/docs/runtime-entry.md +45 -5
  32. package/docs/workflow-catalog.md +5 -0
  33. package/package.json +4 -3
  34. package/packages/core/consumer/contract/entries.js +85 -0
  35. package/packages/core/consumer/contract/examples.js +96 -0
  36. package/packages/core/consumer/contract/identity.js +65 -0
  37. package/packages/core/consumer/contract/inspection.js +45 -0
  38. package/packages/core/consumer/contract/plan.js +99 -0
  39. package/packages/core/consumer/contract/products.js +101 -0
  40. package/packages/core/consumer/contract/shape.js +46 -0
  41. package/packages/core/dev-delivery/candidate/admission.js +9 -5
  42. package/packages/core/dev-delivery/candidate/reservation.js +11 -0
  43. package/packages/core/dev-delivery/candidate/source-paths.js +12 -4
  44. package/packages/core/dev-delivery/native/actions.js +7 -1
  45. package/packages/core/dev-delivery/native/heartbeat-action.js +16 -0
  46. package/packages/core/dev-delivery/native/heartbeat.js +6 -4
  47. package/packages/core/dev-delivery/queue/landing-action.js +5 -0
  48. package/packages/core/governance/buildchain-publication-authority.js +5 -0
  49. package/packages/core/paper/operations/bootstrap.js +2 -0
  50. package/packages/core/paper/paper-npm-bootstrap.js +2 -2
  51. package/packages/core/providers/github/attempt-index.js +60 -0
  52. package/packages/core/providers/github/attempt-journal.js +154 -0
  53. package/packages/core/providers/github/discussions/materials.js +7 -2
  54. package/packages/core/providers/github/pipeline-checkout.js +49 -0
  55. package/packages/core/providers/github/pipeline-events.js +52 -0
  56. package/packages/core/providers/github/pipeline-integration.js +95 -0
  57. package/packages/core/providers/github/pipeline-policy.js +213 -0
  58. package/packages/core/providers/github/pipeline-product-payload.js +50 -0
  59. package/packages/core/providers/github/pipeline-product-release.js +191 -0
  60. package/packages/core/providers/github/pipeline-publication-artifacts.js +153 -0
  61. package/packages/core/providers/github/pipeline-run-entry.js +86 -0
  62. package/packages/core/providers/github/pipeline-runs.js +132 -0
  63. package/packages/core/providers/github/pipeline-source.js +178 -0
  64. package/packages/core/providers/github/pipeline-version.js +201 -0
  65. package/packages/core/providers/github/pipeline-worker.js +108 -0
  66. package/packages/core/publication/candidate/registry-hydration.js +2 -2
  67. package/packages/core/publication/npm/pack-preview.js +2 -2
  68. package/packages/core/publication/npm/pack-result.js +31 -0
  69. package/packages/core/publication/npm/package.js +3 -6
  70. package/packages/core/publication/npm/pipeline-channel.js +87 -0
  71. package/packages/core/publication/npm/pipeline-provider.js +109 -0
  72. package/packages/core/publication/npm/registry.js +12 -9
  73. package/packages/core/publication/pipeline/actions.js +100 -0
  74. package/packages/core/publication/pipeline/apply.js +182 -0
  75. package/packages/core/publication/pipeline/build-segments.js +107 -0
  76. package/packages/core/publication/pipeline/capsules.js +89 -0
  77. package/packages/core/publication/pipeline/context.js +39 -0
  78. package/packages/core/publication/pipeline/development-anchor.js +91 -0
  79. package/packages/core/publication/pipeline/development-current.js +63 -0
  80. package/packages/core/publication/pipeline/development-pr.js +85 -0
  81. package/packages/core/publication/pipeline/development-proof.js +76 -0
  82. package/packages/core/publication/pipeline/development-transition.js +112 -0
  83. package/packages/core/publication/pipeline/distribution.js +124 -0
  84. package/packages/core/publication/pipeline/documents.js +156 -0
  85. package/packages/core/publication/pipeline/effects.js +162 -0
  86. package/packages/core/publication/pipeline/files.js +66 -0
  87. package/packages/core/publication/pipeline/imported-materials.js +32 -0
  88. package/packages/core/publication/pipeline/journal.js +110 -0
  89. package/packages/core/publication/pipeline/next-development.js +116 -0
  90. package/packages/core/publication/pipeline/pack.js +151 -0
  91. package/packages/core/publication/pipeline/package-policy.js +22 -0
  92. package/packages/core/publication/pipeline/plan.js +114 -0
  93. package/packages/core/publication/pipeline/prepare.js +151 -0
  94. package/packages/core/publication/pipeline/qualification.js +170 -0
  95. package/packages/core/publication/pipeline/qualify.js +104 -0
  96. package/packages/core/publication/pipeline/recovery-admission.js +122 -0
  97. package/packages/core/publication/pipeline/recovery-build-download.js +80 -0
  98. package/packages/core/publication/pipeline/recovery-build-plan.js +122 -0
  99. package/packages/core/publication/pipeline/recovery-build-readback.js +68 -0
  100. package/packages/core/publication/pipeline/recovery-capsules.js +54 -0
  101. package/packages/core/publication/pipeline/recovery-import.js +80 -0
  102. package/packages/core/publication/pipeline/recovery-inspection.js +218 -0
  103. package/packages/core/publication/pipeline/recovery-materials.js +104 -0
  104. package/packages/core/publication/pipeline/recovery-plan.js +46 -0
  105. package/packages/core/publication/pipeline/recovery-prepare.js +73 -0
  106. package/packages/core/publication/pipeline/recovery-qualification.js +128 -0
  107. package/packages/core/publication/pipeline/recovery-readback.js +56 -0
  108. package/packages/core/publication/pipeline/recovery-signing.js +58 -0
  109. package/packages/core/publication/pipeline/sealed-products.js +79 -0
  110. package/packages/core/publication/pipeline/settle.js +43 -0
  111. package/packages/core/publication/pipeline/signing.js +140 -0
  112. package/packages/core/publication/pipeline/source-plan.js +83 -0
  113. package/packages/core/publication/pipeline/version.js +81 -0
  114. package/packages/core/publication/publication-reproducibility.js +2 -2
  115. package/packages/core/release/promote-candidate/product-provider-adapters.js +4 -3
  116. package/packages/core/release/promote-ref/internal/npm-existing-evidence.js +2 -1
  117. package/packages/core/release/promote-ref/internal/publish-command.js +16 -5
  118. package/packages/core/runtime/buildchain-domain.wasm +0 -0
  119. package/packages/core/runtime/domain-wasm-artifact.js +2 -2
  120. package/packages/core/runtime/entry/actions.js +27 -25
  121. package/packages/core/runtime/entry/attempt.js +25 -0
  122. package/packages/core/runtime/entry/selection.js +14 -0
  123. package/packages/core/runtime/entry/source.js +62 -0
  124. package/packages/core/workflow/attempt/identity.js +165 -0
  125. package/packages/core/workflow/attempt/journal.js +87 -0
  126. package/packages/core/workflow/attempt/materials.js +72 -0
  127. package/packages/core/workflow/attempt/reader-entry.js +12 -0
  128. package/packages/core/workflow/attempt/reader.js +149 -0
  129. package/packages/core/workflow/attempt/records.js +153 -0
  130. package/packages/core/workflow/attempt/store.js +75 -0
  131. package/packages/core/workflow/commands/pipeline-build.mjs +23 -0
  132. package/packages/core/workflow/pipeline/action-output.js +11 -0
  133. package/packages/core/workflow/pipeline/actions.js +62 -0
  134. package/packages/core/workflow/pipeline/build-control.js +140 -0
  135. package/packages/core/workflow/pipeline/build-evidence.js +92 -0
  136. package/packages/core/workflow/pipeline/build-qualification.js +145 -0
  137. package/packages/core/workflow/pipeline/build-result.js +69 -0
  138. package/packages/core/workflow/pipeline/build.js +95 -0
  139. package/packages/core/workflow/pipeline/cancellation.js +169 -0
  140. package/packages/core/workflow/pipeline/channel-control.js +127 -0
  141. package/packages/core/workflow/pipeline/controller.js +133 -0
  142. package/packages/core/workflow/pipeline/delivery-control.js +204 -0
  143. package/packages/core/workflow/pipeline/delivery-observation.js +118 -0
  144. package/packages/core/workflow/pipeline/delivery-request.js +198 -0
  145. package/packages/core/workflow/pipeline/events.js +84 -0
  146. package/packages/core/workflow/pipeline/fence.js +42 -0
  147. package/packages/core/workflow/pipeline/group-control.js +56 -0
  148. package/packages/core/workflow/pipeline/guard-build.js +37 -0
  149. package/packages/core/workflow/pipeline/guard.js +156 -0
  150. package/packages/core/workflow/pipeline/host.js +114 -0
  151. package/packages/core/workflow/pipeline/materials.js +58 -0
  152. package/packages/core/workflow/pipeline/notifications.js +36 -0
  153. package/packages/core/workflow/pipeline/parent-notification.js +27 -0
  154. package/packages/core/workflow/pipeline/platforms.js +21 -0
  155. package/packages/core/workflow/pipeline/progress.js +108 -0
  156. package/packages/core/workflow/pipeline/projection.js +20 -0
  157. package/packages/core/workflow/pipeline/reconcile.js +194 -0
  158. package/packages/core/workflow/pipeline/recovery-action.js +30 -0
  159. package/packages/core/workflow/pipeline/recovery-admission.js +122 -0
  160. package/packages/core/workflow/pipeline/recovery-build-control.js +95 -0
  161. package/packages/core/workflow/pipeline/recovery-build-evidence.js +71 -0
  162. package/packages/core/workflow/pipeline/recovery-build.js +121 -0
  163. package/packages/core/workflow/pipeline/recovery-controller.js +91 -0
  164. package/packages/core/workflow/pipeline/recovery-integration.js +66 -0
  165. package/packages/core/workflow/pipeline/recovery-merge-proof.js +90 -0
  166. package/packages/core/workflow/pipeline/recovery-ownership-settlement.js +150 -0
  167. package/packages/core/workflow/pipeline/recovery-ownership.js +91 -0
  168. package/packages/core/workflow/pipeline/recovery-plan.js +126 -0
  169. package/packages/core/workflow/pipeline/recovery-runtime.js +68 -0
  170. package/packages/core/workflow/pipeline/recovery-session.js +129 -0
  171. package/packages/core/workflow/pipeline/recovery-transition.js +135 -0
  172. package/packages/core/workflow/pipeline/recovery-unrecorded-build.js +74 -0
  173. package/packages/core/workflow/pipeline/runtime-source.js +111 -0
  174. package/packages/core/workflow/pipeline/selection.js +106 -0
  175. package/packages/core/workflow/pipeline/session.js +72 -0
  176. package/packages/core/workflow/pipeline/settlement.js +137 -0
  177. package/packages/core/workflow/pipeline/wake.js +38 -0
  178. package/packages/core/workflow/pipeline/web-status.js +108 -0
  179. package/scripts/build-release-discussion-reader.mjs +11 -7
  180. package/scripts/check-pipeline-publication-topology.mjs +36 -0
  181. package/scripts/check-release-topology.mjs +6 -1
  182. package/scripts/generate-minimal-consumer-contract.mjs +155 -0
  183. package/scripts/verify-golden-path.mjs +5 -1
  184. package/templates/minimal-consumer/binary/.buildchain/buildchain.toml +45 -0
  185. package/templates/minimal-consumer/binary/.github/workflows/buildchain-recover.yml +30 -0
  186. package/templates/minimal-consumer/binary/.github/workflows/buildchain.yml +28 -0
  187. package/templates/minimal-consumer/binary/package.json +6 -0
  188. package/templates/minimal-consumer/binary/src/build.mjs +5 -0
  189. package/templates/minimal-consumer/binary/src/hello.c +2 -0
  190. package/templates/minimal-consumer/binary/src/verify.mjs +3 -0
  191. package/templates/minimal-consumer/npm/.buildchain/buildchain.toml +46 -0
  192. package/templates/minimal-consumer/npm/.github/workflows/buildchain-recover.yml +30 -0
  193. package/templates/minimal-consumer/npm/.github/workflows/buildchain.yml +28 -0
  194. package/templates/minimal-consumer/npm/package.json +6 -0
  195. package/templates/minimal-consumer/npm/src/build.mjs +5 -0
  196. package/templates/minimal-consumer/npm/src/verify.mjs +3 -0
  197. package/templates/minimal-consumer/paper/.buildchain/buildchain.toml +45 -0
  198. package/templates/minimal-consumer/paper/.github/workflows/buildchain-recover.yml +30 -0
  199. package/templates/minimal-consumer/paper/.github/workflows/buildchain.yml +28 -0
  200. package/templates/minimal-consumer/paper/package.json +6 -0
  201. package/templates/minimal-consumer/paper/src/build.mjs +12 -0
  202. package/templates/minimal-consumer/paper/src/verify.mjs +3 -0
@@ -341,6 +341,18 @@
341
341
  "settlement": {
342
342
  "responsibility": "Retain immutable publication completion and verify its terminal receipt independently.",
343
343
  "operations": ["retain", "verify"]
344
+ },
345
+ "pipeline": {
346
+ "responsibility": "Prepare, independently qualify, publish and settle declared products inside one business attempt.",
347
+ "operations": [
348
+ "prepare",
349
+ "build",
350
+ "qualify",
351
+ "prepare-qualification",
352
+ "seal-qualification",
353
+ "apply",
354
+ "settle"
355
+ ]
344
356
  }
345
357
  }
346
358
  },
@@ -516,6 +528,10 @@
516
528
  "settlement": {
517
529
  "responsibility": "Seal candidate terminal evidence and reconcile successful protected backflow.",
518
530
  "operations": ["seal"]
531
+ },
532
+ "pipeline": {
533
+ "responsibility": "Reconcile source-bound business attempts through protected delivery and product verification.",
534
+ "operations": ["control", "build", "record-build", "wake", "recover"]
519
535
  }
520
536
  }
521
537
  },
@@ -135,6 +135,8 @@ Safe change route: Reduce one declared responsibility in its owning module, run
135
135
  - `.github/workflows/self-build-verify.yml`
136
136
  - `.github/workflows/self-release-promote.yml`
137
137
  - `.github/workflows/.release-binary-assets.yml`
138
+ - `.github/workflows/public-ops-dev-auto-merge.yml`
139
+ - `tests/release-topology.test.mjs`
138
140
 
139
141
  ## action-process-runtime
140
142
 
@@ -439,6 +441,38 @@ Owner: Buildchain build signing transactions maintainers
439
441
 
440
442
  - `node --test tests/signing-authority-transactions.test.mjs tests/native-artifact-signing-authority.test.mjs`
441
443
 
444
+ ## business-attempt-journal
445
+
446
+ Owner: Buildchain pipeline maintainers
447
+
448
+ ### Implementation
449
+
450
+ - `packages/core/workflow/attempt/identity.js`
451
+ - `packages/core/workflow/attempt/materials.js`
452
+ - `packages/core/workflow/attempt/reader-entry.js`
453
+ - `packages/core/workflow/attempt/reader.js`
454
+ - `packages/core/workflow/attempt/records.js`
455
+ - `packages/core/workflow/attempt/store.js`
456
+
457
+ ### Contracts
458
+
459
+ - `architecture/decisions/0006-business-attempt-journal.md`
460
+
461
+ ### Tests
462
+
463
+ - `tests/business-attempt-materials.test.mjs`
464
+ - `tests/business-attempt-store.test.mjs`
465
+ - `tests/business-attempt.test.mjs`
466
+
467
+ ### Generated outputs
468
+
469
+ - `dist/readers/business-attempt.cjs`
470
+
471
+ ### Minimal validation
472
+
473
+ - `node --test tests/business-attempt*.test.mjs`
474
+ - `node scripts/build-release-discussion-reader.mjs --check`
475
+
442
476
  ## cli-capability-adapters
443
477
 
444
478
  Owner: Buildchain CLI maintainers
@@ -1006,6 +1040,206 @@ Owner: Buildchain architecture maintainers
1006
1040
 
1007
1041
  - `node --test tests/internal-architecture.test.mjs tests/maintainability.test.mjs tests/maintainability-governance.test.mjs`
1008
1042
 
1043
+ ## minimal-consumer-contract
1044
+
1045
+ Owner: Buildchain consumer contract maintainers
1046
+
1047
+ ### Implementation
1048
+
1049
+ - `packages/core/consumer/contract/entries.js`
1050
+ - `packages/core/consumer/contract/examples.js`
1051
+ - `packages/core/consumer/contract/identity.js`
1052
+ - `packages/core/consumer/contract/inspection.js`
1053
+ - `packages/core/consumer/contract/plan.js`
1054
+ - `packages/core/consumer/contract/products.js`
1055
+ - `packages/core/consumer/contract/shape.js`
1056
+ - `scripts/generate-minimal-consumer-contract.mjs`
1057
+
1058
+ ### Contracts
1059
+
1060
+ - `architecture/decisions/0005-minimal-consumer-contract.md`
1061
+
1062
+ ### Tests
1063
+
1064
+ - `tests/minimal-consumer-contract.test.mjs`
1065
+
1066
+ ### Generated outputs
1067
+
1068
+ - `architecture/minimal-consumer-migration.json`
1069
+ - `templates/minimal-consumer`
1070
+
1071
+ ### Minimal validation
1072
+
1073
+ - `node --test tests/minimal-consumer-contract.test.mjs`
1074
+ - `node scripts/generate-minimal-consumer-contract.mjs --check`
1075
+
1076
+ ## minimal-consumer-pipeline
1077
+
1078
+ Owner: Buildchain pipeline maintainers
1079
+
1080
+ ### Implementation
1081
+
1082
+ - `packages/core/providers/github/attempt-index.js`
1083
+ - `packages/core/providers/github/attempt-journal.js`
1084
+ - `packages/core/providers/github/pipeline-checkout.js`
1085
+ - `packages/core/providers/github/pipeline-events.js`
1086
+ - `packages/core/providers/github/pipeline-integration.js`
1087
+ - `packages/core/providers/github/pipeline-policy.js`
1088
+ - `packages/core/providers/github/pipeline-run-entry.js`
1089
+ - `packages/core/providers/github/pipeline-runs.js`
1090
+ - `packages/core/providers/github/pipeline-source.js`
1091
+ - `packages/core/providers/github/pipeline-worker.js`
1092
+ - `packages/core/publication/pipeline/actions.js`
1093
+ - `packages/core/publication/pipeline/apply.js`
1094
+ - `packages/core/publication/pipeline/build-segments.js`
1095
+ - `packages/core/publication/pipeline/capsules.js`
1096
+ - `packages/core/publication/pipeline/context.js`
1097
+ - `packages/core/publication/pipeline/development-anchor.js`
1098
+ - `packages/core/publication/pipeline/development-current.js`
1099
+ - `packages/core/publication/pipeline/development-pr.js`
1100
+ - `packages/core/publication/pipeline/development-proof.js`
1101
+ - `packages/core/publication/pipeline/development-transition.js`
1102
+ - `packages/core/publication/pipeline/distribution.js`
1103
+ - `packages/core/publication/pipeline/documents.js`
1104
+ - `packages/core/publication/pipeline/effects.js`
1105
+ - `packages/core/publication/pipeline/files.js`
1106
+ - `packages/core/publication/pipeline/imported-materials.js`
1107
+ - `packages/core/publication/pipeline/journal.js`
1108
+ - `packages/core/publication/pipeline/next-development.js`
1109
+ - `packages/core/publication/pipeline/pack.js`
1110
+ - `packages/core/publication/pipeline/package-policy.js`
1111
+ - `packages/core/publication/pipeline/plan.js`
1112
+ - `packages/core/publication/pipeline/prepare.js`
1113
+ - `packages/core/publication/pipeline/qualification.js`
1114
+ - `packages/core/publication/pipeline/qualify.js`
1115
+ - `packages/core/publication/pipeline/recovery-admission.js`
1116
+ - `packages/core/publication/pipeline/recovery-build-download.js`
1117
+ - `packages/core/publication/pipeline/recovery-build-plan.js`
1118
+ - `packages/core/publication/pipeline/recovery-build-readback.js`
1119
+ - `packages/core/publication/pipeline/recovery-capsules.js`
1120
+ - `packages/core/publication/pipeline/recovery-import.js`
1121
+ - `packages/core/publication/pipeline/recovery-inspection.js`
1122
+ - `packages/core/publication/pipeline/recovery-materials.js`
1123
+ - `packages/core/publication/pipeline/recovery-plan.js`
1124
+ - `packages/core/publication/pipeline/recovery-prepare.js`
1125
+ - `packages/core/publication/pipeline/recovery-qualification.js`
1126
+ - `packages/core/publication/pipeline/recovery-readback.js`
1127
+ - `packages/core/publication/pipeline/recovery-signing.js`
1128
+ - `packages/core/publication/pipeline/sealed-products.js`
1129
+ - `packages/core/publication/pipeline/settle.js`
1130
+ - `packages/core/publication/pipeline/signing.js`
1131
+ - `packages/core/publication/pipeline/source-plan.js`
1132
+ - `packages/core/publication/pipeline/version.js`
1133
+ - `packages/core/workflow/attempt/journal.js`
1134
+ - `packages/core/workflow/commands/pipeline-build.mjs`
1135
+ - `packages/core/workflow/pipeline/action-output.js`
1136
+ - `packages/core/workflow/pipeline/actions.js`
1137
+ - `packages/core/workflow/pipeline/build-control.js`
1138
+ - `packages/core/workflow/pipeline/build-evidence.js`
1139
+ - `packages/core/workflow/pipeline/build-qualification.js`
1140
+ - `packages/core/workflow/pipeline/build-result.js`
1141
+ - `packages/core/workflow/pipeline/build.js`
1142
+ - `packages/core/workflow/pipeline/cancellation.js`
1143
+ - `packages/core/workflow/pipeline/channel-control.js`
1144
+ - `packages/core/workflow/pipeline/controller.js`
1145
+ - `packages/core/workflow/pipeline/delivery-control.js`
1146
+ - `packages/core/workflow/pipeline/delivery-observation.js`
1147
+ - `packages/core/workflow/pipeline/delivery-request.js`
1148
+ - `packages/core/workflow/pipeline/events.js`
1149
+ - `packages/core/workflow/pipeline/fence.js`
1150
+ - `packages/core/workflow/pipeline/group-control.js`
1151
+ - `packages/core/workflow/pipeline/guard-build.js`
1152
+ - `packages/core/workflow/pipeline/guard.js`
1153
+ - `packages/core/workflow/pipeline/host.js`
1154
+ - `packages/core/workflow/pipeline/materials.js`
1155
+ - `packages/core/workflow/pipeline/notifications.js`
1156
+ - `packages/core/workflow/pipeline/parent-notification.js`
1157
+ - `packages/core/workflow/pipeline/platforms.js`
1158
+ - `packages/core/workflow/pipeline/progress.js`
1159
+ - `packages/core/workflow/pipeline/projection.js`
1160
+ - `packages/core/workflow/pipeline/reconcile.js`
1161
+ - `packages/core/workflow/pipeline/recovery-action.js`
1162
+ - `packages/core/workflow/pipeline/recovery-admission.js`
1163
+ - `packages/core/workflow/pipeline/recovery-build-control.js`
1164
+ - `packages/core/workflow/pipeline/recovery-build-evidence.js`
1165
+ - `packages/core/workflow/pipeline/recovery-build.js`
1166
+ - `packages/core/workflow/pipeline/recovery-controller.js`
1167
+ - `packages/core/workflow/pipeline/recovery-integration.js`
1168
+ - `packages/core/workflow/pipeline/recovery-merge-proof.js`
1169
+ - `packages/core/workflow/pipeline/recovery-ownership-settlement.js`
1170
+ - `packages/core/workflow/pipeline/recovery-ownership.js`
1171
+ - `packages/core/workflow/pipeline/recovery-plan.js`
1172
+ - `packages/core/workflow/pipeline/recovery-runtime.js`
1173
+ - `packages/core/workflow/pipeline/recovery-session.js`
1174
+ - `packages/core/workflow/pipeline/recovery-transition.js`
1175
+ - `packages/core/workflow/pipeline/recovery-unrecorded-build.js`
1176
+ - `packages/core/workflow/pipeline/runtime-source.js`
1177
+ - `packages/core/workflow/pipeline/selection.js`
1178
+ - `packages/core/workflow/pipeline/session.js`
1179
+ - `packages/core/workflow/pipeline/settlement.js`
1180
+ - `packages/core/workflow/pipeline/wake.js`
1181
+ - `packages/core/workflow/pipeline/web-status.js`
1182
+
1183
+ ### Contracts
1184
+
1185
+ - `architecture/decisions/0007-hosted-pipeline-controller.md`
1186
+
1187
+ ### Tests
1188
+
1189
+ - `tests/business-attempt-journal.test.mjs`
1190
+ - `tests/github-attempt-journal.test.mjs`
1191
+ - `tests/pipeline-build-qualification.test.mjs`
1192
+ - `tests/pipeline-build.test.mjs`
1193
+ - `tests/pipeline-cancellation.test.mjs`
1194
+ - `tests/pipeline-channel.test.mjs`
1195
+ - `tests/pipeline-controller.test.mjs`
1196
+ - `tests/pipeline-delivery-request.test.mjs`
1197
+ - `tests/pipeline-distribution.test.mjs`
1198
+ - `tests/pipeline-events.test.mjs`
1199
+ - `tests/pipeline-fence.test.mjs`
1200
+ - `tests/pipeline-guard.test.mjs`
1201
+ - `tests/pipeline-index.test.mjs`
1202
+ - `tests/pipeline-integration.test.mjs`
1203
+ - `tests/pipeline-next-development.test.mjs`
1204
+ - `tests/pipeline-npm-channel.test.mjs`
1205
+ - `tests/pipeline-policy.test.mjs`
1206
+ - `tests/pipeline-progress.test.mjs`
1207
+ - `tests/pipeline-projection.test.mjs`
1208
+ - `tests/pipeline-publication-artifacts.test.mjs`
1209
+ - `tests/pipeline-publication-effects.test.mjs`
1210
+ - `tests/pipeline-publication-journal.test.mjs`
1211
+ - `tests/pipeline-publication-pack.test.mjs`
1212
+ - `tests/pipeline-publication-plan.test.mjs`
1213
+ - `tests/pipeline-publication-providers.test.mjs`
1214
+ - `tests/pipeline-publication-recovery-admission.test.mjs`
1215
+ - `tests/pipeline-publication-recovery-apply.test.mjs`
1216
+ - `tests/pipeline-publication-recovery-build.test.mjs`
1217
+ - `tests/pipeline-publication-recovery-signing.test.mjs`
1218
+ - `tests/pipeline-publication-version.test.mjs`
1219
+ - `tests/pipeline-reconcile.test.mjs`
1220
+ - `tests/pipeline-recovery-admission.test.mjs`
1221
+ - `tests/pipeline-recovery-build.test.mjs`
1222
+ - `tests/pipeline-recovery-controller.test.mjs`
1223
+ - `tests/pipeline-recovery-delivery.test.mjs`
1224
+ - `tests/pipeline-recovery-interruption.test.mjs`
1225
+ - `tests/pipeline-recovery-ownership.test.mjs`
1226
+ - `tests/pipeline-recovery-runtime-continuation.test.mjs`
1227
+ - `tests/pipeline-recovery-session.test.mjs`
1228
+ - `tests/pipeline-runs.test.mjs`
1229
+ - `tests/pipeline-runtime.test.mjs`
1230
+ - `tests/pipeline-settlement.test.mjs`
1231
+ - `tests/pipeline-source.test.mjs`
1232
+ - `tests/pipeline-web-status.test.mjs`
1233
+ - `tests/pipeline-worker.test.mjs`
1234
+
1235
+ ### Generated outputs
1236
+
1237
+ - None.
1238
+
1239
+ ### Minimal validation
1240
+
1241
+ - `node --test tests/pipeline-*.test.mjs tests/business-attempt-journal.test.mjs tests/github-attempt-journal.test.mjs`
1242
+
1009
1243
  ## npm-publication-transaction
1010
1244
 
1011
1245
  Owner: Buildchain npm publication transaction maintainers
@@ -1998,9 +2232,11 @@ Owner: Buildchain runtime maintainers
1998
2232
 
1999
2233
  - `packages/core/runtime/entry/actions.js`
2000
2234
  - `packages/core/runtime/entry/activation.js`
2235
+ - `packages/core/runtime/entry/attempt.js`
2001
2236
  - `packages/core/runtime/entry/github.js`
2002
2237
  - `packages/core/runtime/entry/recovery.js`
2003
2238
  - `packages/core/runtime/entry/selection.js`
2239
+ - `packages/core/runtime/entry/source.js`
2004
2240
  - `scripts/check-runtime-entry.mjs`
2005
2241
 
2006
2242
  ### Contracts
@@ -2010,10 +2246,11 @@ Owner: Buildchain runtime maintainers
2010
2246
 
2011
2247
  ### Tests
2012
2248
 
2013
- - `tests/runtime-entry-selection.test.mjs`
2249
+ - `tests/pipeline-recovery-runtime-continuation.test.mjs`
2014
2250
  - `tests/runtime-entry-activation.test.mjs`
2015
- - `tests/runtime-entry-provider.test.mjs`
2016
2251
  - `tests/runtime-entry-architecture.test.mjs`
2252
+ - `tests/runtime-entry-provider.test.mjs`
2253
+ - `tests/runtime-entry-selection.test.mjs`
2017
2254
 
2018
2255
  ### Generated outputs
2019
2256
 
@@ -2563,6 +2563,295 @@
2563
2563
  "expectedContributionSeconds": 0,
2564
2564
  "rationale": "Current 4.1 capability node. Budget uses the declared job timeout or the conservative six-hour provider ceiling; it is not a measured latency or a new claim of required-check authority."
2565
2565
  }
2566
+ },
2567
+ {
2568
+ "laneId": ".github/workflows/.ops-pipeline-delivery.yml#delivery",
2569
+ "authorityClass": "merge-critical-admission",
2570
+ "triggerClass": "reusable",
2571
+ "concurrencyPolicy": {
2572
+ "mode": "none",
2573
+ "cancelInProgress": false
2574
+ },
2575
+ "expectedRunnerMinutes": 360,
2576
+ "cancellationBehavior": "finish-started",
2577
+ "sloImpact": {
2578
+ "mergeCritical": true,
2579
+ "metric": "minimal pipeline bounded hosted execution",
2580
+ "expectedContributionSeconds": 21600,
2581
+ "rationale": "Owned runtime, metadata or product job boundary. Product matrix uses only declared platforms; native Warrant transfer waits for exact provider terminality. This is a conservative timeout budget, not measured latency."
2582
+ }
2583
+ },
2584
+ {
2585
+ "laneId": ".github/workflows/public-ops-pipeline.yml#runtime",
2586
+ "authorityClass": "evidence",
2587
+ "triggerClass": "reusable",
2588
+ "concurrencyPolicy": {
2589
+ "mode": "none",
2590
+ "cancelInProgress": false
2591
+ },
2592
+ "expectedRunnerMinutes": 5,
2593
+ "cancellationBehavior": "finish-started",
2594
+ "sloImpact": {
2595
+ "mergeCritical": false,
2596
+ "metric": "minimal pipeline bounded hosted execution",
2597
+ "expectedContributionSeconds": 300,
2598
+ "rationale": "Owned runtime, metadata or product job boundary. Product matrix uses only declared platforms; native Warrant transfer waits for exact provider terminality. This is a conservative timeout budget, not measured latency."
2599
+ }
2600
+ },
2601
+ {
2602
+ "laneId": ".github/workflows/public-ops-pipeline.yml#control",
2603
+ "authorityClass": "merge-critical-admission",
2604
+ "triggerClass": "reusable",
2605
+ "concurrencyPolicy": {
2606
+ "mode": "none",
2607
+ "cancelInProgress": false
2608
+ },
2609
+ "expectedRunnerMinutes": 20,
2610
+ "cancellationBehavior": "finish-started",
2611
+ "sloImpact": {
2612
+ "mergeCritical": true,
2613
+ "metric": "minimal pipeline bounded hosted execution",
2614
+ "expectedContributionSeconds": 1200,
2615
+ "rationale": "Owned runtime, metadata or product job boundary. Product matrix uses only declared platforms; native Warrant transfer waits for exact provider terminality. This is a conservative timeout budget, not measured latency."
2616
+ }
2617
+ },
2618
+ {
2619
+ "laneId": ".github/workflows/.ops-pipeline-execute.yml#build",
2620
+ "authorityClass": "merge-critical-required",
2621
+ "triggerClass": "reusable",
2622
+ "concurrencyPolicy": {
2623
+ "mode": "none",
2624
+ "cancelInProgress": false
2625
+ },
2626
+ "expectedRunnerMinutes": 60,
2627
+ "cancellationBehavior": "finish-started",
2628
+ "sloImpact": {
2629
+ "mergeCritical": true,
2630
+ "metric": "minimal pipeline bounded hosted execution",
2631
+ "expectedContributionSeconds": 3600,
2632
+ "rationale": "Owned runtime, metadata or product job boundary. Product matrix uses only declared platforms; native Warrant transfer waits for exact provider terminality. This is a conservative timeout budget, not measured latency."
2633
+ }
2634
+ },
2635
+ {
2636
+ "laneId": ".github/workflows/.ops-pipeline-execute.yml#record-build",
2637
+ "authorityClass": "merge-critical-required",
2638
+ "triggerClass": "reusable",
2639
+ "concurrencyPolicy": {
2640
+ "mode": "none",
2641
+ "cancelInProgress": false
2642
+ },
2643
+ "expectedRunnerMinutes": 15,
2644
+ "cancellationBehavior": "finish-started",
2645
+ "sloImpact": {
2646
+ "mergeCritical": true,
2647
+ "metric": "minimal pipeline bounded hosted execution",
2648
+ "expectedContributionSeconds": 900,
2649
+ "rationale": "Owned runtime, metadata or product job boundary. Product matrix uses only declared platforms; native Warrant transfer waits for exact provider terminality. This is a conservative timeout budget, not measured latency."
2650
+ }
2651
+ },
2652
+ {
2653
+ "laneId": ".github/workflows/.ops-pipeline-execute.yml#delivery",
2654
+ "authorityClass": "merge-critical-admission",
2655
+ "triggerClass": "reusable",
2656
+ "concurrencyPolicy": {
2657
+ "mode": "none",
2658
+ "cancelInProgress": false
2659
+ },
2660
+ "expectedRunnerMinutes": 360,
2661
+ "cancellationBehavior": "finish-started",
2662
+ "sloImpact": {
2663
+ "mergeCritical": true,
2664
+ "metric": "minimal pipeline bounded hosted execution",
2665
+ "expectedContributionSeconds": 21600,
2666
+ "rationale": "Owned runtime, metadata or product job boundary. Product matrix uses only declared platforms; native Warrant transfer waits for exact provider terminality. This is a conservative timeout budget, not measured latency."
2667
+ }
2668
+ },
2669
+ {
2670
+ "laneId": ".github/workflows/.ops-pipeline-execute.yml#record-delivery",
2671
+ "authorityClass": "evidence",
2672
+ "triggerClass": "reusable",
2673
+ "concurrencyPolicy": {
2674
+ "mode": "none",
2675
+ "cancelInProgress": false
2676
+ },
2677
+ "expectedRunnerMinutes": 5,
2678
+ "cancellationBehavior": "finish-started",
2679
+ "sloImpact": {
2680
+ "mergeCritical": false,
2681
+ "metric": "minimal pipeline bounded hosted execution",
2682
+ "expectedContributionSeconds": 300,
2683
+ "rationale": "Owned runtime, metadata or product job boundary. Product matrix uses only declared platforms; native Warrant transfer waits for exact provider terminality. This is a conservative timeout budget, not measured latency."
2684
+ }
2685
+ },
2686
+ {
2687
+ "laneId": ".github/workflows/.release-pipeline-products.yml#prepare",
2688
+ "authorityClass": "evidence",
2689
+ "triggerClass": "reusable",
2690
+ "concurrencyPolicy": {
2691
+ "mode": "ref-scoped",
2692
+ "cancelInProgress": false
2693
+ },
2694
+ "expectedRunnerMinutes": 15,
2695
+ "cancellationBehavior": "finish-started",
2696
+ "sloImpact": {
2697
+ "mergeCritical": false,
2698
+ "metric": "declared product publication and retained follow-ups",
2699
+ "expectedContributionSeconds": 900,
2700
+ "rationale": "Post-merge product publication serializes provider writers per repository. At most five declared hosted platforms each have a sixty-minute build limit; independent signing and publisher jobs have explicit timeouts. These are conservative bounds, not measured latency."
2701
+ }
2702
+ },
2703
+ {
2704
+ "laneId": ".github/workflows/.release-pipeline-products.yml#build",
2705
+ "authorityClass": "evidence",
2706
+ "triggerClass": "reusable",
2707
+ "concurrencyPolicy": {
2708
+ "mode": "ref-scoped",
2709
+ "cancelInProgress": false
2710
+ },
2711
+ "expectedRunnerMinutes": 300,
2712
+ "cancellationBehavior": "finish-started",
2713
+ "sloImpact": {
2714
+ "mergeCritical": false,
2715
+ "metric": "declared product publication and retained follow-ups",
2716
+ "expectedContributionSeconds": 18000,
2717
+ "rationale": "Post-merge product publication serializes provider writers per repository. At most five declared hosted platforms each have a sixty-minute build limit; independent signing and publisher jobs have explicit timeouts. These are conservative bounds, not measured latency."
2718
+ }
2719
+ },
2720
+ {
2721
+ "laneId": ".github/workflows/.release-pipeline-products.yml#qualify",
2722
+ "authorityClass": "evidence",
2723
+ "triggerClass": "reusable",
2724
+ "concurrencyPolicy": {
2725
+ "mode": "ref-scoped",
2726
+ "cancelInProgress": false
2727
+ },
2728
+ "expectedRunnerMinutes": 20,
2729
+ "cancellationBehavior": "finish-started",
2730
+ "sloImpact": {
2731
+ "mergeCritical": false,
2732
+ "metric": "declared product publication and retained follow-ups",
2733
+ "expectedContributionSeconds": 1200,
2734
+ "rationale": "Post-merge product publication serializes provider writers per repository. At most five declared hosted platforms each have a sixty-minute build limit; independent signing and publisher jobs have explicit timeouts. These are conservative bounds, not measured latency."
2735
+ }
2736
+ },
2737
+ {
2738
+ "laneId": ".github/workflows/.release-pipeline-products.yml#apply",
2739
+ "authorityClass": "governed-delegation",
2740
+ "triggerClass": "reusable",
2741
+ "concurrencyPolicy": {
2742
+ "mode": "ref-scoped",
2743
+ "cancelInProgress": false
2744
+ },
2745
+ "expectedRunnerMinutes": 30,
2746
+ "cancellationBehavior": "finish-started",
2747
+ "sloImpact": {
2748
+ "mergeCritical": false,
2749
+ "metric": "declared product publication and retained follow-ups",
2750
+ "expectedContributionSeconds": 1800,
2751
+ "rationale": "Post-merge product publication serializes provider writers per repository. At most five declared hosted platforms each have a sixty-minute build limit; independent signing and publisher jobs have explicit timeouts. These are conservative bounds, not measured latency."
2752
+ }
2753
+ },
2754
+ {
2755
+ "laneId": ".github/workflows/.release-pipeline-products.yml#settle",
2756
+ "authorityClass": "governed-delegation",
2757
+ "triggerClass": "reusable",
2758
+ "concurrencyPolicy": {
2759
+ "mode": "ref-scoped",
2760
+ "cancelInProgress": false
2761
+ },
2762
+ "expectedRunnerMinutes": 20,
2763
+ "cancellationBehavior": "finish-started",
2764
+ "sloImpact": {
2765
+ "mergeCritical": false,
2766
+ "metric": "declared product publication and retained follow-ups",
2767
+ "expectedContributionSeconds": 1200,
2768
+ "rationale": "Post-merge product publication serializes provider writers per repository. At most five declared hosted platforms each have a sixty-minute build limit; independent signing and publisher jobs have explicit timeouts. These are conservative bounds, not measured latency."
2769
+ }
2770
+ },
2771
+ {
2772
+ "laneId": ".github/workflows/.ops-pipeline-execute.yml#publication",
2773
+ "authorityClass": "governed-delegation",
2774
+ "triggerClass": "reusable",
2775
+ "concurrencyPolicy": {
2776
+ "mode": "none",
2777
+ "cancelInProgress": false
2778
+ },
2779
+ "expectedRunnerMinutes": 385,
2780
+ "cancellationBehavior": "finish-started",
2781
+ "sloImpact": {
2782
+ "mergeCritical": false,
2783
+ "metric": "declared product publication and retained follow-ups",
2784
+ "expectedContributionSeconds": 23100,
2785
+ "rationale": "Post-merge product publication serializes provider writers per repository. At most five declared hosted platforms each have a sixty-minute build limit; independent signing and publisher jobs have explicit timeouts. These are conservative bounds, not measured latency."
2786
+ }
2787
+ },
2788
+ {
2789
+ "laneId": ".github/workflows/public-ops-recover.yml#runtime",
2790
+ "authorityClass": "evidence",
2791
+ "triggerClass": "reusable",
2792
+ "concurrencyPolicy": {
2793
+ "mode": "none",
2794
+ "cancelInProgress": false
2795
+ },
2796
+ "expectedRunnerMinutes": 5,
2797
+ "cancellationBehavior": "finish-started",
2798
+ "sloImpact": {
2799
+ "mergeCritical": false,
2800
+ "metric": "minimal pipeline bounded hosted execution",
2801
+ "expectedContributionSeconds": 300,
2802
+ "rationale": "Owned runtime, metadata or product job boundary. Product matrix uses only declared platforms; native Warrant transfer waits for exact provider terminality. This is a conservative timeout budget, not measured latency."
2803
+ }
2804
+ },
2805
+ {
2806
+ "laneId": ".github/workflows/public-ops-recover.yml#control",
2807
+ "authorityClass": "merge-critical-admission",
2808
+ "triggerClass": "reusable",
2809
+ "concurrencyPolicy": {
2810
+ "mode": "none",
2811
+ "cancelInProgress": false
2812
+ },
2813
+ "expectedRunnerMinutes": 20,
2814
+ "cancellationBehavior": "finish-started",
2815
+ "sloImpact": {
2816
+ "mergeCritical": true,
2817
+ "metric": "minimal pipeline bounded hosted execution",
2818
+ "expectedContributionSeconds": 1200,
2819
+ "rationale": "Owned runtime, metadata or product job boundary. Product matrix uses only declared platforms; native Warrant transfer waits for exact provider terminality. This is a conservative timeout budget, not measured latency."
2820
+ }
2821
+ },
2822
+ {
2823
+ "laneId": ".github/workflows/public-ops-pipeline.yml#execute",
2824
+ "authorityClass": "governed-delegation",
2825
+ "triggerClass": "reusable",
2826
+ "concurrencyPolicy": {
2827
+ "mode": "none",
2828
+ "cancelInProgress": false
2829
+ },
2830
+ "expectedRunnerMinutes": 825,
2831
+ "cancellationBehavior": "finish-started",
2832
+ "sloImpact": {
2833
+ "mergeCritical": false,
2834
+ "metric": "shared normal or recovery execution timeout bound",
2835
+ "expectedContributionSeconds": 49500,
2836
+ "rationale": "Delegates to the same isolated product, native delivery and publication jobs. Recovery schedules only qualified missing work; this inherited conservative timeout sum is not measured latency or a new parallel lane family."
2837
+ }
2838
+ },
2839
+ {
2840
+ "laneId": ".github/workflows/public-ops-recover.yml#execute",
2841
+ "authorityClass": "governed-delegation",
2842
+ "triggerClass": "reusable",
2843
+ "concurrencyPolicy": {
2844
+ "mode": "none",
2845
+ "cancelInProgress": false
2846
+ },
2847
+ "expectedRunnerMinutes": 825,
2848
+ "cancellationBehavior": "finish-started",
2849
+ "sloImpact": {
2850
+ "mergeCritical": false,
2851
+ "metric": "shared normal or recovery execution timeout bound",
2852
+ "expectedContributionSeconds": 49500,
2853
+ "rationale": "Delegates to the same isolated product, native delivery and publication jobs. Recovery schedules only qualified missing work; this inherited conservative timeout sum is not measured latency or a new parallel lane family."
2854
+ }
2566
2855
  }
2567
2856
  ],
2568
2857
  "declarationFamilies": [