@pixel-point/toolcraft 0.0.17 → 0.0.19

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 (503) hide show
  1. package/package.json +1 -1
  2. package/src/generate-demand-only-lifecycle.test.mjs +9 -1
  3. package/src/generate-performance-iteration-execution.test.mjs +3 -3
  4. package/src/generate-test-delivery-architecture-assertions.mjs +11 -73
  5. package/src/generate-test-demand-only-lifecycle.mjs +34 -36
  6. package/src/generate-test-dependency-sandbox.mjs +4 -1
  7. package/src/generate-test-doc-assertions.mjs +81 -89
  8. package/src/generate-test-doc-assertions.test.mjs +44 -1
  9. package/src/generate-test-doc-policy-assertions.mjs +92 -0
  10. package/src/generate-test-export-doc-assertions.mjs +53 -0
  11. package/src/generate-test-file-assertions.mjs +77 -83
  12. package/src/generate-test-integrity-assertions.mjs +5 -2
  13. package/src/generate-test-integrity-manifest-assertions.mjs +16 -5
  14. package/src/generate-test-integrity-ownership-assertions.mjs +36 -4
  15. package/src/generate-test-package-assertions.mjs +4 -0
  16. package/src/generate-test-product-fixture.mjs +1 -1
  17. package/src/generate-test-product-fixture.test.mjs +35 -38
  18. package/src/generate-test-product-iteration.mjs +0 -1
  19. package/src/generate-test-product-iteration.test.mjs +17 -1
  20. package/src/generate-test-runtime-boundary-assertions.mjs +178 -0
  21. package/src/generate-test-standalone-assertions.mjs +7 -13
  22. package/src/generate-test-standalone-delivery-stages.mjs +2 -86
  23. package/src/generate.test.mjs +4 -0
  24. package/src/generated-integrity-manifest.test.mjs +5 -2
  25. package/src/generated-source-policy.test.mjs +0 -4
  26. package/src/package-json.mjs +5 -0
  27. package/src/package-json.test.mjs +21 -0
  28. package/src/package-manager.mjs +2 -0
  29. package/src/package-manager.test.mjs +8 -0
  30. package/src/packaged-template-fallback-helpers.mjs +254 -0
  31. package/src/packaged-template-fallback.test.mjs +121 -46
  32. package/src/packaged-template-runtime-assertions.mjs +150 -0
  33. package/templates/runtime/contracts/component-contracts.choices.test.ts +64 -5
  34. package/templates/runtime/contracts/component-contracts.choices.ts +55 -5
  35. package/templates/runtime/contracts/component-contracts.inputs.test.ts +6 -6
  36. package/templates/runtime/contracts/component-contracts.inputs.ts +8 -7
  37. package/templates/runtime/contracts/component-contracts.media-custom.test.ts +8 -2
  38. package/templates/runtime/contracts/component-contracts.media-custom.ts +8 -2
  39. package/templates/runtime/contracts/component-contracts.runtime-acceptance.test.ts +22 -8
  40. package/templates/runtime/contracts/component-contracts.runtime-labels.test.ts +7 -1
  41. package/templates/runtime/contracts/component-contracts.runtime-panels.test.ts +3 -0
  42. package/templates/runtime/contracts/component-contracts.runtime-shell.test.ts +4 -1
  43. package/templates/runtime/contracts/component-contracts.runtime.ts +19 -12
  44. package/templates/runtime/contracts/component-contracts.test.ts +2 -0
  45. package/templates/runtime/contracts/component-contracts.visual.test.ts +20 -0
  46. package/templates/runtime/contracts/component-contracts.visual.ts +4 -0
  47. package/templates/runtime/contracts/decision-contracts.test.ts +35 -11
  48. package/templates/runtime/contracts/decision-contracts.ts +12 -12
  49. package/templates/runtime/contracts/performance-verification-policy.test.ts +12 -12
  50. package/templates/runtime/contracts/performance-verification-policy.ts +8 -8
  51. package/templates/runtime/export/artifact-download.ts +1 -0
  52. package/templates/runtime/export/artifact-frame-renderer.ts +2 -15
  53. package/templates/runtime/export/artifact-frame-state.ts +16 -0
  54. package/templates/runtime/export/artifact-scene-frame.test.ts +3 -3
  55. package/templates/runtime/export/artifact-scene-frame.ts +3 -3
  56. package/templates/runtime/export/export-background.ts +0 -19
  57. package/templates/runtime/export/export-error.ts +5 -0
  58. package/templates/runtime/export/export-renderer-coverage.ts +54 -0
  59. package/templates/runtime/export/export.test.ts +45 -42
  60. package/templates/runtime/export/image-artifact-export.ts +2 -2
  61. package/templates/runtime/export/index.ts +57 -16
  62. package/templates/runtime/export/product-export-renderer.test.ts +38 -4
  63. package/templates/runtime/export/product-export-renderer.ts +0 -41
  64. package/templates/runtime/export/product-svg-export-renderer.ts +21 -0
  65. package/templates/runtime/export/svg-artifact-export.test.ts +98 -0
  66. package/templates/runtime/export/svg-artifact-export.ts +120 -0
  67. package/templates/runtime/export/svg-document.test.ts +221 -0
  68. package/templates/runtime/export/svg-document.ts +400 -0
  69. package/templates/runtime/export/svg-policy.ts +47 -0
  70. package/templates/runtime/index.ts +3 -0
  71. package/templates/runtime/model-import/model-import-limits.ts +15 -4
  72. package/templates/runtime/react/app-shell/runtime-public-api.test.tsx +21 -1
  73. package/templates/runtime/react/app-shell/settings-transfer.test.ts +21 -0
  74. package/templates/runtime/react/app-shell/toolcraft-app.scene-export.test.tsx +75 -1
  75. package/templates/runtime/react/app-shell/toolcraft-app.tsx +24 -9
  76. package/templates/runtime/react/canvas/canvas-shell-interactions.test.tsx +30 -0
  77. package/templates/runtime/react/canvas/canvas-shell-pinch-interactions.test.tsx +155 -0
  78. package/templates/runtime/react/canvas/canvas-shell-rendering.test.tsx +77 -1
  79. package/templates/runtime/react/canvas/canvas-shell-test-utils.tsx +13 -1
  80. package/templates/runtime/react/canvas/canvas-shell.tsx +32 -6
  81. package/templates/runtime/react/canvas/canvas-viewport-geometry.ts +133 -0
  82. package/templates/runtime/react/canvas/product-scene-surface.test.tsx +195 -0
  83. package/templates/runtime/react/canvas/product-scene-surface.tsx +155 -0
  84. package/templates/runtime/react/canvas/runtime-scene-export.ts +1 -1
  85. package/templates/runtime/react/canvas/use-canvas-viewport-interactions.ts +285 -36
  86. package/templates/runtime/react/controls-panel/__tests__/control-conditions.test.ts +61 -0
  87. package/templates/runtime/react/controls-panel/__tests__/controls-panel.collection-actions.test.tsx +89 -0
  88. package/templates/runtime/react/controls-panel/__tests__/controls-panel.color-applicability-layout.test.tsx +134 -0
  89. package/templates/runtime/react/controls-panel/__tests__/controls-panel.color-layout.test.tsx +16 -1
  90. package/templates/runtime/react/controls-panel/__tests__/controls-panel.control-visibility.test.tsx +40 -19
  91. package/templates/runtime/react/controls-panel/__tests__/controls-panel.render-isolation.test.tsx +2 -0
  92. package/templates/runtime/react/controls-panel/__tests__/controls-panel.scene-export-actions.test.tsx +40 -1
  93. package/templates/runtime/react/controls-panel/__tests__/controls-panel.setup-controls.test.tsx +3 -3
  94. package/templates/runtime/react/controls-panel/__tests__/controls-panel.source-collection.test.tsx +59 -0
  95. package/templates/runtime/react/controls-panel/__tests__/controls-panel.source-color-bank.test.tsx +67 -0
  96. package/templates/runtime/react/controls-panel/__tests__/controls-panel.vector-interaction.test.tsx +6 -6
  97. package/templates/runtime/react/controls-panel/actions/controls-panel-actions.ts +4 -6
  98. package/templates/runtime/react/controls-panel/actions/export-action-runner.ts +41 -6
  99. package/templates/runtime/react/controls-panel/conditions/control-conditions.ts +32 -119
  100. package/templates/runtime/react/controls-panel/layout/controls-panel-control-group.tsx +5 -2
  101. package/templates/runtime/react/controls-panel/layout/controls-panel-layout.tsx +41 -10
  102. package/templates/runtime/react/controls-panel/layout/controls-panel-section.tsx +7 -4
  103. package/templates/runtime/react/controls-panel/renderers/controls-panel-action-renderer.tsx +2 -1
  104. package/templates/runtime/react/controls-panel/renderers/controls-panel-basic-renderers.tsx +2 -52
  105. package/templates/runtime/react/controls-panel/renderers/controls-panel-collection-item-fields.test.tsx +63 -0
  106. package/templates/runtime/react/controls-panel/renderers/controls-panel-collection-item-fields.tsx +138 -0
  107. package/templates/runtime/react/controls-panel/renderers/controls-panel-collection-items.tsx +104 -0
  108. package/templates/runtime/react/controls-panel/renderers/controls-panel-collection-renderer.tsx +115 -236
  109. package/templates/runtime/react/controls-panel/renderers/controls-panel-file-drop-item-controls.test.tsx +95 -0
  110. package/templates/runtime/react/controls-panel/renderers/controls-panel-file-drop-item-controls.tsx +82 -0
  111. package/templates/runtime/react/controls-panel/renderers/controls-panel-media-renderer.test.tsx +73 -1
  112. package/templates/runtime/react/controls-panel/renderers/controls-panel-media-renderer.tsx +50 -1
  113. package/templates/runtime/react/controls-panel/renderers/controls-panel-renderer-registry.test.ts +1 -1
  114. package/templates/runtime/react/controls-panel/renderers/controls-panel-renderer-registry.ts +2 -1
  115. package/templates/runtime/react/controls-panel/values/controls-panel-collection-values.ts +38 -6
  116. package/templates/runtime/react/controls-panel/values/controls-panel-color-values.ts +1 -9
  117. package/templates/runtime/react/controls-panel/values/controls-panel-spatial-values.ts +7 -2
  118. package/templates/runtime/react/controls-panel/values/controls-panel-value-labels.ts +1 -0
  119. package/templates/runtime/react/index.ts +4 -0
  120. package/templates/runtime/react/model-rendering/model-export.ts +1 -1
  121. package/templates/runtime/react/orientation-gizmo/orientation-gizmo-math.ts +9 -69
  122. package/templates/runtime/react/orientation-gizmo/orientation-gizmo-selection.ts +5 -5
  123. package/templates/runtime/react/orientation-gizmo/use-toolcraft-orientation-control-selection.ts +2 -2
  124. package/templates/runtime/scene/scene-bounds.test.ts +23 -0
  125. package/templates/runtime/scene/scene-bounds.ts +31 -17
  126. package/templates/runtime/schema/app-capabilities.test.ts +4 -0
  127. package/templates/runtime/schema/artifact-export-actions.test.ts +47 -0
  128. package/templates/runtime/schema/artifact-export-actions.ts +49 -0
  129. package/templates/runtime/schema/collection-item-controls.ts +29 -0
  130. package/templates/runtime/schema/control-applicability.test.ts +127 -0
  131. package/templates/runtime/schema/control-applicability.ts +433 -0
  132. package/templates/runtime/schema/control-schema-normalization.ts +177 -11
  133. package/templates/runtime/schema/controls-panel-actions.ts +2 -2
  134. package/templates/runtime/schema/controls-panel-section-layout.ts +14 -9
  135. package/templates/runtime/schema/controls-panel-section-roundtrip.test.ts +59 -0
  136. package/templates/runtime/schema/define-toolcraft.collection-actions-item-controls.test.ts +127 -0
  137. package/templates/runtime/schema/define-toolcraft.control-sections.test.ts +10 -4
  138. package/templates/runtime/schema/define-toolcraft.file-drop-item-controls.test.ts +98 -0
  139. package/templates/runtime/schema/define-toolcraft.file-drop-normalization.test.ts +27 -0
  140. package/templates/runtime/schema/define-toolcraft.segmented-control-fit.test.ts +20 -2
  141. package/templates/runtime/schema/define-toolcraft.setup-canvas.test.ts +16 -3
  142. package/templates/runtime/schema/define-toolcraft.source-collection.test.ts +79 -0
  143. package/templates/runtime/schema/runtime-setup-section.ts +24 -5
  144. package/templates/runtime/schema/types.ts +69 -13
  145. package/templates/runtime/state/canvas-background-state.ts +1 -16
  146. package/templates/runtime/state/canvas-state.ts +32 -20
  147. package/templates/runtime/state/control-value-codecs.test.ts +98 -0
  148. package/templates/runtime/state/control-value-codecs.ts +700 -0
  149. package/templates/runtime/state/control-value-normalization.test.ts +1 -1
  150. package/templates/runtime/state/control-value-normalization.ts +127 -135
  151. package/templates/runtime/state/controls-reducer.ts +26 -3
  152. package/templates/runtime/state/create-template-state.test.ts +30 -0
  153. package/templates/runtime/state/create-template-state.ts +52 -31
  154. package/templates/runtime/state/orientation-pose.ts +80 -0
  155. package/templates/runtime/state/persistence-control-values.test.ts +59 -0
  156. package/templates/runtime/state/reducer-controls.test.ts +45 -0
  157. package/templates/runtime/state/reducer-media-reset.test.ts +1 -1
  158. package/templates/runtime/state/reducer-timeline.test.ts +70 -0
  159. package/templates/runtime/state/timeline-reducer.ts +40 -2
  160. package/templates/runtime/testing/performance-schema-queries.ts +2 -2
  161. package/templates/starter/AGENTS.md +29 -28
  162. package/templates/starter/docs/toolcraft/README.md +6 -6
  163. package/templates/starter/docs/toolcraft/acceptance-testing.md +34 -48
  164. package/templates/starter/docs/toolcraft/agent-worklog.md +103 -1
  165. package/templates/starter/docs/toolcraft/assembly-workflow.md +16 -8
  166. package/templates/starter/docs/toolcraft/component-rules.md +9 -7
  167. package/templates/starter/docs/toolcraft/core/control-selection.md +9 -3
  168. package/templates/starter/docs/toolcraft/core/layout.md +13 -8
  169. package/templates/starter/docs/toolcraft/core/media-upload.md +3 -1
  170. package/templates/starter/docs/toolcraft/core/performance.md +8 -10
  171. package/templates/starter/docs/toolcraft/core/reference-study.md +80 -19
  172. package/templates/starter/docs/toolcraft/core/runtime-boundary.md +15 -3
  173. package/templates/starter/docs/toolcraft/core/setup-export.md +67 -11
  174. package/templates/starter/docs/toolcraft/custom-controls.md +6 -4
  175. package/templates/starter/docs/toolcraft/decision-contract.md +4 -2
  176. package/templates/starter/docs/toolcraft/performance.md +8 -10
  177. package/templates/starter/docs/toolcraft/renderer-technique.md +6 -2
  178. package/templates/starter/docs/toolcraft/schema-reference.md +24 -22
  179. package/templates/starter/docs/toolcraft/workflow.md +14 -14
  180. package/templates/starter/e2e/app-browser-control-applicability-requirements.spec.ts +163 -0
  181. package/templates/starter/e2e/app-browser-infinity-canvas-evidence.spec.ts +45 -2
  182. package/templates/starter/e2e/app-browser-motion-reference-requirements.spec.ts +411 -0
  183. package/templates/starter/e2e/app-browser-orientation-evidence.spec.ts +174 -21
  184. package/templates/starter/e2e/app-browser-proof-session.spec.ts +85 -0
  185. package/templates/starter/e2e/app-browser-runtime-requirements.spec.ts +63 -33
  186. package/templates/starter/e2e/app-browser-selection-scope-evidence.spec.ts +137 -0
  187. package/templates/starter/e2e/app-browser-semantic-evidence.spec.ts +61 -15
  188. package/templates/starter/e2e/{browser-conditional-output-evidence-helpers.ts → browser-background-output-evidence.ts} +0 -68
  189. package/templates/starter/e2e/browser-control-applicability-evidence.ts +114 -0
  190. package/templates/starter/e2e/browser-infinity-canvas-evidence.ts +20 -11
  191. package/templates/starter/e2e/browser-infinity-canvas-svg-evidence.ts +42 -0
  192. package/templates/starter/e2e/browser-layer-evidence-helpers.ts +15 -36
  193. package/templates/starter/e2e/browser-orientation-gizmo-evidence-helpers.ts +4 -0
  194. package/templates/starter/e2e/browser-orientation-gizmo-live-preconditions.ts +86 -0
  195. package/templates/starter/e2e/browser-product-raster-snapshot.ts +213 -0
  196. package/templates/starter/e2e/browser-proof-session.ts +43 -15
  197. package/templates/starter/e2e/browser-proof-surface-action.ts +79 -0
  198. package/templates/starter/e2e/browser-proof-types.ts +15 -0
  199. package/templates/starter/e2e/browser-runtime-applicability-requirements.ts +84 -0
  200. package/templates/starter/e2e/browser-runtime-evidence-reporter.ts +9 -2
  201. package/templates/starter/e2e/browser-runtime-evidence-requirements.ts +51 -32
  202. package/templates/starter/e2e/browser-selection-scope-evidence.ts +269 -0
  203. package/templates/starter/e2e/browser-semantic-evidence-test-helpers.ts +122 -0
  204. package/templates/starter/e2e/browser-svg-export-evidence.spec.ts +79 -0
  205. package/templates/starter/e2e/browser-svg-export-evidence.ts +152 -0
  206. package/templates/starter/e2e/export-artifact-helpers.ts +70 -0
  207. package/templates/starter/e2e/product-observable-helpers.ts +8 -129
  208. package/templates/starter/e2e/svg-artifact-inspection.spec.ts +136 -0
  209. package/templates/starter/e2e/svg-artifact-inspection.ts +331 -0
  210. package/templates/starter/e2e/svg-download-test-fixtures.ts +34 -0
  211. package/templates/starter/e2e/toolcraft-delivery-catalog-reporter.ts +198 -15
  212. package/templates/starter/e2e/toolcraft-feature-verification-reporter.spec.ts +149 -0
  213. package/templates/starter/e2e/toolcraft-feature-verification-reporter.ts +223 -0
  214. package/templates/starter/package.json +2 -0
  215. package/templates/starter/scripts/check-toolcraft-docs.mjs +1 -0
  216. package/templates/starter/scripts/create-toolcraft-motion-reference-study.mjs +233 -0
  217. package/templates/starter/scripts/create-toolcraft-motion-reference-study.test.mjs +459 -0
  218. package/templates/starter/scripts/playwright-test-title-selection.d.mts +45 -0
  219. package/templates/starter/scripts/run-browser-performance-test-helpers.mjs +0 -27
  220. package/templates/starter/scripts/run-browser-performance.mjs +0 -6
  221. package/templates/starter/scripts/run-browser-performance.test.mjs +5 -13
  222. package/templates/starter/scripts/run-delivery-verification-test-helpers.mjs +0 -34
  223. package/templates/starter/scripts/run-delivery-verification.test.mjs +135 -31
  224. package/templates/starter/scripts/run-feature-verification.mjs +212 -0
  225. package/templates/starter/scripts/run-feature-verification.test.mjs +226 -0
  226. package/templates/starter/scripts/toolcraft-checkpoint-delivery-state.mjs +21 -8
  227. package/templates/starter/scripts/toolcraft-checkpoint-delivery-state.test.mjs +32 -92
  228. package/templates/starter/scripts/toolcraft-checkpoint-transaction.mjs +28 -6
  229. package/templates/starter/scripts/toolcraft-checkpoint-transaction.test.mjs +8 -63
  230. package/templates/starter/scripts/toolcraft-contract-manifest.json +1 -0
  231. package/templates/starter/scripts/toolcraft-delivery-anchor.mjs +28 -8
  232. package/templates/starter/scripts/toolcraft-delivery-anchor.test.mjs +50 -61
  233. package/templates/starter/scripts/toolcraft-delivery-architecture-inventory.mjs +0 -4
  234. package/templates/starter/scripts/toolcraft-delivery-architecture-policy.mjs +0 -1
  235. package/templates/starter/scripts/toolcraft-delivery-evidence.test.mjs +2 -3
  236. package/templates/starter/scripts/toolcraft-delivery-executor.mjs +5 -1
  237. package/templates/starter/scripts/toolcraft-delivery-executor.test.mjs +5 -12
  238. package/templates/starter/scripts/toolcraft-delivery-functional-context.d.mts +1 -48
  239. package/templates/starter/scripts/toolcraft-delivery-functional-context.mjs +2 -30
  240. package/templates/starter/scripts/toolcraft-delivery-functional-context.test.mjs +4 -166
  241. package/templates/starter/scripts/toolcraft-delivery-functional-initial.test.mjs +4 -20
  242. package/templates/starter/scripts/toolcraft-delivery-lifecycle.mjs +43 -192
  243. package/templates/starter/scripts/toolcraft-delivery-performance-iteration-lifecycle.test.mjs +79 -440
  244. package/templates/starter/scripts/toolcraft-delivery-plan-authority.test.mjs +102 -297
  245. package/templates/starter/scripts/toolcraft-delivery-plan-construction.mjs +46 -97
  246. package/templates/starter/scripts/toolcraft-delivery-plan-test-helpers.mjs +125 -0
  247. package/templates/starter/scripts/toolcraft-delivery-plan-validation.test.mjs +58 -0
  248. package/templates/starter/scripts/toolcraft-delivery-plan.d.mts +19 -31
  249. package/templates/starter/scripts/toolcraft-delivery-plan.mjs +254 -252
  250. package/templates/starter/scripts/toolcraft-delivery-plan.test.mjs +29 -457
  251. package/templates/starter/scripts/toolcraft-delivery-receipt-performance.test.mjs +1 -1
  252. package/templates/starter/scripts/toolcraft-delivery-receipt-strictness.test.mjs +3 -72
  253. package/templates/starter/scripts/toolcraft-delivery-receipt-test-helpers.mjs +7 -36
  254. package/templates/starter/scripts/toolcraft-delivery-receipt.d.mts +3 -5
  255. package/templates/starter/scripts/toolcraft-delivery-receipt.mjs +15 -31
  256. package/templates/starter/scripts/toolcraft-delivery-receipt.test.mjs +28 -20
  257. package/templates/starter/scripts/toolcraft-delivery-receipt.types.test.mts +22 -30
  258. package/templates/starter/scripts/toolcraft-feature-verification-plan.d.mts +20 -0
  259. package/templates/starter/scripts/toolcraft-feature-verification-plan.mjs +146 -0
  260. package/templates/starter/scripts/toolcraft-feature-verification-plan.test.mjs +96 -0
  261. package/templates/starter/scripts/toolcraft-functional-proof-model.d.mts +3 -18
  262. package/templates/starter/scripts/toolcraft-functional-proof-model.mjs +39 -127
  263. package/templates/starter/scripts/toolcraft-functional-proof-model.test.mjs +25 -362
  264. package/templates/starter/scripts/toolcraft-functional-proof-model.types.test.mts +6 -83
  265. package/templates/starter/scripts/toolcraft-functional-proof-primitives.d.mts +11 -0
  266. package/templates/starter/scripts/toolcraft-functional-proof-primitives.mjs +61 -0
  267. package/templates/starter/scripts/toolcraft-functional-proof-primitives.test.mjs +43 -0
  268. package/templates/starter/scripts/toolcraft-integrity-policy.mjs +13 -0
  269. package/templates/starter/scripts/toolcraft-integrity-test-utils.mjs +1 -1
  270. package/templates/starter/scripts/toolcraft-layer-evidence-facade.test.mjs +58 -22
  271. package/templates/starter/scripts/toolcraft-motion-reference-analysis-protocol.mjs +111 -0
  272. package/templates/starter/scripts/toolcraft-motion-reference-analysis-protocol.test.mjs +116 -0
  273. package/templates/starter/scripts/toolcraft-motion-reference-artifacts.d.mts +37 -0
  274. package/templates/starter/scripts/toolcraft-motion-reference-artifacts.mjs +308 -0
  275. package/templates/starter/scripts/toolcraft-motion-reference-artifacts.test.mjs +420 -0
  276. package/templates/starter/scripts/toolcraft-motion-reference-artifacts.types.test.mts +50 -0
  277. package/templates/starter/scripts/toolcraft-motion-reference-command-options.mjs +195 -0
  278. package/templates/starter/scripts/toolcraft-motion-reference-command-options.test.mjs +224 -0
  279. package/templates/starter/scripts/toolcraft-motion-reference-contact-sheet.mjs +122 -0
  280. package/templates/starter/scripts/toolcraft-motion-reference-contact-sheet.test.mjs +153 -0
  281. package/templates/starter/scripts/toolcraft-motion-reference-evidence-assembly.mjs +270 -0
  282. package/templates/starter/scripts/toolcraft-motion-reference-evidence.test.mjs +432 -0
  283. package/templates/starter/scripts/toolcraft-motion-reference-ffmpeg-output.mjs +275 -0
  284. package/templates/starter/scripts/toolcraft-motion-reference-ffmpeg-output.test.mjs +294 -0
  285. package/templates/starter/scripts/toolcraft-motion-reference-group-inventory.mjs +148 -0
  286. package/templates/starter/scripts/toolcraft-motion-reference-image-filter-graph.mjs +101 -0
  287. package/templates/starter/scripts/toolcraft-motion-reference-image-filter-graph.test.mjs +124 -0
  288. package/templates/starter/scripts/toolcraft-motion-reference-image-source.mjs +259 -0
  289. package/templates/starter/scripts/toolcraft-motion-reference-image-source.test.mjs +338 -0
  290. package/templates/starter/scripts/toolcraft-motion-reference-image-timing.mjs +96 -0
  291. package/templates/starter/scripts/toolcraft-motion-reference-image-timing.test.mjs +81 -0
  292. package/templates/starter/scripts/toolcraft-motion-reference-lock-recovery.test.mjs +144 -0
  293. package/templates/starter/scripts/toolcraft-motion-reference-media-source.mjs +165 -0
  294. package/templates/starter/scripts/toolcraft-motion-reference-media-source.test.mjs +299 -0
  295. package/templates/starter/scripts/toolcraft-motion-reference-publication-discovery.test.mjs +142 -0
  296. package/templates/starter/scripts/toolcraft-motion-reference-publication-isolation.test.mjs +234 -0
  297. package/templates/starter/scripts/toolcraft-motion-reference-publication-journal-schema.mjs +122 -0
  298. package/templates/starter/scripts/toolcraft-motion-reference-publication-journal-store.mjs +89 -0
  299. package/templates/starter/scripts/toolcraft-motion-reference-publication-journal-store.test.mjs +74 -0
  300. package/templates/starter/scripts/toolcraft-motion-reference-publication-journal.mjs +264 -0
  301. package/templates/starter/scripts/toolcraft-motion-reference-publication-journal.test.mjs +377 -0
  302. package/templates/starter/scripts/toolcraft-motion-reference-publication-lease.mjs +254 -0
  303. package/templates/starter/scripts/toolcraft-motion-reference-publication-lease.test.mjs +130 -0
  304. package/templates/starter/scripts/toolcraft-motion-reference-publication-staging.mjs +128 -0
  305. package/templates/starter/scripts/toolcraft-motion-reference-publication-staging.test.mjs +209 -0
  306. package/templates/starter/scripts/toolcraft-motion-reference-publication.fixtures.mjs +88 -0
  307. package/templates/starter/scripts/toolcraft-motion-reference-publication.mjs +249 -0
  308. package/templates/starter/scripts/toolcraft-motion-reference-publication.test.mjs +433 -0
  309. package/templates/starter/scripts/toolcraft-motion-reference-review-output.mjs +38 -0
  310. package/templates/starter/scripts/toolcraft-motion-reference-review-output.test.mjs +29 -0
  311. package/templates/starter/scripts/toolcraft-motion-reference-root-safety.test.mjs +84 -0
  312. package/templates/starter/scripts/toolcraft-motion-reference-roots.mjs +83 -0
  313. package/templates/starter/scripts/toolcraft-motion-reference-sampling.mjs +283 -0
  314. package/templates/starter/scripts/toolcraft-motion-reference-sampling.test.mjs +480 -0
  315. package/templates/starter/scripts/toolcraft-motion-reference-stage-registry.mjs +39 -0
  316. package/templates/starter/scripts/toolcraft-motion-reference-stage-registry.test.mjs +59 -0
  317. package/templates/starter/scripts/toolcraft-motion-reference-stage.mjs +71 -0
  318. package/templates/starter/scripts/toolcraft-motion-reference-stage.test.mjs +61 -0
  319. package/templates/starter/scripts/toolcraft-motion-review-numeric.mjs +74 -0
  320. package/templates/starter/scripts/toolcraft-motion-review-numeric.test.mjs +65 -0
  321. package/templates/starter/scripts/toolcraft-motion-review-partitioning.mjs +268 -0
  322. package/templates/starter/scripts/toolcraft-motion-review-partitioning.test.mjs +329 -0
  323. package/templates/starter/scripts/toolcraft-motion-review-protected-units.mjs +120 -0
  324. package/templates/starter/scripts/toolcraft-motion-review-protected-units.test.mjs +111 -0
  325. package/templates/starter/scripts/toolcraft-performance-escalation-policy.test.mjs +77 -345
  326. package/templates/starter/scripts/toolcraft-performance-receipt-validation.test.mjs +19 -21
  327. package/templates/starter/scripts/toolcraft-product-boundary-ast.mjs +85 -115
  328. package/templates/starter/scripts/toolcraft-product-boundary-module-policy.mjs +101 -0
  329. package/templates/starter/scripts/toolcraft-product-boundary.test.mjs +0 -72
  330. package/templates/starter/scripts/toolcraft-product-control-bindings.mjs +182 -0
  331. package/templates/starter/scripts/toolcraft-product-control-boundary.mjs +146 -0
  332. package/templates/starter/scripts/toolcraft-product-control-boundary.test.mjs +186 -0
  333. package/templates/starter/scripts/toolcraft-product-export-boundary.mjs +16 -18
  334. package/templates/starter/scripts/toolcraft-product-export-boundary.test.mjs +200 -0
  335. package/templates/starter/scripts/toolcraft-product-observable-facade.test.mjs +46 -1
  336. package/templates/starter/scripts/toolcraft-receipt-boundary.test.mjs +0 -1
  337. package/templates/starter/scripts/toolcraft-source-inventory.d.mts +5 -0
  338. package/templates/starter/scripts/toolcraft-source-inventory.mjs +25 -14
  339. package/templates/starter/scripts/toolcraft-source-inventory.test.mjs +48 -0
  340. package/templates/starter/scripts/toolcraft-source-ownership.mjs +0 -1
  341. package/templates/starter/scripts/toolcraft-source-ownership.test.mjs +30 -5
  342. package/templates/starter/scripts/toolcraft-typescript-source-evidence-structure.test.mjs +20 -0
  343. package/templates/starter/scripts/toolcraft-typescript-source-evidence.mjs +1 -0
  344. package/templates/starter/scripts/toolcraft-unavailable-resource-evidence-facade.test.mjs +2 -0
  345. package/templates/starter/scripts/toolcraft-verification-receipt-test-helpers.mjs +5 -26
  346. package/templates/starter/scripts/toolcraft-verification-receipt.d.mts +0 -7
  347. package/templates/starter/scripts/toolcraft-verification-receipt.mjs +3 -47
  348. package/templates/starter/scripts/toolcraft-verification-receipt.test.mjs +6 -87
  349. package/templates/starter/scripts/toolcraft-vitest-runtime-contract.d.mts +19 -0
  350. package/templates/starter/scripts/toolcraft-vitest-runtime-contract.mjs +107 -0
  351. package/templates/starter/scripts/toolcraft-vitest-runtime-contract.test.mjs +114 -0
  352. package/templates/starter/scripts/toolcraft-vitest-runtime-evidence-reporter.mjs +13 -2
  353. package/templates/starter/scripts/toolcraft-vitest-runtime-evidence-reporter.test.mjs +110 -0
  354. package/templates/starter/src/app/acceptance/artifact-export-intent.ts +161 -0
  355. package/templates/starter/src/app/acceptance/canvas-coverage.ts +1 -0
  356. package/templates/starter/src/app/acceptance/color-bank-labels.ts +11 -15
  357. package/templates/starter/src/app/acceptance/color-row-grouping.ts +33 -0
  358. package/templates/starter/src/app/acceptance/conditions.ts +1 -1
  359. package/templates/starter/src/app/acceptance/control-acceptance-context.ts +2 -2
  360. package/templates/starter/src/app/acceptance/control-acceptance-coverage.ts +6 -31
  361. package/templates/starter/src/app/acceptance/control-acceptance-kind-rules.ts +24 -5
  362. package/templates/starter/src/app/acceptance/control-acceptance-policy.ts +4 -16
  363. package/templates/starter/src/app/acceptance/control-applicability-cases.test.ts +321 -0
  364. package/templates/starter/src/app/acceptance/control-applicability-cases.ts +290 -0
  365. package/templates/starter/src/app/acceptance/control-applicability.ts +332 -0
  366. package/templates/starter/src/app/acceptance/control-component-rules.ts +0 -10
  367. package/templates/starter/src/app/acceptance/control-labels.ts +30 -1
  368. package/templates/starter/src/app/acceptance/control-layout-dependency-rules.ts +20 -9
  369. package/templates/starter/src/app/acceptance/control-layout-entity-rules.ts +4 -6
  370. package/templates/starter/src/app/acceptance/control-layout-model.ts +4 -4
  371. package/templates/starter/src/app/acceptance/control-layout-section-rules.ts +21 -10
  372. package/templates/starter/src/app/acceptance/control-parts.ts +8 -0
  373. package/templates/starter/src/app/acceptance/control-section-entity-cohesion.test.ts +215 -0
  374. package/templates/starter/src/app/acceptance/control-section-entity-cohesion.ts +132 -0
  375. package/templates/starter/src/app/acceptance/control-section-inventory.test.ts +87 -0
  376. package/templates/starter/src/app/acceptance/control-section-inventory.ts +74 -44
  377. package/templates/starter/src/app/acceptance/custom-controls.ts +11 -3
  378. package/templates/starter/src/app/acceptance/export-artifact-coverage.ts +25 -17
  379. package/templates/starter/src/app/acceptance/feature-verification-selection.test.ts +295 -0
  380. package/templates/starter/src/app/acceptance/feature-verification-selection.ts +161 -0
  381. package/templates/starter/src/app/acceptance/infinity-canvas.ts +10 -0
  382. package/templates/starter/src/app/acceptance/inline-layout.ts +64 -9
  383. package/templates/starter/src/app/acceptance/interaction-ownership-intent.ts +19 -1
  384. package/templates/starter/src/app/acceptance/interaction-ownership.ts +18 -2
  385. package/templates/starter/src/app/acceptance/media-upload.ts +5 -1
  386. package/templates/starter/src/app/acceptance/motion-reference-evidence-validation.mjs +65 -0
  387. package/templates/starter/src/app/acceptance/motion-reference-evidence-windows.mjs +301 -0
  388. package/templates/starter/src/app/acceptance/motion-reference-evidence.d.mts +11 -0
  389. package/templates/starter/src/app/acceptance/motion-reference-evidence.mjs +145 -0
  390. package/templates/starter/src/app/acceptance/motion-reference-study-behaviors.ts +162 -0
  391. package/templates/starter/src/app/acceptance/motion-reference-study-coverage.ts +206 -0
  392. package/templates/starter/src/app/acceptance/motion-reference-study-identity.ts +129 -0
  393. package/templates/starter/src/app/acceptance/motion-reference-study-partitions.ts +186 -0
  394. package/templates/starter/src/app/acceptance/motion-reference-study.ts +90 -0
  395. package/templates/starter/src/app/acceptance/orientation-gizmo.ts +18 -11
  396. package/templates/starter/src/app/acceptance/output-background-rules.ts +2 -2
  397. package/templates/starter/src/app/acceptance/output-export-actions.test.ts +9 -1
  398. package/templates/starter/src/app/acceptance/output-export-actions.ts +14 -22
  399. package/templates/starter/src/app/acceptance/output-export-layout-rules.ts +22 -10
  400. package/templates/starter/src/app/acceptance/output-export-model.ts +58 -11
  401. package/templates/starter/src/app/acceptance/output-export.ts +25 -10
  402. package/templates/starter/src/app/acceptance/output-video-export-rules.ts +99 -0
  403. package/templates/starter/src/app/acceptance/reference-study-types.ts +167 -17
  404. package/templates/starter/src/app/acceptance/runtime-coverage.ts +6 -1
  405. package/templates/starter/src/app/acceptance/selection-scope.test.ts +200 -0
  406. package/templates/starter/src/app/acceptance/selection-scope.ts +151 -0
  407. package/templates/starter/src/app/acceptance/transfer-mode-types.ts +114 -0
  408. package/templates/starter/src/app/acceptance/types.ts +65 -125
  409. package/templates/starter/src/app/acceptance/validate-coverage.ts +33 -5
  410. package/templates/starter/src/app/starter-acceptance-data.ts +1 -0
  411. package/templates/starter/src/app/starter-acceptance.animation-intent.test.ts +3 -0
  412. package/templates/starter/src/app/starter-acceptance.artifact-export-intent.test.ts +312 -0
  413. package/templates/starter/src/app/starter-acceptance.background-export.test.ts +35 -0
  414. package/templates/starter/src/app/starter-acceptance.canvas-sizing.test.ts +18 -1
  415. package/templates/starter/src/app/starter-acceptance.color-row-grouping.test.ts +118 -0
  416. package/templates/starter/src/app/starter-acceptance.compound-part-coverage.test.ts +66 -1
  417. package/templates/starter/src/app/starter-acceptance.contract-fixtures.test.ts +41 -0
  418. package/templates/starter/src/app/starter-acceptance.contract-fixtures.ts +113 -16
  419. package/templates/starter/src/app/starter-acceptance.control-applicability.test.ts +225 -0
  420. package/templates/starter/src/app/starter-acceptance.control-label-context.test.ts +1 -0
  421. package/templates/starter/src/app/starter-acceptance.control-labels.test.ts +78 -3
  422. package/templates/starter/src/app/starter-acceptance.control-naming-rules.test.ts +77 -1
  423. package/templates/starter/src/app/starter-acceptance.control-order.test.ts +58 -3
  424. package/templates/starter/src/app/starter-acceptance.control-state.test.ts +0 -111
  425. package/templates/starter/src/app/starter-acceptance.custom-control-collections.test.ts +3 -1
  426. package/templates/starter/src/app/starter-acceptance.custom-control-fit-check.test.ts +1 -1
  427. package/templates/starter/src/app/starter-acceptance.custom-control-valid.test.ts +1 -1
  428. package/templates/starter/src/app/starter-acceptance.export-artifact.test.ts +74 -3
  429. package/templates/starter/src/app/starter-acceptance.export-test-utils.ts +26 -0
  430. package/templates/starter/src/app/{starter-acceptance.image-video-export-settings.test.ts → starter-acceptance.image-export-settings.test.ts} +39 -9
  431. package/templates/starter/src/app/starter-acceptance.interaction-ownership.test.ts +31 -3
  432. package/templates/starter/src/app/starter-acceptance.layers.test.ts +2 -1
  433. package/templates/starter/src/app/starter-acceptance.media-upload.fixtures.ts +11 -1
  434. package/templates/starter/src/app/starter-acceptance.media-upload.test.ts +56 -0
  435. package/templates/starter/src/app/starter-acceptance.motion-reference-evidence.test.ts +17 -0
  436. package/templates/starter/src/app/starter-acceptance.motion-reference-identity.test.ts +163 -0
  437. package/templates/starter/src/app/starter-acceptance.motion-reference-mapping.test.ts +133 -0
  438. package/templates/starter/src/app/starter-acceptance.motion-reference-ownership.test.ts +121 -0
  439. package/templates/starter/src/app/starter-acceptance.motion-reference-partitions.test.ts +210 -0
  440. package/templates/starter/src/app/starter-acceptance.motion-reference-test-utils.ts +313 -0
  441. package/templates/starter/src/app/starter-acceptance.output-export-intent.test.ts +458 -0
  442. package/templates/starter/src/app/starter-acceptance.output-export-rules.test.ts +4 -0
  443. package/templates/starter/src/app/starter-acceptance.product-output-export.test.ts +116 -104
  444. package/templates/starter/src/app/starter-acceptance.product-readiness.test.ts +29 -0
  445. package/templates/starter/src/app/starter-acceptance.product-worklog.test.ts +123 -2
  446. package/templates/starter/src/app/starter-acceptance.reference-custom-timeline.test.ts +2 -0
  447. package/templates/starter/src/app/starter-acceptance.reference-foundation.test.ts +8 -0
  448. package/templates/starter/src/app/starter-acceptance.reference-timeline.test.ts +7 -0
  449. package/templates/starter/src/app/starter-acceptance.section-cohesion.test.ts +3 -1
  450. package/templates/starter/src/app/starter-acceptance.section-dependencies.test.ts +35 -24
  451. package/templates/starter/src/app/starter-acceptance.section-size.test.ts +72 -0
  452. package/templates/starter/src/app/starter-acceptance.timeline-playback.test.ts +5 -0
  453. package/templates/starter/src/app/starter-acceptance.ts +45 -10
  454. package/templates/starter/src/app/starter-acceptance.video-export-settings.test.ts +338 -0
  455. package/templates/starter/src/app/starter-acceptance.video-reference-study.test.ts +34 -236
  456. package/templates/starter/src/app/starter-acceptance.view-interaction.test.ts +12 -0
  457. package/templates/starter/src/app/starter-acceptance.worklog-test-utils.ts +122 -6
  458. package/templates/starter/src/app/starter-acceptance.worklog.test.ts +152 -16
  459. package/templates/starter/src/app/starter-performance.gates.test.ts +20 -18
  460. package/templates/starter/src/app/starter-performance.lifecycle.test.ts +22 -6
  461. package/templates/starter/src/app/test-evidence/browser-runtime-contract.ts +5 -2
  462. package/templates/starter/src/routes/index.tsx +1 -0
  463. package/templates/starter/tsconfig.json +1 -0
  464. package/templates/ui/components/composites/tabs.tsx +2 -2
  465. package/templates/ui/components/controls/collection-actions/collection-item-groups.test.tsx +38 -0
  466. package/templates/ui/components/controls/collection-actions/collection-item-groups.tsx +36 -0
  467. package/templates/ui/components/controls/collection-actions/index.ts +2 -0
  468. package/templates/ui/components/controls/file-drop/file-drop-collection-control.tsx +137 -0
  469. package/templates/ui/components/controls/file-drop/file-drop-control.test.tsx +189 -0
  470. package/templates/ui/components/controls/file-drop/file-drop-control.tsx +81 -88
  471. package/templates/ui/components/controls/file-drop/file-drop-presentation.tsx +131 -9
  472. package/templates/ui/components/controls/file-drop/file-drop-types.ts +36 -22
  473. package/templates/ui/components/controls/file-drop/index.ts +1 -0
  474. package/templates/ui/components/controls/index.ts +3 -0
  475. package/templates/ui/components/controls/range-slider/range-slider-control.tsx +1 -1
  476. package/templates/ui/components/controls/range-slider/range-slider-value.test.ts +14 -0
  477. package/templates/ui/components/controls/range-slider/range-slider-value.ts +3 -2
  478. package/templates/starter/scripts/toolcraft-browser-impact-selection.mjs +0 -26
  479. package/templates/starter/scripts/toolcraft-delivery-framework-refresh.test.mjs +0 -141
  480. package/templates/starter/scripts/toolcraft-delivery-functional-changed.test.mjs +0 -468
  481. package/templates/starter/scripts/toolcraft-delivery-functional-model-lifecycle.test.mjs +0 -254
  482. package/templates/starter/scripts/toolcraft-delivery-functional-semantic-regression.test.mjs +0 -135
  483. package/templates/starter/scripts/toolcraft-delivery-performance-iteration-durability.test.mjs +0 -329
  484. package/templates/starter/scripts/toolcraft-delivery-plan-errors.test.mjs +0 -430
  485. package/templates/starter/scripts/toolcraft-delivery-plan-functional-model.test.mjs +0 -358
  486. package/templates/starter/scripts/toolcraft-functional-proof-regression-fixtures.mjs +0 -298
  487. package/templates/starter/scripts/toolcraft-verification-impact-inventory.d.mts +0 -62
  488. package/templates/starter/scripts/toolcraft-verification-impact-inventory.mjs +0 -344
  489. package/templates/starter/scripts/toolcraft-verification-impact-inventory.test.mjs +0 -204
  490. package/templates/starter/scripts/toolcraft-verification-impact-performance-candidates.test.mjs +0 -210
  491. package/templates/starter/scripts/toolcraft-verification-impact-resolution.mjs +0 -344
  492. package/templates/starter/scripts/toolcraft-verification-impact-resolution.test.mjs +0 -270
  493. package/templates/starter/scripts/toolcraft-verification-impact-semantic-resolution.test.mjs +0 -449
  494. package/templates/starter/scripts/toolcraft-verification-impact-support-resolution.test.mjs +0 -195
  495. package/templates/starter/scripts/toolcraft-verification-impact.d.mts +0 -132
  496. package/templates/starter/scripts/toolcraft-verification-impact.mjs +0 -169
  497. package/templates/starter/scripts/toolcraft-verification-impact.test.mjs +0 -300
  498. package/templates/starter/scripts/toolcraft-verification-input-roles.mjs +0 -197
  499. package/templates/starter/scripts/toolcraft-verification-input-roles.test.mjs +0 -225
  500. package/templates/starter/src/app/acceptance/condition-exclusivity.test.ts +0 -60
  501. package/templates/starter/src/app/acceptance/condition-exclusivity.ts +0 -221
  502. package/templates/starter/src/app/acceptance/video-reference-study.ts +0 -217
  503. package/templates/starter/src/app/starter-verification-impact.json +0 -15
