@woosh/meep-engine 2.168.1 → 2.169.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (624) hide show
  1. package/README.md +2 -2
  2. package/build/bundle-worker-image-decoder.js +1 -1
  3. package/editor/process/symbolic/make3DSymbolicDisplay.js +1 -1
  4. package/editor/view/ecs/EntityList.js +1 -1
  5. package/editor/view/ecs/components/particles/ParticleLayerController.js +1 -1
  6. package/editor/view/makeEntityDecorators.js +1 -1
  7. package/package.json +1 -1
  8. package/src/REVIEW_2026_08_06/adv-core.md +511 -0
  9. package/src/REVIEW_2026_08_06/adv-gfx.md +480 -0
  10. package/src/REVIEW_2026_08_06/adv-view.md +446 -0
  11. package/src/REVIEW_2026_08_06/api-core.md +296 -0
  12. package/src/REVIEW_2026_08_06/api-engine.md +195 -0
  13. package/src/REVIEW_2026_08_06/bvh-phys-sound-net.md +507 -0
  14. package/src/REVIEW_2026_08_06/core-binary.md +348 -0
  15. package/src/REVIEW_2026_08_06/core-collection.md +376 -0
  16. package/src/REVIEW_2026_08_06/core-math.md +221 -0
  17. package/src/REVIEW_2026_08_06/core-process.md +266 -0
  18. package/src/REVIEW_2026_08_06/core-science.md +223 -0
  19. package/src/REVIEW_2026_08_06/engine-ai-nav.md +279 -0
  20. package/src/REVIEW_2026_08_06/engine-animation.md +167 -0
  21. package/src/REVIEW_2026_08_06/engine-asset.md +166 -0
  22. package/src/REVIEW_2026_08_06/engine-ecs.md +920 -0
  23. package/src/REVIEW_2026_08_06/engine-input.md +197 -0
  24. package/src/REVIEW_2026_08_06/engine-misc.md +248 -0
  25. package/src/REVIEW_2026_08_06/engine-terrain.md +52 -0
  26. package/src/REVIEW_2026_08_06/generation.md +176 -0
  27. package/src/REVIEW_2026_08_06/geom-2d.md +434 -0
  28. package/src/REVIEW_2026_08_06/geom-3d.md +117 -0
  29. package/src/REVIEW_2026_08_06/gfx-gi.md +143 -0
  30. package/src/REVIEW_2026_08_06/gfx-render.md +740 -0
  31. package/src/REVIEW_2026_08_06/gfx-texture.md +690 -0
  32. package/src/REVIEW_2026_08_06/prior-criticals.md +49 -0
  33. package/src/REVIEW_2026_08_06/prior-highs.md +138 -0
  34. package/src/REVIEW_2026_08_06/test-gaps.md +364 -0
  35. package/src/REVIEW_2026_08_06/view.md +667 -0
  36. package/src/REVIEW_2026_08_06.md +610 -0
  37. package/src/core/IdPool.d.ts +2 -2
  38. package/src/core/IdPool.d.ts.map +1 -1
  39. package/src/core/IdPool.js +1 -1
  40. package/src/core/binary/32BitEncoder.d.ts +2 -3
  41. package/src/core/binary/32BitEncoder.d.ts.map +1 -1
  42. package/src/core/binary/32BitEncoder.js +1 -1
  43. package/src/core/binary/BinaryBuffer.d.ts.map +1 -1
  44. package/src/core/binary/BinaryBuffer.js +12 -1
  45. package/src/core/binary/BitImage2.d.ts +5 -1
  46. package/src/core/binary/BitImage2.d.ts.map +1 -1
  47. package/src/core/binary/BitImage2.js +5 -1
  48. package/src/core/bvh2/bvh3/BVH.d.ts +2 -2
  49. package/src/core/bvh2/bvh3/BVH.d.ts.map +1 -1
  50. package/src/core/bvh2/bvh3/BVH.js +1 -1
  51. package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point_filtered.d.ts +2 -2
  52. package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point_filtered.d.ts.map +1 -1
  53. package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point_filtered.js +86 -86
  54. package/src/core/bvh2/traversal/aabb3_detailed_volume_intersection_callback_based.d.ts +2 -2
  55. package/src/core/bvh2/traversal/aabb3_detailed_volume_intersection_callback_based.d.ts.map +1 -1
  56. package/src/core/bvh2/traversal/aabb3_detailed_volume_intersection_callback_based.js +1 -1
  57. package/src/core/bvh8/build/NodeProxy.d.ts.map +1 -1
  58. package/src/core/bvh8/build/NodeProxy.js +314 -308
  59. package/src/core/cache/Cache.d.ts +4 -4
  60. package/src/core/cache/Cache.d.ts.map +1 -1
  61. package/src/core/cache/Cache.js +3 -3
  62. package/src/core/cache/LoadingCache.d.ts +1 -1
  63. package/src/core/cache/LoadingCache.js +2 -2
  64. package/src/core/cache/wtinylfu/CacheWTinylfu.d.ts +2 -2
  65. package/src/core/cache/wtinylfu/CacheWTinylfu.js +2 -2
  66. package/src/core/collection/array/array_index_by_equality.d.ts +2 -2
  67. package/src/core/collection/array/array_index_by_equality.d.ts.map +1 -1
  68. package/src/core/collection/array/array_index_by_equality.js +1 -1
  69. package/src/core/collection/array/array_pick_best_element.d.ts +2 -2
  70. package/src/core/collection/array/array_pick_best_element.d.ts.map +1 -1
  71. package/src/core/collection/array/array_pick_best_element.js +1 -1
  72. package/src/core/collection/array/array_pick_best_elements.d.ts +2 -2
  73. package/src/core/collection/array/array_pick_best_elements.d.ts.map +1 -1
  74. package/src/core/collection/array/array_pick_best_elements.js +1 -1
  75. package/src/core/collection/array/array_set_diff.d.ts +2 -3
  76. package/src/core/collection/array/array_set_diff.d.ts.map +1 -1
  77. package/src/core/collection/array/array_set_diff.js +1 -1
  78. package/src/core/collection/array/array_set_diff_sorting.d.ts +2 -2
  79. package/src/core/collection/array/array_set_diff_sorting.d.ts.map +1 -1
  80. package/src/core/collection/array/array_set_diff_sorting.js +1 -1
  81. package/src/core/collection/array/iterator/ArrayIteratorRandom.d.ts +2 -1
  82. package/src/core/collection/array/iterator/ArrayIteratorRandom.d.ts.map +1 -1
  83. package/src/core/collection/heap/BinaryHeap.d.ts +2 -2
  84. package/src/core/collection/heap/BinaryHeap.d.ts.map +1 -1
  85. package/src/core/collection/heap/BinaryHeap.js +1 -1
  86. package/src/core/collection/list/List.d.ts +32 -17
  87. package/src/core/collection/list/List.d.ts.map +1 -1
  88. package/src/core/collection/list/List.js +43 -9
  89. package/src/core/collection/list/SortedListProjection.d.ts.map +1 -1
  90. package/src/core/collection/list/SortedListProjection.js +4 -1
  91. package/src/core/collection/map/BiMap.d.ts +25 -2
  92. package/src/core/collection/map/BiMap.d.ts.map +1 -1
  93. package/src/core/collection/map/BiMap.js +57 -3
  94. package/src/core/collection/map/HashMap.d.ts +2 -2
  95. package/src/core/collection/map/HashMap.d.ts.map +1 -1
  96. package/src/core/collection/map/HashMap.js +1 -1
  97. package/src/core/collection/set/ArraySet.d.ts +2 -2
  98. package/src/core/collection/set/ArraySet.d.ts.map +1 -1
  99. package/src/core/collection/set/ArraySet.js +1 -1
  100. package/src/core/collection/table/RowFirstTable.d.ts +2 -2
  101. package/src/core/collection/table/RowFirstTable.d.ts.map +1 -1
  102. package/src/core/collection/table/RowFirstTable.js +1 -1
  103. package/src/core/collection/table/RowFirstTableSpec.js +4 -4
  104. package/src/core/debug/matchers/IsAnything.d.ts.map +1 -1
  105. package/src/core/debug/matchers/IsAnything.js +5 -1
  106. package/src/core/events/signal/Signal.d.ts.map +1 -1
  107. package/src/core/events/signal/Signal.js +3 -1
  108. package/src/core/fsm/simple/SimpleStateMachineDescription.d.ts +2 -2
  109. package/src/core/fsm/simple/SimpleStateMachineDescription.d.ts.map +1 -1
  110. package/src/core/fsm/simple/SimpleStateMachineDescription.js +1 -1
  111. package/src/core/geom/2d/bvh/BVH2D.d.ts +2 -2
  112. package/src/core/geom/2d/bvh/BVH2D.d.ts.map +1 -1
  113. package/src/core/geom/2d/bvh/BVH2D.js +1 -1
  114. package/src/core/geom/2d/polygon/TRIANGULATION_DESIGN.md +433 -0
  115. package/src/core/geom/2d/polygon/polygon2_is_counter_clockwise.d.ts +31 -0
  116. package/src/core/geom/2d/polygon/polygon2_is_counter_clockwise.d.ts.map +1 -0
  117. package/src/core/geom/2d/polygon/polygon2_is_counter_clockwise.js +84 -0
  118. package/src/core/geom/2d/polygon/polygon2_signed_area.d.ts +24 -2
  119. package/src/core/geom/2d/polygon/polygon2_signed_area.d.ts.map +1 -1
  120. package/src/core/geom/2d/polygon/polygon2_signed_area.js +52 -34
  121. package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.d.ts +28 -0
  122. package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.d.ts.map +1 -0
  123. package/src/core/geom/2d/polygon/polygon2_triangulate.corpus.js +86 -0
  124. package/src/core/geom/2d/polygon/polygon2_triangulate.d.ts +40 -0
  125. package/src/core/geom/2d/polygon/polygon2_triangulate.d.ts.map +1 -0
  126. package/src/core/geom/2d/polygon/polygon2_triangulate.js +1280 -0
  127. package/src/core/geom/2d/polygon/polygon2_triangulation_deviation.d.ts +28 -0
  128. package/src/core/geom/2d/polygon/polygon2_triangulation_deviation.d.ts.map +1 -0
  129. package/src/core/geom/2d/polygon/polygon2_triangulation_deviation.js +77 -0
  130. package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.d.ts +2 -2
  131. package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.d.ts.map +1 -1
  132. package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.js +1 -1
  133. package/src/core/geom/2d/quad-tree/qt_query_data_raycast.d.ts +2 -2
  134. package/src/core/geom/2d/quad-tree/qt_query_data_raycast.d.ts.map +1 -1
  135. package/src/core/geom/2d/quad-tree/qt_query_data_raycast.js +1 -1
  136. package/src/core/geom/2d/triangle/tri2_rasterize_conservative.d.ts +6 -3
  137. package/src/core/geom/2d/triangle/tri2_rasterize_conservative.d.ts.map +1 -1
  138. package/src/core/geom/2d/triangle/tri2_rasterize_conservative.js +26 -13
  139. package/src/core/geom/2d/triangle/tri2_signed_area.d.ts +17 -1
  140. package/src/core/geom/2d/triangle/tri2_signed_area.d.ts.map +1 -1
  141. package/src/core/geom/2d/triangle/tri2_signed_area.js +35 -23
  142. package/src/core/geom/2d/v2_morton_encode.d.ts +20 -0
  143. package/src/core/geom/2d/v2_morton_encode.d.ts.map +1 -0
  144. package/src/core/geom/2d/v2_morton_encode.js +23 -0
  145. package/src/core/geom/3d/aabb/AABB3.d.ts +2 -2
  146. package/src/core/geom/3d/aabb/AABB3.d.ts.map +1 -1
  147. package/src/core/geom/3d/aabb/AABB3.js +1 -1
  148. package/src/core/geom/3d/atlas/segment/atlas_merge_charts.d.ts.map +1 -1
  149. package/src/core/geom/3d/atlas/segment/atlas_merge_charts.js +4 -1
  150. package/src/core/geom/3d/polygon/polygon3_compute_normal.d.ts +27 -0
  151. package/src/core/geom/3d/polygon/polygon3_compute_normal.d.ts.map +1 -0
  152. package/src/core/geom/3d/polygon/polygon3_compute_normal.js +60 -0
  153. package/src/core/geom/3d/polygon/polygon3_triangulate.d.ts +34 -0
  154. package/src/core/geom/3d/polygon/polygon3_triangulate.d.ts.map +1 -0
  155. package/src/core/geom/3d/polygon/polygon3_triangulate.js +94 -0
  156. package/src/core/geom/3d/quaternion/quat3_multiply.d.ts +8 -2
  157. package/src/core/geom/3d/quaternion/quat3_multiply.d.ts.map +1 -1
  158. package/src/core/geom/3d/quaternion/quat3_multiply.js +8 -2
  159. package/src/core/geom/3d/shape/ConvexHullShape3D.d.ts.map +1 -1
  160. package/src/core/geom/3d/shape/ConvexHullShape3D.js +32 -2
  161. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts +2 -2
  162. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.d.ts.map +1 -1
  163. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +1 -1
  164. package/src/core/geom/3d/tetrahedra/delaunay/debug/push_boundary_with_validation.d.ts +2 -5
  165. package/src/core/geom/3d/tetrahedra/delaunay/debug/push_boundary_with_validation.d.ts.map +1 -1
  166. package/src/core/geom/3d/tetrahedra/delaunay/debug/push_boundary_with_validation.js +1 -1
  167. package/src/core/geom/3d/tetrahedra/delaunay/debug/validate_cavity_boundary.d.ts +2 -2
  168. package/src/core/geom/3d/tetrahedra/delaunay/debug/validate_cavity_boundary.d.ts.map +1 -1
  169. package/src/core/geom/3d/tetrahedra/delaunay/debug/validate_cavity_boundary.js +1 -1
  170. package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.d.ts +2 -3
  171. package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.d.ts.map +1 -1
  172. package/src/core/geom/3d/tetrahedra/validate_tetrahedral_mesh.js +69 -69
  173. package/src/core/geom/3d/tetrahedra/validate_tetrahedron_neighbourhood.d.ts +2 -3
  174. package/src/core/geom/3d/tetrahedra/validate_tetrahedron_neighbourhood.d.ts.map +1 -1
  175. package/src/core/geom/3d/tetrahedra/validate_tetrahedron_neighbourhood.js +50 -50
  176. package/src/core/geom/3d/topology/struct/TopoEdge.d.ts +2 -2
  177. package/src/core/geom/3d/topology/struct/TopoEdge.d.ts.map +1 -1
  178. package/src/core/geom/3d/topology/struct/TopoEdge.js +1 -1
  179. package/src/core/geom/3d/topology/struct/TopoMesh.d.ts +2 -3
  180. package/src/core/geom/3d/topology/struct/TopoMesh.d.ts.map +1 -1
  181. package/src/core/geom/3d/topology/struct/TopoMesh.js +1 -1
  182. package/src/core/geom/3d/topology/struct/TopoTriangle.d.ts +2 -2
  183. package/src/core/geom/3d/topology/struct/TopoTriangle.d.ts.map +1 -1
  184. package/src/core/geom/3d/topology/struct/TopoTriangle.js +1 -1
  185. package/src/core/geom/3d/topology/struct/TopoVertex.d.ts +2 -2
  186. package/src/core/geom/3d/topology/struct/TopoVertex.d.ts.map +1 -1
  187. package/src/core/geom/3d/topology/struct/TopoVertex.js +1 -1
  188. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_triangulate.d.ts +23 -6
  189. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_triangulate.d.ts.map +1 -1
  190. package/src/core/geom/3d/topology/struct/binary/io/face/bt_face_triangulate.js +268 -124
  191. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_assert_valid.d.ts +17 -0
  192. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_assert_valid.d.ts.map +1 -0
  193. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_assert_valid.js +44 -0
  194. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_count_edge_faces.d.ts +20 -0
  195. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_count_edge_faces.d.ts.map +1 -0
  196. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_count_edge_faces.js +40 -0
  197. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_is_closed.d.ts +19 -0
  198. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_is_closed.d.ts.map +1 -0
  199. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_is_closed.js +34 -0
  200. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_is_manifold.d.ts +22 -0
  201. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_is_manifold.d.ts.map +1 -0
  202. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_is_manifold.js +37 -0
  203. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_validate.d.ts +87 -0
  204. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_validate.d.ts.map +1 -0
  205. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_validate.js +599 -0
  206. package/src/core/geom/3d/topology/util/mesh_flood_fill.d.ts +1 -1
  207. package/src/core/geom/3d/topology/util/mesh_flood_fill.js +1 -1
  208. package/src/core/geom/3d/triangle/tri3_compute_signed_volume.d.ts +32 -0
  209. package/src/core/geom/3d/triangle/tri3_compute_signed_volume.d.ts.map +1 -1
  210. package/src/core/geom/3d/triangle/tri3_compute_signed_volume.js +66 -7
  211. package/src/core/geom/3d/triangle/tri3_mesh_compute_signed_volume.d.ts +22 -1
  212. package/src/core/geom/3d/triangle/tri3_mesh_compute_signed_volume.d.ts.map +1 -1
  213. package/src/core/geom/3d/triangle/tri3_mesh_compute_signed_volume.js +83 -38
  214. package/src/core/geom/3d/util/aabb3_emit_point_grid.d.ts +2 -2
  215. package/src/core/geom/3d/util/aabb3_emit_point_grid.d.ts.map +1 -1
  216. package/src/core/geom/3d/util/aabb3_emit_point_grid.js +1 -1
  217. package/src/core/geom/MANIFOLD_COMPARISON_2026_08_01.md +554 -0
  218. package/src/core/geom/Quaternion.d.ts +2 -2
  219. package/src/core/geom/Quaternion.d.ts.map +1 -1
  220. package/src/core/geom/Quaternion.js +1 -1
  221. package/src/core/geom/Vector1.d.ts +2 -2
  222. package/src/core/geom/Vector1.d.ts.map +1 -1
  223. package/src/core/geom/Vector1.js +1 -1
  224. package/src/core/geom/packing/max-rect/find_best_container.d.ts +2 -2
  225. package/src/core/geom/packing/max-rect/find_best_container.d.ts.map +1 -1
  226. package/src/core/geom/packing/max-rect/find_best_container.js +1 -1
  227. package/src/core/geom/vec3/v3_cotangent.d.ts +6 -2
  228. package/src/core/geom/vec3/v3_cotangent.d.ts.map +1 -1
  229. package/src/core/geom/vec3/v3_cotangent.js +6 -2
  230. package/src/core/geom/vec3/v3_cross.d.ts +6 -2
  231. package/src/core/geom/vec3/v3_cross.d.ts.map +1 -1
  232. package/src/core/geom/vec3/v3_cross.js +6 -2
  233. package/src/core/geom/vec3/v3_lerp.d.ts +1 -1
  234. package/src/core/geom/vec3/v3_lerp.js +1 -1
  235. package/src/core/geom/vec3/v3_multiply.d.ts +6 -2
  236. package/src/core/geom/vec3/v3_multiply.d.ts.map +1 -1
  237. package/src/core/geom/vec3/v3_multiply.js +6 -2
  238. package/src/core/geom/vec3/v3_subtract.d.ts +6 -2
  239. package/src/core/geom/vec3/v3_subtract.d.ts.map +1 -1
  240. package/src/core/geom/vec3/v3_subtract.js +6 -2
  241. package/src/core/json/abstractJSONSerializer.d.ts +2 -2
  242. package/src/core/json/abstractJSONSerializer.d.ts.map +1 -1
  243. package/src/core/json/abstractJSONSerializer.js +1 -1
  244. package/src/core/lang/reactive/AbstractCachingParser.d.ts +2 -3
  245. package/src/core/lang/reactive/AbstractCachingParser.d.ts.map +1 -1
  246. package/src/core/lang/reactive/AbstractCachingParser.js +1 -1
  247. package/src/core/localization/Localization.d.ts +2 -2
  248. package/src/core/localization/Localization.d.ts.map +1 -1
  249. package/src/core/localization/Localization.js +2 -2
  250. package/src/core/math/noise/create_simplex_noise_2d.d.ts +2 -2
  251. package/src/core/math/noise/create_simplex_noise_2d.d.ts.map +1 -1
  252. package/src/core/math/noise/create_simplex_noise_2d.js +1 -1
  253. package/src/core/math/physics/mie/MIE_PARTICLES_STANDARD.js +1 -1
  254. package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.d.ts +3 -3
  255. package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.d.ts.map +1 -1
  256. package/src/core/math/physics/mie/compute_mie_particle_properties_rgb.js +2 -2
  257. package/src/core/math/random/randomSeed.d.ts +13 -0
  258. package/src/core/math/random/randomSeed.d.ts.map +1 -0
  259. package/src/core/math/random/randomSeed.js +16 -0
  260. package/src/core/math/random/seededRandom_Mulberry32.d.ts +3 -2
  261. package/src/core/math/random/seededRandom_Mulberry32.d.ts.map +1 -1
  262. package/src/core/math/random/seededRandom_Mulberry32.js +1 -1
  263. package/src/core/math/spline/spline3_hermite_apply_transform.d.ts +50 -0
  264. package/src/core/math/spline/spline3_hermite_apply_transform.d.ts.map +1 -0
  265. package/src/core/math/spline/spline3_hermite_apply_transform.js +107 -0
  266. package/src/core/math/spline/spline3_hermite_reverse.d.ts +34 -0
  267. package/src/core/math/spline/spline3_hermite_reverse.d.ts.map +1 -0
  268. package/src/core/math/spline/spline3_hermite_reverse.js +49 -0
  269. package/src/core/math/statistics/hammersley_sequence.d.ts +17 -4
  270. package/src/core/math/statistics/hammersley_sequence.d.ts.map +1 -1
  271. package/src/core/math/statistics/hammersley_sequence.js +25 -16
  272. package/src/core/model/ModuleRegistry.d.ts +2 -2
  273. package/src/core/model/ModuleRegistry.d.ts.map +1 -1
  274. package/src/core/model/ModuleRegistry.js +1 -1
  275. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.d.ts +1 -1
  276. package/src/core/model/node-graph/json/serializeNodeGraphToJSON.js +2 -2
  277. package/src/core/model/object/objectDeepEquals.d.ts +2 -2
  278. package/src/core/model/object/objectDeepEquals.d.ts.map +1 -1
  279. package/src/core/model/object/objectDeepEquals.js +1 -1
  280. package/src/core/model/reactive/model/ReactiveExpression.d.ts +2 -2
  281. package/src/core/model/reactive/model/ReactiveExpression.d.ts.map +1 -1
  282. package/src/core/model/reactive/model/ReactiveExpression.js +1 -1
  283. package/src/core/model/validate_enum_schema.d.ts +2 -3
  284. package/src/core/model/validate_enum_schema.d.ts.map +1 -1
  285. package/src/core/model/validate_enum_schema.js +1 -1
  286. package/src/core/process/Future.d.ts +3 -3
  287. package/src/core/process/Future.d.ts.map +1 -1
  288. package/src/core/process/Future.js +13 -1
  289. package/src/core/process/PromiseWatcher.d.ts.map +1 -1
  290. package/src/core/process/PromiseWatcher.js +9 -2
  291. package/src/core/process/executor/ConcurrentExecutor.d.ts.map +1 -1
  292. package/src/core/process/executor/ConcurrentExecutor.js +12 -2
  293. package/src/core/process/task/Task.d.ts +3 -3
  294. package/src/core/process/task/Task.d.ts.map +1 -1
  295. package/src/core/process/task/Task.js +2 -2
  296. package/src/core/process/task/util/countTask.d.ts +2 -2
  297. package/src/core/process/task/util/countTask.d.ts.map +1 -1
  298. package/src/core/process/task/util/countTask.js +1 -1
  299. package/src/core/process/task/util/randomCountTask.d.ts +2 -2
  300. package/src/core/process/task/util/randomCountTask.d.ts.map +1 -1
  301. package/src/core/process/task/util/randomCountTask.js +1 -1
  302. package/src/core/process/worker/WorkerProxy.d.ts.map +1 -1
  303. package/src/core/process/worker/WorkerProxy.js +5 -2
  304. package/src/core/process/worker/extractTransferables.d.ts.map +1 -1
  305. package/src/core/process/worker/extractTransferables.js +4 -1
  306. package/src/engine/Engine.d.ts +12 -12
  307. package/src/engine/Engine.d.ts.map +1 -1
  308. package/src/engine/Engine.js +149 -10
  309. package/src/engine/animation/Animations.d.ts +4 -4
  310. package/src/engine/animation/Animations.d.ts.map +1 -1
  311. package/src/engine/animation/Animations.js +2 -2
  312. package/src/engine/animation/EntityAnimation.d.ts +5 -5
  313. package/src/engine/animation/EntityAnimation.d.ts.map +1 -1
  314. package/src/engine/animation/EntityAnimation.js +2 -2
  315. package/src/engine/animation/TransitionFunctions.d.ts +1 -4
  316. package/src/engine/animation/TransitionFunctions.d.ts.map +1 -1
  317. package/src/engine/animation/TransitionFunctions.js +1 -1
  318. package/src/engine/animation/Tween.d.ts +4 -4
  319. package/src/engine/animation/Tween.d.ts.map +1 -1
  320. package/src/engine/animation/Tween.js +2 -2
  321. package/src/engine/asset/AssetManager.d.ts +6 -6
  322. package/src/engine/asset/AssetManager.d.ts.map +1 -1
  323. package/src/engine/asset/AssetManager.js +1411 -1411
  324. package/src/engine/asset/AssetRequest.d.ts +4 -4
  325. package/src/engine/asset/AssetRequest.d.ts.map +1 -1
  326. package/src/engine/asset/AssetRequest.js +3 -3
  327. package/src/engine/asset/loaders/ArrayBufferLoader.d.ts.map +1 -1
  328. package/src/engine/asset/loaders/ArrayBufferLoader.js +7 -0
  329. package/src/engine/asset/loaders/AssetLoader.d.ts +3 -3
  330. package/src/engine/asset/loaders/AssetLoader.d.ts.map +1 -1
  331. package/src/engine/asset/loaders/AssetLoader.js +2 -2
  332. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts +0 -10
  333. package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.d.ts.map +1 -1
  334. package/src/engine/ecs/EntityComponentDataset.d.ts +6 -6
  335. package/src/engine/ecs/EntityComponentDataset.d.ts.map +1 -1
  336. package/src/engine/ecs/EntityComponentDataset.js +3 -3
  337. package/src/engine/ecs/EntityManager.d.ts +4 -4
  338. package/src/engine/ecs/EntityManager.js +4 -4
  339. package/src/engine/ecs/EntityObserver.d.ts +3 -3
  340. package/src/engine/ecs/EntityObserver.d.ts.map +1 -1
  341. package/src/engine/ecs/EntityObserver.js +2 -2
  342. package/src/engine/ecs/System.d.ts +4 -4
  343. package/src/engine/ecs/System.d.ts.map +1 -1
  344. package/src/engine/ecs/System.js +2 -2
  345. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.d.ts +2 -3
  346. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.d.ts.map +1 -1
  347. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.js +1 -1
  348. package/src/engine/ecs/grid/pick.d.ts +4 -2
  349. package/src/engine/ecs/grid/pick.d.ts.map +1 -1
  350. package/src/engine/ecs/grid/pick.js +1 -1
  351. package/src/engine/ecs/parent/EntityNode.d.ts +4 -4
  352. package/src/engine/ecs/parent/EntityNode.d.ts.map +1 -1
  353. package/src/engine/ecs/parent/EntityNode.js +2 -2
  354. package/src/engine/ecs/speaker/lines/sets/LineSetDescription.d.ts.map +1 -1
  355. package/src/engine/ecs/speaker/lines/sets/LineSetDescription.js +3 -1
  356. package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.d.ts +2 -2
  357. package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.d.ts.map +1 -1
  358. package/src/engine/ecs/storage/binary/collection/BinaryCollectionDeSerializer.js +1 -1
  359. package/src/engine/ecs/storage/binary/collection/BinaryCollectionHeaderCodec.d.ts +1 -2
  360. package/src/engine/ecs/storage/binary/collection/BinaryCollectionHeaderCodec.d.ts.map +1 -1
  361. package/src/engine/ecs/systems/AnimationSystem.d.ts +0 -5
  362. package/src/engine/ecs/systems/AnimationSystem.d.ts.map +1 -1
  363. package/src/engine/ecs/terrain/ecs/TerrainSystem.d.ts +2 -2
  364. package/src/engine/ecs/terrain/ecs/TerrainSystem.d.ts.map +1 -1
  365. package/src/engine/ecs/terrain/ecs/TerrainSystem.js +5 -2
  366. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts +34 -5
  367. package/src/engine/ecs/terrain/tiles/TerrainTileManager.d.ts.map +1 -1
  368. package/src/engine/ecs/terrain/tiles/TerrainTileManager.js +87 -26
  369. package/src/engine/ecs/terrain/util/obtainTerrain.d.ts +2 -3
  370. package/src/engine/ecs/terrain/util/obtainTerrain.d.ts.map +1 -1
  371. package/src/engine/ecs/terrain/util/obtainTerrain.js +1 -1
  372. package/src/engine/ecs/util/hideEntityGracefully.js +2 -2
  373. package/src/engine/graphics/CONTEXT_LOSS_RECOVERY_PLAN.md +446 -0
  374. package/src/engine/graphics/FrameRunner.d.ts +2 -2
  375. package/src/engine/graphics/FrameRunner.d.ts.map +1 -1
  376. package/src/engine/graphics/FrameRunner.js +1 -1
  377. package/src/engine/graphics/GraphicsEngine.d.ts +60 -9
  378. package/src/engine/graphics/GraphicsEngine.d.ts.map +1 -1
  379. package/src/engine/graphics/GraphicsEngine.js +197 -25
  380. package/src/engine/graphics/camera/CameraShake.d.ts +6 -6
  381. package/src/engine/graphics/camera/CameraShake.d.ts.map +1 -1
  382. package/src/engine/graphics/context/WebGLContextFailureReason.d.ts +9 -0
  383. package/src/engine/graphics/context/WebGLContextFailureReason.d.ts.map +1 -0
  384. package/src/engine/graphics/context/WebGLContextFailureReason.js +17 -0
  385. package/src/engine/graphics/context/WebGLContextMonitor.d.ts +106 -0
  386. package/src/engine/graphics/context/WebGLContextMonitor.d.ts.map +1 -0
  387. package/src/engine/graphics/context/WebGLContextMonitor.js +341 -0
  388. package/src/engine/graphics/context/WebGLContextState.d.ts +14 -0
  389. package/src/engine/graphics/context/WebGLContextState.d.ts.map +1 -0
  390. package/src/engine/graphics/context/WebGLContextState.js +24 -0
  391. package/src/engine/graphics/context/testWebGLContextLoss.d.ts +2 -0
  392. package/src/engine/graphics/context/testWebGLContextLoss.d.ts.map +1 -0
  393. package/src/engine/graphics/context/testWebGLContextLoss.js +696 -0
  394. package/src/engine/graphics/ecs/camera/CameraSystem.d.ts +2 -2
  395. package/src/engine/graphics/ecs/camera/CameraSystem.d.ts.map +1 -1
  396. package/src/engine/graphics/ecs/camera/CameraSystem.js +1 -1
  397. package/src/engine/graphics/ecs/camera/serialization/CameraSerializationAdapter.d.ts.map +1 -1
  398. package/src/engine/graphics/ecs/camera/serialization/CameraSerializationAdapter.js +68 -32
  399. package/src/engine/graphics/ecs/camera/serialization/CameraSerializationUpgrader_0_1.d.ts +14 -0
  400. package/src/engine/graphics/ecs/camera/serialization/CameraSerializationUpgrader_0_1.d.ts.map +1 -0
  401. package/src/engine/graphics/ecs/camera/serialization/CameraSerializationUpgrader_0_1.js +41 -0
  402. package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.d.ts +2 -3
  403. package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.d.ts.map +1 -1
  404. package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.js +2 -2
  405. package/src/engine/graphics/ecs/light/three/ThreeLightCache.d.ts +1 -1
  406. package/src/engine/graphics/ecs/light/three/ThreeLightCache.js +1 -1
  407. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts +4 -5
  408. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts.map +1 -1
  409. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +7 -2
  410. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts +1 -1
  411. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts.map +1 -1
  412. package/src/engine/graphics/ecs/trail2d/Trail2DSystem.js +2 -1
  413. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts +1 -1
  414. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.d.ts.map +1 -1
  415. package/src/engine/graphics/ecs/trail3d/Trail3DSystem.js +3 -5
  416. package/src/engine/graphics/geometry/MikkT/BuildNeighborsFast.d.ts.map +1 -1
  417. package/src/engine/graphics/geometry/MikkT/BuildNeighborsFast.js +3 -2
  418. package/src/engine/graphics/geometry/MikkT/GenerateSharedVerticesIndexList.d.ts.map +1 -1
  419. package/src/engine/graphics/geometry/MikkT/GenerateSharedVerticesIndexList.js +3 -1
  420. package/src/engine/graphics/geometry/computeBoundingSphereFromVertexData.d.ts +2 -2
  421. package/src/engine/graphics/geometry/computeBoundingSphereFromVertexData.js +1 -1
  422. package/src/engine/graphics/geometry/computeMeshSurfaceArea.js +1 -1
  423. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.d.ts +2 -2
  424. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.d.ts.map +1 -1
  425. package/src/engine/graphics/geometry/instancing/InstancedMeshGroup.js +1 -1
  426. package/src/engine/graphics/geometry/ribbon/Ribbon.d.ts +2 -2
  427. package/src/engine/graphics/geometry/ribbon/Ribbon.d.ts.map +1 -1
  428. package/src/engine/graphics/geometry/ribbon/Ribbon.js +1 -1
  429. package/src/engine/graphics/load_and_set_cubemap_v0.d.ts +5 -0
  430. package/src/engine/graphics/load_and_set_cubemap_v0.d.ts.map +1 -1
  431. package/src/engine/graphics/load_and_set_cubemap_v0.js +26 -21
  432. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts +2 -2
  433. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.d.ts.map +1 -1
  434. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +1 -1
  435. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts +2 -2
  436. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.d.ts.map +1 -1
  437. package/src/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.js +1 -1
  438. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts +2 -2
  439. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.d.ts.map +1 -1
  440. package/src/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +1 -1
  441. package/src/engine/graphics/particles/particular/group/ParticleGroup.d.ts.map +1 -1
  442. package/src/engine/graphics/particles/particular/group/ParticleGroup.js +19 -8
  443. package/src/engine/graphics/particles/particular/group/optimizeCommandQueue.js +1 -1
  444. package/src/engine/graphics/render/RendererPool.d.ts +4 -4
  445. package/src/engine/graphics/render/RendererPool.d.ts.map +1 -1
  446. package/src/engine/graphics/render/RendererPool.js +2 -2
  447. package/src/engine/graphics/render/frame_graph/FrameGraph.d.ts +5 -4
  448. package/src/engine/graphics/render/frame_graph/FrameGraph.d.ts.map +1 -1
  449. package/src/engine/graphics/render/frame_graph/FrameGraph.js +2 -2
  450. package/src/engine/graphics/render/layers/RenderLayer.d.ts +2 -2
  451. package/src/engine/graphics/render/layers/RenderLayer.d.ts.map +1 -1
  452. package/src/engine/graphics/render/layers/RenderLayer.js +1 -1
  453. package/src/engine/graphics/render/layers/RenderLayerUtils.js +1 -1
  454. package/src/engine/graphics/sh3/lightmap/bake_lightmap_for_scene.d.ts +3 -1
  455. package/src/engine/graphics/sh3/lightmap/bake_lightmap_for_scene.d.ts.map +1 -1
  456. package/src/engine/graphics/sh3/lightmap/bake_lightmap_for_scene.js +681 -681
  457. package/src/engine/graphics/sh3/lightmap/lightmap_rasterize_triangle.d.ts +2 -2
  458. package/src/engine/graphics/sh3/lightmap/lightmap_rasterize_triangle.d.ts.map +1 -1
  459. package/src/engine/graphics/sh3/lightmap/lightmap_rasterize_triangle.js +145 -145
  460. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts +2 -1
  461. package/src/engine/graphics/sh3/lpv/PathTracerProbeRenderer.d.ts.map +1 -1
  462. package/src/engine/graphics/texture/atlas/AtlasLookupTexture.d.ts.map +1 -1
  463. package/src/engine/graphics/texture/atlas/AtlasLookupTexture.js +10 -3
  464. package/src/engine/graphics/texture/atlas/TextureAtlas.d.ts.map +1 -1
  465. package/src/engine/graphics/texture/atlas/TextureAtlas.js +4 -1
  466. package/src/engine/graphics/texture/atlas/gpu/WebGLTextureAtlas.d.ts.map +1 -1
  467. package/src/engine/graphics/texture/atlas/gpu/WebGLTextureAtlas.js +11 -0
  468. package/src/engine/graphics/texture/cubemap/load_environment_map.d.ts.map +1 -1
  469. package/src/engine/graphics/texture/cubemap/load_environment_map.js +5 -2
  470. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts +2 -2
  471. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
  472. package/src/engine/graphics/texture/sampler/Sampler2D.js +1 -1
  473. package/src/engine/graphics/texture/sampler/distance/computeSignedDistanceField_Chamfer.d.ts.map +1 -1
  474. package/src/engine/graphics/texture/sampler/distance/computeSignedDistanceField_Chamfer.js +26 -18
  475. package/src/engine/graphics/texture/sampler/filter/sampler2d_blur_gaussian.d.ts +15 -2
  476. package/src/engine/graphics/texture/sampler/filter/sampler2d_blur_gaussian.d.ts.map +1 -1
  477. package/src/engine/graphics/texture/sampler/filter/sampler2d_blur_gaussian.js +29 -3
  478. package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_lanczos.d.ts +14 -1
  479. package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_lanczos.d.ts.map +1 -1
  480. package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_lanczos.js +148 -171
  481. package/src/engine/graphics/texture/sampler/sampler2d_combine.d.ts +2 -2
  482. package/src/engine/graphics/texture/sampler/sampler2d_combine.d.ts.map +1 -1
  483. package/src/engine/graphics/texture/sampler/sampler2d_combine.js +1 -1
  484. package/src/engine/graphics/texture/sampler/sampler2d_paint.js +1 -1
  485. package/src/engine/graphics/texture/sampler/util/bitSet2Sampler2D.js +2 -2
  486. package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.d.ts +1 -1
  487. package/src/engine/graphics/texture/virtual/VirtualTextureTileLoader.js +2 -2
  488. package/src/engine/grid/obstacle/GridObstacle.d.ts +2 -2
  489. package/src/engine/grid/obstacle/GridObstacle.d.ts.map +1 -1
  490. package/src/engine/grid/obstacle/GridObstacle.js +1 -1
  491. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.d.ts.map +1 -1
  492. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +10 -3
  493. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts +2 -2
  494. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.d.ts.map +1 -1
  495. package/src/engine/intelligence/behavior/ecs/BehaviorComponent.js +1 -1
  496. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts +3 -3
  497. package/src/engine/intelligence/behavior/primitive/ActionBehavior.d.ts.map +1 -1
  498. package/src/engine/intelligence/behavior/primitive/ActionBehavior.js +1 -1
  499. package/src/engine/intelligence/behavior/util/RandomDelayBehavior.d.ts +2 -1
  500. package/src/engine/intelligence/behavior/util/RandomDelayBehavior.d.ts.map +1 -1
  501. package/src/engine/intelligence/blackboard/Blackboard.d.ts +4 -4
  502. package/src/engine/intelligence/blackboard/Blackboard.d.ts.map +1 -1
  503. package/src/engine/intelligence/blackboard/Blackboard.js +2 -2
  504. package/src/engine/intelligence/mcts/MonteCarlo.d.ts +17 -15
  505. package/src/engine/intelligence/mcts/MonteCarlo.d.ts.map +1 -1
  506. package/src/engine/intelligence/mcts/MonteCarlo.js +345 -345
  507. package/src/engine/intelligence/mcts/StateNode.d.ts +2 -2
  508. package/src/engine/intelligence/mcts/StateNode.d.ts.map +1 -1
  509. package/src/engine/intelligence/mcts/StateNode.js +364 -364
  510. package/src/engine/intelligence/optimization/RandomOptimizer.d.ts +3 -3
  511. package/src/engine/intelligence/optimization/RandomOptimizer.d.ts.map +1 -1
  512. package/src/engine/intelligence/optimization/RandomOptimizer.js +2 -2
  513. package/src/engine/intelligence/optimization/optimize_cyclic_sequence_pairwise.d.ts +2 -2
  514. package/src/engine/intelligence/optimization/optimize_cyclic_sequence_pairwise.d.ts.map +1 -1
  515. package/src/engine/intelligence/optimization/optimize_cyclic_sequence_pairwise.js +1 -1
  516. package/src/engine/knowledge/database/StaticKnowledgeDataTable.d.ts +4 -5
  517. package/src/engine/knowledge/database/StaticKnowledgeDataTable.d.ts.map +1 -1
  518. package/src/engine/knowledge/database/StaticKnowledgeDataTable.js +2 -2
  519. package/src/engine/navigation/ecs/components/PathSerializationUpgrader_2_3.d.ts +14 -0
  520. package/src/engine/navigation/ecs/components/PathSerializationUpgrader_2_3.d.ts.map +1 -0
  521. package/src/engine/navigation/ecs/components/PathSerializationUpgrader_2_3.js +38 -0
  522. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts +0 -5
  523. package/src/engine/navigation/ecs/path_following/PathFollowingSystem.d.ts.map +1 -1
  524. package/src/engine/network/orchestrator/ServerAuthoritativeClient.d.ts.map +1 -1
  525. package/src/engine/network/orchestrator/ServerAuthoritativeClient.js +433 -425
  526. package/src/engine/physics/constraint/solve_constraints.d.ts +4 -1
  527. package/src/engine/physics/constraint/solve_constraints.d.ts.map +1 -1
  528. package/src/engine/physics/constraint/solve_constraints.js +38 -13
  529. package/src/engine/physics/contact/ManifoldStore.d.ts +15 -3
  530. package/src/engine/physics/contact/ManifoldStore.d.ts.map +1 -1
  531. package/src/engine/physics/contact/ManifoldStore.js +15 -3
  532. package/src/engine/physics/ecs/Joint.d.ts +7 -4
  533. package/src/engine/physics/ecs/Joint.d.ts.map +1 -1
  534. package/src/engine/physics/ecs/Joint.js +7 -4
  535. package/src/engine/physics/ecs/PhysicsSystem.d.ts +14 -0
  536. package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
  537. package/src/engine/physics/ecs/PhysicsSystem.js +16 -0
  538. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts +4 -8
  539. package/src/engine/physics/fluid/ecs/FluidObstacleSystem.d.ts.map +1 -1
  540. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts +3 -7
  541. package/src/engine/physics/fluid/ecs/FluidSystem.d.ts.map +1 -1
  542. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts +15 -7
  543. package/src/engine/physics/narrowphase/convex_convex_manifold.d.ts.map +1 -1
  544. package/src/engine/physics/narrowphase/convex_convex_manifold.js +33 -10
  545. package/src/engine/physics/narrowphase/refine_ray_concave.d.ts +6 -2
  546. package/src/engine/physics/narrowphase/refine_ray_concave.d.ts.map +1 -1
  547. package/src/engine/physics/narrowphase/refine_ray_concave.js +6 -2
  548. package/src/engine/physics/narrowphase/refine_ray_hit.d.ts +6 -2
  549. package/src/engine/physics/narrowphase/refine_ray_hit.d.ts.map +1 -1
  550. package/src/engine/physics/narrowphase/refine_ray_hit.js +6 -2
  551. package/src/engine/physics/queries/raycast.d.ts.map +1 -1
  552. package/src/engine/physics/queries/raycast.js +11 -4
  553. package/src/engine/save/GameStateLoader.d.ts +2 -2
  554. package/src/engine/save/GameStateLoader.d.ts.map +1 -1
  555. package/src/engine/save/GameStateLoader.js +1 -1
  556. package/src/engine/save/Storage.d.ts +4 -4
  557. package/src/engine/save/Storage.d.ts.map +1 -1
  558. package/src/engine/save/Storage.js +2 -2
  559. package/src/engine/save/storage/IndexedDBStorage.d.ts.map +1 -1
  560. package/src/engine/save/storage/IndexedDBStorage.js +24 -5
  561. package/src/engine/simulation/Ticker.d.ts +12 -0
  562. package/src/engine/simulation/Ticker.d.ts.map +1 -1
  563. package/src/engine/simulation/Ticker.js +18 -0
  564. package/src/engine/sound/simulation/AcousticSimulator.d.ts.map +1 -1
  565. package/src/engine/sound/simulation/AcousticSimulator.js +9 -1
  566. package/src/engine/sound/simulation/core/VolumeField.d.ts +6 -2
  567. package/src/engine/sound/simulation/core/VolumeField.d.ts.map +1 -1
  568. package/src/engine/sound/simulation/core/VolumeField.js +6 -2
  569. package/src/engine/sound/simulation/probe/AcousticProbeField.d.ts +6 -2
  570. package/src/engine/sound/simulation/probe/AcousticProbeField.d.ts.map +1 -1
  571. package/src/engine/sound/simulation/probe/AcousticProbeField.js +6 -2
  572. package/src/engine/sound/simulation/probe/acoustic_probe_transfer.d.ts +6 -2
  573. package/src/engine/sound/simulation/probe/acoustic_probe_transfer.d.ts.map +1 -1
  574. package/src/engine/sound/simulation/probe/acoustic_probe_transfer.js +6 -2
  575. package/src/engine/sound/simulation/probe/bakeProbeReflectors.d.ts +3 -1
  576. package/src/engine/sound/simulation/probe/bakeProbeReflectors.d.ts.map +1 -1
  577. package/src/engine/sound/simulation/probe/bakeProbeReflectors.js +3 -1
  578. package/src/engine/sound/simulation/prototypeAcousticSolver.js +1652 -1652
  579. package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts +2 -2
  580. package/src/engine/sound/sopra/util/buildAttenuationCurve.d.ts.map +1 -1
  581. package/src/engine/sound/sopra/util/buildAttenuationCurve.js +40 -40
  582. package/src/engine/ui/GUIEngine.d.ts.map +1 -1
  583. package/src/engine/ui/GUIEngine.js +8 -1
  584. package/src/engine/ui/notification/NotificationManager.d.ts +5 -5
  585. package/src/engine/ui/notification/NotificationManager.d.ts.map +1 -1
  586. package/src/engine/ui/notification/NotificationManager.js +4 -4
  587. package/src/engine/ui/tiles2d/TileGrid.d.ts +2 -2
  588. package/src/engine/ui/tiles2d/TileGrid.d.ts.map +1 -1
  589. package/src/engine/ui/tiles2d/TileGrid.js +1 -1
  590. package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.d.ts +1 -1
  591. package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.js +1 -1
  592. package/src/generation/grid/generation/road/GridTaskGenerateRoads.js +2 -2
  593. package/src/generation/grid/generation/util/buildPathFromDistanceMap.d.ts +1 -1
  594. package/src/generation/grid/generation/util/buildPathFromDistanceMap.js +1 -1
  595. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts +2 -1
  596. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.d.ts.map +1 -1
  597. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts +2 -1
  598. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.d.ts.map +1 -1
  599. package/src/generation/markers/transform/MarkerNodeTransformRotateRandom.d.ts +2 -1
  600. package/src/generation/markers/transform/MarkerNodeTransformRotateRandom.d.ts.map +1 -1
  601. package/src/generation/markers/transform/MarkerNodeTransformerRecordPropertyClosure.d.ts +4 -3
  602. package/src/generation/markers/transform/MarkerNodeTransformerRecordPropertyClosure.d.ts.map +1 -1
  603. package/src/generation/markers/transform/MarkerNodeTransformerRecordPropertyClosure.js +1 -1
  604. package/src/generation/markers/transform/MarkerNodeTransformerRecordUniqueRandomEnum.d.ts +2 -1
  605. package/src/generation/markers/transform/MarkerNodeTransformerRecordUniqueRandomEnum.d.ts.map +1 -1
  606. package/src/generation/theme/TerrainTheme.d.ts.map +1 -1
  607. package/src/generation/theme/TerrainTheme.js +2 -1
  608. package/src/generation/theme/ThemeEngine.d.ts.map +1 -1
  609. package/src/generation/theme/ThemeEngine.js +6 -5
  610. package/src/view/ViewGroup.d.ts.map +1 -1
  611. package/src/view/ViewGroup.js +9 -7
  612. package/src/view/common/VirtualListView.d.ts +1 -1
  613. package/src/view/common/VirtualListView.js +1 -1
  614. package/src/view/graphics/WebGLContextFailureView.d.ts +19 -0
  615. package/src/view/graphics/WebGLContextFailureView.d.ts.map +1 -0
  616. package/src/view/graphics/WebGLContextFailureView.js +76 -0
  617. package/src/view/minimap/Minimap.d.ts +8 -0
  618. package/src/view/minimap/Minimap.d.ts.map +1 -1
  619. package/src/view/minimap/Minimap.js +16 -3
  620. package/src/view/minimap/dom/MinimapMarkerView.d.ts.map +1 -1
  621. package/src/view/minimap/dom/MinimapMarkerView.js +3 -1
  622. package/src/view/tooltip/gml/compiler/GMLReferenceCompiler.d.ts +2 -2
  623. package/src/view/tooltip/gml/compiler/GMLReferenceCompiler.d.ts.map +1 -1
  624. package/src/view/tooltip/gml/compiler/GMLReferenceCompiler.js +1 -1
