@photivra/engine 0.5.1 → 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 (753) hide show
  1. package/AGENTS.md +674 -0
  2. package/CHANGELOG.md +218 -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 +157 -56
  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 +101 -7
  203. package/dist/index.d.ts.map +1 -1
  204. package/dist/index.js +99 -7
  205. package/dist/index.js.map +1 -1
  206. package/dist/motion/camera-rotation.d.ts +76 -0
  207. package/dist/motion/camera-rotation.d.ts.map +1 -1
  208. package/dist/motion/camera-rotation.js +111 -0
  209. package/dist/motion/camera-rotation.js.map +1 -1
  210. package/dist/motion/capture-rotation-inverse-mapping.d.ts +113 -0
  211. package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +1 -0
  212. package/dist/motion/capture-rotation-inverse-mapping.js +184 -0
  213. package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -0
  214. package/dist/motion/capture-rotation-temporal-quadrature.d.ts +104 -0
  215. package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +1 -0
  216. package/dist/motion/capture-rotation-temporal-quadrature.js +131 -0
  217. package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -0
  218. package/dist/motion/capture-rotation-trajectory.d.ts +113 -0
  219. package/dist/motion/capture-rotation-trajectory.d.ts.map +1 -0
  220. package/dist/motion/capture-rotation-trajectory.js +168 -0
  221. package/dist/motion/capture-rotation-trajectory.js.map +1 -0
  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 +23 -4
  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 +22 -2
  291. package/dist/optics/radial-distortion.d.ts.map +1 -1
  292. package/dist/optics/radial-distortion.js +101 -23
  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 +32 -11
  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 +212 -0
  393. package/dist/sensor/capture-color-sampling-binding.d.ts.map +1 -0
  394. package/dist/sensor/capture-color-sampling-binding.js +437 -0
  395. package/dist/sensor/capture-color-sampling-binding.js.map +1 -0
  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 +157 -0
  401. package/dist/sensor/capture-mode.d.ts.map +1 -0
  402. package/dist/sensor/capture-mode.js +447 -0
  403. package/dist/sensor/capture-mode.js.map +1 -0
  404. package/dist/sensor/color-sampling.d.ts +133 -0
  405. package/dist/sensor/color-sampling.d.ts.map +1 -0
  406. package/dist/sensor/color-sampling.js +245 -0
  407. package/dist/sensor/color-sampling.js.map +1 -0
  408. package/dist/sensor/constant-rate-temporal-integration.d.ts +126 -0
  409. package/dist/sensor/constant-rate-temporal-integration.d.ts.map +1 -0
  410. package/dist/sensor/constant-rate-temporal-integration.js +382 -0
  411. package/dist/sensor/constant-rate-temporal-integration.js.map +1 -0
  412. package/dist/sensor/dark-current.d.ts +169 -0
  413. package/dist/sensor/dark-current.d.ts.map +1 -0
  414. package/dist/sensor/dark-current.js +427 -0
  415. package/dist/sensor/dark-current.js.map +1 -0
  416. package/dist/sensor/environment-photo-signal.d.ts +123 -0
  417. package/dist/sensor/environment-photo-signal.d.ts.map +1 -0
  418. package/dist/sensor/environment-photo-signal.js +186 -0
  419. package/dist/sensor/environment-photo-signal.js.map +1 -0
  420. package/dist/sensor/eqe-electron-rate.d.ts +107 -0
  421. package/dist/sensor/eqe-electron-rate.d.ts.map +1 -0
  422. package/dist/sensor/eqe-electron-rate.js +561 -0
  423. package/dist/sensor/eqe-electron-rate.js.map +1 -0
  424. package/dist/sensor/eqe-local-exposure.d.ts +65 -0
  425. package/dist/sensor/eqe-local-exposure.d.ts.map +1 -0
  426. package/dist/sensor/eqe-local-exposure.js +84 -0
  427. package/dist/sensor/eqe-local-exposure.js.map +1 -0
  428. package/dist/sensor/eqe-temporal-exposure.d.ts +55 -0
  429. package/dist/sensor/eqe-temporal-exposure.d.ts.map +1 -0
  430. package/dist/sensor/eqe-temporal-exposure.js +62 -0
  431. package/dist/sensor/eqe-temporal-exposure.js.map +1 -0
  432. package/dist/sensor/exposure-window.d.ts +117 -0
  433. package/dist/sensor/exposure-window.d.ts.map +1 -0
  434. package/dist/sensor/exposure-window.js +305 -0
  435. package/dist/sensor/exposure-window.js.map +1 -0
  436. package/dist/sensor/iso-signal-chain.d.ts +148 -0
  437. package/dist/sensor/iso-signal-chain.d.ts.map +1 -0
  438. package/dist/sensor/iso-signal-chain.js +411 -0
  439. package/dist/sensor/iso-signal-chain.js.map +1 -0
  440. package/dist/sensor/local-exposure-binding.d.ts +87 -0
  441. package/dist/sensor/local-exposure-binding.d.ts.map +1 -0
  442. package/dist/sensor/local-exposure-binding.js +214 -0
  443. package/dist/sensor/local-exposure-binding.js.map +1 -0
  444. package/dist/sensor/optical-stack.d.ts +132 -0
  445. package/dist/sensor/optical-stack.d.ts.map +1 -0
  446. package/dist/sensor/optical-stack.js +303 -0
  447. package/dist/sensor/optical-stack.js.map +1 -0
  448. package/dist/sensor/photon-energy.d.ts +97 -0
  449. package/dist/sensor/photon-energy.d.ts.map +1 -0
  450. package/dist/sensor/photon-energy.js +390 -0
  451. package/dist/sensor/photon-energy.js.map +1 -0
  452. package/dist/sensor/physical-charge-capacity.d.ts +130 -0
  453. package/dist/sensor/physical-charge-capacity.d.ts.map +1 -0
  454. package/dist/sensor/physical-charge-capacity.js +345 -0
  455. package/dist/sensor/physical-charge-capacity.js.map +1 -0
  456. package/dist/sensor/pixel-pitch.d.ts +6 -0
  457. package/dist/sensor/pixel-pitch.d.ts.map +1 -1
  458. package/dist/sensor/pixel-pitch.js +6 -0
  459. package/dist/sensor/pixel-pitch.js.map +1 -1
  460. package/dist/sensor/radiometry-readiness.d.ts +10 -0
  461. package/dist/sensor/radiometry-readiness.d.ts.map +1 -1
  462. package/dist/sensor/radiometry-readiness.js +10 -0
  463. package/dist/sensor/radiometry-readiness.js.map +1 -1
  464. package/dist/sensor/raw-readout.d.ts +314 -0
  465. package/dist/sensor/raw-readout.d.ts.map +1 -0
  466. package/dist/sensor/raw-readout.js +914 -0
  467. package/dist/sensor/raw-readout.js.map +1 -0
  468. package/dist/sensor/raw-reconstruction.d.ts +170 -0
  469. package/dist/sensor/raw-reconstruction.d.ts.map +1 -0
  470. package/dist/sensor/raw-reconstruction.js +424 -0
  471. package/dist/sensor/raw-reconstruction.js.map +1 -0
  472. package/dist/sensor/readout-exposure-linkage.d.ts +123 -0
  473. package/dist/sensor/readout-exposure-linkage.d.ts.map +1 -0
  474. package/dist/sensor/readout-exposure-linkage.js +222 -0
  475. package/dist/sensor/readout-exposure-linkage.js.map +1 -0
  476. package/dist/sensor/readout-timing.d.ts +137 -0
  477. package/dist/sensor/readout-timing.d.ts.map +1 -0
  478. package/dist/sensor/readout-timing.js +243 -0
  479. package/dist/sensor/readout-timing.js.map +1 -0
  480. package/dist/sensor/response-application-compatibility.d.ts +136 -0
  481. package/dist/sensor/response-application-compatibility.d.ts.map +1 -0
  482. package/dist/sensor/response-application-compatibility.js +408 -0
  483. package/dist/sensor/response-application-compatibility.js.map +1 -0
  484. package/dist/sensor/response-operating-range.d.ts +173 -0
  485. package/dist/sensor/response-operating-range.d.ts.map +1 -0
  486. package/dist/sensor/response-operating-range.js +672 -0
  487. package/dist/sensor/response-operating-range.js.map +1 -0
  488. package/dist/sensor/responsivity-photocurrent.d.ts +158 -0
  489. package/dist/sensor/responsivity-photocurrent.d.ts.map +1 -0
  490. package/dist/sensor/responsivity-photocurrent.js +644 -0
  491. package/dist/sensor/responsivity-photocurrent.js.map +1 -0
  492. package/dist/sensor/sampling-aperture.d.ts +154 -0
  493. package/dist/sensor/sampling-aperture.d.ts.map +1 -0
  494. package/dist/sensor/sampling-aperture.js +388 -0
  495. package/dist/sensor/sampling-aperture.js.map +1 -0
  496. package/dist/sensor/scene-eqe-temporal-exposure.d.ts +45 -0
  497. package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +1 -0
  498. package/dist/sensor/scene-eqe-temporal-exposure.js +64 -0
  499. package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -0
  500. package/dist/sensor/sensor-geometry.d.ts +12 -0
  501. package/dist/sensor/sensor-geometry.d.ts.map +1 -1
  502. package/dist/sensor/sensor-geometry.js +12 -0
  503. package/dist/sensor/sensor-geometry.js.map +1 -1
  504. package/dist/sensor/signal-noise.d.ts +10 -0
  505. package/dist/sensor/signal-noise.d.ts.map +1 -1
  506. package/dist/sensor/signal-noise.js +10 -0
  507. package/dist/sensor/signal-noise.js.map +1 -1
  508. package/dist/sensor/spatial-sample-reduction.d.ts +171 -0
  509. package/dist/sensor/spatial-sample-reduction.d.ts.map +1 -0
  510. package/dist/sensor/spatial-sample-reduction.js +345 -0
  511. package/dist/sensor/spatial-sample-reduction.js.map +1 -0
  512. package/dist/sensor/spatial-sampling-quadrature.d.ts +179 -0
  513. package/dist/sensor/spatial-sampling-quadrature.d.ts.map +1 -0
  514. package/dist/sensor/spatial-sampling-quadrature.js +224 -0
  515. package/dist/sensor/spatial-sampling-quadrature.js.map +1 -0
  516. package/dist/sensor/spatio-spectral-reduction.d.ts +187 -0
  517. package/dist/sensor/spatio-spectral-reduction.d.ts.map +1 -0
  518. package/dist/sensor/spatio-spectral-reduction.js +373 -0
  519. package/dist/sensor/spatio-spectral-reduction.js.map +1 -0
  520. package/dist/sensor/spectral-coverage.d.ts +24 -0
  521. package/dist/sensor/spectral-coverage.d.ts.map +1 -0
  522. package/dist/sensor/spectral-coverage.js +86 -0
  523. package/dist/sensor/spectral-coverage.js.map +1 -0
  524. package/dist/sensor/spectral-quadrature.d.ts +169 -0
  525. package/dist/sensor/spectral-quadrature.d.ts.map +1 -0
  526. package/dist/sensor/spectral-quadrature.js +542 -0
  527. package/dist/sensor/spectral-quadrature.js.map +1 -0
  528. package/dist/sensor/spectral-response.d.ts +192 -0
  529. package/dist/sensor/spectral-response.d.ts.map +1 -0
  530. package/dist/sensor/spectral-response.js +664 -0
  531. package/dist/sensor/spectral-response.js.map +1 -0
  532. package/dist/sensor/temporal-eqe-sum.d.ts +15 -0
  533. package/dist/sensor/temporal-eqe-sum.d.ts.map +1 -0
  534. package/dist/sensor/temporal-eqe-sum.js +30 -0
  535. package/dist/sensor/temporal-eqe-sum.js.map +1 -0
  536. package/dist/sensor/temporal-photo-signal.d.ts +38 -0
  537. package/dist/sensor/temporal-photo-signal.d.ts.map +1 -0
  538. package/dist/sensor/temporal-photo-signal.js +110 -0
  539. package/dist/sensor/temporal-photo-signal.js.map +1 -0
  540. package/dist/sensor/temporal-sample-binding.d.ts +6 -0
  541. package/dist/sensor/temporal-sample-binding.d.ts.map +1 -0
  542. package/dist/sensor/temporal-sample-binding.js +32 -0
  543. package/dist/sensor/temporal-sample-binding.js.map +1 -0
  544. package/dist/simulation/poc-simulation.d.ts.map +1 -1
  545. package/dist/simulation/poc-simulation.js +34 -11
  546. package/dist/simulation/poc-simulation.js.map +1 -1
  547. package/dist/stabilization/camera-shake.d.ts +11 -0
  548. package/dist/stabilization/camera-shake.d.ts.map +1 -1
  549. package/dist/stabilization/camera-shake.js +11 -0
  550. package/dist/stabilization/camera-shake.js.map +1 -1
  551. package/dist/stabilization/system.d.ts +218 -0
  552. package/dist/stabilization/system.d.ts.map +1 -0
  553. package/dist/stabilization/system.js +695 -0
  554. package/dist/stabilization/system.js.map +1 -0
  555. package/docs/API_REFERENCE.md +2017 -0
  556. package/docs/API_STYLE.md +132 -0
  557. package/docs/ARCHITECTURE.md +150 -23
  558. package/docs/AUTOMATION_COORDINATION.md +190 -0
  559. package/docs/CAPTURE_COLOR.md +25 -0
  560. package/docs/CAPTURE_CORRECTED_SDR.md +25 -0
  561. package/docs/CAPTURE_EXPORT_METADATA.md +27 -0
  562. package/docs/CAPTURE_SDR.md +20 -0
  563. package/docs/DEVELOPERS.md +60 -0
  564. package/docs/DIGITAL_OPTICS_FOUNDATION.md +69 -0
  565. package/docs/ENVIRONMENT_RAW_CAPTURE.md +187 -0
  566. package/docs/EXPORT_ACCEPTANCE.md +133 -0
  567. package/docs/GENERIC_TIER_PRESETS.md +269 -0
  568. package/docs/GEOMETRIC_PREPARATION_REUSE.md +141 -0
  569. package/docs/IMAGE_FORMATION.md +105 -9
  570. package/docs/LINEAR_CAPTURE_ENCODING.md +25 -0
  571. package/docs/MOTION_AND_SIGNAL.md +145 -1
  572. package/docs/NUMERICAL_CORRECTNESS.md +191 -0
  573. package/docs/PERFORMANCE_BASELINE.md +56 -0
  574. package/docs/PHOTOGRAPHIC_EXPORT.md +206 -0
  575. package/docs/PHYSICS_FOUNDATION.md +152 -5
  576. package/docs/POC_API.md +2 -0
  577. package/docs/POC_PROJECTION_REUSE.md +124 -0
  578. package/docs/PROCESSED_OUTPUT.md +157 -0
  579. package/docs/PRODUCTION_COMPOSITION.md +373 -0
  580. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +131 -0
  581. package/docs/PROVENANCE.md +4 -0
  582. package/docs/PSF_FOUNDATION.md +110 -88
  583. package/docs/RAW_FRAME_ENVELOPE.md +56 -0
  584. package/docs/RAW_FRAME_RECONSTRUCTION.md +30 -0
  585. package/docs/RELEASE_1_0.md +65 -0
  586. package/docs/RELEASE_AUDIT.md +38 -0
  587. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +298 -0
  588. package/docs/SCENE_SENSOR_QUADRATURE.md +98 -0
  589. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +86 -0
  590. package/docs/SCIENTIFIC_ASSURANCE.md +280 -0
  591. package/docs/SCIENTIFIC_CONFORMANCE.md +83 -0
  592. package/docs/SDR_RENDERING.md +33 -0
  593. package/docs/SENSOR_ENVIRONMENT_QUERY.md +86 -0
  594. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +104 -0
  595. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +74 -0
  596. package/docs/SENSOR_PSF_QUADRATURE.md +90 -0
  597. package/docs/SENSOR_RAW_FRAME.md +20 -0
  598. package/docs/SENSOR_RAW_PRODUCER.md +77 -0
  599. package/docs/SIGNAL_CONFORMANCE.md +23 -0
  600. package/docs/SIMULATED_CAPTURE.md +65 -0
  601. package/docs/STABILIZATION.md +160 -17
  602. package/docs/TEMPORAL_PHOTO_RAW.md +83 -0
  603. package/docs/TIER_ACCEPTANCE.md +129 -0
  604. package/docs/TIER_PRESET_ACCEPTANCE.md +59 -0
  605. package/docs/USAGE.md +5604 -331
  606. package/docs/V1_COMPOSITION_MAP.md +123 -0
  607. package/docs/V1_HELPER_REUSE_REVIEW.md +60 -0
  608. package/docs/V1_PERFORMANCE_DISPOSITION.md +88 -0
  609. package/docs/api/camera-equivalent-focal-length.md +53 -0
  610. package/docs/api/camera-field-of-view.md +119 -0
  611. package/docs/api/camera-projected-object-size.md +54 -0
  612. package/docs/api/capture-capture-export-metadata.md +107 -0
  613. package/docs/api/capture-environment-raw-producer.md +56 -0
  614. package/docs/api/capture-focus-control.md +419 -0
  615. package/docs/api/capture-linear-encoding.md +99 -0
  616. package/docs/api/capture-photographic-export.md +172 -0
  617. package/docs/api/capture-raw-frame-reconstruction.md +87 -0
  618. package/docs/api/capture-release-sequence.md +252 -0
  619. package/docs/api/capture-sensor-raw-frame.md +66 -0
  620. package/docs/api/capture-sensor-raw-producer.md +98 -0
  621. package/docs/api/capture-simulated-capture.md +179 -0
  622. package/docs/api/color-capture-color.md +122 -0
  623. package/docs/api/color-white-balance.md +386 -0
  624. package/docs/api/composition-image-formation-plan.md +825 -0
  625. package/docs/api/composition-plan-consumer.md +98 -0
  626. package/docs/api/core-calculation-result.md +220 -0
  627. package/docs/api/core-configuration-error.md +19 -0
  628. package/docs/api/core-image-formation.md +204 -0
  629. package/docs/api/core-scientific-assurance.md +214 -0
  630. package/docs/api/core-spectral-composition.md +268 -0
  631. package/docs/api/core-spectral.md +78 -0
  632. package/docs/api/core-validation.md +34 -0
  633. package/docs/api/core-version.md +14 -0
  634. package/docs/api/equipment-exposure-capabilities.md +270 -0
  635. package/docs/api/equipment-generic-tier-assets.md +82 -0
  636. package/docs/api/equipment-generic-tier-presets.md +103 -0
  637. package/docs/api/equipment-iso-capabilities.md +295 -0
  638. package/docs/api/equipment-metering-capabilities.md +126 -0
  639. package/docs/api/equipment-release-capabilities.md +91 -0
  640. package/docs/api/exports.json +5656 -0
  641. package/docs/api/exposure-exposure-duration-control.md +115 -0
  642. package/docs/api/exposure-exposure-mode-resolver.md +966 -0
  643. package/docs/api/exposure-exposure.md +150 -0
  644. package/docs/api/exposure-flash.md +327 -0
  645. package/docs/api/exposure-metering-scene-radiance.md +154 -0
  646. package/docs/api/exposure-metering-target.md +134 -0
  647. package/docs/api/exposure-metering-temporal.md +77 -0
  648. package/docs/api/exposure-metering.md +172 -0
  649. package/docs/api/exposure-program-line.md +64 -0
  650. package/docs/api/motion-camera-rotation.md +215 -0
  651. package/docs/api/motion-capture-rotation-inverse-mapping.md +128 -0
  652. package/docs/api/motion-capture-rotation-temporal-quadrature.md +127 -0
  653. package/docs/api/motion-capture-rotation-trajectory.md +132 -0
  654. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +171 -0
  655. package/docs/api/motion-extended-object-projection.md +312 -0
  656. package/docs/api/motion-projected-motion.md +60 -0
  657. package/docs/api/optics-aperture.md +69 -0
  658. package/docs/api/optics-circle-of-confusion.md +46 -0
  659. package/docs/api/optics-complex-pupil-psf.md +193 -0
  660. package/docs/api/optics-depth-of-field.md +92 -0
  661. package/docs/api/optics-diffraction.md +46 -0
  662. package/docs/api/optics-focus-breathing.md +119 -0
  663. package/docs/api/optics-focus-state.md +64 -0
  664. package/docs/api/optics-front-of-lens-filter.md +263 -0
  665. package/docs/api/optics-illumination-vignetting.md +95 -0
  666. package/docs/api/optics-lateral-chromatic-aberration.md +225 -0
  667. package/docs/api/optics-lens-psf-profile.md +380 -0
  668. package/docs/api/optics-polygon-diffraction.md +68 -0
  669. package/docs/api/optics-profile-contract.md +47 -0
  670. package/docs/api/optics-psf-foundation.md +181 -0
  671. package/docs/api/optics-radial-distortion.md +194 -0
  672. package/docs/api/optics-scene-to-sensor-irradiance.md +371 -0
  673. package/docs/api/optics-scene-to-sensor-quadrature.md +78 -0
  674. package/docs/api/optics-sensor-environment-query.md +58 -0
  675. package/docs/api/optics-sensor-psf-quadrature.md +81 -0
  676. package/docs/api/optics-stray-light.md +109 -0
  677. package/docs/api/optics-thin-lens.md +53 -0
  678. package/docs/api/output-capture-corrected-sdr.md +71 -0
  679. package/docs/api/output-capture-geometry.md +500 -0
  680. package/docs/api/output-capture-sdr.md +69 -0
  681. package/docs/api/output-crop.md +47 -0
  682. package/docs/api/output-geometric-transforms.md +199 -0
  683. package/docs/api/output-lens-corrections.md +162 -0
  684. package/docs/api/output-sdr-rendering.md +122 -0
  685. package/docs/api/output-subject-framing-crop.md +59 -0
  686. package/docs/api/schema-camera.md +84 -0
  687. package/docs/api/schema-illumination-spectral.md +77 -0
  688. package/docs/api/schema-illumination-temporal.md +289 -0
  689. package/docs/api/schema-illumination.md +246 -0
  690. package/docs/api/schema-scene-radiance-temporal.md +215 -0
  691. package/docs/api/schema-scene-radiance.md +415 -0
  692. package/docs/api/schema-scene.md +105 -0
  693. package/docs/api/schema-validation.md +25 -0
  694. package/docs/api/sensor-accumulated-charge.md +273 -0
  695. package/docs/api/sensor-architecture.md +155 -0
  696. package/docs/api/sensor-camera-saturation-capacity.md +215 -0
  697. package/docs/api/sensor-capture-color-sampling-binding.md +323 -0
  698. package/docs/api/sensor-capture-mode-timing.md +123 -0
  699. package/docs/api/sensor-capture-mode.md +321 -0
  700. package/docs/api/sensor-color-sampling.md +228 -0
  701. package/docs/api/sensor-constant-rate-temporal-integration.md +152 -0
  702. package/docs/api/sensor-dark-current.md +227 -0
  703. package/docs/api/sensor-environment-photo-signal.md +77 -0
  704. package/docs/api/sensor-eqe-electron-rate.md +166 -0
  705. package/docs/api/sensor-eqe-local-exposure.md +68 -0
  706. package/docs/api/sensor-eqe-temporal-exposure.md +73 -0
  707. package/docs/api/sensor-exposure-window.md +183 -0
  708. package/docs/api/sensor-iso-signal-chain.md +264 -0
  709. package/docs/api/sensor-local-exposure-binding.md +126 -0
  710. package/docs/api/sensor-optical-stack.md +211 -0
  711. package/docs/api/sensor-photon-energy.md +149 -0
  712. package/docs/api/sensor-physical-charge-capacity.md +196 -0
  713. package/docs/api/sensor-pixel-pitch.md +41 -0
  714. package/docs/api/sensor-radiometry-readiness.md +240 -0
  715. package/docs/api/sensor-raw-readout.md +499 -0
  716. package/docs/api/sensor-raw-reconstruction.md +260 -0
  717. package/docs/api/sensor-readout-exposure-linkage.md +172 -0
  718. package/docs/api/sensor-readout-timing.md +209 -0
  719. package/docs/api/sensor-response-application-compatibility.md +256 -0
  720. package/docs/api/sensor-response-operating-range.md +293 -0
  721. package/docs/api/sensor-responsivity-photocurrent.md +245 -0
  722. package/docs/api/sensor-sampling-aperture.md +221 -0
  723. package/docs/api/sensor-scene-eqe-temporal-exposure.md +56 -0
  724. package/docs/api/sensor-sensor-geometry.md +143 -0
  725. package/docs/api/sensor-signal-noise.md +75 -0
  726. package/docs/api/sensor-spatial-sample-reduction.md +186 -0
  727. package/docs/api/sensor-spatial-sampling-quadrature.md +188 -0
  728. package/docs/api/sensor-spatio-spectral-reduction.md +217 -0
  729. package/docs/api/sensor-spectral-coverage.md +33 -0
  730. package/docs/api/sensor-spectral-quadrature.md +183 -0
  731. package/docs/api/sensor-spectral-response.md +291 -0
  732. package/docs/api/sensor-temporal-photo-signal.md +62 -0
  733. package/docs/api/simulation-poc-simulation.md +364 -0
  734. package/docs/api/stabilization-camera-shake.md +71 -0
  735. package/docs/api/stabilization-system.md +442 -0
  736. package/docs/benchmarks/2026-10-01-main-baseline.json +694 -0
  737. package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +2190 -0
  738. package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +2423 -0
  739. package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +210 -0
  740. package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +187 -0
  741. package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +756 -0
  742. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +711 -0
  743. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +711 -0
  744. package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +885 -0
  745. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +868 -0
  746. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +868 -0
  747. package/docs/examples/production-capture.mjs +34 -0
  748. package/docs/examples/production-request.json +4613 -0
  749. package/docs/examples/quick-start.mjs +12 -0
  750. package/docs/validation/documentation-fragments.json +212 -0
  751. package/docs/validation/release-audit-inventory.json +1306 -0
  752. package/docs/validation/tier-acceptance-report-v1.json +2538 -0
  753. package/package.json +18 -4
