@pixel-point/toolcraft 0.0.15 → 0.0.16

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 (1212) hide show
  1. package/package.json +1 -1
  2. package/src/cli-package-manager-flow.test.mjs +9 -2
  3. package/src/cli.test.mjs +11 -16
  4. package/src/create-command.mjs +10 -4
  5. package/src/generate-demand-only-lifecycle.test.mjs +102 -0
  6. package/src/generate-performance-iteration-execution.test.mjs +105 -0
  7. package/src/generate-test-assertions.mjs +2 -0
  8. package/src/generate-test-browser-execution-ledger.mjs +138 -0
  9. package/src/generate-test-browser-execution-ledger.test.mjs +87 -0
  10. package/src/generate-test-delivery-architecture-assertions.mjs +137 -0
  11. package/src/generate-test-demand-only-lifecycle.mjs +303 -0
  12. package/src/generate-test-dependency-sandbox.mjs +158 -0
  13. package/src/generate-test-doc-assertions.mjs +286 -10
  14. package/src/generate-test-doc-assertions.test.mjs +43 -0
  15. package/src/generate-test-file-assertions.mjs +244 -6
  16. package/src/generate-test-fs-utils.mjs +4 -1
  17. package/src/generate-test-integrity-assertions.mjs +70 -3
  18. package/src/generate-test-integrity-framework-assertions.mjs +31 -1
  19. package/src/generate-test-integrity-manifest-assertions.mjs +58 -0
  20. package/src/generate-test-integrity-ownership-assertions.mjs +35 -2
  21. package/src/generate-test-managed-process.mjs +287 -0
  22. package/src/generate-test-managed-process.test.mjs +340 -0
  23. package/src/generate-test-package-assertions.mjs +75 -11
  24. package/src/generate-test-product-fixture.mjs +85 -7
  25. package/src/generate-test-product-fixture.test.mjs +227 -0
  26. package/src/generate-test-product-iteration.mjs +278 -0
  27. package/src/generate-test-product-iteration.test.mjs +241 -0
  28. package/src/generate-test-standalone-assertions.mjs +87 -149
  29. package/src/generate-test-standalone-delivery-stages.mjs +186 -0
  30. package/src/generate-test-windows-job-native.cs +496 -0
  31. package/src/generate-test-windows-job-wrapper.mjs +40 -0
  32. package/src/generate-test-windows-job.mjs +47 -0
  33. package/src/generate-test-windows-job.ps1 +17 -0
  34. package/src/generate.mjs +26 -0
  35. package/src/generate.test.mjs +76 -14
  36. package/src/generated-integrity-manifest.test.mjs +51 -2
  37. package/src/generated-source-policy.mjs +1 -1
  38. package/src/generated-source-policy.test.mjs +15 -2
  39. package/src/import-map.mjs +12 -0
  40. package/src/package-json.mjs +7 -6
  41. package/src/package-json.test.mjs +55 -31
  42. package/src/package-manager.mjs +71 -33
  43. package/src/package-manager.test.mjs +101 -18
  44. package/src/packaged-template-fallback.test.mjs +4 -0
  45. package/src/rewrite-imports.mjs +3 -0
  46. package/src/rewrite-imports.test.mjs +16 -1
  47. package/templates/runtime/contracts/component-contracts.choices.test.ts +49 -6
  48. package/templates/runtime/contracts/component-contracts.choices.ts +53 -10
  49. package/templates/runtime/contracts/component-contracts.inputs.test.ts +2 -2
  50. package/templates/runtime/contracts/component-contracts.inputs.ts +2 -2
  51. package/templates/runtime/contracts/component-contracts.media-custom.test.ts +19 -0
  52. package/templates/runtime/contracts/component-contracts.media-custom.ts +18 -2
  53. package/templates/runtime/contracts/component-contracts.runtime-acceptance.test.ts +57 -83
  54. package/templates/runtime/contracts/component-contracts.runtime-labels.test.ts +1 -1
  55. package/templates/runtime/contracts/component-contracts.runtime-panels.test.ts +16 -2
  56. package/templates/runtime/contracts/component-contracts.runtime-shell.test.ts +24 -8
  57. package/templates/runtime/contracts/component-contracts.runtime.ts +80 -39
  58. package/templates/runtime/contracts/component-contracts.test.ts +6 -1
  59. package/templates/runtime/contracts/component-contracts.visual.test.ts +44 -5
  60. package/templates/runtime/contracts/component-contracts.visual.ts +64 -17
  61. package/templates/runtime/contracts/decision-contracts.test.ts +106 -11
  62. package/templates/runtime/contracts/decision-contracts.ts +83 -6
  63. package/templates/runtime/contracts/index.ts +2 -0
  64. package/templates/runtime/contracts/performance-request-classifier-descriptions.ts +39 -0
  65. package/templates/runtime/contracts/performance-request-classifier-rules.ts +181 -0
  66. package/templates/runtime/contracts/performance-request-classifier-types.ts +50 -0
  67. package/templates/runtime/contracts/performance-request-classifier.test.ts +269 -0
  68. package/templates/runtime/contracts/performance-request-classifier.ts +224 -0
  69. package/templates/runtime/contracts/performance-request-evidence-policy.d.mts +21 -0
  70. package/templates/runtime/contracts/performance-request-evidence-policy.mjs +39 -0
  71. package/templates/runtime/contracts/performance-verification-policy.test.ts +129 -0
  72. package/templates/runtime/contracts/performance-verification-policy.ts +49 -0
  73. package/templates/runtime/contracts/segmented-control-fit.test.ts +71 -0
  74. package/templates/runtime/contracts/segmented-control-fit.ts +38 -0
  75. package/templates/runtime/export/export-frame.test.ts +80 -0
  76. package/templates/runtime/export/export-frame.ts +107 -0
  77. package/templates/runtime/export/export-sizing.ts +136 -0
  78. package/templates/runtime/export/export.test.ts +70 -1
  79. package/templates/runtime/export/export.ts +31 -146
  80. package/templates/runtime/export/index.ts +2 -0
  81. package/templates/runtime/index.ts +10 -0
  82. package/templates/runtime/model-import/canonical/index.ts +39 -0
  83. package/templates/runtime/model-import/canonical/model-appearance-data-uri.test.ts +43 -0
  84. package/templates/runtime/model-import/canonical/model-appearance-data-uri.ts +79 -0
  85. package/templates/runtime/model-import/canonical/model-appearance-image.ts +111 -0
  86. package/templates/runtime/model-import/canonical/model-appearance-input-snapshot.ts +189 -0
  87. package/templates/runtime/model-import/canonical/model-appearance-resource.test.ts +116 -0
  88. package/templates/runtime/model-import/canonical/model-appearance-resource.ts +165 -0
  89. package/templates/runtime/model-import/canonical/model-appearance-validation.test.ts +197 -0
  90. package/templates/runtime/model-import/canonical/model-appearance-validation.ts +458 -0
  91. package/templates/runtime/model-import/canonical/model-document-codec-adversarial.test.ts +151 -0
  92. package/templates/runtime/model-import/canonical/model-document-codec-appearance-metadata.ts +336 -0
  93. package/templates/runtime/model-import/canonical/model-document-codec-closure.test.ts +125 -0
  94. package/templates/runtime/model-import/canonical/model-document-codec-envelope.ts +363 -0
  95. package/templates/runtime/model-import/canonical/model-document-codec-error.ts +57 -0
  96. package/templates/runtime/model-import/canonical/model-document-codec-format.ts +83 -0
  97. package/templates/runtime/model-import/canonical/model-document-codec-layout.ts +163 -0
  98. package/templates/runtime/model-import/canonical/model-document-codec-metadata-adversarial.test.ts +169 -0
  99. package/templates/runtime/model-import/canonical/model-document-codec-metadata-preflight.ts +371 -0
  100. package/templates/runtime/model-import/canonical/model-document-codec-metadata-reader.ts +142 -0
  101. package/templates/runtime/model-import/canonical/model-document-codec-metadata.ts +420 -0
  102. package/templates/runtime/model-import/canonical/model-document-codec-payload.ts +311 -0
  103. package/templates/runtime/model-import/canonical/model-document-codec.test.ts +450 -0
  104. package/templates/runtime/model-import/canonical/model-document-codec.ts +161 -0
  105. package/templates/runtime/model-import/canonical/model-document-digest.ts +13 -0
  106. package/templates/runtime/model-import/canonical/model-document-hostile-decode.test.ts +100 -0
  107. package/templates/runtime/model-import/canonical/model-document-hostile-input.test.ts +140 -0
  108. package/templates/runtime/model-import/canonical/model-document-input-reader.ts +153 -0
  109. package/templates/runtime/model-import/canonical/model-document-input-snapshot.ts +413 -0
  110. package/templates/runtime/model-import/canonical/model-document-limit-options.test.ts +155 -0
  111. package/templates/runtime/model-import/canonical/model-document-limits.ts +151 -0
  112. package/templates/runtime/model-import/canonical/model-document-owned-geometry.test.ts +138 -0
  113. package/templates/runtime/model-import/canonical/model-document-safe-typed-array.ts +154 -0
  114. package/templates/runtime/model-import/canonical/model-document-test-support.ts +163 -0
  115. package/templates/runtime/model-import/canonical/model-document-validation-geometry.ts +330 -0
  116. package/templates/runtime/model-import/canonical/model-document-validation-helpers.ts +22 -0
  117. package/templates/runtime/model-import/canonical/model-document-validation-hierarchy.ts +314 -0
  118. package/templates/runtime/model-import/canonical/model-document-validation-provenance.ts +153 -0
  119. package/templates/runtime/model-import/canonical/model-document-validation-result.ts +118 -0
  120. package/templates/runtime/model-import/canonical/model-document-validation.test.ts +497 -0
  121. package/templates/runtime/model-import/canonical/model-document-validation.ts +276 -0
  122. package/templates/runtime/model-import/canonical/model-document-worker-memory.test.ts +95 -0
  123. package/templates/runtime/model-import/canonical/model-document-worker-memory.ts +365 -0
  124. package/templates/runtime/model-import/canonical/model-document.ts +187 -0
  125. package/templates/runtime/model-import/canonical/sha256.ts +144 -0
  126. package/templates/runtime/model-import/default-model-source-assets.test.ts +212 -0
  127. package/templates/runtime/model-import/default-model-source-assets.ts +235 -0
  128. package/templates/runtime/model-import/formats/fbx-appearance-test-fixtures.ts +144 -0
  129. package/templates/runtime/model-import/formats/fbx-ascii-appearance-test-fixtures.ts +123 -0
  130. package/templates/runtime/model-import/formats/fbx-binary-preflight-reader.ts +179 -0
  131. package/templates/runtime/model-import/formats/fbx-binary-preflight.ts +277 -0
  132. package/templates/runtime/model-import/formats/fbx-binary-test-fixture-builder.ts +129 -0
  133. package/templates/runtime/model-import/formats/fbx-model-format-adapter.test-fixtures.ts +119 -0
  134. package/templates/runtime/model-import/formats/fbx-model-format-adapter.test.ts +316 -0
  135. package/templates/runtime/model-import/formats/fbx-model-format-adapter.ts +96 -0
  136. package/templates/runtime/model-import/formats/fbx-model-format-preflight.ts +122 -0
  137. package/templates/runtime/model-import/formats/fbx-static-appearance.test.ts +93 -0
  138. package/templates/runtime/model-import/formats/fbx-static-appearance.ts +403 -0
  139. package/templates/runtime/model-import/formats/gltf-accessor-preflight.ts +321 -0
  140. package/templates/runtime/model-import/formats/gltf-attribute-encoding.ts +65 -0
  141. package/templates/runtime/model-import/formats/gltf-buffer-preflight.ts +320 -0
  142. package/templates/runtime/model-import/formats/gltf-canonical-appearance.ts +422 -0
  143. package/templates/runtime/model-import/formats/gltf-canonical-geometry.ts +276 -0
  144. package/templates/runtime/model-import/formats/gltf-canonical-hierarchy.ts +180 -0
  145. package/templates/runtime/model-import/formats/gltf-canonical-metadata.ts +100 -0
  146. package/templates/runtime/model-import/formats/gltf-decode-safety.ts +84 -0
  147. package/templates/runtime/model-import/formats/gltf-decoded-count-validation.ts +38 -0
  148. package/templates/runtime/model-import/formats/gltf-document-canonicalizer.ts +328 -0
  149. package/templates/runtime/model-import/formats/gltf-document-sanitizer.ts +269 -0
  150. package/templates/runtime/model-import/formats/gltf-extension-policy.ts +59 -0
  151. package/templates/runtime/model-import/formats/gltf-glb-document.ts +93 -0
  152. package/templates/runtime/model-import/formats/gltf-json-inspection.ts +152 -0
  153. package/templates/runtime/model-import/formats/gltf-json-preflight.ts +128 -0
  154. package/templates/runtime/model-import/formats/gltf-missing-appearance.ts +158 -0
  155. package/templates/runtime/model-import/formats/gltf-model-format-adapter-appearance.test.ts +181 -0
  156. package/templates/runtime/model-import/formats/gltf-model-format-adapter-resource-limits.test.ts +236 -0
  157. package/templates/runtime/model-import/formats/gltf-model-format-adapter-validation.test.ts +274 -0
  158. package/templates/runtime/model-import/formats/gltf-model-format-adapter.test.ts +229 -0
  159. package/templates/runtime/model-import/formats/gltf-model-format-adapter.ts +161 -0
  160. package/templates/runtime/model-import/formats/gltf-node-preflight.ts +218 -0
  161. package/templates/runtime/model-import/formats/gltf-primitive-preflight.ts +295 -0
  162. package/templates/runtime/model-import/formats/gltf-source-document.ts +234 -0
  163. package/templates/runtime/model-import/formats/gltf-source-snapshot.ts +187 -0
  164. package/templates/runtime/model-import/formats/gltf-texture-resource.ts +252 -0
  165. package/templates/runtime/model-import/formats/index.ts +28 -0
  166. package/templates/runtime/model-import/formats/model-format-adapter.test.ts +165 -0
  167. package/templates/runtime/model-import/formats/model-format-adapter.ts +165 -0
  168. package/templates/runtime/model-import/formats/obj-material-library.test.ts +124 -0
  169. package/templates/runtime/model-import/formats/obj-material-library.ts +432 -0
  170. package/templates/runtime/model-import/formats/obj-model-format-adapter.test.ts +251 -0
  171. package/templates/runtime/model-import/formats/obj-model-format-adapter.ts +85 -0
  172. package/templates/runtime/model-import/formats/obj-stl-ply-model-format-adapter-support.ts +335 -0
  173. package/templates/runtime/model-import/formats/ply-model-format-adapter.test.ts +151 -0
  174. package/templates/runtime/model-import/formats/ply-model-format-adapter.ts +195 -0
  175. package/templates/runtime/model-import/formats/production-model-format-main-bundle.test.ts +123 -0
  176. package/templates/runtime/model-import/formats/production-model-format-manifest.ts +135 -0
  177. package/templates/runtime/model-import/formats/production-model-format-registry.test.ts +253 -0
  178. package/templates/runtime/model-import/formats/production-model-format-registry.ts +16 -0
  179. package/templates/runtime/model-import/formats/production-model-format-worker-registry.ts +68 -0
  180. package/templates/runtime/model-import/formats/stl-model-format-adapter.test.ts +110 -0
  181. package/templates/runtime/model-import/formats/stl-model-format-adapter.ts +125 -0
  182. package/templates/runtime/model-import/formats/three-static-appearance-canonicalizer.ts +305 -0
  183. package/templates/runtime/model-import/formats/three-static-geometry-canonicalizer.test.ts +245 -0
  184. package/templates/runtime/model-import/formats/three-static-geometry-canonicalizer.ts +434 -0
  185. package/templates/runtime/model-import/formats/three-static-source-bundle.ts +146 -0
  186. package/templates/runtime/model-import/formats/vendor/draco/LICENSE +252 -0
  187. package/templates/runtime/model-import/formats/vendor/draco/README.md +15 -0
  188. package/templates/runtime/model-import/formats/vendor/draco/draco_decoder_gltf.wasm.json +1 -0
  189. package/templates/runtime/model-import/formats/vendor/draco/draco_wasm_wrapper.cjs +117 -0
  190. package/templates/runtime/model-import/formats/vendor/draco/draco_wasm_wrapper.d.cts +9 -0
  191. package/templates/runtime/model-import/index.ts +125 -0
  192. package/templates/runtime/model-import/model-analysis-summary.test.ts +179 -0
  193. package/templates/runtime/model-import/model-analysis-summary.ts +164 -0
  194. package/templates/runtime/model-import/model-asset-metadata.ts +71 -0
  195. package/templates/runtime/model-import/model-import-limit-values.ts +41 -0
  196. package/templates/runtime/model-import/model-import-limits.test.ts +125 -0
  197. package/templates/runtime/model-import/model-import-limits.ts +165 -0
  198. package/templates/runtime/model-import/model-import-types.ts +215 -0
  199. package/templates/runtime/model-import/model-package-path.ts +106 -0
  200. package/templates/runtime/model-import/model-package-types.ts +55 -0
  201. package/templates/runtime/model-import/model-package-zip-preflight.ts +405 -0
  202. package/templates/runtime/model-import/model-package-zip.test.ts +252 -0
  203. package/templates/runtime/model-import/model-package-zip.ts +227 -0
  204. package/templates/runtime/model-import/model-persistence-appearance-resources.test.ts +69 -0
  205. package/templates/runtime/model-import/model-persistence-hydration-appearance.test.ts +146 -0
  206. package/templates/runtime/model-import/model-persistence-hydration-resources.ts +281 -0
  207. package/templates/runtime/model-import/model-persistence-hydration-test-support.ts +97 -0
  208. package/templates/runtime/model-import/model-persistence-hydration.test.ts +370 -0
  209. package/templates/runtime/model-import/model-persistence-hydration.ts +323 -0
  210. package/templates/runtime/model-import/model-source-asset-coordinator.test.ts +414 -0
  211. package/templates/runtime/model-import/model-source-asset-handler-appearance-resources.ts +20 -0
  212. package/templates/runtime/model-import/model-source-asset-handler-appearance.test.ts +169 -0
  213. package/templates/runtime/model-import/model-source-asset-handler-repair-controller.ts +294 -0
  214. package/templates/runtime/model-import/model-source-asset-handler-repair.ts +233 -0
  215. package/templates/runtime/model-import/model-source-asset-handler-resources.ts +54 -0
  216. package/templates/runtime/model-import/model-source-asset-handler.ingestion.test.ts +236 -0
  217. package/templates/runtime/model-import/model-source-asset-handler.lifecycle.test.ts +176 -0
  218. package/templates/runtime/model-import/model-source-asset-handler.test-support.ts +231 -0
  219. package/templates/runtime/model-import/model-source-asset-handler.ts +479 -0
  220. package/templates/runtime/model-import/model-source-asset-repair-coordinator.test.ts +431 -0
  221. package/templates/runtime/model-import/model-source-bundle-codec.test.ts +423 -0
  222. package/templates/runtime/model-import/model-source-bundle-codec.ts +259 -0
  223. package/templates/runtime/model-import/model-source-bundle-descriptor-fields.ts +369 -0
  224. package/templates/runtime/model-import/model-source-bundle-descriptor-validation.ts +402 -0
  225. package/templates/runtime/model-import/model-source-bundle-error.ts +28 -0
  226. package/templates/runtime/model-import/model-source-bundle-limits.ts +108 -0
  227. package/templates/runtime/model-import/model-source-bundle-mime-type.test.ts +21 -0
  228. package/templates/runtime/model-import/model-source-bundle-preflight-test-support.ts +435 -0
  229. package/templates/runtime/model-import/model-source-bundle-security-test-support.ts +417 -0
  230. package/templates/runtime/model-import/model-source-bundle-test-support.ts +83 -0
  231. package/templates/runtime/model-import/model-source-bundle.test.ts +427 -0
  232. package/templates/runtime/model-import/model-source-bundle.ts +377 -0
  233. package/templates/runtime/model-import/model-source-bytes.ts +78 -0
  234. package/templates/runtime/model-import/model-source-data-uri.ts +74 -0
  235. package/templates/runtime/model-import/model-source-digest.test.ts +25 -0
  236. package/templates/runtime/model-import/model-source-digest.ts +288 -0
  237. package/templates/runtime/model-import/model-source-gltf.ts +184 -0
  238. package/templates/runtime/model-import/model-source-json-preflight.ts +382 -0
  239. package/templates/runtime/model-import/model-source-lookup.ts +134 -0
  240. package/templates/runtime/model-import/model-source-package-normalization.test.ts +106 -0
  241. package/templates/runtime/model-import/model-source-path.ts +233 -0
  242. package/templates/runtime/model-import/test-fixtures/gltf-appearance-fixtures.ts +188 -0
  243. package/templates/runtime/model-import/test-fixtures/model-fixtures.ts +612 -0
  244. package/templates/runtime/model-import/test-fixtures/obj-appearance-fixtures.ts +76 -0
  245. package/templates/runtime/model-import/topology/apply-model-repair.test.ts +236 -0
  246. package/templates/runtime/model-import/topology/apply-model-repair.ts +31 -0
  247. package/templates/runtime/model-import/topology/model-repair-execution.ts +364 -0
  248. package/templates/runtime/model-import/topology/model-repair-geometry.ts +60 -0
  249. package/templates/runtime/model-import/topology/model-repair-plan-codec.test.ts +125 -0
  250. package/templates/runtime/model-import/topology/model-repair-plan-codec.ts +96 -0
  251. package/templates/runtime/model-import/topology/model-repair-plan-envelope.ts +13 -0
  252. package/templates/runtime/model-import/topology/model-repair-plan-validation.ts +325 -0
  253. package/templates/runtime/model-import/topology/model-repair-plan.ts +275 -0
  254. package/templates/runtime/model-import/topology/model-topology-analysis.test.ts +448 -0
  255. package/templates/runtime/model-import/topology/model-topology-analysis.ts +426 -0
  256. package/templates/runtime/model-import/topology/model-topology-digest.ts +117 -0
  257. package/templates/runtime/model-import/topology/model-topology-graph.ts +455 -0
  258. package/templates/runtime/model-import/topology/model-topology-math.ts +140 -0
  259. package/templates/runtime/model-import/topology/model-topology-resources.ts +126 -0
  260. package/templates/runtime/model-import/topology/model-topology-test-support.ts +163 -0
  261. package/templates/runtime/model-import/topology/model-topology-types.ts +14 -0
  262. package/templates/runtime/model-import/worker/bounded-worker-cache.test.ts +47 -0
  263. package/templates/runtime/model-import/worker/bounded-worker-cache.ts +147 -0
  264. package/templates/runtime/model-import/worker/cooperative-buffer-snapshot.ts +195 -0
  265. package/templates/runtime/model-import/worker/model-import-worker-appearance-receipt.test.ts +273 -0
  266. package/templates/runtime/model-import/worker/model-import-worker-client-draft-verification.ts +39 -0
  267. package/templates/runtime/model-import/worker/model-import-worker-client-receipt.test.ts +217 -0
  268. package/templates/runtime/model-import/worker/model-import-worker-client-repair-validation.test.ts +357 -0
  269. package/templates/runtime/model-import/worker/model-import-worker-client-repair-verification.ts +44 -0
  270. package/templates/runtime/model-import/worker/model-import-worker-client-result-verification.ts +68 -0
  271. package/templates/runtime/model-import/worker/model-import-worker-client-snapshot.test.ts +368 -0
  272. package/templates/runtime/model-import/worker/model-import-worker-client-snapshot.ts +478 -0
  273. package/templates/runtime/model-import/worker/model-import-worker-client-test-support.ts +198 -0
  274. package/templates/runtime/model-import/worker/model-import-worker-client-validation.test.ts +301 -0
  275. package/templates/runtime/model-import/worker/model-import-worker-client.test.ts +484 -0
  276. package/templates/runtime/model-import/worker/model-import-worker-client.ts +715 -0
  277. package/templates/runtime/model-import/worker/model-import-worker-diagnostics.ts +298 -0
  278. package/templates/runtime/model-import/worker/model-import-worker-protocol-validation.ts +714 -0
  279. package/templates/runtime/model-import/worker/model-import-worker-protocol.ts +192 -0
  280. package/templates/runtime/model-import/worker/model-import-worker-receipt.ts +221 -0
  281. package/templates/runtime/model-import/worker/model-import-worker-result-verification.ts +22 -0
  282. package/templates/runtime/model-import/worker/model-import-worker-runtime-appearance.test.ts +81 -0
  283. package/templates/runtime/model-import/worker/model-import-worker-runtime-envelope.test.ts +126 -0
  284. package/templates/runtime/model-import/worker/model-import-worker-runtime-lifecycle.test.ts +342 -0
  285. package/templates/runtime/model-import/worker/model-import-worker-runtime-package.test.ts +85 -0
  286. package/templates/runtime/model-import/worker/model-import-worker-runtime-production.test.ts +51 -0
  287. package/templates/runtime/model-import/worker/model-import-worker-runtime-repair.test.ts +75 -0
  288. package/templates/runtime/model-import/worker/model-import-worker-runtime-test-support.ts +126 -0
  289. package/templates/runtime/model-import/worker/model-import-worker-runtime.test.ts +472 -0
  290. package/templates/runtime/model-import/worker/model-import-worker-runtime.ts +804 -0
  291. package/templates/runtime/model-import/worker/model-import-worker-trust-boundary.test.ts +243 -0
  292. package/templates/runtime/model-import/worker/model-import-worker-vite-smoke.test.ts +132 -0
  293. package/templates/runtime/model-import/worker/model-import.worker.bundle.js +3691 -0
  294. package/templates/runtime/model-import/worker/model-import.worker.ts +25 -0
  295. package/templates/runtime/performance/index.ts +1 -0
  296. package/templates/runtime/performance/profile-catalog-manifest.d.mts +27 -0
  297. package/templates/runtime/performance/profile-catalog-manifest.mjs +42 -0
  298. package/templates/runtime/performance/profile-catalog.test.ts +49 -0
  299. package/templates/runtime/performance/profile-catalog.ts +56 -0
  300. package/templates/runtime/react/app-shell/runtime-public-api.test.tsx +388 -5
  301. package/templates/runtime/react/app-shell/settings-transfer-canvas.ts +68 -0
  302. package/templates/runtime/react/app-shell/settings-transfer.test.ts +94 -1
  303. package/templates/runtime/react/app-shell/settings-transfer.ts +61 -89
  304. package/templates/runtime/react/app-shell/storage-key-migration.test.ts +40 -0
  305. package/templates/runtime/react/app-shell/storage-key-migration.ts +13 -9
  306. package/templates/runtime/react/app-shell/toolbar-panel.tsx +31 -13
  307. package/templates/runtime/react/app-shell/toolcraft-app-panel-workspace.test.tsx +125 -0
  308. package/templates/runtime/react/app-shell/toolcraft-app-test-utils.tsx +72 -0
  309. package/templates/runtime/react/app-shell/toolcraft-app.integration.test.tsx +21 -1
  310. package/templates/runtime/react/app-shell/toolcraft-app.scene-export.test.tsx +68 -0
  311. package/templates/runtime/react/app-shell/toolcraft-app.test.tsx +10 -55
  312. package/templates/runtime/react/app-shell/toolcraft-app.tsx +73 -15
  313. package/templates/runtime/react/app-shell/toolcraft-media-presentation.test.tsx +135 -0
  314. package/templates/runtime/react/app-shell/toolcraft-media-presentation.tsx +190 -0
  315. package/templates/runtime/react/app-shell/toolcraft-model-presentation-composition.test.tsx +99 -0
  316. package/templates/runtime/react/app-shell/toolcraft-persistence-bootstrap.ts +111 -0
  317. package/templates/runtime/react/app-shell/toolcraft-pipeline-context.test.tsx +252 -0
  318. package/templates/runtime/react/app-shell/toolcraft-pipeline-context.tsx +44 -0
  319. package/templates/runtime/react/app-shell/toolcraft-pipeline-evidence.tsx +41 -0
  320. package/templates/runtime/react/app-shell/toolcraft-pipeline-initialization.test.tsx +301 -0
  321. package/templates/runtime/react/app-shell/toolcraft-playback-persistence.test.tsx +116 -0
  322. package/templates/runtime/react/app-shell/toolcraft-render-isolation.test.tsx +418 -0
  323. package/templates/runtime/react/app-shell/toolcraft-root-persistence-migration.test.tsx +297 -0
  324. package/templates/runtime/react/app-shell/toolcraft-root-persistence-test-utils.tsx +163 -0
  325. package/templates/runtime/react/app-shell/toolcraft-root-persistence.test.tsx +357 -0
  326. package/templates/runtime/react/app-shell/toolcraft-root.test.tsx +57 -6
  327. package/templates/runtime/react/app-shell/toolcraft-root.tsx +106 -94
  328. package/templates/runtime/react/app-shell/toolcraft-selector-lanes.test.tsx +338 -0
  329. package/templates/runtime/react/app-shell/toolcraft-selectors.test.tsx +241 -0
  330. package/templates/runtime/react/app-shell/toolcraft-selectors.ts +133 -0
  331. package/templates/runtime/react/app-shell/toolcraft-source-asset-context.test.tsx +467 -0
  332. package/templates/runtime/react/app-shell/toolcraft-source-asset-context.tsx +646 -0
  333. package/templates/runtime/react/app-shell/toolcraft-store-context.tsx +18 -0
  334. package/templates/runtime/react/app-shell/use-toolcraft-persistence.ts +203 -0
  335. package/templates/runtime/react/app-shell/use-toolcraft-pipeline-pass.test.tsx +220 -0
  336. package/templates/runtime/react/app-shell/use-toolcraft-pipeline-pass.ts +175 -0
  337. package/templates/runtime/react/app-shell/use-toolcraft-pipeline.ts +10 -0
  338. package/templates/runtime/react/app-shell/use-toolcraft-values.test.tsx +288 -0
  339. package/templates/runtime/react/app-shell/use-toolcraft.ts +188 -7
  340. package/templates/runtime/react/canvas/canvas-default-media-layer.tsx +52 -14
  341. package/templates/runtime/react/canvas/canvas-media-transform.ts +2 -1
  342. package/templates/runtime/react/canvas/canvas-scene-surface.test.tsx +51 -0
  343. package/templates/runtime/react/canvas/canvas-scene-surface.tsx +54 -0
  344. package/templates/runtime/react/canvas/canvas-shell-interactions.test.tsx +225 -3
  345. package/templates/runtime/react/canvas/canvas-shell-media-rendering.test.tsx +83 -0
  346. package/templates/runtime/react/canvas/canvas-shell-rendering.test.tsx +88 -0
  347. package/templates/runtime/react/canvas/canvas-shell-test-utils.tsx +42 -2
  348. package/templates/runtime/react/canvas/canvas-shell-upload.test.tsx +231 -16
  349. package/templates/runtime/react/canvas/canvas-shell.tsx +154 -63
  350. package/templates/runtime/react/canvas/canvas-source-asset-feedback.test.tsx +211 -0
  351. package/templates/runtime/react/canvas/canvas-upload-routing.ts +65 -56
  352. package/templates/runtime/react/canvas/canvas-viewport-world.tsx +66 -0
  353. package/templates/runtime/react/canvas/media-file.test.ts +102 -0
  354. package/templates/runtime/react/canvas/media-file.ts +80 -35
  355. package/templates/runtime/react/canvas/runtime-scene-export.test.ts +279 -0
  356. package/templates/runtime/react/canvas/runtime-scene-export.ts +167 -0
  357. package/templates/runtime/react/canvas/scene-element-presentation-rect.ts +35 -0
  358. package/templates/runtime/react/canvas/use-canvas-drop-import.ts +65 -94
  359. package/templates/runtime/react/canvas/use-canvas-viewport-interactions.ts +52 -17
  360. package/templates/runtime/react/canvas/use-toolcraft-canvas-frame.ts +20 -0
  361. package/templates/runtime/react/canvas-handles/canvas-handle-layer-registry.test.ts +33 -0
  362. package/templates/runtime/react/canvas-handles/canvas-handle-layer-registry.tsx +64 -0
  363. package/templates/runtime/react/controls-panel/__tests__/actions-control-loading.test.tsx +59 -0
  364. package/templates/runtime/react/controls-panel/__tests__/controls-panel-filedrop-reorder.test.tsx +29 -11
  365. package/templates/runtime/react/controls-panel/__tests__/controls-panel.control-visibility.test.tsx +52 -0
  366. package/templates/runtime/react/controls-panel/__tests__/controls-panel.dependency-isolation.test.tsx +332 -0
  367. package/templates/runtime/react/controls-panel/__tests__/controls-panel.extensions-live-state.test.tsx +135 -0
  368. package/templates/runtime/react/controls-panel/__tests__/controls-panel.footer-actions.test.tsx +50 -0
  369. package/templates/runtime/react/controls-panel/__tests__/controls-panel.inline-layout.test.tsx +25 -9
  370. package/templates/runtime/react/controls-panel/__tests__/controls-panel.media-upload-files.test.tsx +35 -3
  371. package/templates/runtime/react/controls-panel/__tests__/controls-panel.media-upload-image.test.tsx +11 -5
  372. package/templates/runtime/react/controls-panel/__tests__/controls-panel.media-upload-multi-image.test.tsx +167 -5
  373. package/templates/runtime/react/controls-panel/__tests__/controls-panel.render-isolation.test.tsx +496 -0
  374. package/templates/runtime/react/controls-panel/__tests__/controls-panel.reset-dependency-isolation.test.tsx +226 -0
  375. package/templates/runtime/react/controls-panel/__tests__/controls-panel.scene-export-actions.test.tsx +187 -0
  376. package/templates/runtime/react/controls-panel/__tests__/controls-panel.section-isolation.test.tsx +441 -0
  377. package/templates/runtime/react/controls-panel/__tests__/controls-panel.section-navigation-overflow.test.tsx +247 -0
  378. package/templates/runtime/react/controls-panel/__tests__/controls-panel.section-navigation.test.tsx +486 -0
  379. package/templates/runtime/react/controls-panel/__tests__/controls-panel.section-shell.test.tsx +24 -2
  380. package/templates/runtime/react/controls-panel/__tests__/controls-panel.setup-controls.test.tsx +10 -5
  381. package/templates/runtime/react/controls-panel/__tests__/controls-panel.tabs.test.tsx +93 -0
  382. package/templates/runtime/react/controls-panel/__tests__/file-drop-folder-selection.test.tsx +62 -0
  383. package/templates/runtime/react/controls-panel/__tests__/file-drop-presentation-accessibility.test.tsx +45 -0
  384. package/templates/runtime/react/controls-panel/__tests__/file-drop-presentation.test.tsx +459 -0
  385. package/templates/runtime/react/controls-panel/actions/controls-panel-actions.ts +159 -12
  386. package/templates/runtime/react/controls-panel/actions/panel-action-feedback.tsx +24 -0
  387. package/templates/runtime/react/controls-panel/conditions/control-condition-dependencies.ts +39 -0
  388. package/templates/runtime/react/controls-panel/conditions/control-conditions.ts +40 -0
  389. package/templates/runtime/react/controls-panel/controls-panel.tsx +286 -170
  390. package/templates/runtime/react/controls-panel/keyframes/controls-panel-keyframes.tsx +27 -20
  391. package/templates/runtime/react/controls-panel/layout/controls-panel-control-group.tsx +509 -0
  392. package/templates/runtime/react/controls-panel/layout/controls-panel-inline-layout.tsx +5 -3
  393. package/templates/runtime/react/controls-panel/layout/controls-panel-layout.tsx +33 -5
  394. package/templates/runtime/react/controls-panel/layout/controls-panel-section-navigation-layout.ts +169 -0
  395. package/templates/runtime/react/controls-panel/layout/controls-panel-section-navigation.tsx +458 -0
  396. package/templates/runtime/react/controls-panel/layout/controls-panel-section.tsx +324 -324
  397. package/templates/runtime/react/controls-panel/live-custom-control.tsx +52 -0
  398. package/templates/runtime/react/controls-panel/renderers/controls-panel-basic-renderers.tsx +15 -0
  399. package/templates/runtime/react/controls-panel/renderers/controls-panel-media-renderer.test.tsx +242 -0
  400. package/templates/runtime/react/controls-panel/renderers/controls-panel-media-renderer.tsx +203 -129
  401. package/templates/runtime/react/controls-panel/renderers/controls-panel-renderer-registry.test.ts +26 -0
  402. package/templates/runtime/react/controls-panel/renderers/controls-panel-renderer-registry.ts +29 -0
  403. package/templates/runtime/react/controls-panel/renderers/controls-panel-settings-transfer-renderer.tsx +4 -4
  404. package/templates/runtime/react/controls-panel/testing/controls-panel-test-utils.tsx +8 -2
  405. package/templates/runtime/react/controls-panel/values/controls-panel-value-labels.ts +1 -0
  406. package/templates/runtime/react/index.ts +32 -1
  407. package/templates/runtime/react/layers/layer-tree.ts +5 -32
  408. package/templates/runtime/react/layers/layers-panel-test-utils.tsx +3 -1
  409. package/templates/runtime/react/layers/layers-panel.tsx +44 -30
  410. package/templates/runtime/react/model-rendering/lazy-three-model-render-binding.test.ts +92 -0
  411. package/templates/runtime/react/model-rendering/lazy-three-model-render-binding.ts +49 -0
  412. package/templates/runtime/react/model-rendering/model-canvas-layer.test.tsx +491 -0
  413. package/templates/runtime/react/model-rendering/model-canvas-layer.tsx +459 -0
  414. package/templates/runtime/react/model-rendering/model-display-fit.test.ts +57 -0
  415. package/templates/runtime/react/model-rendering/model-display-fit.ts +110 -0
  416. package/templates/runtime/react/model-rendering/model-export.test.ts +179 -0
  417. package/templates/runtime/react/model-rendering/model-export.ts +90 -0
  418. package/templates/runtime/react/model-rendering/model-presentation-consumer.test.tsx +225 -0
  419. package/templates/runtime/react/model-rendering/model-presentation-consumer.tsx +189 -0
  420. package/templates/runtime/react/model-rendering/model-presentation-feedback.ts +15 -0
  421. package/templates/runtime/react/model-rendering/model-presentation-mode.ts +112 -0
  422. package/templates/runtime/react/model-rendering/model-presentation-resource-manager.test.ts +244 -0
  423. package/templates/runtime/react/model-rendering/model-presentation-resource-manager.ts +426 -0
  424. package/templates/runtime/react/model-rendering/model-render-binding.ts +233 -0
  425. package/templates/runtime/react/model-rendering/model-render-host.ts +339 -0
  426. package/templates/runtime/react/model-rendering/model-render-provider.test.tsx +457 -0
  427. package/templates/runtime/react/model-rendering/model-render-provider.tsx +172 -0
  428. package/templates/runtime/react/model-rendering/model-render-registry.test.ts +86 -0
  429. package/templates/runtime/react/model-rendering/model-render-registry.ts +64 -0
  430. package/templates/runtime/react/model-rendering/model-render-state.ts +79 -0
  431. package/templates/runtime/react/model-rendering/three-canonical-geometry.ts +346 -0
  432. package/templates/runtime/react/model-rendering/three-canonical-model.ts +150 -0
  433. package/templates/runtime/react/model-rendering/three-model-appearance.test.ts +125 -0
  434. package/templates/runtime/react/model-rendering/three-model-appearance.ts +199 -0
  435. package/templates/runtime/react/model-rendering/three-model-prewarm.ts +61 -0
  436. package/templates/runtime/react/model-rendering/three-model-render-adapter-lifecycle.test.ts +293 -0
  437. package/templates/runtime/react/model-rendering/three-model-render-adapter.test-support.ts +70 -0
  438. package/templates/runtime/react/model-rendering/three-model-render-adapter.test.ts +379 -0
  439. package/templates/runtime/react/model-rendering/three-model-render-adapter.ts +484 -0
  440. package/templates/runtime/react/orientation-gizmo/model-orbit-interaction.integration.test.tsx +129 -0
  441. package/templates/runtime/react/orientation-gizmo/orientation-gizmo-layer.tsx +44 -0
  442. package/templates/runtime/react/orientation-gizmo/orientation-gizmo-math.test.ts +217 -0
  443. package/templates/runtime/react/orientation-gizmo/orientation-gizmo-math.ts +299 -0
  444. package/templates/runtime/react/orientation-gizmo/orientation-gizmo-public-api.test.ts +12 -0
  445. package/templates/runtime/react/orientation-gizmo/orientation-gizmo-selection.test.ts +115 -0
  446. package/templates/runtime/react/orientation-gizmo/orientation-gizmo-selection.ts +46 -0
  447. package/templates/runtime/react/orientation-gizmo/orientation-gizmo-snap.integration.test.tsx +179 -0
  448. package/templates/runtime/react/orientation-gizmo/orientation-gizmo-test-harness.tsx +208 -0
  449. package/templates/runtime/react/orientation-gizmo/orientation-gizmo.integration.test.tsx +167 -0
  450. package/templates/runtime/react/orientation-gizmo/orientation-gizmo.tsx +544 -0
  451. package/templates/runtime/react/orientation-gizmo/orientation-interaction-coordinator.ts +112 -0
  452. package/templates/runtime/react/orientation-gizmo/orientation-quaternion.ts +264 -0
  453. package/templates/runtime/react/orientation-gizmo/use-toolcraft-model-orbit-interaction.ts +233 -0
  454. package/templates/runtime/react/orientation-gizmo/use-toolcraft-orientation-control-selection.ts +78 -0
  455. package/templates/runtime/react/panel-host/panel-host-geometry.test.ts +38 -1
  456. package/templates/runtime/react/panel-host/panel-host-geometry.ts +64 -6
  457. package/templates/runtime/react/panel-host/panel-host-runtime-placement.test.tsx +198 -0
  458. package/templates/runtime/react/panel-host/panel-host-types.ts +13 -2
  459. package/templates/runtime/react/panel-host/panel-host.test.tsx +13 -1
  460. package/templates/runtime/react/panel-host/panel-host.tsx +105 -20
  461. package/templates/runtime/react/panel-host/use-toolcraft-panel-binding.test.tsx +161 -0
  462. package/templates/runtime/react/panel-host/use-toolcraft-panel-binding.ts +55 -0
  463. package/templates/runtime/react/timeline/timeline-expanded-content.tsx +3 -0
  464. package/templates/runtime/react/timeline/timeline-panel-header.tsx +6 -0
  465. package/templates/runtime/react/timeline/timeline-panel-test-utils.tsx +1 -0
  466. package/templates/runtime/react/timeline/timeline-panel-transport.test.tsx +176 -2
  467. package/templates/runtime/react/timeline/timeline-panel.tsx +72 -19
  468. package/templates/runtime/react/timeline/timeline-playback-hooks.ts +58 -21
  469. package/templates/runtime/react/timeline/timeline-scrub-lifecycle.test.tsx +154 -0
  470. package/templates/runtime/rendering/index.ts +3 -0
  471. package/templates/runtime/rendering/renderer-pipeline-cache.ts +171 -0
  472. package/templates/runtime/rendering/renderer-pipeline-pass-generation.test.ts +151 -0
  473. package/templates/runtime/rendering/renderer-pipeline-pass-generation.ts +267 -0
  474. package/templates/runtime/rendering/renderer-pipeline-registration.test.ts +356 -0
  475. package/templates/runtime/rendering/renderer-pipeline-registration.ts +760 -0
  476. package/templates/runtime/rendering/renderer-pipeline-resource-lifecycle.test.ts +248 -0
  477. package/templates/runtime/rendering/renderer-pipeline-runtime-owner-inspection.ts +23 -0
  478. package/templates/runtime/rendering/renderer-pipeline-runtime-owner.test.ts +353 -0
  479. package/templates/runtime/rendering/renderer-pipeline-runtime-owner.ts +369 -0
  480. package/templates/runtime/rendering/renderer-pipeline-runtime.lifecycle.test.ts +440 -0
  481. package/templates/runtime/rendering/renderer-pipeline-runtime.test.ts +495 -0
  482. package/templates/runtime/rendering/renderer-pipeline-runtime.ts +611 -0
  483. package/templates/runtime/rendering/renderer-pipeline-runtime.types.test.ts +93 -0
  484. package/templates/runtime/rendering/renderer-pipeline-source-invalidation.test.ts +208 -0
  485. package/templates/runtime/rendering/structured-key-trie.test.ts +31 -0
  486. package/templates/runtime/rendering/structured-key-trie.ts +91 -0
  487. package/templates/runtime/scene/index.ts +1 -0
  488. package/templates/runtime/scene/scene-bounds.test.ts +242 -0
  489. package/templates/runtime/scene/scene-bounds.ts +190 -0
  490. package/templates/runtime/schema/additional-value-targets.ts +15 -0
  491. package/templates/runtime/schema/app-capabilities.test.ts +70 -0
  492. package/templates/runtime/schema/app-capabilities.ts +28 -0
  493. package/templates/runtime/schema/app-identity.test.ts +68 -0
  494. package/templates/runtime/schema/app-identity.ts +30 -0
  495. package/templates/runtime/schema/assembly-contract.ts +18 -2
  496. package/templates/runtime/schema/control-schema-normalization.ts +144 -3
  497. package/templates/runtime/schema/controls-panel-actions.ts +111 -44
  498. package/templates/runtime/schema/controls-panel-layout-groups.ts +17 -6
  499. package/templates/runtime/schema/controls-panel-normalization.ts +42 -7
  500. package/templates/runtime/schema/controls-panel-section-id.test.ts +418 -0
  501. package/templates/runtime/schema/controls-panel-section-id.ts +208 -0
  502. package/templates/runtime/schema/controls-panel-section-layout.ts +62 -23
  503. package/templates/runtime/schema/controls-panel-section-roundtrip.test.ts +157 -0
  504. package/templates/runtime/schema/controls-panel-section-titles.ts +19 -7
  505. package/templates/runtime/schema/define-toolcraft.assembly.test.ts +73 -0
  506. package/templates/runtime/schema/define-toolcraft.control-sections.test-support.ts +46 -0
  507. package/templates/runtime/schema/define-toolcraft.control-sections.test.ts +2 -4
  508. package/templates/runtime/schema/define-toolcraft.file-drop-normalization.test.ts +177 -0
  509. package/templates/runtime/schema/define-toolcraft.model-file-drop-formats.test.ts +181 -0
  510. package/templates/runtime/schema/define-toolcraft.model-file-drop-limits.test.ts +175 -0
  511. package/templates/runtime/schema/define-toolcraft.segmented-control-fit.test.ts +167 -0
  512. package/templates/runtime/schema/define-toolcraft.setup-background.test.ts +142 -0
  513. package/templates/runtime/schema/define-toolcraft.setup-canvas.test.ts +38 -0
  514. package/templates/runtime/schema/define-toolcraft.setup-persistence.test.ts +39 -31
  515. package/templates/runtime/schema/define-toolcraft.setup-render-scale-timeline.test.ts +33 -13
  516. package/templates/runtime/schema/define-toolcraft.setup-settings-transfer.test.ts +61 -1
  517. package/templates/runtime/schema/define-toolcraft.ts +32 -55
  518. package/templates/runtime/schema/keyframe-capability.test.ts +16 -5
  519. package/templates/runtime/schema/panels-schema-normalization.ts +17 -2
  520. package/templates/runtime/schema/persistence-plan.test.ts +201 -0
  521. package/templates/runtime/schema/persistence-plan.ts +70 -0
  522. package/templates/runtime/schema/runtime-setup-background.ts +158 -0
  523. package/templates/runtime/schema/runtime-setup-section.ts +122 -57
  524. package/templates/runtime/schema/runtime-targets.ts +14 -0
  525. package/templates/runtime/schema/schema-resolvers.ts +0 -18
  526. package/templates/runtime/schema/types.ts +167 -17
  527. package/templates/runtime/source-assets/binary-media-hydration.ts +73 -0
  528. package/templates/runtime/source-assets/default-binary-media-hydration.test.ts +92 -0
  529. package/templates/runtime/source-assets/default-model-hydration.test.ts +200 -0
  530. package/templates/runtime/source-assets/file-source-asset-handler.ts +157 -0
  531. package/templates/runtime/source-assets/image-file-source-asset-handler.test.ts +78 -0
  532. package/templates/runtime/source-assets/image-source-asset-handler.test.ts +202 -0
  533. package/templates/runtime/source-assets/image-source-asset-handler.ts +123 -0
  534. package/templates/runtime/source-assets/index.ts +20 -0
  535. package/templates/runtime/source-assets/media-resource-ref.test.ts +33 -0
  536. package/templates/runtime/source-assets/media-resource-ref.ts +49 -0
  537. package/templates/runtime/source-assets/production-source-asset-registry.ts +18 -0
  538. package/templates/runtime/source-assets/repository/binary-asset-dependencies.test.ts +184 -0
  539. package/templates/runtime/source-assets/repository/binary-asset-reachability.ts +26 -0
  540. package/templates/runtime/source-assets/repository/binary-asset-repository.ts +139 -0
  541. package/templates/runtime/source-assets/repository/indexeddb-binary-asset-lifecycle.test.ts +111 -0
  542. package/templates/runtime/source-assets/repository/indexeddb-binary-asset-lifecycle.ts +248 -0
  543. package/templates/runtime/source-assets/repository/indexeddb-binary-asset-liveness.test.ts +68 -0
  544. package/templates/runtime/source-assets/repository/indexeddb-binary-asset-liveness.ts +156 -0
  545. package/templates/runtime/source-assets/repository/indexeddb-binary-asset-metadata.ts +242 -0
  546. package/templates/runtime/source-assets/repository/indexeddb-binary-asset-options.ts +130 -0
  547. package/templates/runtime/source-assets/repository/indexeddb-binary-asset-repository-leases.test.ts +305 -0
  548. package/templates/runtime/source-assets/repository/indexeddb-binary-asset-repository-liveness.test.ts +217 -0
  549. package/templates/runtime/source-assets/repository/indexeddb-binary-asset-repository-migration.test.ts +198 -0
  550. package/templates/runtime/source-assets/repository/indexeddb-binary-asset-repository.test-support.ts +48 -0
  551. package/templates/runtime/source-assets/repository/indexeddb-binary-asset-repository.test.ts +242 -0
  552. package/templates/runtime/source-assets/repository/indexeddb-binary-asset-repository.ts +390 -0
  553. package/templates/runtime/source-assets/repository/indexeddb-binary-asset-storage.ts +238 -0
  554. package/templates/runtime/source-assets/repository/indexeddb-binary-asset-test-support.ts +163 -0
  555. package/templates/runtime/source-assets/repository/memory-binary-asset-repository.test.ts +211 -0
  556. package/templates/runtime/source-assets/repository/memory-binary-asset-repository.ts +149 -0
  557. package/templates/runtime/source-assets/repository/resource-manifest.test.ts +67 -0
  558. package/templates/runtime/source-assets/repository/resource-manifest.ts +122 -0
  559. package/templates/runtime/source-assets/repository/resource-reachability.test.ts +227 -0
  560. package/templates/runtime/source-assets/repository/resource-reachability.ts +153 -0
  561. package/templates/runtime/source-assets/repository/unavailable-binary-asset-repository.ts +24 -0
  562. package/templates/runtime/source-assets/source-asset-admission.ts +63 -0
  563. package/templates/runtime/source-assets/source-asset-batch-preparation.ts +42 -0
  564. package/templates/runtime/source-assets/source-asset-binary-media-hydrator.ts +137 -0
  565. package/templates/runtime/source-assets/source-asset-cleanup-manager.ts +110 -0
  566. package/templates/runtime/source-assets/source-asset-coordinator-admission.test.ts +365 -0
  567. package/templates/runtime/source-assets/source-asset-coordinator-lifecycle.test.ts +230 -0
  568. package/templates/runtime/source-assets/source-asset-coordinator-planning.test.ts +121 -0
  569. package/templates/runtime/source-assets/source-asset-coordinator-presentation-reachability.test.ts +54 -0
  570. package/templates/runtime/source-assets/source-asset-coordinator-test-support.ts +197 -0
  571. package/templates/runtime/source-assets/source-asset-coordinator.test.ts +495 -0
  572. package/templates/runtime/source-assets/source-asset-coordinator.ts +328 -0
  573. package/templates/runtime/source-assets/source-asset-feedback.ts +40 -0
  574. package/templates/runtime/source-assets/source-asset-handler-cancellation.test.ts +157 -0
  575. package/templates/runtime/source-assets/source-asset-import-runner.ts +462 -0
  576. package/templates/runtime/source-assets/source-asset-job-manager.ts +186 -0
  577. package/templates/runtime/source-assets/source-asset-model-hydrator.ts +241 -0
  578. package/templates/runtime/source-assets/source-asset-operation-store.test.ts +53 -0
  579. package/templates/runtime/source-assets/source-asset-operation-store.ts +132 -0
  580. package/templates/runtime/source-assets/source-asset-prepared-result.ts +108 -0
  581. package/templates/runtime/source-assets/source-asset-presentation-feedback.test.ts +34 -0
  582. package/templates/runtime/source-assets/source-asset-presentation-resources.test.ts +43 -0
  583. package/templates/runtime/source-assets/source-asset-presentation-resources.ts +144 -0
  584. package/templates/runtime/source-assets/source-asset-presentation.test.ts +196 -0
  585. package/templates/runtime/source-assets/source-asset-presentation.ts +182 -0
  586. package/templates/runtime/source-assets/source-asset-registry.test.ts +282 -0
  587. package/templates/runtime/source-assets/source-asset-registry.ts +165 -0
  588. package/templates/runtime/source-assets/source-asset-resource-resolver.test.ts +47 -0
  589. package/templates/runtime/source-assets/source-asset-resource-resolver.ts +86 -0
  590. package/templates/runtime/source-assets/source-asset-types.ts +173 -0
  591. package/templates/runtime/state/canvas-background-state.ts +73 -0
  592. package/templates/runtime/state/canvas-control-target-reducer.test.ts +272 -0
  593. package/templates/runtime/state/canvas-control-target-reducer.ts +349 -0
  594. package/templates/runtime/state/canvas-frame.test.ts +68 -0
  595. package/templates/runtime/state/canvas-frame.ts +79 -0
  596. package/templates/runtime/state/canvas-reducer.ts +90 -5
  597. package/templates/runtime/state/control-value-normalization.test.ts +141 -0
  598. package/templates/runtime/state/control-value-normalization.ts +222 -0
  599. package/templates/runtime/state/controls-reducer.ts +45 -145
  600. package/templates/runtime/state/create-template-state.test.ts +43 -2
  601. package/templates/runtime/state/create-template-state.ts +36 -5
  602. package/templates/runtime/state/history-patch-metadata.test.ts +36 -0
  603. package/templates/runtime/state/history-patch-metadata.ts +74 -0
  604. package/templates/runtime/state/history-patches.ts +49 -12
  605. package/templates/runtime/state/layer-visibility.ts +36 -0
  606. package/templates/runtime/state/media-defaults.ts +93 -6
  607. package/templates/runtime/state/media-discriminated-union.test.ts +204 -0
  608. package/templates/runtime/state/media-import-allocation.ts +129 -0
  609. package/templates/runtime/state/media-reducer.ts +395 -99
  610. package/templates/runtime/state/media-resource-state.ts +34 -0
  611. package/templates/runtime/state/media-state.ts +1 -1
  612. package/templates/runtime/state/panels-reducer.ts +80 -27
  613. package/templates/runtime/state/persistence-additional-value-targets.test.ts +67 -0
  614. package/templates/runtime/state/persistence-controller.test.ts +187 -0
  615. package/templates/runtime/state/persistence-controller.ts +195 -0
  616. package/templates/runtime/state/persistence-legacy-section-collapse.test.ts +75 -0
  617. package/templates/runtime/state/persistence-legacy-section-collapse.ts +138 -0
  618. package/templates/runtime/state/persistence-media-migration.test.ts +163 -0
  619. package/templates/runtime/state/persistence-migrations.test.ts +51 -0
  620. package/templates/runtime/state/persistence-migrations.ts +101 -0
  621. package/templates/runtime/state/persistence-reader-canvas.ts +4 -0
  622. package/templates/runtime/state/persistence-reader-media.ts +298 -39
  623. package/templates/runtime/state/persistence-reader-panels.ts +52 -5
  624. package/templates/runtime/state/persistence-reader-values.ts +19 -21
  625. package/templates/runtime/state/persistence-readers.ts +1 -1
  626. package/templates/runtime/state/persistence-snapshot.ts +15 -4
  627. package/templates/runtime/state/persistence.test.ts +228 -3
  628. package/templates/runtime/state/persistence.ts +53 -14
  629. package/templates/runtime/state/reducer-canvas-panels.test.ts +63 -0
  630. package/templates/runtime/state/reducer-controls.test.ts +114 -0
  631. package/templates/runtime/state/reducer-media-import-batch.test.ts +90 -0
  632. package/templates/runtime/state/reducer-media-import-sizing.test.ts +5 -3
  633. package/templates/runtime/state/reducer-media-reset.test.ts +18 -2
  634. package/templates/runtime/state/reducer-media-test-utils.ts +11 -6
  635. package/templates/runtime/state/reducer-media-transform.test.ts +11 -3
  636. package/templates/runtime/state/reducer-model-lifecycle.test.ts +307 -0
  637. package/templates/runtime/state/reducer.ts +9 -0
  638. package/templates/runtime/state/scene-element-frame.test.ts +32 -0
  639. package/templates/runtime/state/scene-element-frame.ts +46 -0
  640. package/templates/runtime/state/toolcraft-external-store-cross-lane.test.ts +475 -0
  641. package/templates/runtime/state/toolcraft-external-store-dependencies.test.ts +226 -0
  642. package/templates/runtime/state/toolcraft-external-store-dependencies.ts +291 -0
  643. package/templates/runtime/state/toolcraft-external-store-field-intent.test.ts +202 -0
  644. package/templates/runtime/state/toolcraft-external-store-history-boundary.test.ts +243 -0
  645. package/templates/runtime/state/toolcraft-external-store-history.ts +254 -0
  646. package/templates/runtime/state/toolcraft-external-store-publication.test.ts +135 -0
  647. package/templates/runtime/state/toolcraft-external-store-transition.ts +143 -0
  648. package/templates/runtime/state/toolcraft-external-store.test.ts +330 -0
  649. package/templates/runtime/state/toolcraft-external-store.ts +401 -0
  650. package/templates/runtime/state/toolcraft-keyframe-equality.ts +78 -0
  651. package/templates/runtime/state/types.ts +215 -13
  652. package/templates/runtime/testing/model-import-performance-workload.test.ts +265 -0
  653. package/templates/runtime/testing/model-import-performance-workload.ts +468 -0
  654. package/templates/runtime/testing/performance-config.ts +7 -0
  655. package/templates/runtime/testing/performance-control-classification.ts +3 -59
  656. package/templates/runtime/testing/performance-coverage-policy.ts +13 -0
  657. package/templates/runtime/testing/performance-coverage-validator.ts +39 -24
  658. package/templates/runtime/testing/performance-envelope-validation-context.ts +33 -0
  659. package/templates/runtime/testing/performance-fixture-adapter-types.ts +74 -0
  660. package/templates/runtime/testing/performance-fixture-adapters.ts +24 -0
  661. package/templates/runtime/testing/performance-fixture-cost-model.ts +216 -0
  662. package/templates/runtime/testing/performance-fixture-dimensions.ts +83 -0
  663. package/templates/runtime/testing/performance-fixture-discrete-adapters.ts +150 -0
  664. package/templates/runtime/testing/performance-fixture-discrete-domain.test.ts +274 -0
  665. package/templates/runtime/testing/performance-fixture-discrete-search.test.ts +119 -0
  666. package/templates/runtime/testing/performance-fixture-discrete-search.ts +96 -0
  667. package/templates/runtime/testing/performance-fixture-execution.test.ts +248 -0
  668. package/templates/runtime/testing/performance-fixture-execution.ts +109 -0
  669. package/templates/runtime/testing/performance-fixture-numeric.test.ts +15 -0
  670. package/templates/runtime/testing/performance-fixture-numeric.ts +24 -0
  671. package/templates/runtime/testing/performance-fixture-plan-analysis.ts +385 -0
  672. package/templates/runtime/testing/performance-fixture-plan.test-fixtures.ts +115 -0
  673. package/templates/runtime/testing/performance-fixture-plan.test.ts +443 -0
  674. package/templates/runtime/testing/performance-fixture-plan.ts +105 -0
  675. package/templates/runtime/testing/performance-fixture-reachable-values.test.ts +406 -0
  676. package/templates/runtime/testing/performance-fixture-record.ts +14 -0
  677. package/templates/runtime/testing/performance-fixture-registry-validation.ts +341 -0
  678. package/templates/runtime/testing/performance-fixture-validation-pure.test.ts +378 -0
  679. package/templates/runtime/testing/performance-interaction-policy.test.ts +35 -0
  680. package/templates/runtime/testing/performance-interaction-policy.ts +9 -0
  681. package/templates/runtime/testing/performance-no-legacy-semantics.test.ts +109 -0
  682. package/templates/runtime/testing/performance-path-codec.d.mts +42 -0
  683. package/templates/runtime/testing/performance-path-codec.mjs +112 -0
  684. package/templates/runtime/testing/performance-path-codec.test.ts +96 -0
  685. package/templates/runtime/testing/performance-path-coverage-policy.ts +111 -0
  686. package/templates/runtime/testing/performance-path-coverage.test.ts +219 -0
  687. package/templates/runtime/testing/performance-path-model.ts +15 -0
  688. package/templates/runtime/testing/performance-paths.test-fixtures.ts +165 -0
  689. package/templates/runtime/testing/performance-paths.test.ts +208 -0
  690. package/templates/runtime/testing/performance-paths.ts +84 -0
  691. package/templates/runtime/testing/performance-profile-validation.test.ts +42 -0
  692. package/templates/runtime/testing/performance-profile-validation.ts +19 -0
  693. package/templates/runtime/testing/performance-render-plan-assessment.test.ts +492 -0
  694. package/templates/runtime/testing/performance-render-plan-assessment.ts +121 -0
  695. package/templates/runtime/testing/performance-render-plan-benchmark-evidence.test.ts +225 -0
  696. package/templates/runtime/testing/performance-render-plan-benchmark-evidence.ts +185 -0
  697. package/templates/runtime/testing/performance-render-plan-integration.test.ts +250 -0
  698. package/templates/runtime/testing/performance-render-plan-model.ts +91 -0
  699. package/templates/runtime/testing/performance-render-plan-pass-assessment.ts +353 -0
  700. package/templates/runtime/testing/performance-render-plan-registration.test.ts +78 -0
  701. package/templates/runtime/testing/performance-render-plan-test-fixtures.ts +123 -0
  702. package/templates/runtime/testing/performance-render-plan-utils.ts +65 -0
  703. package/templates/runtime/testing/performance-renderer-pipeline-parser.ts +202 -0
  704. package/templates/runtime/testing/performance-renderer-pipeline-validation.ts +93 -98
  705. package/templates/runtime/testing/performance-renderer-technique-validation.ts +0 -155
  706. package/templates/runtime/testing/performance-scenario-common-validation.ts +101 -0
  707. package/templates/runtime/testing/performance-scenario-validation.ts +3 -40
  708. package/templates/runtime/testing/performance-schema-queries.ts +3 -1
  709. package/templates/runtime/testing/performance-test-fixtures/index.ts +0 -2
  710. package/templates/runtime/testing/performance-test-fixtures/renderer-pipelines.ts +0 -14
  711. package/templates/runtime/testing/performance-types.ts +128 -182
  712. package/templates/runtime/testing/performance-workload-envelope-derived-validation.test.ts +152 -0
  713. package/templates/runtime/testing/performance-workload-envelope-derived-validation.ts +109 -0
  714. package/templates/runtime/testing/performance-workload-envelope-schema-validation.test.ts +384 -0
  715. package/templates/runtime/testing/performance-workload-envelope-schema-validation.ts +201 -0
  716. package/templates/runtime/testing/performance-workload-envelope-shared.ts +97 -0
  717. package/templates/runtime/testing/performance-workload-envelope-test-fixtures.ts +102 -0
  718. package/templates/runtime/testing/performance-workload-envelope-validation.test.ts +293 -0
  719. package/templates/runtime/testing/performance-workload-envelope-validation.ts +222 -0
  720. package/templates/runtime/testing/performance-workload-types.test.ts +65 -0
  721. package/templates/runtime/testing/performance-workload-types.ts +34 -0
  722. package/templates/runtime/testing/performance.ts +47 -5
  723. package/templates/starter/AGENTS.md +45 -37
  724. package/templates/starter/docs/toolcraft/README.md +14 -16
  725. package/templates/starter/docs/toolcraft/acceptance-testing.md +86 -33
  726. package/templates/starter/docs/toolcraft/agent-worklog.md +121 -22
  727. package/templates/starter/docs/toolcraft/assembly-workflow.md +29 -13
  728. package/templates/starter/docs/toolcraft/component-rules.md +43 -5
  729. package/templates/starter/docs/toolcraft/core/control-selection.md +66 -0
  730. package/templates/starter/docs/toolcraft/core/layout.md +5 -3
  731. package/templates/starter/docs/toolcraft/core/media-upload.md +44 -1
  732. package/templates/starter/docs/toolcraft/core/performance.md +100 -67
  733. package/templates/starter/docs/toolcraft/core/runtime-boundary.md +14 -2
  734. package/templates/starter/docs/toolcraft/core/setup-export.md +40 -16
  735. package/templates/starter/docs/toolcraft/core/timeline-animation.md +2 -1
  736. package/templates/starter/docs/toolcraft/custom-controls.md +7 -1
  737. package/templates/starter/docs/toolcraft/decision-contract.md +8 -4
  738. package/templates/starter/docs/toolcraft/performance.md +115 -143
  739. package/templates/starter/docs/toolcraft/renderer-technique.md +90 -25
  740. package/templates/starter/docs/toolcraft/schema-reference.md +200 -44
  741. package/templates/starter/docs/toolcraft/workflow.md +35 -20
  742. package/templates/starter/e2e/app-browser-control-coverage.spec.ts +0 -54
  743. package/templates/starter/e2e/app-browser-infinity-canvas-evidence.spec.ts +86 -0
  744. package/templates/starter/e2e/app-browser-model-appearance-evidence.spec.ts +214 -0
  745. package/templates/starter/e2e/app-browser-model-import-evidence.spec.ts +422 -0
  746. package/templates/starter/e2e/app-browser-model-performance.spec.ts +140 -0
  747. package/templates/starter/e2e/app-browser-model-runtime-requirements.spec.ts +71 -0
  748. package/templates/starter/e2e/app-browser-orientation-evidence.spec.ts +276 -0
  749. package/templates/starter/e2e/app-browser-performance-evidence.spec.ts +164 -90
  750. package/templates/starter/e2e/app-browser-performance-probe.spec.ts +61 -0
  751. package/templates/starter/e2e/app-browser-proof-session.spec.ts +19 -0
  752. package/templates/starter/e2e/app-browser-render-scale-evidence.spec.ts +193 -0
  753. package/templates/starter/e2e/app-browser-render-scale-requirements.spec.ts +71 -0
  754. package/templates/starter/e2e/app-browser-runtime-provenance.spec.ts +12 -64
  755. package/templates/starter/e2e/app-browser-runtime-reporter.spec.ts +100 -50
  756. package/templates/starter/e2e/app-browser-runtime-requirements.spec.ts +179 -46
  757. package/templates/starter/e2e/app-browser-semantic-evidence.spec.ts +34 -56
  758. package/templates/starter/e2e/app-controls.spec.ts +1 -1
  759. package/templates/starter/e2e/app-kernel-benchmarks.ts +3 -0
  760. package/templates/starter/e2e/app-performance-path-adapters.ts +4 -0
  761. package/templates/starter/e2e/app-performance.spec.ts +49 -0
  762. package/templates/starter/e2e/app-persistence.spec.ts +209 -0
  763. package/templates/starter/e2e/browser-acceptance-outcome-helpers.ts +5 -1
  764. package/templates/starter/e2e/browser-conditional-output-evidence-helpers.ts +5 -0
  765. package/templates/starter/e2e/browser-execution-ledger.spec.ts +79 -0
  766. package/templates/starter/e2e/browser-execution-ledger.ts +115 -0
  767. package/templates/starter/e2e/browser-infinity-canvas-evidence.ts +729 -0
  768. package/templates/starter/e2e/browser-layer-evidence-helpers.ts +66 -9
  769. package/templates/starter/e2e/browser-model-appearance-evidence-helpers.ts +65 -0
  770. package/templates/starter/e2e/browser-model-appearance-evidence.ts +171 -0
  771. package/templates/starter/e2e/browser-model-import-evidence-helpers.ts +426 -0
  772. package/templates/starter/e2e/browser-orientation-gizmo-actions.ts +256 -0
  773. package/templates/starter/e2e/browser-orientation-gizmo-evidence-helpers.ts +433 -0
  774. package/templates/starter/e2e/browser-performance-evidence.ts +22 -0
  775. package/templates/starter/e2e/browser-performance-measurement-evidence.ts +25 -0
  776. package/templates/starter/e2e/browser-performance-measurement-report.spec.ts +73 -0
  777. package/templates/starter/e2e/browser-performance-measurement-report.ts +218 -0
  778. package/templates/starter/e2e/browser-performance-report.ts +246 -0
  779. package/templates/starter/e2e/browser-performance-reporter-evaluation.ts +317 -0
  780. package/templates/starter/e2e/browser-performance-reporter.spec.ts +456 -0
  781. package/templates/starter/e2e/browser-performance-targeted-selection.spec.ts +145 -0
  782. package/templates/starter/e2e/browser-proof-session.ts +31 -1
  783. package/templates/starter/e2e/browser-render-scale-evidence.ts +245 -0
  784. package/templates/starter/e2e/browser-runtime-evidence-reporter-test-fixtures.ts +55 -0
  785. package/templates/starter/e2e/browser-runtime-evidence-reporter.ts +146 -4
  786. package/templates/starter/e2e/browser-runtime-evidence-requirements.ts +133 -52
  787. package/templates/starter/e2e/browser-semantic-evidence-test-helpers.ts +57 -0
  788. package/templates/starter/e2e/browser-state-evidence-helpers.ts +7 -1
  789. package/templates/starter/e2e/browser-timeline-evidence-helpers.ts +4 -0
  790. package/templates/starter/e2e/canvas-handle-helpers.ts +3 -3
  791. package/templates/starter/e2e/kernel-benchmark-contract.ts +19 -0
  792. package/templates/starter/e2e/model-import-evidence-test-support.ts +125 -0
  793. package/templates/starter/e2e/performance-budget-helpers.ts +3 -107
  794. package/templates/starter/e2e/performance-canvas-helpers.ts +8 -8
  795. package/templates/starter/e2e/performance-checkpoint-report.ts +89 -0
  796. package/templates/starter/e2e/performance-compiled-fixture-runtime.ts +120 -0
  797. package/templates/starter/e2e/performance-control-helpers.ts +1 -1
  798. package/templates/starter/e2e/performance-control-layout-helpers.ts +24 -0
  799. package/templates/starter/e2e/performance-environment-evidence.ts +205 -0
  800. package/templates/starter/e2e/performance-fixture-helpers.ts +37 -210
  801. package/templates/starter/e2e/performance-fixture-selection.spec.ts +167 -0
  802. package/templates/starter/e2e/performance-fixture-selection.ts +82 -0
  803. package/templates/starter/e2e/performance-frame-metrics.spec.ts +21 -0
  804. package/templates/starter/e2e/performance-frame-metrics.ts +50 -0
  805. package/templates/starter/e2e/performance-frame-probe.ts +74 -49
  806. package/templates/starter/e2e/performance-helpers.ts +1 -0
  807. package/templates/starter/e2e/performance-interaction-measurement.ts +5 -11
  808. package/templates/starter/e2e/performance-measurement-evidence.ts +52 -8
  809. package/templates/starter/e2e/performance-model-appearance-contract.ts +11 -0
  810. package/templates/starter/e2e/performance-model-import-appearance-fixture-support.ts +32 -0
  811. package/templates/starter/e2e/performance-model-import-appearance-fixtures.spec.ts +56 -0
  812. package/templates/starter/e2e/performance-model-import-appearance-fixtures.ts +434 -0
  813. package/templates/starter/e2e/performance-model-import-binary-appearance-fixtures.ts +39 -0
  814. package/templates/starter/e2e/performance-model-import-fixtures.spec.ts +133 -0
  815. package/templates/starter/e2e/performance-model-import-fixtures.ts +439 -0
  816. package/templates/starter/e2e/performance-model-import-geometry-fixtures.ts +158 -0
  817. package/templates/starter/e2e/performance-model-import-helpers.ts +409 -0
  818. package/templates/starter/e2e/performance-model-import-zip-fixtures.ts +57 -0
  819. package/templates/starter/e2e/performance-model-orientation-helpers.ts +34 -0
  820. package/templates/starter/e2e/performance-model-pixel-helpers.ts +135 -0
  821. package/templates/starter/e2e/performance-output-action-helpers.ts +4 -4
  822. package/templates/starter/e2e/performance-path-adapter-contract.ts +55 -0
  823. package/templates/starter/e2e/performance-path-helpers.spec.ts +171 -0
  824. package/templates/starter/e2e/performance-path-helpers.ts +291 -0
  825. package/templates/starter/e2e/performance-pipeline-browser-helper.spec.ts +175 -0
  826. package/templates/starter/e2e/performance-pipeline-cache-fallback.spec.ts +204 -0
  827. package/templates/starter/e2e/performance-pipeline-evidence-continuity.spec.ts +134 -0
  828. package/templates/starter/e2e/performance-pipeline-evidence-test-fixtures.ts +409 -0
  829. package/templates/starter/e2e/performance-pipeline-evidence.spec.ts +441 -0
  830. package/templates/starter/e2e/performance-pipeline-evidence.ts +175 -0
  831. package/templates/starter/e2e/performance-pipeline-invariants.ts +359 -0
  832. package/templates/starter/e2e/performance-pipeline-resource-evidence.spec.ts +119 -0
  833. package/templates/starter/e2e/performance-profile-helpers.spec.ts +103 -0
  834. package/templates/starter/e2e/performance-profile-helpers.ts +52 -0
  835. package/templates/starter/e2e/performance-render-scale-runner.spec.ts +266 -0
  836. package/templates/starter/e2e/performance-slider-helpers.ts +7 -123
  837. package/templates/starter/e2e/product-observable-helpers.ts +109 -103
  838. package/templates/starter/e2e/toolcraft-delivery-catalog-reporter.ts +31 -0
  839. package/templates/starter/e2e/toolcraft-kernel-benchmark.spec.ts +107 -0
  840. package/templates/starter/e2e/toolcraft-product-test.spec.ts +14 -0
  841. package/templates/starter/e2e/toolcraft-product-test.ts +33 -0
  842. package/templates/starter/index.html +8 -0
  843. package/templates/starter/package.json +14 -11
  844. package/templates/starter/playwright.config.ts +124 -2
  845. package/templates/starter/scripts/check-toolcraft-code-health.mjs +66 -19
  846. package/templates/starter/scripts/check-toolcraft-code-health.test.mjs +151 -0
  847. package/templates/starter/scripts/check-toolcraft-docs.mjs +49 -3
  848. package/templates/starter/scripts/check-toolcraft-integrity.mjs +229 -117
  849. package/templates/starter/scripts/check-toolcraft-integrity.test.mjs +271 -0
  850. package/templates/starter/scripts/playwright-containing-file.mjs +48 -0
  851. package/templates/starter/scripts/playwright-test-shim-fixture.mjs +204 -0
  852. package/templates/starter/scripts/playwright-test-shim-fixture.test.mjs +69 -0
  853. package/templates/starter/scripts/playwright-test-title-selection-performance-path.test.mjs +129 -0
  854. package/templates/starter/scripts/playwright-test-title-selection.mjs +350 -0
  855. package/templates/starter/scripts/playwright-test-title-selection.test.mjs +465 -0
  856. package/templates/starter/scripts/run-browser-performance-test-helpers.mjs +335 -0
  857. package/templates/starter/scripts/run-browser-performance.mjs +71 -98
  858. package/templates/starter/scripts/run-browser-performance.test.mjs +266 -27
  859. package/templates/starter/scripts/run-delivery-verification-test-helpers.mjs +210 -0
  860. package/templates/starter/scripts/run-delivery-verification.mjs +47 -0
  861. package/templates/starter/scripts/run-delivery-verification.test.mjs +101 -0
  862. package/templates/starter/scripts/run-kernel-benchmarks.mjs +104 -0
  863. package/templates/starter/scripts/toolcraft-browser-impact-selection.mjs +26 -0
  864. package/templates/starter/scripts/toolcraft-checkpoint-bundle.mjs +198 -0
  865. package/templates/starter/scripts/toolcraft-checkpoint-bundle.test.mjs +297 -0
  866. package/templates/starter/scripts/toolcraft-checkpoint-capability-invariants.test.mjs +389 -0
  867. package/templates/starter/scripts/toolcraft-checkpoint-delivery-state.mjs +106 -0
  868. package/templates/starter/scripts/toolcraft-checkpoint-delivery-state.test.mjs +279 -0
  869. package/templates/starter/scripts/toolcraft-checkpoint-durability.test.mjs +49 -0
  870. package/templates/starter/scripts/toolcraft-checkpoint-durable-fs.mjs +90 -0
  871. package/templates/starter/scripts/toolcraft-checkpoint-ownership-policy.mjs +217 -0
  872. package/templates/starter/scripts/toolcraft-checkpoint-paths.mjs +35 -0
  873. package/templates/starter/scripts/toolcraft-checkpoint-transaction-test-helpers.mjs +12 -0
  874. package/templates/starter/scripts/toolcraft-checkpoint-transaction.mjs +125 -0
  875. package/templates/starter/scripts/toolcraft-checkpoint-transaction.test.mjs +167 -0
  876. package/templates/starter/scripts/toolcraft-checkpoint-write-capability.mjs +196 -0
  877. package/templates/starter/scripts/toolcraft-code-health-core.d.mts +46 -0
  878. package/templates/starter/scripts/toolcraft-code-health-core.mjs +80 -99
  879. package/templates/starter/scripts/toolcraft-code-health-line-budget.mjs +80 -0
  880. package/templates/starter/scripts/toolcraft-contract-doc-integrity.mjs +7 -3
  881. package/templates/starter/scripts/toolcraft-contract-doc-integrity.test.mjs +16 -0
  882. package/templates/starter/scripts/toolcraft-contract-manifest.json +42 -0
  883. package/templates/starter/scripts/toolcraft-contract-manifest.mjs +8 -0
  884. package/templates/starter/scripts/toolcraft-contract-manifest.test.mjs +40 -0
  885. package/templates/starter/scripts/toolcraft-css-source-evidence.mjs +192 -0
  886. package/templates/starter/scripts/toolcraft-css-source-evidence.test.mjs +336 -0
  887. package/templates/starter/scripts/toolcraft-css-url-graph-evidence.test.mjs +157 -0
  888. package/templates/starter/scripts/toolcraft-css-url-scanner.mjs +333 -0
  889. package/templates/starter/scripts/toolcraft-css-url-scanner.test.mjs +210 -0
  890. package/templates/starter/scripts/toolcraft-delivery-anchor.d.mts +46 -0
  891. package/templates/starter/scripts/toolcraft-delivery-anchor.mjs +84 -0
  892. package/templates/starter/scripts/toolcraft-delivery-anchor.test.mjs +131 -0
  893. package/templates/starter/scripts/toolcraft-delivery-architecture-inventory.mjs +86 -0
  894. package/templates/starter/scripts/toolcraft-delivery-architecture-policy.d.mts +51 -0
  895. package/templates/starter/scripts/toolcraft-delivery-architecture-policy.mjs +248 -0
  896. package/templates/starter/scripts/toolcraft-delivery-architecture-test-helpers.mjs +40 -0
  897. package/templates/starter/scripts/toolcraft-delivery-catalog-collector.mjs +55 -0
  898. package/templates/starter/scripts/toolcraft-delivery-catalog-collector.test.mjs +167 -0
  899. package/templates/starter/scripts/toolcraft-delivery-evidence.mjs +187 -0
  900. package/templates/starter/scripts/toolcraft-delivery-evidence.test.mjs +268 -0
  901. package/templates/starter/scripts/toolcraft-delivery-executor.mjs +294 -0
  902. package/templates/starter/scripts/toolcraft-delivery-executor.test.mjs +463 -0
  903. package/templates/starter/scripts/toolcraft-delivery-framework-refresh.test.mjs +141 -0
  904. package/templates/starter/scripts/toolcraft-delivery-functional-changed.test.mjs +468 -0
  905. package/templates/starter/scripts/toolcraft-delivery-functional-context.d.mts +72 -0
  906. package/templates/starter/scripts/toolcraft-delivery-functional-context.mjs +56 -0
  907. package/templates/starter/scripts/toolcraft-delivery-functional-context.test.mjs +231 -0
  908. package/templates/starter/scripts/toolcraft-delivery-functional-initial.test.mjs +212 -0
  909. package/templates/starter/scripts/toolcraft-delivery-functional-model-lifecycle.test.mjs +254 -0
  910. package/templates/starter/scripts/toolcraft-delivery-functional-semantic-regression.test.mjs +135 -0
  911. package/templates/starter/scripts/toolcraft-delivery-lifecycle-state.mjs +226 -0
  912. package/templates/starter/scripts/toolcraft-delivery-lifecycle-state.test.mjs +83 -0
  913. package/templates/starter/scripts/toolcraft-delivery-lifecycle.mjs +340 -0
  914. package/templates/starter/scripts/toolcraft-delivery-module-graph.test.mjs +393 -0
  915. package/templates/starter/scripts/toolcraft-delivery-performance-iteration-authority.test.mjs +88 -0
  916. package/templates/starter/scripts/toolcraft-delivery-performance-iteration-durability.test.mjs +329 -0
  917. package/templates/starter/scripts/toolcraft-delivery-performance-iteration-evidence.test.mjs +104 -0
  918. package/templates/starter/scripts/toolcraft-delivery-performance-iteration-lifecycle.test.mjs +478 -0
  919. package/templates/starter/scripts/toolcraft-delivery-performance-iteration-test-helpers.mjs +19 -0
  920. package/templates/starter/scripts/toolcraft-delivery-plan-authority.test.mjs +282 -0
  921. package/templates/starter/scripts/toolcraft-delivery-plan-construction.mjs +166 -0
  922. package/templates/starter/scripts/toolcraft-delivery-plan-errors.test.mjs +425 -0
  923. package/templates/starter/scripts/toolcraft-delivery-plan-functional-model.test.mjs +358 -0
  924. package/templates/starter/scripts/toolcraft-delivery-plan.d.mts +155 -0
  925. package/templates/starter/scripts/toolcraft-delivery-plan.mjs +334 -0
  926. package/templates/starter/scripts/toolcraft-delivery-plan.test.mjs +487 -0
  927. package/templates/starter/scripts/toolcraft-delivery-receipt-performance.test.mjs +156 -0
  928. package/templates/starter/scripts/toolcraft-delivery-receipt-strictness.test.mjs +220 -0
  929. package/templates/starter/scripts/toolcraft-delivery-receipt-test-helpers.mjs +226 -0
  930. package/templates/starter/scripts/toolcraft-delivery-receipt.d.mts +83 -0
  931. package/templates/starter/scripts/toolcraft-delivery-receipt.mjs +216 -0
  932. package/templates/starter/scripts/toolcraft-delivery-receipt.test.mjs +195 -0
  933. package/templates/starter/scripts/toolcraft-delivery-receipt.types.test.mts +161 -0
  934. package/templates/starter/scripts/toolcraft-dependency-source-record.mjs +59 -0
  935. package/templates/starter/scripts/toolcraft-fixture-module-closure.mjs +279 -0
  936. package/templates/starter/scripts/toolcraft-fixture-module-closure.test.mjs +184 -0
  937. package/templates/starter/scripts/toolcraft-full-performance-test-helpers.mjs +67 -0
  938. package/templates/starter/scripts/toolcraft-functional-proof-model.d.mts +47 -0
  939. package/templates/starter/scripts/toolcraft-functional-proof-model.mjs +198 -0
  940. package/templates/starter/scripts/toolcraft-functional-proof-model.test.mjs +453 -0
  941. package/templates/starter/scripts/toolcraft-functional-proof-model.types.test.mts +102 -0
  942. package/templates/starter/scripts/toolcraft-functional-proof-primitives.d.mts +6 -0
  943. package/templates/starter/scripts/toolcraft-functional-proof-primitives.mjs +98 -0
  944. package/templates/starter/scripts/toolcraft-functional-proof-primitives.test.mjs +67 -0
  945. package/templates/starter/scripts/toolcraft-functional-proof-regression-fixtures.mjs +298 -0
  946. package/templates/starter/scripts/toolcraft-graph-reachability.mjs +73 -0
  947. package/templates/starter/scripts/toolcraft-integrity-manifest.mjs +5 -2
  948. package/templates/starter/scripts/toolcraft-integrity-policy.d.mts +6 -0
  949. package/templates/starter/scripts/toolcraft-integrity-policy.mjs +14 -6
  950. package/templates/starter/scripts/toolcraft-integrity-test-utils.mjs +84 -0
  951. package/templates/starter/scripts/toolcraft-kernel-benchmark-receipt.d.mts +47 -0
  952. package/templates/starter/scripts/toolcraft-kernel-benchmark-receipt.mjs +306 -0
  953. package/templates/starter/scripts/toolcraft-kernel-benchmark-receipt.test.mjs +169 -0
  954. package/templates/starter/scripts/toolcraft-layer-evidence-facade.test.mjs +256 -0
  955. package/templates/starter/scripts/toolcraft-layer-evidence-reporter.test.mjs +106 -0
  956. package/templates/starter/scripts/toolcraft-local-dependency-evidence.test.mjs +453 -0
  957. package/templates/starter/scripts/toolcraft-local-dependency-graph.mjs +344 -0
  958. package/templates/starter/scripts/toolcraft-local-dependency-graph.test.mjs +372 -0
  959. package/templates/starter/scripts/toolcraft-performance-authority-policy.d.mts +40 -0
  960. package/templates/starter/scripts/toolcraft-performance-authority-policy.mjs +274 -0
  961. package/templates/starter/scripts/toolcraft-performance-checkpoint-runner.mjs +87 -0
  962. package/templates/starter/scripts/toolcraft-performance-checkpoint-runner.test.mjs +50 -0
  963. package/templates/starter/scripts/toolcraft-performance-escalation-policy.mjs +72 -0
  964. package/templates/starter/scripts/toolcraft-performance-escalation-policy.test.mjs +393 -0
  965. package/templates/starter/scripts/toolcraft-performance-iteration-comparison.mjs +127 -0
  966. package/templates/starter/scripts/toolcraft-performance-iteration-comparison.test.mjs +133 -0
  967. package/templates/starter/scripts/toolcraft-performance-receipt-policy.mjs +127 -0
  968. package/templates/starter/scripts/toolcraft-performance-receipt-validation.test.mjs +214 -0
  969. package/templates/starter/scripts/toolcraft-performance-report.d.mts +34 -0
  970. package/templates/starter/scripts/toolcraft-performance-report.mjs +244 -0
  971. package/templates/starter/scripts/toolcraft-performance-report.test.mjs +138 -0
  972. package/templates/starter/scripts/toolcraft-performance-request-authority.mjs +64 -0
  973. package/templates/starter/scripts/toolcraft-performance-request-authority.test.mjs +488 -0
  974. package/templates/starter/scripts/toolcraft-plan-execution-authority.mjs +143 -0
  975. package/templates/starter/scripts/toolcraft-playwright-evidence-authority.mjs +96 -0
  976. package/templates/starter/scripts/toolcraft-playwright-evidence-authority.test.mjs +94 -0
  977. package/templates/starter/scripts/toolcraft-product-boundary-ast.mjs +65 -51
  978. package/templates/starter/scripts/toolcraft-product-boundary-graph-evidence.test.mjs +161 -0
  979. package/templates/starter/scripts/toolcraft-product-boundary.mjs +104 -129
  980. package/templates/starter/scripts/toolcraft-product-boundary.test.mjs +46 -0
  981. package/templates/starter/scripts/toolcraft-product-dependency-resolution.mjs +61 -118
  982. package/templates/starter/scripts/toolcraft-product-evidence-boundary-ast.mjs +97 -31
  983. package/templates/starter/scripts/toolcraft-product-evidence-boundary.test.mjs +204 -1
  984. package/templates/starter/scripts/toolcraft-product-model-presentation-boundary.test.mjs +49 -0
  985. package/templates/starter/scripts/toolcraft-product-observable-facade.test.mjs +223 -0
  986. package/templates/starter/scripts/toolcraft-product-style-boundary.mjs +0 -136
  987. package/templates/starter/scripts/toolcraft-proof-process.mjs +199 -0
  988. package/templates/starter/scripts/toolcraft-proof-process.test.mjs +466 -0
  989. package/templates/starter/scripts/toolcraft-protected-browser-build.mjs +32 -0
  990. package/templates/starter/scripts/toolcraft-readonly-adjacency.mjs +44 -0
  991. package/templates/starter/scripts/toolcraft-receipt-boundary.test.mjs +285 -0
  992. package/templates/starter/scripts/toolcraft-receipt-file-io.mjs +16 -0
  993. package/templates/starter/scripts/toolcraft-source-inventory.mjs +100 -1
  994. package/templates/starter/scripts/toolcraft-source-inventory.test.mjs +106 -0
  995. package/templates/starter/scripts/toolcraft-source-ownership.mjs +15 -0
  996. package/templates/starter/scripts/toolcraft-source-ownership.test.mjs +31 -1
  997. package/templates/starter/scripts/toolcraft-state-evidence-facade.test.mjs +258 -0
  998. package/templates/starter/scripts/toolcraft-state-evidence-reporter.test.mjs +78 -0
  999. package/templates/starter/scripts/toolcraft-static-string.mjs +234 -28
  1000. package/templates/starter/scripts/toolcraft-targeted-performance-execution.mjs +274 -0
  1001. package/templates/starter/scripts/toolcraft-targeted-performance-execution.test.mjs +225 -0
  1002. package/templates/starter/scripts/toolcraft-targeted-performance-report-combination.mjs +83 -0
  1003. package/templates/starter/scripts/toolcraft-targeted-performance-report-combination.test.mjs +131 -0
  1004. package/templates/starter/scripts/toolcraft-targeted-performance-report.d.mts +89 -0
  1005. package/templates/starter/scripts/toolcraft-targeted-performance-report.mjs +321 -0
  1006. package/templates/starter/scripts/toolcraft-targeted-performance-report.test.mjs +225 -0
  1007. package/templates/starter/scripts/toolcraft-targeted-performance-report.types.test.mts +71 -0
  1008. package/templates/starter/scripts/toolcraft-typescript-analysis.mjs +334 -0
  1009. package/templates/starter/scripts/toolcraft-typescript-architecture-invariants.test.mjs +202 -0
  1010. package/templates/starter/scripts/toolcraft-typescript-callables.mjs +83 -0
  1011. package/templates/starter/scripts/toolcraft-typescript-module-shape.mjs +156 -0
  1012. package/templates/starter/scripts/toolcraft-typescript-semantic-evidence.mjs +66 -0
  1013. package/templates/starter/scripts/toolcraft-typescript-source-evidence-structure.test.mjs +44 -0
  1014. package/templates/starter/scripts/toolcraft-typescript-source-evidence.d.mts +86 -0
  1015. package/templates/starter/scripts/toolcraft-typescript-source-evidence.mjs +334 -0
  1016. package/templates/starter/scripts/toolcraft-unavailable-resource-evidence-facade.test.mjs +439 -0
  1017. package/templates/starter/scripts/toolcraft-verification-impact-inventory.d.mts +62 -0
  1018. package/templates/starter/scripts/toolcraft-verification-impact-inventory.mjs +344 -0
  1019. package/templates/starter/scripts/toolcraft-verification-impact-inventory.test.mjs +204 -0
  1020. package/templates/starter/scripts/toolcraft-verification-impact-performance-candidates.test.mjs +210 -0
  1021. package/templates/starter/scripts/toolcraft-verification-impact-resolution.mjs +344 -0
  1022. package/templates/starter/scripts/toolcraft-verification-impact-resolution.test.mjs +270 -0
  1023. package/templates/starter/scripts/toolcraft-verification-impact-semantic-resolution.test.mjs +449 -0
  1024. package/templates/starter/scripts/toolcraft-verification-impact-support-resolution.test.mjs +195 -0
  1025. package/templates/starter/scripts/toolcraft-verification-impact.d.mts +132 -0
  1026. package/templates/starter/scripts/toolcraft-verification-impact.mjs +169 -0
  1027. package/templates/starter/scripts/toolcraft-verification-impact.test.mjs +300 -0
  1028. package/templates/starter/scripts/toolcraft-verification-input-roles.d.mts +60 -0
  1029. package/templates/starter/scripts/toolcraft-verification-input-roles.mjs +197 -0
  1030. package/templates/starter/scripts/toolcraft-verification-input-roles.test.mjs +225 -0
  1031. package/templates/starter/scripts/toolcraft-verification-inventory.mjs +138 -42
  1032. package/templates/starter/scripts/toolcraft-verification-lock.mjs +64 -0
  1033. package/templates/starter/scripts/toolcraft-verification-receipt-test-helpers.mjs +245 -0
  1034. package/templates/starter/scripts/toolcraft-verification-receipt.d.mts +40 -6
  1035. package/templates/starter/scripts/toolcraft-verification-receipt.mjs +95 -229
  1036. package/templates/starter/scripts/toolcraft-verification-receipt.test.mjs +325 -210
  1037. package/templates/starter/scripts/toolcraft-vite-env-activation.test.mjs +131 -0
  1038. package/templates/starter/scripts/toolcraft-vitest-runtime-contract.mjs +18 -0
  1039. package/templates/starter/scripts/toolcraft-vitest-runtime-contract.test.mjs +36 -0
  1040. package/templates/starter/scripts/toolcraft-vitest-runtime-evidence-reporter.test.mjs +7 -0
  1041. package/templates/starter/scripts/toolcraft-worklog-decision-trail.d.mts +14 -0
  1042. package/templates/starter/scripts/toolcraft-worklog-decision-trail.mjs +170 -0
  1043. package/templates/starter/src/app/acceptance/canvas-coverage.ts +18 -0
  1044. package/templates/starter/src/app/acceptance/canvas-handle-acceptance.ts +5 -14
  1045. package/templates/starter/src/app/acceptance/condition-exclusivity.test.ts +60 -0
  1046. package/templates/starter/src/app/acceptance/condition-exclusivity.ts +221 -0
  1047. package/templates/starter/src/app/acceptance/control-acceptance-context.ts +20 -6
  1048. package/templates/starter/src/app/acceptance/control-acceptance-coverage.ts +60 -10
  1049. package/templates/starter/src/app/acceptance/control-acceptance-kind-rules.ts +55 -7
  1050. package/templates/starter/src/app/acceptance/control-acceptance.ts +3 -0
  1051. package/templates/starter/src/app/acceptance/control-component-rules.ts +0 -32
  1052. package/templates/starter/src/app/acceptance/control-layout-entity-rules.ts +7 -4
  1053. package/templates/starter/src/app/acceptance/control-layout-model.ts +12 -4
  1054. package/templates/starter/src/app/acceptance/control-section-inventory.test.ts +136 -0
  1055. package/templates/starter/src/app/acceptance/control-section-inventory.ts +69 -24
  1056. package/templates/starter/src/app/acceptance/controls.ts +4 -0
  1057. package/templates/starter/src/app/acceptance/infinity-canvas.ts +81 -0
  1058. package/templates/starter/src/app/acceptance/inline-layout.ts +14 -3
  1059. package/templates/starter/src/app/acceptance/interaction-ownership-intent.ts +31 -0
  1060. package/templates/starter/src/app/acceptance/interaction-ownership.ts +283 -0
  1061. package/templates/starter/src/app/acceptance/interaction-targets.ts +18 -0
  1062. package/templates/starter/src/app/acceptance/media-upload.ts +115 -10
  1063. package/templates/starter/src/app/acceptance/model-import-coverage.ts +42 -0
  1064. package/templates/starter/src/app/acceptance/orientation-gizmo.ts +176 -0
  1065. package/templates/starter/src/app/acceptance/output-background-rules.ts +58 -18
  1066. package/templates/starter/src/app/acceptance/output-export-layout-rules.ts +4 -8
  1067. package/templates/starter/src/app/acceptance/output-export-model.ts +17 -7
  1068. package/templates/starter/src/app/acceptance/reference-study-types.ts +60 -0
  1069. package/templates/starter/src/app/acceptance/render-scale.ts +107 -0
  1070. package/templates/starter/src/app/acceptance/runtime-coverage.ts +45 -0
  1071. package/templates/starter/src/app/acceptance/runtime-setup.ts +4 -2
  1072. package/templates/starter/src/app/acceptance/types.ts +66 -63
  1073. package/templates/starter/src/app/acceptance/validate-coverage.ts +76 -4
  1074. package/templates/starter/src/app/acceptance/validation-pipeline.test.ts +5 -1
  1075. package/templates/starter/src/app/acceptance/validation-pipeline.ts +2 -0
  1076. package/templates/starter/src/app/acceptance/view-interaction-intent.ts +23 -0
  1077. package/templates/starter/src/app/acceptance/view-interaction.ts +148 -0
  1078. package/templates/starter/src/app/starter-acceptance-data.ts +28 -1
  1079. package/templates/starter/src/app/starter-acceptance.animation-intent.test.ts +7 -4
  1080. package/templates/starter/src/app/starter-acceptance.background-export.test.ts +17 -14
  1081. package/templates/starter/src/app/starter-acceptance.base-coverage.test.ts +3 -0
  1082. package/templates/starter/src/app/starter-acceptance.canvas-sizing.test.ts +133 -4
  1083. package/templates/starter/src/app/starter-acceptance.compound-part-coverage.test.ts +6 -4
  1084. package/templates/starter/src/app/starter-acceptance.contract-fixtures.test.ts +40 -0
  1085. package/templates/starter/src/app/starter-acceptance.contract-fixtures.ts +20 -2
  1086. package/templates/starter/src/app/starter-acceptance.control-label-context.test.ts +7 -5
  1087. package/templates/starter/src/app/starter-acceptance.control-labels.test.ts +10 -8
  1088. package/templates/starter/src/app/starter-acceptance.control-naming-rules.test.ts +6 -7
  1089. package/templates/starter/src/app/starter-acceptance.control-order.test.ts +110 -2
  1090. package/templates/starter/src/app/starter-acceptance.control-state.test.ts +6 -7
  1091. package/templates/starter/src/app/starter-acceptance.curves-rules.test.ts +4 -5
  1092. package/templates/starter/src/app/starter-acceptance.custom-control-collections.test.ts +7 -5
  1093. package/templates/starter/src/app/starter-acceptance.custom-control-coverage.test.ts +3 -4
  1094. package/templates/starter/src/app/starter-acceptance.custom-control-fit-check.test.ts +6 -4
  1095. package/templates/starter/src/app/starter-acceptance.custom-control-valid.test.ts +5 -3
  1096. package/templates/starter/src/app/starter-acceptance.image-video-export-settings.test.ts +5 -6
  1097. package/templates/starter/src/app/starter-acceptance.interaction-ownership.test.ts +408 -0
  1098. package/templates/starter/src/app/starter-acceptance.keyframes.test.ts +3 -2
  1099. package/templates/starter/src/app/starter-acceptance.layers.test.ts +2 -0
  1100. package/templates/starter/src/app/starter-acceptance.media-upload.fixtures.ts +34 -4
  1101. package/templates/starter/src/app/starter-acceptance.media-upload.test.ts +225 -2
  1102. package/templates/starter/src/app/starter-acceptance.orientation-gizmo.test.ts +265 -0
  1103. package/templates/starter/src/app/starter-acceptance.output-export-rules.test.ts +14 -24
  1104. package/templates/starter/src/app/starter-acceptance.persistence-coverage.test.ts +50 -0
  1105. package/templates/starter/src/app/starter-acceptance.product-output-export.test.ts +7 -7
  1106. package/templates/starter/src/app/starter-acceptance.product-readiness.test.ts +2 -0
  1107. package/templates/starter/src/app/starter-acceptance.product-worklog.test.ts +1 -7
  1108. package/templates/starter/src/app/starter-acceptance.range-slider-rules.test.ts +3 -4
  1109. package/templates/starter/src/app/starter-acceptance.reference-foundation.test.ts +2 -2
  1110. package/templates/starter/src/app/starter-acceptance.render-scale.test.ts +305 -0
  1111. package/templates/starter/src/app/starter-acceptance.schema-test-utils.ts +1 -1
  1112. package/templates/starter/src/app/starter-acceptance.section-cohesion.test.ts +5 -5
  1113. package/templates/starter/src/app/starter-acceptance.section-dependencies.test.ts +11 -5
  1114. package/templates/starter/src/app/starter-acceptance.section-titles.test.ts +4 -5
  1115. package/templates/starter/src/app/starter-acceptance.setup-readiness.test.ts +26 -9
  1116. package/templates/starter/src/app/starter-acceptance.slider-rules.test.ts +9 -7
  1117. package/templates/starter/src/app/starter-acceptance.slider-unit-rules.test.ts +2 -3
  1118. package/templates/starter/src/app/starter-acceptance.text-control-kind.test.ts +3 -4
  1119. package/templates/starter/src/app/starter-acceptance.toggle-pair-layout.test.ts +5 -6
  1120. package/templates/starter/src/app/starter-acceptance.toggle-parameter-layout.test.ts +63 -7
  1121. package/templates/starter/src/app/starter-acceptance.ts +29 -0
  1122. package/templates/starter/src/app/starter-acceptance.video-reference-study.test.ts +3 -3
  1123. package/templates/starter/src/app/starter-acceptance.view-interaction.test.ts +282 -0
  1124. package/templates/starter/src/app/starter-acceptance.worklog-command-authority.test.ts +123 -0
  1125. package/templates/starter/src/app/starter-acceptance.worklog-performance-command-cases.ts +34 -0
  1126. package/templates/starter/src/app/starter-acceptance.worklog-performance-intent-test-utils.ts +98 -0
  1127. package/templates/starter/src/app/starter-acceptance.worklog-performance-intent.test.ts +299 -0
  1128. package/templates/starter/src/app/starter-acceptance.worklog-test-utils.ts +76 -173
  1129. package/templates/starter/src/app/starter-acceptance.worklog.test.ts +92 -114
  1130. package/templates/starter/src/app/starter-automated-runtime-evidence.test.ts +0 -8
  1131. package/templates/starter/src/app/starter-composition.tsx +1 -0
  1132. package/templates/starter/src/app/starter-identity.ts +4 -0
  1133. package/templates/starter/src/app/starter-performance-test-utils.ts +0 -87
  1134. package/templates/starter/src/app/starter-performance.fixture-helper.test.ts +191 -0
  1135. package/templates/starter/src/app/starter-performance.gates.test.ts +385 -39
  1136. package/templates/starter/src/app/starter-performance.ts +8 -13
  1137. package/templates/starter/src/app/starter-schema.test.ts +26 -2
  1138. package/templates/starter/src/app/starter-schema.ts +3 -0
  1139. package/templates/starter/src/app/starter-verification-impact.json +15 -0
  1140. package/templates/starter/src/app/test-evidence/browser-performance-contract.ts +387 -0
  1141. package/templates/starter/src/app/test-evidence/browser-performance-measurement-contract.ts +258 -0
  1142. package/templates/starter/src/app/test-evidence/browser-runtime-contract.ts +31 -2
  1143. package/templates/starter/src/router.tsx +3 -0
  1144. package/templates/starter/src/routes/index.tsx +3 -0
  1145. package/templates/starter/tsconfig.json +7 -1
  1146. package/templates/ui/components/composites/tabs.tsx +10 -0
  1147. package/templates/ui/components/controls/actions/actions-control.tsx +17 -1
  1148. package/templates/ui/components/controls/actions/index.ts +1 -0
  1149. package/templates/ui/components/controls/boolean/boolean-controls.tsx +5 -0
  1150. package/templates/ui/components/controls/file-drop/file-drop-control.test.tsx +96 -0
  1151. package/templates/ui/components/controls/file-drop/file-drop-control.tsx +325 -104
  1152. package/templates/ui/components/controls/file-drop/file-drop-empty-state.tsx +51 -17
  1153. package/templates/ui/components/controls/file-drop/file-drop-file-list.tsx +85 -61
  1154. package/templates/ui/components/controls/file-drop/file-drop-folder-input.tsx +39 -0
  1155. package/templates/ui/components/controls/file-drop/file-drop-image-grid.tsx +64 -43
  1156. package/templates/ui/components/controls/file-drop/file-drop-presentation-messages.tsx +57 -0
  1157. package/templates/ui/components/controls/file-drop/file-drop-presentation.test.ts +58 -0
  1158. package/templates/ui/components/controls/file-drop/{file-drop-model.tsx → file-drop-presentation.tsx} +128 -2
  1159. package/templates/ui/components/controls/file-drop/file-drop-single-preview.tsx +32 -25
  1160. package/templates/ui/components/controls/file-drop/file-drop-types.ts +99 -8
  1161. package/templates/ui/components/controls/file-drop/index.ts +5 -1
  1162. package/templates/ui/components/controls/font-picker/font-catalog.node-import.test.ts +24 -0
  1163. package/templates/ui/components/controls/font-picker/font-catalog.ts +1 -1
  1164. package/templates/ui/components/controls/index.ts +7 -0
  1165. package/templates/ui/components/controls/tabs/index.ts +4 -0
  1166. package/templates/ui/components/controls/tabs/tabs-control.tsx +166 -0
  1167. package/templates/ui/components/panel/panel-section.tsx +6 -1
  1168. package/templates/ui/components/panel/panel.tsx +6 -2
  1169. package/templates/ui/components/primitives/index.ts +1 -0
  1170. package/templates/ui/components/primitives/scroll-fade-render.tsx +11 -2
  1171. package/templates/ui/components/primitives/scroll-fade-types.ts +2 -0
  1172. package/templates/ui/components/primitives/scroll-fade.test.tsx +63 -0
  1173. package/templates/ui/components/primitives/scroll-fade.tsx +2 -0
  1174. package/templates/ui/index.ts +1 -0
  1175. package/templates/runtime/react/controls-panel/layout/controls-panel-collapse-storage.ts +0 -131
  1176. package/templates/runtime/testing/performance-browser-policy.test.ts +0 -81
  1177. package/templates/runtime/testing/performance-browser-policy.ts +0 -102
  1178. package/templates/runtime/testing/performance-budget-validation.ts +0 -84
  1179. package/templates/runtime/testing/performance-control-classification.test.ts +0 -106
  1180. package/templates/runtime/testing/performance-coverage-context.ts +0 -44
  1181. package/templates/runtime/testing/performance-coverage-renderer-policy.ts +0 -221
  1182. package/templates/runtime/testing/performance-coverage-scenario-policy.ts +0 -147
  1183. package/templates/runtime/testing/performance-coverage-target-policy.ts +0 -121
  1184. package/templates/runtime/testing/performance-export-coverage.test.ts +0 -234
  1185. package/templates/runtime/testing/performance-fixture-load-profile.test.ts +0 -360
  1186. package/templates/runtime/testing/performance-fixture-media.test.ts +0 -80
  1187. package/templates/runtime/testing/performance-fixture-stress.test.ts +0 -314
  1188. package/templates/runtime/testing/performance-fixture-validation.ts +0 -255
  1189. package/templates/runtime/testing/performance-fixture-values.ts +0 -275
  1190. package/templates/runtime/testing/performance-fixture-workload.test.ts +0 -140
  1191. package/templates/runtime/testing/performance-load-profile-validation.ts +0 -467
  1192. package/templates/runtime/testing/performance-renderer-coverage.test.ts +0 -325
  1193. package/templates/runtime/testing/performance-renderer-pipeline-coverage.test.ts +0 -115
  1194. package/templates/runtime/testing/performance-renderer-pipeline-interactions.test.ts +0 -201
  1195. package/templates/runtime/testing/performance-renderer-pipeline-passes.test.ts +0 -247
  1196. package/templates/runtime/testing/performance-renderer-technique.test.ts +0 -275
  1197. package/templates/runtime/testing/performance-renderer-validation.ts +0 -2
  1198. package/templates/runtime/testing/performance-scenario-coverage.test.ts +0 -303
  1199. package/templates/runtime/testing/performance-schema-derived-workloads.test.ts +0 -231
  1200. package/templates/runtime/testing/performance-test-fixtures/scenarios.ts +0 -172
  1201. package/templates/runtime/testing/performance-test-fixtures/stress-fixtures.ts +0 -133
  1202. package/templates/starter/e2e/performance-render-scale-helpers.ts +0 -55
  1203. package/templates/starter/scripts/check-ai-skills.mjs +0 -136
  1204. package/templates/starter/scripts/check-ai-skills.test.mjs +0 -64
  1205. package/templates/starter/scripts/toolcraft-product-boundary-ast-utils.mjs +0 -23
  1206. package/templates/starter/scripts/toolcraft-product-dependency-graph.mjs +0 -176
  1207. package/templates/starter/scripts/toolcraft-product-dependency-graph.test.mjs +0 -196
  1208. package/templates/starter/src/app/starter-acceptance.video-export-test-utils.ts +0 -37
  1209. package/templates/starter/src/app/starter-performance.budgets.test.ts +0 -374
  1210. package/templates/starter/src/app/starter-performance.renderer-source.test.ts +0 -136
  1211. package/templates/starter/src/app/starter-performance.renderer-technique.test.ts +0 -291
  1212. package/templates/starter/src/app/starter-performance.scenarios.test.ts +0 -355
