@photivra/engine 0.6.0 → 1.0.0

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 (749) hide show
  1. package/AGENTS.md +674 -0
  2. package/CHANGELOG.md +186 -0
  3. package/CITATION.cff +1 -1
  4. package/CONTRIBUTING.md +76 -0
  5. package/DCO +33 -0
  6. package/NODE_SUPPORT.md +37 -0
  7. package/NOTICE +2 -0
  8. package/README.md +138 -71
  9. package/SECURITY.md +55 -0
  10. package/THIRD_PARTY.md +63 -0
  11. package/dist/camera/equivalent-focal-length.d.ts +9 -0
  12. package/dist/camera/equivalent-focal-length.d.ts.map +1 -1
  13. package/dist/camera/equivalent-focal-length.js +9 -0
  14. package/dist/camera/equivalent-focal-length.js.map +1 -1
  15. package/dist/camera/field-of-view.d.ts +13 -0
  16. package/dist/camera/field-of-view.d.ts.map +1 -1
  17. package/dist/camera/field-of-view.js +13 -0
  18. package/dist/camera/field-of-view.js.map +1 -1
  19. package/dist/camera/projected-object-size.d.ts +8 -0
  20. package/dist/camera/projected-object-size.d.ts.map +1 -1
  21. package/dist/camera/projected-object-size.js +8 -0
  22. package/dist/camera/projected-object-size.js.map +1 -1
  23. package/dist/capture/capture-export-metadata.d.ts +60 -0
  24. package/dist/capture/capture-export-metadata.d.ts.map +1 -0
  25. package/dist/capture/capture-export-metadata.js +62 -0
  26. package/dist/capture/capture-export-metadata.js.map +1 -0
  27. package/dist/capture/environment-raw-producer.d.ts +55 -0
  28. package/dist/capture/environment-raw-producer.d.ts.map +1 -0
  29. package/dist/capture/environment-raw-producer.js +88 -0
  30. package/dist/capture/environment-raw-producer.js.map +1 -0
  31. package/dist/capture/export-jpeg.d.ts +12 -0
  32. package/dist/capture/export-jpeg.d.ts.map +1 -0
  33. package/dist/capture/export-jpeg.js +126 -0
  34. package/dist/capture/export-jpeg.js.map +1 -0
  35. package/dist/capture/export-tiff.d.ts +45 -0
  36. package/dist/capture/export-tiff.d.ts.map +1 -0
  37. package/dist/capture/export-tiff.js +129 -0
  38. package/dist/capture/export-tiff.js.map +1 -0
  39. package/dist/capture/focus-control.d.ts +210 -0
  40. package/dist/capture/focus-control.d.ts.map +1 -0
  41. package/dist/capture/focus-control.js +664 -0
  42. package/dist/capture/focus-control.js.map +1 -0
  43. package/dist/capture/linear-encoding.d.ts +59 -0
  44. package/dist/capture/linear-encoding.d.ts.map +1 -0
  45. package/dist/capture/linear-encoding.js +98 -0
  46. package/dist/capture/linear-encoding.js.map +1 -0
  47. package/dist/capture/photographic-export.d.ts +135 -0
  48. package/dist/capture/photographic-export.d.ts.map +1 -0
  49. package/dist/capture/photographic-export.js +273 -0
  50. package/dist/capture/photographic-export.js.map +1 -0
  51. package/dist/capture/raw-frame-limits.d.ts +12 -0
  52. package/dist/capture/raw-frame-limits.d.ts.map +1 -0
  53. package/dist/capture/raw-frame-limits.js +13 -0
  54. package/dist/capture/raw-frame-limits.js.map +1 -0
  55. package/dist/capture/raw-frame-reconstruction.d.ts +48 -0
  56. package/dist/capture/raw-frame-reconstruction.d.ts.map +1 -0
  57. package/dist/capture/raw-frame-reconstruction.js +146 -0
  58. package/dist/capture/raw-frame-reconstruction.js.map +1 -0
  59. package/dist/capture/release-sequence.d.ts +120 -0
  60. package/dist/capture/release-sequence.d.ts.map +1 -0
  61. package/dist/capture/release-sequence.js +446 -0
  62. package/dist/capture/release-sequence.js.map +1 -0
  63. package/dist/capture/sensor-raw-frame.d.ts +34 -0
  64. package/dist/capture/sensor-raw-frame.d.ts.map +1 -0
  65. package/dist/capture/sensor-raw-frame.js +106 -0
  66. package/dist/capture/sensor-raw-frame.js.map +1 -0
  67. package/dist/capture/sensor-raw-producer.d.ts +51 -0
  68. package/dist/capture/sensor-raw-producer.d.ts.map +1 -0
  69. package/dist/capture/sensor-raw-producer.js +235 -0
  70. package/dist/capture/sensor-raw-producer.js.map +1 -0
  71. package/dist/capture/simulated-capture.d.ts +125 -0
  72. package/dist/capture/simulated-capture.d.ts.map +1 -0
  73. package/dist/capture/simulated-capture.js +248 -0
  74. package/dist/capture/simulated-capture.js.map +1 -0
  75. package/dist/color/capture-color.d.ts +73 -0
  76. package/dist/color/capture-color.d.ts.map +1 -0
  77. package/dist/color/capture-color.js +145 -0
  78. package/dist/color/capture-color.js.map +1 -0
  79. package/dist/color/sensor-color-development.d.ts +23 -0
  80. package/dist/color/sensor-color-development.d.ts.map +1 -0
  81. package/dist/color/sensor-color-development.js +56 -0
  82. package/dist/color/sensor-color-development.js.map +1 -0
  83. package/dist/color/white-balance.d.ts +175 -0
  84. package/dist/color/white-balance.d.ts.map +1 -0
  85. package/dist/color/white-balance.js +606 -0
  86. package/dist/color/white-balance.js.map +1 -0
  87. package/dist/composition/image-formation-plan.d.ts +481 -0
  88. package/dist/composition/image-formation-plan.d.ts.map +1 -0
  89. package/dist/composition/image-formation-plan.js +2499 -0
  90. package/dist/composition/image-formation-plan.js.map +1 -0
  91. package/dist/composition/plan-consumer.d.ts +53 -0
  92. package/dist/composition/plan-consumer.d.ts.map +1 -0
  93. package/dist/composition/plan-consumer.js +119 -0
  94. package/dist/composition/plan-consumer.js.map +1 -0
  95. package/dist/core/calculation-result.d.ts.map +1 -1
  96. package/dist/core/calculation-result.js +6 -0
  97. package/dist/core/calculation-result.js.map +1 -1
  98. package/dist/core/canonical-json.d.ts +18 -0
  99. package/dist/core/canonical-json.d.ts.map +1 -0
  100. package/dist/core/canonical-json.js +44 -0
  101. package/dist/core/canonical-json.js.map +1 -0
  102. package/dist/core/configuration-error.d.ts +6 -0
  103. package/dist/core/configuration-error.d.ts.map +1 -1
  104. package/dist/core/configuration-error.js +6 -0
  105. package/dist/core/configuration-error.js.map +1 -1
  106. package/dist/core/evidence-provenance.d.ts +6 -0
  107. package/dist/core/evidence-provenance.d.ts.map +1 -1
  108. package/dist/core/evidence-provenance.js +7 -0
  109. package/dist/core/evidence-provenance.js.map +1 -1
  110. package/dist/core/image-formation.d.ts +9 -3
  111. package/dist/core/image-formation.d.ts.map +1 -1
  112. package/dist/core/image-formation.js +29 -5
  113. package/dist/core/image-formation.js.map +1 -1
  114. package/dist/core/owned-data.d.ts +25 -0
  115. package/dist/core/owned-data.d.ts.map +1 -0
  116. package/dist/core/owned-data.js +34 -0
  117. package/dist/core/owned-data.js.map +1 -0
  118. package/dist/core/record-validation.d.ts +17 -0
  119. package/dist/core/record-validation.d.ts.map +1 -0
  120. package/dist/core/record-validation.js +44 -0
  121. package/dist/core/record-validation.js.map +1 -0
  122. package/dist/core/scientific-assurance.d.ts +101 -0
  123. package/dist/core/scientific-assurance.d.ts.map +1 -0
  124. package/dist/core/scientific-assurance.js +301 -0
  125. package/dist/core/scientific-assurance.js.map +1 -0
  126. package/dist/core/spectral-composition.d.ts +106 -0
  127. package/dist/core/spectral-composition.d.ts.map +1 -0
  128. package/dist/core/spectral-composition.js +334 -0
  129. package/dist/core/spectral-composition.js.map +1 -0
  130. package/dist/core/spectral.d.ts +34 -0
  131. package/dist/core/spectral.d.ts.map +1 -0
  132. package/dist/core/spectral.js +57 -0
  133. package/dist/core/spectral.js.map +1 -0
  134. package/dist/core/validation.d.ts +6 -0
  135. package/dist/core/validation.d.ts.map +1 -1
  136. package/dist/core/validation.js +6 -0
  137. package/dist/core/validation.js.map +1 -1
  138. package/dist/core/version.d.ts +14 -0
  139. package/dist/core/version.d.ts.map +1 -0
  140. package/dist/core/version.js +15 -0
  141. package/dist/core/version.js.map +1 -0
  142. package/dist/equipment/exposure-capabilities.d.ts +125 -0
  143. package/dist/equipment/exposure-capabilities.d.ts.map +1 -0
  144. package/dist/equipment/exposure-capabilities.js +391 -0
  145. package/dist/equipment/exposure-capabilities.js.map +1 -0
  146. package/dist/equipment/generic-tier-assets.d.ts +82 -0
  147. package/dist/equipment/generic-tier-assets.d.ts.map +1 -0
  148. package/dist/equipment/generic-tier-assets.js +119 -0
  149. package/dist/equipment/generic-tier-assets.js.map +1 -0
  150. package/dist/equipment/generic-tier-presets.d.ts +57 -0
  151. package/dist/equipment/generic-tier-presets.d.ts.map +1 -0
  152. package/dist/equipment/generic-tier-presets.js +122 -0
  153. package/dist/equipment/generic-tier-presets.js.map +1 -0
  154. package/dist/equipment/iso-capabilities.d.ts +143 -0
  155. package/dist/equipment/iso-capabilities.d.ts.map +1 -0
  156. package/dist/equipment/iso-capabilities.js +578 -0
  157. package/dist/equipment/iso-capabilities.js.map +1 -0
  158. package/dist/equipment/metering-capabilities.d.ts +58 -0
  159. package/dist/equipment/metering-capabilities.d.ts.map +1 -0
  160. package/dist/equipment/metering-capabilities.js +151 -0
  161. package/dist/equipment/metering-capabilities.js.map +1 -0
  162. package/dist/equipment/release-capabilities.d.ts +33 -0
  163. package/dist/equipment/release-capabilities.d.ts.map +1 -0
  164. package/dist/equipment/release-capabilities.js +176 -0
  165. package/dist/equipment/release-capabilities.js.map +1 -0
  166. package/dist/exposure/exposure-duration-control.d.ts +72 -0
  167. package/dist/exposure/exposure-duration-control.d.ts.map +1 -0
  168. package/dist/exposure/exposure-duration-control.js +161 -0
  169. package/dist/exposure/exposure-duration-control.js.map +1 -0
  170. package/dist/exposure/exposure-mode-resolver.d.ts +637 -0
  171. package/dist/exposure/exposure-mode-resolver.d.ts.map +1 -0
  172. package/dist/exposure/exposure-mode-resolver.js +1905 -0
  173. package/dist/exposure/exposure-mode-resolver.js.map +1 -0
  174. package/dist/exposure/exposure.d.ts +8 -0
  175. package/dist/exposure/exposure.d.ts.map +1 -1
  176. package/dist/exposure/exposure.js +8 -0
  177. package/dist/exposure/exposure.js.map +1 -1
  178. package/dist/exposure/flash.d.ts +179 -0
  179. package/dist/exposure/flash.d.ts.map +1 -0
  180. package/dist/exposure/flash.js +644 -0
  181. package/dist/exposure/flash.js.map +1 -0
  182. package/dist/exposure/metering-scene-radiance.d.ts +72 -0
  183. package/dist/exposure/metering-scene-radiance.d.ts.map +1 -0
  184. package/dist/exposure/metering-scene-radiance.js +222 -0
  185. package/dist/exposure/metering-scene-radiance.js.map +1 -0
  186. package/dist/exposure/metering-target.d.ts +67 -0
  187. package/dist/exposure/metering-target.d.ts.map +1 -0
  188. package/dist/exposure/metering-target.js +265 -0
  189. package/dist/exposure/metering-target.js.map +1 -0
  190. package/dist/exposure/metering-temporal.d.ts +76 -0
  191. package/dist/exposure/metering-temporal.d.ts.map +1 -0
  192. package/dist/exposure/metering-temporal.js +210 -0
  193. package/dist/exposure/metering-temporal.js.map +1 -0
  194. package/dist/exposure/metering.d.ts +124 -0
  195. package/dist/exposure/metering.d.ts.map +1 -0
  196. package/dist/exposure/metering.js +422 -0
  197. package/dist/exposure/metering.js.map +1 -0
  198. package/dist/exposure/program-line.d.ts +29 -0
  199. package/dist/exposure/program-line.d.ts.map +1 -0
  200. package/dist/exposure/program-line.js +126 -0
  201. package/dist/exposure/program-line.js.map +1 -0
  202. package/dist/index.d.ts +87 -6
  203. package/dist/index.d.ts.map +1 -1
  204. package/dist/index.js +85 -6
  205. package/dist/index.js.map +1 -1
  206. package/dist/motion/camera-rotation.d.ts +16 -0
  207. package/dist/motion/camera-rotation.d.ts.map +1 -1
  208. package/dist/motion/camera-rotation.js +16 -0
  209. package/dist/motion/camera-rotation.js.map +1 -1
  210. package/dist/motion/capture-rotation-inverse-mapping.d.ts +13 -0
  211. package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +1 -1
  212. package/dist/motion/capture-rotation-inverse-mapping.js +13 -0
  213. package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
  214. package/dist/motion/capture-rotation-temporal-quadrature.d.ts +15 -0
  215. package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +1 -1
  216. package/dist/motion/capture-rotation-temporal-quadrature.js +15 -0
  217. package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
  218. package/dist/motion/capture-rotation-trajectory.d.ts +15 -0
  219. package/dist/motion/capture-rotation-trajectory.d.ts.map +1 -1
  220. package/dist/motion/capture-rotation-trajectory.js +15 -0
  221. package/dist/motion/capture-rotation-trajectory.js.map +1 -1
  222. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +119 -0
  223. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +1 -0
  224. package/dist/motion/capture-translation-parallax-temporal-quadrature.js +263 -0
  225. package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -0
  226. package/dist/motion/extended-object-projection.d.ts +175 -0
  227. package/dist/motion/extended-object-projection.d.ts.map +1 -0
  228. package/dist/motion/extended-object-projection.js +402 -0
  229. package/dist/motion/extended-object-projection.js.map +1 -0
  230. package/dist/motion/projected-motion.d.ts +11 -0
  231. package/dist/motion/projected-motion.d.ts.map +1 -1
  232. package/dist/motion/projected-motion.js +11 -0
  233. package/dist/motion/projected-motion.js.map +1 -1
  234. package/dist/optics/aperture.d.ts +9 -0
  235. package/dist/optics/aperture.d.ts.map +1 -1
  236. package/dist/optics/aperture.js +9 -0
  237. package/dist/optics/aperture.js.map +1 -1
  238. package/dist/optics/circle-of-confusion.d.ts +8 -0
  239. package/dist/optics/circle-of-confusion.d.ts.map +1 -1
  240. package/dist/optics/circle-of-confusion.js +8 -0
  241. package/dist/optics/circle-of-confusion.js.map +1 -1
  242. package/dist/optics/complex-pupil-psf.d.ts +128 -0
  243. package/dist/optics/complex-pupil-psf.d.ts.map +1 -0
  244. package/dist/optics/complex-pupil-psf.js +462 -0
  245. package/dist/optics/complex-pupil-psf.js.map +1 -0
  246. package/dist/optics/depth-of-field.d.ts +18 -0
  247. package/dist/optics/depth-of-field.d.ts.map +1 -1
  248. package/dist/optics/depth-of-field.js +29 -4
  249. package/dist/optics/depth-of-field.js.map +1 -1
  250. package/dist/optics/diffraction.d.ts +8 -0
  251. package/dist/optics/diffraction.d.ts.map +1 -1
  252. package/dist/optics/diffraction.js +8 -0
  253. package/dist/optics/diffraction.js.map +1 -1
  254. package/dist/optics/focus-breathing.d.ts +13 -0
  255. package/dist/optics/focus-breathing.d.ts.map +1 -1
  256. package/dist/optics/focus-breathing.js +13 -0
  257. package/dist/optics/focus-breathing.js.map +1 -1
  258. package/dist/optics/focus-state.d.ts +47 -0
  259. package/dist/optics/focus-state.d.ts.map +1 -0
  260. package/dist/optics/focus-state.js +78 -0
  261. package/dist/optics/focus-state.js.map +1 -0
  262. package/dist/optics/front-of-lens-filter.d.ts +114 -0
  263. package/dist/optics/front-of-lens-filter.d.ts.map +1 -0
  264. package/dist/optics/front-of-lens-filter.js +468 -0
  265. package/dist/optics/front-of-lens-filter.js.map +1 -0
  266. package/dist/optics/illumination-vignetting.d.ts +9 -0
  267. package/dist/optics/illumination-vignetting.d.ts.map +1 -1
  268. package/dist/optics/illumination-vignetting.js +9 -0
  269. package/dist/optics/illumination-vignetting.js.map +1 -1
  270. package/dist/optics/lateral-chromatic-aberration.d.ts +11 -0
  271. package/dist/optics/lateral-chromatic-aberration.d.ts.map +1 -1
  272. package/dist/optics/lateral-chromatic-aberration.js +11 -0
  273. package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
  274. package/dist/optics/lens-psf-profile.d.ts +217 -0
  275. package/dist/optics/lens-psf-profile.d.ts.map +1 -0
  276. package/dist/optics/lens-psf-profile.js +823 -0
  277. package/dist/optics/lens-psf-profile.js.map +1 -0
  278. package/dist/optics/polygon-diffraction.d.ts +67 -0
  279. package/dist/optics/polygon-diffraction.d.ts.map +1 -0
  280. package/dist/optics/polygon-diffraction.js +145 -0
  281. package/dist/optics/polygon-diffraction.js.map +1 -0
  282. package/dist/optics/profile-contract.d.ts +42 -0
  283. package/dist/optics/profile-contract.d.ts.map +1 -0
  284. package/dist/optics/profile-contract.js +92 -0
  285. package/dist/optics/profile-contract.js.map +1 -0
  286. package/dist/optics/psf-foundation.d.ts +16 -3
  287. package/dist/optics/psf-foundation.d.ts.map +1 -1
  288. package/dist/optics/psf-foundation.js +28 -15
  289. package/dist/optics/psf-foundation.js.map +1 -1
  290. package/dist/optics/radial-distortion.d.ts +18 -0
  291. package/dist/optics/radial-distortion.d.ts.map +1 -1
  292. package/dist/optics/radial-distortion.js +18 -0
  293. package/dist/optics/radial-distortion.js.map +1 -1
  294. package/dist/optics/scene-to-sensor-irradiance.d.ts +213 -0
  295. package/dist/optics/scene-to-sensor-irradiance.d.ts.map +1 -0
  296. package/dist/optics/scene-to-sensor-irradiance.js +662 -0
  297. package/dist/optics/scene-to-sensor-irradiance.js.map +1 -0
  298. package/dist/optics/scene-to-sensor-quadrature.d.ts +63 -0
  299. package/dist/optics/scene-to-sensor-quadrature.d.ts.map +1 -0
  300. package/dist/optics/scene-to-sensor-quadrature.js +82 -0
  301. package/dist/optics/scene-to-sensor-quadrature.js.map +1 -0
  302. package/dist/optics/sensor-environment-query.d.ts +60 -0
  303. package/dist/optics/sensor-environment-query.d.ts.map +1 -0
  304. package/dist/optics/sensor-environment-query.js +50 -0
  305. package/dist/optics/sensor-environment-query.js.map +1 -0
  306. package/dist/optics/sensor-psf-quadrature.d.ts +70 -0
  307. package/dist/optics/sensor-psf-quadrature.d.ts.map +1 -0
  308. package/dist/optics/sensor-psf-quadrature.js +101 -0
  309. package/dist/optics/sensor-psf-quadrature.js.map +1 -0
  310. package/dist/optics/sensor-psf-support.d.ts +20 -0
  311. package/dist/optics/sensor-psf-support.d.ts.map +1 -0
  312. package/dist/optics/sensor-psf-support.js +13 -0
  313. package/dist/optics/sensor-psf-support.js.map +1 -0
  314. package/dist/optics/stray-light.d.ts +91 -0
  315. package/dist/optics/stray-light.d.ts.map +1 -0
  316. package/dist/optics/stray-light.js +110 -0
  317. package/dist/optics/stray-light.js.map +1 -0
  318. package/dist/optics/thin-lens.d.ts +8 -0
  319. package/dist/optics/thin-lens.d.ts.map +1 -1
  320. package/dist/optics/thin-lens.js +8 -0
  321. package/dist/optics/thin-lens.js.map +1 -1
  322. package/dist/output/capture-corrected-sdr.d.ts +49 -0
  323. package/dist/output/capture-corrected-sdr.d.ts.map +1 -0
  324. package/dist/output/capture-corrected-sdr.js +149 -0
  325. package/dist/output/capture-corrected-sdr.js.map +1 -0
  326. package/dist/output/capture-geometry.d.ts.map +1 -1
  327. package/dist/output/capture-geometry.js +8 -0
  328. package/dist/output/capture-geometry.js.map +1 -1
  329. package/dist/output/capture-sdr.d.ts +49 -0
  330. package/dist/output/capture-sdr.d.ts.map +1 -0
  331. package/dist/output/capture-sdr.js +90 -0
  332. package/dist/output/capture-sdr.js.map +1 -0
  333. package/dist/output/crop.d.ts +6 -0
  334. package/dist/output/crop.d.ts.map +1 -1
  335. package/dist/output/crop.js +6 -0
  336. package/dist/output/crop.js.map +1 -1
  337. package/dist/output/geometric-transforms.d.ts +137 -0
  338. package/dist/output/geometric-transforms.d.ts.map +1 -0
  339. package/dist/output/geometric-transforms.js +225 -0
  340. package/dist/output/geometric-transforms.js.map +1 -0
  341. package/dist/output/lens-corrections.d.ts +121 -0
  342. package/dist/output/lens-corrections.d.ts.map +1 -0
  343. package/dist/output/lens-corrections.js +210 -0
  344. package/dist/output/lens-corrections.js.map +1 -0
  345. package/dist/output/sdr-rendering.d.ts +81 -0
  346. package/dist/output/sdr-rendering.d.ts.map +1 -0
  347. package/dist/output/sdr-rendering.js +106 -0
  348. package/dist/output/sdr-rendering.js.map +1 -0
  349. package/dist/output/subject-framing-crop.d.ts +8 -0
  350. package/dist/output/subject-framing-crop.d.ts.map +1 -1
  351. package/dist/output/subject-framing-crop.js +8 -0
  352. package/dist/output/subject-framing-crop.js.map +1 -1
  353. package/dist/schema/camera.d.ts +6 -0
  354. package/dist/schema/camera.d.ts.map +1 -1
  355. package/dist/schema/illumination-spectral.d.ts +51 -0
  356. package/dist/schema/illumination-spectral.d.ts.map +1 -0
  357. package/dist/schema/illumination-spectral.js +132 -0
  358. package/dist/schema/illumination-spectral.js.map +1 -0
  359. package/dist/schema/illumination-temporal.d.ts +156 -0
  360. package/dist/schema/illumination-temporal.d.ts.map +1 -0
  361. package/dist/schema/illumination-temporal.js +554 -0
  362. package/dist/schema/illumination-temporal.js.map +1 -0
  363. package/dist/schema/illumination.d.ts +138 -0
  364. package/dist/schema/illumination.d.ts.map +1 -0
  365. package/dist/schema/illumination.js +483 -0
  366. package/dist/schema/illumination.js.map +1 -0
  367. package/dist/schema/scene-radiance-temporal.d.ts +107 -0
  368. package/dist/schema/scene-radiance-temporal.d.ts.map +1 -0
  369. package/dist/schema/scene-radiance-temporal.js +259 -0
  370. package/dist/schema/scene-radiance-temporal.js.map +1 -0
  371. package/dist/schema/scene-radiance.d.ts +185 -0
  372. package/dist/schema/scene-radiance.d.ts.map +1 -0
  373. package/dist/schema/scene-radiance.js +535 -0
  374. package/dist/schema/scene-radiance.js.map +1 -0
  375. package/dist/schema/scene.d.ts +7 -0
  376. package/dist/schema/scene.d.ts.map +1 -1
  377. package/dist/schema/validation.d.ts.map +1 -1
  378. package/dist/schema/validation.js +7 -0
  379. package/dist/schema/validation.js.map +1 -1
  380. package/dist/sensor/accumulated-charge.d.ts +199 -0
  381. package/dist/sensor/accumulated-charge.d.ts.map +1 -0
  382. package/dist/sensor/accumulated-charge.js +450 -0
  383. package/dist/sensor/accumulated-charge.js.map +1 -0
  384. package/dist/sensor/architecture.d.ts +48 -13
  385. package/dist/sensor/architecture.d.ts.map +1 -1
  386. package/dist/sensor/architecture.js +58 -16
  387. package/dist/sensor/architecture.js.map +1 -1
  388. package/dist/sensor/camera-saturation-capacity.d.ts +138 -0
  389. package/dist/sensor/camera-saturation-capacity.d.ts.map +1 -0
  390. package/dist/sensor/camera-saturation-capacity.js +356 -0
  391. package/dist/sensor/camera-saturation-capacity.js.map +1 -0
  392. package/dist/sensor/capture-color-sampling-binding.d.ts +1 -0
  393. package/dist/sensor/capture-color-sampling-binding.d.ts.map +1 -1
  394. package/dist/sensor/capture-color-sampling-binding.js +14 -0
  395. package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
  396. package/dist/sensor/capture-mode-timing.d.ts +63 -0
  397. package/dist/sensor/capture-mode-timing.d.ts.map +1 -0
  398. package/dist/sensor/capture-mode-timing.js +270 -0
  399. package/dist/sensor/capture-mode-timing.js.map +1 -0
  400. package/dist/sensor/capture-mode.d.ts.map +1 -1
  401. package/dist/sensor/capture-mode.js +13 -0
  402. package/dist/sensor/capture-mode.js.map +1 -1
  403. package/dist/sensor/color-sampling.d.ts.map +1 -1
  404. package/dist/sensor/color-sampling.js +19 -0
  405. package/dist/sensor/color-sampling.js.map +1 -1
  406. package/dist/sensor/constant-rate-temporal-integration.d.ts +126 -0
  407. package/dist/sensor/constant-rate-temporal-integration.d.ts.map +1 -0
  408. package/dist/sensor/constant-rate-temporal-integration.js +382 -0
  409. package/dist/sensor/constant-rate-temporal-integration.js.map +1 -0
  410. package/dist/sensor/dark-current.d.ts +169 -0
  411. package/dist/sensor/dark-current.d.ts.map +1 -0
  412. package/dist/sensor/dark-current.js +427 -0
  413. package/dist/sensor/dark-current.js.map +1 -0
  414. package/dist/sensor/environment-photo-signal.d.ts +123 -0
  415. package/dist/sensor/environment-photo-signal.d.ts.map +1 -0
  416. package/dist/sensor/environment-photo-signal.js +186 -0
  417. package/dist/sensor/environment-photo-signal.js.map +1 -0
  418. package/dist/sensor/eqe-electron-rate.d.ts +107 -0
  419. package/dist/sensor/eqe-electron-rate.d.ts.map +1 -0
  420. package/dist/sensor/eqe-electron-rate.js +561 -0
  421. package/dist/sensor/eqe-electron-rate.js.map +1 -0
  422. package/dist/sensor/eqe-local-exposure.d.ts +65 -0
  423. package/dist/sensor/eqe-local-exposure.d.ts.map +1 -0
  424. package/dist/sensor/eqe-local-exposure.js +84 -0
  425. package/dist/sensor/eqe-local-exposure.js.map +1 -0
  426. package/dist/sensor/eqe-temporal-exposure.d.ts +55 -0
  427. package/dist/sensor/eqe-temporal-exposure.d.ts.map +1 -0
  428. package/dist/sensor/eqe-temporal-exposure.js +62 -0
  429. package/dist/sensor/eqe-temporal-exposure.js.map +1 -0
  430. package/dist/sensor/exposure-window.d.ts +14 -0
  431. package/dist/sensor/exposure-window.d.ts.map +1 -1
  432. package/dist/sensor/exposure-window.js +14 -0
  433. package/dist/sensor/exposure-window.js.map +1 -1
  434. package/dist/sensor/iso-signal-chain.d.ts +148 -0
  435. package/dist/sensor/iso-signal-chain.d.ts.map +1 -0
  436. package/dist/sensor/iso-signal-chain.js +411 -0
  437. package/dist/sensor/iso-signal-chain.js.map +1 -0
  438. package/dist/sensor/local-exposure-binding.d.ts +87 -0
  439. package/dist/sensor/local-exposure-binding.d.ts.map +1 -0
  440. package/dist/sensor/local-exposure-binding.js +214 -0
  441. package/dist/sensor/local-exposure-binding.js.map +1 -0
  442. package/dist/sensor/optical-stack.d.ts.map +1 -1
  443. package/dist/sensor/optical-stack.js +17 -0
  444. package/dist/sensor/optical-stack.js.map +1 -1
  445. package/dist/sensor/photon-energy.d.ts +97 -0
  446. package/dist/sensor/photon-energy.d.ts.map +1 -0
  447. package/dist/sensor/photon-energy.js +390 -0
  448. package/dist/sensor/photon-energy.js.map +1 -0
  449. package/dist/sensor/physical-charge-capacity.d.ts +130 -0
  450. package/dist/sensor/physical-charge-capacity.d.ts.map +1 -0
  451. package/dist/sensor/physical-charge-capacity.js +345 -0
  452. package/dist/sensor/physical-charge-capacity.js.map +1 -0
  453. package/dist/sensor/pixel-pitch.d.ts +6 -0
  454. package/dist/sensor/pixel-pitch.d.ts.map +1 -1
  455. package/dist/sensor/pixel-pitch.js +6 -0
  456. package/dist/sensor/pixel-pitch.js.map +1 -1
  457. package/dist/sensor/radiometry-readiness.d.ts +10 -0
  458. package/dist/sensor/radiometry-readiness.d.ts.map +1 -1
  459. package/dist/sensor/radiometry-readiness.js +10 -0
  460. package/dist/sensor/radiometry-readiness.js.map +1 -1
  461. package/dist/sensor/raw-readout.d.ts +314 -0
  462. package/dist/sensor/raw-readout.d.ts.map +1 -0
  463. package/dist/sensor/raw-readout.js +914 -0
  464. package/dist/sensor/raw-readout.js.map +1 -0
  465. package/dist/sensor/raw-reconstruction.d.ts +170 -0
  466. package/dist/sensor/raw-reconstruction.d.ts.map +1 -0
  467. package/dist/sensor/raw-reconstruction.js +424 -0
  468. package/dist/sensor/raw-reconstruction.js.map +1 -0
  469. package/dist/sensor/readout-exposure-linkage.d.ts +12 -0
  470. package/dist/sensor/readout-exposure-linkage.d.ts.map +1 -1
  471. package/dist/sensor/readout-exposure-linkage.js +12 -0
  472. package/dist/sensor/readout-exposure-linkage.js.map +1 -1
  473. package/dist/sensor/readout-timing.d.ts +13 -0
  474. package/dist/sensor/readout-timing.d.ts.map +1 -1
  475. package/dist/sensor/readout-timing.js +13 -0
  476. package/dist/sensor/readout-timing.js.map +1 -1
  477. package/dist/sensor/response-application-compatibility.d.ts +136 -0
  478. package/dist/sensor/response-application-compatibility.d.ts.map +1 -0
  479. package/dist/sensor/response-application-compatibility.js +408 -0
  480. package/dist/sensor/response-application-compatibility.js.map +1 -0
  481. package/dist/sensor/response-operating-range.d.ts +173 -0
  482. package/dist/sensor/response-operating-range.d.ts.map +1 -0
  483. package/dist/sensor/response-operating-range.js +672 -0
  484. package/dist/sensor/response-operating-range.js.map +1 -0
  485. package/dist/sensor/responsivity-photocurrent.d.ts +158 -0
  486. package/dist/sensor/responsivity-photocurrent.d.ts.map +1 -0
  487. package/dist/sensor/responsivity-photocurrent.js +644 -0
  488. package/dist/sensor/responsivity-photocurrent.js.map +1 -0
  489. package/dist/sensor/sampling-aperture.d.ts.map +1 -1
  490. package/dist/sensor/sampling-aperture.js +14 -0
  491. package/dist/sensor/sampling-aperture.js.map +1 -1
  492. package/dist/sensor/scene-eqe-temporal-exposure.d.ts +45 -0
  493. package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +1 -0
  494. package/dist/sensor/scene-eqe-temporal-exposure.js +64 -0
  495. package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -0
  496. package/dist/sensor/sensor-geometry.d.ts +12 -0
  497. package/dist/sensor/sensor-geometry.d.ts.map +1 -1
  498. package/dist/sensor/sensor-geometry.js +12 -0
  499. package/dist/sensor/sensor-geometry.js.map +1 -1
  500. package/dist/sensor/signal-noise.d.ts +10 -0
  501. package/dist/sensor/signal-noise.d.ts.map +1 -1
  502. package/dist/sensor/signal-noise.js +10 -0
  503. package/dist/sensor/signal-noise.js.map +1 -1
  504. package/dist/sensor/spatial-sample-reduction.d.ts +44 -1
  505. package/dist/sensor/spatial-sample-reduction.d.ts.map +1 -1
  506. package/dist/sensor/spatial-sample-reduction.js +51 -5
  507. package/dist/sensor/spatial-sample-reduction.js.map +1 -1
  508. package/dist/sensor/spatial-sampling-quadrature.d.ts +24 -0
  509. package/dist/sensor/spatial-sampling-quadrature.d.ts.map +1 -1
  510. package/dist/sensor/spatial-sampling-quadrature.js +27 -0
  511. package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
  512. package/dist/sensor/spatio-spectral-reduction.d.ts +187 -0
  513. package/dist/sensor/spatio-spectral-reduction.d.ts.map +1 -0
  514. package/dist/sensor/spatio-spectral-reduction.js +373 -0
  515. package/dist/sensor/spatio-spectral-reduction.js.map +1 -0
  516. package/dist/sensor/spectral-coverage.d.ts +24 -0
  517. package/dist/sensor/spectral-coverage.d.ts.map +1 -0
  518. package/dist/sensor/spectral-coverage.js +86 -0
  519. package/dist/sensor/spectral-coverage.js.map +1 -0
  520. package/dist/sensor/spectral-quadrature.d.ts +169 -0
  521. package/dist/sensor/spectral-quadrature.d.ts.map +1 -0
  522. package/dist/sensor/spectral-quadrature.js +542 -0
  523. package/dist/sensor/spectral-quadrature.js.map +1 -0
  524. package/dist/sensor/spectral-response.d.ts +192 -0
  525. package/dist/sensor/spectral-response.d.ts.map +1 -0
  526. package/dist/sensor/spectral-response.js +664 -0
  527. package/dist/sensor/spectral-response.js.map +1 -0
  528. package/dist/sensor/temporal-eqe-sum.d.ts +15 -0
  529. package/dist/sensor/temporal-eqe-sum.d.ts.map +1 -0
  530. package/dist/sensor/temporal-eqe-sum.js +30 -0
  531. package/dist/sensor/temporal-eqe-sum.js.map +1 -0
  532. package/dist/sensor/temporal-photo-signal.d.ts +38 -0
  533. package/dist/sensor/temporal-photo-signal.d.ts.map +1 -0
  534. package/dist/sensor/temporal-photo-signal.js +110 -0
  535. package/dist/sensor/temporal-photo-signal.js.map +1 -0
  536. package/dist/sensor/temporal-sample-binding.d.ts +6 -0
  537. package/dist/sensor/temporal-sample-binding.d.ts.map +1 -0
  538. package/dist/sensor/temporal-sample-binding.js +32 -0
  539. package/dist/sensor/temporal-sample-binding.js.map +1 -0
  540. package/dist/simulation/poc-simulation.d.ts.map +1 -1
  541. package/dist/simulation/poc-simulation.js +34 -11
  542. package/dist/simulation/poc-simulation.js.map +1 -1
  543. package/dist/stabilization/camera-shake.d.ts +11 -0
  544. package/dist/stabilization/camera-shake.d.ts.map +1 -1
  545. package/dist/stabilization/camera-shake.js +11 -0
  546. package/dist/stabilization/camera-shake.js.map +1 -1
  547. package/dist/stabilization/system.d.ts +218 -0
  548. package/dist/stabilization/system.d.ts.map +1 -0
  549. package/dist/stabilization/system.js +695 -0
  550. package/dist/stabilization/system.js.map +1 -0
  551. package/docs/API_REFERENCE.md +2017 -0
  552. package/docs/API_STYLE.md +132 -0
  553. package/docs/ARCHITECTURE.md +134 -24
  554. package/docs/AUTOMATION_COORDINATION.md +2 -0
  555. package/docs/CAPTURE_COLOR.md +25 -0
  556. package/docs/CAPTURE_CORRECTED_SDR.md +25 -0
  557. package/docs/CAPTURE_EXPORT_METADATA.md +27 -0
  558. package/docs/CAPTURE_SDR.md +20 -0
  559. package/docs/DEVELOPERS.md +60 -0
  560. package/docs/DIGITAL_OPTICS_FOUNDATION.md +69 -0
  561. package/docs/ENVIRONMENT_RAW_CAPTURE.md +187 -0
  562. package/docs/EXPORT_ACCEPTANCE.md +133 -0
  563. package/docs/GENERIC_TIER_PRESETS.md +269 -0
  564. package/docs/GEOMETRIC_PREPARATION_REUSE.md +141 -0
  565. package/docs/IMAGE_FORMATION.md +80 -10
  566. package/docs/LINEAR_CAPTURE_ENCODING.md +25 -0
  567. package/docs/MOTION_AND_SIGNAL.md +5 -3
  568. package/docs/NUMERICAL_CORRECTNESS.md +191 -0
  569. package/docs/PERFORMANCE_BASELINE.md +56 -0
  570. package/docs/PHOTOGRAPHIC_EXPORT.md +206 -0
  571. package/docs/PHYSICS_FOUNDATION.md +152 -5
  572. package/docs/POC_API.md +2 -0
  573. package/docs/POC_PROJECTION_REUSE.md +124 -0
  574. package/docs/PROCESSED_OUTPUT.md +157 -0
  575. package/docs/PRODUCTION_COMPOSITION.md +373 -0
  576. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +131 -0
  577. package/docs/PROVENANCE.md +4 -0
  578. package/docs/PSF_FOUNDATION.md +110 -88
  579. package/docs/RAW_FRAME_ENVELOPE.md +56 -0
  580. package/docs/RAW_FRAME_RECONSTRUCTION.md +30 -0
  581. package/docs/RELEASE_1_0.md +65 -0
  582. package/docs/RELEASE_AUDIT.md +38 -0
  583. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +298 -0
  584. package/docs/SCENE_SENSOR_QUADRATURE.md +98 -0
  585. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +86 -0
  586. package/docs/SCIENTIFIC_ASSURANCE.md +280 -0
  587. package/docs/SCIENTIFIC_CONFORMANCE.md +83 -0
  588. package/docs/SDR_RENDERING.md +33 -0
  589. package/docs/SENSOR_ENVIRONMENT_QUERY.md +86 -0
  590. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +104 -0
  591. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +74 -0
  592. package/docs/SENSOR_PSF_QUADRATURE.md +90 -0
  593. package/docs/SENSOR_RAW_FRAME.md +20 -0
  594. package/docs/SENSOR_RAW_PRODUCER.md +77 -0
  595. package/docs/SIGNAL_CONFORMANCE.md +23 -0
  596. package/docs/SIMULATED_CAPTURE.md +65 -0
  597. package/docs/STABILIZATION.md +160 -17
  598. package/docs/TEMPORAL_PHOTO_RAW.md +83 -0
  599. package/docs/TIER_ACCEPTANCE.md +129 -0
  600. package/docs/TIER_PRESET_ACCEPTANCE.md +59 -0
  601. package/docs/USAGE.md +5050 -1047
  602. package/docs/V1_COMPOSITION_MAP.md +123 -0
  603. package/docs/V1_HELPER_REUSE_REVIEW.md +60 -0
  604. package/docs/V1_PERFORMANCE_DISPOSITION.md +88 -0
  605. package/docs/api/camera-equivalent-focal-length.md +53 -0
  606. package/docs/api/camera-field-of-view.md +119 -0
  607. package/docs/api/camera-projected-object-size.md +54 -0
  608. package/docs/api/capture-capture-export-metadata.md +107 -0
  609. package/docs/api/capture-environment-raw-producer.md +56 -0
  610. package/docs/api/capture-focus-control.md +419 -0
  611. package/docs/api/capture-linear-encoding.md +99 -0
  612. package/docs/api/capture-photographic-export.md +172 -0
  613. package/docs/api/capture-raw-frame-reconstruction.md +87 -0
  614. package/docs/api/capture-release-sequence.md +252 -0
  615. package/docs/api/capture-sensor-raw-frame.md +66 -0
  616. package/docs/api/capture-sensor-raw-producer.md +98 -0
  617. package/docs/api/capture-simulated-capture.md +179 -0
  618. package/docs/api/color-capture-color.md +122 -0
  619. package/docs/api/color-white-balance.md +386 -0
  620. package/docs/api/composition-image-formation-plan.md +825 -0
  621. package/docs/api/composition-plan-consumer.md +98 -0
  622. package/docs/api/core-calculation-result.md +220 -0
  623. package/docs/api/core-configuration-error.md +19 -0
  624. package/docs/api/core-image-formation.md +204 -0
  625. package/docs/api/core-scientific-assurance.md +214 -0
  626. package/docs/api/core-spectral-composition.md +268 -0
  627. package/docs/api/core-spectral.md +78 -0
  628. package/docs/api/core-validation.md +34 -0
  629. package/docs/api/core-version.md +14 -0
  630. package/docs/api/equipment-exposure-capabilities.md +270 -0
  631. package/docs/api/equipment-generic-tier-assets.md +82 -0
  632. package/docs/api/equipment-generic-tier-presets.md +103 -0
  633. package/docs/api/equipment-iso-capabilities.md +295 -0
  634. package/docs/api/equipment-metering-capabilities.md +126 -0
  635. package/docs/api/equipment-release-capabilities.md +91 -0
  636. package/docs/api/exports.json +5656 -0
  637. package/docs/api/exposure-exposure-duration-control.md +115 -0
  638. package/docs/api/exposure-exposure-mode-resolver.md +966 -0
  639. package/docs/api/exposure-exposure.md +150 -0
  640. package/docs/api/exposure-flash.md +327 -0
  641. package/docs/api/exposure-metering-scene-radiance.md +154 -0
  642. package/docs/api/exposure-metering-target.md +134 -0
  643. package/docs/api/exposure-metering-temporal.md +77 -0
  644. package/docs/api/exposure-metering.md +172 -0
  645. package/docs/api/exposure-program-line.md +64 -0
  646. package/docs/api/motion-camera-rotation.md +215 -0
  647. package/docs/api/motion-capture-rotation-inverse-mapping.md +128 -0
  648. package/docs/api/motion-capture-rotation-temporal-quadrature.md +127 -0
  649. package/docs/api/motion-capture-rotation-trajectory.md +132 -0
  650. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +171 -0
  651. package/docs/api/motion-extended-object-projection.md +312 -0
  652. package/docs/api/motion-projected-motion.md +60 -0
  653. package/docs/api/optics-aperture.md +69 -0
  654. package/docs/api/optics-circle-of-confusion.md +46 -0
  655. package/docs/api/optics-complex-pupil-psf.md +193 -0
  656. package/docs/api/optics-depth-of-field.md +92 -0
  657. package/docs/api/optics-diffraction.md +46 -0
  658. package/docs/api/optics-focus-breathing.md +119 -0
  659. package/docs/api/optics-focus-state.md +64 -0
  660. package/docs/api/optics-front-of-lens-filter.md +263 -0
  661. package/docs/api/optics-illumination-vignetting.md +95 -0
  662. package/docs/api/optics-lateral-chromatic-aberration.md +225 -0
  663. package/docs/api/optics-lens-psf-profile.md +380 -0
  664. package/docs/api/optics-polygon-diffraction.md +68 -0
  665. package/docs/api/optics-profile-contract.md +47 -0
  666. package/docs/api/optics-psf-foundation.md +181 -0
  667. package/docs/api/optics-radial-distortion.md +194 -0
  668. package/docs/api/optics-scene-to-sensor-irradiance.md +371 -0
  669. package/docs/api/optics-scene-to-sensor-quadrature.md +78 -0
  670. package/docs/api/optics-sensor-environment-query.md +58 -0
  671. package/docs/api/optics-sensor-psf-quadrature.md +81 -0
  672. package/docs/api/optics-stray-light.md +109 -0
  673. package/docs/api/optics-thin-lens.md +53 -0
  674. package/docs/api/output-capture-corrected-sdr.md +71 -0
  675. package/docs/api/output-capture-geometry.md +500 -0
  676. package/docs/api/output-capture-sdr.md +69 -0
  677. package/docs/api/output-crop.md +47 -0
  678. package/docs/api/output-geometric-transforms.md +199 -0
  679. package/docs/api/output-lens-corrections.md +162 -0
  680. package/docs/api/output-sdr-rendering.md +122 -0
  681. package/docs/api/output-subject-framing-crop.md +59 -0
  682. package/docs/api/schema-camera.md +84 -0
  683. package/docs/api/schema-illumination-spectral.md +77 -0
  684. package/docs/api/schema-illumination-temporal.md +289 -0
  685. package/docs/api/schema-illumination.md +246 -0
  686. package/docs/api/schema-scene-radiance-temporal.md +215 -0
  687. package/docs/api/schema-scene-radiance.md +415 -0
  688. package/docs/api/schema-scene.md +105 -0
  689. package/docs/api/schema-validation.md +25 -0
  690. package/docs/api/sensor-accumulated-charge.md +273 -0
  691. package/docs/api/sensor-architecture.md +155 -0
  692. package/docs/api/sensor-camera-saturation-capacity.md +215 -0
  693. package/docs/api/sensor-capture-color-sampling-binding.md +323 -0
  694. package/docs/api/sensor-capture-mode-timing.md +123 -0
  695. package/docs/api/sensor-capture-mode.md +321 -0
  696. package/docs/api/sensor-color-sampling.md +228 -0
  697. package/docs/api/sensor-constant-rate-temporal-integration.md +152 -0
  698. package/docs/api/sensor-dark-current.md +227 -0
  699. package/docs/api/sensor-environment-photo-signal.md +77 -0
  700. package/docs/api/sensor-eqe-electron-rate.md +166 -0
  701. package/docs/api/sensor-eqe-local-exposure.md +68 -0
  702. package/docs/api/sensor-eqe-temporal-exposure.md +73 -0
  703. package/docs/api/sensor-exposure-window.md +183 -0
  704. package/docs/api/sensor-iso-signal-chain.md +264 -0
  705. package/docs/api/sensor-local-exposure-binding.md +126 -0
  706. package/docs/api/sensor-optical-stack.md +211 -0
  707. package/docs/api/sensor-photon-energy.md +149 -0
  708. package/docs/api/sensor-physical-charge-capacity.md +196 -0
  709. package/docs/api/sensor-pixel-pitch.md +41 -0
  710. package/docs/api/sensor-radiometry-readiness.md +240 -0
  711. package/docs/api/sensor-raw-readout.md +499 -0
  712. package/docs/api/sensor-raw-reconstruction.md +260 -0
  713. package/docs/api/sensor-readout-exposure-linkage.md +172 -0
  714. package/docs/api/sensor-readout-timing.md +209 -0
  715. package/docs/api/sensor-response-application-compatibility.md +256 -0
  716. package/docs/api/sensor-response-operating-range.md +293 -0
  717. package/docs/api/sensor-responsivity-photocurrent.md +245 -0
  718. package/docs/api/sensor-sampling-aperture.md +221 -0
  719. package/docs/api/sensor-scene-eqe-temporal-exposure.md +56 -0
  720. package/docs/api/sensor-sensor-geometry.md +143 -0
  721. package/docs/api/sensor-signal-noise.md +75 -0
  722. package/docs/api/sensor-spatial-sample-reduction.md +186 -0
  723. package/docs/api/sensor-spatial-sampling-quadrature.md +188 -0
  724. package/docs/api/sensor-spatio-spectral-reduction.md +217 -0
  725. package/docs/api/sensor-spectral-coverage.md +33 -0
  726. package/docs/api/sensor-spectral-quadrature.md +183 -0
  727. package/docs/api/sensor-spectral-response.md +291 -0
  728. package/docs/api/sensor-temporal-photo-signal.md +62 -0
  729. package/docs/api/simulation-poc-simulation.md +364 -0
  730. package/docs/api/stabilization-camera-shake.md +71 -0
  731. package/docs/api/stabilization-system.md +442 -0
  732. package/docs/benchmarks/2026-10-01-main-baseline.json +694 -0
  733. package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +2190 -0
  734. package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +2423 -0
  735. package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +210 -0
  736. package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +187 -0
  737. package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +756 -0
  738. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +711 -0
  739. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +711 -0
  740. package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +885 -0
  741. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +868 -0
  742. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +868 -0
  743. package/docs/examples/production-capture.mjs +34 -0
  744. package/docs/examples/production-request.json +4613 -0
  745. package/docs/examples/quick-start.mjs +12 -0
  746. package/docs/validation/documentation-fragments.json +212 -0
  747. package/docs/validation/release-audit-inventory.json +1306 -0
  748. package/docs/validation/tier-acceptance-report-v1.json +2538 -0
  749. package/package.json +15 -3