@@ -22,7 +22,6 @@ import {
22
22
  createToolcraftDeliveryReceipt,
23
23
  } from "./toolcraft-delivery-receipt.mjs";
24
24
  import {
25
- createInventory,
26
25
  createFunctionalProofModelFixture,
27
26
  createPlanReceiptFixture,
28
27
  } from "./toolcraft-delivery-receipt-test-helpers.mjs";
@@ -43,32 +42,6 @@ function deepFreeze(value) {
43
42
  return value;
44
43
  }
45
44
 
46
- function createStateFixtures() {
47
- const changedFixture = createPlanReceiptFixture("functional-changed");
48
- const comparisonInventory =
49
- changedFixture.plan.basis.comparisonInventory;
50
- const initialFixture = createPlanReceiptFixture("functional-initial");
51
- const previousPlan = deepFreeze({
52
- ...initialFixture.plan,
53
- sourceHash: comparisonInventory.sourceHash,
54
- });
55
- const previousReceipt = createToolcraftDeliveryReceipt({
56
- functionalProofModel: initialFixture.functionalProofModel,
57
- plan: previousPlan,
58
- result: {
59
- ...initialFixture.result,
60
- finalInventory: comparisonInventory,
61
- },
62
- });
63
- return {
64
- changedFixture,
65
- changedReceipt: createToolcraftDeliveryReceipt(changedFixture),
66
- initialFixture,
67
- initialReceipt: createToolcraftDeliveryReceipt(initialFixture),
68
- previousReceipt,
69
- };
70
- }
71
-
72
45
  async function executeInitialFixture(rootDir) {
73
46
  const finalInventory =
74
47
  await collectToolcraftVerificationInputs(rootDir);
@@ -76,6 +49,7 @@ async function executeInitialFixture(rootDir) {
76
49
  { kind: "docs" },
77
50
  { kind: "code-health" },
78
51
  {
52
+ acceptanceIds: null,
79
53
  files: ["src/app/schema.test.ts"],
80
54
  kind: "product-tests",
81
55
  },
@@ -117,7 +91,8 @@ async function executeInitialFixture(rootDir) {
117
91
  }
118
92
 
119
93
  test("genuinely absent previous receipt permits an initial basis", async () => {
120
- const { initialFixture, initialReceipt } = createStateFixtures();
94
+ const initialFixture = createPlanReceiptFixture("functional-initial");
95
+ const initialReceipt = createToolcraftDeliveryReceipt(initialFixture);
121
96
  await assert.doesNotReject(assertDeliveryCheckpointState({
122
97
  deliveryReceipt: initialReceipt,
123
98
  finalInventory: initialFixture.result.finalInventory,
@@ -181,18 +156,16 @@ test("real initial functional delivery commits only without a predecessor", asyn
181
156
  });
182
157
 
183
158
  test("present malformed, unsupported, and legacy receipts fail closed", async () => {
184
- const {
185
- initialFixture,
186
- initialReceipt,
187
- previousReceipt,
188
- } = createStateFixtures();
159
+ const initialFixture = createPlanReceiptFixture("functional-initial");
160
+ const initialReceipt = createToolcraftDeliveryReceipt(initialFixture);
161
+ const previousReceipt = initialReceipt;
189
162
  const legacyPlan = deepFreeze({
190
163
  ...previousReceipt.plan,
191
164
  kind: "legacy-delivery",
192
165
  });
193
166
  for (const [previousDeliveryReceipt, expected] of [
194
- [{ version: 5 }, /unsupported version/iu],
195
167
  [{ version: 6 }, /unsupported version/iu],
168
+ [{ version: 7 }, /unsupported version/iu],
196
169
  [{ ...previousReceipt, plan: legacyPlan }, /delivery plan is malformed/iu],
197
170
  ]) {
198
171
  await assert.rejects(
@@ -210,70 +183,37 @@ test("present malformed, unsupported, and legacy receipts fail closed", async ()
210
183
  }
211
184
  });
212
185
 
213
- test("a valid current previous receipt requires an exact changed basis", async () => {
214
- const {
215
- changedFixture,
216
- changedReceipt,
217
- initialFixture,
218
- initialReceipt,
219
- previousReceipt,
220
- } = createStateFixtures();
221
- await assert.doesNotReject(assertDeliveryCheckpointState({
222
- deliveryReceipt: changedReceipt,
223
- finalInventory: changedFixture.result.finalInventory,
224
- previousDeliveryReceipt: previousReceipt,
225
- }));
226
- await assert.rejects(
227
- assertDeliveryCheckpointState({
228
- deliveryReceipt: initialReceipt,
229
- finalInventory: initialFixture.result.finalInventory,
230
- previousDeliveryReceipt: previousReceipt,
231
- }),
232
- /initial delivery basis requires no previous/iu,
233
- );
234
-
235
- const mismatchedComparison = createInventory({
236
- "src/app/app-schema.ts": hash("9"),
237
- });
238
- const mismatchedPlan = deepFreeze({
239
- ...changedFixture.plan,
240
- basis: {
241
- ...changedFixture.plan.basis,
242
- comparisonInventory: mismatchedComparison,
243
- },
244
- });
245
- const mismatchedReceipt = createToolcraftDeliveryReceipt({
246
- functionalProofModel: changedFixture.functionalProofModel,
247
- plan: mismatchedPlan,
248
- result: changedFixture.result,
249
- });
250
- await assert.rejects(
251
- assertDeliveryCheckpointState({
252
- deliveryReceipt: mismatchedReceipt,
253
- finalInventory: changedFixture.result.finalInventory,
254
- previousDeliveryReceipt: previousReceipt,
255
- }),
256
- /changed delivery basis must match/iu,
257
- );
258
-
259
- const wrongPreviousModelPlan = deepFreeze({
260
- ...changedFixture.plan,
186
+ test("targeted performance basis must match the initial proof identity", async () => {
187
+ const initialFixture = createPlanReceiptFixture("functional-initial");
188
+ const initialReceipt = createToolcraftDeliveryReceipt(initialFixture);
189
+ const targetedFixture = createPlanReceiptFixture("performance-iteration");
190
+ const targetedPlan = deepFreeze({
191
+ ...targetedFixture.plan,
261
192
  basis: {
262
- ...changedFixture.plan.basis,
263
- comparisonFunctionalProofModelHash: hash("f"),
193
+ ...targetedFixture.plan.basis,
194
+ initialFunctionalProofModelHash:
195
+ initialReceipt.functionalProofModelHash,
196
+ initialSourceHash: initialReceipt.sourceHash,
264
197
  },
265
198
  });
266
- const wrongPreviousModelReceipt = createToolcraftDeliveryReceipt({
267
- functionalProofModel: changedFixture.functionalProofModel,
268
- plan: wrongPreviousModelPlan,
269
- result: changedFixture.result,
199
+ const targetedReceipt = createToolcraftDeliveryReceipt({
200
+ ...targetedFixture,
201
+ plan: targetedPlan,
270
202
  });
203
+ await assert.doesNotReject(assertDeliveryCheckpointState({
204
+ deliveryReceipt: targetedReceipt,
205
+ finalInventory: targetedFixture.result.finalInventory,
206
+ previousDeliveryReceipt: initialReceipt,
207
+ }));
271
208
  await assert.rejects(
272
209
  assertDeliveryCheckpointState({
273
- deliveryReceipt: wrongPreviousModelReceipt,
274
- finalInventory: changedFixture.result.finalInventory,
275
- previousDeliveryReceipt: previousReceipt,
210
+ deliveryReceipt: targetedReceipt,
211
+ finalInventory: targetedFixture.result.finalInventory,
212
+ previousDeliveryReceipt: {
213
+ ...initialReceipt,
214
+ sourceHash: hash("9"),
215
+ },
276
216
  }),
277
- /previous functional proof model|immediately previous/iu,
217
+ /source|inventory|plan/iu,
278
218
  );
279
219
  });
@@ -6,6 +6,9 @@ import {
6
6
  writeToolcraftCheckpointBundle,
7
7
  } from "./toolcraft-checkpoint-bundle.mjs";
8
8
  import { assertDeliveryCheckpointState } from "./toolcraft-checkpoint-delivery-state.mjs";
9
+ import {
10
+ getToolcraftDeliveryReceiptShapeError,
11
+ } from "./toolcraft-delivery-receipt.mjs";
9
12
  import {
10
13
  finalizeToolcraftPlanExecutionAuthority,
11
14
  releaseToolcraftPlanExecutionAuthority,
@@ -44,6 +47,28 @@ function getExistingAuthority(loaded) {
44
47
  return loaded.bundle;
45
48
  }
46
49
 
50
+ function createCheckpointCandidate(existing, receipt) {
51
+ const receiptError = getToolcraftDeliveryReceiptShapeError(receipt);
52
+ if (receiptError) throw new Error(receiptError);
53
+ if (receipt.plan.kind === "performance-iteration") {
54
+ if (!existing.delivery) {
55
+ throw new Error(
56
+ "Toolcraft targeted performance requires an initial delivery receipt.",
57
+ );
58
+ }
59
+ return createToolcraftCheckpointBundle({
60
+ currentPerformance: receipt,
61
+ delivery: existing.delivery,
62
+ performanceBaseline: existing.performanceBaseline,
63
+ });
64
+ }
65
+ return createToolcraftCheckpointBundle({
66
+ currentPerformance: existing.currentPerformance,
67
+ delivery: receipt,
68
+ performanceBaseline: existing.performanceBaseline,
69
+ });
70
+ }
71
+
47
72
  export async function commitToolcraftDeliveryCheckpoint(options) {
48
73
  assertCommitOptions(options);
49
74
  const {
@@ -57,11 +82,7 @@ export async function commitToolcraftDeliveryCheckpoint(options) {
57
82
  const loaded = await readToolcraftCheckpointBundle(resolvedProjectDir);
58
83
  const existing = getExistingAuthority(loaded);
59
84
  const previousDeliveryReceipt = existing.delivery;
60
- const candidate = createToolcraftCheckpointBundle({
61
- currentPerformance: existing.currentPerformance,
62
- delivery: deliveryReceipt,
63
- performanceBaseline: existing.performanceBaseline,
64
- });
85
+ const candidate = createCheckpointCandidate(existing, deliveryReceipt);
65
86
 
66
87
  let planExecutionReservation = reserveToolcraftPlanExecutionAuthority({
67
88
  authority: planExecutionAuthority,
@@ -71,9 +92,10 @@ export async function commitToolcraftDeliveryCheckpoint(options) {
71
92
  let durablyCommitted = false;
72
93
  try {
73
94
  await assertDeliveryCheckpointState({
74
- deliveryReceipt: candidate.delivery,
95
+ deliveryReceipt,
75
96
  finalInventory,
76
97
  previousDeliveryReceipt,
98
+ previousPerformanceReceipt: existing.currentPerformance,
77
99
  });
78
100
  await writeToolcraftCheckpointBundle({
79
101
  bundle: candidate,
@@ -5,35 +5,17 @@ import test from "node:test";
5
5
 
6
6
  import { getToolcraftCheckpointBundlePath } from "./toolcraft-checkpoint-paths.mjs";
7
7
  import { commitToolcraftDeliveryCheckpoint } from "./toolcraft-checkpoint-transaction.mjs";
8
- import {
9
- EMPTY_TOOLCRAFT_DELIVERY_LIFECYCLE_STATE,
10
- } from "./toolcraft-delivery-lifecycle-state.mjs";
11
8
  import { createToolcraftDeliveryReceipt } from "./toolcraft-delivery-receipt.mjs";
12
9
  import {
13
- createFunctionalProofModelFixture,
10
+ createPlanReceiptFixture,
14
11
  } from "./toolcraft-delivery-receipt-test-helpers.mjs";
15
- import {
16
- createToolcraftFunctionalProofModelHash,
17
- } from "./toolcraft-functional-proof-model.mjs";
18
12
  import {
19
13
  createCheckpointFixture,
20
14
  } from "./toolcraft-checkpoint-transaction-test-helpers.mjs";
21
- import {
22
- collectToolcraftVerificationInputs,
23
- createToolcraftVerificationSourceHash,
24
- } from "./toolcraft-verification-inventory.mjs";
25
15
  import {
26
16
  createReceiptFixture,
27
17
  } from "./toolcraft-verification-receipt-test-helpers.mjs";
28
18
 
29
- function deepFreeze(value) {
30
- if (value && typeof value === "object" && !Object.isFrozen(value)) {
31
- Object.values(value).forEach(deepFreeze);
32
- Object.freeze(value);
33
- }
34
- return value;
35
- }
36
-
37
19
  test("commit module exports only the delivery-specific checkpoint writer", async () => {
38
20
  const transactionModule = await import("./toolcraft-checkpoint-transaction.mjs");
39
21
  assert.deepEqual(Object.keys(transactionModule), [
@@ -79,7 +61,7 @@ test("malformed delivery input cannot mutate checkpoint authority", async (t) =>
79
61
  deliveryReceipt: {},
80
62
  projectDir: rootDir,
81
63
  }),
82
- /protected plan execution authority/iu,
64
+ /malformed|unsupported/iu,
83
65
  );
84
66
  await assert.rejects(
85
67
  commitToolcraftDeliveryCheckpoint({
@@ -102,10 +84,10 @@ test("unsupported delivery versions cannot cross execution authority", async (t)
102
84
 
103
85
  await assert.rejects(
104
86
  commitToolcraftDeliveryCheckpoint({
105
- deliveryReceipt: { version: 5 },
87
+ deliveryReceipt: { version: 7 },
106
88
  projectDir: rootDir,
107
89
  }),
108
- /protected plan execution authority/iu,
90
+ /malformed|unsupported/iu,
109
91
  );
110
92
  await assert.rejects(
111
93
  fs.access(getToolcraftCheckpointBundlePath(rootDir)),
@@ -113,53 +95,16 @@ test("unsupported delivery versions cannot cross execution authority", async (t)
113
95
  );
114
96
  });
115
97
 
116
- test("caller-authored current v7 receipt cannot be promoted without plan execution authority", async (t) => {
98
+ test("caller-authored current v8 receipt cannot be promoted without plan execution authority", async (t) => {
117
99
  const rootDir = await createReceiptFixture();
118
100
  t.after(() => fs.rm(rootDir, { force: true, recursive: true }));
119
- const finalInventory = await collectToolcraftVerificationInputs(rootDir);
120
- const comparisonEntries = finalInventory.entries.map((entry, index) =>
121
- index === 0 ? { ...entry, sha256: "0".repeat(64) } : entry
122
- );
123
- const comparisonInventory = {
124
- entries: comparisonEntries,
125
- sourceHash: createToolcraftVerificationSourceHash(comparisonEntries),
126
- };
127
- const previousFunctionalProofModel = createFunctionalProofModelFixture({
128
- contractHash: "b".repeat(64),
129
- });
130
- const functionalProofModel = createFunctionalProofModelFixture({
131
- contractHash: "c".repeat(64),
132
- });
133
- const plan = deepFreeze({
134
- basis: {
135
- changedFiles: [comparisonEntries[0].path],
136
- comparisonFunctionalProofModelHash:
137
- createToolcraftFunctionalProofModelHash(
138
- previousFunctionalProofModel,
139
- ),
140
- comparisonInventory,
141
- kind: "changed",
142
- },
143
- functionalProofModelHash:
144
- createToolcraftFunctionalProofModelHash(functionalProofModel),
145
- kind: "functional",
146
- lifecycle: EMPTY_TOOLCRAFT_DELIVERY_LIFECYCLE_STATE,
147
- manifestHash: "a".repeat(64),
148
- sourceHash: finalInventory.sourceHash,
149
- steps: [{ kind: "docs" }],
150
- });
151
- const receipt = createToolcraftDeliveryReceipt({
152
- functionalProofModel,
153
- plan,
154
- result: {
155
- evidence: [{ kind: "docs" }],
156
- finalInventory,
157
- },
158
- });
101
+ const fixture = createPlanReceiptFixture("functional-initial");
102
+ const receipt = createToolcraftDeliveryReceipt(fixture);
159
103
 
160
104
  await assert.rejects(
161
105
  commitToolcraftDeliveryCheckpoint({
162
106
  deliveryReceipt: receipt,
107
+ finalInventory: fixture.result.finalInventory,
163
108
  projectDir: rootDir,
164
109
  }),
165
110
  /protected plan execution authority/iu,
@@ -76,6 +76,7 @@
76
76
  { "type": "checkbox", "visualComponent": "Checkbox" },
77
77
  { "type": "actions", "visualComponent": "Actions" },
78
78
  { "type": "collectionActions", "visualComponent": "CollectionActions" },
79
+ { "type": "sourceCollection", "visualComponent": "ControlsPanelCollectionItems" },
79
80
  { "type": "panelActions", "visualComponent": "PanelActions" },
80
81
  { "type": "colorOpacity", "visualComponent": "ColorOpacity" },
81
82
  { "type": "palette", "visualComponent": "Palette" },
@@ -9,9 +9,6 @@ import {
9
9
  import {
10
10
  createToolcraftTargetedPerformanceComparisonHash,
11
11
  } from "./toolcraft-targeted-performance-report.mjs";
12
- import {
13
- collectToolcraftVerificationInputs,
14
- } from "./toolcraft-verification-inventory.mjs";
15
12
 
16
13
  function createPerformanceAnchor(receipt) {
17
14
  const evidence = receipt.evidence.find(
@@ -49,6 +46,32 @@ export function normalizeToolcraftDeliveryAnchor(receipt) {
49
46
  });
50
47
  }
51
48
 
49
+ function createBundleAnchor(bundle) {
50
+ const initial = normalizeToolcraftDeliveryAnchor(bundle.delivery);
51
+ if (bundle.currentPerformance === null) return initial;
52
+ const error = getToolcraftDeliveryReceiptShapeError(
53
+ bundle.currentPerformance,
54
+ );
55
+ if (error) throw new Error(error);
56
+ if (
57
+ bundle.currentPerformance.kind !==
58
+ "targeted-performance-verification" ||
59
+ bundle.currentPerformance.plan.kind !== "performance-iteration"
60
+ ) {
61
+ throw new Error(
62
+ "Toolcraft current performance checkpoint must be a targeted performance receipt.",
63
+ );
64
+ }
65
+ return createToolcraftDeliveryAnchorState({
66
+ files: initial.files,
67
+ functionalProofModel: initial.functionalProofModel,
68
+ functionalProofModelHash: initial.functionalProofModelHash,
69
+ lifecycle: bundle.currentPerformance.plan.lifecycle,
70
+ performance: createPerformanceAnchor(bundle.currentPerformance),
71
+ sourceHash: initial.sourceHash,
72
+ });
73
+ }
74
+
52
75
  export function getToolcraftDeliveryAnchorShapeError(receipt) {
53
76
  try {
54
77
  normalizeToolcraftDeliveryAnchor(receipt);
@@ -63,7 +86,7 @@ export async function readToolcraftDeliveryAnchor(rootDir) {
63
86
  if (loaded.missing || loaded.error) return loaded;
64
87
  try {
65
88
  return {
66
- anchor: normalizeToolcraftDeliveryAnchor(loaded.bundle.delivery),
89
+ anchor: createBundleAnchor(loaded.bundle),
67
90
  receipt: loaded.bundle.delivery,
68
91
  };
69
92
  } catch (error) {
@@ -77,8 +100,5 @@ export async function validateToolcraftDeliveryAnchor({ rootDir }) {
77
100
  const loaded = await readToolcraftDeliveryAnchor(rootDir);
78
101
  if (loaded.missing) return ["Toolcraft delivery receipt is missing."];
79
102
  if (loaded.error) return [loaded.error];
80
- const inventory = await collectToolcraftVerificationInputs(rootDir);
81
- return loaded.anchor.sourceHash === inventory.sourceHash
82
- ? []
83
- : ["Toolcraft delivery receipt is stale for the current source."];
103
+ return [];
84
104
  }
@@ -2,6 +2,10 @@ import assert from "node:assert/strict";
2
2
  import fs from "node:fs/promises";
3
3
  import test from "node:test";
4
4
 
5
+ import {
6
+ createToolcraftCheckpointBundle,
7
+ writeToolcraftCheckpointBundle,
8
+ } from "./toolcraft-checkpoint-bundle.mjs";
5
9
  import {
6
10
  getToolcraftDeliveryAnchorShapeError,
7
11
  normalizeToolcraftDeliveryAnchor,
@@ -9,7 +13,6 @@ import {
9
13
  } from "./toolcraft-delivery-anchor.mjs";
10
14
  import {
11
15
  createPlanReceiptFixture,
12
- writeDeliveryReceiptFixture,
13
16
  } from "./toolcraft-delivery-receipt-test-helpers.mjs";
14
17
  import {
15
18
  createToolcraftDeliveryReceipt,
@@ -21,74 +24,41 @@ import {
21
24
  createReceiptFixture,
22
25
  } from "./toolcraft-verification-receipt-test-helpers.mjs";
23
26
 
24
- const forbiddenAnchorKeys = [
25
- "baselineEvidenceHash",
26
- "baselineSourceHash",
27
- "mode",
28
- "version",
29
- ];
30
-
31
- function assertClosedAnchor(anchor) {
32
- assert.equal(Object.isFrozen(anchor), true);
33
- for (const key of forbiddenAnchorKeys) {
34
- assert.equal(Object.hasOwn(anchor, key), false);
35
- }
36
- assert.deepEqual(Object.keys(anchor).sort(), [
37
- "files",
38
- "functionalProofModel",
39
- "functionalProofModelHash",
40
- "lifecycle",
41
- "performance",
42
- "sourceHash",
43
- ]);
44
- }
45
-
46
- test("normalizes current receipt inventory and lifecycle", () => {
27
+ test("initial receipt is the durable product proof anchor", () => {
47
28
  const receipt = createToolcraftDeliveryReceipt(
48
- createPlanReceiptFixture("functional-changed"),
29
+ createPlanReceiptFixture("functional-initial"),
49
30
  );
50
-
51
31
  const anchor = normalizeToolcraftDeliveryAnchor(receipt);
52
32
 
53
- assertClosedAnchor(anchor);
33
+ assert.equal(Object.isFrozen(anchor), true);
54
34
  assert.deepEqual(anchor.files, receipt.files);
55
35
  assert.equal(anchor.functionalProofModel, receipt.functionalProofModel);
56
- assert.equal(
57
- anchor.functionalProofModelHash,
58
- receipt.functionalProofModelHash,
59
- );
60
36
  assert.deepEqual(anchor.lifecycle, receipt.plan.lifecycle);
61
37
  assert.deepEqual(anchor.performance, { kind: "none" });
62
38
  assert.equal(anchor.sourceHash, receipt.sourceHash);
63
39
  });
64
40
 
65
- test("derives a current performance comparison hash from the report alone", () => {
41
+ test("targeted performance receipt carries exact comparison evidence", () => {
66
42
  const receipt = createToolcraftDeliveryReceipt(
67
43
  createPlanReceiptFixture("performance-iteration"),
68
44
  );
69
- const performanceEvidence = receipt.evidence.find(
45
+ const evidence = receipt.evidence.find(
70
46
  ({ kind }) => kind === "browser-performance",
71
47
  );
72
-
73
48
  const anchor = normalizeToolcraftDeliveryAnchor(receipt);
74
49
 
75
- assertClosedAnchor(anchor);
76
50
  assert.deepEqual(anchor.performance, {
77
- kind: "performance-iteration-report",
78
- report: performanceEvidence.report,
79
51
  comparisonHash: createToolcraftTargetedPerformanceComparisonHash(
80
- performanceEvidence.report,
52
+ evidence.report,
81
53
  ),
54
+ kind: "performance-iteration-report",
55
+ report: evidence.report,
82
56
  requestAuthorityHash: receipt.plan.requestAuthorityHash,
83
57
  });
84
- assert.notEqual(
85
- anchor.performance.comparisonHash,
86
- performanceEvidence.evidenceHash,
87
- );
88
58
  });
89
59
 
90
- test("rejects obsolete delivery receipt versions 2 through 6", () => {
91
- for (const version of [2, 3, 4, 5, 6]) {
60
+ test("rejects obsolete delivery receipt and plan versions", () => {
61
+ for (const version of [2, 3, 4, 5, 6, 7]) {
92
62
  assert.throws(
93
63
  () => normalizeToolcraftDeliveryAnchor({ version }),
94
64
  /unsupported version/iu,
@@ -98,34 +68,53 @@ test("rejects obsolete delivery receipt versions 2 through 6", () => {
98
68
  /unsupported version/iu,
99
69
  );
100
70
  }
101
- });
102
-
103
- test("rejects a current receipt with an obsolete plan version", () => {
104
71
  const receipt = createToolcraftDeliveryReceipt(
105
- createPlanReceiptFixture("functional-changed"),
72
+ createPlanReceiptFixture("functional-initial"),
106
73
  );
107
-
108
74
  assert.throws(
109
- () =>
110
- normalizeToolcraftDeliveryAnchor({
111
- ...receipt,
112
- planVersion: 2,
113
- }),
75
+ () => normalizeToolcraftDeliveryAnchor({ ...receipt, planVersion: 5 }),
114
76
  /unsupported|malformed/iu,
115
77
  );
116
78
  });
117
79
 
118
- test("reads a current receipt through the canonical checkpoint bundle", async (t) => {
80
+ test("bundle anchor preserves initial proof and overlays targeted lifecycle", async (t) => {
119
81
  const rootDir = await createReceiptFixture();
120
82
  t.after(() => fs.rm(rootDir, { force: true, recursive: true }));
121
- const receipt = createToolcraftDeliveryReceipt(
83
+ const initial = createToolcraftDeliveryReceipt(
84
+ createPlanReceiptFixture("functional-initial"),
85
+ );
86
+ const targeted = createToolcraftDeliveryReceipt(
122
87
  createPlanReceiptFixture("performance-iteration"),
123
88
  );
124
- await writeDeliveryReceiptFixture(rootDir, receipt);
89
+ await writeToolcraftCheckpointBundle({
90
+ bundle: createToolcraftCheckpointBundle({
91
+ currentPerformance: targeted,
92
+ delivery: initial,
93
+ }),
94
+ rootDir,
95
+ });
125
96
 
126
- const anchor = normalizeToolcraftDeliveryAnchor(receipt);
127
- assert.deepEqual(await readToolcraftDeliveryAnchor(rootDir), {
128
- anchor,
129
- receipt,
97
+ const loaded = await readToolcraftDeliveryAnchor(rootDir);
98
+ assert.deepEqual(loaded.receipt, initial);
99
+ assert.equal(loaded.anchor.sourceHash, initial.sourceHash);
100
+ assert.deepEqual(loaded.anchor.lifecycle, targeted.plan.lifecycle);
101
+ assert.equal(loaded.anchor.performance.kind, "performance-iteration-report");
102
+ });
103
+
104
+ test("bundle anchor fails closed on malformed current performance state", async (t) => {
105
+ const rootDir = await createReceiptFixture();
106
+ t.after(() => fs.rm(rootDir, { force: true, recursive: true }));
107
+ const initial = createToolcraftDeliveryReceipt(
108
+ createPlanReceiptFixture("functional-initial"),
109
+ );
110
+ await writeToolcraftCheckpointBundle({
111
+ bundle: createToolcraftCheckpointBundle({
112
+ currentPerformance: { kind: "candidate" },
113
+ delivery: initial,
114
+ }),
115
+ rootDir,
130
116
  });
117
+
118
+ const loaded = await readToolcraftDeliveryAnchor(rootDir);
119
+ assert.match(loaded.error, /malformed|unsupported/iu);
131
120
  });
@@ -10,7 +10,6 @@ export const canonicalDeliveryModules = freeze([
10
10
  "toolcraft-delivery-anchor.mjs",
11
11
  "toolcraft-plan-execution-authority.mjs",
12
12
  "toolcraft-proof-process.mjs",
13
- "toolcraft-verification-impact.mjs",
14
13
  ]);
15
14
 
16
15
  export const obsoleteDeliveryBasenames = freeze([
@@ -80,7 +79,4 @@ export const deliveryBehaviorModules = freeze([
80
79
  "toolcraft-typescript-analysis.mjs",
81
80
  "toolcraft-typescript-callables.mjs",
82
81
  "toolcraft-typescript-module-shape.mjs",
83
- "toolcraft-verification-impact.mjs",
84
- "toolcraft-verification-impact-inventory.mjs",
85
- "toolcraft-verification-input-roles.mjs",
86
82
  ]);
@@ -54,7 +54,6 @@ const defaultDirectionRules = Object.freeze([
54
54
  "toolcraft-delivery-anchor.mjs",
55
55
  "toolcraft-delivery-lifecycle.mjs",
56
56
  "toolcraft-delivery-receipt.mjs",
57
- "toolcraft-verification-impact.mjs",
58
57
  ],
59
58
  from: "toolcraft-delivery-executor.mjs",
60
59
  },
@@ -81,8 +81,7 @@ function createDependencyFixture() {
81
81
  };
82
82
  }
83
83
 
84
- for (const fixture of ["functional-initial", "functional-changed",
85
- "performance-iteration"]) {
84
+ for (const fixture of ["functional-initial", "performance-iteration"]) {
86
85
  test(`accepts exact ${fixture} execution evidence`, () => {
87
86
  const { plan, result } = createPlanReceiptFixture(fixture);
88
87
  assert.equal(
@@ -242,7 +241,7 @@ test("rejects unknown browser step evidence", () => {
242
241
  });
243
242
 
244
243
  test("rejects source and final inventory mismatch deterministically", () => {
245
- const { plan, result } = createPlanReceiptFixture("functional-changed");
244
+ const { plan, result } = createPlanReceiptFixture("functional-initial");
246
245
  assert.equal(
247
246
  getToolcraftExecutionEvidenceError({
248
247
  evidence: result.evidence,
@@ -30,6 +30,7 @@ import {
30
30
  } from "./toolcraft-verification-inventory.mjs";
31
31
  import {
32
32
  getToolcraftProductTestProcessArgs,
33
+ getToolcraftProductTestProcessEnvironment,
33
34
  } from "./toolcraft-vitest-runtime-contract.mjs";
34
35
  import {
35
36
  runToolcraftProtectedBrowserBuild,
@@ -271,7 +272,10 @@ function createToolcraftProofOperations() {
271
272
  runToolcraftProofProcess(
272
273
  getToolcraftBinaryPath(projectDir, "vitest"),
273
274
  getToolcraftProductTestProcessArgs(step.files),
274
- { cwd: projectDir },
275
+ {
276
+ cwd: projectDir,
277
+ env: getToolcraftProductTestProcessEnvironment(step.acceptanceIds),
278
+ },
275
279
  ),
276
280
  });
277
281
  }