@@ -8,15 +8,15 @@ Edit `src/app/app-schema.ts` as the public product surface. Use `defineToolcraft
8
8
 
9
9
  Top-level schema fields:
10
10
 
11
- | Field | Purpose | Detailed rules |
12
- | --- | --- | --- |
13
- | `canvas` | Product workspace, output size, upload/drop support, render scale. | `core/runtime-boundary.md`, `core/setup-export.md`, `core/media-upload.md` |
14
- | `media` | Predefined attached files/images that appear in `fileDrop`. | `core/media-upload.md` |
15
- | `panels` | Controls, layers, timeline. | `core/runtime-boundary.md`, `core/timeline-animation.md` |
16
- | `toolbar` | History, radar, theme, zoom. | `assembly-workflow.md` |
17
- | `persistence` | Intentional reload persistence for runtime slices. | `performance.md`, `acceptance-testing.md` |
18
- | `settingsTransfer` | Runtime-owned Export Settings / Import Settings identity. | `core/setup-export.md` |
19
- | `panelActions` | Sticky product delivery actions such as export, copy, generate, apply. | `core/setup-export.md`, `core/control-selection.md` |
11
+ | Field | Purpose | Detailed rules |
12
+ | ------------------ | ---------------------------------------------------------------------- | -------------------------------------------------------------------------- |
13
+ | `canvas` | Product workspace, output size, upload/drop support, render scale. | `core/runtime-boundary.md`, `core/setup-export.md`, `core/media-upload.md` |
14
+ | `media` | Predefined attached files, images, and models shown in `fileDrop`. | `core/media-upload.md` |
15
+ | `panels` | Controls, layers, timeline. | `core/runtime-boundary.md`, `core/timeline-animation.md` |
16
+ | `toolbar` | History, radar, theme, zoom. | `assembly-workflow.md` |
17
+ | `persistence` | Intentional reload persistence for runtime slices. | `performance.md`, `acceptance-testing.md` |
18
+ | `settingsTransfer` | Runtime-owned Export Settings / Import Settings identity. | `core/setup-export.md` |
19
+ | `panelActions` | Sticky product delivery actions such as export, copy, generate, apply. | `core/setup-export.md`, `core/control-selection.md` |
20
20
 
21
21
  Schema controls always bind to a `target`, use `defaultValue` for reset behavior, and include `performanceRole` / `performanceReason` on visible non-action controls. Use built-in control `type` values before `controlRenderers`.
22
22
 
@@ -24,32 +24,105 @@ Schema controls always bind to a `target`, use `defaultValue` for reset behavior
24
24
 
25
25
  Canvas sizing modes:
26
26
 
27
- - `editable-output`: product/export apps. Runtime `Setup` shows `Aspect ratio`, `Canvas width`, `Canvas height`, optional `Resolution scale`, and optional `Timeline`.
27
+ - `editable-output`: product/export apps. Runtime `Setup` shows Background beside Infinity canvas, then Background color, `Aspect ratio`, `Canvas width`, `Canvas height`, optional `Resolution scale`, and finally optional `Timeline`. With the standard Background pair, Background off restores finite mode and disables Infinity; an enabled infinite viewport uses the selected Background color.
28
28
  - `intrinsic-media`: explicit media-viewer/source-native products where imported media intentionally owns `canvas.size`.
29
29
  - `fixed-output`: non-product/internal fixtures where users must not edit output size.
30
30
 
31
31
  Product-output, exportable, shader, procedural, and reference-clone apps use `editable-output`. Uploaded background/source images inside a product canvas also use `editable-output`: keep the current canvas size and render the image as cover/crop inside current canvas bounds.
32
32
 
33
- Use `canvas.renderScale: true` only for non-vector raster previews such as Canvas 2D, WebGL, or WebGPU. Do not enable it for DOM/SVG/vector-native previews.
33
+ `canvas.mode` is runtime state with values `"finite"` and `"infinite"`; it is not a second schema sizing mode. `canvas.infinity` is the reserved built-in Setup target. Infinite mode preserves `canvas.size` only for later finite restoration and never uses that dormant size for layout or export.
34
+
35
+ Editable-output apps may opt into Infinity for a fresh workspace and Reset with
36
+ `canvas.sizing: { defaultMode: "infinite", mode: "editable-output" }`. Omitting
37
+ `defaultMode` keeps the runtime default finite. A valid persisted or explicitly
38
+ provided initial canvas mode takes precedence over the schema default.
39
+
40
+ Custom product output declares bounds on the composition:
41
+
42
+ ```tsx
43
+ export const appComposition: ToolcraftAppComposition = {
44
+ canvasContent: <ProductCanvas />,
45
+ sceneBoundsProvider: ({ state, timeRange }) => [
46
+ getVisibleProductSceneRect(state, timeRange),
47
+ ],
48
+ schema: appSchema,
49
+ };
50
+ ```
51
+
52
+ The provider returns world-space `{ x, y, width, height }` rectangles. Runtime unions them once with visible image/model frames. It is called only for infinite export; video passes the requested time range so the provider can return one complete animation envelope. Product code does not read DOM bounds or the dormant finite size.
53
+
54
+ Use `canvas.renderScale: true` only for non-vector raster previews such as Canvas 2D, WebGL, or WebGPU. Do not enable it for DOM/SVG/vector-native previews. Enabling it requires one browser runtime acceptance row targeting `canvas.renderScale` with `renderScaleCoverage.kind: "selected-backing-pixels"` and exact sorted states `["interaction", "steady"]`, plus `"playback"` when timeline is enabled. The fixed `canvas-render-scale-backing` recipe proves actual backing pixels rather than timing.
34
55
 
35
56
  ## Media Defaults
36
57
 
37
- Use `media.defaultAssets` for predefined files, source images, masks, symbol sets, or background images:
58
+ Use `media.defaultAssets` for predefined files, images, or model packages with complete local appearance dependencies:
38
59
 
39
60
  ```ts
