@forgeax/engine-render 0.1.23 → 0.1.24

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 (271) hide show
  1. package/README.md +131 -9
  2. package/dist/assembly/bundler-contract.d.ts +9 -0
  3. package/dist/assembly/bundler-contract.d.ts.map +1 -0
  4. package/dist/assembly/device-feature-admission.d.ts +8 -0
  5. package/dist/assembly/device-feature-admission.d.ts.map +1 -1
  6. package/dist/assembly/extended-lighting-fallback.d.ts +13 -0
  7. package/dist/assembly/extended-lighting-fallback.d.ts.map +1 -0
  8. package/dist/assembly/factory.d.ts +7 -243
  9. package/dist/assembly/factory.d.ts.map +1 -1
  10. package/dist/assembly/material/assembly.d.ts +3 -2
  11. package/dist/assembly/material/assembly.d.ts.map +1 -1
  12. package/dist/assembly/material/standard-layer-projection.d.ts +10 -0
  13. package/dist/assembly/material/standard-layer-projection.d.ts.map +1 -0
  14. package/dist/assembly/material-shader-policy.d.ts +168 -0
  15. package/dist/assembly/material-shader-policy.d.ts.map +1 -0
  16. package/dist/assembly/material-shader-prewarm.d.ts +21 -0
  17. package/dist/assembly/material-shader-prewarm.d.ts.map +1 -0
  18. package/dist/assembly/mesh-ssbo-grow.d.ts +88 -0
  19. package/dist/assembly/mesh-ssbo-grow.d.ts.map +1 -0
  20. package/dist/assembly/recovery/device-loss-fanout.d.ts +14 -0
  21. package/dist/assembly/recovery/device-loss-fanout.d.ts.map +1 -0
  22. package/dist/assembly/recovery/generation.d.ts +46 -0
  23. package/dist/assembly/recovery/generation.d.ts.map +1 -0
  24. package/dist/assembly/recovery/recovery-attempt.d.ts +63 -0
  25. package/dist/assembly/recovery/recovery-attempt.d.ts.map +1 -0
  26. package/dist/assembly/recovery/renderer-recover.d.ts +115 -0
  27. package/dist/assembly/recovery/renderer-recover.d.ts.map +1 -0
  28. package/dist/assembly/renderer-facade.d.ts +10 -0
  29. package/dist/assembly/renderer-facade.d.ts.map +1 -0
  30. package/dist/assembly/renderer-frame-transaction.d.ts +17 -0
  31. package/dist/assembly/renderer-frame-transaction.d.ts.map +1 -1
  32. package/dist/assembly/renderer-helpers.d.ts +19 -0
  33. package/dist/assembly/renderer-helpers.d.ts.map +1 -0
  34. package/dist/assembly/renderer-lifecycle.d.ts +34 -0
  35. package/dist/assembly/renderer-lifecycle.d.ts.map +1 -1
  36. package/dist/assembly/shader-prewarm-policy.d.ts +15 -0
  37. package/dist/assembly/shader-prewarm-policy.d.ts.map +1 -0
  38. package/dist/assembly/webgpu-ready-contract.d.ts +9 -0
  39. package/dist/assembly/webgpu-ready-contract.d.ts.map +1 -0
  40. package/dist/assembly/webgpu-ready.d.ts +55 -0
  41. package/dist/assembly/webgpu-ready.d.ts.map +1 -0
  42. package/dist/assembly/webgpu-renderer.d.ts +152 -0
  43. package/dist/assembly/webgpu-renderer.d.ts.map +1 -0
  44. package/dist/authoring.mjs +1 -1
  45. package/dist/{chunk-4L3P6DT5.mjs → chunk-GE3SDD72.mjs} +37 -5
  46. package/dist/chunk-GE3SDD72.mjs.map +1 -0
  47. package/dist/{chunk-HZUPSYW7.mjs → chunk-KZFTK6DO.mjs} +102 -15
  48. package/dist/chunk-KZFTK6DO.mjs.map +1 -0
  49. package/dist/{chunk-FF7K3FSO.mjs → chunk-Q752SHI5.mjs} +89 -89
  50. package/dist/{chunk-FF7K3FSO.mjs.map → chunk-Q752SHI5.mjs.map} +1 -1
  51. package/dist/{chunk-QODA5UKU.mjs → chunk-RR5L4SRS.mjs} +2 -2
  52. package/dist/chunk-RR5L4SRS.mjs.map +1 -0
  53. package/dist/{chunk-YALPS44A.mjs → chunk-TFH5I7JJ.mjs} +47 -47
  54. package/dist/chunk-TFH5I7JJ.mjs.map +1 -0
  55. package/dist/{chunk-FBC4R44J.mjs → chunk-UQYS7FRM.mjs} +57 -57
  56. package/dist/chunk-UQYS7FRM.mjs.map +1 -0
  57. package/dist/{chunk-4NPUASZR.mjs → chunk-YKB5DQV7.mjs} +161 -19
  58. package/dist/chunk-YKB5DQV7.mjs.map +1 -0
  59. package/dist/{chunk-ZUWKAZ2I.mjs → chunk-YRUYGA4A.mjs} +615 -237
  60. package/dist/chunk-YRUYGA4A.mjs.map +1 -0
  61. package/dist/{chunk-DIYW3M5D.mjs → chunk-Z3YYH2MB.mjs} +2210 -2213
  62. package/dist/chunk-Z3YYH2MB.mjs.map +1 -0
  63. package/dist/construct-renderer.mjs +19841 -16190
  64. package/dist/construct-renderer.mjs.map +1 -1
  65. package/dist/device/device-scope.d.ts +2 -0
  66. package/dist/device/device-scope.d.ts.map +1 -1
  67. package/dist/device/gpu-residency.d.ts +24 -4
  68. package/dist/device/gpu-residency.d.ts.map +1 -1
  69. package/dist/environment/frame.d.ts +5 -0
  70. package/dist/environment/frame.d.ts.map +1 -1
  71. package/dist/environment/inspection.d.ts +7 -0
  72. package/dist/environment/inspection.d.ts.map +1 -1
  73. package/dist/environment/lifecycle.d.ts +20 -2
  74. package/dist/environment/lifecycle.d.ts.map +1 -1
  75. package/dist/errors/recover.d.ts +58 -2
  76. package/dist/errors/recover.d.ts.map +1 -1
  77. package/dist/errors/render.d.ts +13 -0
  78. package/dist/errors/render.d.ts.map +1 -1
  79. package/dist/extract/contracts.d.ts +899 -0
  80. package/dist/extract/contracts.d.ts.map +1 -0
  81. package/dist/features/host.d.ts +2 -0
  82. package/dist/features/host.d.ts.map +1 -1
  83. package/dist/features/prepared-gpu-work.d.ts +3 -0
  84. package/dist/features/prepared-gpu-work.d.ts.map +1 -1
  85. package/dist/features/prepared-graphics-store.d.ts +2 -0
  86. package/dist/features/prepared-graphics-store.d.ts.map +1 -1
  87. package/dist/gpu-driven/production-raster.d.ts +28 -0
  88. package/dist/gpu-driven/production-raster.d.ts.map +1 -1
  89. package/dist/gpu-scene.d.ts +1 -0
  90. package/dist/gpu-scene.d.ts.map +1 -1
  91. package/dist/ibl/IblPipelineCache.d.ts +7 -6
  92. package/dist/ibl/IblPipelineCache.d.ts.map +1 -1
  93. package/dist/ibl/skylight-bind-group.d.ts +7 -1
  94. package/dist/ibl/skylight-bind-group.d.ts.map +1 -1
  95. package/dist/index.d.ts +1 -1
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.mjs +6 -6
  98. package/dist/internal.mjs +6 -6
  99. package/dist/light-buffer-layout.d.ts +3 -0
  100. package/dist/light-buffer-layout.d.ts.map +1 -1
  101. package/dist/materials.d.ts +34 -10
  102. package/dist/materials.d.ts.map +1 -1
  103. package/dist/mesh-material-bindings.d.ts +56 -0
  104. package/dist/mesh-material-bindings.d.ts.map +1 -1
  105. package/dist/occlusion-proxy.d.ts +4 -0
  106. package/dist/occlusion-proxy.d.ts.map +1 -0
  107. package/dist/pbr-pipeline.d.ts +32 -9
  108. package/dist/pbr-pipeline.d.ts.map +1 -1
  109. package/dist/points-lines/prepare.d.ts +3 -0
  110. package/dist/points-lines/prepare.d.ts.map +1 -1
  111. package/dist/points-lines/standard-owner.d.ts +33 -0
  112. package/dist/points-lines/standard-owner.d.ts.map +1 -0
  113. package/dist/record/frame-snapshot.d.ts +5 -0
  114. package/dist/record/frame-snapshot.d.ts.map +1 -1
  115. package/dist/record/frame-targets.d.ts.map +1 -1
  116. package/dist/record/frame.d.ts +14 -2
  117. package/dist/record/frame.d.ts.map +1 -1
  118. package/dist/record/main-pass-geometry.d.ts +14 -1
  119. package/dist/record/main-pass-geometry.d.ts.map +1 -1
  120. package/dist/record/main-pass-material.d.ts +7 -17
  121. package/dist/record/main-pass-material.d.ts.map +1 -1
  122. package/dist/record/main-pass.d.ts.map +1 -1
  123. package/dist/record/mesh-ssbo.d.ts +11 -3
  124. package/dist/record/mesh-ssbo.d.ts.map +1 -1
  125. package/dist/record/recovery-pipeline.d.ts +30 -0
  126. package/dist/record/recovery-pipeline.d.ts.map +1 -0
  127. package/dist/record/render-context.d.ts +26 -4
  128. package/dist/record/render-context.d.ts.map +1 -1
  129. package/dist/record/typed-frame-graph.d.ts +1 -1
  130. package/dist/record/typed-frame-graph.d.ts.map +1 -1
  131. package/dist/recovery/render-system-candidate.d.ts +65 -0
  132. package/dist/recovery/render-system-candidate.d.ts.map +1 -0
  133. package/dist/render-contract.d.ts +64 -7
  134. package/dist/render-contract.d.ts.map +1 -1
  135. package/dist/render-system-extract-tail.d.ts +12 -0
  136. package/dist/render-system-extract-tail.d.ts.map +1 -0
  137. package/dist/render-system-extract.d.ts +156 -22
  138. package/dist/render-system-extract.d.ts.map +1 -1
  139. package/dist/render-system.d.ts +128 -4
  140. package/dist/render-system.d.ts.map +1 -1
  141. package/dist/scene/render-scene.d.ts +19 -0
  142. package/dist/scene/render-scene.d.ts.map +1 -1
  143. package/dist/temporal/frame-coordinator.d.ts.map +1 -1
  144. package/dist/temporal/index.mjs +6 -6
  145. package/dist/temporal/taa-history-store.d.ts +15 -1
  146. package/dist/temporal/taa-history-store.d.ts.map +1 -1
  147. package/dist/temporal/transaction.d.ts +5 -0
  148. package/dist/temporal/transaction.d.ts.map +1 -1
  149. package/package.json +20 -20
  150. package/src/__tests__/device-feature-admission.unit.test.ts +6 -0
  151. package/src/__tests__/device-loss-fanout.unit.test.ts +107 -0
  152. package/src/__tests__/device-scope-lifecycle.unit.test.ts +21 -0
  153. package/src/__tests__/environment-generation.integration.test.ts +23 -0
  154. package/src/__tests__/expose-renderer-errors.unit.test.ts +34 -0
  155. package/src/__tests__/factory-contract.integration.test.ts +122 -7
  156. package/src/__tests__/fallback-row-stride-surface.unit.test.ts +4 -1
  157. package/src/__tests__/ibl/face-uniforms.unit.test.ts +2 -0
  158. package/src/__tests__/ibl-residency-publication.unit.test.ts +113 -0
  159. package/src/__tests__/material-contract-inventory.unit.test.ts +24 -9
  160. package/src/__tests__/material-cooked-projection.unit.test.ts +19 -1
  161. package/src/__tests__/material-static-dynamic-route.unit.test.ts +29 -0
  162. package/src/__tests__/material-stride-surface.unit.test.ts +7 -3
  163. package/src/__tests__/materials-standard-contract.unit.test.ts +104 -0
  164. package/src/__tests__/mesh-buffer-usage-surface.unit.test.ts +1 -1
  165. package/src/__tests__/physical-clearcoat.integration.test.ts +89 -0
  166. package/src/__tests__/prepared-gpu-driven-pbr.integration.test.ts +1 -1
  167. package/src/__tests__/prepared-graphics-pipeline-warmup.unit.test.ts +1 -1
  168. package/src/__tests__/recover-error-policy-owner.unit.test.ts +6 -3
  169. package/src/__tests__/recovery-candidate-prepare.contract.test.ts +140 -0
  170. package/src/__tests__/renderer-factory-material-contract.unit.test.ts +85 -18
  171. package/src/__tests__/renderer-frame-generation-fence.integration.test.ts +47 -0
  172. package/src/__tests__/renderer-generation-assembly.unit.test.ts +77 -0
  173. package/src/__tests__/renderer-generation-failure.unit.test.ts +108 -0
  174. package/src/__tests__/renderer-producer-root-matrix.integration.test.ts +33 -0
  175. package/src/__tests__/renderer-recovery-capability-matrix.unit.test.ts +59 -0
  176. package/src/__tests__/renderer-recovery-contract.unit.test.ts +73 -0
  177. package/src/__tests__/renderer-recovery-lifecycle.unit.test.ts +216 -0
  178. package/src/__tests__/renderer-target-history-recovery.integration.test.ts +80 -0
  179. package/src/__tests__/shader-manifest-fixture.ts +13 -16
  180. package/src/__tests__/shader-stage-surface.unit.test.ts +1 -1
  181. package/src/__tests__/standard-layer-projection.unit.test.ts +23 -0
  182. package/src/__tests__/transmission-prewarm.unit.test.ts +95 -85
  183. package/src/__tests__/volumetric-fog-topology.unit.test.ts +3 -1
  184. package/src/assembly/bundler-contract.ts +9 -0
  185. package/src/assembly/device-feature-admission.ts +15 -5
  186. package/src/assembly/extended-lighting-fallback.ts +216 -0
  187. package/src/assembly/factory.ts +81 -10088
  188. package/src/assembly/material/assembly.ts +18 -2
  189. package/src/assembly/material/standard-layer-projection.ts +16 -0
  190. package/src/assembly/material-shader-policy.ts +854 -0
  191. package/src/assembly/material-shader-prewarm.ts +88 -0
  192. package/src/assembly/mesh-ssbo-grow.ts +270 -0
  193. package/src/assembly/recovery/device-loss-fanout.ts +89 -0
  194. package/src/assembly/recovery/generation.ts +141 -0
  195. package/src/assembly/recovery/recovery-attempt.ts +800 -0
  196. package/src/assembly/recovery/renderer-recover.ts +906 -0
  197. package/src/assembly/renderer-facade.ts +342 -0
  198. package/src/assembly/renderer-frame-transaction.ts +45 -0
  199. package/src/assembly/renderer-helpers.ts +99 -0
  200. package/src/assembly/renderer-lifecycle.ts +159 -0
  201. package/src/assembly/shader-prewarm-policy.ts +157 -0
  202. package/src/assembly/webgpu-ready-contract.ts +14 -0
  203. package/src/assembly/webgpu-ready.ts +4079 -0
  204. package/src/assembly/webgpu-renderer.ts +4095 -0
  205. package/src/components/camera.ts +1 -1
  206. package/src/debug-draw-glue.ts +1 -1
  207. package/src/device/device-scope.ts +35 -6
  208. package/src/device/gpu-residency.ts +194 -26
  209. package/src/environment/frame.ts +6 -0
  210. package/src/environment/inspection.ts +10 -0
  211. package/src/environment/lifecycle.ts +114 -8
  212. package/src/errors/recover.ts +76 -5
  213. package/src/errors/render.ts +17 -0
  214. package/src/extract/contracts.ts +974 -0
  215. package/src/features/host.ts +16 -0
  216. package/src/features/prepared-gpu-work.ts +20 -2
  217. package/src/features/prepared-graphics-store.ts +17 -0
  218. package/src/gpu-driven/production-raster.ts +97 -2
  219. package/src/gpu-scene.ts +3 -2
  220. package/src/ibl/IblPipelineCache.ts +134 -50
  221. package/src/ibl/skylight-bind-group.ts +26 -0
  222. package/src/index.ts +9 -1
  223. package/src/light-buffer-layout.ts +3 -0
  224. package/src/materials.ts +262 -45
  225. package/src/mesh-material-bindings.ts +59 -0
  226. package/src/occlusion-proxy.ts +64 -0
  227. package/src/pbr-pipeline.ts +139 -15
  228. package/src/points-lines/__tests__/cache-recovery.unit.test.ts +22 -0
  229. package/src/points-lines/prepare.ts +9 -0
  230. package/src/points-lines/standard-owner.ts +403 -0
  231. package/src/record/__tests__/frame-targets-recovery.unit.test.ts +60 -0
  232. package/src/record/__tests__/main-pass-geometry.unit.test.ts +26 -1
  233. package/src/record/__tests__/mesh-ssbo.unit.test.ts +38 -0
  234. package/src/record/__tests__/recovery-pipeline.unit.test.ts +124 -0
  235. package/src/record/__tests__/sprite-material-abi.unit.test.ts +28 -13
  236. package/src/record/__tests__/standard-pbr-ubo-layout.unit.test.ts +47 -4
  237. package/src/record/__tests__/temporal-payload.unit.test.ts +22 -43
  238. package/src/record/__tests__/typed-frame-graph-plan.unit.test.ts +1 -1
  239. package/src/record/frame-snapshot.ts +15 -0
  240. package/src/record/frame-targets.ts +11 -1
  241. package/src/record/frame.ts +6 -2
  242. package/src/record/helpers.ts +1 -1
  243. package/src/record/main-pass-geometry.ts +230 -5
  244. package/src/record/main-pass-material.ts +316 -209
  245. package/src/record/main-pass-sprite-draws.ts +6 -7
  246. package/src/record/main-pass.ts +94 -6
  247. package/src/record/mesh-ssbo.ts +32 -10
  248. package/src/record/recovery-pipeline.ts +695 -0
  249. package/src/record/render-context.ts +35 -4
  250. package/src/record/typed-frame-graph.ts +45 -1
  251. package/src/record/view-ubo.ts +3 -3
  252. package/src/recovery/render-system-candidate.ts +839 -0
  253. package/src/render-contract.ts +65 -7
  254. package/src/render-system-extract-tail.ts +2983 -0
  255. package/src/render-system-extract.ts +124 -2977
  256. package/src/render-system.ts +868 -659
  257. package/src/scene/render-scene.ts +124 -1
  258. package/src/temporal/frame-coordinator.ts +4 -1
  259. package/src/temporal/taa-history-store.ts +46 -2
  260. package/src/temporal/temporal-view.ts +1 -1
  261. package/src/temporal/transaction.ts +9 -0
  262. package/src/tilemap-chunk-extract-system.ts +1 -1
  263. package/src/transmission/__tests__/standard-transmission.dawn.test.ts +19 -12
  264. package/dist/chunk-4L3P6DT5.mjs.map +0 -1
  265. package/dist/chunk-4NPUASZR.mjs.map +0 -1
  266. package/dist/chunk-DIYW3M5D.mjs.map +0 -1
  267. package/dist/chunk-FBC4R44J.mjs.map +0 -1
  268. package/dist/chunk-HZUPSYW7.mjs.map +0 -1
  269. package/dist/chunk-QODA5UKU.mjs.map +0 -1
  270. package/dist/chunk-YALPS44A.mjs.map +0 -1
  271. package/dist/chunk-ZUWKAZ2I.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"render-scene.d.ts","sourceRoot":"","sources":["../../src/scene/render-scene.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-scene.d.ts","sourceRoot":"","sources":["../../src/scene/render-scene.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"frame-coordinator.d.ts","sourceRoot":"","sources":["../../src/temporal/frame-coordinator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frame-coordinator.d.ts","sourceRoot":"","sources":["../../src/temporal/frame-coordinator.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- export { addStandardSceneDataPass, addTaaResolvePass, aggregateTemporalDemand, createStandardSceneDataTarget, describeTemporalDemand, standardTemporalLaneAdmission, standardTemporalPostOrder } from '../chunk-ZUWKAZ2I.mjs';
1
+ export { addStandardSceneDataPass, addTaaResolvePass, aggregateTemporalDemand, createStandardSceneDataTarget, describeTemporalDemand, standardTemporalLaneAdmission, standardTemporalPostOrder } from '../chunk-YRUYGA4A.mjs';
2
2
  import '../chunk-RXZ3RGOU.mjs';
3
- export { SCENE_DATA_TEMPORAL_V1_DESCRIPTOR, SCENE_DATA_TEMPORAL_V1_SCHEMA, createSceneDataCatalog, isSceneDataTarget, registerSceneDataTarget, sceneDataError, sceneDataTargetAsAttachment, sceneDataTargetOwner, sceneDataTokenMismatch } from '../chunk-YALPS44A.mjs';
4
- import '../chunk-4NPUASZR.mjs';
5
- export { TEMPORAL_JITTER_SAMPLE_COUNT, TemporalFrameCoordinator, classifySceneDataCoverage, createTemporalCoverage, projectTemporalView, scanSceneDataCoverage, snapshotSubmittedTemporalView, temporalJitterSample, temporalViewId } from '../chunk-4L3P6DT5.mjs';
6
- import '../chunk-HZUPSYW7.mjs';
7
- import '../chunk-QODA5UKU.mjs';
3
+ export { SCENE_DATA_TEMPORAL_V1_DESCRIPTOR, SCENE_DATA_TEMPORAL_V1_SCHEMA, createSceneDataCatalog, isSceneDataTarget, registerSceneDataTarget, sceneDataError, sceneDataTargetAsAttachment, sceneDataTargetOwner, sceneDataTokenMismatch } from '../chunk-TFH5I7JJ.mjs';
4
+ import '../chunk-YKB5DQV7.mjs';
5
+ export { TEMPORAL_JITTER_SAMPLE_COUNT, TemporalFrameCoordinator, classifySceneDataCoverage, createTemporalCoverage, projectTemporalView, scanSceneDataCoverage, snapshotSubmittedTemporalView, temporalJitterSample, temporalViewId } from '../chunk-GE3SDD72.mjs';
6
+ import '../chunk-KZFTK6DO.mjs';
7
+ import '../chunk-RR5L4SRS.mjs';
8
8
  //# sourceMappingURL=index.mjs.map
9
9
  //# sourceMappingURL=index.mjs.map
@@ -1,19 +1,32 @@
1
1
  export type TaaHistoryResetReason = 'first-frame' | 'camera-cut' | 'resize' | 'recover' | 'device-generation';
2
2
  export interface TaaHistoryInspection {
3
+ readonly token: number;
4
+ readonly deviceGeneration: number;
5
+ readonly content: 'uninitialized' | 'active';
6
+ readonly fallback: 'neutral-texture';
7
+ readonly requestVersion: number;
3
8
  readonly generation: number;
4
9
  readonly seed: number;
5
10
  readonly attempt: 'none' | 'active' | 'committed' | 'aborted';
6
11
  readonly valid: boolean;
7
12
  readonly resetReason: TaaHistoryResetReason | undefined;
8
13
  }
14
+ export interface TaaHistoryReceipt {
15
+ readonly deviceGeneration: number;
16
+ readonly completed: boolean;
17
+ }
9
18
  export interface TaaHistoryAttempt {
10
19
  readonly generation: number;
11
20
  readonly seed: number;
12
- commit(): void;
21
+ commit(receipt?: TaaHistoryReceipt): void;
13
22
  abort(): void;
14
23
  }
15
24
  /** TAA-only history owner. No global registry or backend handle crosses this boundary. */
16
25
  export declare class TaaHistoryStore {
26
+ private readonly token;
27
+ private deviceGeneration;
28
+ private content;
29
+ private requestVersion;
17
30
  private generation;
18
31
  private seed;
19
32
  private valid;
@@ -22,6 +35,7 @@ export declare class TaaHistoryStore {
22
35
  begin(reason?: TaaHistoryResetReason | undefined): TaaHistoryAttempt;
23
36
  seedHistory(reason?: TaaHistoryResetReason): void;
24
37
  reset(reason: TaaHistoryResetReason): void;
38
+ recoverForGeneration(deviceGeneration: number): void;
25
39
  inspect(): TaaHistoryInspection;
26
40
  }
27
41
  //# sourceMappingURL=taa-history-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"taa-history-store.d.ts","sourceRoot":"","sources":["../../src/temporal/taa-history-store.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAC7B,aAAa,GACb,YAAY,GACZ,QAAQ,GACR,SAAS,GACT,mBAAmB,CAAC;AAExB,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;IAC9D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,qBAAqB,GAAG,SAAS,CAAC;CACzD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,IAAI,IAAI,CAAC;IACf,KAAK,IAAI,IAAI,CAAC;CACf;AAED,0FAA0F;AAC1F,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,WAAW,CAAoC;IAEvD,KAAK,CAAC,MAAM,GAAE,qBAAqB,GAAG,SAAqB,GAAG,iBAAiB;IAyB/E,WAAW,CAAC,MAAM,GAAE,qBAAqC,GAAG,IAAI;IAMhE,KAAK,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI;IAQ1C,OAAO,IAAI,oBAAoB;CAShC"}
1
+ {"version":3,"file":"taa-history-store.d.ts","sourceRoot":"","sources":["../../src/temporal/taa-history-store.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAC7B,aAAa,GACb,YAAY,GACZ,QAAQ,GACR,SAAS,GACT,mBAAmB,CAAC;AAExB,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;IAC9D,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,qBAAqB,GAAG,SAAS,CAAC;CACzD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC1C,KAAK,IAAI,IAAI,CAAC;CACf;AAID,0FAA0F;AAC1F,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsB;IAC5C,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,OAAO,CAAoD;IACnE,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,WAAW,CAAoC;IAEvD,KAAK,CAAC,MAAM,GAAE,qBAAqB,GAAG,SAAqB,GAAG,iBAAiB;IAmC/E,WAAW,CAAC,MAAM,GAAE,qBAAqC,GAAG,IAAI;IAOhE,KAAK,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI;IAS1C,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAWpD,OAAO,IAAI,oBAAoB;CAchC"}
@@ -5,5 +5,10 @@ export interface TemporalFrameCandidate {
5
5
  readonly view: TemporalView;
6
6
  readonly history: TemporalHistory;
7
7
  }
8
+ export interface TemporalGenerationFence {
9
+ readonly capturedGeneration: number;
10
+ readonly currentGeneration: () => number;
11
+ }
12
+ export declare function temporalGenerationIsCurrent(fence: TemporalGenerationFence): boolean;
8
13
  export declare function stageTemporalFrame(candidate: TemporalFrameCandidate): RendererFrameTransaction<TemporalFrameCandidate>;
9
14
  //# sourceMappingURL=transaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/temporal/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;CACnC;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,sBAAsB,GAChC,wBAAwB,CAAC,sBAAsB,CAAC,CAElD"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../src/temporal/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,wBAAwB,EAE9B,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,MAAM,CAAC;CAC1C;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAEnF;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,sBAAsB,GAChC,wBAAwB,CAAC,sBAAsB,CAAC,CAElD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forgeax/engine-render",
3
- "version": "0.1.23",
3
+ "version": "0.1.24",
4
4
  "description": "Canonical ECS render schemas and renderer boundary.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -37,27 +37,27 @@
37
37
  "LICENSE"
38
38
  ],
39
39
  "dependencies": {
40
- "@forgeax/engine-assets-runtime": "0.1.23",
41
- "@forgeax/engine-audio-webaudio": "0.1.23",
42
- "@forgeax/engine-codec": "0.1.23",
43
- "@forgeax/engine-ecs": "0.1.23",
44
- "@forgeax/engine-geometry": "0.1.23",
45
- "@forgeax/engine-graphics-extras": "0.1.23",
46
- "@forgeax/engine-math": "0.1.23",
47
- "@forgeax/engine-pack": "0.1.23",
48
- "@forgeax/engine-plugin": "0.1.23",
49
- "@forgeax/engine-profiler": "0.1.23",
50
- "@forgeax/engine-render-graph": "0.1.23",
51
- "@forgeax/engine-rhi": "0.1.23",
52
- "@forgeax/engine-scene": "0.1.23",
53
- "@forgeax/engine-shader": "0.1.23",
54
- "@forgeax/engine-skinning": "0.1.23",
55
- "@forgeax/engine-types": "0.1.23"
40
+ "@forgeax/engine-assets-runtime": "0.1.24",
41
+ "@forgeax/engine-audio-webaudio": "0.1.24",
42
+ "@forgeax/engine-codec": "0.1.24",
43
+ "@forgeax/engine-ecs": "0.1.24",
44
+ "@forgeax/engine-geometry": "0.1.24",
45
+ "@forgeax/engine-graphics-extras": "0.1.24",
46
+ "@forgeax/engine-math": "0.1.24",
47
+ "@forgeax/engine-pack": "0.1.24",
48
+ "@forgeax/engine-plugin": "0.1.24",
49
+ "@forgeax/engine-profiler": "0.1.24",
50
+ "@forgeax/engine-render-graph": "0.1.24",
51
+ "@forgeax/engine-rhi": "0.1.24",
52
+ "@forgeax/engine-scene": "0.1.24",
53
+ "@forgeax/engine-shader": "0.1.24",
54
+ "@forgeax/engine-skinning": "0.1.24",
55
+ "@forgeax/engine-types": "0.1.24"
56
56
  },
57
57
  "devDependencies": {
58
- "@forgeax/engine-rhi-null": "0.1.23",
59
- "@forgeax/engine-rhi-webgpu": "0.1.23",
60
- "@forgeax/engine-vite-plugin-shader": "0.1.23"
58
+ "@forgeax/engine-rhi-null": "0.1.24",
59
+ "@forgeax/engine-rhi-webgpu": "0.1.24",
60
+ "@forgeax/engine-vite-plugin-shader": "0.1.24"
61
61
  },
62
62
  "forgeax": {
63
63
  "metrics": {
@@ -45,6 +45,12 @@ describe('shared device feature admission', () => {
45
45
  it('requests the largest supported sampled-texture topology for the device', () => {
46
46
  expect(
47
47
  deriveDeviceFeatureAdmission(adapter([], { maxSampledTexturesPerShaderStage: 48 })),
48
+ ).toEqual({
49
+ requiredFeatures: [],
50
+ requiredLimits: { maxSampledTexturesPerShaderStage: 21 },
51
+ });
52
+ expect(
53
+ deriveDeviceFeatureAdmission(adapter([], { maxSampledTexturesPerShaderStage: 20 })),
48
54
  ).toEqual({
49
55
  requiredFeatures: [],
50
56
  requiredLimits: { maxSampledTexturesPerShaderStage: 20 },
@@ -0,0 +1,107 @@
1
+ import type { RhiDevice } from '@forgeax/engine-rhi';
2
+ import { rhi } from '@forgeax/engine-rhi-null';
3
+ import { describe, expect, it } from 'vitest';
4
+ import { attachDeviceLostFanout } from '../assembly/recovery/device-loss-fanout';
5
+ import {
6
+ HealthListenerRegistry,
7
+ LostListenerRegistry,
8
+ RhiErrorListenerRegistry,
9
+ } from '../lifecycle';
10
+
11
+ function deferred<T>(): {
12
+ readonly promise: Promise<T>;
13
+ readonly resolve: (value: T) => void;
14
+ } {
15
+ let resolve!: (value: T) => void;
16
+ const promise = new Promise<T>((next) => {
17
+ resolve = next;
18
+ });
19
+ return { promise, resolve };
20
+ }
21
+
22
+ describe('device loss fan-out generation fence', () => {
23
+ it('counts a late old-generation notification without changing active health', async () => {
24
+ const lost = deferred<{ readonly reason: 'unknown'; readonly message: string }>();
25
+ const lostRegistry = new LostListenerRegistry();
26
+ const errorRegistry = new RhiErrorListenerRegistry();
27
+ const healthRegistry = new HealthListenerRegistry();
28
+ const currentGeneration = 2;
29
+ let staleLossEvents = 0;
30
+ let lostEvents = 0;
31
+ let healthEvents = 0;
32
+ let errorEvents = 0;
33
+ const device = { lost: lost.promise } as unknown as RhiDevice;
34
+ lostRegistry.add(() => {
35
+ lostEvents += 1;
36
+ });
37
+ healthRegistry.add(() => {
38
+ healthEvents += 1;
39
+ });
40
+ errorRegistry.add(() => {
41
+ errorEvents += 1;
42
+ });
43
+
44
+ attachDeviceLostFanout(
45
+ device,
46
+ { rhi },
47
+ {
48
+ lostRegistry,
49
+ errorRegistry,
50
+ healthRegistry,
51
+ generation: 1,
52
+ currentGeneration: () => currentGeneration,
53
+ onStaleLoss: () => {
54
+ staleLossEvents += 1;
55
+ },
56
+ },
57
+ );
58
+
59
+ lost.resolve({ reason: 'unknown', message: 'late retired-device notification' });
60
+ await Promise.resolve();
61
+ await Promise.resolve();
62
+
63
+ expect(currentGeneration).toBe(2);
64
+ expect(staleLossEvents).toBe(1);
65
+ expect(lostEvents).toBe(0);
66
+ expect(healthEvents).toBe(0);
67
+ expect(errorEvents).toBe(0);
68
+ expect(healthRegistry.getLastSnapshot().reason).toBe('alive');
69
+ });
70
+
71
+ it('uses the backend loss projection for deterministic recovery fixtures', async () => {
72
+ const native = deferred<{ readonly reason: 'unknown'; readonly message: string }>();
73
+ const projected = deferred<{ readonly reason: 'unknown'; readonly message: string }>();
74
+ const lostRegistry = new LostListenerRegistry();
75
+ const errorRegistry = new RhiErrorListenerRegistry();
76
+ const healthRegistry = new HealthListenerRegistry();
77
+ let lostEvents = 0;
78
+ lostRegistry.add(() => {
79
+ lostEvents += 1;
80
+ });
81
+ const device = { lost: native.promise } as unknown as RhiDevice;
82
+
83
+ attachDeviceLostFanout(
84
+ device,
85
+ {
86
+ rhi,
87
+ instrumentation: {
88
+ deviceLost: () => projected.promise,
89
+ },
90
+ },
91
+ {
92
+ lostRegistry,
93
+ errorRegistry,
94
+ healthRegistry,
95
+ generation: 0,
96
+ currentGeneration: () => 0,
97
+ },
98
+ );
99
+
100
+ projected.resolve({ reason: 'unknown', message: 'fixture-projected loss' });
101
+ await Promise.resolve();
102
+ await Promise.resolve();
103
+
104
+ expect(lostEvents).toBe(1);
105
+ expect(healthRegistry.getLastSnapshot().reason).toBe('device-lost');
106
+ });
107
+ });
@@ -148,4 +148,25 @@ describe('DeviceScope lifecycle transaction', () => {
148
148
  expect(scope.state).toBe('disposed');
149
149
  expect(scope.resourceDelta()).toBe(0);
150
150
  });
151
+
152
+ it('runs an adopted cleanup once across repeated scope termination', async () => {
153
+ const scope = DeviceScope.create(31, 'renderer');
154
+ let cleanupCount = 0;
155
+ const transaction = new LifecycleTransaction(scope);
156
+ transaction.add({
157
+ kind: 'pipeline',
158
+ create: () => ({ id: 'candidate-pipeline' }),
159
+ cleanup: () => {
160
+ cleanupCount += 1;
161
+ },
162
+ });
163
+
164
+ const result = await transaction.commit();
165
+
166
+ expect(result.ok).toBe(true);
167
+ scope.retire();
168
+ scope.dispose();
169
+ scope.abandon();
170
+ expect(cleanupCount).toBe(1);
171
+ });
151
172
  });
@@ -154,4 +154,27 @@ describe('Environment generation candidate and LKG lifecycle (M2)', () => {
154
154
  expect(recovered.value.generation).not.toBe(old.value.generation);
155
155
  expect(recovered.value.liveHandle).not.toBe(old.value.liveHandle);
156
156
  });
157
+
158
+ it('prepares a recovery root on a detached lifecycle without changing the active owner', async () => {
159
+ const active = new EnvironmentLifecycle(DeviceScope.create(20, 'environment-active'));
160
+ const initial = await active.ensure(frame('sky-active'));
161
+ expect(initial.ok).toBe(true);
162
+ if (!initial.ok) return;
163
+ active.publish(initial.value);
164
+ active.resetForRecover(21);
165
+ const before = active.inspect();
166
+
167
+ const candidateScope = DeviceScope.create(21, 'environment-candidate');
168
+ const candidate = active.createRecoveryCandidate(candidateScope);
169
+ const root = candidate.createRecoveryRoot(candidateScope);
170
+ const recovered =
171
+ (await root.create()) as import('../environment/generation').EnvironmentGeneration;
172
+
173
+ expect(active.inspect()).toEqual(before);
174
+ expect(candidate.inspect().candidate?.generation).toBe(recovered.generation);
175
+
176
+ await root.cleanup(recovered);
177
+ expect(candidate.inspect().candidate).toBeUndefined();
178
+ expect(active.inspect()).toEqual(before);
179
+ });
157
180
  });
@@ -0,0 +1,34 @@
1
+ import { err } from '@forgeax/engine-types';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { exposeRenderer } from '../assembly/factory';
4
+ import type { RendererHostImplementation } from '../assembly/host-contract';
5
+ import { RendererContractFailureError } from '../errors/render';
6
+
7
+ describe('exposeRenderer error projection', () => {
8
+ it('reports an internal draw contract failure as a device operation failure', () => {
9
+ const host = {
10
+ inspect: () => ({ state: 'alive' }),
11
+ subscribeHostEvents: () => () => undefined,
12
+ drawFrame: () =>
13
+ err(
14
+ new RendererContractFailureError(
15
+ 'draw',
16
+ 'the Standard render owner did not submit a command buffer',
17
+ ),
18
+ ),
19
+ } as unknown as RendererHostImplementation;
20
+ const renderer = exposeRenderer(host);
21
+
22
+ const result = renderer.draw({} as never);
23
+
24
+ expect(result.ok).toBe(false);
25
+ if (!result.ok) {
26
+ expect(result.error.code).toBe('device-operation-failed');
27
+ if (result.error.code !== 'device-operation-failed') return;
28
+ expect(result.error.detail.cause).toMatchObject({
29
+ code: 'renderer-contract-failed',
30
+ detail: { operation: 'draw' },
31
+ });
32
+ }
33
+ });
34
+ });
@@ -32,6 +32,7 @@ import { renderLifecycleManifestUrl } from './shader-manifest-fixture';
32
32
 
33
33
  const assemblyDirectory = dirname(fileURLToPath(import.meta.url));
34
34
  const factorySourcePath = resolve(assemblyDirectory, '../assembly/factory.ts');
35
+ const webgpuRendererSourcePath = resolve(assemblyDirectory, '../assembly/webgpu-renderer.ts');
35
36
  const renderTargetHostSourcePath = resolve(assemblyDirectory, '../assembly/render-target-host.ts');
36
37
 
37
38
  function manifestUrl(): string {
@@ -127,7 +128,7 @@ describe('factory contract', () => {
127
128
  });
128
129
 
129
130
  it('forwards the bundler build identity into RenderSystem inspections', () => {
130
- const source = readFileSync(factorySourcePath, 'utf8');
131
+ const source = readFileSync(webgpuRendererSourcePath, 'utf8');
131
132
  expect(source).toContain('get build() {\n return internals.bundler?.build;\n },');
132
133
  });
133
134
 
@@ -1700,6 +1701,15 @@ describe('factory contract', () => {
1700
1701
  expect((await renderer.initialization).ok).toBe(true);
1701
1702
  expect(world.update().ok).toBe(true);
1702
1703
  expect(renderer.draw(input()).ok).toBe(true);
1704
+ expect(renderer.inspect().recovery).toMatchObject({
1705
+ phase: null,
1706
+ fromGeneration: 0,
1707
+ candidateGeneration: 0,
1708
+ attempt: 0,
1709
+ lastOutcome: 'none',
1710
+ rehydratedRoots: 0,
1711
+ staleLossEvents: 0,
1712
+ });
1703
1713
  const beforeLoss = renderer.inspect().bloom;
1704
1714
  const beforeDeviceGeneration = renderer.inspect().temporal.deviceGeneration;
1705
1715
  expect(beforeLoss.state).toBe('active');
@@ -1710,15 +1720,34 @@ describe('factory contract', () => {
1710
1720
  const failed = await renderer.recover();
1711
1721
  expect(failed.ok).toBe(false);
1712
1722
  expect(renderer.health().reason).toBe('device-lost');
1723
+ expect(renderer.inspect().recovery).toMatchObject({
1724
+ phase: null,
1725
+ fromGeneration: 0,
1726
+ candidateGeneration: 1,
1727
+ attempt: 1,
1728
+ lastOutcome: 'failed',
1729
+ rehydratedRoots: 0,
1730
+ staleLossEvents: 0,
1731
+ });
1713
1732
  expect(renderer.inspect().perFramePassNames).toEqual([]);
1714
1733
  expect(renderer.inspect().standardLighting).toBeUndefined();
1715
1734
  const recovered = await renderer.recover();
1716
1735
  expect(recovered.ok).toBe(true);
1717
- // Recovery publishes a device but not a graph. The first post-recovery
1718
- // draw must rebuild both the graph accessors and Standard inspection
1719
- // against the replacement device.
1720
- expect(renderer.inspect().perFramePassNames).toEqual([]);
1721
- expect(renderer.inspect().standardLighting).toBeUndefined();
1736
+ expect(renderer.inspect().recovery).toMatchObject({
1737
+ phase: null,
1738
+ fromGeneration: 0,
1739
+ candidateGeneration: 1,
1740
+ attempt: 2,
1741
+ lastOutcome: 'succeeded',
1742
+ rehydratedRoots: expect.any(Number),
1743
+ staleLossEvents: 0,
1744
+ });
1745
+ expect(renderer.inspect().recovery.rehydratedRoots).toBeGreaterThan(0);
1746
+ // Recovery publishes only after the retained CPU/LKG frame has prepared
1747
+ // the replacement graph and visible residency. The first post-recovery
1748
+ // draw therefore starts with graph accessors and Standard inspection.
1749
+ expect(renderer.inspect().perFramePassNames.length).toBeGreaterThan(0);
1750
+ expect(renderer.inspect().standardLighting).toBeDefined();
1722
1751
  expect(world.update().ok).toBe(true);
1723
1752
  expect(renderer.draw(input()).ok).toBe(true);
1724
1753
  expect(renderer.inspect().perFramePassNames.length).toBeGreaterThan(0);
@@ -1868,7 +1897,11 @@ describe('factory contract', () => {
1868
1897
  await Promise.resolve();
1869
1898
  await Promise.resolve();
1870
1899
  expect(renderer.health().reason).toBe('device-lost');
1871
- expect((await renderer.recover()).ok).toBe(false);
1900
+ const failedRecovery = await renderer.recover();
1901
+ expect(failedRecovery.ok).toBe(false);
1902
+ if (!failedRecovery.ok) {
1903
+ expect(failedRecovery.error.code).toBe('recovery-failed');
1904
+ }
1872
1905
  expect(renderer.health().reason).toBe('device-lost');
1873
1906
  expect(createdReplacementHandles.size).toBeGreaterThan(0);
1874
1907
  expect(
@@ -1907,4 +1940,86 @@ describe('factory contract', () => {
1907
1940
  await renderer.dispose();
1908
1941
  }
1909
1942
  });
1943
+
1944
+ it('reports a structured disposed outcome when recovery is interrupted by dispose', async () => {
1945
+ const adapter = new RhiNullAdapter();
1946
+ const lost = deferred<{ readonly reason: 'unknown'; readonly message: string }>();
1947
+ const recoveryAdapterEntered = deferred<void>();
1948
+ const releaseRecoveryAdapter = deferred<void>();
1949
+ const firstDevice = (await adapter.requestDevice()).unwrap();
1950
+ const lostProxy = new Proxy(firstDevice, {
1951
+ get(target, property) {
1952
+ if (property === 'lost') return lost.promise;
1953
+ const value = Reflect.get(target, property, target);
1954
+ return typeof value === 'function' ? value.bind(target) : value;
1955
+ },
1956
+ });
1957
+ let requestCount = 0;
1958
+ const recoverableRhi = {
1959
+ ...rhi,
1960
+ requestAdapter: async () => {
1961
+ requestCount += 1;
1962
+ if (requestCount === 1) {
1963
+ return ok({
1964
+ features: adapter.features,
1965
+ limits: adapter.limits,
1966
+ requestDevice: async () => ok(lostProxy),
1967
+ } as never);
1968
+ }
1969
+ recoveryAdapterEntered.resolve();
1970
+ await releaseRecoveryAdapter.promise;
1971
+ return ok({
1972
+ features: adapter.features,
1973
+ limits: adapter.limits,
1974
+ requestDevice: async () => ok(firstDevice),
1975
+ } as never);
1976
+ },
1977
+ } as never;
1978
+ const renderer = await constructRenderer(
1979
+ { width: 64, height: 64, getContext: () => null },
1980
+ { rhi: recoverableRhi },
1981
+ { shaderManifestUrl: renderLifecycleManifestUrl() },
1982
+ );
1983
+
1984
+ try {
1985
+ expect((await renderer.initialization).ok).toBe(true);
1986
+ lost.reject({ reason: 'unknown', message: 'forced device loss' });
1987
+ await Promise.resolve();
1988
+ await Promise.resolve();
1989
+ expect(renderer.health().reason).toBe('device-lost');
1990
+
1991
+ const recovery = renderer.recover();
1992
+ await recoveryAdapterEntered.promise;
1993
+ expect(renderer.inspect().recovery.phase).toBe('acquire-adapter');
1994
+ expect((await renderer.dispose()).ok).toBe(true);
1995
+ releaseRecoveryAdapter.resolve();
1996
+
1997
+ const result = await recovery;
1998
+ expect(result.ok).toBe(false);
1999
+ if (!result.ok) {
2000
+ if (result.error.code !== 'recovery-failed') {
2001
+ throw new Error(`Expected recovery-failed, received ${result.error.code}`);
2002
+ }
2003
+ expect(result.error.detail).toMatchObject({
2004
+ phase: 'cleanup',
2005
+ oldGeneration: 0,
2006
+ candidateGeneration: 1,
2007
+ attempt: 1,
2008
+ lastOutcome: 'disposed',
2009
+ rehydratedRoots: 0,
2010
+ staleLossEvents: 0,
2011
+ });
2012
+ }
2013
+ expect(renderer.inspect().recovery).toMatchObject({
2014
+ phase: null,
2015
+ attempt: 1,
2016
+ lastOutcome: 'disposed',
2017
+ rehydratedRoots: 0,
2018
+ staleLossEvents: 0,
2019
+ });
2020
+ } finally {
2021
+ releaseRecoveryAdapter.resolve();
2022
+ await renderer.dispose();
2023
+ }
2024
+ });
1910
2025
  });
@@ -3,7 +3,10 @@ import { describe, expect, it } from 'vitest';
3
3
  import { FALLBACK_BYTES_PER_ROW } from '../ibl/skylight-bind-group';
4
4
 
5
5
  const ownerSource = readFileSync(new URL('../ibl/skylight-bind-group.ts', import.meta.url), 'utf8');
6
- const rendererSource = readFileSync(new URL('../assembly/factory.ts', import.meta.url), 'utf8');
6
+ const rendererSource = readFileSync(
7
+ new URL('../assembly/webgpu-ready.ts', import.meta.url),
8
+ 'utf8',
9
+ );
7
10
 
8
11
  describe('fallback texture row-stride owner', () => {
9
12
  it('keeps both 1x1 fallback upload paths on one owner', () => {
@@ -38,9 +38,11 @@ describe('IBL face uniform RHI contract', () => {
38
38
  const badFace = writeFaceUniforms(device, bufferResult.value, 6, new Float32Array(16));
39
39
  const badMatrix = writeFaceUniforms(device, bufferResult.value, 0, new Float32Array(15));
40
40
  const badSubPass = writePrefilterUniforms(device, bufferResult.value, 30, 0.5, 128);
41
+ const badMipCount = writePrefilterUniforms(device, bufferResult.value, 0, 0.5, 128, 0);
41
42
 
42
43
  expect(badFace).toMatchObject({ ok: false, error: { code: 'webgpu-runtime-error' } });
43
44
  expect(badMatrix).toMatchObject({ ok: false, error: { code: 'webgpu-runtime-error' } });
44
45
  expect(badSubPass).toMatchObject({ ok: false, error: { code: 'webgpu-runtime-error' } });
46
+ expect(badMipCount).toMatchObject({ ok: false, error: { code: 'webgpu-runtime-error' } });
45
47
  });
46
48
  });