gate-evm-tools 1.0.31 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (349) hide show
  1. package/README.md +34 -20
  2. package/bin/cli.js +3 -0
  3. package/bin/delivery.cjs +8 -7
  4. package/dist/commands/check.d.ts.map +1 -1
  5. package/dist/commands/check.js +26 -2
  6. package/dist/commands/check.js.map +1 -1
  7. package/dist/commands/plan/index.d.ts.map +1 -1
  8. package/dist/commands/plan/index.js +1 -1
  9. package/dist/commands/plan/index.js.map +1 -1
  10. package/dist/core/preparation/batch.d.ts +26 -0
  11. package/dist/core/preparation/batch.d.ts.map +1 -0
  12. package/dist/core/preparation/batch.js +72 -0
  13. package/dist/core/preparation/batch.js.map +1 -0
  14. package/dist/core/preparation/evm.d.ts +23 -4
  15. package/dist/core/preparation/evm.d.ts.map +1 -1
  16. package/dist/core/preparation/evm.js +19 -3
  17. package/dist/core/preparation/evm.js.map +1 -1
  18. package/dist/core/preparation/evmManifestSync.d.ts +5 -0
  19. package/dist/core/preparation/evmManifestSync.d.ts.map +1 -1
  20. package/dist/core/preparation/evmManifestSync.js +15 -7
  21. package/dist/core/preparation/evmManifestSync.js.map +1 -1
  22. package/dist/core/preparation/index.d.ts +2 -2
  23. package/dist/core/preparation/index.d.ts.map +1 -1
  24. package/dist/core/preparation/manifest.d.ts +2 -0
  25. package/dist/core/preparation/manifest.d.ts.map +1 -1
  26. package/dist/core/preparation/manifest.js +2 -2
  27. package/dist/core/preparation/manifest.js.map +1 -1
  28. package/dist/core/preparation/normalize.d.ts.map +1 -1
  29. package/dist/core/preparation/normalize.js +53 -11
  30. package/dist/core/preparation/normalize.js.map +1 -1
  31. package/dist/core/preparation/transparent.d.ts +23 -0
  32. package/dist/core/preparation/transparent.d.ts.map +1 -0
  33. package/dist/core/preparation/transparent.js +103 -0
  34. package/dist/core/preparation/transparent.js.map +1 -0
  35. package/dist/core/preparation/types.d.ts +47 -5
  36. package/dist/core/preparation/types.d.ts.map +1 -1
  37. package/dist/core/preparation/zksync.d.ts.map +1 -1
  38. package/dist/core/preparation/zksync.js +2 -0
  39. package/dist/core/preparation/zksync.js.map +1 -1
  40. package/dist/custody/credential.d.ts.map +1 -1
  41. package/dist/custody/credential.js +1 -6
  42. package/dist/custody/credential.js.map +1 -1
  43. package/dist/deployment-evm/index.d.ts +4 -0
  44. package/dist/deployment-evm/index.d.ts.map +1 -0
  45. package/dist/deployment-evm/index.js +3 -0
  46. package/dist/deployment-evm/index.js.map +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +4 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/sync/index.d.ts.map +1 -1
  51. package/dist/sync/index.js +5 -0
  52. package/dist/sync/index.js.map +1 -1
  53. package/dist/types.d.ts +3 -0
  54. package/dist/types.d.ts.map +1 -1
  55. package/dist/workflow/index.d.ts +4 -1
  56. package/dist/workflow/index.d.ts.map +1 -1
  57. package/dist/workflow/index.js +2 -0
  58. package/dist/workflow/index.js.map +1 -1
  59. package/dist-cjs/core/preparation/batch.js +76 -0
  60. package/dist-cjs/core/preparation/batch.js.map +1 -0
  61. package/dist-cjs/core/preparation/evm.js +25 -7
  62. package/dist-cjs/core/preparation/evm.js.map +1 -1
  63. package/dist-cjs/core/preparation/evmManifestSync.js +15 -7
  64. package/dist-cjs/core/preparation/evmManifestSync.js.map +1 -1
  65. package/dist-cjs/core/preparation/manifest.js +2 -2
  66. package/dist-cjs/core/preparation/manifest.js.map +1 -1
  67. package/dist-cjs/core/preparation/normalize.js +53 -11
  68. package/dist-cjs/core/preparation/normalize.js.map +1 -1
  69. package/dist-cjs/core/preparation/transparent.js +110 -0
  70. package/dist-cjs/core/preparation/transparent.js.map +1 -0
  71. package/dist-cjs/core/preparation/zksync.js +2 -0
  72. package/dist-cjs/core/preparation/zksync.js.map +1 -1
  73. package/dist-cjs/custody/credential.js +1 -6
  74. package/dist-cjs/custody/credential.js.map +1 -1
  75. package/dist-cjs/deployment-evm/index.js +10 -0
  76. package/dist-cjs/deployment-evm/index.js.map +1 -0
  77. package/dist-cjs/sync/index.js +5 -0
  78. package/dist-cjs/sync/index.js.map +1 -1
  79. package/dist-cjs/workflow/index.js +11 -1
  80. package/dist-cjs/workflow/index.js.map +1 -1
  81. package/dist-runtime/config/hardhatAdapters.js +2 -1
  82. package/dist-runtime/config/hardhatAdapters.js.map +1 -1
  83. package/dist-runtime/delivery/aggregate-bootstrap.js +3 -1
  84. package/dist-runtime/delivery/aggregate-bootstrap.js.map +1 -1
  85. package/dist-runtime/delivery/aggregate-channel.js +7 -3
  86. package/dist-runtime/delivery/aggregate-channel.js.map +1 -1
  87. package/dist-runtime/delivery/aggregate-diagnostics.d.ts +14 -0
  88. package/dist-runtime/delivery/aggregate-diagnostics.js +73 -0
  89. package/dist-runtime/delivery/aggregate-diagnostics.js.map +1 -0
  90. package/dist-runtime/delivery/aggregate-inputs.d.ts +13 -9
  91. package/dist-runtime/delivery/aggregate-source.js +11 -3
  92. package/dist-runtime/delivery/aggregate-source.js.map +1 -1
  93. package/dist-runtime/delivery/aggregate-worker.js +12 -4
  94. package/dist-runtime/delivery/aggregate-worker.js.map +1 -1
  95. package/dist-runtime/delivery/aggregate.js +2 -2
  96. package/dist-runtime/delivery/aggregate.js.map +1 -1
  97. package/dist-runtime/delivery/business-extension.d.ts +10 -0
  98. package/dist-runtime/delivery/business-extension.js +38 -0
  99. package/dist-runtime/delivery/business-extension.js.map +1 -0
  100. package/dist-runtime/delivery/calldata-archive.d.ts +18 -0
  101. package/dist-runtime/delivery/calldata-archive.js +31 -0
  102. package/dist-runtime/delivery/calldata-archive.js.map +1 -0
  103. package/dist-runtime/delivery/calldata-details.d.ts +47 -0
  104. package/dist-runtime/delivery/calldata-details.js +94 -0
  105. package/dist-runtime/delivery/calldata-details.js.map +1 -0
  106. package/dist-runtime/delivery/calldata-format.d.ts +4 -0
  107. package/dist-runtime/delivery/calldata-format.js +17 -0
  108. package/dist-runtime/delivery/calldata-format.js.map +1 -0
  109. package/dist-runtime/delivery/calldata-preparations.d.ts +13 -0
  110. package/dist-runtime/delivery/calldata-preparations.js +85 -0
  111. package/dist-runtime/delivery/calldata-preparations.js.map +1 -0
  112. package/dist-runtime/delivery/calldata-review.d.ts +44 -0
  113. package/dist-runtime/delivery/calldata-review.js +131 -0
  114. package/dist-runtime/delivery/calldata-review.js.map +1 -0
  115. package/dist-runtime/delivery/codec-pin.d.ts +2 -2
  116. package/dist-runtime/delivery/codec-pin.js +4 -4
  117. package/dist-runtime/delivery/codec-pin.js.map +1 -1
  118. package/dist-runtime/delivery/compiler-files.js +3 -1
  119. package/dist-runtime/delivery/compiler-files.js.map +1 -1
  120. package/dist-runtime/delivery/compiler-pins.js +1 -1
  121. package/dist-runtime/delivery/compiler.js +17 -16
  122. package/dist-runtime/delivery/compiler.js.map +1 -1
  123. package/dist-runtime/delivery/config.d.ts +1 -1
  124. package/dist-runtime/delivery/config.js +27 -2
  125. package/dist-runtime/delivery/config.js.map +1 -1
  126. package/dist-runtime/delivery/configuration-definition.d.ts +9 -0
  127. package/dist-runtime/delivery/configuration-definition.js +33 -6
  128. package/dist-runtime/delivery/configuration-definition.js.map +1 -1
  129. package/dist-runtime/delivery/configuration.js +7 -4
  130. package/dist-runtime/delivery/configuration.js.map +1 -1
  131. package/dist-runtime/delivery/contract-source.d.ts +14 -0
  132. package/dist-runtime/delivery/contract-source.js +138 -0
  133. package/dist-runtime/delivery/contract-source.js.map +1 -0
  134. package/dist-runtime/delivery/custom-format.js +51 -24
  135. package/dist-runtime/delivery/custom-format.js.map +1 -1
  136. package/dist-runtime/delivery/development-inputs.d.ts +14 -0
  137. package/dist-runtime/delivery/development-inputs.js +76 -0
  138. package/dist-runtime/delivery/development-inputs.js.map +1 -0
  139. package/dist-runtime/delivery/development.d.ts +3 -1
  140. package/dist-runtime/delivery/development.js +24 -10
  141. package/dist-runtime/delivery/development.js.map +1 -1
  142. package/dist-runtime/delivery/eoa.d.ts +1 -0
  143. package/dist-runtime/delivery/execution-identity.d.ts +15 -0
  144. package/dist-runtime/delivery/execution-identity.js +33 -0
  145. package/dist-runtime/delivery/execution-identity.js.map +1 -0
  146. package/dist-runtime/delivery/existing-code.js +14 -6
  147. package/dist-runtime/delivery/existing-code.js.map +1 -1
  148. package/dist-runtime/delivery/history-package.d.ts +2 -0
  149. package/dist-runtime/delivery/history-package.js +70 -0
  150. package/dist-runtime/delivery/history-package.js.map +1 -0
  151. package/dist-runtime/delivery/history-registration.d.ts +1 -1
  152. package/dist-runtime/delivery/inputs.js +22 -15
  153. package/dist-runtime/delivery/inputs.js.map +1 -1
  154. package/dist-runtime/delivery/journal.js +18 -10
  155. package/dist-runtime/delivery/journal.js.map +1 -1
  156. package/dist-runtime/delivery/parameter-defaults.d.ts +10 -0
  157. package/dist-runtime/delivery/parameter-defaults.js +86 -0
  158. package/dist-runtime/delivery/parameter-defaults.js.map +1 -0
  159. package/dist-runtime/delivery/parameters.d.ts +2 -0
  160. package/dist-runtime/delivery/parameters.js +22 -0
  161. package/dist-runtime/delivery/parameters.js.map +1 -1
  162. package/dist-runtime/delivery/planning.d.ts +4 -1
  163. package/dist-runtime/delivery/planning.js +19 -3
  164. package/dist-runtime/delivery/planning.js.map +1 -1
  165. package/dist-runtime/delivery/preparation.js +43 -23
  166. package/dist-runtime/delivery/preparation.js.map +1 -1
  167. package/dist-runtime/delivery/production-environment.js +2 -1
  168. package/dist-runtime/delivery/production-environment.js.map +1 -1
  169. package/dist-runtime/delivery/production-finalization.js +23 -9
  170. package/dist-runtime/delivery/production-finalization.js.map +1 -1
  171. package/dist-runtime/delivery/production-intent.d.ts +2 -0
  172. package/dist-runtime/delivery/production-intent.js +16 -0
  173. package/dist-runtime/delivery/production-intent.js.map +1 -0
  174. package/dist-runtime/delivery/production.d.ts +129 -8
  175. package/dist-runtime/delivery/production.js +60 -11
  176. package/dist-runtime/delivery/production.js.map +1 -1
  177. package/dist-runtime/delivery/project-files.d.ts +3 -3
  178. package/dist-runtime/delivery/project-files.js +19 -14
  179. package/dist-runtime/delivery/project-files.js.map +1 -1
  180. package/dist-runtime/delivery/project-rpc.d.ts +19 -0
  181. package/dist-runtime/delivery/project-rpc.js +138 -0
  182. package/dist-runtime/delivery/project-rpc.js.map +1 -0
  183. package/dist-runtime/delivery/project.d.ts +3 -1
  184. package/dist-runtime/delivery/project.js +21 -8
  185. package/dist-runtime/delivery/project.js.map +1 -1
  186. package/dist-runtime/delivery/public-calldata.d.ts +25 -0
  187. package/dist-runtime/delivery/public-calldata.js +97 -0
  188. package/dist-runtime/delivery/public-calldata.js.map +1 -0
  189. package/dist-runtime/delivery/release-graph.d.ts +7 -3
  190. package/dist-runtime/delivery/release-graph.js +58 -25
  191. package/dist-runtime/delivery/release-graph.js.map +1 -1
  192. package/dist-runtime/delivery/release-history-capture.js +22 -26
  193. package/dist-runtime/delivery/release-history-capture.js.map +1 -1
  194. package/dist-runtime/delivery/release-history.d.ts +3 -2
  195. package/dist-runtime/delivery/release-history.js +97 -50
  196. package/dist-runtime/delivery/release-history.js.map +1 -1
  197. package/dist-runtime/delivery/release-inputs.d.ts +33 -0
  198. package/dist-runtime/delivery/release-inputs.js +129 -0
  199. package/dist-runtime/delivery/release-inputs.js.map +1 -0
  200. package/dist-runtime/delivery/release.d.ts +38 -14
  201. package/dist-runtime/delivery/release.js +81 -29
  202. package/dist-runtime/delivery/release.js.map +1 -1
  203. package/dist-runtime/delivery/safe.d.ts +1 -0
  204. package/dist-runtime/delivery/safe.js +13 -2
  205. package/dist-runtime/delivery/safe.js.map +1 -1
  206. package/dist-runtime/delivery/same-fork-baseline.d.ts +1 -1
  207. package/dist-runtime/delivery/same-fork-baseline.js +5 -4
  208. package/dist-runtime/delivery/same-fork-baseline.js.map +1 -1
  209. package/dist-runtime/delivery/setup.d.ts +1 -1
  210. package/dist-runtime/delivery/setup.js +21 -6
  211. package/dist-runtime/delivery/setup.js.map +1 -1
  212. package/dist-runtime/delivery/source.d.ts +1 -0
  213. package/dist-runtime/delivery/source.js +12 -10
  214. package/dist-runtime/delivery/source.js.map +1 -1
  215. package/dist-runtime/delivery/task-identity.d.ts +23 -0
  216. package/dist-runtime/delivery/task-identity.js +109 -0
  217. package/dist-runtime/delivery/task-identity.js.map +1 -0
  218. package/dist-runtime/delivery/toolchain.d.ts +3 -0
  219. package/dist-runtime/delivery/toolchain.js +52 -0
  220. package/dist-runtime/delivery/toolchain.js.map +1 -0
  221. package/dist-runtime/delivery/validation.js +7 -2
  222. package/dist-runtime/delivery/validation.js.map +1 -1
  223. package/dist-runtime/runtime-identity.json +2 -2
  224. package/dist-runtime/vendor/plan-codec/index.cjs +97 -20
  225. package/dist-runtime/vendor/plan-codec/index.d.cts +6 -0
  226. package/dist-runtime/vendor/plan-codec/provenance.json +9 -8
  227. package/dist-runtime/workflow/lib/calls.js +1 -0
  228. package/dist-runtime/workflow/lib/calls.js.map +1 -1
  229. package/dist-runtime/workflow/lib/checkCodeRunner.js +7 -4
  230. package/dist-runtime/workflow/lib/checkCodeRunner.js.map +1 -1
  231. package/dist-runtime/workflow/lib/context.d.ts +1 -0
  232. package/dist-runtime/workflow/lib/create2.d.ts +4 -26
  233. package/dist-runtime/workflow/lib/create2.js +2 -67
  234. package/dist-runtime/workflow/lib/create2.js.map +1 -1
  235. package/dist-runtime/workflow/lib/deploymentInfo.d.ts +2 -0
  236. package/dist-runtime/workflow/lib/deploymentInfo.js +6 -0
  237. package/dist-runtime/workflow/lib/deploymentInfo.js.map +1 -1
  238. package/dist-runtime/workflow/lib/deploymentRecords.d.ts +2 -0
  239. package/dist-runtime/workflow/lib/deploymentRecords.js +1 -1
  240. package/dist-runtime/workflow/lib/deploymentRecords.js.map +1 -1
  241. package/dist-runtime/workflow/lib/externalExecutionScanner.js +2 -1
  242. package/dist-runtime/workflow/lib/externalExecutionScanner.js.map +1 -1
  243. package/dist-runtime/workflow/lib/gateTool.js +2 -2
  244. package/dist-runtime/workflow/lib/gateTool.js.map +1 -1
  245. package/dist-runtime/workflow/lib/gateToolSync.d.ts +3 -0
  246. package/dist-runtime/workflow/lib/gateToolSync.js +5 -0
  247. package/dist-runtime/workflow/lib/gateToolSync.js.map +1 -1
  248. package/dist-runtime/workflow/lib/parameters.js +5 -0
  249. package/dist-runtime/workflow/lib/parameters.js.map +1 -1
  250. package/dist-runtime/workflow/lib/proxy.d.ts +1 -0
  251. package/dist-runtime/workflow/lib/proxy.js.map +1 -1
  252. package/dist-runtime/workflow/run.js +1 -3
  253. package/dist-runtime/workflow/run.js.map +1 -1
  254. package/dist-runtime/workflow/steps/deploy.js +53 -0
  255. package/dist-runtime/workflow/steps/deploy.js.map +1 -1
  256. package/dist-runtime/workflow/steps/upgrade.js +24 -10
  257. package/dist-runtime/workflow/steps/upgrade.js.map +1 -1
  258. package/docs/compiler-qualification.md +8 -2
  259. package/docs/delivery-aggregate.md +2 -0
  260. package/docs/delivery-calldata.md +27 -0
  261. package/docs/delivery-development.md +6 -0
  262. package/docs/delivery-execution-store.md +1 -1
  263. package/docs/delivery-inputs.md +55 -6
  264. package/docs/delivery-parameters.md +1 -1
  265. package/docs/delivery-release.md +77 -7
  266. package/docs/delivery-safe.md +7 -4
  267. package/docs/delivery-setup.md +72 -20
  268. package/docs/delivery-source.md +8 -8
  269. package/docs/direct-package-acceptance.md +2 -0
  270. package/docs/openzeppelin-acceptance.md +86 -0
  271. package/docs/openzeppelin-baseline.json +27 -0
  272. package/docs/openzeppelin-integration.md +115 -0
  273. package/docs/plans/2026-10-28-openzeppelin-toolkit-consolidation.md +396 -0
  274. package/docs/plans/2026-11-02-transparent-proxy-delivery.md +78 -0
  275. package/docs/superpowers/plans/2026-08-17-custody-hardhat-signers.md +1 -1
  276. package/docs/workflow-reference.md +12 -4
  277. package/docs/workflow-runtime.md +6 -0
  278. package/package.json +19 -5
  279. package/runtime/config/hardhatAdapters.ts +2 -1
  280. package/runtime/delivery/aggregate-bootstrap.ts +3 -1
  281. package/runtime/delivery/aggregate-channel.ts +6 -3
  282. package/runtime/delivery/aggregate-diagnostics.ts +63 -0
  283. package/runtime/delivery/aggregate-source.ts +6 -2
  284. package/runtime/delivery/aggregate-worker.ts +15 -5
  285. package/runtime/delivery/aggregate.ts +2 -2
  286. package/runtime/delivery/business-extension.ts +33 -0
  287. package/runtime/delivery/calldata-archive.ts +25 -0
  288. package/runtime/delivery/calldata-details.ts +90 -0
  289. package/runtime/delivery/calldata-format.ts +14 -0
  290. package/runtime/delivery/calldata-preparations.ts +76 -0
  291. package/runtime/delivery/calldata-review.ts +126 -0
  292. package/runtime/delivery/codec-pin.ts +3 -3
  293. package/runtime/delivery/compiler-files.ts +3 -1
  294. package/runtime/delivery/compiler-pins.ts +1 -1
  295. package/runtime/delivery/compiler.ts +18 -17
  296. package/runtime/delivery/config.ts +25 -2
  297. package/runtime/delivery/configuration-definition.ts +34 -7
  298. package/runtime/delivery/configuration.ts +8 -5
  299. package/runtime/delivery/contract-source.ts +112 -0
  300. package/runtime/delivery/custom-format.ts +20 -5
  301. package/runtime/delivery/development-inputs.ts +42 -0
  302. package/runtime/delivery/development.ts +14 -11
  303. package/runtime/delivery/execution-identity.ts +32 -0
  304. package/runtime/delivery/existing-code.ts +7 -6
  305. package/runtime/delivery/history-package.ts +50 -0
  306. package/runtime/delivery/inputs.ts +18 -11
  307. package/runtime/delivery/journal.ts +14 -10
  308. package/runtime/delivery/parameter-defaults.ts +75 -0
  309. package/runtime/delivery/parameters.ts +18 -0
  310. package/runtime/delivery/planning.ts +19 -5
  311. package/runtime/delivery/preparation.ts +17 -1
  312. package/runtime/delivery/production-environment.ts +2 -1
  313. package/runtime/delivery/production-finalization.ts +19 -10
  314. package/runtime/delivery/production-intent.ts +14 -0
  315. package/runtime/delivery/production.ts +51 -11
  316. package/runtime/delivery/project-files.ts +16 -11
  317. package/runtime/delivery/project-rpc.ts +116 -0
  318. package/runtime/delivery/project.ts +19 -7
  319. package/runtime/delivery/public-calldata.ts +74 -0
  320. package/runtime/delivery/release-graph.ts +44 -14
  321. package/runtime/delivery/release-history-capture.ts +19 -9
  322. package/runtime/delivery/release-history.ts +76 -22
  323. package/runtime/delivery/release-inputs.ts +107 -0
  324. package/runtime/delivery/release.ts +56 -18
  325. package/runtime/delivery/safe.ts +14 -3
  326. package/runtime/delivery/same-fork-baseline.ts +5 -4
  327. package/runtime/delivery/setup.ts +20 -8
  328. package/runtime/delivery/source.ts +10 -10
  329. package/runtime/delivery/task-identity.ts +85 -0
  330. package/runtime/delivery/toolchain.ts +48 -0
  331. package/runtime/delivery/validation.ts +7 -2
  332. package/runtime/vendor/plan-codec/index.cjs +97 -20
  333. package/runtime/vendor/plan-codec/index.d.cts +6 -0
  334. package/runtime/vendor/plan-codec/provenance.json +9 -8
  335. package/runtime/workflow/lib/calls.ts +1 -0
  336. package/runtime/workflow/lib/checkCodeRunner.ts +7 -3
  337. package/runtime/workflow/lib/context.ts +1 -0
  338. package/runtime/workflow/lib/create2.ts +7 -108
  339. package/runtime/workflow/lib/deploymentInfo.ts +8 -0
  340. package/runtime/workflow/lib/deploymentRecords.ts +3 -1
  341. package/runtime/workflow/lib/externalExecutionScanner.ts +2 -1
  342. package/runtime/workflow/lib/gateTool.ts +2 -2
  343. package/runtime/workflow/lib/gateToolSync.ts +8 -0
  344. package/runtime/workflow/lib/parameters.ts +4 -0
  345. package/runtime/workflow/lib/proxy.ts +1 -0
  346. package/runtime/workflow/run.ts +1 -2
  347. package/runtime/workflow/steps/deploy.ts +42 -0
  348. package/runtime/workflow/steps/upgrade.ts +19 -11
  349. package/bin/workflow.cjs +0 -19
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sameReleaseData = void 0;
4
+ exports.isDevelopmentAcceptancePrerequisite = isDevelopmentAcceptancePrerequisite;
4
5
  exports.readReleaseUniverse = readReleaseUniverse;