40
61
  media: {
41
62
  defaultAssets: [
42
63
  {
43
64
  id: "default-source",
44
- name: "source.png",
65
+ assetKind: "image",
66
+ dataUrl: "data:image/png;base64,...",
67
+ fileName: "source.png",
45
68
  sourceTarget: "source.image",
46
- url: "/assets/source.png",
69
+ },
70
+ {
71
+ id: "default-model",
72
+ assetKind: "model",
73
+ fileName: "scene.gltf",
74
+ sourceTarget: "source.model",
75
+ sourceFiles: [
76
+ {
77
+ dataUrl: "data:model/gltf+json;base64,...",
78
+ path: "scene/scene.gltf",
79
+ },
80
+ {
81
+ dataUrl: "data:application/octet-stream;base64,...",
82
+ path: "scene/geometry.bin",
83
+ },
84
+ ],
47
85
  },
48
86
  ],
49
87
  }
50
88
  ```
51
89
 
52
- `sourceTarget` must match a `fileDrop` control target. Runtime shows the asset as an attached file, users can remove it, and Reset restores it.
90
+ `sourceTarget` must match a compatible `fileDrop` control target. Runtime shows the asset as an attached file, users can remove it, and Reset restores it. Model defaults require `assetKind: "model"`, a root `fileName`, and complete local `sourceFiles`; each source uses a serializable `dataUrl` plus its bundle-relative `path`. Runtime restores default models through the same validation, analysis, repair, repository, and rendering pipeline as a user upload. Persisted empty media remains empty until Reset and must not silently resurrect defaults.
91
+
92
+ For a multi-item `fileDrop`, `recommendedMaxItems` is advisory. `hardMaxItems`, when present, must be a finite nonnegative safe integer and is enforced before decode or storage allocation. Additive imports count current assets with the same `sourceTarget` plus the incoming logical batch; replacement imports count only the incoming batch.
93
+
94
+ ## Model FileDrop
95
+
96
+ Declare appearance-preserving 3D import through the built-in control:
97
+
98
+ ```ts
99
+ model: {
100
+ type: "fileDrop",
101
+ assetKind: "model",
102
+ target: "source.model",
103
+ label: "Model",
104
+ topologyProfile: "realtime-mesh",
105
+ modelFormats: ["glb", "gltf", "fbx", "obj", "stl", "ply"],
106
+ modelLimits: {
107
+ maxTriangles: 1_000_000,
108
+ },
109
+ performanceRole: "workload",
110
+ performanceReason: "Imported topology controls decode, analysis, repair, and render cost.",
111
+ }
112
+ ```
113
+
114
+ `modelFormats` may narrow the production adapters but cannot advertise an unavailable format. `modelLimits` may narrow normalized runtime admission limits; do not widen protected ceilings in product code. `topologyProfile` is `"realtime-mesh"` or `"solid-mesh"`. Model upload is one package (`multiple: false`): a standalone root, a folder batch with relative paths, or one bounded ZIP. Runtime preserves the supported authored appearance subset, selects the first normalized supported root, and uses the Blender-compatible fallback only when authored appearance is absent. Product code does not add loaders, topology state, repair actions, material reconstruction, or a second model store/cache.
115
+
116
+ Composition declares the presentation owner:
117
+
118
+ ```ts
119
+ export const appComposition: ToolcraftAppComposition = {
120
+ modelPresentation: { mode: "runtime" },
121
+ schema: appSchema,
122
+ };
123
+ ```
124
+
125
+ For a true custom model canvas, use `mode: "custom"` with unique `{ id, sourceTarget, orientationTarget? }` declarations and mount `useToolcraftModelPresentationConsumer` for each declaration. Custom consumers acquire and release presentation leases; they never parse source files or call format loaders. `renderDefaultCanvasMedia: false` does not suppress runtime model presentation.
53
126
 
54
127
  ## Panels
55
128
 
@@ -72,36 +145,36 @@ toolbar: {
72
145
  }
73
146
  ```