@@ -0,0 +1,511 @@
1
+ # Adversarial verification — core reports
2
+
3
+ Method: throwaway jest specs (`__advcheck_*.spec.js`, run from `H:/git/moh` with
4
+ `node_modules/.bin/jest --config jest.conf.json`, since deleted) plus direct source reading.
5
+ Note: asserts ARE live under the jest harness (verified — `BIN-5` threw an assert error), so any
6
+ finding whose only manifestation is an assert throw was checked for the production behaviour
7
+ separately.
8
+
9
+ Scope checked: all 13 CRITICALs, plus every MAJOR asserting "never / always / cannot".
10
+ No finding was refuted outright. Six are downgraded for severity inflation.
11
+
12
+ ---
13
+
14
+ ## core-collection
15
+
16
+ ### COLL-1
17
+ - **Verdict**: CONFIRMED-BUT-DOWNGRADED
18
+ - **Corrected severity**: MAJOR
19
+ - **Evidence**: Ran the exact scenario. `p.output.asArray()` → `[5,7,4,1,3]` (expected `[1,3,4,5,7]`).
20
+ `binarySearchLowIndex` (`core/collection/array/binarySearchLowIndex.js`) is self-documented as
21
+ returning "index of the largest element <= el … or -1"; `handleAddition` passes that straight to
22
+ `List.insert`. `List.insert(-1, el)` reaches the `else` branch → `splice(-1,0,el)`. All as claimed.
23
+ - **Reason for downgrade**: ground 5. The class has **zero** real consumers in the repo — the single
24
+ grep hit (`engine/network/time/JitterBuffer.js:65`) is a *comment* referencing the pattern, not an
25
+ import. Nothing shipped is affected; this is a wholly broken public-API class, not a live defect.
26
+
27
+ ### COLL-2
28
+ - **Verdict**: CONFIRMED-BUT-DOWNGRADED
29
+ - **Corrected severity**: MAJOR
30
+ - **Evidence**: `m.set('a',1)` then `m.get('a') === undefined`, `m.getValueByKey('a') === undefined`,
31
+ `m.getKeyByValue(1) === undefined` — all measured. Swapped usage works: `m.getKeyByValue('a') === 1`,
32
+ `m.getValueByKey(1) === 'a'`. The JSDoc field types (`forward: Map<K,V>`, `backward: Map<V,K>`) and
33
+ `add(key, value)` param names are indeed inverted relative to the writes.
34
+ - **Reason for downgrade**: ground 5. This is a **naming/JSDoc inversion**, not data loss: the map is
35
+ fully self-consistent under `add(value, key)`, nothing is dropped, and the sole in-repo consumer
36
+ (`core/binary/EncodingBinaryBuffer.js`) already calls it in the working orientation. Note that
37
+ core-binary.md's own "found sound" list states the BiMap orientation "is self-consistent in both
38
+ directions" — the two reports agree on the facts and disagree only on framing. "Every accessor
39
+ returns `undefined`" is true only for documented-name usage.
40
+
41
+ ### COLL-3
42
+ - **Verdict**: CONFIRMED-BUT-DOWNGRADED
43
+ - **Corrected severity**: MAJOR
44
+ - **Evidence**: `a.merge(b); m.add((...args)=>…); a.send1(42)` → handler received `[{ '0': 42 }]`
45
+ (one element, an `arguments` object). `Signal.dispatch(...args)` is variadic (`Signal.js:328`), so
46
+ `result.dispatch(arguments)` genuinely lands the whole arguments object in `args[0]`.
47
+ - **Reason for downgrade**: ground 5. `Signal.prototype.merge` has no in-repo caller
48
+ (`grep '\.merge('` finds only unrelated `merge()` methods). Total break of an unused public method.
49
+
50
+ ### COLL-4
51
+ - **Verdict**: CONFIRMED
52
+ - **Evidence**: `new Deque().removeFirst()` → `undefined`, then `isEmpty() === false`, `size() === 15`.
53
+ `removeFirst`'s JSDoc is `@returns {T|undefined}`, so calling it on an empty deque is in-contract.
54
+
55
+ ### COLL-5
56
+ - **Verdict**: CONFIRMED
57
+ - **Evidence**: `new BinaryHeap(x=>x.score).pop()` → `undefined`, then `size() === -1`,
58
+ `isEmpty() === false`, and the next `push({score:7})` threw
59
+ `TypeError: Cannot read properties of undefined (reading 'score')`. `BinaryHeap.spec.js` itself
60
+ asserts `pop()` on an empty heap is `undefined` (twice) and uses the
61
+ `while ((x = h.pop()) !== undefined)` drain pattern, so popping past empty is sanctioned.
62
+
63
+ ### COLL-6
64
+ - **Verdict**: CONFIRMED
65
+ - **Evidence**: `new FilteredListProjection(new List([1,2,3]), new List())` with `deferred=false`;
66
+ after `input.add(4)` the console showed
67
+ `Failed to dispatch handler [Function: update] TypeError: a.equals is not a function` at
68
+ `invokeObjectEquals.js:9` via `array_set_diff.js:30`, and `p.output` stayed `[1,2,3]`. Silent stale
69
+ output, exactly as described.
70
+
71
+ ### COLL-7
72
+ - **Verdict**: CONFIRMED
73
+ - **Evidence**: `link(); input.add(3); input.add(5); input.remove(0)` → input `[5]`, output unchanged
74
+ `[5,3]`. `link()`/`unlink()` only touch `input.on.added`.
75
+
76
+ ### COLL-8
77
+ - **Verdict**: CONFIRMED
78
+ - **Evidence**: `it.initialize(['a','b','c']); it.initialize(['x','y'])` then draining yields three
79
+ items `["x","y",<undefined>]` from a two-element array.
80
+
81
+ ### COLL-9
82
+ - **Verdict**: CONFIRMED
83
+ - **Evidence**: reproduced the exact numbers — `a.equals(b) === true`, `a.hash() === -13796099888`,
84
+ `b.hash() === 4190943312`. Hash/equals contract broken; hash is also not an int32.
85
+
86
+ ### COLL-10
87
+ - **Verdict**: CONFIRMED
88
+ - **Evidence**: BigEndian-spec table with one `Uint32` row of value `1`, serialized and deserialized:
89
+ `t2.spec.endianType` came back as LittleEndian and `t2.readCellValue(0,0) === 16777216`.
90
+
91
+ ### COLL-11
92
+ - **Verdict**: CONFIRMED
93
+ - **Evidence**: `s.ensureCapacity(1); s.increment(0); s.frequency(3)` → **1** for an element never
94
+ incremented. With a 1-word table the table index is identical for both, so the only differentiator
95
+ is the counter offset — under the documented 16-counters-per-slot layout element 3 lands on
96
+ counters 8..11 and must read 0. Source confirms `start = (hash & 3) << 2` with `start+i ∈ 0..15`
97
+ and shift `(start+i) << 2 ∈ 0..60` against a `Uint32Array` (JS shifts mod 32).
98
+
99
+ ---
100
+
101
+ ## core-binary
102
+
103
+ ### BIN-1
104
+ - **Verdict**: CONFIRMED
105
+ - **Corrected severity**: CRITICAL (stands)
106
+ - **Evidence**: `b.writeUTF8String("Ж".repeat(3000)); b.position=0; b.readUTF8String()` → `""`
107
+ (length 0). Same buffer with 3000 ASCII chars round-trips fine. Source confirms the mechanism:
108
+ `setCapacity` copies `Math.min(oldLen, newLen, this.position)` bytes while `this.position` is still
109
+ at the string-body start; `this.position = cursor` only happens after the loop. `BinaryBuffer` is
110
+ core serialization infra with many live consumers — CRITICAL is warranted.
111
+
112
+ ### BIN-2
113
+ - **Verdict**: CONFIRMED-BUT-DOWNGRADED
114
+ - **Corrected severity**: MAJOR
115
+ - **Evidence** (static — executing it hangs by construction): `Localization.js:140-143` is
116
+ `let _path = path.trim(); while (_path.endsWith('/') || _path.endsWith('\\')) { _path.slice(0, _path.length - 1); }`.
117
+ `slice` is non-mutating and the result is discarded, so the guard can never become false. Infinite
118
+ loop is certain.
119
+ - **Reason for downgrade**: ground 5. Requires a caller to pass a trailing separator; the default
120
+ argument has none and no in-repo caller supplies one. Real hang, narrow trigger.
121
+
122
+ ### BIN-3
123
+ - **Verdict**: CONFIRMED
124
+ - **Evidence**: `writeUTF8String("\uD800abc"); writeUint32(0x41414141)` then read back →
125
+ `"abcA"` and `0x00414141`. Stream desync exactly as described.
126
+
127
+ ### BIN-4
128
+ - **Verdict**: CONFIRMED
129
+ - **Evidence**: `new StructureBuilder("Foo").build()` → `ReferenceError: type is not defined`.
130
+ Source: `buildConstructorFunction(structure)` calls `buildTypePrototype(type, lines)`; `type` is
131
+ only a parameter name of `buildTypePrototype` and is not in scope (ESM is strict mode).
132
+
133
+ ### BIN-5
134
+ - **Verdict**: CONFIRMED
135
+ - **Evidence**: `new Type("Foo").clone()` → `Error: Name must be of type "string", instead was
136
+ "undefined"` under live asserts. Source `Type.js:74-78` copies only `fields`; in a production
137
+ bundle the assert is stripped and the clone silently carries `name === undefined`.
138
+
139
+ ### BIN-6
140
+ - **Verdict**: CONFIRMED
141
+ - **Evidence**: `new DataViewStructAccessor({v: BinaryDataType.Uint64}).v` →
142
+ `TypeError: this.$data.getUint64 is not a function`;
143
+ `{v: BinaryDataType.Float16}` → `TypeError: this.$data.undefined is not a function`;
144
+ `Uint32` control returns `0`. `DataType2DataViewReaders.js` indeed maps to the non-existent
145
+ `getUint64`/`getInt64` and has no `Float16` entry.
146
+
147
+ ### BIN-7
148
+ - **Verdict**: CONFIRMED
149
+ - **Evidence**: `s.set(5,true); s.shift(-1,0,10)` → only bit **6** set. Source `BitSet.js:547-553`:
150
+ both branches of `shift` call `shift_right`.
151
+
152
+ ### BIN-8
153
+ - **Verdict**: CONFIRMED
154
+ - **Evidence**: with a hashable key object, `capacity:1`: after `add(k,"v1"); add(k,"v2")` →
155
+ `get(k) === undefined`, `size === 1`, and `clear()` threw
156
+ `TypeError: Cannot read properties of undefined (reading 'indexOf')`. Source order confirms:
157
+ `elements` is resolved at `:135`, eviction (`__removeElement` → `data.delete(key)`) at `:150`,
158
+ push into the now-detached array at `:171`.
159
+
160
+ ### BIN-9
161
+ - **Verdict**: CONFIRMED
162
+ - **Evidence**: `new ObservedEnum(7, {ONE:1, SEVEN:7}).hash()` →
163
+ `TypeError: this.__validSet is not iterable`.
164
+
165
+ ### BIN-10
166
+ - **Verdict**: CONFIRMED
167
+ - **Evidence**: `stringify({a: undefined})` → `{"a":"null"}` (quoted string).
168
+
169
+ ### BIN-11
170
+ - **Verdict**: CONFIRMED
171
+ - **Evidence**: `stringify({'a"b': 1})` → `{"a"b":1}`; `JSON.parse` of it threw
172
+ `SyntaxError: Expected ':' after property name in JSON at position 4`.
173
+
174
+ ### BIN-12
175
+ - **Verdict**: CONFIRMED
176
+ - **Evidence**: `write_property({a:{b:0}}, ['x','a','b'], 1, 2, 31)` threw
177
+ `Error: No no property or getter found for 'x' on [0]'x/a'`; the `part_offset === 0` control
178
+ (`['a','b'], 0, 2`) correctly produced `{"a":{"b":31}}`.
179
+
180
+ ### BIN-13
181
+ - **Verdict**: CONFIRMED
182
+ - **Evidence**: `a=new BoundedValue(0,10,0); b=new BoundedValue(5,10,2); a.copy(b)` →
183
+ `a.equals(b) === false`, `a.getFraction() === 0.5` vs `b.getFraction() === 0.375`.
184
+ `b.toJSON()` → `{"value":5,"limit":10}` (no lower limit). Binary round-trip yields
185
+ `lower === 0`, `equals(b) === false`.
186
+
187
+ ### BIN-14
188
+ - **Verdict**: CONFIRMED
189
+ - **Evidence** (read): `ConnectedBoxLayouter.js:132` is literally
190
+ `const b1_cost_after = this.__compute_box_cost(b0);` two lines after the identical `b0` call, and
191
+ the accept test at `:134` uses `b0_cost + b1_cost <= b0_cost_after + b1_cost_after`.
192
+
193
+ ### BIN-15
194
+ - **Verdict**: CONFIRMED
195
+ - **Evidence**: `string_format_kebab_to_underscore("a-b-c")` → `"a_b-c"`.
196
+
197
+ ### BIN-16
198
+ - **Verdict**: CONFIRMED
199
+ - **Evidence**: `engine.setLocaleDataset("en", new LocaleDataset()); engine.resolve("en","greeting")`
200
+ → `undefined`. `LocalizationEngine.resolve` indexes `locale[fragment_key]` directly; `LocaleDataset`
201
+ exposes only `hasKey`/`get` over a `#map` private field (verified: its prototype has exactly
202
+ `['constructor','hasKey','get']` — there is not even a way to populate it).
203
+
204
+ ### BIN-17
205
+ - **Verdict**: CONFIRMED
206
+ - **Evidence**: `compileReactiveToJS(ReactiveNegate.from(ReactiveLiteralNumber.from(-5)))` →
207
+ `"--5"` (a SyntaxError when handed to `new Function`). Source `compileNegate` is
208
+ `` return `-${compileExpression(exp.source)}`; `` with no parentheses, so the nested-negation
209
+ `--this.a` case follows directly.
210
+
211
+ ---
212
+
213
+ ## core-process
214
+
215
+ ### PROC-1
216
+ - **Verdict**: CONFIRMED-BUT-DOWNGRADED
217
+ - **Corrected severity**: MAJOR
218
+ - **Evidence**: `anything().matches(42)` → `false`; `nothing().matches(42)` → `true`.
219
+ `IsAnything.matches()` is `return false;` unconditionally.
220
+ - **Reason for downgrade**: ground 5 (with a nod to ground 3). `anything()`/`nothing()` have **zero**
221
+ in-repo callers, and every in-repo matcher use (`ObservedInteger.js`, `iteratorTask.js`) goes
222
+ through `assert.that(...)`, which is compiled out of production. So the stated impact — "assert.that
223
+ throws for every x" / "a guard that is supposed to be unreachable silently passes everything" — is a
224
+ development-build-only concern. The matcher itself is genuinely inverted, so the defect is real.
225
+
226
+ ### PROC-2
227
+ - **Verdict**: CONFIRMED
228
+ - **Evidence**: `allOf(isIn([3,7]), not(equalTo(7))).matches(2)` →
229
+ `TypeError: Cannot read properties of undefined (reading 'appendDescriptionOf')`;
230
+ `hasItem(1).matches([])` → `TypeError: … (reading 'appendText')`. Default parameter values are not
231
+ inherited by overrides, as claimed.
232
+ - **Note**: same caveat as PROC-1 — the in-repo reach is `assert.that`, i.e. dev builds. MAJOR is fine
233
+ for a public matcher API whose documented single-arg form throws.
234
+
235
+ ### PROC-3
236
+ - **Verdict**: CONFIRMED
237
+ - **Evidence**: `new DescribeAs("value must be %0 or %1", equalTo(1), ["A","B"]).describeTo(d)` wrote
238
+ the literal `"value must be %0 or %1"`. All three sub-defects are visible in the source
239
+ (`matchAll` iterator has no `.length`; `match.groups[1]`; `textStart = match[0].length`).
240
+
241
+ ### PROC-4 (MINOR, verified opportunistically)
242
+ - **Verdict**: CONFIRMED
243
+ - **Evidence**: `new InMemoryDescriptor().appendValue(undefined).value` → `"null"`.
244
+
245
+ ### PROC-6
246
+ - **Verdict**: CONFIRMED
247
+ - **Corrected severity**: CRITICAL (stands)
248
+ - **Evidence**: `A = failingTask(); B.addDependency(A); ex.run(A); ex.run(B)` →
249
+ `A.state === 3 (FAILED)`, `B.state === 0 (INITIAL)`, `ex.contains(B) === false`,
250
+ `queueUnresolved.length === 0`, and neither `B.on.failed` nor `B.on.completed` fired.
251
+ `ConcurrentExecutor.js:286` FAILED branch only splices. `ConcurrentExecutor` is live engine infra.
252
+
253
+ ### PROC-7
254
+ - **Verdict**: CONFIRMED
255
+ - **Evidence**: `emptyTask().executeSync()` leaves `state.getValue() === 0` (INITIAL);
256
+ `TaskState.SUCCEEDED === 4`. Source `Task.js:214` never assigns `this.state`.
257
+
258
+ ### PROC-8
259
+ - **Verdict**: CONFIRMED
260
+ - **Evidence**: `ignoreFailureTask(failingTask(new Error("boom")))`, initialized then `cycle()` →
261
+ the wrapper rethrows `Error: boom`. `failingTask` is the repo's own canonical failing task and it
262
+ fails by throwing, so the wrapper does not cover its own package's failure idiom.
263
+
264
+ ### PROC-9
265
+ - **Verdict**: CONFIRMED
266
+ - **Evidence**: `new RemainingTimeEstimator(10); e.update(1000, 0.5); e.estimate(0.5)` → `9999.9995`
267
+ (correct answer 1000). `estimate` divides by `sampleCount`, never by the number of filled slots.
268
+
269
+ ### PROC-10
270
+ - **Verdict**: CONFIRMED
271
+ - **Corrected severity**: CRITICAL (stands)
272
+ - **Evidence**: end-to-end `do(A); do(B); mark("m1"); undo(); do(C)` →
273
+ `history.length === 1`, `cursor === 1`, `marks === [2]`; the following `redo()` threw
274
+ `TypeError: Cannot read properties of undefined (reading 'apply')`. Ordinary editor sequence;
275
+ `ActionProcessor` is referenced by 51 files.
276
+
277
+ ### PROC-11
278
+ - **Verdict**: CONFIRMED
279
+ - **Corrected severity**: CRITICAL (stands)
280
+ - **Evidence**: `ap.doMany([good, throwing])` — after 60 ms the returned promise is still `pending`
281
+ and jest reported the escaped `action boom` rejection. A subsequent `ap.do(...)` is also still
282
+ `pending` after 60 ms with `history.length` stuck at 1: the processor is bricked.
283
+
284
+ ### PROC-12
285
+ - **Verdict**: CONFIRMED
286
+ - **Evidence**: with `historyMarkLimit = 2`, 6 do+mark pairs leave `marks.length === 6`,
287
+ `history.length === 6`. With `historyMemoryLimit = 3000` and 10×1000-byte actions,
288
+ `historyMemoryUsage === 10000`, `history.length === 10`, no throw. Both caps inert, as claimed;
289
+ `lastMark = min2(marks.length, historyMemoryLimit) - 1` makes `lastMark + 1 < marks.length` always
290
+ false.
291
+
292
+ ### PROC-15
293
+ - **Verdict**: CONFIRMED
294
+ - **Evidence**: `new Future((res, rej) => { rej(new Error("nope")); res(42); }); f.resolve();` →
295
+ `f.state === 2 (RESOLVED)` and `f.then(ok, err)` invoked the **ok** branch with `42`.
296
+
297
+ ### PROC-16
298
+ - **Verdict**: CONFIRMED
299
+ - **Evidence**: a watchdog whose action calls `wd.start()` to re-arm — after 80 ms with a 5 ms
300
+ timeout, `barks === 1` and `isActive() === false`. Silently dead after the first bark.
301
+
302
+ ### PROC-17
303
+ - **Verdict**: CONFIRMED
304
+ - **Evidence**: minimal node repro of the exact shape (`p.catch(()=>{})` by the caller +
305
+ `p.finally(cb)` discarded) produced `unhandledRejection count = 1`. Both cited sites
306
+ (`PromiseWatcher.js:45`, `OnDemandWorkerManager.js:135`) discard the derived promise.
307
+
308
+ ### PROC-18
309
+ - **Verdict**: CONFIRMED
310
+ - **Evidence**: `CompositeProcess([a,b])` through `initialize(); startup(); finalize()` →
311
+ composite `"finalized"`, children `"stopped"` (not `"finalized"`). The path through
312
+ `BaseProcess.finalize` → `this.shutdown()` (the override) is exactly as described.
313
+
314
+ ### PROC-19
315
+ - **Verdict**: CONFIRMED-BUT-DOWNGRADED
316
+ - **Corrected severity**: MAJOR
317
+ - **Evidence**: `extractTransferables({a: null}, [])` →
318
+ `TypeError: Cannot read properties of null (reading 'buffer')`. Confirmed.
319
+ - **Reason for downgrade**: ground 5. `core/process/worker/extractTransferables.js` has **no
320
+ importer anywhere in the repo** — the only occurrences of the name are inside `WorkerBuilder.js`'s
321
+ generated worker source string (line 120), which carries its own `obj === null` guard. So the
322
+ stated blast radius ("any worker payload containing a null field crashes before the message is
323
+ posted") is unreachable on the shipped path.
324
+
325
+ ### PROC-20
326
+ - **Verdict**: CONFIRMED
327
+ - **Corrected severity**: CRITICAL (stands, with a narrow trigger)
328
+ - **Evidence** (read; needs a real Worker to execute): `WorkerProxy.js:136-159` — inside the
329
+ `new Promise` executor, `if (!trySendMessage(...)) { array_remove_first(pending, request); }` and
330
+ nothing else. Neither `resolve` nor `reject` runs, and the request is no longer reachable by
331
+ `__handleMessage`/`__failAllPending`. `WorkerProxy` is used by 9 files. The trigger requires
332
+ `postMessage` to throw (non-cloneable payload), which PROC-21 makes reachable.
333
+
334
+ ### PROC-21
335
+ - **Verdict**: CONFIRMED
336
+ - **Evidence** (read): `WorkerProxy.js:40` is
337
+ `if (value.hasOwnProperty('toJSON') && value.toJSON === "function")` — comparing a function value
338
+ against the string `"function"`. Unreachable branch; the `toJSON` sanitisation path is dead.
339
+
340
+ ### PROC-22
341
+ - **Verdict**: CONFIRMED
342
+ - **Evidence**: nodes `X,P,Q,R` with `Forward` edges `P→X`, `X→Q`, `X→R` → `colorizeGraph` returned
343
+ `[1,1,2,2]` and the library's own `validateGraphColoring(colors, graph)` returned **false** on that
344
+ output. `graphToMatrix` writes only `data[i*V + otherIdx]`.
345
+
346
+ ### PROC-23
347
+ - **Verdict**: CONFIRMED
348
+ - **Evidence**: a graph with `createEdge("A","B", EdgeDirectionType.Backward)` produced DOT with both
349
+ node declarations and **zero** `->` lines. `Backward` is a first-class enum member
350
+ (`graph/Edge.js:8-12`).
351
+
352
+ ### PROC-24
353
+ - **Verdict**: CONFIRMED
354
+ - **Evidence**: `A`,`B` joined by two parallel undirected edges →
355
+ `graph_compute_laplacian_matrix` gave `[[2,-1],[-1,2]]`, row sums `1`; `graph.getNodeDegree("A")`
356
+ is `2`. Correct Laplacian is `[[2,-2],[-2,2]]`.
357
+ - **Note**: the finding files this against `graph_compute_adjacency_matrix.js`, but that function's
358
+ JSDoc explicitly documents "Writes 1 to matrix elements where nodes are connected" — it behaves as
359
+ specified. The actual defect is in the *composition* inside `graph_compute_laplacian_matrix.js`,
360
+ whose own comment ("Uint32 prevents silent overflow for high-degree or **multi-edge** graphs")
361
+ shows multigraphs are in scope. Severity unchanged; fix site is the Laplacian.
362
+
363
+ ### PROC-25
364
+ - **Verdict**: CONFIRMED
365
+ - **Evidence**: reproduced the heap semantics directly — min-heap on `-weight`, elements
366
+ `{10, 3, 5}`, then raised the leaf's weight `3 → 11` and called only `bubbleDown(index)` as
367
+ `mn_graph_collapse_weighted_edge.js:69` does. Heap array stayed `[10, 11, 5]` and `pop()` returned
368
+ **10**, not 11. `BinaryHeap.updateElementScore` (which does `bubbleUp` then `bubbleDown`) exists
369
+ and is the right call.
370
+
371
+ ### PROC-26
372
+ - **Verdict**: CONFIRMED
373
+ - **Evidence** (read; browser-only): `obtainClipBoard.js:8` runs the permission queries **only** when
374
+ `navigator.clipboard === undefined`, then unconditionally `return navigator.clipboard;`. The guard
375
+ is inverted against the function's own doc line ("verifying read/write permissions are granted when
376
+ necessary"): on the common path (clipboard present) it verifies nothing, and on the branch it does
377
+ take it can only ever return `undefined`.
378
+ - **Caveat on the stated scenario**: the specific "resolves with `undefined`" outcome additionally
379
+ requires `navigator.permissions.query({name:"clipboard-read"})` to resolve `"granted"` in an
380
+ environment with no `navigator.clipboard`. In environments where `permissions` is missing or the
381
+ name is unsupported the promise rejects and the file-picker fallback *is* reached. Not demonstrated;
382
+ the inverted guard itself is not in doubt.
383
+
384
+ ---
385
+
386
+ ## core-math
387
+
388
+ ### MATH-1
389
+ - **Verdict**: CONFIRMED
390
+ - **Corrected severity**: CRITICAL (stands)
391
+ - **Evidence**: `sdnoise1(d, -0.9)` → **-22.0446**. Sweep of `x ∈ [-5,5]` at 1e5 points →
392
+ range `[-323.94, +242.86]`; the same sweep over `[0,5]` → `[-0.173, +0.401]`.
393
+ `sdnoise3` max adjacent step over `[-3,3]` = **0.2335** vs **0.00154** over `[1,7]` — a 150×
394
+ discontinuity. Live consumer chain verified: `core/math/noise/curl_noise_3d.js:18` samples
395
+ `sdnoise3(p_z0, x - 231.141, …)` and is imported by
396
+ `engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.js:7`.
397
+
398
+ ### MATH-2
399
+ - **Verdict**: CONFIRMED-BUT-DOWNGRADED
400
+ - **Corrected severity**: MAJOR
401
+ - **Evidence**: `hammersley_sequence(i,2,8)` for `i=0..7` → `[0, 0.625, 0.125, 0.5625, 0.625,
402
+ 0.3125, 0.5625, 0.4375]` — **6 distinct values out of 8**. The sibling `halton_sequence(2,i)`
403
+ correctly gives `[0, 0.5, 0.25, 0.75, 0.125, 0.625, 0.375, 0.875]`.
404
+ - **Reason for downgrade**: ground 5. `hammersley_sequence` has **no importer in the repo**
405
+ (`grep 'from .*hammersley_sequence.js'` → nothing). The report's implied live consumers are wrong:
406
+ `hammersley_sequence_2d.js` does *not* call it — it uses `radical_inverse_VdC_base_2` — and
407
+ `generate_hammersley_jitter.js` goes through `hammersley_sequence_2d`. So nothing shipped samples
408
+ the broken sequence.
409
+
410
+ ### MATH-3
411
+ - **Verdict**: CONFIRMED
412
+ - **Evidence**: with `[1..10]` — `(0.9,0.9)` → **10** (the maximum); `(0.5,0.5)` → **6** while
413
+ `computeStatisticalMedian` on the same data → **5**; `(0,0.4)` → **3**. Existing spec cases on
414
+ `[0..9]` (`(0,0.5) → 2`, `(0.5,1) → 7`) are as the report states.
415
+
416
+ ### MATH-4
417
+ - **Verdict**: CONFIRMED
418
+ - **Evidence**: `roundFair(-2.3, ()=>0.9)` → `-3`, `roundFair(-2.3, ()=>0.1)` → `-3`;
419
+ mean over 10 000 `Math.random` draws = **-3.0** exactly (expected -2.3). Positive control
420
+ `roundFair(2.3, …)` mean = 2.3067, so only the negative path is broken.
421
+
422
+ ### MATH-5
423
+ - **Verdict**: CONFIRMED
424
+ - **Evidence**: `fract(-0.1)` → `-0.1`; `fract(1e10)` → **8589934592**;
425
+ `fract(2147483648.5)` → **4294967296.5**.
426
+ - **Note on ground 4**: `fract.spec.js` does pin the negative-truncation behaviour
427
+ (`expect(fract(-0.1)).toBeCloseTo(-0.1)`), which contradicts the JSDoc's own
428
+ "calculated as x - floor(x)" + GLSL citation. That half is genuinely contested. The 2³¹ wrap is not:
429
+ the result is not even in `(-1,1)` under any reading. Finding stands.
430
+
431
+ ### MATH-6
432
+ - **Verdict**: CONFIRMED-BUT-DOWNGRADED
433
+ - **Corrected severity**: MINOR
434
+ - **Evidence**: `squirrel3(0)` → 436901382, `squirrel3(1)` → 1910996822; over inputs `0..199999` it
435
+ emits **199 763** distinct values (237 collisions), whereas an `Math.imul`/`>>>` implementation of
436
+ the same construction is a bijection on 32 bits. Source confirms `value * BIT_NOISE1` /
437
+ `hash *= BIT_NOISE3` are double multiplies and both shifts are arithmetic `>>`.
438
+ - **Reason for downgrade**: ground 5. `squirrel3` has **zero** importers in the repo; nothing
439
+ contractual promises a bijection (`@returns {number} signed 32-bit integer`); and the file's own
440
+ header already records the symptom ("Personally I found it to have low entropy"). This is a hash
441
+ *quality* deviation, not a wrong-answer defect.
442
+
443
+ ### MATH-7
444
+ - **Verdict**: CONFIRMED
445
+ - **Evidence**: `m = [1,-2,5,3]`; after `m2_svd(U,S,V,sig,m)`, reconstructing with the *exact* helper
446
+ from `m2_svd.spec.js` (`m2_transpose` + two `m2_multiply`) gives **`[1,5,-2,3]`** — the transpose of
447
+ `m`, while the JSDoc asserts `m = U * Σ * V^T`. For `m = [1,2,3,4]`, `m2_polar_decomp` gives
448
+ `S*R = [0.15385, 2.23077, 1.23077, 4.84615]` (neither `m` nor `mᵀ`) while `R*S = [1,3,2,4] = mᵀ`;
449
+ the two polar JSDocs state `m = S*R` and `m = R*S` respectively, so at most one can be right and in
450
+ fact neither holds. The existing spec only reconstructs symmetric inputs, where the transpose is
451
+ invisible.
452
+ - **Note**: I verified the in-package inconsistency and the doc contradiction directly. The claimed
453
+ downstream MLS-MPM consequence is outside my scope and was not independently verified.
454
+
455
+ ### MATH-8
456
+ - **Verdict**: CONFIRMED-BUT-DOWNGRADED
457
+ - **Corrected severity**: MINOR
458
+ - **Evidence**: round-tripped tables of 255 / 256 / 257 entries through
459
+ `toBinaryBuffer`/`fromBinaryBuffer`: data length after = 255 / **0** / 257. Exactly-256 entries
460
+ reconstruct as an empty table, silently.
461
+ - **Reason for downgrade**: ground 4/5. Both methods are marked
462
+ `@deprecated Use serialization adapter instead`, so the broken path is not the supported one.
463
+
464
+ ### MATH-9 / MATH-10 (MINOR, verified opportunistically)
465
+ - **Verdict**: CONFIRMED. `copysign(3,0)` → `-3`, `copysign(3,NaN)` → `-3`;
466
+ `softmax([1000,1],0,2)` → `NaN`, `softmax([800,801],1,2)` → `NaN`.
467
+
468
+ ---
469
+
470
+ ## core-science
471
+
472
+ ### SCI-1
473
+ - **Verdict**: CONFIRMED
474
+ - **Evidence**: `c = new Color(1,0,0,0.25)` → `color_darken(c,0.5).a`, `color_lighten(c,0.5).a`,
475
+ `color_saturate(c,0.5).a`, `color_desaturate(c,0.5).a` all measured **1**, while
476
+ `color_darken(c,0).a === 0.25` (the fast path returns the input). The alpha discontinuity at
477
+ `amount → 0` is real.
478
+
479
+ ### SCI-2
480
+ - **Verdict**: CONFIRMED
481
+ - **Evidence**: `Color.parse('rgba(0,0,0,1)')` with a listener attached, then
482
+ `c.parse('rgba(0,0,0,0.5)')` → `c.a === 0.5` but the listener fired **0** times.
483
+ `new Color(0,0,0,1).parse('#FF000080')` fired with payload
484
+ `[1, 0, 0, 0.50196, 0, 0, 0, 0.50196]` — the 8th argument (previous alpha) should be `1`.
485
+
486
+ ### SCI-3
487
+ - **Verdict**: CONFIRMED
488
+ - **Evidence**: round-tripping through the module's own forward model —
489
+ `kelvin_to_rgb` at 1500 K → `[1, 0.419469, 0]` → `rgb_to_kelvin` → **1000**;
490
+ 1900 K → **1000**; 2000 K → **1000**; 3000 K → 3000 and 5000 K → 5000 round-trip exactly.
491
+ The collapse is confined to the `b === 0` band exactly as described.
492
+
493
+ ### SCI-5 / SCI-6 / SCI-7 (MINOR, verified opportunistically)
494
+ - **Verdict**: CONFIRMED. `new Color(1,0,0,1).toUint32()` → `-16776961`, white → `-1`.
495
+ `setHCL(-1e-17, 1, 0.5)` produced NaN channels (caught by `assert.notNaN` under the dev harness;
496
+ stripped in production, so the NaN lands). `parse_color('#fff')` → `[255, 15, NaN, 1]`.
497
+
498
+ ---
499
+
500
+ ## Tally
501
+
502
+ 67 findings checked — all 13 CRITICALs, 45 MAJORs, and 9 MINORs verified opportunistically.
503
+ **58 confirmed as stated, 9 confirmed with corrected (lower) severity, 0 refuted.**
504
+
505
+ Downgraded: COLL-1, COLL-2, COLL-3, BIN-2, PROC-1, PROC-19, MATH-2, MATH-6, MATH-8.
506
+ Every downgrade is ground-5 severity inflation: the defect is real but the stated blast radius does
507
+ not exist on any shipped path (no importer / assert-only reach / guarded duplicate is what actually
508
+ ships), or the code is deprecated, or the API is self-consistent under a different naming.
509
+
510
+ CRITICALs that survive at CRITICAL: BIN-1, PROC-6, PROC-10, PROC-11, PROC-20, MATH-1 (6 of 13).
511
+ Downgraded to MAJOR: COLL-1, COLL-2, COLL-3, BIN-2, PROC-1, PROC-19, MATH-2 (7 of 13).