5
6
  exports.readReleaseGraph = readReleaseGraph;
6
7
  exports.currentReleasePrerequisites = currentReleasePrerequisites;
@@ -13,7 +14,11 @@ const protocol_1 = require("./protocol");
13
14
  const sameReleaseData = (a, b, label) => { if ((0, canonicalData_1.canonicalJson)(a) !== (0, canonicalData_1.canonicalJson)(b))
14
15
  throw Error(`${label} mismatch`); };
15
16
  exports.sameReleaseData = sameReleaseData;
16
- const stages = ['release-prepare', 'release-execute', 'release-verify'];
17
+ /** A completed simulation-only script task supplies reports, never on-chain acceptance. */
18
+ function isDevelopmentAcceptancePrerequisite(task) {
19
+ const d = task.scope?.deployment;
20
+ return (0, source_1.deploymentPurpose)(task) === 'dev-execution' && Array.isArray(d?.allowedActions) && d.allowedActions.some((action) => action !== 'simulate');
21
+ }
17
22
  function readReleaseUniverse(input) {
18
23
  const workspace = (0, project_files_1.projectRoot)(input.workspaceRoot, '.'), root = (0, project_files_1.projectRoot)(workspace, input.projectRoot);
19
24
  (0, protocol_1.safeId)(input.deploymentId, 'deploymentId');
@@ -23,7 +28,7 @@ function readReleaseUniverse(input) {
23
28
  const plan = (0, source_1.parseCanonicalPlan)(text);
24
29
  if (plan.taskId !== input.taskId)
25
30
  throw Error('Current task identity mismatch');
26
- const task = (0, canonicalData_1.exactObject)((0, input_files_1.parseInputDocument)((0, input_files_1.readInputBytes)(root, `scripts/tasks/${input.deploymentId}/task.yaml`), 'yaml'), ['version', 'id', 'developmentNetwork', 'releaseTargetNetworks'], 'task.yaml');
31
+ const task = (0, protocol_1.object)((0, input_files_1.parseInputDocument)((0, input_files_1.readInputBytes)(root, `scripts/tasks/${input.deploymentId}/task.yaml`), 'yaml'), 'task.yaml', ['version', 'id', 'developmentNetwork', 'releaseTargetNetworks', 'requirementRef', 'productionRequirementRef', 'referenceDeploymentId']);
27
32
  if (task.version !== 1 || task.id !== input.deploymentId || !Array.isArray(task.releaseTargetNetworks) || !task.releaseTargetNetworks.length)
28
33
  throw Error('Invalid release target scope');
29
34
  const targets = task.releaseTargetNetworks;
@@ -33,12 +38,17 @@ function readReleaseUniverse(input) {
33
38
  for (const { task: t } of relevant) {
34
39
  const d = t.scope.deployment;
35
40
  (0, exports.sameReleaseData)(d.developmentNetwork, task.developmentNetwork, 'Current development target');
36
- (0, exports.sameReleaseData)(d.releaseTargetNetworks, targets, 'Current selected targets');
41
+ if (['prod-qualification', 'prod-execution'].includes((0, source_1.deploymentPurpose)(t))) {
42
+ (0, exports.sameReleaseData)(d.releaseTargetNetworks, targets, 'Current selected targets');
43
+ (0, exports.sameReleaseData)(d.productionRequirementRef ?? null, task.productionRequirementRef ?? null, 'Current production confirmation');
44
+ }
45
+ else if ((d.releaseTargetNetworks ?? []).some((network) => !targets.includes(network)))
46
+ throw Error('Current selected targets removed a development-declared target');
37
47
  }
38
- const qualifications = targets.map(target => { const rows = relevant.filter(({ task: t }) => t.step === 'deploy-test' && t.scope.deployment.targetNetwork === target); if (rows.length !== 1)
48
+ const qualifications = targets.map(target => { const rows = relevant.filter(({ task: t }) => (0, source_1.deploymentPurpose)(t) === 'prod-qualification' && t.scope.deployment.targetNetwork === target); if (rows.length !== 1)
39
49
  throw Error('Missing or ambiguous qualification target'); const row = rows[0], d = row.task.scope.deployment; if (plan.lanes[row.lane].state !== 'enabled' || row.task.status === 'cancelled' || d.environment !== 'prod' || d.releaseRef !== undefined)
40
- throw Error('Ineligible qualification task'); (0, exports.sameReleaseData)(d.allowedActions, ['simulate', 'verify'], 'Qualification allowedActions'); return row.task; });
41
- if (relevant.some(({ task: t }) => t.step === 'deploy-test' && !targets.includes(t.scope.deployment.targetNetwork)))
50
+ throw Error('Ineligible qualification task'); (0, exports.sameReleaseData)([...d.allowedActions].sort(), ['simulate', 'verify'], 'Qualification allowedActions'); return row.task; });
51
+ if (relevant.some(({ task: t }) => (0, source_1.deploymentPurpose)(t) === 'prod-qualification' && !targets.includes(t.scope.deployment.targetNetwork)))
42
52
  throw Error('Unknown qualification target');
43
53
  const upstream = (0, source_1.projectCanonicalDefinitions)(text, { roots: qualifications.map(t => t.planKey), mode: 'upstream' });
44
54
  return { workspace, root, text, plan, entries, relevant, targets, qualifications, upstream, developmentNetwork: task.developmentNetwork };
@@ -51,7 +61,7 @@ function readReleaseGraph(input) {
51
61
  throw Error('Invalid release input hash');
52
62
  // Classify ALL relevant production tasks first. Filtering a good ref first conceals split/wrong bindings.
53
63
  const groups = new Map();
54
- for (const row of u.relevant.filter(({ task }) => stages.includes(task.step ?? ''))) {
64
+ for (const row of u.relevant.filter(({ task }) => (0, source_1.deploymentPurpose)(task) === 'prod-execution')) {
55
65
  const d = row.task.scope.deployment, ref = d.releaseRef;
56
66
  if (!ref)
57
67
  throw Error('Missing release binding');
@@ -64,20 +74,45 @@ function readReleaseGraph(input) {
64
74
  const ref = rows[0].task.scope.deployment.releaseRef;
65
75
  if (ref.releaseId === input.releaseRef.releaseId && key !== selectedKey)
66
76
  throw Error('Split release binding');
67
- if (rows.length !== u.targets.length * 3)
68
- throw Error('Incomplete or duplicate production stage graph');
77
+ if (rows.some(({ task }) => !u.targets.includes(task.scope.deployment.targetNetwork)))
78
+ throw Error('Unknown production target');
79
+ const byKey = new Map(u.entries.map(row => [row.task.planKey, row.task]));
80
+ const ancestors = (task, seen = new Set()) => { for (const id of task.dependsOn) {
81
+ if (seen.has(id))
82
+ continue;
83
+ seen.add(id);
84
+ const prior = byKey.get(id);
85
+ if (prior)
86
+ ancestors(prior, seen);
87
+ } return seen; };
69
88
  for (const target of u.targets) {
70
- const chain = stages.map(step => { const matches = rows.filter(({ task }) => task.step === step && task.scope.deployment.targetNetwork === target); if (matches.length !== 1)
71
- throw Error('Missing or duplicate release stage'); return matches[0]; });
72
- for (const [index, { lane, task }] of chain.entries()) {
73
- const d = task.scope.deployment;
89
+ const tasks = rows.filter(({ task }) => task.scope.deployment.targetNetwork === target).sort((a, b) => a.task.no - b.task.no);
90
+ if (!tasks.length)
91
+ throw Error('Missing complete release stage graph');
92
+ const qualification = u.qualifications.find(t => t.scope.deployment.targetNetwork === target);
93
+ const actions = (task) => task.scope.deployment.allowedActions;
94
+ const prepares = tasks.filter(({ task }) => actions(task).includes('simulate'));
95
+ const effects = tasks.filter(({ task }) => actions(task).some(a => ['execute', 'export-calldata'].includes(a)));
96
+ const verifies = tasks.filter(({ task }) => actions(task).includes('verify'));
97
+ if (!prepares.length || !effects.length || !verifies.length)
98
+ throw Error('Incomplete production stage graph: simulate, execute/export and verify required');
99
+ for (let index = 1; index < tasks.length; index++)
100
+ if (!ancestors(tasks[index].task).has(tasks[index - 1].task.planKey))
101
+ throw Error('Split or duplicate release dependency graph');
102
+ if (!actions(tasks.at(-1).task).includes('verify'))
103
+ throw Error('Production graph must finish with verification');
104
+ for (const { lane, task } of tasks) {
105
+ const d = task.scope.deployment, upstream = ancestors(task);
74
106
  if (u.plan.lanes[lane].state !== 'enabled' || task.status === 'cancelled' || d.environment !== 'prod')
75
107
  throw Error('Ineligible production task');
76
- const required = index === 0 ? u.qualifications.find(t => t.scope.deployment.targetNetwork === target).planKey : chain[index - 1].task.planKey;
77
- if (!task.dependsOn.includes(required))
108
+ if (actions(task).some(a => ['execute', 'export-calldata'].includes(a)) && !actions(task).some(a => ['reconcile', 'verify'].includes(a)))
109
+ throw Error('Production effect task requires reconcile or verify to observe completion');
110
+ if (!upstream.has(qualification.planKey))
78
111
  throw Error('Split release dependency graph');
79
- const allowed = index === 0 ? ['simulate'] : index === 1 ? ['execute', 'export-calldata', 'reconcile'] : ['verify'];
80
- (0, exports.sameReleaseData)(d.allowedActions, allowed, 'Release allowedActions');
112
+ if (actions(task).some(a => ['execute', 'export-calldata'].includes(a)) && !prepares.some(p => p.task.planKey === task.planKey || upstream.has(p.task.planKey)))
113
+ throw Error('Missing production preparation dependency');
114
+ if (actions(task).includes('verify') && effects.some(e => e.task.planKey !== task.planKey && !upstream.has(e.task.planKey)))
115
+ throw Error('Missing production verification dependency');
81
116
  }
82
117
  }
83
118
  }
@@ -90,14 +125,12 @@ function readReleaseGraph(input) {
90
125
  /** Progress is deliberately outside sourceDefinitionHash: eligibility is checked anew. */
91
126
  function currentReleasePrerequisites(input) {
92
127
  const u = readReleaseUniverse(input), keys = new Set(u.upstream.snapshot.tasks.map(t => t.planKey)), qual = new Set(u.qualifications.map(t => t.planKey));
93
- const required = u.entries.filter(({ lane, task }) => keys.has(task.planKey) && !qual.has(task.planKey) && u.plan.lanes[lane].state === 'enabled');
94
- for (const row of u.entries) {
95
- if (['development', 'audit'].includes(row.lane) && u.plan.lanes[row.lane].state === 'enabled' && !keys.has(row.task.planKey))
96
- throw Error('Mandatory prerequisite missing from current closure');
97
- }
98
- for (const step of ['deploy', 'check-code'])
99
- if (!required.some(r => r.task.step === step))
100
- throw Error(`Missing development acceptance prerequisite: ${step}`);
128
+ const requirementKeys = new Set(u.relevant.map(({ task }) => task.scope?.deployment?.requirementRef?.planKey).filter(Boolean));
129
+ const required = u.entries.filter(({ lane, task }) => keys.has(task.planKey) && !qual.has(task.planKey) && !requirementKeys.has(task.planKey) && u.plan.lanes[lane].state === 'enabled');
130
+ // Explicit dependencies (including the requirement's prerequisites) define this
131
+ // round. Unrelated development/audit work appended later is not a prerequisite.
132
+ if (!required.some(({ task }) => { const d = task.scope?.deployment; return isDevelopmentAcceptancePrerequisite(task) && d.deploymentId === input.deploymentId && d.projectRoot === input.projectRoot && d.environment === 'dev' && d.targetNetwork === u.developmentNetwork && d.allowedActions.includes('verify'); }))
133
+ throw Error('Missing development acceptance prerequisite: verify');
101
134
  for (const { task } of required)
102
135
  if (task.status !== 'completed' || task.result?.kind !== 'success' || task.adoptedRev !== task.rev)
103
136
  throw Error(`Current prerequisite is incomplete or stale: ${task.planKey}`);
@@ -1 +1 @@
1
- {"version":3,"file":"release-graph.js","sourceRoot":"","sources":["../../runtime/delivery/release-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"release-graph.js","sourceRoot":"","sources":["../../runtime/delivery/release-graph.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.captureDevelopmentReleaseHistory = captureDevelopmentReleaseHistory;
7
- /** Narrow R1→R2 handoff: capture the currently installed producer and changing containers BEFORE prod edits. */
7
+ /** Preserve accepted development inputs and one shared, compressed producer snapshot. */
8
8
  const node_fs_1 = __importDefault(require("node:fs"));
9
9
  const node_path_1 = __importDefault(require("node:path"));
10
10
  const node_zlib_1 = require("node:zlib");
@@ -14,18 +14,29 @@ const materialization_1 = require("./materialization");
14
14
  const canonicalData_1 = require("../workflow/lib/canonicalData");
15
15
  const plan_1 = require("./plan");
16
16
  const protocol_1 = require("./protocol");
17
+ const development_inputs_1 = require("./development-inputs");
17
18
  function captureDevelopmentReleaseHistory(input) {
18
19
  const root = node_fs_1.default.realpathSync(input.root), a = input.aggregate, plan = (0, plan_1.parseDeliveryPlan)(a.collections[0]?.plan);
19
20
  if (input.source.selection !== 'development' || a.collections.length !== 1 || plan.environment !== 'dev' || (0, project_files_1.projectRoot)(input.source.workspaceRoot, input.source.projectRoot) !== root)
20
21
  throw Error('Historical capture requires original development source');
21
22
  (0, protocol_1.safeId)(plan.executionId, 'executionId');
22
- const base = `.gate-delivery/history/${plan.executionId}`, readyPath = `${base}/READY.json`;
23
+ const base = `.gate-delivery/history/${plan.executionId}`, readyFile = `${base}/READY.json`;
23
24
  const acceptanceFile = `.gate-delivery/development/${plan.executionId}.acceptance.json`, acceptance = JSON.parse((0, input_files_1.readInputBytes)(root, acceptanceFile).toString());
24
25
  if (acceptance.status !== 'accepted' || acceptance.planHash !== plan.planHash || acceptance.inputsHash !== a.inputsHash || (0, canonicalData_1.semanticHash)(acceptance.runtimeIdentity) !== (0, canonicalData_1.semanticHash)(plan.runtimeIdentity))
25
26
  throw Error('Historical capture requires actual accepted development');
26
27
  const original = a.inputs.runtime.package;
27
28
  if (original.name !== 'gate-evm-tools' || original.lockLocation !== 'node_modules/gate-evm-tools')
28
29
  throw Error('Unsupported historical producer location');
30
+ // A completed capture can be reused after the installed producer changes.
31
+ if (node_fs_1.default.existsSync((0, materialization_1.developmentPath)(root, readyFile))) {
32
+ const ready = JSON.parse((0, input_files_1.readInputBytes)(root, readyFile).toString());
33
+ if (ready.schema !== 'gate-delivery-history-ready' || ready.version !== 2 || ready.generation !== 'complete' || ready.planHash !== plan.planHash || ready.aggregateHash !== (0, canonicalData_1.semanticHash)(a) || ready.sourceHash !== (0, canonicalData_1.semanticHash)(input.source) || ready.descriptor?.version !== 2 || ready.descriptor.readyFile !== readyFile || !Array.isArray(ready.files) || !ready.files.length)
34
+ throw Error('Conflicting historical capture');
35
+ for (const f of ready.files)
36
+ if ((0, materialization_1.byteHash)((0, input_files_1.readInputBytes)(root, f.path)) !== f.sha256)
37
+ throw Error('Captured historical file drift');
38
+ return ready.descriptor;
39
+ }
29
40
  const files = [];
30
41
  const visit = (relative) => { const dir = (0, project_files_1.confinedFile)(root, `${original.lockLocation}/${relative}`.replace(/\/$/, ''), 'directory'); for (const name of node_fs_1.default.readdirSync(dir).sort()) {
31
42
  const rel = relative ? `${relative}/${name}` : name;
@@ -44,33 +55,18 @@ function captureDevelopmentReleaseHistory(input) {
44
55
  files.sort((a, b) => a.path < b.path ? -1 : a.path > b.path ? 1 : 0);
45
56
  if ((0, canonicalData_1.semanticHash)(files.map(({ path, digest }) => ({ path, digest }))) !== (0, canonicalData_1.semanticHash)(original.payload))
46
57
  throw Error('Historical capture must precede producer/runtime replacement');
47
- const descriptor = { aggregateFile: `${base}/aggregate.json`, sourceFile: `${base}/source.json`, acceptanceFile, packageRoot: `${base}/package`, inputsRoot: `${base}/inputs`, archiveFile: `${base}/package.snapshot.json.gz` };
48
- if (node_fs_1.default.existsSync((0, materialization_1.developmentPath)(root, readyPath))) {
49
- const ready = JSON.parse((0, input_files_1.readInputBytes)(root, readyPath).toString());
50
- if (ready.schema !== 'gate-delivery-history-ready' || ready.generation !== 'complete' || ready.planHash !== plan.planHash || ready.aggregateHash !== (0, canonicalData_1.semanticHash)(a))
51
- throw Error('Conflicting historical capture');
52
- for (const f of ready.files)
53
- if ((0, materialization_1.byteHash)((0, input_files_1.readInputBytes)(root, f.path)) !== f.sha256)
54
- throw Error('Captured historical file drift');
55
- return descriptor;
56
- }
58
+ const archive = (0, node_zlib_1.gzipSync)(Buffer.from((0, canonicalData_1.canonicalJson)({ schema: 'gate-delivery-package-snapshot', version: 2, runtimeIdentity: plan.runtimeIdentity, observedPackage: original, files })));
59
+ const archiveFile = `.gate-delivery/packages/${(0, materialization_1.byteHash)(archive)}.json.gz`;
57
60
  const saved = [];
58
- const write = (relative, bytes) => { const file = (0, materialization_1.developmentPath)(root, relative); node_fs_1.default.mkdirSync(node_path_1.default.dirname(file), { recursive: true, mode: 0o700 }); if (node_fs_1.default.existsSync(file) && !(0, input_files_1.readInputBytes)(root, relative).equals(bytes))
59
- throw Error('Partial historical capture conflict'); const fd = node_fs_1.default.openSync(file, 'w', 0o600); try {
60
- node_fs_1.default.writeFileSync(fd, bytes);
61
- node_fs_1.default.fsyncSync(fd);
62
- }
63
- finally {
64
- node_fs_1.default.closeSync(fd);
65
- } saved.push({ path: relative, sha256: (0, materialization_1.byteHash)(bytes) }); };
66
- for (const file of files)
67
- write(`${base}/package/${file.path}`, Buffer.from(file.base64, 'base64'));
61
+ const write = (relative, bytes) => saved.push((0, development_inputs_1.writeImmutableDeliveryFile)(root, relative, bytes));
62
+ const { sourcePath: sourceFile, aggregatePath: aggregateFile } = (0, development_inputs_1.persistDevelopmentInputs)(input);
63
+ const descriptor = { version: 2, aggregateFile, sourceFile, acceptanceFile, readyFile, inputsRoot: `${base}/inputs`, archiveFile };
64
+ for (const relative of [sourceFile, aggregateFile, acceptanceFile])
65
+ saved.push({ path: relative, sha256: (0, materialization_1.byteHash)((0, input_files_1.readInputBytes)(root, relative)) });
68
66
  for (const name of [`${a.inputs.business.businessRoot}/task.yaml`, `${a.inputs.business.businessRoot}/parameters.yaml`, `${a.inputs.business.businessRoot}/parameters.provenance.json`, 'config.yaml', 'hardhat.config.ts', 'package-lock.json', 'contractInfo.json', 'deploymentInfo.json'])
69
67
  write(`${base}/inputs/${name}`, (0, input_files_1.readInputBytes)(root, name));
70
- write(descriptor.aggregateFile, Buffer.from((0, canonicalData_1.canonicalJson)(a) + '\n'));
71
- write(descriptor.sourceFile, Buffer.from((0, canonicalData_1.canonicalJson)(input.source) + '\n'));
72
- write(descriptor.archiveFile, (0, node_zlib_1.gzipSync)(Buffer.from((0, canonicalData_1.canonicalJson)({ schema: 'gate-delivery-package-snapshot', version: 1, runtimeIdentity: plan.runtimeIdentity, observedPackage: original, files }))));
73
- (0, materialization_1.atomicDevelopmentWrite)(root, readyPath, (0, canonicalData_1.canonicalJson)({ schema: 'gate-delivery-history-ready', version: 1, generation: 'complete', planHash: plan.planHash, aggregateHash: (0, canonicalData_1.semanticHash)(a), descriptor, files: saved }) + '\n');
68
+ write(archiveFile, archive);
69
+ (0, development_inputs_1.writeImmutableDeliveryFile)(root, readyFile, Buffer.from((0, canonicalData_1.canonicalJson)({ schema: 'gate-delivery-history-ready', version: 2, generation: 'complete', planHash: plan.planHash, aggregateHash: (0, canonicalData_1.semanticHash)(a), sourceHash: (0, canonicalData_1.semanticHash)(input.source), descriptor, files: saved }) + '\n'));
74
70
  return descriptor;
75
71
  }
76
72
  //# sourceMappingURL=release-history-capture.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"release-history-capture.js","sourceRoot":"","sources":["../../runtime/delivery/release-history-capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"release-history-capture.js","sourceRoot":"","sources":["../../runtime/delivery/release-history-capture.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,14 @@
1
+ export { aggregateInputHash } from './execution-identity';
1
2
  import type { DeliveryAggregate, DeliveryAggregateOptions } from './aggregate';
2
3
  export interface HistoricalDevelopmentFiles {
4
+ version: 2;
3
5
  aggregateFile: string;
4
6
  sourceFile: string;
5
7
  acceptanceFile: string;
6
- packageRoot: string;
8
+ readyFile: string;
7
9
  inputsRoot: string;
8
10
  archiveFile: string;
9
11
  }
10
- export declare function aggregateInputHash(a: DeliveryAggregate): string;
11
12
  /** Every mutable historical container is retained with its ORIGINAL digest; allowed deltas are explicit. */
12
13
  export declare function validateHistoricalDevelopmentFiles(input: {
13
14
  root: string;
@@ -3,21 +3,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.aggregateInputHash = aggregateInputHash;
6
+ exports.aggregateInputHash = void 0;
7
7
  exports.validateHistoricalDevelopmentFiles = validateHistoricalDevelopmentFiles;
8
8
  exports.verifyHistoricalDevelopmentChain = verifyHistoricalDevelopmentChain;
9
9
  /** Read-only consumption of R1 evidence. Historical runtime is verified, never executed or relabelled. */
10
10
  const existing_code_1 = require("./existing-code");
11
11
  const node_fs_1 = __importDefault(require("node:fs"));
12
+ const execution_identity_1 = require("./execution-identity");
13
+ var execution_identity_2 = require("./execution-identity");
14
+ Object.defineProperty(exports, "aggregateInputHash", { enumerable: true, get: function () { return execution_identity_2.aggregateInputHash; } });
12
15
  const node_path_1 = __importDefault(require("node:path"));
13
- const node_crypto_1 = require("node:crypto");
14
- const node_zlib_1 = require("node:zlib");
15
16
  const ethers_1 = require("ethers");
17
+ const workflow_1 = require("gate-evm-tools/workflow");
16
18
  const input_files_1 = require("./input-files");
17
19
  const project_files_1 = require("./project-files");
18
20
  const source_1 = require("./source");
19
21
  const configuration_definition_1 = require("./configuration-definition");
20
22
  const config_1 = require("./config");
23
+ const protocol_1 = require("./protocol");
24
+ const history_package_1 = require("./history-package");
21
25
  const project_1 = require("./project");
22
26
  const plan_1 = require("./plan");
23
27
  const journal_1 = require("./journal");
@@ -32,7 +36,10 @@ const materialization_1 = require("./materialization");
32
36
  const check_code_1 = require("./check-code");
33
37
  const release_graph_1 = require("./release-graph");
34
38
  const history_registration_1 = require("./history-registration");
35
- function aggregateInputHash(a) { return (0, canonicalData_1.semanticHash)({ version: 1, business: a.inputs.business, sourceDefinitions: a.inputs.sourceDefinitions, runtime: a.inputs.runtime, files: a.inputs.files, targets: a.inputs.targets.map(r => ({ target: r.target, configuration: r.configuration.configurationRuntimeHash, sourceConfiguration: r.sourceConfiguration.configurationRuntimeHash, compiler: r.compiler.stableDigest, custom: r.custom })) }); }
39
+ const parameter_defaults_1 = require("./parameter-defaults");
40
+ const parameters_1 = require("./parameters");
41
+ const business_extension_1 = require("./business-extension");
42
+ const custom_1 = require("./custom");
36
43
  function decode(raw) { const v = (0, typedValue_1.parseTypedValue)(raw); switch (v.type) {
37
44
  case 'bigint': return BigInt(v.value);
38
45
  case 'number': return Number(v.value);
@@ -45,23 +52,29 @@ function validateHistoricalDevelopmentFiles(input) {
45
52
  const workspace = (0, project_files_1.projectRoot)(input.workspaceRoot, '.'), root = (0, project_files_1.projectRoot)(workspace, input.projectRoot), { history } = input, files = new Map();
46
53
  if (node_fs_1.default.realpathSync(input.root) !== root)
47
54
  throw Error('Historical current project root mismatch');
55
+ (0, protocol_1.object)(history, 'historical descriptor', ['version', 'aggregateFile', 'sourceFile', 'acceptanceFile', 'readyFile', 'inputsRoot', 'archiveFile']);
56
+ if (history.version !== 2)
57
+ throw Error('Unsupported historical descriptor version');
48
58
  const read = (relative) => { const bytes = (0, input_files_1.readInputBytes)(root, relative); files.set(relative, (0, input_files_1.inputDigest)(bytes)); return bytes; };
49
59
  const aggregate = JSON.parse(read(history.aggregateFile).toString()), source = JSON.parse(read(history.sourceFile).toString()), acceptance = JSON.parse(read(history.acceptanceFile).toString());
50
60
  if (source.projectRoot !== input.projectRoot)
51
61
  throw Error('Historical relative project scope mismatch');
52
62
  if (source.selection !== 'development' || source.targets.length !== 1 || aggregate.collections.length !== 1 || aggregate.inputs.business.targets.length !== 1)
53
63
  throw Error('Historical development scope mismatch');
54
- (0, release_graph_1.sameReleaseData)(aggregateInputHash(aggregate), aggregate.inputsHash, 'Historical aggregate inputs');
64
+ (0, release_graph_1.sameReleaseData)((0, execution_identity_1.aggregateInputHash)(aggregate), aggregate.inputsHash, 'Historical aggregate inputs');
55
65
  (0, release_graph_1.sameReleaseData)((0, canonicalData_1.semanticHash)(aggregate.inputs.sourceDefinitions), aggregate.sourceDefinitionHash, 'Historical source hash');
56
66
  const collection = aggregate.collections[0], plan = (0, plan_1.parseDeliveryPlan)(collection.plan), target = aggregate.inputs.business.targets[0];
67
+ const id = (0, protocol_1.safeId)(plan.executionId, 'executionId'), base = `.gate-delivery/history/${id}`;
68
+ if (history.aggregateFile !== `.gate-delivery/development/${id}.aggregate.json` || history.sourceFile !== `.gate-delivery/development/${id}.source.json` || history.acceptanceFile !== `.gate-delivery/development/${id}.acceptance.json` || history.readyFile !== `${base}/READY.json` || history.inputsRoot !== `${base}/inputs` || !/^\.gate-delivery\/packages\/[a-f0-9]{64}\.json\.gz$/.test(history.archiveFile))
69
+ throw Error('Noncanonical historical descriptor');
57
70
  if (plan.environment !== 'dev' || plan.target !== target.id || source.targets[0].request.network !== plan.target || source.targets[0].executionId !== plan.executionId)
58
71
  throw Error('Historical development identity mismatch');
59
72
  for (const key of ['executionId', 'planHash', 'target', 'inputsHash', 'sourceDefinitionHash', 'runtimeIdentity'])
60
73
  (0, release_graph_1.sameReleaseData)(acceptance[key], plan[key], `Historical acceptance ${key}`);
61
74
  if (acceptance.version !== 1 || acceptance.status !== 'accepted')
62
75
  throw Error('Missing historical acceptance');
63
- const readyPath = node_path_1.default.posix.dirname(history.aggregateFile) + '/READY.json', ready = JSON.parse(read(readyPath).toString());
64
- if (ready.schema !== 'gate-delivery-history-ready' || ready.version !== 1 || ready.generation !== 'complete' || ready.planHash !== plan.planHash || ready.aggregateHash !== (0, canonicalData_1.semanticHash)(aggregate) || !Array.isArray(ready.files) || !ready.files.length)
76
+ const ready = JSON.parse(read(history.readyFile).toString());
77
+ if (ready.schema !== 'gate-delivery-history-ready' || ready.version !== 2 || ready.generation !== 'complete' || ready.planHash !== plan.planHash || ready.aggregateHash !== (0, canonicalData_1.semanticHash)(aggregate) || ready.sourceHash !== (0, canonicalData_1.semanticHash)(source) || !Array.isArray(ready.files) || !ready.files.length)
65
78
  throw Error('Historical snapshot generation is not READY');
66
79
  (0, release_graph_1.sameReleaseData)(ready.descriptor, history, 'Historical READY descriptor');
67
80
  for (const file of ready.files)
@@ -71,63 +84,62 @@ function validateHistoricalDevelopmentFiles(input) {
71
84
  (0, release_graph_1.sameReleaseData)(aggregate.inputs.runtime.declared, plan.runtimeIdentity, 'Historical runtime identity');
72
85
  if (original.name !== 'gate-evm-tools' || original.version !== plan.runtimeIdentity.version || original.source.identity !== original.integrity)
73
86
  throw Error('Historical producer provenance mismatch');
74
- const archive = read(history.archiveFile), snapshot = JSON.parse((0, node_zlib_1.gunzipSync)(archive).toString());
75
- if (snapshot.schema !== 'gate-delivery-package-snapshot' || snapshot.version !== 1 || !Array.isArray(snapshot.files))
76
- throw Error('Invalid historical package snapshot archive');
77
- const archived = snapshot.files.map((f) => { const bytes = Buffer.from(f.base64, 'base64'); if (bytes.toString('base64') !== f.base64 || (0, materialization_1.byteHash)(bytes) !== f.digest)
78
- throw Error('Historical snapshot archive bytes mismatch'); return { path: f.path, digest: f.digest }; });
79
- (0, release_graph_1.sameReleaseData)(archived, original.payload, 'Historical archive complete payload');
80
- (0, release_graph_1.sameReleaseData)(snapshot.observedPackage, original, 'Historical snapshot provenance');
81
- (0, release_graph_1.sameReleaseData)(snapshot.runtimeIdentity, plan.runtimeIdentity, 'Historical snapshot runtime');
82
- const payload = [];
83
- const visit = (relative) => { const dir = (0, project_files_1.confinedFile)(root, `${history.packageRoot}/${relative}`.replace(/\/$/, ''), 'directory'); for (const name of node_fs_1.default.readdirSync(dir).sort()) {
84
- if (name === 'node_modules')
85
- throw Error('Historical producer nested package unsupported');
86
- const rel = relative ? `${relative}/${name}` : name, p = (0, project_files_1.confinedFile)(root, `${history.packageRoot}/${rel}`, node_fs_1.default.lstatSync(node_path_1.default.join(dir, name)).isDirectory() ? 'directory' : 'file');
87
- if (node_fs_1.default.lstatSync(p).isDirectory())
88
- visit(rel);
89
- else
90
- payload.push({ path: rel, digest: (0, input_files_1.inputDigest)(read(`${history.packageRoot}/${rel}`)) });
91
- } };
92
- visit('');
93
- payload.sort((a, b) => a.path < b.path ? -1 : a.path > b.path ? 1 : 0);
94
- (0, release_graph_1.sameReleaseData)(payload, original.payload, 'Historical producer actual payload');
95
- (0, release_graph_1.sameReleaseData)((0, materialization_1.byteHash)(payload.map(f => `${f.path}\0${f.digest}\n`).join('')), original.payloadDigest, 'Historical payload digest');
96
- const digest = (0, node_crypto_1.createHash)('sha256');
97
- const hashDir = (dir) => { for (const name of node_fs_1.default.readdirSync((0, project_files_1.confinedFile)(root, `${history.packageRoot}/${dir}`, 'directory')).sort()) {
98
- const rel = `${dir}/${name}`, file = (0, project_files_1.confinedFile)(root, `${history.packageRoot}/${rel}`, node_fs_1.default.lstatSync(node_path_1.default.join(root, history.packageRoot, rel)).isDirectory() ? 'directory' : 'file');
99
- if (node_fs_1.default.lstatSync(file).isDirectory())
100
- hashDir(rel);
101
- else if (/\.(?:c?js)$/.test(rel)) {
102
- digest.update(rel);
103
- digest.update(read(`${history.packageRoot}/${rel}`));
104
- }
105
- } };
106
- for (const dir of ['dist-runtime', 'dist', 'dist-cjs', 'bin'])
107
- hashDir(dir);
108
- (0, release_graph_1.sameReleaseData)(digest.digest('hex'), plan.runtimeIdentity.digest, 'Historical executable runtime digest');
87
+ const archive = read(history.archiveFile), packageFiles = (0, history_package_1.readHistoricalPackage)(archive, history.archiveFile, aggregate);
109
88
  const business = aggregate.inputs.business.businessRoot, mutable = new Set([`${business}/task.yaml`, `${business}/parameters.yaml`, `${business}/parameters.provenance.json`, 'config.yaml', 'hardhat.config.ts']);
110
89
  const old = (file) => read(`${history.inputsRoot}/${file}`), now = (file) => read(file);
90
+ const evolving = new Set([`${business}/manifest.yaml`, `${business}/parameters.schema.json`].filter(file => {
91
+ const originalFile = aggregate.inputs.files.find(entry => entry.path === file);
92
+ return originalFile !== undefined && (0, input_files_1.inputDigest)(now(file)) !== originalFile.digest;
93
+ }));
94
+ if (evolving.size) {
95
+ const previous = aggregate.inputs.business.parameters.find(entry => entry.target === plan.target)?.resolved;
96
+ if (!previous)
97
+ throw Error('Historical shared-step evolution requires complete accepted parameter evidence');
98
+ const metadata = (0, input_files_1.parseInputDocument)(now(`${business}/task.yaml`), 'yaml');
99
+ const resolved = (0, parameter_defaults_1.resolveParameterTargets)((0, input_files_1.parseInputDocument)(now(`${business}/parameters.yaml`), 'yaml'), (0, input_files_1.parseInputDocument)(now(`${business}/parameters.provenance.json`), 'json'), [plan.target, ...metadata.releaseTargetNetworks]);
100
+ const current = (0, parameters_1.validateHistoricalParameterExtension)(previous, { schema: (0, input_files_1.parseInputDocument)(now(`${business}/parameters.schema.json`), 'json'),
101
+ target: plan.target, values: resolved.params[plan.target], sources: resolved.params, ...resolved.observations[plan.target] });
102
+ const manifest = (0, protocol_1.object)((0, input_files_1.parseInputDocument)(now(`${business}/manifest.yaml`), 'yaml'), 'manifest.yaml', ['id', 'description', 'steps']);
103
+ if (manifest.id !== plan.deploymentId || !Array.isArray(manifest.steps))
104
+ throw Error('Historical shared manifest identity changed');
105
+ (0, business_extension_1.validateHistoricalBusinessExtension)({ before: aggregate.inputs.business.steps, after: manifest.steps.map(custom_1.parseNativeOperation), previous, current, target: target });
106
+ }
111
107
  const ownPayload = new Set(original.payload.map(file => `${original.lockLocation}/${file.path}`));
112
108
  // The entire old frozen file union is verified. Only owned producer bytes and bounded containers have historical locations.
113
109
  for (const file of aggregate.inputs.files) {
114
- const bytes = ownPayload.has(file.path) ? read(`${history.packageRoot}/${file.path.slice(original.lockLocation.length + 1)}`) : mutable.has(file.path) ? old(file.path) : now(file.path);
110
+ if (evolving.has(file.path))
111
+ continue;
112
+ const bytes = ownPayload.has(file.path) ? packageFiles.get(file.path.slice(original.lockLocation.length + 1)) : mutable.has(file.path) ? old(file.path) : now(file.path);
115
113
  if ((0, input_files_1.inputDigest)(bytes) !== file.digest)
116
114
  throw Error(`Historical immutable input drift: ${file.path}`);
117
115
  }
118
116
  const oldTask = (0, input_files_1.parseInputDocument)(old(`${business}/task.yaml`), 'yaml'), newTask = (0, input_files_1.parseInputDocument)(now(`${business}/task.yaml`), 'yaml');
119
- (0, release_graph_1.sameReleaseData)({ ...newTask, releaseTargetNetworks: oldTask.releaseTargetNetworks }, oldTask, 'Historical development task container');
117
+ const { productionRequirementRef: _production, ...newBase } = newTask;
118
+ (0, release_graph_1.sameReleaseData)({ ...newBase, releaseTargetNetworks: oldTask.releaseTargetNetworks, ...(oldTask.productionRequirementRef === undefined ? {} : { productionRequirementRef: oldTask.productionRequirementRef }) }, oldTask, 'Historical development task container');
120
119
  if (!Array.isArray(newTask.releaseTargetNetworks) || oldTask.releaseTargetNetworks.some((x) => !newTask.releaseTargetNetworks.includes(x)))
121
120
  throw Error('Historical production target removal');
122
121
  const prod = new Set(newTask.releaseTargetNetworks);
123
122
  for (const file of ['parameters.yaml', 'parameters.provenance.json']) {
124
123
  const before = (0, input_files_1.parseInputDocument)(old(`${business}/${file}`), file.endsWith('.json') ? 'json' : 'yaml'), after = (0, input_files_1.parseInputDocument)(now(`${business}/${file}`), file.endsWith('.json') ? 'json' : 'yaml');
125
124
  const container = file === 'parameters.yaml' ? 'params' : 'targets';
126
- const projection = (value) => ({ ...value, [container]: Object.fromEntries(Object.entries(value[container]).filter(([k]) => !prod.has(k))) });
125
+ if (file.endsWith('.json'))
126
+ for (const [id, definition] of Object.entries(before.producers))
127
+ (0, release_graph_1.sameReleaseData)(after.producers[id], definition, 'Historical existing producer definition');
128
+ const projection = (value) => ({ ...value, ...(file.endsWith('.json') ? { producers: before.producers } : {}), [container]: Object.fromEntries(Object.entries(value[container]).filter(([k]) => !prod.has(k) && !(evolving.size && k === plan.target))) });
127
129
  (0, release_graph_1.sameReleaseData)(projection(after), projection(before), 'Historical dev parameter values/provenance');
128
130
  }
129
131
  const oldConfig = (0, input_files_1.parseInputDocument)(old('config.yaml'), 'yaml'), newConfig = (0, input_files_1.parseInputDocument)(now('config.yaml'), 'yaml');
130
- (0, release_graph_1.sameReleaseData)(Object.fromEntries(Object.entries(newConfig).filter(([k]) => !prod.has(k))), Object.fromEntries(Object.entries(oldConfig).filter(([k]) => !prod.has(k))), 'Historical development configuration');
132
+ // Prod defaults do not participate in dev inheritance. Keep shared/dev defaults and network overrides bound.
133
+ const devConfig = (value) => {
134
+ const config = (0, protocol_1.object)(value, 'config.yaml'), projected = Object.fromEntries(Object.entries(config).filter(([k]) => k !== '_profiles' && !prod.has(k)));
135
+ if (config._profiles !== undefined) {
136
+ const { prod: _prod, ...profiles } = (0, protocol_1.object)(config._profiles, '_profiles', ['baseProfile', 'dev', 'prod']);
137
+ if (Object.keys(profiles).length)
138
+ projected._profiles = profiles;
139
+ }
140
+ return projected;
141
+ };
142
+ (0, release_graph_1.sameReleaseData)(devConfig(newConfig), devConfig(oldConfig), 'Historical development configuration');
131
143
  const previous = (0, configuration_definition_1.parseConfigurationDefinition)(old('hardhat.config.ts'), plan.target).definition, current = (0, configuration_definition_1.parseConfigurationDefinition)(now('hardhat.config.ts'), plan.target).definition;
132
144
  // Existing Hardhat networks remain identical; only newly selected production aliases may be added.
133
145
  for (const [name, value] of Object.entries(previous.networks))
@@ -146,7 +158,7 @@ function validateHistoricalDevelopmentFiles(input) {
146
158
  throw Error('Historical task source identity mismatch');
147
159
  const projection = (0, source_1.projectCanonicalDefinitions)(text, { roots: [source.targets[0].request.sourceRef.planKey], mode: 'upstream' }).snapshot;
148
160
  const normalize = (v) => { const copy = JSON.parse((0, canonicalData_1.canonicalJson)(v)); for (const t of copy.tasks)
149
- if (t.scope?.deployment)
161
+ if (t.scope?.deployment && Object.hasOwn(t.scope.deployment, 'releaseTargetNetworks'))
150
162
  t.scope.deployment.releaseTargetNetworks = oldTask.releaseTargetNetworks; return copy; };
151
163
  const historical = aggregate.inputs.sourceDefinitions;
152
164
  if (historical.length !== 1 || historical[0].path !== handoff)
@@ -197,8 +209,10 @@ function validateHistoricalDevelopmentFiles(input) {
197
209
  effective[plan.target][change.contractInfoKey] = change.address;
198
210
  const key = change.contractInfoKey.split(':')[0];
199
211
  expectedCode.push({ key, contract: change.actualContract, address: change.implementationAddress ?? change.address });
200
- if (change.proxyKind === 'uups')
201
- expectedCode.push({ key: `${key}_Proxy`, contract: 'ERC1967Proxy', address: change.address });
212
+ if (change.proxyKind)
213
+ expectedCode.push({ key: `${key}_Proxy`, contract: change.proxyKind === 'transparent' ? 'TransparentUpgradeableProxy' : 'ERC1967Proxy', address: change.address });
214
+ if (change.proxyKind === 'transparent')
215
+ expectedCode.push({ key: `${key}_ProxyAdmin`, contract: 'ProxyAdmin', address: change.proxyAdminAddress });
202
216
  }
203
217
  const pure = !preparations.length ? (0, existing_code_1.existingCodeCoverage)({ target: plan.target, addresses: (0, existing_code_1.requiredExistingAddresses)(collection), registry: JSON.parse(historicalRegistration('contractInfo.json').toString()), metadata: JSON.parse(historicalRegistration('deploymentInfo.json').toString()), compiler: aggregate.inputs.targets.find(t => t.target === plan.target).compiler, manifests: (acceptance.materialization.manifests ?? []).map((m) => ({ path: m.file, contents: now(m.file).toString() })) }) : null;
204
218
  if (pure) {
@@ -219,7 +233,7 @@ function validateHistoricalDevelopmentFiles(input) {
219
233
  (0, check_code_1.validateDevelopmentCheckReport)(JSON.parse(raw.toString()), plan.target, expectedCode);
220
234
  (0, release_graph_1.sameReleaseData)(code.artifacts, pure?.artifacts ?? preparations.map(p => p.prepared.plan.artifact), 'Historical CheckCode artifacts');
221
235
  const manifests = acceptance.materialization.manifests;
222
- if (!Array.isArray(manifests) || record.changes.some((c) => c.proxyKind === 'uups') && !manifests.length)
236
+ if (!Array.isArray(manifests) || record.changes.some((c) => (c.proxyKind === 'uups' || c.proxyKind === 'transparent')) && !manifests.length)
223
237
  throw Error('Missing official manifest evidence');
224
238
  for (const m of manifests)
225
239
  (0, release_graph_1.sameReleaseData)((0, materialization_1.byteHash)(now(m.file)), m.hash, 'Historical official manifest');
@@ -233,6 +247,39 @@ async function verifyHistoricalDevelopmentChain(result, root) {
233
247
  const context = { executionId: plan.executionId, planHash: plan.planHash, releaseHash: plan.inputsHash, operator: plan.operator, policyHash: (0, canonicalData_1.semanticHash)({ historical: true }), chainId: plan.chainId, target: plan.target, finality: { kind: 'confirmations', depth: String(Math.max(1, aggregate.inputs.business.targets[0].finality.confirmations)) } };
234
248
  for (const [index, observation] of acceptance.finalized.entries())
235
249
  (0, release_graph_1.sameReleaseData)(await (0, eoa_observation_1.observeEoaTransaction)({ plan, context, provider: rpc, index, transactionHash: observation.transactionHash }), observation, 'Current historical finalized receipt');
250
+ // Recheck exercised Transparent administration from the accepted metadata and sealed
251
+ // compiler output. No project code or historical runtime is loaded.
252
+ const journal = (0, materialization_1.readDevelopmentJournal)(root, plan.executionId), metadataFile = journal?.files.find((f) => f.path === 'deploymentInfo.json');
253
+ if (!metadataFile)
254
+ throw Error('Historical deployment metadata missing');
255
+ const metadata = JSON.parse(metadataFile.after).networks?.[plan.target] ?? {}, raw = JSON.parse((0, input_files_1.readInputBytes)(root, acceptance.checkCode.rawFile).toString())[plan.target];
256
+ const compiler = aggregate.inputs.targets.find(t => t.target === plan.target).compiler, checker = new workflow_1.BytecodeChecker(undefined, {}, 'evm');
257
+ for (const [alias, m] of Object.entries(metadata))
258
+ if (m.proxyKind === 'transparent' && Object.hasOwn(raw, `${alias}_ProxyAdmin`)) {
259
+ const admin = m.proxyAdminAddress?.toLowerCase();
260
+ if (!admin || admin !== (0, workflow_1.transparentAdminAddress)(m.address) || !m.proxyAdminOwner)
261
+ throw Error('Historical Transparent admin identity mismatch');
262
+ const slot = await provider.getStorage(m.address, workflow_1.ERC1967_ADMIN_SLOT);
263
+ if (!/^0x0{24}[a-fA-F0-9]{40}$/.test(slot) || '0x' + slot.slice(-40).toLowerCase() !== admin)
264
+ throw Error('Historical Transparent admin slot mismatch');
265
+ for (const name of [workflow_1.TRANSPARENT_PROXY_ARTIFACT, workflow_1.PROXY_ADMIN_ARTIFACT]) {
266
+ const matches = compiler.artifacts.filter(a => a.fqn === name);
267
+ if (matches.length !== 1)
268
+ throw Error('Historical Transparent artifact missing');
269
+ const entry = matches[0], artifact = entry.artifact, build = compiler.builds.find(b => b.digest === entry.buildInfo), refs = build && JSON.parse(build.contents).output?.contracts?.[artifact.sourceName]?.[artifact.contractName]?.evm?.deployedBytecode?.immutableReferences;
270
+ if (!refs)
271
+ throw Error('Historical Transparent compiler output missing');
272
+ const code = await provider.getCode(name === workflow_1.PROXY_ADMIN_ARTIFACT ? admin : m.address);
273
+ if (code === '0x' || !checker.compareBytecode(code, artifact.deployedBytecode, artifact.abi, refs).matches)
274
+ throw Error('Historical Transparent runtime mismatch');
275
+ if (name === workflow_1.TRANSPARENT_PROXY_ARTIFACT)
276
+ (0, workflow_1.assertTransparentAdminImmutable)(code, refs, admin);
277
+ }
278
+ const owner = workflow_1.PROXY_ADMIN_INTERFACE.decodeFunctionResult('owner', await provider.call({ to: admin, data: workflow_1.PROXY_ADMIN_INTERFACE.encodeFunctionData('owner') }))[0];
279
+ const version = workflow_1.PROXY_ADMIN_INTERFACE.decodeFunctionResult('UPGRADE_INTERFACE_VERSION', await provider.call({ to: admin, data: workflow_1.PROXY_ADMIN_INTERFACE.encodeFunctionData('UPGRADE_INTERFACE_VERSION') }))[0];
280
+ if (owner.toLowerCase() !== m.proxyAdminOwner.toLowerCase() || version !== '5.0.0')
281
+ throw Error('Historical ProxyAdmin owner/version mismatch');
282
+ }
236
283
  for (const assertion of acceptance.assertions) {
237
284
  const contract = new ethers_1.Contract(assertion.address, assertion.abi, provider), actual = await contract.getFunction(assertion.method).staticCall(...decode(assertion.args)), comparison = (0, abi_1.compareAbiResults)(assertion.abi, assertion.method, actual, decode(assertion.expected));
238
285
  if (comparison.actual !== comparison.expected)