74
147
 
75
- History owns undo/redo and keyboard shortcuts. Do not add route-local undo/redo listeners.
148
+ History owns undo/redo and keyboard shortcuts. Do not add route-local undo/redo listeners. Standard shortcuts operate from focused non-text controls such as sliders and switches; active text-entry fields retain native text undo until editing ends.
76
149
 
77
150
  ## Control Fields
78
151
 
79
152
  Common control fields:
80
153
 
81
- | Field | Purpose |
82
- | --- | --- |
83
- | `type` | Built-in type or registered custom renderer type. |
84
- | `target` | Runtime state target. |
85
- | `defaultValue` | Initial value and reset value. |
86
- | `label` | Short UI label, `false`, or omitted. |
87
- | `description` | Product-specific help text only when it adds meaning beyond the label. |
88
- | `visibleWhen` | Mode/type/source/include/variant/count visibility. Hidden values are preserved. |
89
- | `orderRole` | Makes section order testable. |
90
- | `semanticGroup` | Language-independent product sub-entity/workflow grouping, required on every control in sections larger than seven controls. |
91
- | `sliderValueKind` | `slider` intent: `"continuous"` or `"discrete"`. |
92
- | `textValueKind` | `text`/`code` intent: `"single-line"`, `"multiline"`, or `"structured"`. |
93
- | `curveIntent` | `curves` composition: `"single-value-map"` or `"color-channels"`. |
94
- | `performanceRole` | `"workload"` or `"responsiveness"` for coverage derivation. |
95
- | `performanceReason` | Why the role fits this app. |
96
- | `commitMode` | `text` controls: `"content"` applies while typing, `"setting"` commits on blur/Enter. |
97
- | `keyframeable` | Timeline/keyframe capability override when structurally needed. |
98
- | `variant` | Component-specific variant. |
154
+ | Field | Purpose |
155
+ | ------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
156
+ | `type` | Built-in type or registered custom renderer type. |
157
+ | `target` | Runtime state target. |
158
+ | `defaultValue` | Initial value and reset value. |
159
+ | `label` | Short UI label, `false`, or omitted. |
160
+ | `description` | Product-specific help text only when it adds meaning beyond the label. |
161
+ | `visibleWhen` | Mode/type/source/include/variant/count visibility. Hidden values are preserved. |
162
+ | `orderRole` | Makes section order testable. |
163
+ | `semanticGroup` | Language-independent product sub-entity/workflow grouping, required on every control in sections larger than seven controls. |
164
+ | `sliderValueKind` | `slider` intent: `"continuous"` or `"discrete"`. |
165
+ | `textValueKind` | `text`/`code` intent: `"single-line"`, `"multiline"`, or `"structured"`. |
166
+ | `curveIntent` | `curves` composition: `"single-value-map"` or `"color-channels"`. |
167
+ | `performanceRole` | `"workload"` or `"responsiveness"` for coverage derivation. |
168
+ | `performanceReason` | Why the role fits this app. |
169
+ | `commitMode` | `text` controls: `"content"` applies while typing, `"setting"` commits on blur/Enter. |
170
+ | `keyframeable` | Timeline/keyframe capability override when structurally needed. |
171
+ | `variant` | Component-specific variant. |
99
172
 
