@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
@@ -0,0 +1,4613 @@
1
+ {
2
+ "preparedContext": {
3
+ "version": "0.1.0",
4
+ "contextId": "tier-reference",
5
+ "sceneId": "room",
6
+ "sceneRadianceProviderProfileId": "provider",
7
+ "outputGeometryProfileId": "tier-output",
8
+ "equipmentCapabilities": {
9
+ "schemaVersion": "0.1.0",
10
+ "scientificStatus": "approximation",
11
+ "bodyProfile": {
12
+ "profileId": "photivra-consumer-body:exposure",
13
+ "profileVersion": "1.0.0"
14
+ },
15
+ "lensProfile": {
16
+ "profileId": "photivra-consumer-prime:exposure",
17
+ "profileVersion": "1.0.0"
18
+ },
19
+ "selectedFocalLengthMm": 50,
20
+ "aperture": {
21
+ "widestAvailableFNumber": 4,
22
+ "narrowestAvailableFNumber": 16,
23
+ "settingGrid": {
24
+ "kind": "continuous-within-range"
25
+ }
26
+ },
27
+ "shutter": {
28
+ "minimumSeconds": 0.000125,
29
+ "maximumSeconds": 30,
30
+ "settingGrid": {
31
+ "kind": "continuous-within-range"
32
+ }
33
+ },
34
+ "iso": {
35
+ "minimum": 100,
36
+ "maximum": 6400,
37
+ "settingGrid": {
38
+ "kind": "discrete-values",
39
+ "values": [
40
+ 100,
41
+ 200,
42
+ 400,
43
+ 800,
44
+ 1600,
45
+ 3200,
46
+ 6400
47
+ ]
48
+ },
49
+ "autoIsoAvailability": "supported"
50
+ },
51
+ "sourceProfilesMutated": false,
52
+ "exactNamedEquipmentEmulationClaimed": false
53
+ },
54
+ "opticalBridgeProfile": {
55
+ "schemaVersion": "0.1.0",
56
+ "profileId": "photivra-consumer-prime:transmission:production-fixture",
57
+ "profileVersion": "1",
58
+ "lensProfileId": "photivra-consumer-prime:exposure",
59
+ "scientificStatus": "approximation",
60
+ "applicability": {
61
+ "focalLengthMm": {
62
+ "minimum": 50,
63
+ "maximum": 50
64
+ },
65
+ "nominalFNumber": {
66
+ "minimum": 4,
67
+ "maximum": 4
68
+ },
69
+ "focus": {
70
+ "kind": "finite-distance-range",
71
+ "objectDistanceM": {
72
+ "minimum": 5,
73
+ "maximum": 5
74
+ }
75
+ }
76
+ },
77
+ "transmission": {
78
+ "kind": "spectral-transmission",
79
+ "scientificStatus": "approximation",
80
+ "wavelengthBasis": "vacuum",
81
+ "samples": {
82
+ "value": [
83
+ {
84
+ "wavelengthNanometers": 540,
85
+ "linearTransmissionFactor": 0.75
86
+ },
87
+ {
88
+ "wavelengthNanometers": 560,
89
+ "linearTransmissionFactor": 0.75
90
+ }
91
+ ],
92
+ "evidence": [
93
+ {
94
+ "sourceOrigin": "photivra",
95
+ "sourceReference": "photivra:generic-tier-assets-v1",
96
+ "reuseStatus": "photivra-owned"
97
+ }
98
+ ]
99
+ },
100
+ "uncertainty": {
101
+ "kind": "not-quantified",
102
+ "limitation": "Synthetic flat narrow-band reference."
103
+ }
104
+ },
105
+ "distortionAreaMappingOwnership": "not-applied-by-bridge",
106
+ "psfRedistributionOwnership": "downstream-normalized-energy-redistribution",
107
+ "sensorOpticalStackIncluded": false,
108
+ "strayLightIncluded": false,
109
+ "polarizationModeled": false,
110
+ "wavelengthChangingBehaviorModeled": false,
111
+ "volumetricScatteringModeled": false,
112
+ "evidence": [
113
+ {
114
+ "sourceOrigin": "photivra",
115
+ "sourceReference": "photivra:generic-tier-assets-v1",
116
+ "reuseStatus": "photivra-owned"
117
+ }
118
+ ],
119
+ "limitations": [
120
+ "Synthetic educational design values; no named camera/lens calibration or population ranking.",
121
+ "Optical reference response is limited to 50 mm, f/4, focus 5 m and explicit field/defocus/wavelength slices; capabilities do not authorize extrapolation.",
122
+ "The initial prime has no OIS; body stabilization is separate."
123
+ ]
124
+ },
125
+ "renderer": {
126
+ "schemaVersion": "0.1.0",
127
+ "rendererId": "tier-reference",
128
+ "rendererVersion": "1",
129
+ "consumerKind": "reference",
130
+ "supportedStages": [
131
+ "scene-ray-projection",
132
+ "scene-radiance-evaluation",
133
+ "lens-field-pupil-evaluation",
134
+ "field-wavelength-psf",
135
+ "temporal-exposure-readout",
136
+ "sensor-optical-stack",
137
+ "photosite-cfa-sampling",
138
+ "sensor-charge-statistics",
139
+ "read-noise-conversion",
140
+ "adc-quantization",
141
+ "reconstruction",
142
+ "physical-orientation-transform",
143
+ "output-crop-resample",
144
+ "display-processing"
145
+ ],
146
+ "supportedEffects": [],
147
+ "spectralCapability": "wavelength-resolved",
148
+ "temporalSampling": {
149
+ "kind": "bounded",
150
+ "maximumSamples": 256
151
+ },
152
+ "depthCapability": "none",
153
+ "inverseFieldMapping": true,
154
+ "alphaRepresentation": "premultiplied",
155
+ "preservesDepthOrderAcrossWarps": true,
156
+ "sensorDomainProcessing": true
157
+ },
158
+ "fidelity": {
159
+ "schemaVersion": "0.1.0",
160
+ "profileId": "tier-bounded",
161
+ "profileVersion": "1",
162
+ "requiredStages": [
163
+ "display-processing"
164
+ ],
165
+ "requiredEffects": [],
166
+ "rendererRequirements": {
167
+ "spectral": "wavelength-resolved",
168
+ "sensorDomainProcessing": true,
169
+ "depth": "none"
170
+ }
171
+ },
172
+ "fingerprint": {
173
+ "algorithm": "fnv1a-32-non-cryptographic",
174
+ "value": "785e09d0"
175
+ }
176
+ },
177
+ "captureSnapshot": {
178
+ "version": "0.3.0",
179
+ "captureId": "00000000-0000-4000-8000-000000000001",
180
+ "releaseFrameId": "tier-release",
181
+ "sceneStateId": "fixture-scene",
182
+ "sceneTimeSecondsFromExposureStart": 0,
183
+ "outputStateId": "tier-output",
184
+ "exposure": {
185
+ "aperture": 4,
186
+ "shutterSeconds": 0.008,
187
+ "iso": 100
188
+ },
189
+ "stochasticSeedUint32": 12345,
190
+ "temporalCapture": {
191
+ "exposureWindowInput": {
192
+ "shutterMechanism": "electronic",
193
+ "nominalExposureDurationSeconds": {
194
+ "value": 0.008,
195
+ "unit": "s",
196
+ "evidence": [
197
+ {
198
+ "sourceOrigin": "photivra",
199
+ "sourceReference": "synthetic-frame-test",
200
+ "reuseStatus": "photivra-owned"
201
+ }
202
+ ]
203
+ },
204
+ "opening": {
205
+ "kind": "simultaneous"
206
+ },
207
+ "closing": {
208
+ "kind": "simultaneous"
209
+ },
210
+ "nativeRaster": {
211
+ "pixelWidth": 2,
212
+ "pixelHeight": 2
213
+ },
214
+ "samplePointsNative": [
215
+ {
216
+ "x": 0.5,
217
+ "y": 0.5
218
+ },
219
+ {
220
+ "x": 1.5,
221
+ "y": 0.5
222
+ },
223
+ {
224
+ "x": 0.5,
225
+ "y": 1.5
226
+ },
227
+ {
228
+ "x": 1.5,
229
+ "y": 1.5
230
+ }
231
+ ]
232
+ },
233
+ "imagingArea": {
234
+ "widthMm": 36,
235
+ "heightMm": 24
236
+ },
237
+ "orientation": "landscape",
238
+ "rotation": {
239
+ "angularVelocityRadPerSec": {
240
+ "pitch": 0,
241
+ "yaw": 0,
242
+ "roll": 0
243
+ },
244
+ "temporalSampleCount": 2,
245
+ "focusDistanceM": 5
246
+ }
247
+ },
248
+ "fingerprint": {
249
+ "algorithm": "fnv1a-32-non-cryptographic",
250
+ "value": "15e68685"
251
+ }
252
+ },
253
+ "environmentCapture": {
254
+ "capture": {
255
+ "frame": {
256
+ "frameId": "raw-frame",
257
+ "capture": {
258
+ "schemaVersion": "0.2.0",
259
+ "engineApiVersion": "0.116.0",
260
+ "captureId": "00000000-0000-4000-8000-000000000001",
261
+ "sceneStateId": "fixture-scene",
262
+ "sceneTimeSeconds": 0,
263
+ "geometry": {
264
+ "imagingArea": {
265
+ "widthMm": 36,
266
+ "heightMm": 24
267
+ },
268
+ "nativeRaster": {
269
+ "pixelWidth": 2,
270
+ "pixelHeight": 2
271
+ },
272
+ "orientation": "landscape",
273
+ "outputRaster": {
274
+ "pixelWidth": 2,
275
+ "pixelHeight": 2
276
+ }
277
+ },
278
+ "resolvedGeometry": {
279
+ "native": {
280
+ "imagingArea": {
281
+ "widthMm": 36,
282
+ "heightMm": 24
283
+ },
284
+ "raster": {
285
+ "pixelWidth": 2,
286
+ "pixelHeight": 2
287
+ }
288
+ },
289
+ "activeCapture": {
290
+ "nativeRect": {
291
+ "x": 0,
292
+ "y": 0,
293
+ "width": 2,
294
+ "height": 2
295
+ },
296
+ "imagingArea": {
297
+ "widthMm": 36,
298
+ "heightMm": 24
299
+ },
300
+ "physicalOffsetMm": {
301
+ "x": 0,
302
+ "y": 0
303
+ },
304
+ "centerOffsetFromOpticalAxisMm": {
305
+ "x": 0,
306
+ "y": 0
307
+ },
308
+ "physicalBoundsFromOpticalAxisMm": {
309
+ "left": -18,
310
+ "right": 18,
311
+ "top": -12,
312
+ "bottom": 12
313
+ },
314
+ "imagingAreaDerivation": "uniform-native-raster",
315
+ "raster": {
316
+ "pixelWidth": 2,
317
+ "pixelHeight": 2
318
+ }
319
+ },
320
+ "orientedCapture": {
321
+ "orientation": "landscape",
322
+ "imagingArea": {
323
+ "widthMm": 36,
324
+ "heightMm": 24
325
+ },
326
+ "physicalBoundsFromOpticalAxisMm": {
327
+ "left": -18,
328
+ "right": 18,
329
+ "top": -12,
330
+ "bottom": 12
331
+ },
332
+ "raster": {
333
+ "pixelWidth": 2,
334
+ "pixelHeight": 2
335
+ }
336
+ },
337
+ "output": {
338
+ "cropRect": {
339
+ "x": 0,
340
+ "y": 0,
341
+ "width": 2,
342
+ "height": 2
343
+ },
344
+ "raster": {
345
+ "pixelWidth": 2,
346
+ "pixelHeight": 2
347
+ },
348
+ "imagingArea": {
349
+ "widthMm": 36,
350
+ "heightMm": 24
351
+ },
352
+ "physicalBoundsFromOpticalAxisMm": {
353
+ "left": -18,
354
+ "right": 18,
355
+ "top": -12,
356
+ "bottom": 12
357
+ },
358
+ "centerOffsetFromOpticalAxisMm": {
359
+ "x": 0,
360
+ "y": 0
361
+ },
362
+ "sourceRetainedAreaFraction": 1,
363
+ "orientedCaptureToOutputScale": {
364
+ "x": 1,
365
+ "y": 1,
366
+ "axisRelativeDifference": 0
367
+ }
368
+ }
369
+ },
370
+ "exposure": {
371
+ "focalLengthMm": 50,
372
+ "aperture": 4,
373
+ "shutterSeconds": 0.008,
374
+ "iso": 100
375
+ },
376
+ "equivalentFocalLength35Mm": 50,
377
+ "focus": {
378
+ "kind": "finite",
379
+ "distanceM": 5
380
+ },
381
+ "noise": {
382
+ "seedUint32": 12345,
383
+ "realizationId": "noise",
384
+ "model": {
385
+ "id": "photivra-native-raw-noise",
386
+ "version": "0.2.0"
387
+ }
388
+ },
389
+ "source": {
390
+ "kind": "scene-linear-master",
391
+ "artifactId": "fixture-master",
392
+ "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
393
+ "dynamicRangeHistory": "unknown"
394
+ },
395
+ "whiteBalanceIntent": null,
396
+ "adoptedWhiteXyz": null,
397
+ "models": [
398
+ {
399
+ "profile": {
400
+ "id": "photivra-colorimetric-rgb-d65",
401
+ "version": "0.1.0"
402
+ },
403
+ "scientificStatus": "calculated",
404
+ "publicEvidenceIds": [
405
+ "w3c:css-color-4:srgb-primaries-d65"
406
+ ]
407
+ }
408
+ ],
409
+ "planes": [
410
+ {
411
+ "id": "source",
412
+ "imageStateId": "source-state",
413
+ "imageState": "scene-referred-xyz",
414
+ "rasterBinding": "output",
415
+ "pixelWidth": 2,
416
+ "pixelHeight": 2,
417
+ "channelIds": [
418
+ "X",
419
+ "Y",
420
+ "Z"
421
+ ],
422
+ "colorProfile": {
423
+ "id": "cie-1931-2-degree-xyz",
424
+ "version": "1.0.0"
425
+ },
426
+ "encodingReferenceWhiteXyz": {
427
+ "x": 0.9504559270516716,
428
+ "y": 1,
429
+ "z": 1.0890577507598784
430
+ },
431
+ "referenceWhiteValue": 1,
432
+ "whiteBalanceApplication": "not-applicable",
433
+ "captureSaturation": {
434
+ "kind": "not-modeled"
435
+ },
436
+ "appliedTransforms": [],
437
+ "storage": {
438
+ "kind": "inline-float64",
439
+ "samples": [
440
+ 0,
441
+ 0,
442
+ 0,
443
+ 0,
444
+ 0,
445
+ 0,
446
+ 0,
447
+ 0,
448
+ 0,
449
+ 0,
450
+ 0,
451
+ 0
452
+ ]
453
+ }
454
+ }
455
+ ]
456
+ },
457
+ "modeId": "native-still",
458
+ "captureModeProfile": {
459
+ "schemaVersion": "0.1.0",
460
+ "modes": [
461
+ {
462
+ "modeId": "native-still",
463
+ "evidence": [
464
+ {
465
+ "sourceOrigin": "photivra",
466
+ "sourceReference": "synthetic-frame-test",
467
+ "reuseStatus": "photivra-owned"
468
+ }
469
+ ],
470
+ "acquisition": {
471
+ "kind": "single-frame"
472
+ },
473
+ "perFrameSampling": {
474
+ "kind": "native-effective-raster"
475
+ },
476
+ "reconstructionStages": [],
477
+ "processedImageRaster": {
478
+ "value": {
479
+ "pixelWidth": 2,
480
+ "pixelHeight": 2
481
+ },
482
+ "evidence": [
483
+ {
484
+ "sourceOrigin": "photivra",
485
+ "sourceReference": "synthetic-frame-test",
486
+ "reuseStatus": "photivra-owned"
487
+ }
488
+ ]
489
+ },
490
+ "dependencies": [
491
+ "color-sampling-model"
492
+ ]
493
+ }
494
+ ]
495
+ },
496
+ "colorSamplingProfile": {
497
+ "schemaVersion": "0.1.0",
498
+ "profileId": "photivra-generic-bayer",
499
+ "evidence": [
500
+ {
501
+ "sourceOrigin": "photivra",
502
+ "sourceReference": "synthetic-frame-test",
503
+ "reuseStatus": "photivra-owned"
504
+ }
505
+ ],
506
+ "coordinateSystem": "native-sensor-color-sampling-site-index",
507
+ "layout": {
508
+ "kind": "periodic-mosaic",
509
+ "repeatWidthSites": 2,
510
+ "repeatHeightSites": 2,
511
+ "siteChannelIds": [
512
+ "red",
513
+ "green",
514
+ "green",
515
+ "blue"
516
+ ],
517
+ "anchor": "native-sensor-top-left-site"
518
+ }
519
+ },
520
+ "bindingProfile": {
521
+ "schemaVersion": "0.1.0",
522
+ "bindingId": "native-cfa",
523
+ "colorSamplingProfileId": "photivra-generic-bayer",
524
+ "nativeRaster": {
525
+ "pixelWidth": 2,
526
+ "pixelHeight": 2
527
+ },
528
+ "evidence": [
529
+ {
530
+ "sourceOrigin": "photivra",
531
+ "sourceReference": "synthetic-frame-test",
532
+ "reuseStatus": "photivra-owned"
533
+ }
534
+ ],
535
+ "relationship": {
536
+ "kind": "regular-native-effective-sample-blocks",
537
+ "sitesPerNativeSampleX": 1,
538
+ "sitesPerNativeSampleY": 1,
539
+ "anchor": "shared-native-top-left"
540
+ }
541
+ },
542
+ "containerBitDepth": 16
543
+ },
544
+ "sceneBinding": {
545
+ "sceneStateId": "fixture-scene",
546
+ "providerSceneId": "room",
547
+ "evidence": [
548
+ {
549
+ "sourceOrigin": "photivra",
550
+ "sourceReference": "synthetic-frame-test",
551
+ "reuseStatus": "photivra-owned"
552
+ }
553
+ ]
554
+ },
555
+ "exposureWindow": {
556
+ "shutterMechanism": "electronic",
557
+ "nominalExposureDurationSeconds": {
558
+ "value": 0.008,
559
+ "unit": "s",
560
+ "evidence": [
561
+ {
562
+ "sourceOrigin": "photivra",
563
+ "sourceReference": "synthetic-frame-test",
564
+ "reuseStatus": "photivra-owned"
565
+ }
566
+ ]
567
+ },
568
+ "opening": {
569
+ "kind": "simultaneous"
570
+ },
571
+ "closing": {
572
+ "kind": "simultaneous"
573
+ }
574
+ },
575
+ "sites": [
576
+ {
577
+ "environment": {
578
+ "temporalIntegrationId": "environment-site-0",
579
+ "sensor": {
580
+ "spatialSampling": {
581
+ "imagingArea": {
582
+ "widthMm": 36,
583
+ "heightMm": 24
584
+ },
585
+ "samplingApertureProfile": {
586
+ "schemaVersion": "0.1.0",
587
+ "profileId": "sampling",
588
+ "colorSamplingProfileId": "photivra-generic-bayer",
589
+ "colorSamplingBindingId": "native-cfa",
590
+ "evidence": [
591
+ {
592
+ "sourceOrigin": "photivra",
593
+ "sourceReference": "test:sampling",
594
+ "reuseStatus": "photivra-owned"
595
+ }
596
+ ],
597
+ "siteCenterLattice": {
598
+ "kind": "regular-rectangular-site-center-lattice",
599
+ "coordinateSystem": "native-sensor-physical",
600
+ "pitchXMicrometers": 18000,
601
+ "pitchYMicrometers": 12000,
602
+ "firstSiteCenterFromImagingAreaTopLeftMicrometers": {
603
+ "x": 9000,
604
+ "y": 6000
605
+ },
606
+ "evidence": [
607
+ {
608
+ "sourceOrigin": "photivra",
609
+ "sourceReference": "test:lattice",
610
+ "reuseStatus": "photivra-owned"
611
+ }
612
+ ]
613
+ },
614
+ "geometricSensitiveAperture": {
615
+ "kind": "uniform-axis-aligned-rectangle",
616
+ "widthMicrometers": 800,
617
+ "heightMicrometers": 600,
618
+ "centerOffsetFromSiteCenterMicrometers": {
619
+ "x": 0,
620
+ "y": 0
621
+ },
622
+ "evidence": [
623
+ {
624
+ "sourceOrigin": "photivra",
625
+ "sourceReference": "test:aperture",
626
+ "reuseStatus": "photivra-owned"
627
+ }
628
+ ]
629
+ }
630
+ },
631
+ "opticalStackProfile": {
632
+ "schemaVersion": "0.1.0",
633
+ "profileId": "absent-aa",
634
+ "evidence": [
635
+ {
636
+ "sourceOrigin": "photivra",
637
+ "sourceReference": "test:stack",
638
+ "reuseStatus": "photivra-owned"
639
+ }
640
+ ],
641
+ "effectiveAntiAliasingSpatialResponse": {
642
+ "kind": "absent",
643
+ "evidence": [
644
+ {
645
+ "sourceOrigin": "photivra",
646
+ "sourceReference": "test:no-aa",
647
+ "reuseStatus": "photivra-owned"
648
+ }
649
+ ]
650
+ }
651
+ },
652
+ "site": {
653
+ "x": 0,
654
+ "y": 0
655
+ },
656
+ "spatialSampleCountX": 2,
657
+ "spatialSampleCountY": 2
658
+ },
659
+ "spectralSampling": {
660
+ "channelId": "red",
661
+ "wavelengthBasis": "vacuum",
662
+ "wavelengthRangeNanometers": {
663
+ "minimum": 540,
664
+ "maximum": 560
665
+ },
666
+ "maximumSubintervalWidthNanometers": 20
667
+ },
668
+ "colorSamplingProfile": {
669
+ "schemaVersion": "0.1.0",
670
+ "profileId": "photivra-generic-bayer",
671
+ "evidence": [
672
+ {
673
+ "sourceOrigin": "photivra",
674
+ "sourceReference": "synthetic-frame-test",
675
+ "reuseStatus": "photivra-owned"
676
+ }
677
+ ],
678
+ "coordinateSystem": "native-sensor-color-sampling-site-index",
679
+ "layout": {
680
+ "kind": "periodic-mosaic",
681
+ "repeatWidthSites": 2,
682
+ "repeatHeightSites": 2,
683
+ "siteChannelIds": [
684
+ "red",
685
+ "green",
686
+ "green",
687
+ "blue"
688
+ ],
689
+ "anchor": "native-sensor-top-left-site"
690
+ }
691
+ },
692
+ "spectralResponseProfile": {
693
+ "schemaVersion": "0.1.0",
694
+ "profileId": "spectral",
695
+ "colorSamplingProfileId": "photivra-generic-bayer",
696
+ "evidence": [
697
+ {
698
+ "sourceOrigin": "photivra",
699
+ "sourceReference": "test:response-profile",
700
+ "reuseStatus": "photivra-owned"
701
+ }
702
+ ],
703
+ "channels": [
704
+ {
705
+ "channelId": "red",
706
+ "scientificStatus": "approximation",
707
+ "uncertainty": {
708
+ "kind": "not-quantified",
709
+ "limitation": "Owned narrow-band test response, not tier calibration."
710
+ },
711
+ "evidence": [
712
+ {
713
+ "sourceOrigin": "photivra",
714
+ "sourceReference": "test:response-channel",
715
+ "reuseStatus": "photivra-owned"
716
+ }
717
+ ],
718
+ "referenceConditions": {
719
+ "temperatureC": 25,
720
+ "incidenceAngleDegreesFromNormal": 0,
721
+ "polarization": "unpolarized"
722
+ },
723
+ "conditionDependence": "not-modeled",
724
+ "kind": "effective-external-quantum-efficiency",
725
+ "responseScope": "sensor-package-incident-effective-channel-response",
726
+ "externalQuantumEfficiency": {
727
+ "wavelengthUnit": "nm",
728
+ "wavelengthBasis": "vacuum",
729
+ "interpolation": "piecewise-linear",
730
+ "outsideRangeBehavior": "fail-closed",
731
+ "evidence": [
732
+ {
733
+ "sourceOrigin": "photivra",
734
+ "sourceReference": "test:response-curve",
735
+ "reuseStatus": "photivra-owned"
736
+ }
737
+ ],
738
+ "samples": [
739
+ {
740
+ "wavelengthNanometers": 540,
741
+ "value": 0.4
742
+ },
743
+ {
744
+ "wavelengthNanometers": 560,
745
+ "value": 0.4
746
+ }
747
+ ]
748
+ }
749
+ }
750
+ ]
751
+ },
752
+ "responseApplication": {
753
+ "applicationProfile": {
754
+ "schemaVersion": "0.1.0",
755
+ "profileId": "application",
756
+ "spectralResponseProfileId": "spectral",
757
+ "colorSamplingProfileId": "photivra-generic-bayer",
758
+ "channelId": "red",
759
+ "samplingApertureProfileId": "sampling",
760
+ "opticalStackProfileId": "absent-aa",
761
+ "evidence": [
762
+ {
763
+ "sourceOrigin": "photivra",
764
+ "sourceReference": "test:application",
765
+ "reuseStatus": "photivra-owned"
766
+ }
767
+ ],
768
+ "incidentAreaBasis": {
769
+ "kind": "geometric-sensitive-aperture",
770
+ "areaSquareMicrometers": 480000
771
+ },
772
+ "spatialResponseModel": {
773
+ "kind": "uniform-over-geometric-sensitive-aperture",
774
+ "scientificStatus": "approximation",
775
+ "evidence": [
776
+ {
777
+ "sourceOrigin": "photivra",
778
+ "sourceReference": "synthetic-frame-test",
779
+ "reuseStatus": "photivra-owned"
780
+ }
781
+ ],
782
+ "limitation": "Owned synthetic response for integration, not measured tier calibration."
783
+ },
784
+ "referenceConditionPolicy": {
785
+ "kind": "exact-match-required"
786
+ }
787
+ },
788
+ "sourcePlane": {
789
+ "value": "sensor-package-incident",
790
+ "evidence": [
791
+ {
792
+ "sourceOrigin": "photivra",
793
+ "sourceReference": "test:plane",
794
+ "reuseStatus": "photivra-owned"
795
+ }
796
+ ]
797
+ },
798
+ "operatingConditions": {
799
+ "temperatureC": 25,
800
+ "incidenceAngleDegreesFromNormal": 0,
801
+ "polarization": "unpolarized"
802
+ }
803
+ },
804
+ "operatingRangeProfile": {
805
+ "schemaVersion": "0.1.0",
806
+ "profileId": "linearity",
807
+ "responseApplicationProfileId": "application",
808
+ "spectralResponseProfileId": "spectral",
809
+ "colorSamplingProfileId": "photivra-generic-bayer",
810
+ "channelId": "red",
811
+ "scientificStatus": "approximation",
812
+ "uncertainty": {
813
+ "kind": "not-quantified",
814
+ "limitation": "Owned synthetic response for integration, not measured tier calibration."
815
+ },
816
+ "evidence": [
817
+ {
818
+ "sourceOrigin": "photivra",
819
+ "sourceReference": "test:linearity",
820
+ "reuseStatus": "photivra-owned"
821
+ }
822
+ ],
823
+ "inputRange": {
824
+ "kind": "wavelength-integrated-geometric-aperture-radiant-power",
825
+ "unit": "W",
826
+ "minimumInclusive": 0,
827
+ "maximumInclusive": 0.001
828
+ },
829
+ "wavelengthApplicability": {
830
+ "wavelengthBasis": "vacuum",
831
+ "minimumNanometers": 380,
832
+ "maximumNanometers": 720,
833
+ "containment": "requested-range-must-be-contained"
834
+ },
835
+ "linearityCriterion": {
836
+ "maximumAbsoluteRelativeDeviation": 0.01
837
+ },
838
+ "spatialLinearityModel": {
839
+ "kind": "linear-superposition-over-geometric-aperture",
840
+ "scientificStatus": "approximation",
841
+ "evidence": [
842
+ {
843
+ "sourceOrigin": "photivra",
844
+ "sourceReference": "synthetic-frame-test",
845
+ "reuseStatus": "photivra-owned"
846
+ }
847
+ ],
848
+ "limitation": "Owned synthetic response for integration, not measured tier calibration."
849
+ },
850
+ "spectralInputModel": {
851
+ "kind": "per-spectral-bin",
852
+ "maximumBinWidthNanometers": 20,
853
+ "scientificStatus": "approximation",
854
+ "evidence": [
855
+ {
856
+ "sourceOrigin": "photivra",
857
+ "sourceReference": "synthetic-frame-test",
858
+ "reuseStatus": "photivra-owned"
859
+ }
860
+ ],
861
+ "limitation": "Owned synthetic response for integration, not measured tier calibration."
862
+ },
863
+ "referenceConditions": {
864
+ "temperatureC": 25,
865
+ "incidenceAngleDegreesFromNormal": 0,
866
+ "polarization": "unpolarized"
867
+ },
868
+ "referenceConditionPolicy": {
869
+ "kind": "exact-match-required"
870
+ }
871
+ },
872
+ "localExposure": {
873
+ "bindingProfile": {
874
+ "schemaVersion": "0.1.0",
875
+ "bindingId": "native-cfa",
876
+ "colorSamplingProfileId": "photivra-generic-bayer",
877
+ "nativeRaster": {
878
+ "pixelWidth": 2,
879
+ "pixelHeight": 2
880
+ },
881
+ "evidence": [
882
+ {
883
+ "sourceOrigin": "photivra",
884
+ "sourceReference": "synthetic-frame-test",
885
+ "reuseStatus": "photivra-owned"
886
+ }
887
+ ],
888
+ "relationship": {
889
+ "kind": "regular-native-effective-sample-blocks",
890
+ "sitesPerNativeSampleX": 1,
891
+ "sitesPerNativeSampleY": 1,
892
+ "anchor": "shared-native-top-left"
893
+ }
894
+ },
895
+ "exposureWindowInput": {
896
+ "shutterMechanism": "electronic",
897
+ "nominalExposureDurationSeconds": {
898
+ "value": 0.008,
899
+ "unit": "s",
900
+ "evidence": [
901
+ {
902
+ "sourceOrigin": "photivra",
903
+ "sourceReference": "synthetic-frame-test",
904
+ "reuseStatus": "photivra-owned"
905
+ }
906
+ ]
907
+ },
908
+ "opening": {
909
+ "kind": "simultaneous"
910
+ },
911
+ "closing": {
912
+ "kind": "simultaneous"
913
+ },
914
+ "nativeRaster": {
915
+ "pixelWidth": 2,
916
+ "pixelHeight": 2
917
+ }
918
+ }
919
+ }
920
+ },
921
+ "sceneBindings": {
922
+ "illuminationProfile": {
923
+ "schemaVersion": "0.1.0",
924
+ "profileId": "lights",
925
+ "sceneId": "room",
926
+ "evidence": [
927
+ {
928
+ "sourceOrigin": "photivra",
929
+ "sourceReference": "test:lights",
930
+ "reuseStatus": "photivra-owned"
931
+ }
932
+ ],
933
+ "sources": [
934
+ {
935
+ "sourceId": "sky",
936
+ "family": "environment",
937
+ "enabled": true,
938
+ "geometry": {
939
+ "kind": "environment"
940
+ },
941
+ "magnitude": {
942
+ "kind": "relative-linear-scale",
943
+ "scale": 1,
944
+ "scientificStatus": "approximation",
945
+ "limitation": "Owned synthetic scene declaration."
946
+ },
947
+ "spectrum": {
948
+ "kind": "unresolved",
949
+ "limitation": "Numeric provider radiance is separately declared."
950
+ },
951
+ "temporalBehavior": {
952
+ "kind": "time-invariant"
953
+ },
954
+ "evidence": [
955
+ {
956
+ "sourceOrigin": "photivra",
957
+ "sourceReference": "test:sky",
958
+ "reuseStatus": "photivra-owned"
959
+ }
960
+ ]
961
+ }
962
+ ],
963
+ "sceneRadianceCalculated": false,
964
+ "materialResponseApplied": false,
965
+ "visibilityEvaluated": false,
966
+ "indirectTransportEvaluated": false,
967
+ "fluorescenceModeled": false,
968
+ "volumetricTransportModeled": false,
969
+ "polarizationModeled": false
970
+ },
971
+ "materialResponseProfile": {
972
+ "schemaVersion": "0.1.0",
973
+ "profileId": "materials",
974
+ "sceneId": "room",
975
+ "evidence": [
976
+ {
977
+ "sourceOrigin": "photivra",
978
+ "sourceReference": "test:materials",
979
+ "reuseStatus": "photivra-owned"
980
+ }
981
+ ],
982
+ "materials": [
983
+ {
984
+ "materialResponseId": "surface",
985
+ "evidence": [
986
+ {
987
+ "sourceOrigin": "photivra",
988
+ "sourceReference": "test:surface",
989
+ "reuseStatus": "photivra-owned"
990
+ }
991
+ ],
992
+ "representation": {
993
+ "kind": "spectral-wavelength-preserving-data",
994
+ "dataArtifact": {
995
+ "id": "owned-spectrum",
996
+ "checksumSha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
997
+ },
998
+ "wavelengthBasis": "vacuum",
999
+ "wavelengthRangeNanometers": {
1000
+ "minimum": 400,
1001
+ "maximum": 500
1002
+ },
1003
+ "scatteringModel": "provider-defined-wavelength-preserving",
1004
+ "scientificStatus": "approximation",
1005
+ "uncertainty": {
1006
+ "kind": "not-quantified",
1007
+ "limitation": "Synthetic provider metadata only."
1008
+ },
1009
+ "wavelengthChangingBehaviorModeled": false,
1010
+ "emissionModeled": false
1011
+ }
1012
+ }
1013
+ ],
1014
+ "fluorescenceModeled": false,
1015
+ "volumetricMaterialTransportModeled": false,
1016
+ "polarizationModeled": false
1017
+ },
1018
+ "providerProfile": {
1019
+ "schemaVersion": "0.1.0",
1020
+ "profileId": "provider",
1021
+ "sceneId": "room",
1022
+ "illuminationProfileId": "lights",
1023
+ "materialResponseProfileId": "materials",
1024
+ "outputQuantity": "outgoing-spectral-radiance",
1025
+ "outputUnit": "W/m^2/sr/nm",
1026
+ "scientificStatus": "approximation",
1027
+ "uncertainty": {
1028
+ "kind": "not-quantified",
1029
+ "limitation": "Synthetic field."
1030
+ },
1031
+ "fidelity": {
1032
+ "spectral": "wavelength-resolved",
1033
+ "material": "spectral-data",
1034
+ "visibility": "resolved",
1035
+ "directTransport": "approximation",
1036
+ "indirectTransport": "not-modeled"
1037
+ },
1038
+ "wavelengthChangingTransportModeled": false,
1039
+ "volumetricTransportModeled": false,
1040
+ "polarizationModeled": false,
1041
+ "evidence": [
1042
+ {
1043
+ "sourceOrigin": "photivra",
1044
+ "sourceReference": "test:provider",
1045
+ "reuseStatus": "photivra-owned"
1046
+ }
1047
+ ],
1048
+ "limitations": [
1049
+ "Owned fixture declarations."
1050
+ ],
1051
+ "illuminationTemporalProfileId": "time-lights"
1052
+ },
1053
+ "illuminationTemporalProfile": {
1054
+ "schemaVersion": "0.1.0",
1055
+ "profileId": "time-lights",
1056
+ "sceneId": "room",
1057
+ "illuminationProfileId": "lights",
1058
+ "evidence": [
1059
+ {
1060
+ "sourceOrigin": "photivra",
1061
+ "sourceReference": "test:time-lights",
1062
+ "reuseStatus": "photivra-owned"
1063
+ }
1064
+ ],
1065
+ "waveforms": [
1066
+ {
1067
+ "kind": "aperiodic-relative-multiplier",
1068
+ "waveformId": "ramp",
1069
+ "timeUnit": "s",
1070
+ "scientificStatus": "approximation",
1071
+ "uncertainty": {
1072
+ "kind": "not-quantified",
1073
+ "limitation": "Synthetic linear light ramp."
1074
+ },
1075
+ "evidence": [
1076
+ {
1077
+ "sourceOrigin": "photivra",
1078
+ "sourceReference": "test:ramp",
1079
+ "reuseStatus": "photivra-owned"
1080
+ }
1081
+ ],
1082
+ "interpolation": "piecewise-linear",
1083
+ "samples": [
1084
+ {
1085
+ "timeSecondsFromWaveformReference": 0,
1086
+ "relativeMagnitudeMultiplier": 1
1087
+ },
1088
+ {
1089
+ "timeSecondsFromWaveformReference": 1,
1090
+ "relativeMagnitudeMultiplier": 201
1091
+ }
1092
+ ],
1093
+ "outsideSupportBehavior": "zero"
1094
+ }
1095
+ ],
1096
+ "sourceBindings": [
1097
+ {
1098
+ "bindingId": "sky-time",
1099
+ "sourceId": "sky",
1100
+ "waveformId": "ramp",
1101
+ "captureTimeReference": "first-opening-boundary-phase",
1102
+ "waveformTimeZeroSecondsFromCaptureReference": 0,
1103
+ "scientificStatus": "approximation",
1104
+ "timingUncertainty": {
1105
+ "kind": "not-quantified",
1106
+ "limitation": "Owned exact synthetic clock."
1107
+ },
1108
+ "evidence": [
1109
+ {
1110
+ "sourceOrigin": "photivra",
1111
+ "sourceReference": "test:sky-time",
1112
+ "reuseStatus": "photivra-owned"
1113
+ }
1114
+ ]
1115
+ }
1116
+ ],
1117
+ "baseIlluminationProfileRemainsAuthoritative": true,
1118
+ "sensorReadoutTimingUsedAsExposureTiming": false,
1119
+ "automaticExposurePolicyIncluded": false
1120
+ }
1121
+ },
1122
+ "optics": {
1123
+ "profile": {
1124
+ "schemaVersion": "0.1.0",
1125
+ "profileId": "photivra-consumer-prime:transmission:production-fixture",
1126
+ "profileVersion": "1",
1127
+ "lensProfileId": "photivra-consumer-prime:exposure",
1128
+ "scientificStatus": "approximation",
1129
+ "applicability": {
1130
+ "focalLengthMm": {
1131
+ "minimum": 50,
1132
+ "maximum": 50
1133
+ },
1134
+ "nominalFNumber": {
1135
+ "minimum": 4,
1136
+ "maximum": 4
1137
+ },
1138
+ "focus": {
1139
+ "kind": "finite-distance-range",
1140
+ "objectDistanceM": {
1141
+ "minimum": 5,
1142
+ "maximum": 5
1143
+ }
1144
+ }
1145
+ },
1146
+ "transmission": {
1147
+ "kind": "spectral-transmission",
1148
+ "scientificStatus": "approximation",
1149
+ "wavelengthBasis": "vacuum",
1150
+ "samples": {
1151
+ "value": [
1152
+ {
1153
+ "wavelengthNanometers": 540,
1154
+ "linearTransmissionFactor": 0.75
1155
+ },
1156
+ {
1157
+ "wavelengthNanometers": 560,
1158
+ "linearTransmissionFactor": 0.75
1159
+ }
1160
+ ],
1161
+ "evidence": [
1162
+ {
1163
+ "sourceOrigin": "photivra",
1164
+ "sourceReference": "photivra:generic-tier-assets-v1",
1165
+ "reuseStatus": "photivra-owned"
1166
+ }
1167
+ ]
1168
+ },
1169
+ "uncertainty": {
1170
+ "kind": "not-quantified",
1171
+ "limitation": "Synthetic flat narrow-band reference."
1172
+ }
1173
+ },
1174
+ "distortionAreaMappingOwnership": "not-applied-by-bridge",
1175
+ "psfRedistributionOwnership": "downstream-normalized-energy-redistribution",
1176
+ "sensorOpticalStackIncluded": false,
1177
+ "strayLightIncluded": false,
1178
+ "polarizationModeled": false,
1179
+ "wavelengthChangingBehaviorModeled": false,
1180
+ "volumetricScatteringModeled": false,
1181
+ "evidence": [
1182
+ {
1183
+ "sourceOrigin": "photivra",
1184
+ "sourceReference": "photivra:generic-tier-assets-v1",
1185
+ "reuseStatus": "photivra-owned"
1186
+ }
1187
+ ],
1188
+ "limitations": [
1189
+ "Synthetic educational design values; no named camera/lens calibration or population ranking.",
1190
+ "Optical reference response is limited to 50 mm, f/4, focus 5 m and explicit field/defocus/wavelength slices; capabilities do not authorize extrapolation.",
1191
+ "The initial prime has no OIS; body stabilization is separate."
1192
+ ]
1193
+ },
1194
+ "focalLengthMm": 50,
1195
+ "nominalFNumber": 4,
1196
+ "focus": {
1197
+ "kind": "ideal-symmetric-thin-lens",
1198
+ "objectDistanceM": 5,
1199
+ "pupilMagnificationAssumption": "unity"
1200
+ }
1201
+ },
1202
+ "motion": {
1203
+ "angularVelocityRadPerSec": {
1204
+ "pitch": 0,
1205
+ "yaw": 0,
1206
+ "roll": 0
1207
+ },
1208
+ "timeReference": "first-opening-boundary-phase",
1209
+ "environmentDirectionConvention": "outgoing-radiance-toward-camera"
1210
+ },
1211
+ "temporalSampleCount": 2,
1212
+ "fieldThroughput": {
1213
+ "kind": "unity",
1214
+ "evidence": [
1215
+ {
1216
+ "sourceOrigin": "photivra",
1217
+ "sourceReference": "test:unity",
1218
+ "reuseStatus": "photivra-owned"
1219
+ }
1220
+ ],
1221
+ "limitation": "Declared unity field throughput."
1222
+ },
1223
+ "psf": {
1224
+ "kind": "not-applied",
1225
+ "evidence": [
1226
+ {
1227
+ "sourceOrigin": "photivra",
1228
+ "sourceReference": "test:no-psf",
1229
+ "reuseStatus": "photivra-owned"
1230
+ }
1231
+ ],
1232
+ "limitation": "Point optics only; no lens blur."
1233
+ }
1234
+ },
1235
+ "readout": {
1236
+ "samplingProfile": {
1237
+ "schemaVersion": "0.1.0",
1238
+ "profileId": "charge-test",
1239
+ "completenessProfileId": "complete-test",
1240
+ "scientificStatus": "approximation",
1241
+ "photoShotNoiseModel": "poisson",
1242
+ "darkShotNoiseModel": "poisson",
1243
+ "additionalComponentPolicies": [],
1244
+ "evidence": [
1245
+ {
1246
+ "sourceOrigin": "photivra",
1247
+ "sourceReference": "synthetic-frame-test",
1248
+ "reuseStatus": "photivra-owned"
1249
+ }
1250
+ ],
1251
+ "limitations": [
1252
+ "Owned fixture sampling."
1253
+ ]
1254
+ },
1255
+ "capacityProfile": {
1256
+ "schemaVersion": "0.1.0",
1257
+ "profileId": "capacity-test",
1258
+ "colorSamplingProfileId": "photivra-generic-bayer",
1259
+ "channelId": "red",
1260
+ "capacityMeaning": "physical-charge-storage-capacity-electrons",
1261
+ "capacityElectrons": 1000,
1262
+ "scientificStatus": "approximation",
1263
+ "uncertainty": {
1264
+ "kind": "not-quantified",
1265
+ "limitation": "Synthetic fixture only."
1266
+ },
1267
+ "evidence": [
1268
+ {
1269
+ "sourceOrigin": "photivra",
1270
+ "sourceReference": "synthetic-frame-test",
1271
+ "reuseStatus": "photivra-owned"
1272
+ }
1273
+ ],
1274
+ "siteApplicability": {
1275
+ "kind": "exact-site",
1276
+ "site": {
1277
+ "x": 0,
1278
+ "y": 0
1279
+ }
1280
+ },
1281
+ "operatingState": {
1282
+ "stateId": "state-test",
1283
+ "evidence": [
1284
+ {
1285
+ "sourceOrigin": "photivra",
1286
+ "sourceReference": "synthetic-frame-test",
1287
+ "reuseStatus": "photivra-owned"
1288
+ }
1289
+ ]
1290
+ },
1291
+ "temperatureApplicability": {
1292
+ "kind": "exact-reference-temperature",
1293
+ "temperatureC": 20
1294
+ }
1295
+ },
1296
+ "operatingStateId": "state-test",
1297
+ "readoutProfile": {
1298
+ "schemaVersion": "0.1.0",
1299
+ "profileId": "photivra-consumer-body:readout",
1300
+ "colorSamplingProfileId": "photivra-generic-bayer",
1301
+ "channelId": "red",
1302
+ "regimes": [
1303
+ {
1304
+ "regimeId": "base",
1305
+ "scientificStatus": "approximation",
1306
+ "systemConversionGainElectronsPerCode": {
1307
+ "value": 1,
1308
+ "evidence": [
1309
+ {
1310
+ "sourceOrigin": "photivra",
1311
+ "sourceReference": "photivra:generic-tier-assets-v1",
1312
+ "reuseStatus": "photivra-owned"
1313
+ }
1314
+ ]
1315
+ },
1316
+ "preAdcSaturationElectronEquivalent": {
1317
+ "value": 20000,
1318
+ "evidence": [
1319
+ {
1320
+ "sourceOrigin": "photivra",
1321
+ "sourceReference": "photivra:generic-tier-assets-v1",
1322
+ "reuseStatus": "photivra-owned"
1323
+ }
1324
+ ]
1325
+ },
1326
+ "readNoiseComponents": [
1327
+ {
1328
+ "componentId": "electronic",
1329
+ "rmsElectrons": {
1330
+ "value": 6,
1331
+ "evidence": [
1332
+ {
1333
+ "sourceOrigin": "photivra",
1334
+ "sourceReference": "photivra:generic-tier-assets-v1",
1335
+ "reuseStatus": "photivra-owned"
1336
+ }
1337
+ ]
1338
+ },
1339
+ "evidence": [
1340
+ {
1341
+ "sourceOrigin": "photivra",
1342
+ "sourceReference": "photivra:generic-tier-assets-v1",
1343
+ "reuseStatus": "photivra-owned"
1344
+ }
1345
+ ]
1346
+ }
1347
+ ],
1348
+ "adc": {
1349
+ "bitDepth": 16,
1350
+ "blackLevelCode": 512,
1351
+ "digitalSaturationCode": 65535,
1352
+ "transfer": "uniform-round-half-up"
1353
+ },
1354
+ "evidence": [
1355
+ {
1356
+ "sourceOrigin": "photivra",
1357
+ "sourceReference": "photivra:generic-tier-assets-v1",
1358
+ "reuseStatus": "photivra-owned"
1359
+ }
1360
+ ],
1361
+ "limitations": [
1362
+ "Synthetic educational design values; no named camera/lens calibration or population ranking."
1363
+ ]
1364
+ },
1365
+ {
1366
+ "regimeId": "high",
1367
+ "scientificStatus": "approximation",
1368
+ "systemConversionGainElectronsPerCode": {
1369
+ "value": 0.25,
1370
+ "evidence": [
1371
+ {
1372
+ "sourceOrigin": "photivra",
1373
+ "sourceReference": "photivra:generic-tier-assets-v1",
1374
+ "reuseStatus": "photivra-owned"
1375
+ }
1376
+ ]
1377
+ },
1378
+ "preAdcSaturationElectronEquivalent": {
1379
+ "value": 12000,
1380
+ "evidence": [
1381
+ {
1382
+ "sourceOrigin": "photivra",
1383
+ "sourceReference": "photivra:generic-tier-assets-v1",
1384
+ "reuseStatus": "photivra-owned"
1385
+ }
1386
+ ]
1387
+ },
1388
+ "readNoiseComponents": [
1389
+ {
1390
+ "componentId": "electronic",
1391
+ "rmsElectrons": {
1392
+ "value": 4.5,
1393
+ "evidence": [
1394
+ {
1395
+ "sourceOrigin": "photivra",
1396
+ "sourceReference": "photivra:generic-tier-assets-v1",
1397
+ "reuseStatus": "photivra-owned"
1398
+ }
1399
+ ]
1400
+ },
1401
+ "evidence": [
1402
+ {
1403
+ "sourceOrigin": "photivra",
1404
+ "sourceReference": "photivra:generic-tier-assets-v1",
1405
+ "reuseStatus": "photivra-owned"
1406
+ }
1407
+ ]
1408
+ }
1409
+ ],
1410
+ "adc": {
1411
+ "bitDepth": 16,
1412
+ "blackLevelCode": 512,
1413
+ "digitalSaturationCode": 65535,
1414
+ "transfer": "uniform-round-half-up"
1415
+ },
1416
+ "evidence": [
1417
+ {
1418
+ "sourceOrigin": "photivra",
1419
+ "sourceReference": "photivra:generic-tier-assets-v1",
1420
+ "reuseStatus": "photivra-owned"
1421
+ }
1422
+ ],
1423
+ "limitations": [
1424
+ "Synthetic educational design values; no named camera/lens calibration or population ranking."
1425
+ ]
1426
+ }
1427
+ ],
1428
+ "regimeSelectionOwnedBy": "explicit-upstream-camera-state-not-inferred-from-iso",
1429
+ "evidence": [
1430
+ {
1431
+ "sourceOrigin": "photivra",
1432
+ "sourceReference": "photivra:generic-tier-assets-v1",
1433
+ "reuseStatus": "photivra-owned"
1434
+ }
1435
+ ]
1436
+ },
1437
+ "regimeId": "base"
1438
+ },
1439
+ "charge": {
1440
+ "completenessProfile": {
1441
+ "schemaVersion": "0.1.0",
1442
+ "profileId": "complete-test",
1443
+ "colorSamplingProfileId": "photivra-generic-bayer",
1444
+ "channelId": "red",
1445
+ "site": {
1446
+ "x": 0,
1447
+ "y": 0
1448
+ },
1449
+ "bindingId": "native-cfa",
1450
+ "timeReference": "first-opening-boundary-phase",
1451
+ "startOffsetSecondsFromOpeningReference": 0,
1452
+ "endOffsetSecondsFromOpeningReference": 0.008,
1453
+ "darkCurrentProfileId": "dark-test",
1454
+ "includedAdditionalComponentIds": [],
1455
+ "coverageMeaning": "all-material-stored-electron-contributors-accounted-for",
1456
+ "scientificStatus": "approximation",
1457
+ "evidence": [
1458
+ {
1459
+ "sourceOrigin": "photivra",
1460
+ "sourceReference": "synthetic-frame-test",
1461
+ "reuseStatus": "photivra-owned"
1462
+ }
1463
+ ],
1464
+ "limitation": "Declared owned fixture expectations, no calibration."
1465
+ }
1466
+ },
1467
+ "operatingTemperatureC": 20,
1468
+ "darkCurrentProfile": {
1469
+ "schemaVersion": "0.1.0",
1470
+ "profileId": "dark-test",
1471
+ "colorSamplingProfileId": "photivra-generic-bayer",
1472
+ "channelId": "red",
1473
+ "scientificStatus": "approximation",
1474
+ "evidence": [
1475
+ {
1476
+ "sourceOrigin": "photivra",
1477
+ "sourceReference": "synthetic-frame-test",
1478
+ "reuseStatus": "photivra-owned"
1479
+ }
1480
+ ],
1481
+ "uncertainty": {
1482
+ "kind": "not-quantified",
1483
+ "limitation": "Synthetic dark fixture."
1484
+ },
1485
+ "chargeMeaning": "pre-compensation-thermally-generated-electrons",
1486
+ "siteApplicability": {
1487
+ "kind": "exact-site",
1488
+ "site": {
1489
+ "x": 0,
1490
+ "y": 0
1491
+ }
1492
+ },
1493
+ "temperatureModel": {
1494
+ "kind": "fixed-reference-temperature",
1495
+ "referenceTemperatureC": 20,
1496
+ "darkCurrentElectronsPerSecond": 4
1497
+ },
1498
+ "darkCurrentCompensationIncluded": false,
1499
+ "spatialDarkCurrentNonuniformityModeled": true
1500
+ }
1501
+ },
1502
+ {
1503
+ "environment": {
1504
+ "temporalIntegrationId": "environment-site-1",
1505
+ "sensor": {
1506
+ "spatialSampling": {
1507
+ "imagingArea": {
1508
+ "widthMm": 36,
1509
+ "heightMm": 24
1510
+ },
1511
+ "samplingApertureProfile": {
1512
+ "schemaVersion": "0.1.0",
1513
+ "profileId": "sampling",
1514
+ "colorSamplingProfileId": "photivra-generic-bayer",
1515
+ "colorSamplingBindingId": "native-cfa",
1516
+ "evidence": [
1517
+ {
1518
+ "sourceOrigin": "photivra",
1519
+ "sourceReference": "test:sampling",
1520
+ "reuseStatus": "photivra-owned"
1521
+ }
1522
+ ],
1523
+ "siteCenterLattice": {
1524
+ "kind": "regular-rectangular-site-center-lattice",
1525
+ "coordinateSystem": "native-sensor-physical",
1526
+ "pitchXMicrometers": 18000,
1527
+ "pitchYMicrometers": 12000,
1528
+ "firstSiteCenterFromImagingAreaTopLeftMicrometers": {
1529
+ "x": 9000,
1530
+ "y": 6000
1531
+ },
1532
+ "evidence": [
1533
+ {
1534
+ "sourceOrigin": "photivra",
1535
+ "sourceReference": "test:lattice",
1536
+ "reuseStatus": "photivra-owned"
1537
+ }
1538
+ ]
1539
+ },
1540
+ "geometricSensitiveAperture": {
1541
+ "kind": "uniform-axis-aligned-rectangle",
1542
+ "widthMicrometers": 800,
1543
+ "heightMicrometers": 600,
1544
+ "centerOffsetFromSiteCenterMicrometers": {
1545
+ "x": 0,
1546
+ "y": 0
1547
+ },
1548
+ "evidence": [
1549
+ {
1550
+ "sourceOrigin": "photivra",
1551
+ "sourceReference": "test:aperture",
1552
+ "reuseStatus": "photivra-owned"
1553
+ }
1554
+ ]
1555
+ }
1556
+ },
1557
+ "opticalStackProfile": {
1558
+ "schemaVersion": "0.1.0",
1559
+ "profileId": "absent-aa",
1560
+ "evidence": [
1561
+ {
1562
+ "sourceOrigin": "photivra",
1563
+ "sourceReference": "test:stack",
1564
+ "reuseStatus": "photivra-owned"
1565
+ }
1566
+ ],
1567
+ "effectiveAntiAliasingSpatialResponse": {
1568
+ "kind": "absent",
1569
+ "evidence": [
1570
+ {
1571
+ "sourceOrigin": "photivra",
1572
+ "sourceReference": "test:no-aa",
1573
+ "reuseStatus": "photivra-owned"
1574
+ }
1575
+ ]
1576
+ }
1577
+ },
1578
+ "site": {
1579
+ "x": 1,
1580
+ "y": 0
1581
+ },
1582
+ "spatialSampleCountX": 2,
1583
+ "spatialSampleCountY": 2
1584
+ },
1585
+ "spectralSampling": {
1586
+ "channelId": "green",
1587
+ "wavelengthBasis": "vacuum",
1588
+ "wavelengthRangeNanometers": {
1589
+ "minimum": 540,
1590
+ "maximum": 560
1591
+ },
1592
+ "maximumSubintervalWidthNanometers": 20
1593
+ },
1594
+ "colorSamplingProfile": {
1595
+ "schemaVersion": "0.1.0",
1596
+ "profileId": "photivra-generic-bayer",
1597
+ "evidence": [
1598
+ {
1599
+ "sourceOrigin": "photivra",
1600
+ "sourceReference": "synthetic-frame-test",
1601
+ "reuseStatus": "photivra-owned"
1602
+ }
1603
+ ],
1604
+ "coordinateSystem": "native-sensor-color-sampling-site-index",
1605
+ "layout": {
1606
+ "kind": "periodic-mosaic",
1607
+ "repeatWidthSites": 2,
1608
+ "repeatHeightSites": 2,
1609
+ "siteChannelIds": [
1610
+ "red",
1611
+ "green",
1612
+ "green",
1613
+ "blue"
1614
+ ],
1615
+ "anchor": "native-sensor-top-left-site"
1616
+ }
1617
+ },
1618
+ "spectralResponseProfile": {
1619
+ "schemaVersion": "0.1.0",
1620
+ "profileId": "spectral",
1621
+ "colorSamplingProfileId": "photivra-generic-bayer",
1622
+ "evidence": [
1623
+ {
1624
+ "sourceOrigin": "photivra",
1625
+ "sourceReference": "test:response-profile",
1626
+ "reuseStatus": "photivra-owned"
1627
+ }
1628
+ ],
1629
+ "channels": [
1630
+ {
1631
+ "channelId": "green",
1632
+ "scientificStatus": "approximation",
1633
+ "uncertainty": {
1634
+ "kind": "not-quantified",
1635
+ "limitation": "Owned narrow-band test response, not tier calibration."
1636
+ },
1637
+ "evidence": [
1638
+ {
1639
+ "sourceOrigin": "photivra",
1640
+ "sourceReference": "test:response-channel",
1641
+ "reuseStatus": "photivra-owned"
1642
+ }
1643
+ ],
1644
+ "referenceConditions": {
1645
+ "temperatureC": 25,
1646
+ "incidenceAngleDegreesFromNormal": 0,
1647
+ "polarization": "unpolarized"
1648
+ },
1649
+ "conditionDependence": "not-modeled",
1650
+ "kind": "effective-external-quantum-efficiency",
1651
+ "responseScope": "sensor-package-incident-effective-channel-response",
1652
+ "externalQuantumEfficiency": {
1653
+ "wavelengthUnit": "nm",
1654
+ "wavelengthBasis": "vacuum",
1655
+ "interpolation": "piecewise-linear",
1656
+ "outsideRangeBehavior": "fail-closed",
1657
+ "evidence": [
1658
+ {
1659
+ "sourceOrigin": "photivra",
1660
+ "sourceReference": "test:response-curve",
1661
+ "reuseStatus": "photivra-owned"
1662
+ }
1663
+ ],
1664
+ "samples": [
1665
+ {
1666
+ "wavelengthNanometers": 540,
1667
+ "value": 0.4
1668
+ },
1669
+ {
1670
+ "wavelengthNanometers": 560,
1671
+ "value": 0.4
1672
+ }
1673
+ ]
1674
+ }
1675
+ }
1676
+ ]
1677
+ },
1678
+ "responseApplication": {
1679
+ "applicationProfile": {
1680
+ "schemaVersion": "0.1.0",
1681
+ "profileId": "application",
1682
+ "spectralResponseProfileId": "spectral",
1683
+ "colorSamplingProfileId": "photivra-generic-bayer",
1684
+ "channelId": "green",
1685
+ "samplingApertureProfileId": "sampling",
1686
+ "opticalStackProfileId": "absent-aa",
1687
+ "evidence": [
1688
+ {
1689
+ "sourceOrigin": "photivra",
1690
+ "sourceReference": "test:application",
1691
+ "reuseStatus": "photivra-owned"
1692
+ }
1693
+ ],
1694
+ "incidentAreaBasis": {
1695
+ "kind": "geometric-sensitive-aperture",
1696
+ "areaSquareMicrometers": 480000
1697
+ },
1698
+ "spatialResponseModel": {
1699
+ "kind": "uniform-over-geometric-sensitive-aperture",
1700
+ "scientificStatus": "approximation",
1701
+ "evidence": [
1702
+ {
1703
+ "sourceOrigin": "photivra",
1704
+ "sourceReference": "synthetic-frame-test",
1705
+ "reuseStatus": "photivra-owned"
1706
+ }
1707
+ ],
1708
+ "limitation": "Owned synthetic response for integration, not measured tier calibration."
1709
+ },
1710
+ "referenceConditionPolicy": {
1711
+ "kind": "exact-match-required"
1712
+ }
1713
+ },
1714
+ "sourcePlane": {
1715
+ "value": "sensor-package-incident",
1716
+ "evidence": [
1717
+ {
1718
+ "sourceOrigin": "photivra",
1719
+ "sourceReference": "test:plane",
1720
+ "reuseStatus": "photivra-owned"
1721
+ }
1722
+ ]
1723
+ },
1724
+ "operatingConditions": {
1725
+ "temperatureC": 25,
1726
+ "incidenceAngleDegreesFromNormal": 0,
1727
+ "polarization": "unpolarized"
1728
+ }
1729
+ },
1730
+ "operatingRangeProfile": {
1731
+ "schemaVersion": "0.1.0",
1732
+ "profileId": "linearity",
1733
+ "responseApplicationProfileId": "application",
1734
+ "spectralResponseProfileId": "spectral",
1735
+ "colorSamplingProfileId": "photivra-generic-bayer",
1736
+ "channelId": "green",
1737
+ "scientificStatus": "approximation",
1738
+ "uncertainty": {
1739
+ "kind": "not-quantified",
1740
+ "limitation": "Owned synthetic response for integration, not measured tier calibration."
1741
+ },
1742
+ "evidence": [
1743
+ {
1744
+ "sourceOrigin": "photivra",
1745
+ "sourceReference": "test:linearity",
1746
+ "reuseStatus": "photivra-owned"
1747
+ }
1748
+ ],
1749
+ "inputRange": {
1750
+ "kind": "wavelength-integrated-geometric-aperture-radiant-power",
1751
+ "unit": "W",
1752
+ "minimumInclusive": 0,
1753
+ "maximumInclusive": 0.001
1754
+ },
1755
+ "wavelengthApplicability": {
1756
+ "wavelengthBasis": "vacuum",
1757
+ "minimumNanometers": 380,
1758
+ "maximumNanometers": 720,
1759
+ "containment": "requested-range-must-be-contained"
1760
+ },
1761
+ "linearityCriterion": {
1762
+ "maximumAbsoluteRelativeDeviation": 0.01
1763
+ },
1764
+ "spatialLinearityModel": {
1765
+ "kind": "linear-superposition-over-geometric-aperture",
1766
+ "scientificStatus": "approximation",
1767
+ "evidence": [
1768
+ {
1769
+ "sourceOrigin": "photivra",
1770
+ "sourceReference": "synthetic-frame-test",
1771
+ "reuseStatus": "photivra-owned"
1772
+ }
1773
+ ],
1774
+ "limitation": "Owned synthetic response for integration, not measured tier calibration."
1775
+ },
1776
+ "spectralInputModel": {
1777
+ "kind": "per-spectral-bin",
1778
+ "maximumBinWidthNanometers": 20,
1779
+ "scientificStatus": "approximation",
1780
+ "evidence": [
1781
+ {
1782
+ "sourceOrigin": "photivra",
1783
+ "sourceReference": "synthetic-frame-test",
1784
+ "reuseStatus": "photivra-owned"
1785
+ }
1786
+ ],
1787
+ "limitation": "Owned synthetic response for integration, not measured tier calibration."
1788
+ },
1789
+ "referenceConditions": {
1790
+ "temperatureC": 25,
1791
+ "incidenceAngleDegreesFromNormal": 0,
1792
+ "polarization": "unpolarized"
1793
+ },
1794
+ "referenceConditionPolicy": {
1795
+ "kind": "exact-match-required"
1796
+ }
1797
+ },
1798
+ "localExposure": {
1799
+ "bindingProfile": {
1800
+ "schemaVersion": "0.1.0",
1801
+ "bindingId": "native-cfa",
1802
+ "colorSamplingProfileId": "photivra-generic-bayer",
1803
+ "nativeRaster": {
1804
+ "pixelWidth": 2,
1805
+ "pixelHeight": 2
1806
+ },
1807
+ "evidence": [
1808
+ {
1809
+ "sourceOrigin": "photivra",
1810
+ "sourceReference": "synthetic-frame-test",
1811
+ "reuseStatus": "photivra-owned"
1812
+ }
1813
+ ],
1814
+ "relationship": {
1815
+ "kind": "regular-native-effective-sample-blocks",
1816
+ "sitesPerNativeSampleX": 1,
1817
+ "sitesPerNativeSampleY": 1,
1818
+ "anchor": "shared-native-top-left"
1819
+ }
1820
+ },
1821
+ "exposureWindowInput": {
1822
+ "shutterMechanism": "electronic",
1823
+ "nominalExposureDurationSeconds": {
1824
+ "value": 0.008,
1825
+ "unit": "s",
1826
+ "evidence": [
1827
+ {
1828
+ "sourceOrigin": "photivra",
1829
+ "sourceReference": "synthetic-frame-test",
1830
+ "reuseStatus": "photivra-owned"
1831
+ }
1832
+ ]
1833
+ },
1834
+ "opening": {
1835
+ "kind": "simultaneous"
1836
+ },
1837
+ "closing": {
1838
+ "kind": "simultaneous"
1839
+ },
1840
+ "nativeRaster": {
1841
+ "pixelWidth": 2,
1842
+ "pixelHeight": 2
1843
+ }
1844
+ }
1845
+ }
1846
+ },
1847
+ "sceneBindings": {
1848
+ "illuminationProfile": {
1849
+ "schemaVersion": "0.1.0",
1850
+ "profileId": "lights",
1851
+ "sceneId": "room",
1852
+ "evidence": [
1853
+ {
1854
+ "sourceOrigin": "photivra",
1855
+ "sourceReference": "test:lights",
1856
+ "reuseStatus": "photivra-owned"
1857
+ }
1858
+ ],
1859
+ "sources": [
1860
+ {
1861
+ "sourceId": "sky",
1862
+ "family": "environment",
1863
+ "enabled": true,
1864
+ "geometry": {
1865
+ "kind": "environment"
1866
+ },
1867
+ "magnitude": {
1868
+ "kind": "relative-linear-scale",
1869
+ "scale": 1,
1870
+ "scientificStatus": "approximation",
1871
+ "limitation": "Owned synthetic scene declaration."
1872
+ },
1873
+ "spectrum": {
1874
+ "kind": "unresolved",
1875
+ "limitation": "Numeric provider radiance is separately declared."
1876
+ },
1877
+ "temporalBehavior": {
1878
+ "kind": "time-invariant"
1879
+ },
1880
+ "evidence": [
1881
+ {
1882
+ "sourceOrigin": "photivra",
1883
+ "sourceReference": "test:sky",
1884
+ "reuseStatus": "photivra-owned"
1885
+ }
1886
+ ]
1887
+ }
1888
+ ],
1889
+ "sceneRadianceCalculated": false,
1890
+ "materialResponseApplied": false,
1891
+ "visibilityEvaluated": false,
1892
+ "indirectTransportEvaluated": false,
1893
+ "fluorescenceModeled": false,
1894
+ "volumetricTransportModeled": false,
1895
+ "polarizationModeled": false
1896
+ },
1897
+ "materialResponseProfile": {
1898
+ "schemaVersion": "0.1.0",
1899
+ "profileId": "materials",
1900
+ "sceneId": "room",
1901
+ "evidence": [
1902
+ {
1903
+ "sourceOrigin": "photivra",
1904
+ "sourceReference": "test:materials",
1905
+ "reuseStatus": "photivra-owned"
1906
+ }
1907
+ ],
1908
+ "materials": [
1909
+ {
1910
+ "materialResponseId": "surface",
1911
+ "evidence": [
1912
+ {
1913
+ "sourceOrigin": "photivra",
1914
+ "sourceReference": "test:surface",
1915
+ "reuseStatus": "photivra-owned"
1916
+ }
1917
+ ],
1918
+ "representation": {
1919
+ "kind": "spectral-wavelength-preserving-data",
1920
+ "dataArtifact": {
1921
+ "id": "owned-spectrum",
1922
+ "checksumSha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
1923
+ },
1924
+ "wavelengthBasis": "vacuum",
1925
+ "wavelengthRangeNanometers": {
1926
+ "minimum": 400,
1927
+ "maximum": 500
1928
+ },
1929
+ "scatteringModel": "provider-defined-wavelength-preserving",
1930
+ "scientificStatus": "approximation",
1931
+ "uncertainty": {
1932
+ "kind": "not-quantified",
1933
+ "limitation": "Synthetic provider metadata only."
1934
+ },
1935
+ "wavelengthChangingBehaviorModeled": false,
1936
+ "emissionModeled": false
1937
+ }
1938
+ }
1939
+ ],
1940
+ "fluorescenceModeled": false,
1941
+ "volumetricMaterialTransportModeled": false,
1942
+ "polarizationModeled": false
1943
+ },
1944
+ "providerProfile": {
1945
+ "schemaVersion": "0.1.0",
1946
+ "profileId": "provider",
1947
+ "sceneId": "room",
1948
+ "illuminationProfileId": "lights",
1949
+ "materialResponseProfileId": "materials",
1950
+ "outputQuantity": "outgoing-spectral-radiance",
1951
+ "outputUnit": "W/m^2/sr/nm",
1952
+ "scientificStatus": "approximation",
1953
+ "uncertainty": {
1954
+ "kind": "not-quantified",
1955
+ "limitation": "Synthetic field."
1956
+ },
1957
+ "fidelity": {
1958
+ "spectral": "wavelength-resolved",
1959
+ "material": "spectral-data",
1960
+ "visibility": "resolved",
1961
+ "directTransport": "approximation",
1962
+ "indirectTransport": "not-modeled"
1963
+ },
1964
+ "wavelengthChangingTransportModeled": false,
1965
+ "volumetricTransportModeled": false,
1966
+ "polarizationModeled": false,
1967
+ "evidence": [
1968
+ {
1969
+ "sourceOrigin": "photivra",
1970
+ "sourceReference": "test:provider",
1971
+ "reuseStatus": "photivra-owned"
1972
+ }
1973
+ ],
1974
+ "limitations": [
1975
+ "Owned fixture declarations."
1976
+ ],
1977
+ "illuminationTemporalProfileId": "time-lights"
1978
+ },
1979
+ "illuminationTemporalProfile": {
1980
+ "schemaVersion": "0.1.0",
1981
+ "profileId": "time-lights",
1982
+ "sceneId": "room",
1983
+ "illuminationProfileId": "lights",
1984
+ "evidence": [
1985
+ {
1986
+ "sourceOrigin": "photivra",
1987
+ "sourceReference": "test:time-lights",
1988
+ "reuseStatus": "photivra-owned"
1989
+ }
1990
+ ],
1991
+ "waveforms": [
1992
+ {
1993
+ "kind": "aperiodic-relative-multiplier",
1994
+ "waveformId": "ramp",
1995
+ "timeUnit": "s",
1996
+ "scientificStatus": "approximation",
1997
+ "uncertainty": {
1998
+ "kind": "not-quantified",
1999
+ "limitation": "Synthetic linear light ramp."
2000
+ },
2001
+ "evidence": [
2002
+ {
2003
+ "sourceOrigin": "photivra",
2004
+ "sourceReference": "test:ramp",
2005
+ "reuseStatus": "photivra-owned"
2006
+ }
2007
+ ],
2008
+ "interpolation": "piecewise-linear",
2009
+ "samples": [
2010
+ {
2011
+ "timeSecondsFromWaveformReference": 0,
2012
+ "relativeMagnitudeMultiplier": 1
2013
+ },
2014
+ {
2015
+ "timeSecondsFromWaveformReference": 1,
2016
+ "relativeMagnitudeMultiplier": 201
2017
+ }
2018
+ ],
2019
+ "outsideSupportBehavior": "zero"
2020
+ }
2021
+ ],
2022
+ "sourceBindings": [
2023
+ {
2024
+ "bindingId": "sky-time",
2025
+ "sourceId": "sky",
2026
+ "waveformId": "ramp",
2027
+ "captureTimeReference": "first-opening-boundary-phase",
2028
+ "waveformTimeZeroSecondsFromCaptureReference": 0,
2029
+ "scientificStatus": "approximation",
2030
+ "timingUncertainty": {
2031
+ "kind": "not-quantified",
2032
+ "limitation": "Owned exact synthetic clock."
2033
+ },
2034
+ "evidence": [
2035
+ {
2036
+ "sourceOrigin": "photivra",
2037
+ "sourceReference": "test:sky-time",
2038
+ "reuseStatus": "photivra-owned"
2039
+ }
2040
+ ]
2041
+ }
2042
+ ],
2043
+ "baseIlluminationProfileRemainsAuthoritative": true,
2044
+ "sensorReadoutTimingUsedAsExposureTiming": false,
2045
+ "automaticExposurePolicyIncluded": false
2046
+ }
2047
+ },
2048
+ "optics": {
2049
+ "profile": {
2050
+ "schemaVersion": "0.1.0",
2051
+ "profileId": "photivra-consumer-prime:transmission:production-fixture",
2052
+ "profileVersion": "1",
2053
+ "lensProfileId": "photivra-consumer-prime:exposure",
2054
+ "scientificStatus": "approximation",
2055
+ "applicability": {
2056
+ "focalLengthMm": {
2057
+ "minimum": 50,
2058
+ "maximum": 50
2059
+ },
2060
+ "nominalFNumber": {
2061
+ "minimum": 4,
2062
+ "maximum": 4
2063
+ },
2064
+ "focus": {
2065
+ "kind": "finite-distance-range",
2066
+ "objectDistanceM": {
2067
+ "minimum": 5,
2068
+ "maximum": 5
2069
+ }
2070
+ }
2071
+ },
2072
+ "transmission": {
2073
+ "kind": "spectral-transmission",
2074
+ "scientificStatus": "approximation",
2075
+ "wavelengthBasis": "vacuum",
2076
+ "samples": {
2077
+ "value": [
2078
+ {
2079
+ "wavelengthNanometers": 540,
2080
+ "linearTransmissionFactor": 0.75
2081
+ },
2082
+ {
2083
+ "wavelengthNanometers": 560,
2084
+ "linearTransmissionFactor": 0.75
2085
+ }
2086
+ ],
2087
+ "evidence": [
2088
+ {
2089
+ "sourceOrigin": "photivra",
2090
+ "sourceReference": "photivra:generic-tier-assets-v1",
2091
+ "reuseStatus": "photivra-owned"
2092
+ }
2093
+ ]
2094
+ },
2095
+ "uncertainty": {
2096
+ "kind": "not-quantified",
2097
+ "limitation": "Synthetic flat narrow-band reference."
2098
+ }
2099
+ },
2100
+ "distortionAreaMappingOwnership": "not-applied-by-bridge",
2101
+ "psfRedistributionOwnership": "downstream-normalized-energy-redistribution",
2102
+ "sensorOpticalStackIncluded": false,
2103
+ "strayLightIncluded": false,
2104
+ "polarizationModeled": false,
2105
+ "wavelengthChangingBehaviorModeled": false,
2106
+ "volumetricScatteringModeled": false,
2107
+ "evidence": [
2108
+ {
2109
+ "sourceOrigin": "photivra",
2110
+ "sourceReference": "photivra:generic-tier-assets-v1",
2111
+ "reuseStatus": "photivra-owned"
2112
+ }
2113
+ ],
2114
+ "limitations": [
2115
+ "Synthetic educational design values; no named camera/lens calibration or population ranking.",
2116
+ "Optical reference response is limited to 50 mm, f/4, focus 5 m and explicit field/defocus/wavelength slices; capabilities do not authorize extrapolation.",
2117
+ "The initial prime has no OIS; body stabilization is separate."
2118
+ ]
2119
+ },
2120
+ "focalLengthMm": 50,
2121
+ "nominalFNumber": 4,
2122
+ "focus": {
2123
+ "kind": "ideal-symmetric-thin-lens",
2124
+ "objectDistanceM": 5,
2125
+ "pupilMagnificationAssumption": "unity"
2126
+ }
2127
+ },
2128
+ "motion": {
2129
+ "angularVelocityRadPerSec": {
2130
+ "pitch": 0,
2131
+ "yaw": 0,
2132
+ "roll": 0
2133
+ },
2134
+ "timeReference": "first-opening-boundary-phase",
2135
+ "environmentDirectionConvention": "outgoing-radiance-toward-camera"
2136
+ },
2137
+ "temporalSampleCount": 2,
2138
+ "fieldThroughput": {
2139
+ "kind": "unity",
2140
+ "evidence": [
2141
+ {
2142
+ "sourceOrigin": "photivra",
2143
+ "sourceReference": "test:unity",
2144
+ "reuseStatus": "photivra-owned"
2145
+ }
2146
+ ],
2147
+ "limitation": "Declared unity field throughput."
2148
+ },
2149
+ "psf": {
2150
+ "kind": "not-applied",
2151
+ "evidence": [
2152
+ {
2153
+ "sourceOrigin": "photivra",
2154
+ "sourceReference": "test:no-psf",
2155
+ "reuseStatus": "photivra-owned"
2156
+ }
2157
+ ],
2158
+ "limitation": "Point optics only; no lens blur."
2159
+ }
2160
+ },
2161
+ "readout": {
2162
+ "samplingProfile": {
2163
+ "schemaVersion": "0.1.0",
2164
+ "profileId": "charge-test",
2165
+ "completenessProfileId": "complete-test",
2166
+ "scientificStatus": "approximation",
2167
+ "photoShotNoiseModel": "poisson",
2168
+ "darkShotNoiseModel": "poisson",
2169
+ "additionalComponentPolicies": [],
2170
+ "evidence": [
2171
+ {
2172
+ "sourceOrigin": "photivra",
2173
+ "sourceReference": "synthetic-frame-test",
2174
+ "reuseStatus": "photivra-owned"
2175
+ }
2176
+ ],
2177
+ "limitations": [
2178
+ "Owned fixture sampling."
2179
+ ]
2180
+ },
2181
+ "capacityProfile": {
2182
+ "schemaVersion": "0.1.0",
2183
+ "profileId": "capacity-test",
2184
+ "colorSamplingProfileId": "photivra-generic-bayer",
2185
+ "channelId": "green",
2186
+ "capacityMeaning": "physical-charge-storage-capacity-electrons",
2187
+ "capacityElectrons": 1000,
2188
+ "scientificStatus": "approximation",
2189
+ "uncertainty": {
2190
+ "kind": "not-quantified",
2191
+ "limitation": "Synthetic fixture only."
2192
+ },
2193
+ "evidence": [
2194
+ {
2195
+ "sourceOrigin": "photivra",
2196
+ "sourceReference": "synthetic-frame-test",
2197
+ "reuseStatus": "photivra-owned"
2198
+ }
2199
+ ],
2200
+ "siteApplicability": {
2201
+ "kind": "exact-site",
2202
+ "site": {
2203
+ "x": 1,
2204
+ "y": 0
2205
+ }
2206
+ },
2207
+ "operatingState": {
2208
+ "stateId": "state-test",
2209
+ "evidence": [
2210
+ {
2211
+ "sourceOrigin": "photivra",
2212
+ "sourceReference": "synthetic-frame-test",
2213
+ "reuseStatus": "photivra-owned"
2214
+ }
2215
+ ]
2216
+ },
2217
+ "temperatureApplicability": {
2218
+ "kind": "exact-reference-temperature",
2219
+ "temperatureC": 20
2220
+ }
2221
+ },
2222
+ "operatingStateId": "state-test",
2223
+ "readoutProfile": {
2224
+ "schemaVersion": "0.1.0",
2225
+ "profileId": "photivra-consumer-body:readout",
2226
+ "colorSamplingProfileId": "photivra-generic-bayer",
2227
+ "channelId": "green",
2228
+ "regimes": [
2229
+ {
2230
+ "regimeId": "base",
2231
+ "scientificStatus": "approximation",
2232
+ "systemConversionGainElectronsPerCode": {
2233
+ "value": 1,
2234
+ "evidence": [
2235
+ {
2236
+ "sourceOrigin": "photivra",
2237
+ "sourceReference": "photivra:generic-tier-assets-v1",
2238
+ "reuseStatus": "photivra-owned"
2239
+ }
2240
+ ]
2241
+ },
2242
+ "preAdcSaturationElectronEquivalent": {
2243
+ "value": 20000,
2244
+ "evidence": [
2245
+ {
2246
+ "sourceOrigin": "photivra",
2247
+ "sourceReference": "photivra:generic-tier-assets-v1",
2248
+ "reuseStatus": "photivra-owned"
2249
+ }
2250
+ ]
2251
+ },
2252
+ "readNoiseComponents": [
2253
+ {
2254
+ "componentId": "electronic",
2255
+ "rmsElectrons": {
2256
+ "value": 6,
2257
+ "evidence": [
2258
+ {
2259
+ "sourceOrigin": "photivra",
2260
+ "sourceReference": "photivra:generic-tier-assets-v1",
2261
+ "reuseStatus": "photivra-owned"
2262
+ }
2263
+ ]
2264
+ },
2265
+ "evidence": [
2266
+ {
2267
+ "sourceOrigin": "photivra",
2268
+ "sourceReference": "photivra:generic-tier-assets-v1",
2269
+ "reuseStatus": "photivra-owned"
2270
+ }
2271
+ ]
2272
+ }
2273
+ ],
2274
+ "adc": {
2275
+ "bitDepth": 16,
2276
+ "blackLevelCode": 512,
2277
+ "digitalSaturationCode": 65535,
2278
+ "transfer": "uniform-round-half-up"
2279
+ },
2280
+ "evidence": [
2281
+ {
2282
+ "sourceOrigin": "photivra",
2283
+ "sourceReference": "photivra:generic-tier-assets-v1",
2284
+ "reuseStatus": "photivra-owned"
2285
+ }
2286
+ ],
2287
+ "limitations": [
2288
+ "Synthetic educational design values; no named camera/lens calibration or population ranking."
2289
+ ]
2290
+ },
2291
+ {
2292
+ "regimeId": "high",
2293
+ "scientificStatus": "approximation",
2294
+ "systemConversionGainElectronsPerCode": {
2295
+ "value": 0.25,
2296
+ "evidence": [
2297
+ {
2298
+ "sourceOrigin": "photivra",
2299
+ "sourceReference": "photivra:generic-tier-assets-v1",
2300
+ "reuseStatus": "photivra-owned"
2301
+ }
2302
+ ]
2303
+ },
2304
+ "preAdcSaturationElectronEquivalent": {
2305
+ "value": 12000,
2306
+ "evidence": [
2307
+ {
2308
+ "sourceOrigin": "photivra",
2309
+ "sourceReference": "photivra:generic-tier-assets-v1",
2310
+ "reuseStatus": "photivra-owned"
2311
+ }
2312
+ ]
2313
+ },
2314
+ "readNoiseComponents": [
2315
+ {
2316
+ "componentId": "electronic",
2317
+ "rmsElectrons": {
2318
+ "value": 4.5,
2319
+ "evidence": [
2320
+ {
2321
+ "sourceOrigin": "photivra",
2322
+ "sourceReference": "photivra:generic-tier-assets-v1",
2323
+ "reuseStatus": "photivra-owned"
2324
+ }
2325
+ ]
2326
+ },
2327
+ "evidence": [
2328
+ {
2329
+ "sourceOrigin": "photivra",
2330
+ "sourceReference": "photivra:generic-tier-assets-v1",
2331
+ "reuseStatus": "photivra-owned"
2332
+ }
2333
+ ]
2334
+ }
2335
+ ],
2336
+ "adc": {
2337
+ "bitDepth": 16,
2338
+ "blackLevelCode": 512,
2339
+ "digitalSaturationCode": 65535,
2340
+ "transfer": "uniform-round-half-up"
2341
+ },
2342
+ "evidence": [
2343
+ {
2344
+ "sourceOrigin": "photivra",
2345
+ "sourceReference": "photivra:generic-tier-assets-v1",
2346
+ "reuseStatus": "photivra-owned"
2347
+ }
2348
+ ],
2349
+ "limitations": [
2350
+ "Synthetic educational design values; no named camera/lens calibration or population ranking."
2351
+ ]
2352
+ }
2353
+ ],
2354
+ "regimeSelectionOwnedBy": "explicit-upstream-camera-state-not-inferred-from-iso",
2355
+ "evidence": [
2356
+ {
2357
+ "sourceOrigin": "photivra",
2358
+ "sourceReference": "photivra:generic-tier-assets-v1",
2359
+ "reuseStatus": "photivra-owned"
2360
+ }
2361
+ ]
2362
+ },
2363
+ "regimeId": "base"
2364
+ },
2365
+ "charge": {
2366
+ "completenessProfile": {
2367
+ "schemaVersion": "0.1.0",
2368
+ "profileId": "complete-test",
2369
+ "colorSamplingProfileId": "photivra-generic-bayer",
2370
+ "channelId": "green",
2371
+ "site": {
2372
+ "x": 1,
2373
+ "y": 0
2374
+ },
2375
+ "bindingId": "native-cfa",
2376
+ "timeReference": "first-opening-boundary-phase",
2377
+ "startOffsetSecondsFromOpeningReference": 0,
2378
+ "endOffsetSecondsFromOpeningReference": 0.008,
2379
+ "darkCurrentProfileId": "dark-test",
2380
+ "includedAdditionalComponentIds": [],
2381
+ "coverageMeaning": "all-material-stored-electron-contributors-accounted-for",
2382
+ "scientificStatus": "approximation",
2383
+ "evidence": [
2384
+ {
2385
+ "sourceOrigin": "photivra",
2386
+ "sourceReference": "synthetic-frame-test",
2387
+ "reuseStatus": "photivra-owned"
2388
+ }
2389
+ ],
2390
+ "limitation": "Declared owned fixture expectations, no calibration."
2391
+ }
2392
+ },
2393
+ "operatingTemperatureC": 20,
2394
+ "darkCurrentProfile": {
2395
+ "schemaVersion": "0.1.0",
2396
+ "profileId": "dark-test",
2397
+ "colorSamplingProfileId": "photivra-generic-bayer",
2398
+ "channelId": "green",
2399
+ "scientificStatus": "approximation",
2400
+ "evidence": [
2401
+ {
2402
+ "sourceOrigin": "photivra",
2403
+ "sourceReference": "synthetic-frame-test",
2404
+ "reuseStatus": "photivra-owned"
2405
+ }
2406
+ ],
2407
+ "uncertainty": {
2408
+ "kind": "not-quantified",
2409
+ "limitation": "Synthetic dark fixture."
2410
+ },
2411
+ "chargeMeaning": "pre-compensation-thermally-generated-electrons",
2412
+ "siteApplicability": {
2413
+ "kind": "exact-site",
2414
+ "site": {
2415
+ "x": 1,
2416
+ "y": 0
2417
+ }
2418
+ },
2419
+ "temperatureModel": {
2420
+ "kind": "fixed-reference-temperature",
2421
+ "referenceTemperatureC": 20,
2422
+ "darkCurrentElectronsPerSecond": 4
2423
+ },
2424
+ "darkCurrentCompensationIncluded": false,
2425
+ "spatialDarkCurrentNonuniformityModeled": true
2426
+ }
2427
+ },
2428
+ {
2429
+ "environment": {
2430
+ "temporalIntegrationId": "environment-site-2",
2431
+ "sensor": {
2432
+ "spatialSampling": {
2433
+ "imagingArea": {
2434
+ "widthMm": 36,
2435
+ "heightMm": 24
2436
+ },
2437
+ "samplingApertureProfile": {
2438
+ "schemaVersion": "0.1.0",
2439
+ "profileId": "sampling",
2440
+ "colorSamplingProfileId": "photivra-generic-bayer",
2441
+ "colorSamplingBindingId": "native-cfa",
2442
+ "evidence": [
2443
+ {
2444
+ "sourceOrigin": "photivra",
2445
+ "sourceReference": "test:sampling",
2446
+ "reuseStatus": "photivra-owned"
2447
+ }
2448
+ ],
2449
+ "siteCenterLattice": {
2450
+ "kind": "regular-rectangular-site-center-lattice",
2451
+ "coordinateSystem": "native-sensor-physical",
2452
+ "pitchXMicrometers": 18000,
2453
+ "pitchYMicrometers": 12000,
2454
+ "firstSiteCenterFromImagingAreaTopLeftMicrometers": {
2455
+ "x": 9000,
2456
+ "y": 6000
2457
+ },
2458
+ "evidence": [
2459
+ {
2460
+ "sourceOrigin": "photivra",
2461
+ "sourceReference": "test:lattice",
2462
+ "reuseStatus": "photivra-owned"
2463
+ }
2464
+ ]
2465
+ },
2466
+ "geometricSensitiveAperture": {
2467
+ "kind": "uniform-axis-aligned-rectangle",
2468
+ "widthMicrometers": 800,
2469
+ "heightMicrometers": 600,
2470
+ "centerOffsetFromSiteCenterMicrometers": {
2471
+ "x": 0,
2472
+ "y": 0
2473
+ },
2474
+ "evidence": [
2475
+ {
2476
+ "sourceOrigin": "photivra",
2477
+ "sourceReference": "test:aperture",
2478
+ "reuseStatus": "photivra-owned"
2479
+ }
2480
+ ]
2481
+ }
2482
+ },
2483
+ "opticalStackProfile": {
2484
+ "schemaVersion": "0.1.0",
2485
+ "profileId": "absent-aa",
2486
+ "evidence": [
2487
+ {
2488
+ "sourceOrigin": "photivra",
2489
+ "sourceReference": "test:stack",
2490
+ "reuseStatus": "photivra-owned"
2491
+ }
2492
+ ],
2493
+ "effectiveAntiAliasingSpatialResponse": {
2494
+ "kind": "absent",
2495
+ "evidence": [
2496
+ {
2497
+ "sourceOrigin": "photivra",
2498
+ "sourceReference": "test:no-aa",
2499
+ "reuseStatus": "photivra-owned"
2500
+ }
2501
+ ]
2502
+ }
2503
+ },
2504
+ "site": {
2505
+ "x": 0,
2506
+ "y": 1
2507
+ },
2508
+ "spatialSampleCountX": 2,
2509
+ "spatialSampleCountY": 2
2510
+ },
2511
+ "spectralSampling": {
2512
+ "channelId": "green",
2513
+ "wavelengthBasis": "vacuum",
2514
+ "wavelengthRangeNanometers": {
2515
+ "minimum": 540,
2516
+ "maximum": 560
2517
+ },
2518
+ "maximumSubintervalWidthNanometers": 20
2519
+ },
2520
+ "colorSamplingProfile": {
2521
+ "schemaVersion": "0.1.0",
2522
+ "profileId": "photivra-generic-bayer",
2523
+ "evidence": [
2524
+ {
2525
+ "sourceOrigin": "photivra",
2526
+ "sourceReference": "synthetic-frame-test",
2527
+ "reuseStatus": "photivra-owned"
2528
+ }
2529
+ ],
2530
+ "coordinateSystem": "native-sensor-color-sampling-site-index",
2531
+ "layout": {
2532
+ "kind": "periodic-mosaic",
2533
+ "repeatWidthSites": 2,
2534
+ "repeatHeightSites": 2,
2535
+ "siteChannelIds": [
2536
+ "red",
2537
+ "green",
2538
+ "green",
2539
+ "blue"
2540
+ ],
2541
+ "anchor": "native-sensor-top-left-site"
2542
+ }
2543
+ },
2544
+ "spectralResponseProfile": {
2545
+ "schemaVersion": "0.1.0",
2546
+ "profileId": "spectral",
2547
+ "colorSamplingProfileId": "photivra-generic-bayer",
2548
+ "evidence": [
2549
+ {
2550
+ "sourceOrigin": "photivra",
2551
+ "sourceReference": "test:response-profile",
2552
+ "reuseStatus": "photivra-owned"
2553
+ }
2554
+ ],
2555
+ "channels": [
2556
+ {
2557
+ "channelId": "green",
2558
+ "scientificStatus": "approximation",
2559
+ "uncertainty": {
2560
+ "kind": "not-quantified",
2561
+ "limitation": "Owned narrow-band test response, not tier calibration."
2562
+ },
2563
+ "evidence": [
2564
+ {
2565
+ "sourceOrigin": "photivra",
2566
+ "sourceReference": "test:response-channel",
2567
+ "reuseStatus": "photivra-owned"
2568
+ }
2569
+ ],
2570
+ "referenceConditions": {
2571
+ "temperatureC": 25,
2572
+ "incidenceAngleDegreesFromNormal": 0,
2573
+ "polarization": "unpolarized"
2574
+ },
2575
+ "conditionDependence": "not-modeled",
2576
+ "kind": "effective-external-quantum-efficiency",
2577
+ "responseScope": "sensor-package-incident-effective-channel-response",
2578
+ "externalQuantumEfficiency": {
2579
+ "wavelengthUnit": "nm",
2580
+ "wavelengthBasis": "vacuum",
2581
+ "interpolation": "piecewise-linear",
2582
+ "outsideRangeBehavior": "fail-closed",
2583
+ "evidence": [
2584
+ {
2585
+ "sourceOrigin": "photivra",
2586
+ "sourceReference": "test:response-curve",
2587
+ "reuseStatus": "photivra-owned"
2588
+ }
2589
+ ],
2590
+ "samples": [
2591
+ {
2592
+ "wavelengthNanometers": 540,
2593
+ "value": 0.4
2594
+ },
2595
+ {
2596
+ "wavelengthNanometers": 560,
2597
+ "value": 0.4
2598
+ }
2599
+ ]
2600
+ }
2601
+ }
2602
+ ]
2603
+ },
2604
+ "responseApplication": {
2605
+ "applicationProfile": {
2606
+ "schemaVersion": "0.1.0",
2607
+ "profileId": "application",
2608
+ "spectralResponseProfileId": "spectral",
2609
+ "colorSamplingProfileId": "photivra-generic-bayer",
2610
+ "channelId": "green",
2611
+ "samplingApertureProfileId": "sampling",
2612
+ "opticalStackProfileId": "absent-aa",
2613
+ "evidence": [
2614
+ {
2615
+ "sourceOrigin": "photivra",
2616
+ "sourceReference": "test:application",
2617
+ "reuseStatus": "photivra-owned"
2618
+ }
2619
+ ],
2620
+ "incidentAreaBasis": {
2621
+ "kind": "geometric-sensitive-aperture",
2622
+ "areaSquareMicrometers": 480000
2623
+ },
2624
+ "spatialResponseModel": {
2625
+ "kind": "uniform-over-geometric-sensitive-aperture",
2626
+ "scientificStatus": "approximation",
2627
+ "evidence": [
2628
+ {
2629
+ "sourceOrigin": "photivra",
2630
+ "sourceReference": "synthetic-frame-test",
2631
+ "reuseStatus": "photivra-owned"
2632
+ }
2633
+ ],
2634
+ "limitation": "Owned synthetic response for integration, not measured tier calibration."
2635
+ },
2636
+ "referenceConditionPolicy": {
2637
+ "kind": "exact-match-required"
2638
+ }
2639
+ },
2640
+ "sourcePlane": {
2641
+ "value": "sensor-package-incident",
2642
+ "evidence": [
2643
+ {
2644
+ "sourceOrigin": "photivra",
2645
+ "sourceReference": "test:plane",
2646
+ "reuseStatus": "photivra-owned"
2647
+ }
2648
+ ]
2649
+ },
2650
+ "operatingConditions": {
2651
+ "temperatureC": 25,
2652
+ "incidenceAngleDegreesFromNormal": 0,
2653
+ "polarization": "unpolarized"
2654
+ }
2655
+ },
2656
+ "operatingRangeProfile": {
2657
+ "schemaVersion": "0.1.0",
2658
+ "profileId": "linearity",
2659
+ "responseApplicationProfileId": "application",
2660
+ "spectralResponseProfileId": "spectral",
2661
+ "colorSamplingProfileId": "photivra-generic-bayer",
2662
+ "channelId": "green",
2663
+ "scientificStatus": "approximation",
2664
+ "uncertainty": {
2665
+ "kind": "not-quantified",
2666
+ "limitation": "Owned synthetic response for integration, not measured tier calibration."
2667
+ },
2668
+ "evidence": [
2669
+ {
2670
+ "sourceOrigin": "photivra",
2671
+ "sourceReference": "test:linearity",
2672
+ "reuseStatus": "photivra-owned"
2673
+ }
2674
+ ],
2675
+ "inputRange": {
2676
+ "kind": "wavelength-integrated-geometric-aperture-radiant-power",
2677
+ "unit": "W",
2678
+ "minimumInclusive": 0,
2679
+ "maximumInclusive": 0.001
2680
+ },
2681
+ "wavelengthApplicability": {
2682
+ "wavelengthBasis": "vacuum",
2683
+ "minimumNanometers": 380,
2684
+ "maximumNanometers": 720,
2685
+ "containment": "requested-range-must-be-contained"
2686
+ },
2687
+ "linearityCriterion": {
2688
+ "maximumAbsoluteRelativeDeviation": 0.01
2689
+ },
2690
+ "spatialLinearityModel": {
2691
+ "kind": "linear-superposition-over-geometric-aperture",
2692
+ "scientificStatus": "approximation",
2693
+ "evidence": [
2694
+ {
2695
+ "sourceOrigin": "photivra",
2696
+ "sourceReference": "synthetic-frame-test",
2697
+ "reuseStatus": "photivra-owned"
2698
+ }
2699
+ ],
2700
+ "limitation": "Owned synthetic response for integration, not measured tier calibration."
2701
+ },
2702
+ "spectralInputModel": {
2703
+ "kind": "per-spectral-bin",
2704
+ "maximumBinWidthNanometers": 20,
2705
+ "scientificStatus": "approximation",
2706
+ "evidence": [
2707
+ {
2708
+ "sourceOrigin": "photivra",
2709
+ "sourceReference": "synthetic-frame-test",
2710
+ "reuseStatus": "photivra-owned"
2711
+ }
2712
+ ],
2713
+ "limitation": "Owned synthetic response for integration, not measured tier calibration."
2714
+ },
2715
+ "referenceConditions": {
2716
+ "temperatureC": 25,
2717
+ "incidenceAngleDegreesFromNormal": 0,
2718
+ "polarization": "unpolarized"
2719
+ },
2720
+ "referenceConditionPolicy": {
2721
+ "kind": "exact-match-required"
2722
+ }
2723
+ },
2724
+ "localExposure": {
2725
+ "bindingProfile": {
2726
+ "schemaVersion": "0.1.0",
2727
+ "bindingId": "native-cfa",
2728
+ "colorSamplingProfileId": "photivra-generic-bayer",
2729
+ "nativeRaster": {
2730
+ "pixelWidth": 2,
2731
+ "pixelHeight": 2
2732
+ },
2733
+ "evidence": [
2734
+ {
2735
+ "sourceOrigin": "photivra",
2736
+ "sourceReference": "synthetic-frame-test",
2737
+ "reuseStatus": "photivra-owned"
2738
+ }
2739
+ ],
2740
+ "relationship": {
2741
+ "kind": "regular-native-effective-sample-blocks",
2742
+ "sitesPerNativeSampleX": 1,
2743
+ "sitesPerNativeSampleY": 1,
2744
+ "anchor": "shared-native-top-left"
2745
+ }
2746
+ },
2747
+ "exposureWindowInput": {
2748
+ "shutterMechanism": "electronic",
2749
+ "nominalExposureDurationSeconds": {
2750
+ "value": 0.008,
2751
+ "unit": "s",
2752
+ "evidence": [
2753
+ {
2754
+ "sourceOrigin": "photivra",
2755
+ "sourceReference": "synthetic-frame-test",
2756
+ "reuseStatus": "photivra-owned"
2757
+ }
2758
+ ]
2759
+ },
2760
+ "opening": {
2761
+ "kind": "simultaneous"
2762
+ },
2763
+ "closing": {
2764
+ "kind": "simultaneous"
2765
+ },
2766
+ "nativeRaster": {
2767
+ "pixelWidth": 2,
2768
+ "pixelHeight": 2
2769
+ }
2770
+ }
2771
+ }
2772
+ },
2773
+ "sceneBindings": {
2774
+ "illuminationProfile": {
2775
+ "schemaVersion": "0.1.0",
2776
+ "profileId": "lights",
2777
+ "sceneId": "room",
2778
+ "evidence": [
2779
+ {
2780
+ "sourceOrigin": "photivra",
2781
+ "sourceReference": "test:lights",
2782
+ "reuseStatus": "photivra-owned"
2783
+ }
2784
+ ],
2785
+ "sources": [
2786
+ {
2787
+ "sourceId": "sky",
2788
+ "family": "environment",
2789
+ "enabled": true,
2790
+ "geometry": {
2791
+ "kind": "environment"
2792
+ },
2793
+ "magnitude": {
2794
+ "kind": "relative-linear-scale",
2795
+ "scale": 1,
2796
+ "scientificStatus": "approximation",
2797
+ "limitation": "Owned synthetic scene declaration."
2798
+ },
2799
+ "spectrum": {
2800
+ "kind": "unresolved",
2801
+ "limitation": "Numeric provider radiance is separately declared."
2802
+ },
2803
+ "temporalBehavior": {
2804
+ "kind": "time-invariant"
2805
+ },
2806
+ "evidence": [
2807
+ {
2808
+ "sourceOrigin": "photivra",
2809
+ "sourceReference": "test:sky",
2810
+ "reuseStatus": "photivra-owned"
2811
+ }
2812
+ ]
2813
+ }
2814
+ ],
2815
+ "sceneRadianceCalculated": false,
2816
+ "materialResponseApplied": false,
2817
+ "visibilityEvaluated": false,
2818
+ "indirectTransportEvaluated": false,
2819
+ "fluorescenceModeled": false,
2820
+ "volumetricTransportModeled": false,
2821
+ "polarizationModeled": false
2822
+ },
2823
+ "materialResponseProfile": {
2824
+ "schemaVersion": "0.1.0",
2825
+ "profileId": "materials",
2826
+ "sceneId": "room",
2827
+ "evidence": [
2828
+ {
2829
+ "sourceOrigin": "photivra",
2830
+ "sourceReference": "test:materials",
2831
+ "reuseStatus": "photivra-owned"
2832
+ }
2833
+ ],
2834
+ "materials": [
2835
+ {
2836
+ "materialResponseId": "surface",
2837
+ "evidence": [
2838
+ {
2839
+ "sourceOrigin": "photivra",
2840
+ "sourceReference": "test:surface",
2841
+ "reuseStatus": "photivra-owned"
2842
+ }
2843
+ ],
2844
+ "representation": {
2845
+ "kind": "spectral-wavelength-preserving-data",
2846
+ "dataArtifact": {
2847
+ "id": "owned-spectrum",
2848
+ "checksumSha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
2849
+ },
2850
+ "wavelengthBasis": "vacuum",
2851
+ "wavelengthRangeNanometers": {
2852
+ "minimum": 400,
2853
+ "maximum": 500
2854
+ },
2855
+ "scatteringModel": "provider-defined-wavelength-preserving",
2856
+ "scientificStatus": "approximation",
2857
+ "uncertainty": {
2858
+ "kind": "not-quantified",
2859
+ "limitation": "Synthetic provider metadata only."
2860
+ },
2861
+ "wavelengthChangingBehaviorModeled": false,
2862
+ "emissionModeled": false
2863
+ }
2864
+ }
2865
+ ],
2866
+ "fluorescenceModeled": false,
2867
+ "volumetricMaterialTransportModeled": false,
2868
+ "polarizationModeled": false
2869
+ },
2870
+ "providerProfile": {
2871
+ "schemaVersion": "0.1.0",
2872
+ "profileId": "provider",
2873
+ "sceneId": "room",
2874
+ "illuminationProfileId": "lights",
2875
+ "materialResponseProfileId": "materials",
2876
+ "outputQuantity": "outgoing-spectral-radiance",
2877
+ "outputUnit": "W/m^2/sr/nm",
2878
+ "scientificStatus": "approximation",
2879
+ "uncertainty": {
2880
+ "kind": "not-quantified",
2881
+ "limitation": "Synthetic field."
2882
+ },
2883
+ "fidelity": {
2884
+ "spectral": "wavelength-resolved",
2885
+ "material": "spectral-data",
2886
+ "visibility": "resolved",
2887
+ "directTransport": "approximation",
2888
+ "indirectTransport": "not-modeled"
2889
+ },
2890
+ "wavelengthChangingTransportModeled": false,
2891
+ "volumetricTransportModeled": false,
2892
+ "polarizationModeled": false,
2893
+ "evidence": [
2894
+ {
2895
+ "sourceOrigin": "photivra",
2896
+ "sourceReference": "test:provider",
2897
+ "reuseStatus": "photivra-owned"
2898
+ }
2899
+ ],
2900
+ "limitations": [
2901
+ "Owned fixture declarations."
2902
+ ],
2903
+ "illuminationTemporalProfileId": "time-lights"
2904
+ },
2905
+ "illuminationTemporalProfile": {
2906
+ "schemaVersion": "0.1.0",
2907
+ "profileId": "time-lights",
2908
+ "sceneId": "room",
2909
+ "illuminationProfileId": "lights",
2910
+ "evidence": [
2911
+ {
2912
+ "sourceOrigin": "photivra",
2913
+ "sourceReference": "test:time-lights",
2914
+ "reuseStatus": "photivra-owned"
2915
+ }
2916
+ ],
2917
+ "waveforms": [
2918
+ {
2919
+ "kind": "aperiodic-relative-multiplier",
2920
+ "waveformId": "ramp",
2921
+ "timeUnit": "s",
2922
+ "scientificStatus": "approximation",
2923
+ "uncertainty": {
2924
+ "kind": "not-quantified",
2925
+ "limitation": "Synthetic linear light ramp."
2926
+ },
2927
+ "evidence": [
2928
+ {
2929
+ "sourceOrigin": "photivra",
2930
+ "sourceReference": "test:ramp",
2931
+ "reuseStatus": "photivra-owned"
2932
+ }
2933
+ ],
2934
+ "interpolation": "piecewise-linear",
2935
+ "samples": [
2936
+ {
2937
+ "timeSecondsFromWaveformReference": 0,
2938
+ "relativeMagnitudeMultiplier": 1
2939
+ },
2940
+ {
2941
+ "timeSecondsFromWaveformReference": 1,
2942
+ "relativeMagnitudeMultiplier": 201
2943
+ }
2944
+ ],
2945
+ "outsideSupportBehavior": "zero"
2946
+ }
2947
+ ],
2948
+ "sourceBindings": [
2949
+ {
2950
+ "bindingId": "sky-time",
2951
+ "sourceId": "sky",
2952
+ "waveformId": "ramp",
2953
+ "captureTimeReference": "first-opening-boundary-phase",
2954
+ "waveformTimeZeroSecondsFromCaptureReference": 0,
2955
+ "scientificStatus": "approximation",
2956
+ "timingUncertainty": {
2957
+ "kind": "not-quantified",
2958
+ "limitation": "Owned exact synthetic clock."
2959
+ },
2960
+ "evidence": [
2961
+ {
2962
+ "sourceOrigin": "photivra",
2963
+ "sourceReference": "test:sky-time",
2964
+ "reuseStatus": "photivra-owned"
2965
+ }
2966
+ ]
2967
+ }
2968
+ ],
2969
+ "baseIlluminationProfileRemainsAuthoritative": true,
2970
+ "sensorReadoutTimingUsedAsExposureTiming": false,
2971
+ "automaticExposurePolicyIncluded": false
2972
+ }
2973
+ },
2974
+ "optics": {
2975
+ "profile": {
2976
+ "schemaVersion": "0.1.0",
2977
+ "profileId": "photivra-consumer-prime:transmission:production-fixture",
2978
+ "profileVersion": "1",
2979
+ "lensProfileId": "photivra-consumer-prime:exposure",
2980
+ "scientificStatus": "approximation",
2981
+ "applicability": {
2982
+ "focalLengthMm": {
2983
+ "minimum": 50,
2984
+ "maximum": 50
2985
+ },
2986
+ "nominalFNumber": {
2987
+ "minimum": 4,
2988
+ "maximum": 4
2989
+ },
2990
+ "focus": {
2991
+ "kind": "finite-distance-range",
2992
+ "objectDistanceM": {
2993
+ "minimum": 5,
2994
+ "maximum": 5
2995
+ }
2996
+ }
2997
+ },
2998
+ "transmission": {
2999
+ "kind": "spectral-transmission",
3000
+ "scientificStatus": "approximation",
3001
+ "wavelengthBasis": "vacuum",
3002
+ "samples": {
3003
+ "value": [
3004
+ {
3005
+ "wavelengthNanometers": 540,
3006
+ "linearTransmissionFactor": 0.75
3007
+ },
3008
+ {
3009
+ "wavelengthNanometers": 560,
3010
+ "linearTransmissionFactor": 0.75
3011
+ }
3012
+ ],
3013
+ "evidence": [
3014
+ {
3015
+ "sourceOrigin": "photivra",
3016
+ "sourceReference": "photivra:generic-tier-assets-v1",
3017
+ "reuseStatus": "photivra-owned"
3018
+ }
3019
+ ]
3020
+ },
3021
+ "uncertainty": {
3022
+ "kind": "not-quantified",
3023
+ "limitation": "Synthetic flat narrow-band reference."
3024
+ }
3025
+ },
3026
+ "distortionAreaMappingOwnership": "not-applied-by-bridge",
3027
+ "psfRedistributionOwnership": "downstream-normalized-energy-redistribution",
3028
+ "sensorOpticalStackIncluded": false,
3029
+ "strayLightIncluded": false,
3030
+ "polarizationModeled": false,
3031
+ "wavelengthChangingBehaviorModeled": false,
3032
+ "volumetricScatteringModeled": false,
3033
+ "evidence": [
3034
+ {
3035
+ "sourceOrigin": "photivra",
3036
+ "sourceReference": "photivra:generic-tier-assets-v1",
3037
+ "reuseStatus": "photivra-owned"
3038
+ }
3039
+ ],
3040
+ "limitations": [
3041
+ "Synthetic educational design values; no named camera/lens calibration or population ranking.",
3042
+ "Optical reference response is limited to 50 mm, f/4, focus 5 m and explicit field/defocus/wavelength slices; capabilities do not authorize extrapolation.",
3043
+ "The initial prime has no OIS; body stabilization is separate."
3044
+ ]
3045
+ },
3046
+ "focalLengthMm": 50,
3047
+ "nominalFNumber": 4,
3048
+ "focus": {
3049
+ "kind": "ideal-symmetric-thin-lens",
3050
+ "objectDistanceM": 5,
3051
+ "pupilMagnificationAssumption": "unity"
3052
+ }
3053
+ },
3054
+ "motion": {
3055
+ "angularVelocityRadPerSec": {
3056
+ "pitch": 0,
3057
+ "yaw": 0,
3058
+ "roll": 0
3059
+ },
3060
+ "timeReference": "first-opening-boundary-phase",
3061
+ "environmentDirectionConvention": "outgoing-radiance-toward-camera"
3062
+ },
3063
+ "temporalSampleCount": 2,
3064
+ "fieldThroughput": {
3065
+ "kind": "unity",
3066
+ "evidence": [
3067
+ {
3068
+ "sourceOrigin": "photivra",
3069
+ "sourceReference": "test:unity",
3070
+ "reuseStatus": "photivra-owned"
3071
+ }
3072
+ ],
3073
+ "limitation": "Declared unity field throughput."
3074
+ },
3075
+ "psf": {
3076
+ "kind": "not-applied",
3077
+ "evidence": [
3078
+ {
3079
+ "sourceOrigin": "photivra",
3080
+ "sourceReference": "test:no-psf",
3081
+ "reuseStatus": "photivra-owned"
3082
+ }
3083
+ ],
3084
+ "limitation": "Point optics only; no lens blur."
3085
+ }
3086
+ },
3087
+ "readout": {
3088
+ "samplingProfile": {
3089
+ "schemaVersion": "0.1.0",
3090
+ "profileId": "charge-test",
3091
+ "completenessProfileId": "complete-test",
3092
+ "scientificStatus": "approximation",
3093
+ "photoShotNoiseModel": "poisson",
3094
+ "darkShotNoiseModel": "poisson",
3095
+ "additionalComponentPolicies": [],
3096
+ "evidence": [
3097
+ {
3098
+ "sourceOrigin": "photivra",
3099
+ "sourceReference": "synthetic-frame-test",
3100
+ "reuseStatus": "photivra-owned"
3101
+ }
3102
+ ],
3103
+ "limitations": [
3104
+ "Owned fixture sampling."
3105
+ ]
3106
+ },
3107
+ "capacityProfile": {
3108
+ "schemaVersion": "0.1.0",
3109
+ "profileId": "capacity-test",
3110
+ "colorSamplingProfileId": "photivra-generic-bayer",
3111
+ "channelId": "green",
3112
+ "capacityMeaning": "physical-charge-storage-capacity-electrons",
3113
+ "capacityElectrons": 1000,
3114
+ "scientificStatus": "approximation",
3115
+ "uncertainty": {
3116
+ "kind": "not-quantified",
3117
+ "limitation": "Synthetic fixture only."
3118
+ },
3119
+ "evidence": [
3120
+ {
3121
+ "sourceOrigin": "photivra",
3122
+ "sourceReference": "synthetic-frame-test",
3123
+ "reuseStatus": "photivra-owned"
3124
+ }
3125
+ ],
3126
+ "siteApplicability": {
3127
+ "kind": "exact-site",
3128
+ "site": {
3129
+ "x": 0,
3130
+ "y": 1
3131
+ }
3132
+ },
3133
+ "operatingState": {
3134
+ "stateId": "state-test",
3135
+ "evidence": [
3136
+ {
3137
+ "sourceOrigin": "photivra",
3138
+ "sourceReference": "synthetic-frame-test",
3139
+ "reuseStatus": "photivra-owned"
3140
+ }
3141
+ ]
3142
+ },
3143
+ "temperatureApplicability": {
3144
+ "kind": "exact-reference-temperature",
3145
+ "temperatureC": 20
3146
+ }
3147
+ },
3148
+ "operatingStateId": "state-test",
3149
+ "readoutProfile": {
3150
+ "schemaVersion": "0.1.0",
3151
+ "profileId": "photivra-consumer-body:readout",
3152
+ "colorSamplingProfileId": "photivra-generic-bayer",
3153
+ "channelId": "green",
3154
+ "regimes": [
3155
+ {
3156
+ "regimeId": "base",
3157
+ "scientificStatus": "approximation",
3158
+ "systemConversionGainElectronsPerCode": {
3159
+ "value": 1,
3160
+ "evidence": [
3161
+ {
3162
+ "sourceOrigin": "photivra",
3163
+ "sourceReference": "photivra:generic-tier-assets-v1",
3164
+ "reuseStatus": "photivra-owned"
3165
+ }
3166
+ ]
3167
+ },
3168
+ "preAdcSaturationElectronEquivalent": {
3169
+ "value": 20000,
3170
+ "evidence": [
3171
+ {
3172
+ "sourceOrigin": "photivra",
3173
+ "sourceReference": "photivra:generic-tier-assets-v1",
3174
+ "reuseStatus": "photivra-owned"
3175
+ }
3176
+ ]
3177
+ },
3178
+ "readNoiseComponents": [
3179
+ {
3180
+ "componentId": "electronic",
3181
+ "rmsElectrons": {
3182
+ "value": 6,
3183
+ "evidence": [
3184
+ {
3185
+ "sourceOrigin": "photivra",
3186
+ "sourceReference": "photivra:generic-tier-assets-v1",
3187
+ "reuseStatus": "photivra-owned"
3188
+ }
3189
+ ]
3190
+ },
3191
+ "evidence": [
3192
+ {
3193
+ "sourceOrigin": "photivra",
3194
+ "sourceReference": "photivra:generic-tier-assets-v1",
3195
+ "reuseStatus": "photivra-owned"
3196
+ }
3197
+ ]
3198
+ }
3199
+ ],
3200
+ "adc": {
3201
+ "bitDepth": 16,
3202
+ "blackLevelCode": 512,
3203
+ "digitalSaturationCode": 65535,
3204
+ "transfer": "uniform-round-half-up"
3205
+ },
3206
+ "evidence": [
3207
+ {
3208
+ "sourceOrigin": "photivra",
3209
+ "sourceReference": "photivra:generic-tier-assets-v1",
3210
+ "reuseStatus": "photivra-owned"
3211
+ }
3212
+ ],
3213
+ "limitations": [
3214
+ "Synthetic educational design values; no named camera/lens calibration or population ranking."
3215
+ ]
3216
+ },
3217
+ {
3218
+ "regimeId": "high",
3219
+ "scientificStatus": "approximation",
3220
+ "systemConversionGainElectronsPerCode": {
3221
+ "value": 0.25,
3222
+ "evidence": [
3223
+ {
3224
+ "sourceOrigin": "photivra",
3225
+ "sourceReference": "photivra:generic-tier-assets-v1",
3226
+ "reuseStatus": "photivra-owned"
3227
+ }
3228
+ ]
3229
+ },
3230
+ "preAdcSaturationElectronEquivalent": {
3231
+ "value": 12000,
3232
+ "evidence": [
3233
+ {
3234
+ "sourceOrigin": "photivra",
3235
+ "sourceReference": "photivra:generic-tier-assets-v1",
3236
+ "reuseStatus": "photivra-owned"
3237
+ }
3238
+ ]
3239
+ },
3240
+ "readNoiseComponents": [
3241
+ {
3242
+ "componentId": "electronic",
3243
+ "rmsElectrons": {
3244
+ "value": 4.5,
3245
+ "evidence": [
3246
+ {
3247
+ "sourceOrigin": "photivra",
3248
+ "sourceReference": "photivra:generic-tier-assets-v1",
3249
+ "reuseStatus": "photivra-owned"
3250
+ }
3251
+ ]
3252
+ },
3253
+ "evidence": [
3254
+ {
3255
+ "sourceOrigin": "photivra",
3256
+ "sourceReference": "photivra:generic-tier-assets-v1",
3257
+ "reuseStatus": "photivra-owned"
3258
+ }
3259
+ ]
3260
+ }
3261
+ ],
3262
+ "adc": {
3263
+ "bitDepth": 16,
3264
+ "blackLevelCode": 512,
3265
+ "digitalSaturationCode": 65535,
3266
+ "transfer": "uniform-round-half-up"
3267
+ },
3268
+ "evidence": [
3269
+ {
3270
+ "sourceOrigin": "photivra",
3271
+ "sourceReference": "photivra:generic-tier-assets-v1",
3272
+ "reuseStatus": "photivra-owned"
3273
+ }
3274
+ ],
3275
+ "limitations": [
3276
+ "Synthetic educational design values; no named camera/lens calibration or population ranking."
3277
+ ]
3278
+ }
3279
+ ],
3280
+ "regimeSelectionOwnedBy": "explicit-upstream-camera-state-not-inferred-from-iso",
3281
+ "evidence": [
3282
+ {
3283
+ "sourceOrigin": "photivra",
3284
+ "sourceReference": "photivra:generic-tier-assets-v1",
3285
+ "reuseStatus": "photivra-owned"
3286
+ }
3287
+ ]
3288
+ },
3289
+ "regimeId": "base"
3290
+ },
3291
+ "charge": {
3292
+ "completenessProfile": {
3293
+ "schemaVersion": "0.1.0",
3294
+ "profileId": "complete-test",
3295
+ "colorSamplingProfileId": "photivra-generic-bayer",
3296
+ "channelId": "green",
3297
+ "site": {
3298
+ "x": 0,
3299
+ "y": 1
3300
+ },
3301
+ "bindingId": "native-cfa",
3302
+ "timeReference": "first-opening-boundary-phase",
3303
+ "startOffsetSecondsFromOpeningReference": 0,
3304
+ "endOffsetSecondsFromOpeningReference": 0.008,
3305
+ "darkCurrentProfileId": "dark-test",
3306
+ "includedAdditionalComponentIds": [],
3307
+ "coverageMeaning": "all-material-stored-electron-contributors-accounted-for",
3308
+ "scientificStatus": "approximation",
3309
+ "evidence": [
3310
+ {
3311
+ "sourceOrigin": "photivra",
3312
+ "sourceReference": "synthetic-frame-test",
3313
+ "reuseStatus": "photivra-owned"
3314
+ }
3315
+ ],
3316
+ "limitation": "Declared owned fixture expectations, no calibration."
3317
+ }
3318
+ },
3319
+ "operatingTemperatureC": 20,
3320
+ "darkCurrentProfile": {
3321
+ "schemaVersion": "0.1.0",
3322
+ "profileId": "dark-test",
3323
+ "colorSamplingProfileId": "photivra-generic-bayer",
3324
+ "channelId": "green",
3325
+ "scientificStatus": "approximation",
3326
+ "evidence": [
3327
+ {
3328
+ "sourceOrigin": "photivra",
3329
+ "sourceReference": "synthetic-frame-test",
3330
+ "reuseStatus": "photivra-owned"
3331
+ }
3332
+ ],
3333
+ "uncertainty": {
3334
+ "kind": "not-quantified",
3335
+ "limitation": "Synthetic dark fixture."
3336
+ },
3337
+ "chargeMeaning": "pre-compensation-thermally-generated-electrons",
3338
+ "siteApplicability": {
3339
+ "kind": "exact-site",
3340
+ "site": {
3341
+ "x": 0,
3342
+ "y": 1
3343
+ }
3344
+ },
3345
+ "temperatureModel": {
3346
+ "kind": "fixed-reference-temperature",
3347
+ "referenceTemperatureC": 20,
3348
+ "darkCurrentElectronsPerSecond": 4
3349
+ },
3350
+ "darkCurrentCompensationIncluded": false,
3351
+ "spatialDarkCurrentNonuniformityModeled": true
3352
+ }
3353
+ },
3354
+ {
3355
+ "environment": {
3356
+ "temporalIntegrationId": "environment-site-3",
3357
+ "sensor": {
3358
+ "spatialSampling": {
3359
+ "imagingArea": {
3360
+ "widthMm": 36,
3361
+ "heightMm": 24
3362
+ },
3363
+ "samplingApertureProfile": {
3364
+ "schemaVersion": "0.1.0",
3365
+ "profileId": "sampling",
3366
+ "colorSamplingProfileId": "photivra-generic-bayer",
3367
+ "colorSamplingBindingId": "native-cfa",
3368
+ "evidence": [
3369
+ {
3370
+ "sourceOrigin": "photivra",
3371
+ "sourceReference": "test:sampling",
3372
+ "reuseStatus": "photivra-owned"
3373
+ }
3374
+ ],
3375
+ "siteCenterLattice": {
3376
+ "kind": "regular-rectangular-site-center-lattice",
3377
+ "coordinateSystem": "native-sensor-physical",
3378
+ "pitchXMicrometers": 18000,
3379
+ "pitchYMicrometers": 12000,
3380
+ "firstSiteCenterFromImagingAreaTopLeftMicrometers": {
3381
+ "x": 9000,
3382
+ "y": 6000
3383
+ },
3384
+ "evidence": [
3385
+ {
3386
+ "sourceOrigin": "photivra",
3387
+ "sourceReference": "test:lattice",
3388
+ "reuseStatus": "photivra-owned"
3389
+ }
3390
+ ]
3391
+ },
3392
+ "geometricSensitiveAperture": {
3393
+ "kind": "uniform-axis-aligned-rectangle",
3394
+ "widthMicrometers": 800,
3395
+ "heightMicrometers": 600,
3396
+ "centerOffsetFromSiteCenterMicrometers": {
3397
+ "x": 0,
3398
+ "y": 0
3399
+ },
3400
+ "evidence": [
3401
+ {
3402
+ "sourceOrigin": "photivra",
3403
+ "sourceReference": "test:aperture",
3404
+ "reuseStatus": "photivra-owned"
3405
+ }
3406
+ ]
3407
+ }
3408
+ },
3409
+ "opticalStackProfile": {
3410
+ "schemaVersion": "0.1.0",
3411
+ "profileId": "absent-aa",
3412
+ "evidence": [
3413
+ {
3414
+ "sourceOrigin": "photivra",
3415
+ "sourceReference": "test:stack",
3416
+ "reuseStatus": "photivra-owned"
3417
+ }
3418
+ ],
3419
+ "effectiveAntiAliasingSpatialResponse": {
3420
+ "kind": "absent",
3421
+ "evidence": [
3422
+ {
3423
+ "sourceOrigin": "photivra",
3424
+ "sourceReference": "test:no-aa",
3425
+ "reuseStatus": "photivra-owned"
3426
+ }
3427
+ ]
3428
+ }
3429
+ },
3430
+ "site": {
3431
+ "x": 1,
3432
+ "y": 1
3433
+ },
3434
+ "spatialSampleCountX": 2,
3435
+ "spatialSampleCountY": 2
3436
+ },
3437
+ "spectralSampling": {
3438
+ "channelId": "blue",
3439
+ "wavelengthBasis": "vacuum",
3440
+ "wavelengthRangeNanometers": {
3441
+ "minimum": 540,
3442
+ "maximum": 560
3443
+ },
3444
+ "maximumSubintervalWidthNanometers": 20
3445
+ },
3446
+ "colorSamplingProfile": {
3447
+ "schemaVersion": "0.1.0",
3448
+ "profileId": "photivra-generic-bayer",
3449
+ "evidence": [
3450
+ {
3451
+ "sourceOrigin": "photivra",
3452
+ "sourceReference": "synthetic-frame-test",
3453
+ "reuseStatus": "photivra-owned"
3454
+ }
3455
+ ],
3456
+ "coordinateSystem": "native-sensor-color-sampling-site-index",
3457
+ "layout": {
3458
+ "kind": "periodic-mosaic",
3459
+ "repeatWidthSites": 2,
3460
+ "repeatHeightSites": 2,
3461
+ "siteChannelIds": [
3462
+ "red",
3463
+ "green",
3464
+ "green",
3465
+ "blue"
3466
+ ],
3467
+ "anchor": "native-sensor-top-left-site"
3468
+ }
3469
+ },
3470
+ "spectralResponseProfile": {
3471
+ "schemaVersion": "0.1.0",
3472
+ "profileId": "spectral",
3473
+ "colorSamplingProfileId": "photivra-generic-bayer",
3474
+ "evidence": [
3475
+ {
3476
+ "sourceOrigin": "photivra",
3477
+ "sourceReference": "test:response-profile",
3478
+ "reuseStatus": "photivra-owned"
3479
+ }
3480
+ ],
3481
+ "channels": [
3482
+ {
3483
+ "channelId": "blue",
3484
+ "scientificStatus": "approximation",
3485
+ "uncertainty": {
3486
+ "kind": "not-quantified",
3487
+ "limitation": "Owned narrow-band test response, not tier calibration."
3488
+ },
3489
+ "evidence": [
3490
+ {
3491
+ "sourceOrigin": "photivra",
3492
+ "sourceReference": "test:response-channel",
3493
+ "reuseStatus": "photivra-owned"
3494
+ }
3495
+ ],
3496
+ "referenceConditions": {
3497
+ "temperatureC": 25,
3498
+ "incidenceAngleDegreesFromNormal": 0,
3499
+ "polarization": "unpolarized"
3500
+ },
3501
+ "conditionDependence": "not-modeled",
3502
+ "kind": "effective-external-quantum-efficiency",
3503
+ "responseScope": "sensor-package-incident-effective-channel-response",
3504
+ "externalQuantumEfficiency": {
3505
+ "wavelengthUnit": "nm",
3506
+ "wavelengthBasis": "vacuum",
3507
+ "interpolation": "piecewise-linear",
3508
+ "outsideRangeBehavior": "fail-closed",
3509
+ "evidence": [
3510
+ {
3511
+ "sourceOrigin": "photivra",
3512
+ "sourceReference": "test:response-curve",
3513
+ "reuseStatus": "photivra-owned"
3514
+ }
3515
+ ],
3516
+ "samples": [
3517
+ {
3518
+ "wavelengthNanometers": 540,
3519
+ "value": 0.4
3520
+ },
3521
+ {
3522
+ "wavelengthNanometers": 560,
3523
+ "value": 0.4
3524
+ }
3525
+ ]
3526
+ }
3527
+ }
3528
+ ]
3529
+ },
3530
+ "responseApplication": {
3531
+ "applicationProfile": {
3532
+ "schemaVersion": "0.1.0",
3533
+ "profileId": "application",
3534
+ "spectralResponseProfileId": "spectral",
3535
+ "colorSamplingProfileId": "photivra-generic-bayer",
3536
+ "channelId": "blue",
3537
+ "samplingApertureProfileId": "sampling",
3538
+ "opticalStackProfileId": "absent-aa",
3539
+ "evidence": [
3540
+ {
3541
+ "sourceOrigin": "photivra",
3542
+ "sourceReference": "test:application",
3543
+ "reuseStatus": "photivra-owned"
3544
+ }
3545
+ ],
3546
+ "incidentAreaBasis": {
3547
+ "kind": "geometric-sensitive-aperture",
3548
+ "areaSquareMicrometers": 480000
3549
+ },
3550
+ "spatialResponseModel": {
3551
+ "kind": "uniform-over-geometric-sensitive-aperture",
3552
+ "scientificStatus": "approximation",
3553
+ "evidence": [
3554
+ {
3555
+ "sourceOrigin": "photivra",
3556
+ "sourceReference": "synthetic-frame-test",
3557
+ "reuseStatus": "photivra-owned"
3558
+ }
3559
+ ],
3560
+ "limitation": "Owned synthetic response for integration, not measured tier calibration."
3561
+ },
3562
+ "referenceConditionPolicy": {
3563
+ "kind": "exact-match-required"
3564
+ }
3565
+ },
3566
+ "sourcePlane": {
3567
+ "value": "sensor-package-incident",
3568
+ "evidence": [
3569
+ {
3570
+ "sourceOrigin": "photivra",
3571
+ "sourceReference": "test:plane",
3572
+ "reuseStatus": "photivra-owned"
3573
+ }
3574
+ ]
3575
+ },
3576
+ "operatingConditions": {
3577
+ "temperatureC": 25,
3578
+ "incidenceAngleDegreesFromNormal": 0,
3579
+ "polarization": "unpolarized"
3580
+ }
3581
+ },
3582
+ "operatingRangeProfile": {
3583
+ "schemaVersion": "0.1.0",
3584
+ "profileId": "linearity",
3585
+ "responseApplicationProfileId": "application",
3586
+ "spectralResponseProfileId": "spectral",
3587
+ "colorSamplingProfileId": "photivra-generic-bayer",
3588
+ "channelId": "blue",
3589
+ "scientificStatus": "approximation",
3590
+ "uncertainty": {
3591
+ "kind": "not-quantified",
3592
+ "limitation": "Owned synthetic response for integration, not measured tier calibration."
3593
+ },
3594
+ "evidence": [
3595
+ {
3596
+ "sourceOrigin": "photivra",
3597
+ "sourceReference": "test:linearity",
3598
+ "reuseStatus": "photivra-owned"
3599
+ }
3600
+ ],
3601
+ "inputRange": {
3602
+ "kind": "wavelength-integrated-geometric-aperture-radiant-power",
3603
+ "unit": "W",
3604
+ "minimumInclusive": 0,
3605
+ "maximumInclusive": 0.001
3606
+ },
3607
+ "wavelengthApplicability": {
3608
+ "wavelengthBasis": "vacuum",
3609
+ "minimumNanometers": 380,
3610
+ "maximumNanometers": 720,
3611
+ "containment": "requested-range-must-be-contained"
3612
+ },
3613
+ "linearityCriterion": {
3614
+ "maximumAbsoluteRelativeDeviation": 0.01
3615
+ },
3616
+ "spatialLinearityModel": {
3617
+ "kind": "linear-superposition-over-geometric-aperture",
3618
+ "scientificStatus": "approximation",
3619
+ "evidence": [
3620
+ {
3621
+ "sourceOrigin": "photivra",
3622
+ "sourceReference": "synthetic-frame-test",
3623
+ "reuseStatus": "photivra-owned"
3624
+ }
3625
+ ],
3626
+ "limitation": "Owned synthetic response for integration, not measured tier calibration."
3627
+ },
3628
+ "spectralInputModel": {
3629
+ "kind": "per-spectral-bin",
3630
+ "maximumBinWidthNanometers": 20,
3631
+ "scientificStatus": "approximation",
3632
+ "evidence": [
3633
+ {
3634
+ "sourceOrigin": "photivra",
3635
+ "sourceReference": "synthetic-frame-test",
3636
+ "reuseStatus": "photivra-owned"
3637
+ }
3638
+ ],
3639
+ "limitation": "Owned synthetic response for integration, not measured tier calibration."
3640
+ },
3641
+ "referenceConditions": {
3642
+ "temperatureC": 25,
3643
+ "incidenceAngleDegreesFromNormal": 0,
3644
+ "polarization": "unpolarized"
3645
+ },
3646
+ "referenceConditionPolicy": {
3647
+ "kind": "exact-match-required"
3648
+ }
3649
+ },
3650
+ "localExposure": {
3651
+ "bindingProfile": {
3652
+ "schemaVersion": "0.1.0",
3653
+ "bindingId": "native-cfa",
3654
+ "colorSamplingProfileId": "photivra-generic-bayer",
3655
+ "nativeRaster": {
3656
+ "pixelWidth": 2,
3657
+ "pixelHeight": 2
3658
+ },
3659
+ "evidence": [
3660
+ {
3661
+ "sourceOrigin": "photivra",
3662
+ "sourceReference": "synthetic-frame-test",
3663
+ "reuseStatus": "photivra-owned"
3664
+ }
3665
+ ],
3666
+ "relationship": {
3667
+ "kind": "regular-native-effective-sample-blocks",
3668
+ "sitesPerNativeSampleX": 1,
3669
+ "sitesPerNativeSampleY": 1,
3670
+ "anchor": "shared-native-top-left"
3671
+ }
3672
+ },
3673
+ "exposureWindowInput": {
3674
+ "shutterMechanism": "electronic",
3675
+ "nominalExposureDurationSeconds": {
3676
+ "value": 0.008,
3677
+ "unit": "s",
3678
+ "evidence": [
3679
+ {
3680
+ "sourceOrigin": "photivra",
3681
+ "sourceReference": "synthetic-frame-test",
3682
+ "reuseStatus": "photivra-owned"
3683
+ }
3684
+ ]
3685
+ },
3686
+ "opening": {
3687
+ "kind": "simultaneous"
3688
+ },
3689
+ "closing": {
3690
+ "kind": "simultaneous"
3691
+ },
3692
+ "nativeRaster": {
3693
+ "pixelWidth": 2,
3694
+ "pixelHeight": 2
3695
+ }
3696
+ }
3697
+ }
3698
+ },
3699
+ "sceneBindings": {
3700
+ "illuminationProfile": {
3701
+ "schemaVersion": "0.1.0",
3702
+ "profileId": "lights",
3703
+ "sceneId": "room",
3704
+ "evidence": [
3705
+ {
3706
+ "sourceOrigin": "photivra",
3707
+ "sourceReference": "test:lights",
3708
+ "reuseStatus": "photivra-owned"
3709
+ }
3710
+ ],
3711
+ "sources": [
3712
+ {
3713
+ "sourceId": "sky",
3714
+ "family": "environment",
3715
+ "enabled": true,
3716
+ "geometry": {
3717
+ "kind": "environment"
3718
+ },
3719
+ "magnitude": {
3720
+ "kind": "relative-linear-scale",
3721
+ "scale": 1,
3722
+ "scientificStatus": "approximation",
3723
+ "limitation": "Owned synthetic scene declaration."
3724
+ },
3725
+ "spectrum": {
3726
+ "kind": "unresolved",
3727
+ "limitation": "Numeric provider radiance is separately declared."
3728
+ },
3729
+ "temporalBehavior": {
3730
+ "kind": "time-invariant"
3731
+ },
3732
+ "evidence": [
3733
+ {
3734
+ "sourceOrigin": "photivra",
3735
+ "sourceReference": "test:sky",
3736
+ "reuseStatus": "photivra-owned"
3737
+ }
3738
+ ]
3739
+ }
3740
+ ],
3741
+ "sceneRadianceCalculated": false,
3742
+ "materialResponseApplied": false,
3743
+ "visibilityEvaluated": false,
3744
+ "indirectTransportEvaluated": false,
3745
+ "fluorescenceModeled": false,
3746
+ "volumetricTransportModeled": false,
3747
+ "polarizationModeled": false
3748
+ },
3749
+ "materialResponseProfile": {
3750
+ "schemaVersion": "0.1.0",
3751
+ "profileId": "materials",
3752
+ "sceneId": "room",
3753
+ "evidence": [
3754
+ {
3755
+ "sourceOrigin": "photivra",
3756
+ "sourceReference": "test:materials",
3757
+ "reuseStatus": "photivra-owned"
3758
+ }
3759
+ ],
3760
+ "materials": [
3761
+ {
3762
+ "materialResponseId": "surface",
3763
+ "evidence": [
3764
+ {
3765
+ "sourceOrigin": "photivra",
3766
+ "sourceReference": "test:surface",
3767
+ "reuseStatus": "photivra-owned"
3768
+ }
3769
+ ],
3770
+ "representation": {
3771
+ "kind": "spectral-wavelength-preserving-data",
3772
+ "dataArtifact": {
3773
+ "id": "owned-spectrum",
3774
+ "checksumSha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
3775
+ },
3776
+ "wavelengthBasis": "vacuum",
3777
+ "wavelengthRangeNanometers": {
3778
+ "minimum": 400,
3779
+ "maximum": 500
3780
+ },
3781
+ "scatteringModel": "provider-defined-wavelength-preserving",
3782
+ "scientificStatus": "approximation",
3783
+ "uncertainty": {
3784
+ "kind": "not-quantified",
3785
+ "limitation": "Synthetic provider metadata only."
3786
+ },
3787
+ "wavelengthChangingBehaviorModeled": false,
3788
+ "emissionModeled": false
3789
+ }
3790
+ }
3791
+ ],
3792
+ "fluorescenceModeled": false,
3793
+ "volumetricMaterialTransportModeled": false,
3794
+ "polarizationModeled": false
3795
+ },
3796
+ "providerProfile": {
3797
+ "schemaVersion": "0.1.0",
3798
+ "profileId": "provider",
3799
+ "sceneId": "room",
3800
+ "illuminationProfileId": "lights",
3801
+ "materialResponseProfileId": "materials",
3802
+ "outputQuantity": "outgoing-spectral-radiance",
3803
+ "outputUnit": "W/m^2/sr/nm",
3804
+ "scientificStatus": "approximation",
3805
+ "uncertainty": {
3806
+ "kind": "not-quantified",
3807
+ "limitation": "Synthetic field."
3808
+ },
3809
+ "fidelity": {
3810
+ "spectral": "wavelength-resolved",
3811
+ "material": "spectral-data",
3812
+ "visibility": "resolved",
3813
+ "directTransport": "approximation",
3814
+ "indirectTransport": "not-modeled"
3815
+ },
3816
+ "wavelengthChangingTransportModeled": false,
3817
+ "volumetricTransportModeled": false,
3818
+ "polarizationModeled": false,
3819
+ "evidence": [
3820
+ {
3821
+ "sourceOrigin": "photivra",
3822
+ "sourceReference": "test:provider",
3823
+ "reuseStatus": "photivra-owned"
3824
+ }
3825
+ ],
3826
+ "limitations": [
3827
+ "Owned fixture declarations."
3828
+ ],
3829
+ "illuminationTemporalProfileId": "time-lights"
3830
+ },
3831
+ "illuminationTemporalProfile": {
3832
+ "schemaVersion": "0.1.0",
3833
+ "profileId": "time-lights",
3834
+ "sceneId": "room",
3835
+ "illuminationProfileId": "lights",
3836
+ "evidence": [
3837
+ {
3838
+ "sourceOrigin": "photivra",
3839
+ "sourceReference": "test:time-lights",
3840
+ "reuseStatus": "photivra-owned"
3841
+ }
3842
+ ],
3843
+ "waveforms": [
3844
+ {
3845
+ "kind": "aperiodic-relative-multiplier",
3846
+ "waveformId": "ramp",
3847
+ "timeUnit": "s",
3848
+ "scientificStatus": "approximation",
3849
+ "uncertainty": {
3850
+ "kind": "not-quantified",
3851
+ "limitation": "Synthetic linear light ramp."
3852
+ },
3853
+ "evidence": [
3854
+ {
3855
+ "sourceOrigin": "photivra",
3856
+ "sourceReference": "test:ramp",
3857
+ "reuseStatus": "photivra-owned"
3858
+ }
3859
+ ],
3860
+ "interpolation": "piecewise-linear",
3861
+ "samples": [
3862
+ {
3863
+ "timeSecondsFromWaveformReference": 0,
3864
+ "relativeMagnitudeMultiplier": 1
3865
+ },
3866
+ {
3867
+ "timeSecondsFromWaveformReference": 1,
3868
+ "relativeMagnitudeMultiplier": 201
3869
+ }
3870
+ ],
3871
+ "outsideSupportBehavior": "zero"
3872
+ }
3873
+ ],
3874
+ "sourceBindings": [
3875
+ {
3876
+ "bindingId": "sky-time",
3877
+ "sourceId": "sky",
3878
+ "waveformId": "ramp",
3879
+ "captureTimeReference": "first-opening-boundary-phase",
3880
+ "waveformTimeZeroSecondsFromCaptureReference": 0,
3881
+ "scientificStatus": "approximation",
3882
+ "timingUncertainty": {
3883
+ "kind": "not-quantified",
3884
+ "limitation": "Owned exact synthetic clock."
3885
+ },
3886
+ "evidence": [
3887
+ {
3888
+ "sourceOrigin": "photivra",
3889
+ "sourceReference": "test:sky-time",
3890
+ "reuseStatus": "photivra-owned"
3891
+ }
3892
+ ]
3893
+ }
3894
+ ],
3895
+ "baseIlluminationProfileRemainsAuthoritative": true,
3896
+ "sensorReadoutTimingUsedAsExposureTiming": false,
3897
+ "automaticExposurePolicyIncluded": false
3898
+ }
3899
+ },
3900
+ "optics": {
3901
+ "profile": {
3902
+ "schemaVersion": "0.1.0",
3903
+ "profileId": "photivra-consumer-prime:transmission:production-fixture",
3904
+ "profileVersion": "1",
3905
+ "lensProfileId": "photivra-consumer-prime:exposure",
3906
+ "scientificStatus": "approximation",
3907
+ "applicability": {
3908
+ "focalLengthMm": {
3909
+ "minimum": 50,
3910
+ "maximum": 50
3911
+ },
3912
+ "nominalFNumber": {
3913
+ "minimum": 4,
3914
+ "maximum": 4
3915
+ },
3916
+ "focus": {
3917
+ "kind": "finite-distance-range",
3918
+ "objectDistanceM": {
3919
+ "minimum": 5,
3920
+ "maximum": 5
3921
+ }
3922
+ }
3923
+ },
3924
+ "transmission": {
3925
+ "kind": "spectral-transmission",
3926
+ "scientificStatus": "approximation",
3927
+ "wavelengthBasis": "vacuum",
3928
+ "samples": {
3929
+ "value": [
3930
+ {
3931
+ "wavelengthNanometers": 540,
3932
+ "linearTransmissionFactor": 0.75
3933
+ },
3934
+ {
3935
+ "wavelengthNanometers": 560,
3936
+ "linearTransmissionFactor": 0.75
3937
+ }
3938
+ ],
3939
+ "evidence": [
3940
+ {
3941
+ "sourceOrigin": "photivra",
3942
+ "sourceReference": "photivra:generic-tier-assets-v1",
3943
+ "reuseStatus": "photivra-owned"
3944
+ }
3945
+ ]
3946
+ },
3947
+ "uncertainty": {
3948
+ "kind": "not-quantified",
3949
+ "limitation": "Synthetic flat narrow-band reference."
3950
+ }
3951
+ },
3952
+ "distortionAreaMappingOwnership": "not-applied-by-bridge",
3953
+ "psfRedistributionOwnership": "downstream-normalized-energy-redistribution",
3954
+ "sensorOpticalStackIncluded": false,
3955
+ "strayLightIncluded": false,
3956
+ "polarizationModeled": false,
3957
+ "wavelengthChangingBehaviorModeled": false,
3958
+ "volumetricScatteringModeled": false,
3959
+ "evidence": [
3960
+ {
3961
+ "sourceOrigin": "photivra",
3962
+ "sourceReference": "photivra:generic-tier-assets-v1",
3963
+ "reuseStatus": "photivra-owned"
3964
+ }
3965
+ ],
3966
+ "limitations": [
3967
+ "Synthetic educational design values; no named camera/lens calibration or population ranking.",
3968
+ "Optical reference response is limited to 50 mm, f/4, focus 5 m and explicit field/defocus/wavelength slices; capabilities do not authorize extrapolation.",
3969
+ "The initial prime has no OIS; body stabilization is separate."
3970
+ ]
3971
+ },
3972
+ "focalLengthMm": 50,
3973
+ "nominalFNumber": 4,
3974
+ "focus": {
3975
+ "kind": "ideal-symmetric-thin-lens",
3976
+ "objectDistanceM": 5,
3977
+ "pupilMagnificationAssumption": "unity"
3978
+ }
3979
+ },
3980
+ "motion": {
3981
+ "angularVelocityRadPerSec": {
3982
+ "pitch": 0,
3983
+ "yaw": 0,
3984
+ "roll": 0
3985
+ },
3986
+ "timeReference": "first-opening-boundary-phase",
3987
+ "environmentDirectionConvention": "outgoing-radiance-toward-camera"
3988
+ },
3989
+ "temporalSampleCount": 2,
3990
+ "fieldThroughput": {
3991
+ "kind": "unity",
3992
+ "evidence": [
3993
+ {
3994
+ "sourceOrigin": "photivra",
3995
+ "sourceReference": "test:unity",
3996
+ "reuseStatus": "photivra-owned"
3997
+ }
3998
+ ],
3999
+ "limitation": "Declared unity field throughput."
4000
+ },
4001
+ "psf": {
4002
+ "kind": "not-applied",
4003
+ "evidence": [
4004
+ {
4005
+ "sourceOrigin": "photivra",
4006
+ "sourceReference": "test:no-psf",
4007
+ "reuseStatus": "photivra-owned"
4008
+ }
4009
+ ],
4010
+ "limitation": "Point optics only; no lens blur."
4011
+ }
4012
+ },
4013
+ "readout": {
4014
+ "samplingProfile": {
4015
+ "schemaVersion": "0.1.0",
4016
+ "profileId": "charge-test",
4017
+ "completenessProfileId": "complete-test",
4018
+ "scientificStatus": "approximation",
4019
+ "photoShotNoiseModel": "poisson",
4020
+ "darkShotNoiseModel": "poisson",
4021
+ "additionalComponentPolicies": [],
4022
+ "evidence": [
4023
+ {
4024
+ "sourceOrigin": "photivra",
4025
+ "sourceReference": "synthetic-frame-test",
4026
+ "reuseStatus": "photivra-owned"
4027
+ }
4028
+ ],
4029
+ "limitations": [
4030
+ "Owned fixture sampling."
4031
+ ]
4032
+ },
4033
+ "capacityProfile": {
4034
+ "schemaVersion": "0.1.0",
4035
+ "profileId": "capacity-test",
4036
+ "colorSamplingProfileId": "photivra-generic-bayer",
4037
+ "channelId": "blue",
4038
+ "capacityMeaning": "physical-charge-storage-capacity-electrons",
4039
+ "capacityElectrons": 1000,
4040
+ "scientificStatus": "approximation",
4041
+ "uncertainty": {
4042
+ "kind": "not-quantified",
4043
+ "limitation": "Synthetic fixture only."
4044
+ },
4045
+ "evidence": [
4046
+ {
4047
+ "sourceOrigin": "photivra",
4048
+ "sourceReference": "synthetic-frame-test",
4049
+ "reuseStatus": "photivra-owned"
4050
+ }
4051
+ ],
4052
+ "siteApplicability": {
4053
+ "kind": "exact-site",
4054
+ "site": {
4055
+ "x": 1,
4056
+ "y": 1
4057
+ }
4058
+ },
4059
+ "operatingState": {
4060
+ "stateId": "state-test",
4061
+ "evidence": [
4062
+ {
4063
+ "sourceOrigin": "photivra",
4064
+ "sourceReference": "synthetic-frame-test",
4065
+ "reuseStatus": "photivra-owned"
4066
+ }
4067
+ ]
4068
+ },
4069
+ "temperatureApplicability": {
4070
+ "kind": "exact-reference-temperature",
4071
+ "temperatureC": 20
4072
+ }
4073
+ },
4074
+ "operatingStateId": "state-test",
4075
+ "readoutProfile": {
4076
+ "schemaVersion": "0.1.0",
4077
+ "profileId": "photivra-consumer-body:readout",
4078
+ "colorSamplingProfileId": "photivra-generic-bayer",
4079
+ "channelId": "blue",
4080
+ "regimes": [
4081
+ {
4082
+ "regimeId": "base",
4083
+ "scientificStatus": "approximation",
4084
+ "systemConversionGainElectronsPerCode": {
4085
+ "value": 1,
4086
+ "evidence": [
4087
+ {
4088
+ "sourceOrigin": "photivra",
4089
+ "sourceReference": "photivra:generic-tier-assets-v1",
4090
+ "reuseStatus": "photivra-owned"
4091
+ }
4092
+ ]
4093
+ },
4094
+ "preAdcSaturationElectronEquivalent": {
4095
+ "value": 20000,
4096
+ "evidence": [
4097
+ {
4098
+ "sourceOrigin": "photivra",
4099
+ "sourceReference": "photivra:generic-tier-assets-v1",
4100
+ "reuseStatus": "photivra-owned"
4101
+ }
4102
+ ]
4103
+ },
4104
+ "readNoiseComponents": [
4105
+ {
4106
+ "componentId": "electronic",
4107
+ "rmsElectrons": {
4108
+ "value": 6,
4109
+ "evidence": [
4110
+ {
4111
+ "sourceOrigin": "photivra",
4112
+ "sourceReference": "photivra:generic-tier-assets-v1",
4113
+ "reuseStatus": "photivra-owned"
4114
+ }
4115
+ ]
4116
+ },
4117
+ "evidence": [
4118
+ {
4119
+ "sourceOrigin": "photivra",
4120
+ "sourceReference": "photivra:generic-tier-assets-v1",
4121
+ "reuseStatus": "photivra-owned"
4122
+ }
4123
+ ]
4124
+ }
4125
+ ],
4126
+ "adc": {
4127
+ "bitDepth": 16,
4128
+ "blackLevelCode": 512,
4129
+ "digitalSaturationCode": 65535,
4130
+ "transfer": "uniform-round-half-up"
4131
+ },
4132
+ "evidence": [
4133
+ {
4134
+ "sourceOrigin": "photivra",
4135
+ "sourceReference": "photivra:generic-tier-assets-v1",
4136
+ "reuseStatus": "photivra-owned"
4137
+ }
4138
+ ],
4139
+ "limitations": [
4140
+ "Synthetic educational design values; no named camera/lens calibration or population ranking."
4141
+ ]
4142
+ },
4143
+ {
4144
+ "regimeId": "high",
4145
+ "scientificStatus": "approximation",
4146
+ "systemConversionGainElectronsPerCode": {
4147
+ "value": 0.25,
4148
+ "evidence": [
4149
+ {
4150
+ "sourceOrigin": "photivra",
4151
+ "sourceReference": "photivra:generic-tier-assets-v1",
4152
+ "reuseStatus": "photivra-owned"
4153
+ }
4154
+ ]
4155
+ },
4156
+ "preAdcSaturationElectronEquivalent": {
4157
+ "value": 12000,
4158
+ "evidence": [
4159
+ {
4160
+ "sourceOrigin": "photivra",
4161
+ "sourceReference": "photivra:generic-tier-assets-v1",
4162
+ "reuseStatus": "photivra-owned"
4163
+ }
4164
+ ]
4165
+ },
4166
+ "readNoiseComponents": [
4167
+ {
4168
+ "componentId": "electronic",
4169
+ "rmsElectrons": {
4170
+ "value": 4.5,
4171
+ "evidence": [
4172
+ {
4173
+ "sourceOrigin": "photivra",
4174
+ "sourceReference": "photivra:generic-tier-assets-v1",
4175
+ "reuseStatus": "photivra-owned"
4176
+ }
4177
+ ]
4178
+ },
4179
+ "evidence": [
4180
+ {
4181
+ "sourceOrigin": "photivra",
4182
+ "sourceReference": "photivra:generic-tier-assets-v1",
4183
+ "reuseStatus": "photivra-owned"
4184
+ }
4185
+ ]
4186
+ }
4187
+ ],
4188
+ "adc": {
4189
+ "bitDepth": 16,
4190
+ "blackLevelCode": 512,
4191
+ "digitalSaturationCode": 65535,
4192
+ "transfer": "uniform-round-half-up"
4193
+ },
4194
+ "evidence": [
4195
+ {
4196
+ "sourceOrigin": "photivra",
4197
+ "sourceReference": "photivra:generic-tier-assets-v1",
4198
+ "reuseStatus": "photivra-owned"
4199
+ }
4200
+ ],
4201
+ "limitations": [
4202
+ "Synthetic educational design values; no named camera/lens calibration or population ranking."
4203
+ ]
4204
+ }
4205
+ ],
4206
+ "regimeSelectionOwnedBy": "explicit-upstream-camera-state-not-inferred-from-iso",
4207
+ "evidence": [
4208
+ {
4209
+ "sourceOrigin": "photivra",
4210
+ "sourceReference": "photivra:generic-tier-assets-v1",
4211
+ "reuseStatus": "photivra-owned"
4212
+ }
4213
+ ]
4214
+ },
4215
+ "regimeId": "base"
4216
+ },
4217
+ "charge": {
4218
+ "completenessProfile": {
4219
+ "schemaVersion": "0.1.0",
4220
+ "profileId": "complete-test",
4221
+ "colorSamplingProfileId": "photivra-generic-bayer",
4222
+ "channelId": "blue",
4223
+ "site": {
4224
+ "x": 1,
4225
+ "y": 1
4226
+ },
4227
+ "bindingId": "native-cfa",
4228
+ "timeReference": "first-opening-boundary-phase",
4229
+ "startOffsetSecondsFromOpeningReference": 0,
4230
+ "endOffsetSecondsFromOpeningReference": 0.008,
4231
+ "darkCurrentProfileId": "dark-test",
4232
+ "includedAdditionalComponentIds": [],
4233
+ "coverageMeaning": "all-material-stored-electron-contributors-accounted-for",
4234
+ "scientificStatus": "approximation",
4235
+ "evidence": [
4236
+ {
4237
+ "sourceOrigin": "photivra",
4238
+ "sourceReference": "synthetic-frame-test",
4239
+ "reuseStatus": "photivra-owned"
4240
+ }
4241
+ ],
4242
+ "limitation": "Declared owned fixture expectations, no calibration."
4243
+ }
4244
+ },
4245
+ "operatingTemperatureC": 20,
4246
+ "darkCurrentProfile": {
4247
+ "schemaVersion": "0.1.0",
4248
+ "profileId": "dark-test",
4249
+ "colorSamplingProfileId": "photivra-generic-bayer",
4250
+ "channelId": "blue",
4251
+ "scientificStatus": "approximation",
4252
+ "evidence": [
4253
+ {
4254
+ "sourceOrigin": "photivra",
4255
+ "sourceReference": "synthetic-frame-test",
4256
+ "reuseStatus": "photivra-owned"
4257
+ }
4258
+ ],
4259
+ "uncertainty": {
4260
+ "kind": "not-quantified",
4261
+ "limitation": "Synthetic dark fixture."
4262
+ },
4263
+ "chargeMeaning": "pre-compensation-thermally-generated-electrons",
4264
+ "siteApplicability": {
4265
+ "kind": "exact-site",
4266
+ "site": {
4267
+ "x": 1,
4268
+ "y": 1
4269
+ }
4270
+ },
4271
+ "temperatureModel": {
4272
+ "kind": "fixed-reference-temperature",
4273
+ "referenceTemperatureC": 20,
4274
+ "darkCurrentElectronsPerSecond": 4
4275
+ },
4276
+ "darkCurrentCompensationIncluded": false,
4277
+ "spatialDarkCurrentNonuniformityModeled": true
4278
+ }
4279
+ }
4280
+ ]
4281
+ },
4282
+ "processing": {
4283
+ "reconstruction": {
4284
+ "phaseProfiles": [
4285
+ {
4286
+ "phaseX": 0,
4287
+ "phaseY": 0,
4288
+ "profile": {
4289
+ "schemaVersion": "0.1.0",
4290
+ "profileId": "phase-0",
4291
+ "profileVersion": "1",
4292
+ "captureModeId": "native-still",
4293
+ "colorSamplingProfileId": "photivra-generic-bayer",
4294
+ "scientificStatus": "approximation",
4295
+ "method": "explicit-linear-native-neighborhood",
4296
+ "normalization": "weights-sum-to-one-per-output-channel",
4297
+ "negativeBlackSubtractedValuesAllowed": true,
4298
+ "kernels": [
4299
+ {
4300
+ "outputChannelId": "red",
4301
+ "contributions": [
4302
+ {
4303
+ "offsetX": 0,
4304
+ "offsetY": 0,
4305
+ "sourceChannelId": "red",
4306
+ "weight": 1
4307
+ }
4308
+ ]
4309
+ },
4310
+ {
4311
+ "outputChannelId": "green",
4312
+ "contributions": [
4313
+ {
4314
+ "offsetX": 1,
4315
+ "offsetY": 0,
4316
+ "sourceChannelId": "green",
4317
+ "weight": 0.5
4318
+ },
4319
+ {
4320
+ "offsetX": 0,
4321
+ "offsetY": 1,
4322
+ "sourceChannelId": "green",
4323
+ "weight": 0.5
4324
+ }
4325
+ ]
4326
+ },
4327
+ {
4328
+ "outputChannelId": "blue",
4329
+ "contributions": [
4330
+ {
4331
+ "offsetX": 1,
4332
+ "offsetY": 1,
4333
+ "sourceChannelId": "blue",
4334
+ "weight": 1
4335
+ }
4336
+ ]
4337
+ }
4338
+ ],
4339
+ "evidence": [
4340
+ {
4341
+ "sourceOrigin": "photivra",
4342
+ "sourceReference": "synthetic-frame-test",
4343
+ "reuseStatus": "photivra-owned"
4344
+ }
4345
+ ],
4346
+ "limitations": [
4347
+ "Synthetic tile-average regression policy, not calibrated demosaic."
4348
+ ]
4349
+ }
4350
+ },
4351
+ {
4352
+ "phaseX": 1,
4353
+ "phaseY": 0,
4354
+ "profile": {
4355
+ "schemaVersion": "0.1.0",
4356
+ "profileId": "phase-1",
4357
+ "profileVersion": "1",
4358
+ "captureModeId": "native-still",
4359
+ "colorSamplingProfileId": "photivra-generic-bayer",
4360
+ "scientificStatus": "approximation",
4361
+ "method": "explicit-linear-native-neighborhood",
4362
+ "normalization": "weights-sum-to-one-per-output-channel",
4363
+ "negativeBlackSubtractedValuesAllowed": true,
4364
+ "kernels": [
4365
+ {
4366
+ "outputChannelId": "red",
4367
+ "contributions": [
4368
+ {
4369
+ "offsetX": -1,
4370
+ "offsetY": 0,
4371
+ "sourceChannelId": "red",
4372
+ "weight": 1
4373
+ }
4374
+ ]
4375
+ },
4376
+ {
4377
+ "outputChannelId": "green",
4378
+ "contributions": [
4379
+ {
4380
+ "offsetX": 0,
4381
+ "offsetY": 0,
4382
+ "sourceChannelId": "green",
4383
+ "weight": 0.5
4384
+ },
4385
+ {
4386
+ "offsetX": -1,
4387
+ "offsetY": 1,
4388
+ "sourceChannelId": "green",
4389
+ "weight": 0.5
4390
+ }
4391
+ ]
4392
+ },
4393
+ {
4394
+ "outputChannelId": "blue",
4395
+ "contributions": [
4396
+ {
4397
+ "offsetX": 0,
4398
+ "offsetY": 1,
4399
+ "sourceChannelId": "blue",
4400
+ "weight": 1
4401
+ }
4402
+ ]
4403
+ }
4404
+ ],
4405
+ "evidence": [
4406
+ {
4407
+ "sourceOrigin": "photivra",
4408
+ "sourceReference": "synthetic-frame-test",
4409
+ "reuseStatus": "photivra-owned"
4410
+ }
4411
+ ],
4412
+ "limitations": [
4413
+ "Synthetic tile-average regression policy, not calibrated demosaic."
4414
+ ]
4415
+ }
4416
+ },
4417
+ {
4418
+ "phaseX": 0,
4419
+ "phaseY": 1,
4420
+ "profile": {
4421
+ "schemaVersion": "0.1.0",
4422
+ "profileId": "phase-2",
4423
+ "profileVersion": "1",
4424
+ "captureModeId": "native-still",
4425
+ "colorSamplingProfileId": "photivra-generic-bayer",
4426
+ "scientificStatus": "approximation",
4427
+ "method": "explicit-linear-native-neighborhood",
4428
+ "normalization": "weights-sum-to-one-per-output-channel",
4429
+ "negativeBlackSubtractedValuesAllowed": true,
4430
+ "kernels": [
4431
+ {
4432
+ "outputChannelId": "red",
4433
+ "contributions": [
4434
+ {
4435
+ "offsetX": 0,
4436
+ "offsetY": -1,
4437
+ "sourceChannelId": "red",
4438
+ "weight": 1
4439
+ }
4440
+ ]
4441
+ },
4442
+ {
4443
+ "outputChannelId": "green",
4444
+ "contributions": [
4445
+ {
4446
+ "offsetX": 1,
4447
+ "offsetY": -1,
4448
+ "sourceChannelId": "green",
4449
+ "weight": 0.5
4450
+ },
4451
+ {
4452
+ "offsetX": 0,
4453
+ "offsetY": 0,
4454
+ "sourceChannelId": "green",
4455
+ "weight": 0.5
4456
+ }
4457
+ ]
4458
+ },
4459
+ {
4460
+ "outputChannelId": "blue",
4461
+ "contributions": [
4462
+ {
4463
+ "offsetX": 1,
4464
+ "offsetY": 0,
4465
+ "sourceChannelId": "blue",
4466
+ "weight": 1
4467
+ }
4468
+ ]
4469
+ }
4470
+ ],
4471
+ "evidence": [
4472
+ {
4473
+ "sourceOrigin": "photivra",
4474
+ "sourceReference": "synthetic-frame-test",
4475
+ "reuseStatus": "photivra-owned"
4476
+ }
4477
+ ],
4478
+ "limitations": [
4479
+ "Synthetic tile-average regression policy, not calibrated demosaic."
4480
+ ]
4481
+ }
4482
+ },
4483
+ {
4484
+ "phaseX": 1,
4485
+ "phaseY": 1,
4486
+ "profile": {
4487
+ "schemaVersion": "0.1.0",
4488
+ "profileId": "phase-3",
4489
+ "profileVersion": "1",
4490
+ "captureModeId": "native-still",
4491
+ "colorSamplingProfileId": "photivra-generic-bayer",
4492
+ "scientificStatus": "approximation",
4493
+ "method": "explicit-linear-native-neighborhood",
4494
+ "normalization": "weights-sum-to-one-per-output-channel",
4495
+ "negativeBlackSubtractedValuesAllowed": true,
4496
+ "kernels": [
4497
+ {
4498
+ "outputChannelId": "red",
4499
+ "contributions": [
4500
+ {
4501
+ "offsetX": -1,
4502
+ "offsetY": -1,
4503
+ "sourceChannelId": "red",
4504
+ "weight": 1
4505
+ }
4506
+ ]
4507
+ },
4508
+ {
4509
+ "outputChannelId": "green",
4510
+ "contributions": [
4511
+ {
4512
+ "offsetX": 0,
4513
+ "offsetY": -1,
4514
+ "sourceChannelId": "green",
4515
+ "weight": 0.5
4516
+ },
4517
+ {
4518
+ "offsetX": -1,
4519
+ "offsetY": 0,
4520
+ "sourceChannelId": "green",
4521
+ "weight": 0.5
4522
+ }
4523
+ ]
4524
+ },
4525
+ {
4526
+ "outputChannelId": "blue",
4527
+ "contributions": [
4528
+ {
4529
+ "offsetX": 0,
4530
+ "offsetY": 0,
4531
+ "sourceChannelId": "blue",
4532
+ "weight": 1
4533
+ }
4534
+ ]
4535
+ }
4536
+ ],
4537
+ "evidence": [
4538
+ {
4539
+ "sourceOrigin": "photivra",
4540
+ "sourceReference": "synthetic-frame-test",
4541
+ "reuseStatus": "photivra-owned"
4542
+ }
4543
+ ],
4544
+ "limitations": [
4545
+ "Synthetic tile-average regression policy, not calibrated demosaic."
4546
+ ]
4547
+ }
4548
+ }
4549
+ ],
4550
+ "region": {
4551
+ "x": 0,
4552
+ "y": 0,
4553
+ "width": 2,
4554
+ "height": 2
4555
+ }
4556
+ },
4557
+ "colorProfile": {
4558
+ "schemaVersion": "0.1.0",
4559
+ "profileId": "owned-ideal-rgb-test",
4560
+ "profileVersion": "1",
4561
+ "colorSamplingProfileId": "photivra-generic-bayer",
4562
+ "channelIds": [
4563
+ "red",
4564
+ "green",
4565
+ "blue"
4566
+ ],
4567
+ "scientificStatus": "approximation",
4568
+ "referenceIlluminant": "D65",
4569
+ "normalizedCameraChannelsToXyz": [
4570
+ [
4571
+ 0.4123907992659593,
4572
+ 0.357584339383878,
4573
+ 0.1804807884018343
4574
+ ],
4575
+ [
4576
+ 0.21263900587151024,
4577
+ 0.715168678767756,
4578
+ 0.07219231536073371
4579
+ ],
4580
+ [
4581
+ 0.01933081871559182,
4582
+ 0.11919477979462598,
4583
+ 0.9505321522496607
4584
+ ]
4585
+ ],
4586
+ "evidence": [
4587
+ {
4588
+ "sourceOrigin": "photivra",
4589
+ "sourceReference": "synthetic-frame-test",
4590
+ "reuseStatus": "photivra-owned"
4591
+ }
4592
+ ],
4593
+ "limitations": [
4594
+ "Synthetic ideal test-color declaration, not physical sensor calibration."
4595
+ ]
4596
+ },
4597
+ "whiteBalance": "not-required",
4598
+ "rendering": {
4599
+ "schemaVersion": "0.1.0",
4600
+ "profileId": "neutral",
4601
+ "profileVersion": "1",
4602
+ "renderingExposureEv": 0,
4603
+ "toneCurve": "identity",
4604
+ "gamutHandling": "clip-components",
4605
+ "outputDynamicRange": "sdr",
4606
+ "transferFunction": "srgb",
4607
+ "bitDepth": 8,
4608
+ "rounding": "nearest-ties-up",
4609
+ "dither": "none"
4610
+ }
4611
+ }
4612
+ }
4613
+ }