@@ -0,0 +1,2423 @@
1
+ {
2
+ "schemaVersion": "0.1.0",
3
+ "evidenceId": "poc-projection-reuse-2026-10-02",
4
+ "provenance": {
5
+ "sourceOrigin": "photivra",
6
+ "sourceReference": "photivra:poc-projection-reuse-experiment",
7
+ "reuseStatus": "photivra-owned"
8
+ },
9
+ "ordinaryRuns": [
10
+ {
11
+ "benchmark": "poc-request-local-defocus-projection-reuse",
12
+ "benchmarkVersion": 2,
13
+ "referenceCommit": "c1374c31473f893310d1ce4f0d5a737aaba43ab5",
14
+ "candidateBaseCommit": "c1374c31473f893310d1ce4f0d5a737aaba43ab5",
15
+ "candidateSources": [
16
+ {
17
+ "path": "src/optics/depth-of-field.ts",
18
+ "sha256": "5a947cac46215281bde539333879f9411e2c8cdafaaae04b471a4b3bbe676f06"
19
+ },
20
+ {
21
+ "path": "src/simulation/poc-simulation.ts",
22
+ "sha256": "7d6f1a8bc7fe954744009965f53d9bf1ff39c08a184a13cc6983b59d99bd73cd"
23
+ }
24
+ ],
25
+ "buildMethod": "tsc",
26
+ "engineApiVersion": "0.103.0",
27
+ "pocApiVersion": "0.20.0",
28
+ "nodeVersion": "v24.19.0",
29
+ "v8Version": "13.6.233.17-node.51",
30
+ "platform": "linux",
31
+ "arch": "x64",
32
+ "cpuModel": "AMD EPYC 9V74 80-Core Processor",
33
+ "logicalCpuCount": 9,
34
+ "forcedGc": false,
35
+ "results": [
36
+ {
37
+ "scenario": "24mp-base",
38
+ "requestsPerRepeat": 1000,
39
+ "repeats": 9,
40
+ "warmupRequestsPerPath": 500,
41
+ "paths": [
42
+ {
43
+ "name": "reference",
44
+ "medianMicrosecondsPerRequest": 11.107495,
45
+ "measurements": [
46
+ {
47
+ "durationMs": 18.830893,
48
+ "retainedHeapDeltaBytes": -4152952
49
+ },
50
+ {
51
+ "durationMs": 13.659234,
52
+ "retainedHeapDeltaBytes": -4731648
53
+ },
54
+ {
55
+ "durationMs": 11.614752,
56
+ "retainedHeapDeltaBytes": -5693608
57
+ },
58
+ {
59
+ "durationMs": 11.048358,
60
+ "retainedHeapDeltaBytes": 2665736
61
+ },
62
+ {
63
+ "durationMs": 10.903534,
64
+ "retainedHeapDeltaBytes": 2641168
65
+ },
66
+ {
67
+ "durationMs": 11.107495,
68
+ "retainedHeapDeltaBytes": 2641232
69
+ },
70
+ {
71
+ "durationMs": 10.830687,
72
+ "retainedHeapDeltaBytes": 2640904
73
+ },
74
+ {
75
+ "durationMs": 10.69022,
76
+ "retainedHeapDeltaBytes": 2643112
77
+ },
78
+ {
79
+ "durationMs": 11.928244,
80
+ "retainedHeapDeltaBytes": 2643056
81
+ }
82
+ ]
83
+ },
84
+ {
85
+ "name": "candidate",
86
+ "medianMicrosecondsPerRequest": 11.291296,
87
+ "measurements": [
88
+ {
89
+ "durationMs": 14.791883,
90
+ "retainedHeapDeltaBytes": 4296064
91
+ },
92
+ {
93
+ "durationMs": 15.037234,
94
+ "retainedHeapDeltaBytes": 3735520
95
+ },
96
+ {
97
+ "durationMs": 12.224179,
98
+ "retainedHeapDeltaBytes": 2699472
99
+ },
100
+ {
101
+ "durationMs": 11.212339,
102
+ "retainedHeapDeltaBytes": 2651984
103
+ },
104
+ {
105
+ "durationMs": 10.923853,
106
+ "retainedHeapDeltaBytes": 2650168
107
+ },
108
+ {
109
+ "durationMs": 11.251767,
110
+ "retainedHeapDeltaBytes": 2649712
111
+ },
112
+ {
113
+ "durationMs": 10.81274,
114
+ "retainedHeapDeltaBytes": 2652600
115
+ },
116
+ {
117
+ "durationMs": 11.291296,
118
+ "retainedHeapDeltaBytes": 2651832
119
+ },
120
+ {
121
+ "durationMs": 11.513594,
122
+ "retainedHeapDeltaBytes": 2651616
123
+ }
124
+ ]
125
+ }
126
+ ],
127
+ "candidateToReferenceMedianRatio": 1.0165474753758612
128
+ },
129
+ {
130
+ "scenario": "24mp-defocus-1",
131
+ "requestsPerRepeat": 1000,
132
+ "repeats": 9,
133
+ "warmupRequestsPerPath": 500,
134
+ "paths": [
135
+ {
136
+ "name": "reference",
137
+ "medianMicrosecondsPerRequest": 12.159526,
138
+ "measurements": [
139
+ {
140
+ "durationMs": 12.91702,
141
+ "retainedHeapDeltaBytes": -1953688
142
+ },
143
+ {
144
+ "durationMs": 12.453357,
145
+ "retainedHeapDeltaBytes": 6108288
146
+ },
147
+ {
148
+ "durationMs": 12.793078,
149
+ "retainedHeapDeltaBytes": -2272536
150
+ },
151
+ {
152
+ "durationMs": 12.257659,
153
+ "retainedHeapDeltaBytes": 6059024
154
+ },
155
+ {
156
+ "durationMs": 11.766496,
157
+ "retainedHeapDeltaBytes": -10714048
158
+ },
159
+ {
160
+ "durationMs": 11.565399,
161
+ "retainedHeapDeltaBytes": 6057184
162
+ },
163
+ {
164
+ "durationMs": 11.917358,
165
+ "retainedHeapDeltaBytes": 6059600
166
+ },
167
+ {
168
+ "durationMs": 11.800375,
169
+ "retainedHeapDeltaBytes": -10714416
170
+ },
171
+ {
172
+ "durationMs": 12.159526,
173
+ "retainedHeapDeltaBytes": 6058608
174
+ }
175
+ ]
176
+ },
177
+ {
178
+ "name": "candidate",
179
+ "medianMicrosecondsPerRequest": 11.893682,
180
+ "measurements": [
181
+ {
182
+ "durationMs": 12.055361,
183
+ "retainedHeapDeltaBytes": -4460648
184
+ },
185
+ {
186
+ "durationMs": 12.549619,
187
+ "retainedHeapDeltaBytes": -4535984
188
+ },
189
+ {
190
+ "durationMs": 13.18807,
191
+ "retainedHeapDeltaBytes": 3847016
192
+ },
193
+ {
194
+ "durationMs": 11.33584,
195
+ "retainedHeapDeltaBytes": -12940112
196
+ },
197
+ {
198
+ "durationMs": 11.876047,
199
+ "retainedHeapDeltaBytes": 3792720
200
+ },
201
+ {
202
+ "durationMs": 11.386415,
203
+ "retainedHeapDeltaBytes": 3794176
204
+ },
205
+ {
206
+ "durationMs": 11.893682,
207
+ "retainedHeapDeltaBytes": -12978608
208
+ },
209
+ {
210
+ "durationMs": 11.660019,
211
+ "retainedHeapDeltaBytes": 3791272
212
+ },
213
+ {
214
+ "durationMs": 12.266654,
215
+ "retainedHeapDeltaBytes": -12980664
216
+ }
217
+ ]
218
+ }
219
+ ],
220
+ "candidateToReferenceMedianRatio": 0.9781369767209677
221
+ },
222
+ {
223
+ "scenario": "24mp-defocus-2",
224
+ "requestsPerRepeat": 1000,
225
+ "repeats": 9,
226
+ "warmupRequestsPerPath": 500,
227
+ "paths": [
228
+ {
229
+ "name": "reference",
230
+ "medianMicrosecondsPerRequest": 13.203783,
231
+ "measurements": [
232
+ {
233
+ "durationMs": 13.600186,
234
+ "retainedHeapDeltaBytes": 996408
235
+ },
236
+ {
237
+ "durationMs": 13.216322,
238
+ "retainedHeapDeltaBytes": 908728
239
+ },
240
+ {
241
+ "durationMs": 13.182031,
242
+ "retainedHeapDeltaBytes": 908520
243
+ },
244
+ {
245
+ "durationMs": 13.203783,
246
+ "retainedHeapDeltaBytes": -7526112
247
+ },
248
+ {
249
+ "durationMs": 12.637769,
250
+ "retainedHeapDeltaBytes": 9239552
251
+ },
252
+ {
253
+ "durationMs": 12.837924,
254
+ "retainedHeapDeltaBytes": 9243040
255
+ },
256
+ {
257
+ "durationMs": 12.40112,
258
+ "retainedHeapDeltaBytes": 9244392
259
+ },
260
+ {
261
+ "durationMs": 18.583148,
262
+ "retainedHeapDeltaBytes": -7528048
263
+ },
264
+ {
265
+ "durationMs": 13.627037,
266
+ "retainedHeapDeltaBytes": 9246288
267
+ }
268
+ ]
269
+ },
270
+ {
271
+ "name": "candidate",
272
+ "medianMicrosecondsPerRequest": 11.850128,
273
+ "measurements": [
274
+ {
275
+ "durationMs": 12.788401,
276
+ "retainedHeapDeltaBytes": -2435136
277
+ },
278
+ {
279
+ "durationMs": 12.426176,
280
+ "retainedHeapDeltaBytes": -2523112
281
+ },
282
+ {
283
+ "durationMs": 13.102444,
284
+ "retainedHeapDeltaBytes": -2524040
285
+ },
286
+ {
287
+ "durationMs": 11.850128,
288
+ "retainedHeapDeltaBytes": 5809488
289
+ },
290
+ {
291
+ "durationMs": 11.683824,
292
+ "retainedHeapDeltaBytes": -10964792
293
+ },
294
+ {
295
+ "durationMs": 11.786014,
296
+ "retainedHeapDeltaBytes": -10964688
297
+ },
298
+ {
299
+ "durationMs": 11.588934,
300
+ "retainedHeapDeltaBytes": 5810032
301
+ },
302
+ {
303
+ "durationMs": 11.573121,
304
+ "retainedHeapDeltaBytes": 5809320
305
+ },
306
+ {
307
+ "durationMs": 12.076734,
308
+ "retainedHeapDeltaBytes": 5810040
309
+ }
310
+ ]
311
+ }
312
+ ],
313
+ "candidateToReferenceMedianRatio": 0.8974797601566157
314
+ },
315
+ {
316
+ "scenario": "24mp-defocus-4",
317
+ "requestsPerRepeat": 1000,
318
+ "repeats": 9,
319
+ "warmupRequestsPerPath": 500,
320
+ "paths": [
321
+ {
322
+ "name": "reference",
323
+ "medianMicrosecondsPerRequest": 14.689030999999998,
324
+ "measurements": [
325
+ {
326
+ "durationMs": 15.227794,
327
+ "retainedHeapDeltaBytes": 7388392
328
+ },
329
+ {
330
+ "durationMs": 14.689031,
331
+ "retainedHeapDeltaBytes": -1103232
332
+ },
333
+ {
334
+ "durationMs": 14.964176,
335
+ "retainedHeapDeltaBytes": 7279664
336
+ },
337
+ {
338
+ "durationMs": 17.809754,
339
+ "retainedHeapDeltaBytes": -1105224
340
+ },
341
+ {
342
+ "durationMs": 16.039912,
343
+ "retainedHeapDeltaBytes": -1159856
344
+ },
345
+ {
346
+ "durationMs": 14.533773,
347
+ "retainedHeapDeltaBytes": -1160944
348
+ },
349
+ {
350
+ "durationMs": 14.552289,
351
+ "retainedHeapDeltaBytes": -1159320
352
+ },
353
+ {
354
+ "durationMs": 14.521094,
355
+ "retainedHeapDeltaBytes": -1161480
356
+ },
357
+ {
358
+ "durationMs": 14.349423,
359
+ "retainedHeapDeltaBytes": -1159168
360
+ }
361
+ ]
362
+ },
363
+ {
364
+ "name": "candidate",
365
+ "medianMicrosecondsPerRequest": 13.497667,
366
+ "measurements": [
367
+ {
368
+ "durationMs": 13.827522,
369
+ "retainedHeapDeltaBytes": -6795488
370
+ },
371
+ {
372
+ "durationMs": 13.596922,
373
+ "retainedHeapDeltaBytes": 1511352
374
+ },
375
+ {
376
+ "durationMs": 13.497667,
377
+ "retainedHeapDeltaBytes": -6869176
378
+ },
379
+ {
380
+ "durationMs": 14.62007,
381
+ "retainedHeapDeltaBytes": 1511176
382
+ },
383
+ {
384
+ "durationMs": 12.741862,
385
+ "retainedHeapDeltaBytes": 9842352
386
+ },
387
+ {
388
+ "durationMs": 13.196512,
389
+ "retainedHeapDeltaBytes": -6931248
390
+ },
391
+ {
392
+ "durationMs": 13.606387,
393
+ "retainedHeapDeltaBytes": -6930304
394
+ },
395
+ {
396
+ "durationMs": 13.426221,
397
+ "retainedHeapDeltaBytes": 9842680
398
+ },
399
+ {
400
+ "durationMs": 12.913657,
401
+ "retainedHeapDeltaBytes": -6932240
402
+ }
403
+ ]
404
+ }
405
+ ],
406
+ "candidateToReferenceMedianRatio": 0.91889430963826
407
+ },
408
+ {
409
+ "scenario": "24mp-defocus-8",
410
+ "requestsPerRepeat": 1000,
411
+ "repeats": 9,
412
+ "warmupRequestsPerPath": 500,
413
+ "paths": [
414
+ {
415
+ "name": "reference",
416
+ "medianMicrosecondsPerRequest": 18.370317,
417
+ "measurements": [
418
+ {
419
+ "durationMs": 18.927325,
420
+ "retainedHeapDeltaBytes": 3531408
421
+ },
422
+ {
423
+ "durationMs": 20.942575,
424
+ "retainedHeapDeltaBytes": -4657448
425
+ },
426
+ {
427
+ "durationMs": 18.290026,
428
+ "retainedHeapDeltaBytes": 3444968
429
+ },
430
+ {
431
+ "durationMs": 20.558619,
432
+ "retainedHeapDeltaBytes": 3447680
433
+ },
434
+ {
435
+ "durationMs": 17.895074,
436
+ "retainedHeapDeltaBytes": -4996040
437
+ },
438
+ {
439
+ "durationMs": 18.188096,
440
+ "retainedHeapDeltaBytes": -4992680
441
+ },
442
+ {
443
+ "durationMs": 18.065566,
444
+ "retainedHeapDeltaBytes": -4989152
445
+ },
446
+ {
447
+ "durationMs": 21.467377,
448
+ "retainedHeapDeltaBytes": -4994328
449
+ },
450
+ {
451
+ "durationMs": 18.370317,
452
+ "retainedHeapDeltaBytes": -4990648
453
+ }
454
+ ]
455
+ },
456
+ {
457
+ "name": "candidate",
458
+ "medianMicrosecondsPerRequest": 16.666133,
459
+ "measurements": [
460
+ {
461
+ "durationMs": 16.916073,
462
+ "retainedHeapDeltaBytes": 1482840
463
+ },
464
+ {
465
+ "durationMs": 16.666133,
466
+ "retainedHeapDeltaBytes": 1390632
467
+ },
468
+ {
469
+ "durationMs": 18.331893,
470
+ "retainedHeapDeltaBytes": 1391984
471
+ },
472
+ {
473
+ "durationMs": 17.286788,
474
+ "retainedHeapDeltaBytes": -6996168
475
+ },
476
+ {
477
+ "durationMs": 15.037265,
478
+ "retainedHeapDeltaBytes": 1338016
479
+ },
480
+ {
481
+ "durationMs": 15.787589,
482
+ "retainedHeapDeltaBytes": 1337808
483
+ },
484
+ {
485
+ "durationMs": 15.103661,
486
+ "retainedHeapDeltaBytes": 1336592
487
+ },
488
+ {
489
+ "durationMs": 21.737155,
490
+ "retainedHeapDeltaBytes": 1336168
491
+ },
492
+ {
493
+ "durationMs": 16.552558,
494
+ "retainedHeapDeltaBytes": 1340264
495
+ }
496
+ ]
497
+ }
498
+ ],
499
+ "candidateToReferenceMedianRatio": 0.9072316498403374
500
+ },
501
+ {
502
+ "scenario": "24mp-defocus-16",
503
+ "requestsPerRepeat": 1000,
504
+ "repeats": 9,
505
+ "warmupRequestsPerPath": 500,
506
+ "paths": [
507
+ {
508
+ "name": "reference",
509
+ "medianMicrosecondsPerRequest": 27.096401,
510
+ "measurements": [
511
+ {
512
+ "durationMs": 27.114557,
513
+ "retainedHeapDeltaBytes": -4170632
514
+ },
515
+ {
516
+ "durationMs": 25.192265,
517
+ "retainedHeapDeltaBytes": 4089528
518
+ },
519
+ {
520
+ "durationMs": 29.443529,
521
+ "retainedHeapDeltaBytes": -4230632
522
+ },
523
+ {
524
+ "durationMs": 27.528317,
525
+ "retainedHeapDeltaBytes": 4104496
526
+ },
527
+ {
528
+ "durationMs": 25.557433,
529
+ "retainedHeapDeltaBytes": 4068968
530
+ },
531
+ {
532
+ "durationMs": 27.096401,
533
+ "retainedHeapDeltaBytes": -12701176
534
+ },
535
+ {
536
+ "durationMs": 26.41002,
537
+ "retainedHeapDeltaBytes": 4071120
538
+ },
539
+ {
540
+ "durationMs": 29.629001,
541
+ "retainedHeapDeltaBytes": 4071568
542
+ },
543
+ {
544
+ "durationMs": 25.936835,
545
+ "retainedHeapDeltaBytes": 4071304
546
+ }
547
+ ]
548
+ },
549
+ {
550
+ "name": "candidate",
551
+ "medianMicrosecondsPerRequest": 19.973136,
552
+ "measurements": [
553
+ {
554
+ "durationMs": 22.01228,
555
+ "retainedHeapDeltaBytes": 1192928
556
+ },
557
+ {
558
+ "durationMs": 19.849774,
559
+ "retainedHeapDeltaBytes": 1066424
560
+ },
561
+ {
562
+ "durationMs": 21.860016,
563
+ "retainedHeapDeltaBytes": 1101376
564
+ },
565
+ {
566
+ "durationMs": 34.639023,
567
+ "retainedHeapDeltaBytes": 1235664
568
+ },
569
+ {
570
+ "durationMs": 19.893277,
571
+ "retainedHeapDeltaBytes": 1053624
572
+ },
573
+ {
574
+ "durationMs": 19.437276,
575
+ "retainedHeapDeltaBytes": 1059608
576
+ },
577
+ {
578
+ "durationMs": 19.973136,
579
+ "retainedHeapDeltaBytes": 1061992
580
+ },
581
+ {
582
+ "durationMs": 23.053004,
583
+ "retainedHeapDeltaBytes": 1054848
584
+ },
585
+ {
586
+ "durationMs": 19.80444,
587
+ "retainedHeapDeltaBytes": 1060528
588
+ }
589
+ ]
590
+ }
591
+ ],
592
+ "candidateToReferenceMedianRatio": 0.7371139805614775
593
+ },
594
+ {
595
+ "scenario": "24mp-mixed-16-per-kind",
596
+ "requestsPerRepeat": 1000,
597
+ "repeats": 9,
598
+ "warmupRequestsPerPath": 500,
599
+ "paths": [
600
+ {
601
+ "name": "reference",
602
+ "medianMicrosecondsPerRequest": 56.327622,
603
+ "measurements": [
604
+ {
605
+ "durationMs": 58.830554,
606
+ "retainedHeapDeltaBytes": 4881432
607
+ },
608
+ {
609
+ "durationMs": 64.257038,
610
+ "retainedHeapDeltaBytes": 5399880
611
+ },
612
+ {
613
+ "durationMs": 56.328788,
614
+ "retainedHeapDeltaBytes": 4755560
615
+ },
616
+ {
617
+ "durationMs": 61.712549,
618
+ "retainedHeapDeltaBytes": 5325584
619
+ },
620
+ {
621
+ "durationMs": 54.532611,
622
+ "retainedHeapDeltaBytes": 5326312
623
+ },
624
+ {
625
+ "durationMs": 53.219007,
626
+ "retainedHeapDeltaBytes": 5318312
627
+ },
628
+ {
629
+ "durationMs": 54.444913,
630
+ "retainedHeapDeltaBytes": 5324248
631
+ },
632
+ {
633
+ "durationMs": 56.327622,
634
+ "retainedHeapDeltaBytes": -11440616
635
+ },
636
+ {
637
+ "durationMs": 56.154697,
638
+ "retainedHeapDeltaBytes": 5326392
639
+ }
640
+ ]
641
+ },
642
+ {
643
+ "name": "candidate",
644
+ "medianMicrosecondsPerRequest": 50.522093,
645
+ "measurements": [
646
+ {
647
+ "durationMs": 53.441334,
648
+ "retainedHeapDeltaBytes": -6497568
649
+ },
650
+ {
651
+ "durationMs": 50.365282,
652
+ "retainedHeapDeltaBytes": -6009280
653
+ },
654
+ {
655
+ "durationMs": 55.812737,
656
+ "retainedHeapDeltaBytes": -6687184
657
+ },
658
+ {
659
+ "durationMs": 50.522093,
660
+ "retainedHeapDeltaBytes": 2308216
661
+ },
662
+ {
663
+ "durationMs": 48.35492,
664
+ "retainedHeapDeltaBytes": 2314472
665
+ },
666
+ {
667
+ "durationMs": 49.427241,
668
+ "retainedHeapDeltaBytes": 2298568
669
+ },
670
+ {
671
+ "durationMs": 49.353051,
672
+ "retainedHeapDeltaBytes": 2306504
673
+ },
674
+ {
675
+ "durationMs": 51.731685,
676
+ "retainedHeapDeltaBytes": 2308968
677
+ },
678
+ {
679
+ "durationMs": 51.21525,
680
+ "retainedHeapDeltaBytes": -14464088
681
+ }
682
+ ]
683
+ }
684
+ ],
685
+ "candidateToReferenceMedianRatio": 0.8969328227632262
686
+ },
687
+ {
688
+ "scenario": "24mp-staged-portrait-mixed",
689
+ "requestsPerRepeat": 1000,
690
+ "repeats": 9,
691
+ "warmupRequestsPerPath": 500,
692
+ "paths": [
693
+ {
694
+ "name": "reference",
695
+ "medianMicrosecondsPerRequest": 95.53569,
696
+ "measurements": [
697
+ {
698
+ "durationMs": 95.475772,
699
+ "retainedHeapDeltaBytes": -633016
700
+ },
701
+ {
702
+ "durationMs": 99.127984,
703
+ "retainedHeapDeltaBytes": -306576
704
+ },
705
+ {
706
+ "durationMs": 101.124105,
707
+ "retainedHeapDeltaBytes": 5511432
708
+ },
709
+ {
710
+ "durationMs": 93.851569,
711
+ "retainedHeapDeltaBytes": 6629528
712
+ },
713
+ {
714
+ "durationMs": 92.543482,
715
+ "retainedHeapDeltaBytes": -10533960
716
+ },
717
+ {
718
+ "durationMs": 94.11033,
719
+ "retainedHeapDeltaBytes": -11119416
720
+ },
721
+ {
722
+ "durationMs": 95.859388,
723
+ "retainedHeapDeltaBytes": 6241904
724
+ },
725
+ {
726
+ "durationMs": 95.53569,
727
+ "retainedHeapDeltaBytes": -9217232
728
+ },
729
+ {
730
+ "durationMs": 97.065774,
731
+ "retainedHeapDeltaBytes": 7559704
732
+ }
733
+ ]
734
+ },
735
+ {
736
+ "name": "candidate",
737
+ "medianMicrosecondsPerRequest": 90.790789,
738
+ "measurements": [
739
+ {
740
+ "durationMs": 93.601021,
741
+ "retainedHeapDeltaBytes": 4781560
742
+ },
743
+ {
744
+ "durationMs": 96.979908,
745
+ "retainedHeapDeltaBytes": -3305144
746
+ },
747
+ {
748
+ "durationMs": 99.651354,
749
+ "retainedHeapDeltaBytes": 2358848
750
+ },
751
+ {
752
+ "durationMs": 100.823131,
753
+ "retainedHeapDeltaBytes": -13080880
754
+ },
755
+ {
756
+ "durationMs": 87.649533,
757
+ "retainedHeapDeltaBytes": 3239752
758
+ },
759
+ {
760
+ "durationMs": 86.902512,
761
+ "retainedHeapDeltaBytes": 2607960
762
+ },
763
+ {
764
+ "durationMs": 88.779847,
765
+ "retainedHeapDeltaBytes": -13496160
766
+ },
767
+ {
768
+ "durationMs": 87.969012,
769
+ "retainedHeapDeltaBytes": 4525688
770
+ },
771
+ {
772
+ "durationMs": 90.790789,
773
+ "retainedHeapDeltaBytes": 4538720
774
+ }
775
+ ]
776
+ }
777
+ ],
778
+ "candidateToReferenceMedianRatio": 0.9503337339166128
779
+ }
780
+ ],
781
+ "allocationProfiles": [],
782
+ "preparationProbe": {
783
+ "kind": "isolated-three-scalar-object-freeze",
784
+ "preparationsPerRepeat": 100000,
785
+ "nanosecondsPerPreparation": [
786
+ 51.71038,
787
+ 54.82237,
788
+ 43.47615,
789
+ 64.82201,
790
+ 48.21754,
791
+ 44.24308,
792
+ 41.8074,
793
+ 41.00201,
794
+ 40.97146
795
+ ],
796
+ "medianNanosecondsPerPreparation": 44.24308,
797
+ "limitation": "Synthetic isolated probe; JIT/escape behavior can differ inside the whole request."
798
+ },
799
+ "sink": 53131313.13083108,
800
+ "limitations": [
801
+ "Paired developer POC request shapes on shared infrastructure; not observed product call frequency or browser latency",
802
+ "POC is analytical; 24 MP dimensions do not execute 24 million image samples",
803
+ "Net retained heap is not allocation count; separately instrumented heap sampling is statistical, not an exact allocation counter",
804
+ "Source SHA context is operator-attested; source fingerprints identify the candidate change",
805
+ "No full production radiometry/serialization or browser performance claim"
806
+ ]
807
+ },
808
+ {
809
+ "benchmark": "poc-request-local-defocus-projection-reuse",
810
+ "benchmarkVersion": 2,
811
+ "referenceCommit": "c1374c31473f893310d1ce4f0d5a737aaba43ab5",
812
+ "candidateBaseCommit": "c1374c31473f893310d1ce4f0d5a737aaba43ab5",
813
+ "candidateSources": [
814
+ {
815
+ "path": "src/optics/depth-of-field.ts",
816
+ "sha256": "5a947cac46215281bde539333879f9411e2c8cdafaaae04b471a4b3bbe676f06"
817
+ },
818
+ {
819
+ "path": "src/simulation/poc-simulation.ts",
820
+ "sha256": "7d6f1a8bc7fe954744009965f53d9bf1ff39c08a184a13cc6983b59d99bd73cd"
821
+ }
822
+ ],
823
+ "buildMethod": "tsc",
824
+ "engineApiVersion": "0.103.0",
825
+ "pocApiVersion": "0.20.0",
826
+ "nodeVersion": "v24.19.0",
827
+ "v8Version": "13.6.233.17-node.51",
828
+ "platform": "linux",
829
+ "arch": "x64",
830
+ "cpuModel": "AMD EPYC 9V74 80-Core Processor",
831
+ "logicalCpuCount": 9,
832
+ "forcedGc": false,
833
+ "results": [
834
+ {
835
+ "scenario": "24mp-base",
836
+ "requestsPerRepeat": 1000,
837
+ "repeats": 9,
838
+ "warmupRequestsPerPath": 500,
839
+ "paths": [
840
+ {
841
+ "name": "reference",
842
+ "medianMicrosecondsPerRequest": 10.932238,
843
+ "measurements": [
844
+ {
845
+ "durationMs": 14.428799,
846
+ "retainedHeapDeltaBytes": 4207928
847
+ },
848
+ {
849
+ "durationMs": 13.20791,
850
+ "retainedHeapDeltaBytes": -4718008
851
+ },
852
+ {
853
+ "durationMs": 11.716162,
854
+ "retainedHeapDeltaBytes": 2693352
855
+ },
856
+ {
857
+ "durationMs": 10.821464,
858
+ "retainedHeapDeltaBytes": 2643536
859
+ },
860
+ {
861
+ "durationMs": 10.92752,
862
+ "retainedHeapDeltaBytes": 2643080
863
+ },
864
+ {
865
+ "durationMs": 10.932238,
866
+ "retainedHeapDeltaBytes": 2641744
867
+ },
868
+ {
869
+ "durationMs": 10.586398,
870
+ "retainedHeapDeltaBytes": 2641776
871
+ },
872
+ {
873
+ "durationMs": 10.762838,
874
+ "retainedHeapDeltaBytes": 2641480
875
+ },
876
+ {
877
+ "durationMs": 11.190177,
878
+ "retainedHeapDeltaBytes": 2640080
879
+ }
880
+ ]
881
+ },
882
+ {
883
+ "name": "candidate",
884
+ "medianMicrosecondsPerRequest": 11.087646,
885
+ "measurements": [
886
+ {
887
+ "durationMs": 14.77152,
888
+ "retainedHeapDeltaBytes": -3982400
889
+ },
890
+ {
891
+ "durationMs": 13.56747,
892
+ "retainedHeapDeltaBytes": 3667728
893
+ },
894
+ {
895
+ "durationMs": 11.374369,
896
+ "retainedHeapDeltaBytes": 2700280
897
+ },
898
+ {
899
+ "durationMs": 11.310275,
900
+ "retainedHeapDeltaBytes": 2651392
901
+ },
902
+ {
903
+ "durationMs": 11.081197,
904
+ "retainedHeapDeltaBytes": 2649936
905
+ },
906
+ {
907
+ "durationMs": 11.087646,
908
+ "retainedHeapDeltaBytes": 2653256
909
+ },
910
+ {
911
+ "durationMs": 10.694126,
912
+ "retainedHeapDeltaBytes": -14124704
913
+ },
914
+ {
915
+ "durationMs": 10.75078,
916
+ "retainedHeapDeltaBytes": -14124192
917
+ },
918
+ {
919
+ "durationMs": 10.870317,
920
+ "retainedHeapDeltaBytes": -14122384
921
+ }
922
+ ]
923
+ }
924
+ ],
925
+ "candidateToReferenceMedianRatio": 1.0142155704989224
926
+ },
927
+ {
928
+ "scenario": "24mp-defocus-1",
929
+ "requestsPerRepeat": 1000,
930
+ "repeats": 9,
931
+ "warmupRequestsPerPath": 500,
932
+ "paths": [
933
+ {
934
+ "name": "reference",
935
+ "medianMicrosecondsPerRequest": 11.945209,
936
+ "measurements": [
937
+ {
938
+ "durationMs": 13.21491,
939
+ "retainedHeapDeltaBytes": 6312080
940
+ },
941
+ {
942
+ "durationMs": 12.125395,
943
+ "retainedHeapDeltaBytes": 6111376
944
+ },
945
+ {
946
+ "durationMs": 12.333713,
947
+ "retainedHeapDeltaBytes": -2276680
948
+ },
949
+ {
950
+ "durationMs": 11.851672,
951
+ "retainedHeapDeltaBytes": -10716328
952
+ },
953
+ {
954
+ "durationMs": 15.674815,
955
+ "retainedHeapDeltaBytes": 6061128
956
+ },
957
+ {
958
+ "durationMs": 11.632149,
959
+ "retainedHeapDeltaBytes": 6058568
960
+ },
961
+ {
962
+ "durationMs": 11.78897,
963
+ "retainedHeapDeltaBytes": 6060672
964
+ },
965
+ {
966
+ "durationMs": 11.504961,
967
+ "retainedHeapDeltaBytes": 6061008
968
+ },
969
+ {
970
+ "durationMs": 11.945209,
971
+ "retainedHeapDeltaBytes": 6059432
972
+ }
973
+ ]
974
+ },
975
+ {
976
+ "name": "candidate",
977
+ "medianMicrosecondsPerRequest": 11.252179,
978
+ "measurements": [
979
+ {
980
+ "durationMs": 12.343837,
981
+ "retainedHeapDeltaBytes": -4460056
982
+ },
983
+ {
984
+ "durationMs": 12.440991,
985
+ "retainedHeapDeltaBytes": -4536464
986
+ },
987
+ {
988
+ "durationMs": 11.252179,
989
+ "retainedHeapDeltaBytes": 3846432
990
+ },
991
+ {
992
+ "durationMs": 11.866875,
993
+ "retainedHeapDeltaBytes": 3887144
994
+ },
995
+ {
996
+ "durationMs": 15.958943,
997
+ "retainedHeapDeltaBytes": 3794584
998
+ },
999
+ {
1000
+ "durationMs": 11.203757,
1001
+ "retainedHeapDeltaBytes": -12982168
1002
+ },
1003
+ {
1004
+ "durationMs": 11.114095,
1005
+ "retainedHeapDeltaBytes": 3793304
1006
+ },
1007
+ {
1008
+ "durationMs": 11.023401,
1009
+ "retainedHeapDeltaBytes": 3796464
1010
+ },
1011
+ {
1012
+ "durationMs": 11.057371,
1013
+ "retainedHeapDeltaBytes": 3795528
1014
+ }
1015
+ ]
1016
+ }
1017
+ ],
1018
+ "candidateToReferenceMedianRatio": 0.941982597374395
1019
+ },
1020
+ {
1021
+ "scenario": "24mp-defocus-2",
1022
+ "requestsPerRepeat": 1000,
1023
+ "repeats": 9,
1024
+ "warmupRequestsPerPath": 500,
1025
+ "paths": [
1026
+ {
1027
+ "name": "reference",
1028
+ "medianMicrosecondsPerRequest": 12.679853,
1029
+ "measurements": [
1030
+ {
1031
+ "durationMs": 13.329539,
1032
+ "retainedHeapDeltaBytes": 996128
1033
+ },
1034
+ {
1035
+ "durationMs": 12.952434,
1036
+ "retainedHeapDeltaBytes": 909120
1037
+ },
1038
+ {
1039
+ "durationMs": 13.376439,
1040
+ "retainedHeapDeltaBytes": 907216
1041
+ },
1042
+ {
1043
+ "durationMs": 12.582339,
1044
+ "retainedHeapDeltaBytes": 9240408
1045
+ },
1046
+ {
1047
+ "durationMs": 12.594447,
1048
+ "retainedHeapDeltaBytes": -7531504
1049
+ },
1050
+ {
1051
+ "durationMs": 12.679853,
1052
+ "retainedHeapDeltaBytes": -7530424
1053
+ },
1054
+ {
1055
+ "durationMs": 12.456804,
1056
+ "retainedHeapDeltaBytes": -7532584
1057
+ },
1058
+ {
1059
+ "durationMs": 12.297069,
1060
+ "retainedHeapDeltaBytes": 9246824
1061
+ },
1062
+ {
1063
+ "durationMs": 13.277222,
1064
+ "retainedHeapDeltaBytes": -7527112
1065
+ }
1066
+ ]
1067
+ },
1068
+ {
1069
+ "name": "candidate",
1070
+ "medianMicrosecondsPerRequest": 12.043435,
1071
+ "measurements": [
1072
+ {
1073
+ "durationMs": 17.790507,
1074
+ "retainedHeapDeltaBytes": -2431616
1075
+ },
1076
+ {
1077
+ "durationMs": 12.316337,
1078
+ "retainedHeapDeltaBytes": -2524552
1079
+ },
1080
+ {
1081
+ "durationMs": 12.13526,
1082
+ "retainedHeapDeltaBytes": -2522952
1083
+ },
1084
+ {
1085
+ "durationMs": 11.521776,
1086
+ "retainedHeapDeltaBytes": 5808816
1087
+ },
1088
+ {
1089
+ "durationMs": 12.038217,
1090
+ "retainedHeapDeltaBytes": 5808680
1091
+ },
1092
+ {
1093
+ "durationMs": 11.766236,
1094
+ "retainedHeapDeltaBytes": 5807840
1095
+ },
1096
+ {
1097
+ "durationMs": 11.839174,
1098
+ "retainedHeapDeltaBytes": 5809600
1099
+ },
1100
+ {
1101
+ "durationMs": 12.043435,
1102
+ "retainedHeapDeltaBytes": -10966240
1103
+ },
1104
+ {
1105
+ "durationMs": 12.090464,
1106
+ "retainedHeapDeltaBytes": 5809512
1107
+ }
1108
+ ]
1109
+ }
1110
+ ],
1111
+ "candidateToReferenceMedianRatio": 0.9498087241232214
1112
+ },
1113
+ {
1114
+ "scenario": "24mp-defocus-4",
1115
+ "requestsPerRepeat": 1000,
1116
+ "repeats": 9,
1117
+ "warmupRequestsPerPath": 500,
1118
+ "paths": [
1119
+ {
1120
+ "name": "reference",
1121
+ "medianMicrosecondsPerRequest": 14.664887,
1122
+ "measurements": [
1123
+ {
1124
+ "durationMs": 15.096052,
1125
+ "retainedHeapDeltaBytes": 7363112
1126
+ },
1127
+ {
1128
+ "durationMs": 16.050308,
1129
+ "retainedHeapDeltaBytes": -1105056
1130
+ },
1131
+ {
1132
+ "durationMs": 14.664887,
1133
+ "retainedHeapDeltaBytes": 7279344
1134
+ },
1135
+ {
1136
+ "durationMs": 14.603857,
1137
+ "retainedHeapDeltaBytes": 7280536
1138
+ },
1139
+ {
1140
+ "durationMs": 15.046209,
1141
+ "retainedHeapDeltaBytes": -1162896
1142
+ },
1143
+ {
1144
+ "durationMs": 16.232446,
1145
+ "retainedHeapDeltaBytes": -1163064
1146
+ },
1147
+ {
1148
+ "durationMs": 14.07622,
1149
+ "retainedHeapDeltaBytes": -1162144
1150
+ },
1151
+ {
1152
+ "durationMs": 14.481066,
1153
+ "retainedHeapDeltaBytes": -1160064
1154
+ },
1155
+ {
1156
+ "durationMs": 14.050261,
1157
+ "retainedHeapDeltaBytes": -1163704
1158
+ }
1159
+ ]
1160
+ },
1161
+ {
1162
+ "name": "candidate",
1163
+ "medianMicrosecondsPerRequest": 13.291163,
1164
+ "measurements": [
1165
+ {
1166
+ "durationMs": 14.724234,
1167
+ "retainedHeapDeltaBytes": -6792592
1168
+ },
1169
+ {
1170
+ "durationMs": 14.272809,
1171
+ "retainedHeapDeltaBytes": 1507880
1172
+ },
1173
+ {
1174
+ "durationMs": 13.776829,
1175
+ "retainedHeapDeltaBytes": -6875984
1176
+ },
1177
+ {
1178
+ "durationMs": 12.991392,
1179
+ "retainedHeapDeltaBytes": -6879408
1180
+ },
1181
+ {
1182
+ "durationMs": 12.862232,
1183
+ "retainedHeapDeltaBytes": -6931448
1184
+ },
1185
+ {
1186
+ "durationMs": 13.702128,
1187
+ "retainedHeapDeltaBytes": 9841304
1188
+ },
1189
+ {
1190
+ "durationMs": 13.033033,
1191
+ "retainedHeapDeltaBytes": -6929496
1192
+ },
1193
+ {
1194
+ "durationMs": 13.291163,
1195
+ "retainedHeapDeltaBytes": -6928408
1196
+ },
1197
+ {
1198
+ "durationMs": 12.697097,
1199
+ "retainedHeapDeltaBytes": -6932720
1200
+ }
1201
+ ]
1202
+ }
1203
+ ],
1204
+ "candidateToReferenceMedianRatio": 0.9063256334672063
1205
+ },
1206
+ {
1207
+ "scenario": "24mp-defocus-8",
1208
+ "requestsPerRepeat": 1000,
1209
+ "repeats": 9,
1210
+ "warmupRequestsPerPath": 500,
1211
+ "paths": [
1212
+ {
1213
+ "name": "reference",
1214
+ "medianMicrosecondsPerRequest": 18.400551,
1215
+ "measurements": [
1216
+ {
1217
+ "durationMs": 18.920427,
1218
+ "retainedHeapDeltaBytes": 3531640
1219
+ },
1220
+ {
1221
+ "durationMs": 35.600628,
1222
+ "retainedHeapDeltaBytes": -4754072
1223
+ },
1224
+ {
1225
+ "durationMs": 21.381253,
1226
+ "retainedHeapDeltaBytes": 3435872
1227
+ },
1228
+ {
1229
+ "durationMs": 19.825942,
1230
+ "retainedHeapDeltaBytes": 3448464
1231
+ },
1232
+ {
1233
+ "durationMs": 18.400551,
1234
+ "retainedHeapDeltaBytes": -4992392
1235
+ },
1236
+ {
1237
+ "durationMs": 17.920934,
1238
+ "retainedHeapDeltaBytes": -4993624
1239
+ },
1240
+ {
1241
+ "durationMs": 17.8026,
1242
+ "retainedHeapDeltaBytes": 11782712
1243
+ },
1244
+ {
1245
+ "durationMs": 17.681702,
1246
+ "retainedHeapDeltaBytes": 11781704
1247
+ },
1248
+ {
1249
+ "durationMs": 18.028934,
1250
+ "retainedHeapDeltaBytes": 11782704
1251
+ }
1252
+ ]
1253
+ },
1254
+ {
1255
+ "name": "candidate",
1256
+ "medianMicrosecondsPerRequest": 15.755614,
1257
+ "measurements": [
1258
+ {
1259
+ "durationMs": 16.632767,
1260
+ "retainedHeapDeltaBytes": 1479984
1261
+ },
1262
+ {
1263
+ "durationMs": 16.724983,
1264
+ "retainedHeapDeltaBytes": 1391352
1265
+ },
1266
+ {
1267
+ "durationMs": 15.278291,
1268
+ "retainedHeapDeltaBytes": 1391608
1269
+ },
1270
+ {
1271
+ "durationMs": 15.755614,
1272
+ "retainedHeapDeltaBytes": -6996280
1273
+ },
1274
+ {
1275
+ "durationMs": 15.13531,
1276
+ "retainedHeapDeltaBytes": 1336672
1277
+ },
1278
+ {
1279
+ "durationMs": 16.354346,
1280
+ "retainedHeapDeltaBytes": 1337728
1281
+ },
1282
+ {
1283
+ "durationMs": 17.74864,
1284
+ "retainedHeapDeltaBytes": 1340016
1285
+ },
1286
+ {
1287
+ "durationMs": 15.110003,
1288
+ "retainedHeapDeltaBytes": 1335608
1289
+ },
1290
+ {
1291
+ "durationMs": 14.855708,
1292
+ "retainedHeapDeltaBytes": 1333552
1293
+ }
1294
+ ]
1295
+ }
1296
+ ],
1297
+ "candidateToReferenceMedianRatio": 0.8562577283691124
1298
+ },
1299
+ {
1300
+ "scenario": "24mp-defocus-16",
1301
+ "requestsPerRepeat": 1000,
1302
+ "repeats": 9,
1303
+ "warmupRequestsPerPath": 500,
1304
+ "paths": [
1305
+ {
1306
+ "name": "reference",
1307
+ "medianMicrosecondsPerRequest": 24.31817,
1308
+ "measurements": [
1309
+ {
1310
+ "durationMs": 25.750781,
1311
+ "retainedHeapDeltaBytes": -4169008
1312
+ },
1313
+ {
1314
+ "durationMs": 24.31817,
1315
+ "retainedHeapDeltaBytes": 4088816
1316
+ },
1317
+ {
1318
+ "durationMs": 25.233739,
1319
+ "retainedHeapDeltaBytes": -4229400
1320
+ },
1321
+ {
1322
+ "durationMs": 31.755012,
1323
+ "retainedHeapDeltaBytes": -12695336
1324
+ },
1325
+ {
1326
+ "durationMs": 24.152365,
1327
+ "retainedHeapDeltaBytes": 4070376
1328
+ },
1329
+ {
1330
+ "durationMs": 24.317499,
1331
+ "retainedHeapDeltaBytes": 4071072
1332
+ },
1333
+ {
1334
+ "durationMs": 28.336571,
1335
+ "retainedHeapDeltaBytes": -12704360
1336
+ },
1337
+ {
1338
+ "durationMs": 24.201208,
1339
+ "retainedHeapDeltaBytes": 4072952
1340
+ },
1341
+ {
1342
+ "durationMs": 24.208058,
1343
+ "retainedHeapDeltaBytes": -12706056
1344
+ }
1345
+ ]
1346
+ },
1347
+ {
1348
+ "name": "candidate",
1349
+ "medianMicrosecondsPerRequest": 19.927941,
1350
+ "measurements": [
1351
+ {
1352
+ "durationMs": 22.016288,
1353
+ "retainedHeapDeltaBytes": 1190192
1354
+ },
1355
+ {
1356
+ "durationMs": 24.352481,
1357
+ "retainedHeapDeltaBytes": 1236352
1358
+ },
1359
+ {
1360
+ "durationMs": 19.927941,
1361
+ "retainedHeapDeltaBytes": 1100088
1362
+ },
1363
+ {
1364
+ "durationMs": 23.973453,
1365
+ "retainedHeapDeltaBytes": 9670280
1366
+ },
1367
+ {
1368
+ "durationMs": 19.605196,
1369
+ "retainedHeapDeltaBytes": -15719368
1370
+ },
1371
+ {
1372
+ "durationMs": 19.819121,
1373
+ "retainedHeapDeltaBytes": 1063928
1374
+ },
1375
+ {
1376
+ "durationMs": 20.408049,
1377
+ "retainedHeapDeltaBytes": 1057664
1378
+ },
1379
+ {
1380
+ "durationMs": 19.840453,
1381
+ "retainedHeapDeltaBytes": -15711432
1382
+ },
1383
+ {
1384
+ "durationMs": 19.216313,
1385
+ "retainedHeapDeltaBytes": 1056256
1386
+ }
1387
+ ]
1388
+ }
1389
+ ],
1390
+ "candidateToReferenceMedianRatio": 0.819467130955989
1391
+ },
1392
+ {
1393
+ "scenario": "24mp-mixed-16-per-kind",
1394
+ "requestsPerRepeat": 1000,
1395
+ "repeats": 9,
1396
+ "warmupRequestsPerPath": 500,
1397
+ "paths": [
1398
+ {
1399
+ "name": "reference",
1400
+ "medianMicrosecondsPerRequest": 53.540055,
1401
+ "measurements": [
1402
+ {
1403
+ "durationMs": 59.68923,
1404
+ "retainedHeapDeltaBytes": 4879336
1405
+ },
1406
+ {
1407
+ "durationMs": 52.246129,
1408
+ "retainedHeapDeltaBytes": 5397712
1409
+ },
1410
+ {
1411
+ "durationMs": 53.719339,
1412
+ "retainedHeapDeltaBytes": 4765120
1413
+ },
1414
+ {
1415
+ "durationMs": 53.616267,
1416
+ "retainedHeapDeltaBytes": 5323928
1417
+ },
1418
+ {
1419
+ "durationMs": 53.540055,
1420
+ "retainedHeapDeltaBytes": 5326056
1421
+ },
1422
+ {
1423
+ "durationMs": 52.742009,
1424
+ "retainedHeapDeltaBytes": -11433832
1425
+ },
1426
+ {
1427
+ "durationMs": 54.322617,
1428
+ "retainedHeapDeltaBytes": -11443416
1429
+ },
1430
+ {
1431
+ "durationMs": 52.574433,
1432
+ "retainedHeapDeltaBytes": 5327816
1433
+ },
1434
+ {
1435
+ "durationMs": 52.504449,
1436
+ "retainedHeapDeltaBytes": 5328096
1437
+ }
1438
+ ]
1439
+ },
1440
+ {
1441
+ "name": "candidate",
1442
+ "medianMicrosecondsPerRequest": 48.307265,
1443
+ "measurements": [
1444
+ {
1445
+ "durationMs": 54.808754,
1446
+ "retainedHeapDeltaBytes": -6544640
1447
+ },
1448
+ {
1449
+ "durationMs": 46.907382,
1450
+ "retainedHeapDeltaBytes": -6019656
1451
+ },
1452
+ {
1453
+ "durationMs": 59.785857,
1454
+ "retainedHeapDeltaBytes": -6668528
1455
+ },
1456
+ {
1457
+ "durationMs": 49.732526,
1458
+ "retainedHeapDeltaBytes": 2304992
1459
+ },
1460
+ {
1461
+ "durationMs": 47.288714,
1462
+ "retainedHeapDeltaBytes": 2306496
1463
+ },
1464
+ {
1465
+ "durationMs": 48.307265,
1466
+ "retainedHeapDeltaBytes": 2309352
1467
+ },
1468
+ {
1469
+ "durationMs": 48.62889,
1470
+ "retainedHeapDeltaBytes": 2313096
1471
+ },
1472
+ {
1473
+ "durationMs": 47.453857,
1474
+ "retainedHeapDeltaBytes": 2304712
1475
+ },
1476
+ {
1477
+ "durationMs": 47.66639,
1478
+ "retainedHeapDeltaBytes": 2309632
1479
+ }
1480
+ ]
1481
+ }
1482
+ ],
1483
+ "candidateToReferenceMedianRatio": 0.9022640152312134
1484
+ },
1485
+ {
1486
+ "scenario": "24mp-staged-portrait-mixed",
1487
+ "requestsPerRepeat": 1000,
1488
+ "repeats": 9,
1489
+ "warmupRequestsPerPath": 500,
1490
+ "paths": [
1491
+ {
1492
+ "name": "reference",
1493
+ "medianMicrosecondsPerRequest": 93.996213,
1494
+ "measurements": [
1495
+ {
1496
+ "durationMs": 97.372667,
1497
+ "retainedHeapDeltaBytes": -612576
1498
+ },
1499
+ {
1500
+ "durationMs": 97.285078,
1501
+ "retainedHeapDeltaBytes": -303024
1502
+ },
1503
+ {
1504
+ "durationMs": 93.996213,
1505
+ "retainedHeapDeltaBytes": 5503848
1506
+ },
1507
+ {
1508
+ "durationMs": 94.808053,
1509
+ "retainedHeapDeltaBytes": -10077856
1510
+ },
1511
+ {
1512
+ "durationMs": 91.079875,
1513
+ "retainedHeapDeltaBytes": 6247744
1514
+ },
1515
+ {
1516
+ "durationMs": 89.72574,
1517
+ "retainedHeapDeltaBytes": 5639416
1518
+ },
1519
+ {
1520
+ "durationMs": 102.436568,
1521
+ "retainedHeapDeltaBytes": 6270232
1522
+ },
1523
+ {
1524
+ "durationMs": 90.626458,
1525
+ "retainedHeapDeltaBytes": 7551080
1526
+ },
1527
+ {
1528
+ "durationMs": 90.854042,
1529
+ "retainedHeapDeltaBytes": -9203912
1530
+ }
1531
+ ]
1532
+ },
1533
+ {
1534
+ "name": "candidate",
1535
+ "medianMicrosecondsPerRequest": 86.80912299999999,
1536
+ "measurements": [
1537
+ {
1538
+ "durationMs": 97.355867,
1539
+ "retainedHeapDeltaBytes": 4771552
1540
+ },
1541
+ {
1542
+ "durationMs": 93.438109,
1543
+ "retainedHeapDeltaBytes": -3302240
1544
+ },
1545
+ {
1546
+ "durationMs": 86.809123,
1547
+ "retainedHeapDeltaBytes": -5985416
1548
+ },
1549
+ {
1550
+ "durationMs": 88.566642,
1551
+ "retainedHeapDeltaBytes": 3674208
1552
+ },
1553
+ {
1554
+ "durationMs": 86.697198,
1555
+ "retainedHeapDeltaBytes": -13539648
1556
+ },
1557
+ {
1558
+ "durationMs": 86.380632,
1559
+ "retainedHeapDeltaBytes": 2618456
1560
+ },
1561
+ {
1562
+ "durationMs": 87.325274,
1563
+ "retainedHeapDeltaBytes": 3223688
1564
+ },
1565
+ {
1566
+ "durationMs": 86.132536,
1567
+ "retainedHeapDeltaBytes": 4541448
1568
+ },
1569
+ {
1570
+ "durationMs": 84.465329,
1571
+ "retainedHeapDeltaBytes": 4522840
1572
+ }
1573
+ ]
1574
+ }
1575
+ ],
1576
+ "candidateToReferenceMedianRatio": 0.9235385153229525
1577
+ }
1578
+ ],
1579
+ "allocationProfiles": [],
1580
+ "preparationProbe": {
1581
+ "kind": "isolated-three-scalar-object-freeze",
1582
+ "preparationsPerRepeat": 100000,
1583
+ "nanosecondsPerPreparation": [
1584
+ 45.605,
1585
+ 56.5337,
1586
+ 38.28231,
1587
+ 46.38794,
1588
+ 41.64576,
1589
+ 39.2298,
1590
+ 39.20997,
1591
+ 41.542,
1592
+ 39.37282
1593
+ ],
1594
+ "medianNanosecondsPerPreparation": 41.542,
1595
+ "limitation": "Synthetic isolated probe; JIT/escape behavior can differ inside the whole request."
1596
+ },
1597
+ "sink": 53131313.13083108,
1598
+ "limitations": [
1599
+ "Paired developer POC request shapes on shared infrastructure; not observed product call frequency or browser latency",
1600
+ "POC is analytical; 24 MP dimensions do not execute 24 million image samples",
1601
+ "Net retained heap is not allocation count; separately instrumented heap sampling is statistical, not an exact allocation counter",
1602
+ "Source SHA context is operator-attested; source fingerprints identify the candidate change",
1603
+ "No full production radiometry/serialization or browser performance claim"
1604
+ ]
1605
+ }
1606
+ ],
1607
+ "gcAssistedRun": {
1608
+ "benchmark": "poc-request-local-defocus-projection-reuse",
1609
+ "benchmarkVersion": 2,
1610
+ "referenceCommit": "c1374c31473f893310d1ce4f0d5a737aaba43ab5",
1611
+ "candidateBaseCommit": "c1374c31473f893310d1ce4f0d5a737aaba43ab5",
1612
+ "candidateSources": [
1613
+ {
1614
+ "path": "src/optics/depth-of-field.ts",
1615
+ "sha256": "5a947cac46215281bde539333879f9411e2c8cdafaaae04b471a4b3bbe676f06"
1616
+ },
1617
+ {
1618
+ "path": "src/simulation/poc-simulation.ts",
1619
+ "sha256": "7d6f1a8bc7fe954744009965f53d9bf1ff39c08a184a13cc6983b59d99bd73cd"
1620
+ }
1621
+ ],
1622
+ "buildMethod": "tsc",
1623
+ "engineApiVersion": "0.103.0",
1624
+ "pocApiVersion": "0.20.0",
1625
+ "nodeVersion": "v24.19.0",
1626
+ "v8Version": "13.6.233.17-node.51",
1627
+ "platform": "linux",
1628
+ "arch": "x64",
1629
+ "cpuModel": "AMD EPYC 9V74 80-Core Processor",
1630
+ "logicalCpuCount": 9,
1631
+ "forcedGc": true,
1632
+ "results": [
1633
+ {
1634
+ "scenario": "24mp-base",
1635
+ "requestsPerRepeat": 1000,
1636
+ "repeats": 9,
1637
+ "warmupRequestsPerPath": 500,
1638
+ "paths": [
1639
+ {
1640
+ "name": "reference",
1641
+ "medianMicrosecondsPerRequest": 14.575694,
1642
+ "measurements": [
1643
+ {
1644
+ "durationMs": 14.596025,
1645
+ "retainedHeapDeltaBytes": -9496
1646
+ },
1647
+ {
1648
+ "durationMs": 14.45103,
1649
+ "retainedHeapDeltaBytes": 512
1650
+ },
1651
+ {
1652
+ "durationMs": 14.575694,
1653
+ "retainedHeapDeltaBytes": 1008
1654
+ },
1655
+ {
1656
+ "durationMs": 15.941996,
1657
+ "retainedHeapDeltaBytes": -472
1658
+ },
1659
+ {
1660
+ "durationMs": 14.17446,
1661
+ "retainedHeapDeltaBytes": 856
1662
+ },
1663
+ {
1664
+ "durationMs": 14.831538,
1665
+ "retainedHeapDeltaBytes": 70360
1666
+ },
1667
+ {
1668
+ "durationMs": 15.747618,
1669
+ "retainedHeapDeltaBytes": 1216
1670
+ },
1671
+ {
1672
+ "durationMs": 14.142933,
1673
+ "retainedHeapDeltaBytes": -1008
1674
+ },
1675
+ {
1676
+ "durationMs": 14.332923,
1677
+ "retainedHeapDeltaBytes": 79232
1678
+ }
1679
+ ]
1680
+ },
1681
+ {
1682
+ "name": "candidate",
1683
+ "medianMicrosecondsPerRequest": 14.41682,
1684
+ "measurements": [
1685
+ {
1686
+ "durationMs": 15.355974,
1687
+ "retainedHeapDeltaBytes": 88216
1688
+ },
1689
+ {
1690
+ "durationMs": 14.760707,
1691
+ "retainedHeapDeltaBytes": 512
1692
+ },
1693
+ {
1694
+ "durationMs": 14.41682,
1695
+ "retainedHeapDeltaBytes": -472
1696
+ },
1697
+ {
1698
+ "durationMs": 14.097275,
1699
+ "retainedHeapDeltaBytes": 1264
1700
+ },
1701
+ {
1702
+ "durationMs": 14.06648,
1703
+ "retainedHeapDeltaBytes": 8392
1704
+ },
1705
+ {
1706
+ "durationMs": 14.302598,
1707
+ "retainedHeapDeltaBytes": -672
1708
+ },
1709
+ {
1710
+ "durationMs": 14.451869,
1711
+ "retainedHeapDeltaBytes": -472
1712
+ },
1713
+ {
1714
+ "durationMs": 14.618914,
1715
+ "retainedHeapDeltaBytes": 80872
1716
+ },
1717
+ {
1718
+ "durationMs": 14.148511,
1719
+ "retainedHeapDeltaBytes": 1904
1720
+ }
1721
+ ]
1722
+ }
1723
+ ],
1724
+ "candidateToReferenceMedianRatio": 0.9891000730394037
1725
+ },
1726
+ {
1727
+ "scenario": "24mp-defocus-1",
1728
+ "requestsPerRepeat": 1000,
1729
+ "repeats": 9,
1730
+ "warmupRequestsPerPath": 500,
1731
+ "paths": [
1732
+ {
1733
+ "name": "reference",
1734
+ "medianMicrosecondsPerRequest": 15.606461,
1735
+ "measurements": [
1736
+ {
1737
+ "durationMs": 12.579804,
1738
+ "retainedHeapDeltaBytes": -5392
1739
+ },
1740
+ {
1741
+ "durationMs": 16.277432,
1742
+ "retainedHeapDeltaBytes": 512
1743
+ },
1744
+ {
1745
+ "durationMs": 16.947543,
1746
+ "retainedHeapDeltaBytes": 1336
1747
+ },
1748
+ {
1749
+ "durationMs": 15.606461,
1750
+ "retainedHeapDeltaBytes": -544
1751
+ },
1752
+ {
1753
+ "durationMs": 15.233511,
1754
+ "retainedHeapDeltaBytes": 1336
1755
+ },
1756
+ {
1757
+ "durationMs": 15.105662,
1758
+ "retainedHeapDeltaBytes": -1240
1759
+ },
1760
+ {
1761
+ "durationMs": 16.419639,
1762
+ "retainedHeapDeltaBytes": 1336
1763
+ },
1764
+ {
1765
+ "durationMs": 15.024282,
1766
+ "retainedHeapDeltaBytes": -624
1767
+ },
1768
+ {
1769
+ "durationMs": 15.691746,
1770
+ "retainedHeapDeltaBytes": 560
1771
+ }
1772
+ ]
1773
+ },
1774
+ {
1775
+ "name": "candidate",
1776
+ "medianMicrosecondsPerRequest": 15.200933,
1777
+ "measurements": [
1778
+ {
1779
+ "durationMs": 13.528611,
1780
+ "retainedHeapDeltaBytes": -118192
1781
+ },
1782
+ {
1783
+ "durationMs": 15.669896,
1784
+ "retainedHeapDeltaBytes": 256
1785
+ },
1786
+ {
1787
+ "durationMs": 15.200933,
1788
+ "retainedHeapDeltaBytes": -736
1789
+ },
1790
+ {
1791
+ "durationMs": 19.148393,
1792
+ "retainedHeapDeltaBytes": 1336
1793
+ },
1794
+ {
1795
+ "durationMs": 14.901782,
1796
+ "retainedHeapDeltaBytes": 1120
1797
+ },
1798
+ {
1799
+ "durationMs": 15.221183,
1800
+ "retainedHeapDeltaBytes": -57192
1801
+ },
1802
+ {
1803
+ "durationMs": 15.264246,
1804
+ "retainedHeapDeltaBytes": -544
1805
+ },
1806
+ {
1807
+ "durationMs": 15.073555,
1808
+ "retainedHeapDeltaBytes": 1448
1809
+ },
1810
+ {
1811
+ "durationMs": 14.895342,
1812
+ "retainedHeapDeltaBytes": 592
1813
+ }
1814
+ ]
1815
+ }
1816
+ ],
1817
+ "candidateToReferenceMedianRatio": 0.9740153773491632
1818
+ },
1819
+ {
1820
+ "scenario": "24mp-defocus-2",
1821
+ "requestsPerRepeat": 1000,
1822
+ "repeats": 9,
1823
+ "warmupRequestsPerPath": 500,
1824
+ "paths": [
1825
+ {
1826
+ "name": "reference",
1827
+ "medianMicrosecondsPerRequest": 16.882042,
1828
+ "measurements": [
1829
+ {
1830
+ "durationMs": 16.911846,
1831
+ "retainedHeapDeltaBytes": 1056
1832
+ },
1833
+ {
1834
+ "durationMs": 18.61184,
1835
+ "retainedHeapDeltaBytes": -3168
1836
+ },
1837
+ {
1838
+ "durationMs": 16.882042,
1839
+ "retainedHeapDeltaBytes": 512
1840
+ },
1841
+ {
1842
+ "durationMs": 22.514941,
1843
+ "retainedHeapDeltaBytes": 69896
1844
+ },
1845
+ {
1846
+ "durationMs": 16.342996,
1847
+ "retainedHeapDeltaBytes": 1080
1848
+ },
1849
+ {
1850
+ "durationMs": 16.510693,
1851
+ "retainedHeapDeltaBytes": -1000
1852
+ },
1853
+ {
1854
+ "durationMs": 17.148835,
1855
+ "retainedHeapDeltaBytes": 79352
1856
+ },
1857
+ {
1858
+ "durationMs": 16.081311,
1859
+ "retainedHeapDeltaBytes": -512
1860
+ },
1861
+ {
1862
+ "durationMs": 16.20304,
1863
+ "retainedHeapDeltaBytes": 560
1864
+ }
1865
+ ]
1866
+ },
1867
+ {
1868
+ "name": "candidate",
1869
+ "medianMicrosecondsPerRequest": 16.537594,
1870
+ "measurements": [
1871
+ {
1872
+ "durationMs": 16.659104,
1873
+ "retainedHeapDeltaBytes": 1576
1874
+ },
1875
+ {
1876
+ "durationMs": 20.761517,
1877
+ "retainedHeapDeltaBytes": 7616
1878
+ },
1879
+ {
1880
+ "durationMs": 15.813438,
1881
+ "retainedHeapDeltaBytes": 16056
1882
+ },
1883
+ {
1884
+ "durationMs": 16.937964,
1885
+ "retainedHeapDeltaBytes": 11864
1886
+ },
1887
+ {
1888
+ "durationMs": 15.886704,
1889
+ "retainedHeapDeltaBytes": -544
1890
+ },
1891
+ {
1892
+ "durationMs": 16.405098,
1893
+ "retainedHeapDeltaBytes": 80816
1894
+ },
1895
+ {
1896
+ "durationMs": 16.537594,
1897
+ "retainedHeapDeltaBytes": -968
1898
+ },
1899
+ {
1900
+ "durationMs": 16.794432,
1901
+ "retainedHeapDeltaBytes": 1448
1902
+ },
1903
+ {
1904
+ "durationMs": 15.980623,
1905
+ "retainedHeapDeltaBytes": 592
1906
+ }
1907
+ ]
1908
+ }
1909
+ ],
1910
+ "candidateToReferenceMedianRatio": 0.9795967810055205
1911
+ },
1912
+ {
1913
+ "scenario": "24mp-defocus-4",
1914
+ "requestsPerRepeat": 1000,
1915
+ "repeats": 9,
1916
+ "warmupRequestsPerPath": 500,
1917
+ "paths": [
1918
+ {
1919
+ "name": "reference",
1920
+ "medianMicrosecondsPerRequest": 19.197384,
1921
+ "measurements": [
1922
+ {
1923
+ "durationMs": 19.197384,
1924
+ "retainedHeapDeltaBytes": 512
1925
+ },
1926
+ {
1927
+ "durationMs": 24.710861,
1928
+ "retainedHeapDeltaBytes": 1320
1929
+ },
1930
+ {
1931
+ "durationMs": 19.404228,
1932
+ "retainedHeapDeltaBytes": -816
1933
+ },
1934
+ {
1935
+ "durationMs": 19.757752,
1936
+ "retainedHeapDeltaBytes": -800
1937
+ },
1938
+ {
1939
+ "durationMs": 18.363215,
1940
+ "retainedHeapDeltaBytes": 1336
1941
+ },
1942
+ {
1943
+ "durationMs": 18.197381,
1944
+ "retainedHeapDeltaBytes": -544
1945
+ },
1946
+ {
1947
+ "durationMs": 18.831676,
1948
+ "retainedHeapDeltaBytes": 1336
1949
+ },
1950
+ {
1951
+ "durationMs": 21.319003,
1952
+ "retainedHeapDeltaBytes": -736
1953
+ },
1954
+ {
1955
+ "durationMs": 18.500578,
1956
+ "retainedHeapDeltaBytes": 560
1957
+ }
1958
+ ]
1959
+ },
1960
+ {
1961
+ "name": "candidate",
1962
+ "medianMicrosecondsPerRequest": 18.06829,
1963
+ "measurements": [
1964
+ {
1965
+ "durationMs": 19.199907,
1966
+ "retainedHeapDeltaBytes": 512
1967
+ },
1968
+ {
1969
+ "durationMs": 19.082384,
1970
+ "retainedHeapDeltaBytes": 512
1971
+ },
1972
+ {
1973
+ "durationMs": 18.06829,
1974
+ "retainedHeapDeltaBytes": 512
1975
+ },
1976
+ {
1977
+ "durationMs": 19.925994,
1978
+ "retainedHeapDeltaBytes": 11864
1979
+ },
1980
+ {
1981
+ "durationMs": 17.865752,
1982
+ "retainedHeapDeltaBytes": -544
1983
+ },
1984
+ {
1985
+ "durationMs": 17.869076,
1986
+ "retainedHeapDeltaBytes": 1336
1987
+ },
1988
+ {
1989
+ "durationMs": 18.892886,
1990
+ "retainedHeapDeltaBytes": 9984
1991
+ },
1992
+ {
1993
+ "durationMs": 17.567973,
1994
+ "retainedHeapDeltaBytes": 11864
1995
+ },
1996
+ {
1997
+ "durationMs": 17.780767,
1998
+ "retainedHeapDeltaBytes": 11088
1999
+ }
2000
+ ]
2001
+ }
2002
+ ],
2003
+ "candidateToReferenceMedianRatio": 0.9411850072905767
2004
+ },
2005
+ {
2006
+ "scenario": "24mp-defocus-8",
2007
+ "requestsPerRepeat": 1000,
2008
+ "repeats": 9,
2009
+ "warmupRequestsPerPath": 500,
2010
+ "paths": [
2011
+ {
2012
+ "name": "reference",
2013
+ "medianMicrosecondsPerRequest": 22.414619,
2014
+ "measurements": [
2015
+ {
2016
+ "durationMs": 23.234841,
2017
+ "retainedHeapDeltaBytes": 512
2018
+ },
2019
+ {
2020
+ "durationMs": 22.225935,
2021
+ "retainedHeapDeltaBytes": 81608
2022
+ },
2023
+ {
2024
+ "durationMs": 22.777057,
2025
+ "retainedHeapDeltaBytes": 1320
2026
+ },
2027
+ {
2028
+ "durationMs": 22.575977,
2029
+ "retainedHeapDeltaBytes": -800
2030
+ },
2031
+ {
2032
+ "durationMs": 25.041573,
2033
+ "retainedHeapDeltaBytes": 78296
2034
+ },
2035
+ {
2036
+ "durationMs": 21.549904,
2037
+ "retainedHeapDeltaBytes": -800
2038
+ },
2039
+ {
2040
+ "durationMs": 22.414619,
2041
+ "retainedHeapDeltaBytes": 1080
2042
+ },
2043
+ {
2044
+ "durationMs": 21.739422,
2045
+ "retainedHeapDeltaBytes": -512
2046
+ },
2047
+ {
2048
+ "durationMs": 22.031323,
2049
+ "retainedHeapDeltaBytes": 69568
2050
+ }
2051
+ ]
2052
+ },
2053
+ {
2054
+ "name": "candidate",
2055
+ "medianMicrosecondsPerRequest": 21.338207,
2056
+ "measurements": [
2057
+ {
2058
+ "durationMs": 21.219823,
2059
+ "retainedHeapDeltaBytes": 12144
2060
+ },
2061
+ {
2062
+ "durationMs": 20.771447,
2063
+ "retainedHeapDeltaBytes": 92456
2064
+ },
2065
+ {
2066
+ "durationMs": 21.338207,
2067
+ "retainedHeapDeltaBytes": 9968
2068
+ },
2069
+ {
2070
+ "durationMs": 22.612731,
2071
+ "retainedHeapDeltaBytes": 11864
2072
+ },
2073
+ {
2074
+ "durationMs": 23.46715,
2075
+ "retainedHeapDeltaBytes": -70136
2076
+ },
2077
+ {
2078
+ "durationMs": 19.843619,
2079
+ "retainedHeapDeltaBytes": 11864
2080
+ },
2081
+ {
2082
+ "durationMs": 20.850703,
2083
+ "retainedHeapDeltaBytes": -544
2084
+ },
2085
+ {
2086
+ "durationMs": 28.846352,
2087
+ "retainedHeapDeltaBytes": 1368
2088
+ },
2089
+ {
2090
+ "durationMs": 25.329807,
2091
+ "retainedHeapDeltaBytes": -68672
2092
+ }
2093
+ ]
2094
+ }
2095
+ ],
2096
+ "candidateToReferenceMedianRatio": 0.9519772341434848
2097
+ },
2098
+ {
2099
+ "scenario": "24mp-defocus-16",
2100
+ "requestsPerRepeat": 1000,
2101
+ "repeats": 9,
2102
+ "warmupRequestsPerPath": 500,
2103
+ "paths": [
2104
+ {
2105
+ "name": "reference",
2106
+ "medianMicrosecondsPerRequest": 31.222049,
2107
+ "measurements": [
2108
+ {
2109
+ "durationMs": 31.222049,
2110
+ "retainedHeapDeltaBytes": 1112
2111
+ },
2112
+ {
2113
+ "durationMs": 33.467967,
2114
+ "retainedHeapDeltaBytes": -3704
2115
+ },
2116
+ {
2117
+ "durationMs": 30.579643,
2118
+ "retainedHeapDeltaBytes": 20184
2119
+ },
2120
+ {
2121
+ "durationMs": 30.490927,
2122
+ "retainedHeapDeltaBytes": -800
2123
+ },
2124
+ {
2125
+ "durationMs": 31.424784,
2126
+ "retainedHeapDeltaBytes": -12392
2127
+ },
2128
+ {
2129
+ "durationMs": 29.031675,
2130
+ "retainedHeapDeltaBytes": -800
2131
+ },
2132
+ {
2133
+ "durationMs": 30.335938,
2134
+ "retainedHeapDeltaBytes": 1336
2135
+ },
2136
+ {
2137
+ "durationMs": 31.68736,
2138
+ "retainedHeapDeltaBytes": -112
2139
+ },
2140
+ {
2141
+ "durationMs": 31.600562,
2142
+ "retainedHeapDeltaBytes": 4496
2143
+ }
2144
+ ]
2145
+ },
2146
+ {
2147
+ "name": "candidate",
2148
+ "medianMicrosecondsPerRequest": 26.74303,
2149
+ "measurements": [
2150
+ {
2151
+ "durationMs": 27.012227,
2152
+ "retainedHeapDeltaBytes": 10496
2153
+ },
2154
+ {
2155
+ "durationMs": 30.013488,
2156
+ "retainedHeapDeltaBytes": 12808
2157
+ },
2158
+ {
2159
+ "durationMs": 27.049862,
2160
+ "retainedHeapDeltaBytes": 10000
2161
+ },
2162
+ {
2163
+ "durationMs": 26.74303,
2164
+ "retainedHeapDeltaBytes": 11864
2165
+ },
2166
+ {
2167
+ "durationMs": 26.331764,
2168
+ "retainedHeapDeltaBytes": 78728
2169
+ },
2170
+ {
2171
+ "durationMs": 24.94508,
2172
+ "retainedHeapDeltaBytes": 14056
2173
+ },
2174
+ {
2175
+ "durationMs": 25.67761,
2176
+ "retainedHeapDeltaBytes": 7424
2177
+ },
2178
+ {
2179
+ "durationMs": 25.391818,
2180
+ "retainedHeapDeltaBytes": 13520
2181
+ },
2182
+ {
2183
+ "durationMs": 32.443581,
2184
+ "retainedHeapDeltaBytes": 88336
2185
+ }
2186
+ ]
2187
+ }
2188
+ ],
2189
+ "candidateToReferenceMedianRatio": 0.856543079539719
2190
+ },
2191
+ {
2192
+ "scenario": "24mp-mixed-16-per-kind",
2193
+ "requestsPerRepeat": 1000,
2194
+ "repeats": 9,
2195
+ "warmupRequestsPerPath": 500,
2196
+ "paths": [
2197
+ {
2198
+ "name": "reference",
2199
+ "medianMicrosecondsPerRequest": 62.871059,
2200
+ "measurements": [
2201
+ {
2202
+ "durationMs": 63.822159,
2203
+ "retainedHeapDeltaBytes": -5904
2204
+ },
2205
+ {
2206
+ "durationMs": 63.143167,
2207
+ "retainedHeapDeltaBytes": 432
2208
+ },
2209
+ {
2210
+ "durationMs": 62.617313,
2211
+ "retainedHeapDeltaBytes": -760
2212
+ },
2213
+ {
2214
+ "durationMs": 69.284811,
2215
+ "retainedHeapDeltaBytes": -1096
2216
+ },
2217
+ {
2218
+ "durationMs": 62.871059,
2219
+ "retainedHeapDeltaBytes": 1096
2220
+ },
2221
+ {
2222
+ "durationMs": 60.816589,
2223
+ "retainedHeapDeltaBytes": 848
2224
+ },
2225
+ {
2226
+ "durationMs": 59.090214,
2227
+ "retainedHeapDeltaBytes": 5696
2228
+ },
2229
+ {
2230
+ "durationMs": 59.424146,
2231
+ "retainedHeapDeltaBytes": -70600
2232
+ },
2233
+ {
2234
+ "durationMs": 63.396273,
2235
+ "retainedHeapDeltaBytes": -3376
2236
+ }
2237
+ ]
2238
+ },
2239
+ {
2240
+ "name": "candidate",
2241
+ "medianMicrosecondsPerRequest": 55.339531,
2242
+ "measurements": [
2243
+ {
2244
+ "durationMs": 60.326699,
2245
+ "retainedHeapDeltaBytes": 7072
2246
+ },
2247
+ {
2248
+ "durationMs": 55.339531,
2249
+ "retainedHeapDeltaBytes": 1352
2250
+ },
2251
+ {
2252
+ "durationMs": 54.064582,
2253
+ "retainedHeapDeltaBytes": -1096
2254
+ },
2255
+ {
2256
+ "durationMs": 56.492824,
2257
+ "retainedHeapDeltaBytes": 9648
2258
+ },
2259
+ {
2260
+ "durationMs": 57.299774,
2261
+ "retainedHeapDeltaBytes": 10832
2262
+ },
2263
+ {
2264
+ "durationMs": 57.465859,
2265
+ "retainedHeapDeltaBytes": 12208
2266
+ },
2267
+ {
2268
+ "durationMs": 53.884349,
2269
+ "retainedHeapDeltaBytes": 5232
2270
+ },
2271
+ {
2272
+ "durationMs": 52.740442,
2273
+ "retainedHeapDeltaBytes": 66112
2274
+ },
2275
+ {
2276
+ "durationMs": 54.419677,
2277
+ "retainedHeapDeltaBytes": -1320
2278
+ }
2279
+ ]
2280
+ }
2281
+ ],
2282
+ "candidateToReferenceMedianRatio": 0.8802067577706938
2283
+ },
2284
+ {
2285
+ "scenario": "24mp-staged-portrait-mixed",
2286
+ "requestsPerRepeat": 1000,
2287
+ "repeats": 9,
2288
+ "warmupRequestsPerPath": 500,
2289
+ "paths": [
2290
+ {
2291
+ "name": "reference",
2292
+ "medianMicrosecondsPerRequest": 110.196026,
2293
+ "measurements": [
2294
+ {
2295
+ "durationMs": 106.088979,
2296
+ "retainedHeapDeltaBytes": 20384
2297
+ },
2298
+ {
2299
+ "durationMs": 111.383059,
2300
+ "retainedHeapDeltaBytes": -216
2301
+ },
2302
+ {
2303
+ "durationMs": 112.38833,
2304
+ "retainedHeapDeltaBytes": 99040
2305
+ },
2306
+ {
2307
+ "durationMs": 118.839324,
2308
+ "retainedHeapDeltaBytes": 25960
2309
+ },
2310
+ {
2311
+ "durationMs": 109.748246,
2312
+ "retainedHeapDeltaBytes": 24904
2313
+ },
2314
+ {
2315
+ "durationMs": 105.772433,
2316
+ "retainedHeapDeltaBytes": 83040
2317
+ },
2318
+ {
2319
+ "durationMs": 110.196026,
2320
+ "retainedHeapDeltaBytes": 31632
2321
+ },
2322
+ {
2323
+ "durationMs": 105.239158,
2324
+ "retainedHeapDeltaBytes": 9672
2325
+ },
2326
+ {
2327
+ "durationMs": 112.854576,
2328
+ "retainedHeapDeltaBytes": 1144
2329
+ }
2330
+ ]
2331
+ },
2332
+ {
2333
+ "name": "candidate",
2334
+ "medianMicrosecondsPerRequest": 106.858965,
2335
+ "measurements": [
2336
+ {
2337
+ "durationMs": 114.963494,
2338
+ "retainedHeapDeltaBytes": 33840
2339
+ },
2340
+ {
2341
+ "durationMs": 106.073096,
2342
+ "retainedHeapDeltaBytes": 11616
2343
+ },
2344
+ {
2345
+ "durationMs": 113.982058,
2346
+ "retainedHeapDeltaBytes": 82856
2347
+ },
2348
+ {
2349
+ "durationMs": 107.797749,
2350
+ "retainedHeapDeltaBytes": 39584
2351
+ },
2352
+ {
2353
+ "durationMs": 105.378993,
2354
+ "retainedHeapDeltaBytes": 31104
2355
+ },
2356
+ {
2357
+ "durationMs": 102.871516,
2358
+ "retainedHeapDeltaBytes": 10296
2359
+ },
2360
+ {
2361
+ "durationMs": 100.614128,
2362
+ "retainedHeapDeltaBytes": 30008
2363
+ },
2364
+ {
2365
+ "durationMs": 106.858965,
2366
+ "retainedHeapDeltaBytes": 15872
2367
+ },
2368
+ {
2369
+ "durationMs": 107.764171,
2370
+ "retainedHeapDeltaBytes": 11392
2371
+ }
2372
+ ]
2373
+ }
2374
+ ],
2375
+ "candidateToReferenceMedianRatio": 0.9697170476909938
2376
+ }
2377
+ ],
2378
+ "allocationProfiles": [
2379
+ {
2380
+ "path": "reference",
2381
+ "scenario": "24mp-staged-portrait-mixed",
2382
+ "requests": 2000,
2383
+ "samplingIntervalBytes": 32768,
2384
+ "sampledBytes": 593837880,
2385
+ "thinLensInclusiveSampledBytes": 177301960
2386
+ },
2387
+ {
2388
+ "path": "candidate",
2389
+ "scenario": "24mp-staged-portrait-mixed",
2390
+ "requests": 2000,
2391
+ "samplingIntervalBytes": 32768,
2392
+ "sampledBytes": 551945312,
2393
+ "thinLensInclusiveSampledBytes": 138224096
2394
+ }
2395
+ ],
2396
+ "preparationProbe": {
2397
+ "kind": "isolated-three-scalar-object-freeze",
2398
+ "preparationsPerRepeat": 100000,
2399
+ "nanosecondsPerPreparation": [
2400
+ 50.74982,
2401
+ 66.41793,
2402
+ 39.37936,
2403
+ 65.76266,
2404
+ 49.06865,
2405
+ 45.86773,
2406
+ 40.7636,
2407
+ 42.03248,
2408
+ 40.95008
2409
+ ],
2410
+ "medianNanosecondsPerPreparation": 45.86773,
2411
+ "limitation": "Synthetic isolated probe; JIT/escape behavior can differ inside the whole request."
2412
+ },
2413
+ "sink": 53333333.33284195,
2414
+ "limitations": [
2415
+ "Paired developer POC request shapes on shared infrastructure; not observed product call frequency or browser latency",
2416
+ "POC is analytical; 24 MP dimensions do not execute 24 million image samples",
2417
+ "Net retained heap is not allocation count; separately instrumented heap sampling is statistical, not an exact allocation counter",
2418
+ "Source SHA context is operator-attested; source fingerprints identify the candidate change",
2419
+ "No full production radiometry/serialization or browser performance claim"
2420
+ ]
2421
+ },
2422
+ "measurementIsolation": "Final recorded runs executed sequentially after check/coverage completed; no concurrent task benchmarks or tests. Shared host activity remains uncontrolled."
2423
+ }