100
173
  Use `visibleWhen` for product availability. Do not use `disabled`, `disabledWhen`, or inert visible controls for generated product branches.
101
174
 
102
175
  Conditions support `equals`, `notEquals`, `oneOf`, `notOneOf`, `greaterThan`, `greaterThanOrEqual`, `lessThan`, and `lessThanOrEqual`.
103
176
 
104
- Reserved runtime targets include `runtime.settingsTransfer`, `canvas.aspectRatio`, `canvas.size.width`, `canvas.size.height`, `canvas.renderScale`, and `panels.timeline.extended`. Product sections must not declare those controls.
177
+ Reserved runtime targets include `runtime.settingsTransfer`, `canvas.infinity`, `canvas.aspectRatio`, `canvas.size.width`, `canvas.size.height`, `canvas.renderScale`, and `panels.timeline.extended`. Product sections must not declare those controls.
105
178
 
106
179
  ## Built-In Control Types
107
180
 
@@ -116,6 +189,7 @@ Reserved runtime targets include `runtime.settingsTransfer`, `canvas.aspectRatio
116
189
  | `code` | `CodeTextarea` |
117
190
  | `select` | `Select` |
118
191
  | `segmented` | `Segmented` |
192
+ | `tabs` | `TabsControl` |
119
193
  | `switch` | `Switch` |
120
194
  | `checkbox` | `Checkbox` |
121
195
  | `actions` | `Actions` |
@@ -124,6 +198,7 @@ Reserved runtime targets include `runtime.settingsTransfer`, `canvas.aspectRatio
124
198
  | `colorOpacity` | `ColorOpacity` |