@@ -1,4 +1,10 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * Module boundary and integration notes.
4
+ * Returns the public image-formation ownership/order contract. The result is descriptive metadata, not
5
+ * a renderer implementation or an assertion that every reserved stage is currently available.
6
+ * @see docs/API_STYLE.md for equations, coordinate/unit conventions, blockers and support limits.
7
+ */
2
8
  /**
3
9
  * Version of the public image-formation ordering contract.
4
10
  *
@@ -6,9 +12,10 @@
6
12
  * versions. It describes semantic ownership/order only; it does not imply that
7
13
  * every reserved stage is implemented.
8
14
  */
9
- export const IMAGE_FORMATION_CONTRACT_VERSION = "0.2.0";
15
+ export const IMAGE_FORMATION_CONTRACT_VERSION = "0.4.0";
10
16
  const DOMAINS = [
11
17
  "scene-ray-geometry",
18
+ "scene-radiance-formation",
12
19
  "lens-pupil-throughput",
13
20
  "field-wavelength-psf",
14
21
  "temporal-exposure-readout",
@@ -72,17 +79,32 @@ const STAGES = [
72
79
  status: "existing-foundation",
73
80
  coordinateSpaces: ["scene-metric", "image-plane-metric"],
74
81
  requiredUpstreamStages: [],
75
- coupledStages: ["temporal-exposure-readout"],
82
+ coupledStages: [
83
+ "scene-radiance-evaluation",
84
+ "temporal-exposure-readout"
85
+ ],
76
86
  purpose: "Project scene geometry into the optical image plane while preserving explicit metric geometry and focus-aware projection."
77
87
  },
88
+ {
89
+ id: "scene-radiance-evaluation",
90
+ domain: "scene-radiance-formation",
91
+ status: "partial-foundation",
92
+ coordinateSpaces: ["scene-metric"],
93
+ requiredUpstreamStages: ["scene-ray-projection"],
94
+ coupledStages: ["temporal-exposure-readout"],
95
+ purpose: "Own outgoing scene spectral-radiance formation from illumination, scene geometry/visibility, material optical response, emission, indirect transport, and time. The current foundation establishes ownership and illumination-source metadata only; it does not calculate scene radiance."
96
+ },
78
97
  {
79
98
  id: "lens-field-pupil-evaluation",
80
99
  domain: "lens-pupil-throughput",
81
100
  status: "partial-foundation",
82
101
  coordinateSpaces: ["image-plane-metric", "native-sensor-physical"],
83
- requiredUpstreamStages: ["scene-ray-projection"],
102
+ requiredUpstreamStages: [
103
+ "scene-ray-projection",
104
+ "scene-radiance-evaluation"
105
+ ],
84
106
  coupledStages: ["field-wavelength-psf"],
85
- purpose: "Own focus-dependent framing, geometric field mapping, wavelength/channel field mapping, illumination throughput, and pupil clipping inputs."
107
+ purpose: "Own focus-dependent framing, geometric field mapping, pupil/acceptance geometry, spectral optical transmission, field throughput, and the primary intended bridge from outgoing scene spectral radiance to pre-sensor-stack sensor-plane spectral irradiance. PSF redistribution remains separately owned downstream."
86
108
  },
87
109
  {
88
110
  id: "field-wavelength-psf",
@@ -304,7 +326,9 @@ const NOTES = [
304
326
  "This contract defines scientific ownership, coordinate semantics, and dependency/coupling boundaries. It does not claim that reserved stages are implemented.",
305
327
  "The stage graph is a dependency/ownership graph, not a claim that every physical interaction can be evaluated as one independent serial post-process.",
306
328
  "Independent effects may be combined computationally only when the implementation documents mathematical equivalence and preserves the public stage/effect semantics.",
307
- "Generic/parametric virtual-lens models must remain explicitly generic until defensible calibrated data with compatible reuse rights exists."
329
+ "Generic/parametric virtual-lens models must remain explicitly generic until defensible calibrated data with compatible reuse rights exists.",
330
+ "Scene radiance is distinct from source illumination metadata, photometric luminance anchors, sensor-plane irradiance, and RGB preview values. A later renderer/provider must explicitly evaluate outgoing spectral radiance before optics/sensor composition.",
331
+ "The primary lens-throughput bridge converts validated outgoing spectral radiance to pre-sensor-stack spectral irradiance through declared pupil acceptance, exactly one optical-transmission path, and at most one declared field-throughput term. It does not apply sensor optical-stack/CFA/QE response, PSF energy redistribution, stray light, or an implicit distortion brightness correction."
308
332
  ];
309
333
  /**
310
334
  * Returns the public image-formation ownership/order contract.
@@ -1 +1 @@
1
- {"version":3,"file":"image-formation.js","sourceRoot":"","sources":["../../src/core/image-formation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image-formation.js","sourceRoot":"","sources":["../../src/core/image-formation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Module boundary and integration notes.
3
+ * Freezes an engine-owned, acyclic tree of plain records and arrays in place, visiting enumerable
4
+ * child values before their parent. Returns the same value. This internal helper does not validate or
5
+ * clone data. Callers must first parse their domain contract and copy any caller-owned references that
6
+ * need to remain mutable. Primitives pass through unchanged. Already-frozen parents are still
7
+ * traversed because a shallow freeze does not establish descendant immutability. Accessors, cyclic
8
+ * graphs, Maps, Sets and typed-array storage are outside this helper's contract. Do not use it as a
9
+ * general-purpose untrusted-input boundary.
10
+ * @see docs/API_STYLE.md for equations, coordinate/unit conventions, blockers and support limits.
11
+ */
12
+ /**
13
+ * Freezes an engine-owned, acyclic tree of plain records and arrays in place,
14
+ * visiting enumerable child values before their parent. Returns the same value.
15
+ *
16
+ * This internal helper does not validate or clone data. Callers must first parse
17
+ * their domain contract and copy any caller-owned references that need to remain
18
+ * mutable. Primitives pass through unchanged. Already-frozen parents are still
19
+ * traversed because a shallow freeze does not establish descendant immutability.
20
+ *
21
+ * Accessors, cyclic graphs, Maps, Sets and typed-array storage are outside this
22
+ * helper's contract. Do not use it as a general-purpose untrusted-input boundary.
23
+ */
24
+ export declare function freezeOwnedData<T>(value: T): T;
25
+ //# sourceMappingURL=owned-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owned-data.d.ts","sourceRoot":"","sources":["../../src/core/owned-data.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAQ9C"}
@@ -0,0 +1,34 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * Module boundary and integration notes.
4
+ * Freezes an engine-owned, acyclic tree of plain records and arrays in place, visiting enumerable
5
+ * child values before their parent. Returns the same value. This internal helper does not validate or
6
+ * clone data. Callers must first parse their domain contract and copy any caller-owned references that
7
+ * need to remain mutable. Primitives pass through unchanged. Already-frozen parents are still
8
+ * traversed because a shallow freeze does not establish descendant immutability. Accessors, cyclic
9
+ * graphs, Maps, Sets and typed-array storage are outside this helper's contract. Do not use it as a
10
+ * general-purpose untrusted-input boundary.
11
+ * @see docs/API_STYLE.md for equations, coordinate/unit conventions, blockers and support limits.
12
+ */
13
+ /**
14
+ * Freezes an engine-owned, acyclic tree of plain records and arrays in place,
15
+ * visiting enumerable child values before their parent. Returns the same value.
16
+ *
17
+ * This internal helper does not validate or clone data. Callers must first parse
18
+ * their domain contract and copy any caller-owned references that need to remain
19
+ * mutable. Primitives pass through unchanged. Already-frozen parents are still
20
+ * traversed because a shallow freeze does not establish descendant immutability.
21
+ *
22
+ * Accessors, cyclic graphs, Maps, Sets and typed-array storage are outside this
23
+ * helper's contract. Do not use it as a general-purpose untrusted-input boundary.
24
+ */
25
+ export function freezeOwnedData(value) {
26
+ if (value !== null && typeof value === "object") {
27
+ for (const child of Object.values(value)) {
28
+ freezeOwnedData(child);
29
+ }
30
+ Object.freeze(value);
31
+ }
32
+ return value;
33
+ }
34
+ //# sourceMappingURL=owned-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owned-data.js","sourceRoot":"","sources":["../../src/core/owned-data.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;;;;;;GAUG;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAI,KAAQ;IACzC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACzC,eAAe,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Validate the shared record/allowlist mechanics without choosing a domain's
3
+ * schema or diagnostics. Returns the original record; does not clone, freeze,
4
+ * strip fields, require missing fields, or validate child values. As with the
5
+ * existing domain parsers, the allowlist covers own enumerable string keys.
6
+ */
7
+ export declare function requireAllowlistedRecord(value: unknown, allowedKeys: readonly string[], message: string): Record<string, unknown>;
8
+ /**
9
+ * Shared opaque public identity grammar: 1–128 ASCII characters, starting with
10
+ * an alphanumeric character, followed by alphanumerics, dot, underscore, colon
11
+ * or hyphen. No trimming, case conversion or path/URL interpretation occurs.
12
+ * A domain retains the meaning of the identity and its exact error message.
13
+ */
14
+ export declare function requirePublicOpaqueId(value: unknown, message: string): string;
15
+ /** Same grammar for domains that combine ID rejection with other field checks. */
16
+ export declare function isPublicOpaqueId(value: unknown): value is string;
17
+ //# sourceMappingURL=record-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-validation.d.ts","sourceRoot":"","sources":["../../src/core/record-validation.ts"],"names":[],"mappings":"AAiBA;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GAC9D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAK7E;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEhE"}
@@ -0,0 +1,44 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * Module boundary and integration notes.
4
+ * Validate the shared record/allowlist mechanics without choosing a domain's schema or diagnostics.
5
+ * Returns the original record; does not clone, freeze, strip fields, require missing fields, or
6
+ * validate child values. As with the existing domain parsers, the allowlist covers own enumerable
7
+ * string keys.
8
+ * Shared opaque public identity grammar: 1–128 ASCII characters, starting with an alphanumeric
9
+ * character, followed by alphanumerics, dot, underscore, colon or hyphen. No trimming, case conversion
10
+ * or path/URL interpretation occurs. A domain retains the meaning of the identity and its exact error
11
+ * message.
12
+ * @see docs/API_STYLE.md for equations, coordinate/unit conventions, blockers and support limits.
13
+ */
14
+ import { InvalidConfigurationError } from "./configuration-error.js";
15
+ /**
16
+ * Validate the shared record/allowlist mechanics without choosing a domain's
17
+ * schema or diagnostics. Returns the original record; does not clone, freeze,
18
+ * strip fields, require missing fields, or validate child values. As with the
19
+ * existing domain parsers, the allowlist covers own enumerable string keys.
20
+ */
21
+ export function requireAllowlistedRecord(value, allowedKeys, message) {
22
+ if (value === null || typeof value !== "object" || Array.isArray(value) ||
23
+ Object.keys(value).some(key => !allowedKeys.includes(key))) {
24
+ throw new InvalidConfigurationError(message);
25
+ }
26
+ return value;
27
+ }
28
+ /**
29
+ * Shared opaque public identity grammar: 1–128 ASCII characters, starting with
30
+ * an alphanumeric character, followed by alphanumerics, dot, underscore, colon
31
+ * or hyphen. No trimming, case conversion or path/URL interpretation occurs.
32
+ * A domain retains the meaning of the identity and its exact error message.
33
+ */
34
+ export function requirePublicOpaqueId(value, message) {
35
+ if (!isPublicOpaqueId(value)) {
36
+ throw new InvalidConfigurationError(message);
37
+ }
38
+ return value;
39
+ }
40
+ /** Same grammar for domains that combine ID rejection with other field checks. */
41
+ export function isPublicOpaqueId(value) {
42
+ return typeof value === "string" && /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/.test(value);
43
+ }
44
+ //# sourceMappingURL=record-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-validation.js","sourceRoot":"","sources":["../../src/core/record-validation.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAc,EAAE,WAA8B,EAAE,OAAe;IAE/D,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc,EAAE,OAAe;IACnE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,qCAAqC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Module boundary and integration notes.
3
+ * Composes scientific-status, evidence and uncertainty semantics without inventing a numeric aggregate
4
+ * uncertainty. Required downstream status is bounded by the weakest required input. Component
5
+ * evidence/uncertainty is preserved verbatim after validation.
6
+ * @see docs/API_STYLE.md for equations, coordinate/unit conventions, blockers and support limits.
7
+ */
8
+ import { type CalculationQuality } from "./calculation-result.js";
9
+ import { type EvidenceProvenance } from "./evidence-provenance.js";
10
+ export declare const SCIENTIFIC_ASSURANCE_CONTRACT_VERSION: "0.1.0";
11
+ export type ScientificAssuranceStatus = "calibrated" | "approximation" | "unknown";
12
+ export type ScientificAssuranceBasisKind = "evidence-backed-fact" | "photivra-model-assumption" | "not-applicable";
13
+ export type ScientificAssuranceSourceKind = "profile" | "result" | "model" | "fixture";
14
+ export interface ScientificAssuranceSourceIdentity {
15
+ kind: ScientificAssuranceSourceKind;
16
+ id: string;
17
+ version?: string;
18
+ }
19
+ export type ScientificAssuranceComponentUncertainty = {
20
+ kind: "relative";
21
+ fraction: number;
22
+ basis: string;
23
+ } | {
24
+ kind: "absolute";
25
+ plusMinus: number;
26
+ unit: string;
27
+ basis?: string;
28
+ } | {
29
+ kind: "calculation-quality";
30
+ quality: CalculationQuality;
31
+ } | {
32
+ kind: "not-quantified";
33
+ limitation: string;
34
+ } | {
35
+ kind: "unknown";
36
+ limitation: string;
37
+ } | {
38
+ kind: "not-applicable";
39
+ reason: string;
40
+ };
41
+ export interface ScientificAssuranceComponent {
42
+ componentId: string;
43
+ role: string;
44
+ required: boolean;
45
+ sourceIdentity: ScientificAssuranceSourceIdentity;
46
+ basisKind: ScientificAssuranceBasisKind;
47
+ scientificStatus: ScientificAssuranceStatus;
48
+ evidenceRequirement: "required" | "not-required";
49
+ evidence: readonly EvidenceProvenance[];
50
+ uncertainty: ScientificAssuranceComponentUncertainty;
51
+ limitations: readonly string[];
52
+ }
53
+ export type ComposedScientificUncertaintyStatus = {
54
+ kind: "unknown";
55
+ componentIds: readonly string[];
56
+ limitation: string;
57
+ } | {
58
+ kind: "not-quantified";
59
+ componentIds: readonly string[];
60
+ limitation: string;
61
+ } | {
62
+ kind: "not-propagated";
63
+ componentIds: readonly string[];
64
+ limitation: string;
65
+ } | {
66
+ kind: "not-applicable";
67
+ componentIds: readonly string[];
68
+ limitation: string;
69
+ };
70
+ /**
71
+ * Cross-stage status and retained evidence for one declared scientific result.
72
+ * Required incomplete/approximate children constrain the aggregate; deterministic
73
+ * processing cannot upgrade approximation to calibration. Uncertainty components
74
+ * remain independently identified unless an explicit mathematical propagation model
75
+ * justifies a combination. A count of successful stages is not an accuracy bound.
76
+ */
77
+ export interface ComposedScientificAssurance {
78
+ version: typeof SCIENTIFIC_ASSURANCE_CONTRACT_VERSION;
79
+ scientificStatus: ScientificAssuranceStatus;
80
+ weakestRequiredComponentIds: readonly string[];
81
+ evidenceStatus: "complete" | "missing-required-evidence";
82
+ missingRequiredEvidenceComponentIds: readonly string[];
83
+ uncertainty: ComposedScientificUncertaintyStatus;
84
+ components: readonly ScientificAssuranceComponent[];
85
+ componentEvidencePreserved: true;
86
+ componentUncertaintyPreserved: true;
87
+ aggregateNumericUncertaintyFabricated: false;
88
+ downstreamStatusPromotedAboveInputs: false;
89
+ }
90
+ export interface ComposeScientificAssuranceInput {
91
+ components: readonly ScientificAssuranceComponent[];
92
+ }
93
+ /**
94
+ * Composes scientific-status, evidence and uncertainty semantics without
95
+ * inventing a numeric aggregate uncertainty.
96
+ *
97
+ * Required downstream status is bounded by the weakest required input.
98
+ * Component evidence/uncertainty is preserved verbatim after validation.
99
+ */
100
+ export declare function composeScientificAssurance(input: ComposeScientificAssuranceInput): ComposedScientificAssurance;
101
+ //# sourceMappingURL=scientific-assurance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scientific-assurance.d.ts","sourceRoot":"","sources":["../../src/core/scientific-assurance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,301 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * Module boundary and integration notes.
4
+ * Composes scientific-status, evidence and uncertainty semantics without inventing a numeric aggregate
5
+ * uncertainty. Required downstream status is bounded by the weakest required input. Component
6
+ * evidence/uncertainty is preserved verbatim after validation.
7
+ * @see docs/API_STYLE.md for equations, coordinate/unit conventions, blockers and support limits.
8
+ */
9
+ import { validateCalculationQuality } from "./calculation-result.js";
10
+ import { InvalidScientificInputError } from "./validation.js";
11
+ import { parseEvidenceProvenance } from "./evidence-provenance.js";
12
+ export const SCIENTIFIC_ASSURANCE_CONTRACT_VERSION = "0.1.0";
13
+ const SCIENTIFIC_STATUSES = new Set([
14
+ "calibrated",
15
+ "approximation",
16
+ "unknown"
17
+ ]);
18
+ const BASIS_KINDS = new Set([
19
+ "evidence-backed-fact",
20
+ "photivra-model-assumption",
21
+ "not-applicable"
22
+ ]);
23
+ const SOURCE_KINDS = new Set([
24
+ "profile",
25
+ "result",
26
+ "model",
27
+ "fixture"
28
+ ]);
29
+ function requireNonEmptyString(value, path) {
30
+ if (typeof value !== "string" ||
31
+ value.trim().length === 0) {
32
+ throw new InvalidScientificInputError(path +
33
+ " must be a non-empty string.");
34
+ }
35
+ return value.trim();
36
+ }
37
+ function requireNonNegativeFinite(value, path) {
38
+ if (typeof value !== "number" ||
39
+ !Number.isFinite(value) ||
40
+ value < 0) {
41
+ throw new InvalidScientificInputError(path +
42
+ " must be finite and greater than or equal to zero.");
43
+ }
44
+ return value;
45
+ }
46
+ function validateSourceIdentity(value, path) {
47
+ if (!SOURCE_KINDS.has(value.kind)) {
48
+ throw new InvalidScientificInputError(path + ".kind is invalid.");
49
+ }
50
+ return {
51
+ kind: value.kind,
52
+ id: requireNonEmptyString(value.id, path + ".id"),
53
+ ...(value.version === undefined
54
+ ? {}
55
+ : {
56
+ version: requireNonEmptyString(value.version, path + ".version")
57
+ })
58
+ };
59
+ }
60
+ function validateUncertainty(value, path) {
61
+ if (value.kind === "relative") {
62
+ const fraction = requireNonNegativeFinite(value.fraction, path + ".fraction");
63
+ if (fraction > 1) {
64
+ throw new InvalidScientificInputError(path +
65
+ ".fraction must be less than or equal to one.");
66
+ }
67
+ return {
68
+ kind: "relative",
69
+ fraction,
70
+ basis: requireNonEmptyString(value.basis, path + ".basis")
71
+ };
72
+ }
73
+ if (value.kind === "absolute") {
74
+ return {
75
+ kind: "absolute",
76
+ plusMinus: requireNonNegativeFinite(value.plusMinus, path + ".plusMinus"),
77
+ unit: requireNonEmptyString(value.unit, path + ".unit"),
78
+ ...(value.basis === undefined
79
+ ? {}
80
+ : {
81
+ basis: requireNonEmptyString(value.basis, path + ".basis")
82
+ })
83
+ };
84
+ }
85
+ if (value.kind ===
86
+ "calculation-quality") {
87
+ validateCalculationQuality(value.quality);
88
+ if (value.quality
89
+ .uncertainty ===
90
+ undefined ||
91
+ value.quality
92
+ .uncertainty.length ===
93
+ 0) {
94
+ throw new InvalidScientificInputError(path +
95
+ ".quality must include quantified uncertainty components; use another semantic uncertainty state otherwise.");
96
+ }
97
+ return {
98
+ kind: "calculation-quality",
99
+ quality: value.quality
100
+ };
101
+ }
102
+ if (value.kind ===
103
+ "not-quantified") {
104
+ return {
105
+ kind: "not-quantified",
106
+ limitation: requireNonEmptyString(value.limitation, path + ".limitation")
107
+ };
108
+ }
109
+ if (value.kind === "unknown") {
110
+ return {
111
+ kind: "unknown",
112
+ limitation: requireNonEmptyString(value.limitation, path + ".limitation")
113
+ };
114
+ }
115
+ if (value.kind ===
116
+ "not-applicable") {
117
+ return {
118
+ kind: "not-applicable",
119
+ reason: requireNonEmptyString(value.reason, path + ".reason")
120
+ };
121
+ }
122
+ throw new InvalidScientificInputError(path + ".kind is invalid.");
123
+ }
124
+ function validateLimitations(value, path) {
125
+ if (!Array.isArray(value)) {
126
+ throw new InvalidScientificInputError(path + " must be an array.");
127
+ }
128
+ const parsed = value.map((entry, index) => requireNonEmptyString(entry, path +
129
+ "[" +
130
+ index +
131
+ "]"));
132
+ if (new Set(parsed).size !==
133
+ parsed.length) {
134
+ throw new InvalidScientificInputError(path +
135
+ " must not contain duplicates.");
136
+ }
137
+ return parsed;
138
+ }
139
+ function validateComponent(value, index) {
140
+ const path = "components[" +
141
+ index +
142
+ "]";
143
+ if (typeof value.required !==
144
+ "boolean") {
145
+ throw new InvalidScientificInputError(path +
146
+ ".required must be boolean.");
147
+ }
148
+ if (!BASIS_KINDS.has(value.basisKind)) {
149
+ throw new InvalidScientificInputError(path +
150
+ ".basisKind is invalid.");
151
+ }
152
+ if (!SCIENTIFIC_STATUSES.has(value.scientificStatus)) {
153
+ throw new InvalidScientificInputError(path +
154
+ ".scientificStatus is invalid.");
155
+ }
156
+ if (value.basisKind ===
157
+ "evidence-backed-fact" &&
158
+ value.evidenceRequirement !==
159
+ "required") {
160
+ throw new InvalidScientificInputError(path +
161
+ '.basisKind "evidence-backed-fact" requires evidenceRequirement "required".');
162
+ }
163
+ if (value.evidenceRequirement !==
164
+ "required" &&
165
+ value.evidenceRequirement !==
166
+ "not-required") {
167
+ throw new InvalidScientificInputError(path +
168
+ ".evidenceRequirement is invalid.");
169
+ }
170
+ if (!Array.isArray(value.evidence)) {
171
+ throw new InvalidScientificInputError(path +
172
+ ".evidence must be an array.");
173
+ }
174
+ const evidence = value.evidence.map((entry, evidenceIndex) => parseEvidenceProvenance(entry, path +
175
+ ".evidence[" +
176
+ evidenceIndex +
177
+ "]"));
178
+ return {
179
+ componentId: requireNonEmptyString(value.componentId, path + ".componentId"),
180
+ role: requireNonEmptyString(value.role, path + ".role"),
181
+ required: value.required,
182
+ sourceIdentity: validateSourceIdentity(value.sourceIdentity, path +
183
+ ".sourceIdentity"),
184
+ basisKind: value.basisKind,
185
+ scientificStatus: value.scientificStatus,
186
+ evidenceRequirement: value.evidenceRequirement,
187
+ evidence,
188
+ uncertainty: validateUncertainty(value.uncertainty, path + ".uncertainty"),
189
+ limitations: validateLimitations(value.limitations, path + ".limitations")
190
+ };
191
+ }
192
+ function statusRank(value) {
193
+ if (value === "unknown") {
194
+ return 0;
195
+ }
196
+ if (value === "approximation") {
197
+ return 1;
198
+ }
199
+ return 2;
200
+ }
201
+ function composedUncertainty(required) {
202
+ const unknown = required.filter((component) => component.uncertainty.kind ===
203
+ "unknown");
204
+ if (unknown.length > 0) {
205
+ return {
206
+ kind: "unknown",
207
+ componentIds: unknown.map((component) => component.componentId),
208
+ limitation: "At least one required component has unknown uncertainty; no aggregate numeric uncertainty is claimed."
209
+ };
210
+ }
211
+ const unquantified = required.filter((component) => component.uncertainty.kind ===
212
+ "not-quantified");
213
+ if (unquantified.length > 0) {
214
+ return {
215
+ kind: "not-quantified",
216
+ componentIds: unquantified.map((component) => component.componentId),
217
+ limitation: "At least one required component has unquantified uncertainty; absence of a numeric bound is not zero uncertainty."
218
+ };
219
+ }
220
+ const quantified = required.filter((component) => component.uncertainty.kind ===
221
+ "relative" ||
222
+ component.uncertainty.kind ===
223
+ "absolute" ||
224
+ component.uncertainty.kind ===
225
+ "calculation-quality");
226
+ if (quantified.length > 0) {
227
+ return {
228
+ kind: "not-propagated",
229
+ componentIds: quantified.map((component) => component.componentId),
230
+ limitation: "Quantified component uncertainties are preserved but are not numerically combined without an explicit propagation model and correlation assumptions."
231
+ };
232
+ }
233
+ return {
234
+ kind: "not-applicable",
235
+ componentIds: required.map((component) => component.componentId),
236
+ limitation: "No required component declares a quantitative uncertainty applicable to this composition."
237
+ };
238
+ }
239
+ /**
240
+ * Composes scientific-status, evidence and uncertainty semantics without
241
+ * inventing a numeric aggregate uncertainty.
242
+ *
243
+ * Required downstream status is bounded by the weakest required input.
244
+ * Component evidence/uncertainty is preserved verbatim after validation.
245
+ */
246
+ export function composeScientificAssurance(input) {
247
+ if (!Array.isArray(input.components) ||
248
+ input.components.length === 0) {
249
+ throw new InvalidScientificInputError("components must be a non-empty array.");
250
+ }
251
+ const components = input.components.map(validateComponent);
252
+ const ids = components.map((component) => component.componentId);
253
+ if (new Set(ids).size !==
254
+ ids.length) {
255
+ throw new InvalidScientificInputError("components must not contain duplicate componentId values.");
256
+ }
257
+ const required = components.filter((component) => component.required);
258
+ if (required.length === 0) {
259
+ throw new InvalidScientificInputError("At least one scientific-assurance component must be required.");
260
+ }
261
+ let weakestRank = Number.POSITIVE_INFINITY;
262
+ for (const component of required) {
263
+ weakestRank =
264
+ Math.min(weakestRank, statusRank(component.scientificStatus));
265
+ }
266
+ const weakest = required.filter((component) => statusRank(component.scientificStatus) === weakestRank);
267
+ const statusFromInputs = weakestRank === 0
268
+ ? "unknown"
269
+ : weakestRank === 1
270
+ ? "approximation"
271
+ : "calibrated";
272
+ const missingRequiredEvidence = required.filter((component) => component
273
+ .evidenceRequirement ===
274
+ "required" &&
275
+ component.evidence.length === 0);
276
+ const scientificStatus = missingRequiredEvidence.length >
277
+ 0
278
+ ? "unknown"
279
+ : statusFromInputs;
280
+ const weakestRequiredComponentIds = missingRequiredEvidence.length >
281
+ 0
282
+ ? missingRequiredEvidence.map((component) => component.componentId)
283
+ : weakest.map((component) => component.componentId);
284
+ return {
285
+ version: SCIENTIFIC_ASSURANCE_CONTRACT_VERSION,
286
+ scientificStatus,
287
+ weakestRequiredComponentIds,
288
+ evidenceStatus: missingRequiredEvidence
289
+ .length === 0
290
+ ? "complete"
291
+ : "missing-required-evidence",
292
+ missingRequiredEvidenceComponentIds: missingRequiredEvidence.map((component) => component.componentId),
293
+ uncertainty: composedUncertainty(required),
294
+ components,
295
+ componentEvidencePreserved: true,
296
+ componentUncertaintyPreserved: true,
297
+ aggregateNumericUncertaintyFabricated: false,
298
+ downstreamStatusPromotedAboveInputs: false
299
+ };
300
+ }
301
+ //# sourceMappingURL=scientific-assurance.js.map