125
199
  | `palette` | `Palette` |
126
200
  | `vector` | `Vector` |
201
+ | `orientationGizmo` | `ToolcraftOrientationGizmo` |
127
202
  | `color` | `Color` |
128
203
  | `gradient` | `Gradient` |
129
204
  | `fontPicker` | `FontPicker` |
@@ -137,6 +212,81 @@ Reserved runtime targets include `runtime.settingsTransfer`, `canvas.aspectRatio
137
212
 
138
213
  Use `component-rules.md` for component-specific fit, labels, variants, units, parser behavior, and exceptions. Use `core/control-selection.md` before deciding a custom control is needed.
139
214
 
215
+ `orientationGizmo` uses a non-degenerate `{ position: [x, y, z], up: [x, y, z] }` default, `label: false`, and `keyframeable: false`. Declare one target for the active/selected model and keep it beside at least one visible product control in the semantic model/view section; runtime renders the handle on the canvas rather than in the controls panel. Multiple declarations require statically provable mutually exclusive combined section/control visibility conditions, because runtime permits at most one active orientation handle.
216
+
217
+ ## Product View Interaction
218
+
219
+ Product-mode `starterProductReadiness` always declares the spatial view decision
220
+ before schema controls or renderer code:
221
+
222
+ ```ts
223
+ export const starterProductReadiness: ToolcraftProductReadiness = {
224
+ interactionOwnership: [],
225
+ mode: "product",
226
+ productName: "Model Studio",
227
+ productSummary: "An editable three-dimensional product scene.",
228
+ requestedBehavior: "Rotate the model and export the selected view.",
229
+ viewInteraction: {
230
+ mode: "orbit",
231
+ orientationTargets: ["view.orbit"],
232
+ },
233
+ };
234
+ ```
235
+
236
+ ## Interaction Surface Ownership
237
+
238
+ Product readiness declares `interactionOwnership` before controls or canvas
239
+ interactions. Each operation uses one primary surface while distinct operations
240
+ may edit related state across surfaces:
241
+
242
+ ```ts
243
+ interactionOwnership: [
244
+ {
245
+ alternative: {
246
+ reason: "A panel copy would separate the same drag from visible output.",
247
+ surface: "panel",
248
+ },
249
+ capability: "direct-spatial-edit",
250
+ evidence: {
251
+ detail: "The inspected reference exposes draggable handles over output.",
252
+ source: "reference",
253
+ },
254
+ id: "output-position-drag",
255
+ reason: "Canvas drag preserves spatial correspondence and immediate feedback.",
256
+ surface: "canvas",
257
+ target: "output.position",
258
+ },
259
+ {
260
+ alternative: {
261
+ reason: "The canvas would obscure output with persistent property chrome.",
262
+ surface: "canvas",
263
+ },
264
+ capability: "property-edit",
265
+ evidence: {
266
+ detail: "A usability comparison keeps non-spatial properties discoverable.",
267
+ source: "usability-analysis",
268
+ },
269
+ id: "output-position-properties",
270
+ reason: "The panel exposes useful properties without duplicating direct drag.",
271
+ surface: "panel",
272
+ target: "output.position",
273
+ },
274
+ ]
275
+ ```
276
+
277
+ Capabilities are `direct-spatial-edit`, `spatial-selection`,
278
+ `structured-selection`, `property-edit`, `precise-value-entry`,
279
+ `collection-edit`, and `command`. Evidence sources are `user-request`,
280
+ `reference`, and `usability-analysis`. Canvas handles and custom interactions
281
+ reference the inventory through acceptance `interactionId`; a built-in panel
282
+ control also references it when its target overlaps a canvas handle.
283
+
284
+ Use `non-spatial` only when no visible three-dimensional scene/model exists.
285
+ Use `fixed-camera` or `timeline-camera` only with `source:
286
+ "explicit-user-request" | "inspected-reference"` and non-empty `evidence`.
287
+ Timeline camera also requires timeline playback/keyframes. Orbit targets must
288
+ exactly match schema `orientationGizmo` targets.
289
+
140
290
  ## Control Section Inventory
141
291
 
142
292
  Before writing `panels.controls.sections`, export `starterControlSectionInventory` beside `starterAcceptance`:
@@ -167,9 +317,9 @@ Video references declare `videoReferenceStudy` before implementation. Animated p
167
317
 
168
318
  ## Export And Actions
169
319
 
170
- Product apps expose delivery through sticky `panelActions`, not canvas UI or ordinary body controls. Still products expose `Export PNG`; animated products expose `Export Video` plus `Export PNG`.
320
+ Product apps expose delivery through sticky `panelActions`, not canvas UI or ordinary body controls. Every product exposes `Export PNG`; products whose requested delivery includes animation also expose `Export Video`. A playback or keyframe timeline may drive interactive preview without inventing video delivery.
171
321
 
172
- Every app with `Export PNG` includes `Image Export` controls with `export.image.format` and `export.image.resolution`. Animated apps also include `Video Export` controls with `export.video.format` and `export.video.resolution`.
322
+ Every app with `Export PNG` includes `Image Export` controls with `export.image.format` and `export.image.resolution`. Apps with `Export Video` also include `Video Export` controls with `export.video.format` and `export.video.resolution`.
173
323
 
174
324
  Use standard helpers:
175
325
 
@@ -181,25 +331,31 @@ Detailed Setup, Background, Image Export, Video Export, sticky action, icon, and
181
331
 
182
332
  ## Persistence
183
333
 
184
- Use persistence only for intentional user-edited state:
334
+ Generated apps persist their runtime workspace locally by default. The resolved base plan contains `"canvas"`, `"panels"`, and `"values"`; enabled timeline, layers, and media capabilities add `"timeline"`, `"layers"`, and `"media"` automatically. Most apps do not need a `persistence` field.
335
+
336
+ Use an explicit localStorage configuration only to customize the key/version or request additional compatible slices:
185
337
 
186
338
  ```ts
187
339
  persistence: {
188
340
  storage: "localStorage",
189
- key: "my-toolcraft-app",
190
- version: 1,
191
- include: ["values", "canvas", "panels"],
341
+ key: "toolcraft:my-app:state:v3",
342
+ version: 3,
343
+ include: ["timeline"], additionalValueTargets: ["composition.layout"],
192
344
  }
193
345
  ```
194
346
 
195
- Add `"timeline"`, `"layers"`, or `"media"` only when those runtime slices should survive reload. If localStorage is enabled, add reload acceptance coverage.
347
+ Explicit `include` augments rather than removes capability-derived slices. Control-backed values persist automatically; `additionalValueTargets` opts product-owned non-control state into persistence after trimming and deduplication, while empty entries and undeclared values remain excluded. `{ storage: "none" }` is the only opt-out; record why losing the workspace on reload is intentional.
348
+
349
+ localStorage contains only small versioned JSON metadata. Image, file, and model bytes live in the Toolcraft binary repository backed by IndexedDB; persisted media records contain resource references, never data URLs. Product code must not read or write either storage API directly. Reset restores schema defaults, Settings Transfer remains the portable JSON boundary, and unavailable binary resources become typed per-asset failures without discarding other restored slices.
350
+
351
+ Every local app declares `persistenceCoverage: "reload"`, `evidence: "persistence-state"`, and `persistenceSlices` exactly equal to the resolved `schema.persistence.include`, then proves the visible workspace after a real browser reload.
196
352
 
197
353
  ## Settings Transfer
198
354
 
199
355
  `settingsTransfer` customizes runtime-owned settings import/export identity:
200
356
 
201
357
  ```ts
202
- settingsTransfer: "auto"
358
+ settingsTransfer: { enabled: "auto", additionalValueTargets: ["composition.layout"] };
203
359
  ```
204
360
 
205
- Allowed values are `"auto"`, `true`, `false`, or `{ enabled, appId, fileName }`. None of these hide mandatory runtime `Setup`; they only affect metadata. Do not implement settings import/export through `panelActions`, hidden file inputs, or route-local handlers.
361
+ Allowed values are `"auto"`, `true`, `false`, or `{ enabled, appId, fileName, additionalValueTargets }`. Control-backed values transfer automatically; `additionalValueTargets` opts product-owned non-control state into settings JSON while undeclared values stay excluded. Transfer and persistence allowlists are independent; both are trimmed and deduplicated during resolution. None of these options hide mandatory runtime `Setup`; do not implement settings import/export through `panelActions`, hidden file inputs, or route-local handlers.
@@ -1,5 +1,9 @@
1
1
  # Toolcraft Workflow
2
2
 
3
+ <!-- toolcraft-performance-lifecycle: first-delivery=functional; later-delivery=functional-targeted; complaint=one-authority-targeted-performance-iteration; full-audit=explicit-only -->
4
+ <!-- toolcraft-performance-iteration: authority=exact-request-evidence+canonical-path-ids; fixture=reachable-development; after-pass=return-app-to-user+stop -->
5
+ <!-- toolcraft-performance-full-authority: automatic=forbidden; recommendation=two-compatible-iterations-or-broad-unlocalizable-problem; command=pnpm verify:perf; authority=explicit-user-request-or-accepted-offer -->
6
+
3
7
  This file is the app-local routing layer for Toolcraft work. It does not replace the detailed contracts; it tells an agent which contract to read and which verification path to use before editing.
4
8
 
5
9
  ## Required Preflight
@@ -13,13 +17,15 @@ Before planning or editing app code, runtime code, controls, canvas, panels, ren
13
17
  - **Runtime/template source**: use root `AGENTS.md` and runtime contracts.
14
18
  3. Classify the task type.
15
19
  4. Read the task-specific docs below.
16
- 5. Choose and record a verification tier before implementation.
20
+ 5. Record the coherent user-visible delivery batch and its focused development checks before implementation.
17
21
 
18
22
  Do not edit implementation files until this preflight is complete.
19
23
 
24
+ Renderer and performance work also completes this pre-code sequence: reachable controls and inputs; workload dimensions and enforced boundaries; pass cost, frequency, lifecycle, and invalidation; render-plan assessment and protected kernel benchmark when required; derived paths and combined fixtures. Keep `src/app/app-verification-impact.json` current while implementing. Development uses impact-derived functional and browser checks without minting delivery evidence. First and later functional delivery run no measured performance; only exact request authority creates one targeted iteration. Full certification is a separate operator/CI action described in the canonical performance docs.
25
+
20
26
  ## Local Contract Authority
21
27
 
22
- The signed local `AGENTS.md` plus `docs/toolcraft/*` are sufficient and mandatory workflow input for a standalone generated app. External workflow skills should be used when available, but missing skills never invalidate `--no-skills` generation and never justify skipping the equivalent local spec, plan, debugging, browser, or verification requirement. `pnpm ai:check` enforces local code health and reports missing external skills as actionable guidance rather than a build failure.
28
+ The signed local `AGENTS.md` plus `docs/toolcraft/*` are sufficient and mandatory workflow input for a standalone generated app. External workflow skills should be used when available, but missing skills never invalidate `--no-skills` generation and never justify skipping the equivalent local spec, plan, debugging, browser, or verification requirement. `pnpm ai:check` enforces local code health and the product AST boundary only; it neither discovers nor validates workflow skill installations.
23
29
 
24
30
  Core modules are required reading when listed by the routing table. Read each listed module fully, one phase at a time. Open exactly one listed document per terminal or tool read, even when several documents belong to the same route and phase. Do not concatenate documents or rely on a truncated excerpt; finish the current phase, then open the next phase when the work reaches it. The signed host and runtime validators enforce platform boundaries, while product organization remains open inside those boundaries.
25
31
 
@@ -46,24 +52,26 @@ Use the smallest route set that covers the changed surface. When a task matches
46
52
 
47
53
  For product app work, update `docs/toolcraft/agent-worklog.md` before reporting completion. Record:
48
54
 
49
- - `Decision Trail` entries for each significant implementation pass, including:
55
+ - one `Decision Trail` entry for each coherent user-visible delivery batch, including:
50
56
  - request;
51
57
  - task type;
52
58
  - user-visible result;
53
59
  - source/reference checked;
54
- - docs/contracts read;
55
- - contract rules applied;
60
+ - docs/contracts read and contract rules applied;
61
+ - typed view interaction mode, evidence, and orientation target mapping when the product has a spatial scene;
62
+ - typed interaction ownership for operations that could live on canvas or in the panel, including evidence, selected surface, rejected duplicate surface, and complementary operations;
56
63
  - decision;
57
64
  - alternatives rejected;
58
65
  - state/output mapping from controls, commands, timeline, layers, media, or renderer to the visible product;
59
- - files changed;
60
- - verification;
61
- - skipped checks with reason;
66
+ - one bare-delivery verification narrative;
62
67
  - risks or follow-ups.
63
- - updated high-level decisions for renderer, timeline, layers, controls, export, and performance when those choices change.
68
+ - for a performance complaint only, an exact request quote and the canonical affected performance path IDs.
69
+ - updated high-level decisions for renderer, view interaction, interaction ownership, timeline, layers, controls, export, and performance when those choices change.
64
70
 
65
71
  If the folder is still the neutral starter, do not invent product decisions. Once it becomes a product, switch the worklog to product mode and keep it concrete.
66
72
 
73
+ Protected receipts, not the worklog, own changed files, the derived plan, executed checks, reports, measurements, and pass/fail evidence. Each Decision Trail entry mentions only that one bare `pnpm verify:delivery` will derive and run the protected proof.
74
+
67
75
  ## Runtime Boundary
68
76
 
69
77
  Use the runtime extension points described in the current contracts:
@@ -78,20 +86,27 @@ Do not recreate controls, panels, toolbar, timeline, layers, canvas shell, or ru
78
86
 
79
87
  Browser verification is outcome-based. Protected helpers attach versioned evidence only after a persistent observable change, an observed fixture application, a decoded non-empty export inspection, a completed output action, an immutable scenario measurement, and its matching budget check. The signed reporter derives required evidence from acceptance and performance config and fails skipped, missing, duplicate, transient, unmeasured, or unbudgeted scenarios.
80
88
 
81
- ## Verification Gate
89
+ ## Automatic Delivery Lifecycle
90
+
91
+ The normal product loop is:
82
92
 
83
- Choose the tier from `AGENTS.md` before editing. Use the tier to decide checks.
93
+ ```text
94
+ assemble/change
95
+ → focused functional feedback
96
+ → one coherent delivery boundary
97
+ → protected functional delivery
98
+ → user evaluation
99
+ ```
84
100
 
85
- - Tier 0-1: targeted docs/typecheck/unit plus focused browser when visual.
86
- - Tier 2: `pnpm verify:quick` plus relevant browser acceptance.
87
- - Tier 3: `pnpm verify:quick`, targeted browser acceptance, and targeted performance scenarios only for touched workload/viewport/export paths.
88
- - Tier 4: run `node scripts/check-toolcraft-integrity.mjs` directly. For the first working product version, run the browser performance checkpoint and record its current-source receipt first, then run `pnpm verify:final`, then start `pnpm dev` for the local URL.
101
+ Use the smallest focused unit and browser checks while implementation is changing. Do not rerun the aggregate, export, or performance matrix after every edit. At the coherent delivery boundary, run one bare `pnpm verify:delivery` and use the automatic sequence:
89
102
 
90
- Run a full performance checkpoint only when:
103
+ 1. **First product delivery:** bare `pnpm verify:delivery` proves complete product contracts, performs one production build, runs full functional acceptance, and runs no measured performance.
104
+ 2. **Later functional-targeted delivery:** bare `pnpm verify:delivery` compares the immediate previous and current semantic functional proof models. It selects exact changed acceptance contracts, their direct owners and domains, and tests reached through the affected product-unit dependency graph.
105
+ 3. **Performance complaint:** record domain authority in the worklog—an exact request quote plus canonical affected path IDs—then run one bare `pnpm verify:delivery`. It executes one targeted iteration against the reachable development fixture, returns the verified app, and waits for user evaluation.
106
+ 4. **Full audit:** only an explicit operator request or accepted offer authorizes `pnpm verify:perf`. It performs one fresh build and the complete maximum-fixture performance matrix without advancing the delivery anchor.
91
107
 
92
- - the first working version of the app exists;
93
- - the user explicitly asks to optimize performance, fix lag, remove jank, speed up animation, stabilize drag/zoom, or otherwise complains about performance.
108
+ The unchanged `sourceHash` fast path does not collect the catalog, dependency graph, or functional proof model and does not execute proof. For a changed source, the current catalog, input roles, ownership inventory, and semantic model are collected once and remain the immutable basis for that delivery plan. `workflow-observation.md` is a post-delivery summary, not execution authority, so it stays outside this hash; `agent-worklog.md` remains included.
94
109
 
95
- Fast feature loops after the first working version do not run the full performance suite by default. Renderer, canvas, animation, export, timeline, layers, `canvas.renderScale`, bug fixes, and performance-sensitive controls still need targeted functional/browser checks first, plus targeted performance scenarios only when they directly exercise the touched path. Record any skipped full performance run and reason in the worklog.
110
+ After two consecutive compatible targeted iterations, offer the slower full audit if the user remains unsatisfied. A complaint, filename, or touched subsystem never authorizes it. Canonical classification details, failure behavior, and evidence wording live in `core/performance.md` and `performance.md`.
96
111
 
97
- The app is not complete when required checks are failed, incomplete, pending, blocked, or listed as skipped. Run the integrity checker directly before the final gate so verification does not depend only on mutable package-script dispatch. First working product delivery runs `pnpm verify:perf` before `pnpm verify:final`; the protected Playwright checkpoint records the machine receipt, while agent-controlled browser work remains targeted diagnostic evidence. `verify:final` rejects missing or stale receipts. After the first working version, use the typed `pnpm verify:perf:record-exemption -- --tier=<0|1|2>` path only for a post-first-working non-performance edit backed by a prior passed receipt.
112
+ The app is not complete when required checks are failed, incomplete, pending, blocked, or listed as skipped. Resolve benchmark requirements with the protected internal kernel check before accepting the renderer. The delivery runner executes integrity and lifecycle-specific proof atomically, binds evidence to current source, and advances the delivery anchor only after success. Product prose and command arguments cannot select or broaden that proof.
@@ -1,10 +1,6 @@
1
1
  import { expect, test } from "@playwright/test";
2
- import type { ToolcraftPerformanceConfig } from "@repo/toolcraft-runtime";
3
-
4
- import { parseToolcraftBrowserRuntimeEvidence } from "../src/app/test-evidence/browser-runtime-contract";
5
2
  import { expectToolcraftExportedArtifact } from "./browser-acceptance-outcome-helpers";
6
3
  import {
7
- dragToolcraftSliderToPerformanceStressValue,
8
4
  expectToolcraftSegmentedControlCellsPreservePadding,
9
5
  getToolcraftFieldByLabel,
10
6
  } from "./performance-helpers";
@@ -49,56 +45,6 @@ test("performance helpers match control labels literally", async ({ page }) => {
49
45
  );
50
46
  });
51
47
 
52
- test("slider stress helper applies the declared value and emits runtime evidence", async ({
53
- page,
54
- }, testInfo) => {
55
- await page.setContent(`
56
- <div data-slot="toolcraft-runtime-app">
57
- <div class="contents" data-toolcraft-control-target="density.value">
58
- <div data-slot="field">Density
59
- <input data-slot="slider" role="slider" type="range" min="0" max="10" value="0" style="width:200px;height:20px;" />
60
- </div>
61
- </div>
62
- </div>
63
- `);
64
- const config = {
65
- rendererStrategy: "none",
66
- rendererWorkload: "none",
67
- scenarios: [{
68
- automated: true,
69
- automatedTestName: "perf: density stress",
70
- browser: true,
71
- browserTestName: "browser perf: density stress",
72
- budget: { maxInteractionMs: 500 },
73
- expectedObservable: "Density drag completes.",
74
- fixture: "Density stress fixture.",
75
- id: "density-stress",
76
- interaction: "control-drag",
77
- stressFixture: { kind: "max-value", reason: "Maximum density.", value: 9 },
78
- target: "density.value",
79
- workload: true,
80
- }],
81
- usesCustomRenderer: false,
82
- workloadTargets: ["density.value"],
83
- } as const satisfies ToolcraftPerformanceConfig;
84
-
85
- await dragToolcraftSliderToPerformanceStressValue(
86
- page,
87
- "Density",
88
- config,
89
- "density-stress",
90
- );
91
-
92
- expect(
93
- testInfo.attachments.map((attachment) =>
94
- parseToolcraftBrowserRuntimeEvidence(attachment)?.evidenceType,
95
- ),
96
- ).toEqual(expect.arrayContaining([
97
- "performance-control-drag",
98
- "performance-stress-fixture",
99
- ]));
100
- });
101
-
102
48
  test("export acceptance rejects a verifier that does not return an artifact observation", async () => {
103
49
  await expect(
104
50
  expectToolcraftExportedArtifact(
@@ -0,0 +1,86 @@
1
+ import { test } from "@playwright/test";
2
+
3
+ import {
4
+ expectInfiniteCanvasObservation,
5
+ expectToolcraftInfinityCanvasBackgroundEvidence,
6
+ expectToolcraftInfinityCanvasVideoExportEvidence,
7
+ observeInfinityCanvas,
8
+ } from "./browser-infinity-canvas-evidence";
9
+
10
+ test("toolcraft Infinity canvas observation reads runtime-owned geometry", async ({
11
+ page,
12
+ }) => {
13
+ await page.setContent(`
14
+ <div data-toolcraft-canvas-world data-toolcraft-canvas-offset-x="12" data-toolcraft-canvas-offset-y="-8">
15
+ <div data-toolcraft-canvas-mode="infinite" style="overflow: visible">
16
+ <div data-scene style="position:absolute;left:-320px;top:-200px;width:640px;height:400px"></div>
17
+ </div>
18
+ </div>
19
+ `);
20
+
21
+ expectInfiniteCanvasObservation(
22
+ await observeInfinityCanvas(page, "[data-scene]"),
23
+ { height: 400, width: 640, x: -320, y: -200 },
24
+ );
25
+ });
26
+
27
+ test("toolcraft Infinity canvas video evidence compares decoded envelopes", async () => {
28
+ await expectToolcraftInfinityCanvasVideoExportEvidence(
29
+ {
30
+ finite: {
31
+ byteLength: 1024,
32
+ durationMs: 1000,
33
+ height: 1350,
34
+ width: 1080,
35
+ },
36
+ infinite: {
37
+ byteLength: 768,
38
+ durationMs: 1000,
39
+ height: 640,
40
+ width: 640,
41
+ },
42
+ },
43
+ {
44
+ expectedFiniteSize: { height: 1350, width: 1080 },
45
+ expectedInfiniteSize: { height: 640, width: 640 },
46
+ requirementId: "fixture.infinity.video",
47
+ target: "canvas.infinity",
48
+ },
49
+ );
50
+ });
51
+
52
+ test("toolcraft Infinity canvas background evidence proves viewport color and dependency", async () => {
53
+ await expectToolcraftInfinityCanvasBackgroundEvidence(
54
+ {
55
+ backgroundExcluded: {
56
+ backgroundEnabled: false,
57
+ canvasMode: "finite",
58
+ infinityDisabled: true,
59
+ runtimeBackgroundColor: null,
60
+ viewportBackgroundColor: "rgb(20, 20, 20)",
61
+ viewportMatchesRuntimeColor: false,
62
+ },
63
+ backgroundRestored: {
64
+ backgroundEnabled: true,
65
+ canvasMode: "finite",
66
+ infinityDisabled: false,
67
+ runtimeBackgroundColor: null,
68
+ viewportBackgroundColor: "rgb(20, 20, 20)",
69
+ viewportMatchesRuntimeColor: false,
70
+ },
71
+ infinite: {
72
+ backgroundEnabled: true,
73
+ canvasMode: "infinite",
74
+ infinityDisabled: false,
75
+ runtimeBackgroundColor: "#D4CECA",
76
+ viewportBackgroundColor: "rgb(212, 206, 202)",
77
+ viewportMatchesRuntimeColor: true,
78
+ },
79
+ },
80
+ {
81
+ expectedBackgroundColor: "#D4CECA",
82
+ requirementId: "fixture.background",
83
+ target: "export.includeBackground",
84
+ },
85
+ );
86
+ });