@photivra/engine 1.1.0 → 1.2.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 (236) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/CITATION.cff +1 -1
  3. package/NOTICE +29 -0
  4. package/README.md +6 -6
  5. package/THIRD_PARTY.md +10 -0
  6. package/dist/core/version.d.ts +1 -1
  7. package/dist/core/version.js +1 -1
  8. package/dist/index.d.ts +6 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +3 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/optics/complex-pupil-psf.d.ts +6 -0
  13. package/dist/optics/complex-pupil-psf.d.ts.map +1 -1
  14. package/dist/optics/complex-pupil-psf.js +10 -7
  15. package/dist/optics/complex-pupil-psf.js.map +1 -1
  16. package/dist/output/native-capture-sdr.d.ts +78 -0
  17. package/dist/output/native-capture-sdr.d.ts.map +1 -0
  18. package/dist/output/native-capture-sdr.js +171 -0
  19. package/dist/output/native-capture-sdr.js.map +1 -0
  20. package/dist/output/print-contrast-reference.d.ts +47 -0
  21. package/dist/output/print-contrast-reference.d.ts.map +1 -0
  22. package/dist/output/print-contrast-reference.js +95 -0
  23. package/dist/output/print-contrast-reference.js.map +1 -0
  24. package/dist/output/print-detail.d.ts +7 -0
  25. package/dist/output/print-detail.d.ts.map +1 -1
  26. package/dist/output/print-detail.js +20 -11
  27. package/dist/output/print-detail.js.map +1 -1
  28. package/dist/output/print-region-statistics.d.ts +92 -0
  29. package/dist/output/print-region-statistics.d.ts.map +1 -0
  30. package/dist/output/print-region-statistics.js +300 -0
  31. package/dist/output/print-region-statistics.js.map +1 -0
  32. package/docs/API_REFERENCE.md +52 -1
  33. package/docs/API_STYLE.md +1 -1
  34. package/docs/ARCHITECTURE.md +1 -1
  35. package/docs/AUTOMATION_COORDINATION.md +1 -1
  36. package/docs/CAPTURE_COLOR.md +1 -1
  37. package/docs/CAPTURE_CORRECTED_SDR.md +1 -1
  38. package/docs/CAPTURE_EXPORT_METADATA.md +1 -1
  39. package/docs/CAPTURE_SDR.md +3 -1
  40. package/docs/DEVELOPERS.md +6 -4
  41. package/docs/DIGITAL_OPTICS_FOUNDATION.md +1 -1
  42. package/docs/ENVIRONMENT_RAW_CAPTURE.md +1 -1
  43. package/docs/EXPORT_ACCEPTANCE.md +1 -1
  44. package/docs/GENERIC_TIER_PRESETS.md +1 -1
  45. package/docs/GEOMETRIC_PREPARATION_REUSE.md +1 -1
  46. package/docs/IMAGE_FORMATION.md +1 -1
  47. package/docs/LINEAR_CAPTURE_ENCODING.md +1 -1
  48. package/docs/MOTION_AND_SIGNAL.md +1 -1
  49. package/docs/NATIVE_CAPTURE_SDR.md +70 -0
  50. package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +37 -0
  51. package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +34 -0
  52. package/docs/NUMERICAL_CORRECTNESS.md +1 -1
  53. package/docs/PERFORMANCE_BASELINE.md +1 -1
  54. package/docs/PHOTOGRAPHIC_EXPORT.md +1 -1
  55. package/docs/PHYSICS_FOUNDATION.md +1 -1
  56. package/docs/POC_API.md +1 -1
  57. package/docs/POC_PROJECTION_REUSE.md +1 -1
  58. package/docs/PRINT_195_196_REVIEW.md +93 -0
  59. package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +45 -0
  60. package/docs/PRINT_CONTRAST_REFERENCE.md +43 -0
  61. package/docs/PRINT_DETAIL_ASSESSMENT.md +1 -1
  62. package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +36 -0
  63. package/docs/PRINT_DETAIL_VALIDATION.md +1 -1
  64. package/docs/PRINT_PLANNING.md +3 -1
  65. package/docs/PRINT_REGION_STATISTICS.md +38 -0
  66. package/docs/PROCESSED_OUTPUT.md +1 -1
  67. package/docs/PRODUCTION_COMPOSITION.md +1 -1
  68. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +1 -1
  69. package/docs/PROVENANCE.md +1 -1
  70. package/docs/PSF_FOUNDATION.md +11 -1
  71. package/docs/RAW_FRAME_ENVELOPE.md +1 -1
  72. package/docs/RAW_FRAME_RECONSTRUCTION.md +1 -1
  73. package/docs/RELEASE_1_2_0.md +51 -0
  74. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +1 -1
  75. package/docs/SCENE_SENSOR_QUADRATURE.md +1 -1
  76. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +1 -1
  77. package/docs/SCIENTIFIC_ASSURANCE.md +1 -1
  78. package/docs/SCIENTIFIC_CONFORMANCE.md +1 -1
  79. package/docs/SDR_RENDERING.md +1 -1
  80. package/docs/SENSOR_ENVIRONMENT_QUERY.md +1 -1
  81. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +1 -1
  82. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +1 -1
  83. package/docs/SENSOR_PSF_QUADRATURE.md +1 -1
  84. package/docs/SENSOR_RAW_FRAME.md +1 -1
  85. package/docs/SENSOR_RAW_PRODUCER.md +1 -1
  86. package/docs/SIGNAL_CONFORMANCE.md +1 -1
  87. package/docs/SIMULATED_CAPTURE.md +1 -1
  88. package/docs/STABILIZATION.md +1 -1
  89. package/docs/TEMPORAL_PHOTO_RAW.md +1 -1
  90. package/docs/TIER_ACCEPTANCE.md +1 -1
  91. package/docs/TIER_PRESET_ACCEPTANCE.md +1 -1
  92. package/docs/USAGE.md +3 -1
  93. package/docs/V1_COMPOSITION_MAP.md +1 -1
  94. package/docs/V1_HELPER_REUSE_REVIEW.md +1 -1
  95. package/docs/V1_PERFORMANCE_DISPOSITION.md +1 -1
  96. package/docs/api/camera-equivalent-focal-length.md +1 -1
  97. package/docs/api/camera-field-of-view.md +1 -1
  98. package/docs/api/camera-projected-object-size.md +1 -1
  99. package/docs/api/capture-capture-export-metadata.md +1 -1
  100. package/docs/api/capture-environment-raw-producer.md +1 -1
  101. package/docs/api/capture-focus-control.md +1 -1
  102. package/docs/api/capture-linear-encoding.md +1 -1
  103. package/docs/api/capture-photographic-export.md +1 -1
  104. package/docs/api/capture-raw-frame-reconstruction.md +1 -1
  105. package/docs/api/capture-release-sequence.md +1 -1
  106. package/docs/api/capture-sensor-raw-frame.md +1 -1
  107. package/docs/api/capture-sensor-raw-producer.md +1 -1
  108. package/docs/api/capture-simulated-capture.md +1 -1
  109. package/docs/api/color-capture-color.md +1 -1
  110. package/docs/api/color-white-balance.md +1 -1
  111. package/docs/api/composition-image-formation-plan.md +1 -1
  112. package/docs/api/composition-plan-consumer.md +1 -1
  113. package/docs/api/core-calculation-result.md +1 -1
  114. package/docs/api/core-configuration-error.md +1 -1
  115. package/docs/api/core-image-formation.md +1 -1
  116. package/docs/api/core-scientific-assurance.md +1 -1
  117. package/docs/api/core-spectral-composition.md +1 -1
  118. package/docs/api/core-spectral.md +1 -1
  119. package/docs/api/core-validation.md +1 -1
  120. package/docs/api/core-version.md +2 -2
  121. package/docs/api/equipment-exposure-capabilities.md +1 -1
  122. package/docs/api/equipment-generic-tier-assets.md +1 -1
  123. package/docs/api/equipment-generic-tier-presets.md +1 -1
  124. package/docs/api/equipment-iso-capabilities.md +1 -1
  125. package/docs/api/equipment-metering-capabilities.md +1 -1
  126. package/docs/api/equipment-release-capabilities.md +1 -1
  127. package/docs/api/exports.json +152 -2
  128. package/docs/api/exposure-exposure-duration-control.md +1 -1
  129. package/docs/api/exposure-exposure-mode-resolver.md +1 -1
  130. package/docs/api/exposure-exposure.md +1 -1
  131. package/docs/api/exposure-flash.md +1 -1
  132. package/docs/api/exposure-metering-scene-radiance.md +1 -1
  133. package/docs/api/exposure-metering-target.md +1 -1
  134. package/docs/api/exposure-metering-temporal.md +1 -1
  135. package/docs/api/exposure-metering.md +1 -1
  136. package/docs/api/exposure-program-line.md +1 -1
  137. package/docs/api/motion-camera-rotation.md +1 -1
  138. package/docs/api/motion-capture-rotation-inverse-mapping.md +1 -1
  139. package/docs/api/motion-capture-rotation-temporal-quadrature.md +1 -1
  140. package/docs/api/motion-capture-rotation-trajectory.md +1 -1
  141. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +1 -1
  142. package/docs/api/motion-extended-object-projection.md +1 -1
  143. package/docs/api/motion-projected-motion.md +1 -1
  144. package/docs/api/optics-aperture.md +1 -1
  145. package/docs/api/optics-circle-of-confusion.md +1 -1
  146. package/docs/api/optics-complex-pupil-psf.md +7 -1
  147. package/docs/api/optics-depth-of-field.md +1 -1
  148. package/docs/api/optics-diffraction.md +1 -1
  149. package/docs/api/optics-focus-breathing.md +1 -1
  150. package/docs/api/optics-focus-state.md +1 -1
  151. package/docs/api/optics-front-of-lens-filter.md +1 -1
  152. package/docs/api/optics-illumination-vignetting.md +1 -1
  153. package/docs/api/optics-lateral-chromatic-aberration.md +1 -1
  154. package/docs/api/optics-lens-psf-profile.md +1 -1
  155. package/docs/api/optics-polygon-diffraction.md +1 -1
  156. package/docs/api/optics-profile-contract.md +1 -1
  157. package/docs/api/optics-psf-foundation.md +1 -1
  158. package/docs/api/optics-radial-distortion.md +1 -1
  159. package/docs/api/optics-scene-to-sensor-irradiance.md +1 -1
  160. package/docs/api/optics-scene-to-sensor-quadrature.md +1 -1
  161. package/docs/api/optics-sensor-environment-query.md +1 -1
  162. package/docs/api/optics-sensor-psf-quadrature.md +1 -1
  163. package/docs/api/optics-stray-light.md +1 -1
  164. package/docs/api/optics-thin-lens.md +1 -1
  165. package/docs/api/output-capture-corrected-sdr.md +1 -1
  166. package/docs/api/output-capture-geometry.md +1 -1
  167. package/docs/api/output-capture-sdr.md +1 -1
  168. package/docs/api/output-crop.md +1 -1
  169. package/docs/api/output-geometric-transforms.md +1 -1
  170. package/docs/api/output-lens-corrections.md +1 -1
  171. package/docs/api/output-native-capture-sdr.md +150 -0
  172. package/docs/api/output-print-contrast-reference.md +82 -0
  173. package/docs/api/output-print-detail.md +1 -1
  174. package/docs/api/output-print-plan.md +1 -1
  175. package/docs/api/output-print-region-statistics.md +165 -0
  176. package/docs/api/output-sdr-rendering.md +1 -1
  177. package/docs/api/output-subject-framing-crop.md +1 -1
  178. package/docs/api/schema-camera.md +1 -1
  179. package/docs/api/schema-illumination-spectral.md +1 -1
  180. package/docs/api/schema-illumination-temporal.md +1 -1
  181. package/docs/api/schema-illumination.md +1 -1
  182. package/docs/api/schema-scene-radiance-temporal.md +1 -1
  183. package/docs/api/schema-scene-radiance.md +1 -1
  184. package/docs/api/schema-scene.md +1 -1
  185. package/docs/api/schema-validation.md +1 -1
  186. package/docs/api/sensor-accumulated-charge.md +1 -1
  187. package/docs/api/sensor-architecture.md +1 -1
  188. package/docs/api/sensor-camera-saturation-capacity.md +1 -1
  189. package/docs/api/sensor-capture-color-sampling-binding.md +1 -1
  190. package/docs/api/sensor-capture-mode-timing.md +1 -1
  191. package/docs/api/sensor-capture-mode.md +1 -1
  192. package/docs/api/sensor-color-sampling.md +1 -1
  193. package/docs/api/sensor-constant-rate-temporal-integration.md +1 -1
  194. package/docs/api/sensor-dark-current.md +1 -1
  195. package/docs/api/sensor-environment-photo-signal.md +1 -1
  196. package/docs/api/sensor-eqe-electron-rate.md +1 -1
  197. package/docs/api/sensor-eqe-local-exposure.md +1 -1
  198. package/docs/api/sensor-eqe-temporal-exposure.md +1 -1
  199. package/docs/api/sensor-exposure-window.md +1 -1
  200. package/docs/api/sensor-iso-signal-chain.md +1 -1
  201. package/docs/api/sensor-local-exposure-binding.md +1 -1
  202. package/docs/api/sensor-optical-stack.md +1 -1
  203. package/docs/api/sensor-photon-energy.md +1 -1
  204. package/docs/api/sensor-physical-charge-capacity.md +1 -1
  205. package/docs/api/sensor-pixel-pitch.md +1 -1
  206. package/docs/api/sensor-radiometry-readiness.md +1 -1
  207. package/docs/api/sensor-raw-readout.md +1 -1
  208. package/docs/api/sensor-raw-reconstruction.md +1 -1
  209. package/docs/api/sensor-readout-exposure-linkage.md +1 -1
  210. package/docs/api/sensor-readout-timing.md +1 -1
  211. package/docs/api/sensor-response-application-compatibility.md +1 -1
  212. package/docs/api/sensor-response-operating-range.md +1 -1
  213. package/docs/api/sensor-responsivity-photocurrent.md +1 -1
  214. package/docs/api/sensor-sampling-aperture.md +1 -1
  215. package/docs/api/sensor-scene-eqe-temporal-exposure.md +1 -1
  216. package/docs/api/sensor-sensor-geometry.md +1 -1
  217. package/docs/api/sensor-signal-noise.md +1 -1
  218. package/docs/api/sensor-spatial-sample-reduction.md +1 -1
  219. package/docs/api/sensor-spatial-sampling-quadrature.md +1 -1
  220. package/docs/api/sensor-spatio-spectral-reduction.md +1 -1
  221. package/docs/api/sensor-spectral-coverage.md +1 -1
  222. package/docs/api/sensor-spectral-quadrature.md +1 -1
  223. package/docs/api/sensor-spectral-response.md +1 -1
  224. package/docs/api/sensor-temporal-photo-signal.md +1 -1
  225. package/docs/api/simulation-poc-simulation.md +1 -1
  226. package/docs/api/stabilization-camera-shake.md +1 -1
  227. package/docs/api/stabilization-system.md +1 -1
  228. package/docs/licenses/castleCSF-MIT.txt +21 -0
  229. package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +4 -0
  230. package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +3 -0
  231. package/docs/validation/print-196-candidate-capabilities.json +28 -0
  232. package/docs/validation/print-196-candidate-evidence.json +356 -0
  233. package/docs/validation/print-196-engine-acceptance.json +81 -0
  234. package/docs/validation/print-detail-capabilities.json +4 -1
  235. package/docs/validation/print-detail-jpeg-evidence.json +116 -0
  236. package/package.json +1 -1
@@ -0,0 +1,356 @@
1
+ {
2
+ "schemaVersion": "0.1.0",
3
+ "engineCandidate": "1.2.0",
4
+ "humanScientificSourceReview": "pending",
5
+ "upstream": {
6
+ "repository": "https://github.com/gfxdisp/castleCSF",
7
+ "revision": "f4b0b722af83001d7af979281e06ca642d36e4e8",
8
+ "license": "MIT",
9
+ "reviewedFiles": [
10
+ {
11
+ "path": "LICENSE",
12
+ "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"
13
+ },
14
+ {
15
+ "path": "matlab/CSF_base.m",
16
+ "sha256": "f5fd8185004c23be16fdd3af46e543cb9ab54b7c40150f247fd940f0703de904"
17
+ },
18
+ {
19
+ "path": "matlab/CSF_castleCSF.m",
20
+ "sha256": "8fb5b55bc1643ace2a92d84613c84b299e9c9252e7c1e04e2eb86844963f4a81"
21
+ },
22
+ {
23
+ "path": "matlab/CSF_stelaCSF_lum_peak.m",
24
+ "sha256": "66a941b5fe938c8eb4aed52a82e29ceb0aacb4fe947b0c91418e1d6308bd5520"
25
+ },
26
+ {
27
+ "path": "matlab/CSF_castleCSF_chrom.m",
28
+ "sha256": "09c49ccb2ccc2430a11c72825ea92d16fc00a6383f62a5017e73e3559d87bf38"
29
+ }
30
+ ]
31
+ },
32
+ "referenceArtifacts": [
33
+ {
34
+ "path": "output/pdf/print-proof-reference.pdf",
35
+ "sha256": "4b1bba8a3e6a44b8b41d9fddcbd0c3e404a4b2d3f455aab1d813d068aa141428"
36
+ },
37
+ {
38
+ "path": "test/fixtures/print-detail/capture-backend-reference.json",
39
+ "sha256": "fd43590d5ca0359da2d6bd575e9fe7d4b695bc57ba1ac02de80fa33ebf252355"
40
+ },
41
+ {
42
+ "path": "test/fixtures/print-detail/contrast-reference.json",
43
+ "sha256": "0fb9cd0f6e3e7f9eaff59fdfe6b570285c566f4da15ed55d19a1de9d0df88a8b"
44
+ },
45
+ {
46
+ "path": "test/fixtures/print-detail/depth-backend-reference.json",
47
+ "sha256": "d1bca3ad17e6730ad3861bd267d60f4601df7c7d50480d31af306e6eea46296f"
48
+ },
49
+ {
50
+ "path": "test/fixtures/print-detail/generate_capture_reference.py",
51
+ "sha256": "88ebc759768120aeca66114baddd0425c806b17a6ae86bc31b5b21c4ad9fadc5"
52
+ },
53
+ {
54
+ "path": "test/fixtures/print-detail/generate_contrast_reference.py",
55
+ "sha256": "29ffed237c8936bad7541eb71b5e3fc579bc59637733a613107462e7492a4563"
56
+ },
57
+ {
58
+ "path": "test/fixtures/print-detail/generate_depth_reference.py",
59
+ "sha256": "155cc00a3875786330177a766de1e2b95e0a323bd465338d107d33c93af574e5"
60
+ },
61
+ {
62
+ "path": "test/fixtures/print-detail/generate_motion_reference.py",
63
+ "sha256": "09233fe0b61ea6cc1e4d1b26cf94d01a2ade71c59ed952936d71cf68b2f35a19"
64
+ },
65
+ {
66
+ "path": "test/fixtures/print-detail/generate_processing_reference.py",
67
+ "sha256": "3fc7af6118f6d9ec454e56167df5bc3ff3a7c6632f44237eb9031d18abeda337"
68
+ },
69
+ {
70
+ "path": "test/fixtures/print-detail/generate_proof_reference.py",
71
+ "sha256": "5bd9c34ac4a625ff1c784e20b085fbb816e6c282869c0ba453f68ba82bd17fd4"
72
+ },
73
+ {
74
+ "path": "test/fixtures/print-detail/generate_psf_reference.py",
75
+ "sha256": "05f1ce4248d48a322d05d12ed7bc494cbb1d8a06eae55d3a84e27932943632a1"
76
+ },
77
+ {
78
+ "path": "test/fixtures/print-detail/generate_pupil_convergence_reference.py",
79
+ "sha256": "0d070a0ff2f7f7aedcc4720f27c0f303f0c693aa6c9e59332a327a9f488566ec"
80
+ },
81
+ {
82
+ "path": "test/fixtures/print-detail/generate_readout_reference.py",
83
+ "sha256": "8bee4c1b779ab0568c54631dca0f5222046f4f5add90c1fb8bcf4f5fbdbaa5d6"
84
+ },
85
+ {
86
+ "path": "test/fixtures/print-detail/generate_reference.py",
87
+ "sha256": "75571a248d1ff091017546547179de4087e49391d8318f290ff301703c2f8e37"
88
+ },
89
+ {
90
+ "path": "test/fixtures/print-detail/generate_statistics_reference.py",
91
+ "sha256": "8d12470787dd45f679cba7236ed76df11340b3dc73e23f24e77bdf4a54ed890b"
92
+ },
93
+ {
94
+ "path": "test/fixtures/print-detail/generate_visibility_reference.py",
95
+ "sha256": "2df5a0fda275c6ad5082324752f1f117ac7c8dcb1bb878ad785ad9a182377beb"
96
+ },
97
+ {
98
+ "path": "test/fixtures/print-detail/motion-backend-reference.json",
99
+ "sha256": "f26ea45676d3123be1bae6a8b288151c25c0db199c453a8f97c9ded9578b3b51"
100
+ },
101
+ {
102
+ "path": "test/fixtures/print-detail/processing-reference.json",
103
+ "sha256": "bf327ca94cb936642a420be401e2f944662d86aa95da04d58f51f83ef0b62c71"
104
+ },
105
+ {
106
+ "path": "test/fixtures/print-detail/proof-inspection-reference.json",
107
+ "sha256": "7595e8ec64145db879b42384c6f440b03b4eb3edde6ba89fb7d40a01fad47b7e"
108
+ },
109
+ {
110
+ "path": "test/fixtures/print-detail/proof-layout-reference.json",
111
+ "sha256": "a226c12708d0bff77023dcb57578492bd018314985ff850ba6086fa29fb2cb3d"
112
+ },
113
+ {
114
+ "path": "test/fixtures/print-detail/psf-backend-reference.json",
115
+ "sha256": "acafebedfed3ce2837cde6db121c80ac652de44a54c3ae2b2516b7369aa921fd"
116
+ },
117
+ {
118
+ "path": "test/fixtures/print-detail/pupil-convergence-reference.json",
119
+ "sha256": "f643078ead1c3375a73306bad033d40465241ed70a7c83e09c50ae5da815014e"
120
+ },
121
+ {
122
+ "path": "test/fixtures/print-detail/readout-backend-reference.json",
123
+ "sha256": "e2ac2a2cc6dbc84307184c54d2dc2f2bf1ba7eb28ac0b097a07e3bf3557c366c"
124
+ },
125
+ {
126
+ "path": "test/fixtures/print-detail/sdr-reference.json",
127
+ "sha256": "b65f1a8c2ce0b8f3b799946a0ec94110fe9623c6348d156e31d6e41729208c30"
128
+ },
129
+ {
130
+ "path": "test/fixtures/print-detail/statistics-reference.json",
131
+ "sha256": "f7599612838f18ccc4eaa6e1876e5ea0fc1c5b2c59651531f10e29fda8df1f5b"
132
+ },
133
+ {
134
+ "path": "test/fixtures/print-detail/verify_proof_reference.py",
135
+ "sha256": "c199a248033d7d7b0003239dba5efc4adfdfbb37ac8198497bf1b4eab4492aa1"
136
+ },
137
+ {
138
+ "path": "test/fixtures/print-detail/visibility-backend-reference.json",
139
+ "sha256": "228c2a50c4661612c93c2c316ebdd26eacd0c3cc8eb234f0dd9110748b753cb8"
140
+ }
141
+ ],
142
+ "validation": {
143
+ "node": "26.8.1",
144
+ "tests": 2065,
145
+ "testFiles": 159,
146
+ "coveragePercent": {
147
+ "statements": 92.04,
148
+ "branches": 88.55,
149
+ "functions": 99.63,
150
+ "lines": 92.04
151
+ },
152
+ "strictPackedDocExamples": 67,
153
+ "packageFileCount": 810,
154
+ "qualified": "bounded numerical and named public backend conformance only",
155
+ "unqualified": "full #196 acceptance, capture/device/backend calibration, actual proof/UI scale, natural-image perception, human source/DCO review",
156
+ "additionalFullCoverageNode": "24.19.0"
157
+ },
158
+ "electronicReadoutProtocol": {
159
+ "version": "0.1.0",
160
+ "backend": "simulateSensorRawFrame",
161
+ "producerSchemaVersion": "0.3.0",
162
+ "captureNoiseModelVersion": "0.2.0",
163
+ "nativeRaster": {
164
+ "pixelWidth": 2,
165
+ "pixelHeight": 2
166
+ },
167
+ "containerBitDepth": 16,
168
+ "adcBitDepth": 12,
169
+ "sourceRadiometryVerified": false,
170
+ "scalarInterpretation": "declared conditional ideal neutral encoding, not photometric calibration",
171
+ "stageIsolation": "deterministic charge injection, zero photo/dark means and zero read noise",
172
+ "repeatCounts": [
173
+ 32,
174
+ 64,
175
+ 128,
176
+ 256
177
+ ],
178
+ "repeatModel": {
179
+ "photoMeanElectrons": 200,
180
+ "darkMeanElectrons": 8,
181
+ "readNoiseRmsElectrons": [
182
+ 0,
183
+ 2
184
+ ],
185
+ "referenceElectronsPerRelativeUnit": 200
186
+ },
187
+ "signedDarkModel": {
188
+ "photoMeanElectrons": 0,
189
+ "darkMeanElectrons": 0,
190
+ "readNoiseRmsElectrons": 8,
191
+ "blackLevelCode": 0,
192
+ "referenceElectronsPerRelativeUnit": 100
193
+ },
194
+ "uncertainty": "not-quantified; broad conformance bands are not confidence for a photograph",
195
+ "humanReview": "pending",
196
+ "implementationFiles": [
197
+ {
198
+ "path": "test/helpers/print-readout-backend-fixture.ts",
199
+ "sha256": "8582e513a6fba97035095a335e110a050d2116b701a504502f5dbf52bbc09c0f"
200
+ },
201
+ {
202
+ "path": "test/print-region-readout-backend.test.ts",
203
+ "sha256": "c9a1b006eeeebf1b1812790f415e31ea91bf550605be4289535ca1caa89b635f"
204
+ }
205
+ ]
206
+ },
207
+ "sourceCaptureProtocol": {
208
+ "version": "0.1.0",
209
+ "backend": "createProductionImageFormationPlan / environment capture / native RAW / processed output",
210
+ "nativeRaster": {
211
+ "pixelWidth": 2,
212
+ "pixelHeight": 2
213
+ },
214
+ "reference": "capture-backend-reference.json",
215
+ "source": "owned uniform flat-band environment",
216
+ "radianceScales": [
217
+ 0.5,
218
+ 1,
219
+ 2,
220
+ 4
221
+ ],
222
+ "wavelengthRangeNanometers": [
223
+ 540,
224
+ 560
225
+ ],
226
+ "exposureSeconds": 0.008,
227
+ "qe": 0.4,
228
+ "opticalTransmission": 0.85,
229
+ "providerQueriesPerCapture": 32,
230
+ "sourceRadiometryVerified": false,
231
+ "providerTransportVerified": false,
232
+ "physicalCalibration": "unassessed",
233
+ "humanReview": "pending",
234
+ "implementationFiles": [
235
+ {
236
+ "path": "test/print-region-capture-backend.test.ts",
237
+ "sha256": "1d4b4121e2b5b0bab82f56171fcf52b71a0eaad16e5a0304df75c5c665c9119d"
238
+ },
239
+ {
240
+ "path": "test/helpers/print-region-statistics-fixture.ts",
241
+ "sha256": "e1937d01204bcbbf7a7af32f0b3be4faa29af34b807ba399e6720a324fd8e117"
242
+ },
243
+ {
244
+ "path": "test/print-detail-depth-backend.test.ts",
245
+ "sha256": "3378d62426b40fda012cdfeb6caa7b02bdf81e7931bc501a3e1a2b90d5ecb6ca"
246
+ },
247
+ {
248
+ "path": "test/print-detail-psf-backend.test.ts",
249
+ "sha256": "9f6e7a1640df34972f66f678423ed75a468a8ad6a2d98966dc15c933c4e7f88e"
250
+ }
251
+ ]
252
+ },
253
+ "pupilSamplingPilot": {
254
+ "version": "0.1.0",
255
+ "reference": "pupil-convergence-reference.json",
256
+ "frequencyCyclesPerMm": 25,
257
+ "subjectDistancesM": [
258
+ 2,
259
+ 5,
260
+ 10
261
+ ],
262
+ "apertureFNumbers": [
263
+ 8,
264
+ 16,
265
+ 32
266
+ ],
267
+ "focusDistanceM": 5,
268
+ "wavelengthNm": 500,
269
+ "finalGridSamples": 61,
270
+ "pupilRadiusSamples": 15,
271
+ "maximumAbsoluteTransferError": 0.01,
272
+ "criterion": "candidate-informed-by-pilot-not-predeclared-physical-calibration",
273
+ "historical9x9Qualified": false,
274
+ "allFrequencies": "unassessed",
275
+ "humanReview": "pending",
276
+ "implementationFiles": [
277
+ {
278
+ "path": "test/helpers/print-depth-pupil-fixture.ts",
279
+ "sha256": "338dc84fdfa24f18bb5ae0c88918a9d5f8b33c66eef629ea01d061a780aaba94"
280
+ },
281
+ {
282
+ "path": "test/print-depth-pupil-convergence.test.ts",
283
+ "sha256": "754192f320688c2f314b682b8dc086556706eb3050fe31972496087cf26e04a3"
284
+ }
285
+ ]
286
+ },
287
+ "movingVisibilityProtocol": {
288
+ "version": "0.1.0",
289
+ "reference": "visibility-backend-reference.json",
290
+ "backend": "actual public production environment capture and native RAW/processed output",
291
+ "nearDepthM": 2,
292
+ "farDepthM": 10,
293
+ "foregroundVelocityMps": 125,
294
+ "motionAxes": [
295
+ "x",
296
+ "y"
297
+ ],
298
+ "exposureSeconds": 0.008,
299
+ "temporalSampleCounts": [
300
+ 2,
301
+ 4,
302
+ 8,
303
+ 16,
304
+ 32,
305
+ 64,
306
+ 128
307
+ ],
308
+ "maximumAbsoluteSourceScaleError": "1 / temporalSampleCount",
309
+ "engineSceneVisibilityCalculated": false,
310
+ "providerTransportVerified": false,
311
+ "sourceRadiometryVerified": false,
312
+ "psf": "explicitly omitted",
313
+ "movingDepthEdgePsf": "unsupported",
314
+ "humanReview": "pending",
315
+ "implementationFiles": [
316
+ {
317
+ "path": "test/helpers/tier-production-fixture.ts",
318
+ "sha256": "b8b0beda3907fe63190cdc1ce1d8bed0197901ba3f76802e3b2dea12f0e4f176"
319
+ },
320
+ {
321
+ "path": "test/print-region-visibility-backend.test.ts",
322
+ "sha256": "67e165dfe9c1d406df9a3559e5ae3299ddfcb0f64c725a26e2a8462a47cb137f"
323
+ }
324
+ ]
325
+ },
326
+ "physicalProofReference": {
327
+ "version": "0.1.0",
328
+ "reference": "proof-layout-reference.json",
329
+ "inspection": "proof-inspection-reference.json",
330
+ "pdf": "output/pdf/print-proof-reference.pdf",
331
+ "reportlabVersion": "4.4.9",
332
+ "pypdfVersion": "6.10.0",
333
+ "pageSizeMm": [
334
+ 210,
335
+ 297
336
+ ],
337
+ "pdfOperatorTolerancePoints": 0.0001,
338
+ "nativeRetainedCrop": [
339
+ 16,
340
+ 8
341
+ ],
342
+ "generatorReproduction": "byte-identical",
343
+ "finalPagesVisuallyInspected": 2,
344
+ "embeddedFontPrograms": false,
345
+ "actualPrinterScale": "unassessed",
346
+ "privateProductIntegration": "unassessed",
347
+ "colorLuminancePerception": "unassessed",
348
+ "humanReview": "pending",
349
+ "implementationFiles": [
350
+ {
351
+ "path": "test/print-proof-reference.test.ts",
352
+ "sha256": "29c6f28141830bfc926257c41558c54f1d73ffc06783360c5900dcfbcbfbd7b1"
353
+ }
354
+ ]
355
+ }
356
+ }
@@ -0,0 +1,81 @@
1
+ {
2
+ "recordVersion": "0.1.0",
3
+ "engineCandidate": "1.2.0",
4
+ "parentApprovedMerge": "c58d9eb9dcba807f020df45be1ed5ec4f6c081e4",
5
+ "parentReviewedHead": "43e4e9e4baac90f7b16c6e068b7964c0546a8134",
6
+ "parentTree": "0b9013746d1deddc0d3cf31d432f011ac5bf2ee8",
7
+ "newScientificSourceReview": "pending",
8
+ "newDcoCertification": "pending",
9
+ "engineAcceptance": "review-ready-bounded-computational-domain",
10
+ "fullNewUiAcceptance": "outstanding-in-app-owners",
11
+ "taggingAndPublicationApproved": false,
12
+ "backend": "simulateEnvironmentSensorRawFrame",
13
+ "sourceDomain": "owned-angular-neutral-grating-point-optics-540-560-nm",
14
+ "nativeRaster": [
15
+ 4,
16
+ 4
17
+ ],
18
+ "roi": [
19
+ 0,
20
+ 0,
21
+ 4,
22
+ 4
23
+ ],
24
+ "motion": "static",
25
+ "sourceRadiometryVerified": false,
26
+ "providerTransportVerified": false,
27
+ "deviceCalibration": "unassessed",
28
+ "observerAndNaturalImageVisibility": "unassessed",
29
+ "actualPrinterAndProductProofScale": "unassessed",
30
+ "axes": [
31
+ "x",
32
+ "y"
33
+ ],
34
+ "phasesRadians": [
35
+ 0,
36
+ 0.37
37
+ ],
38
+ "spatialMidpointCounts": [
39
+ 1,
40
+ 2,
41
+ 4,
42
+ 8
43
+ ],
44
+ "maximumProviderCallbacksPerCapture": 2048,
45
+ "independentMethod": "80-digit Decimal Taylor cosine, analytic midpoint bound, previously independent SI photoelectron reference",
46
+ "maximumAbsoluteScalarError": 1e-12,
47
+ "adcErrorBound": "half the actual declared conversion gain per source photo reference, with same noise realization and all clipping flags false",
48
+ "qualifiedMeaning": "conditional neutral photo expectation and separately bound noisy/readout scalar diagnostics; no MTF/visibility/overall print verdict",
49
+ "localChecks": {
50
+ "node": "26.8.1",
51
+ "coverageNode": "24.19.0",
52
+ "tests": 2082,
53
+ "testFiles": 160,
54
+ "coveragePercent": {
55
+ "statements": 92.04,
56
+ "branches": 88.55,
57
+ "functions": 99.63,
58
+ "lines": 92.04
59
+ },
60
+ "strictPackedExamples": 67,
61
+ "packageFileCount": 812
62
+ },
63
+ "newArtifacts": [
64
+ {
65
+ "path": "test/fixtures/print-detail/generate_native_detail_reference.py",
66
+ "sha256": "dcf29815bd6736356bd2e487aa56689710c43879f2daa4728084bd4095f5bf11"
67
+ },
68
+ {
69
+ "path": "test/fixtures/print-detail/native-detail-reference.json",
70
+ "sha256": "112d188997ee421b5a3b969522263a07ed427e0f16f75e394feeae4ba20c6117"
71
+ },
72
+ {
73
+ "path": "test/print-detail-native-capture.test.ts",
74
+ "sha256": "31b28c10ff49abdba33353b84da4360f03b4f3100732dbcd657c4b6f1766c961"
75
+ },
76
+ {
77
+ "path": "docs/PRINT_196_ENGINE_ACCEPTANCE.md",
78
+ "sha256": "a3f6a9a48db3f0a8b89c63f14f3681c06a3f4aca7c9074a53c0d46ef8807362c"
79
+ }
80
+ ]
81
+ }
@@ -96,5 +96,8 @@
96
96
  "post-resampling-linear",
97
97
  "post-encoding-decoded-linear"
98
98
  ]
99
- }
99
+ },
100
+ "recordScope": "historical mathematical-only qualification snapshot; retained values and source hashes describe that snapshot, not current candidate",
101
+ "supersededBy": "print-196-candidate-capabilities.json",
102
+ "currentEvidenceInventory": "print-196-candidate-evidence.json"
100
103
  }
@@ -0,0 +1,116 @@
1
+ {
2
+ "evidenceVersion": "0.1.0",
3
+ "metricVersion": "0.1.0",
4
+ "engineCandidate": "1.1.0",
5
+ "parentCommit": "12f304f087d5cbe41266e2a81be2d6a1d521e692",
6
+ "humanReview": "pending",
7
+ "fullAssessmentAcceptance": "blocked",
8
+ "capability": "bounded-neutral-paired-export-jpeg-regional-diagnostic",
9
+ "status": "passed-bounded-paired-export-jpeg-execution-only",
10
+ "sourceQualification": "owned-post-adc-code-target-not-physical-acquisition",
11
+ "backend": "public-paired-export-plus-recorded-independent-Pillow-readback",
12
+ "decoder": {
13
+ "Pillow": "12.3.0",
14
+ "libjpegApiVersion": "6.2",
15
+ "libjpegTurboVersion": "3.1.4.1",
16
+ "Python": "3.12.14"
17
+ },
18
+ "nodeCI": "regenerates-exact-JPEG-bytes-and-consumes-committed-independent-decode; does-not-execute-Pillow",
19
+ "runtime": "v24.19.0",
20
+ "focusedTests": 13,
21
+ "sourceFilesSha256": {
22
+ "test/helpers/print-detail-jpeg-fixture.ts": "a1294537251c4feba4ae2c462a040730778fb7e776258d8d2cbc66c501a68b82",
23
+ "test/print-detail-jpeg-integration.test.ts": "b9c946560a2ae5e39a30c88cbea2b4422b4712b02e98f0a8ee0133102d847a34",
24
+ "scripts/generate-print-detail-jpeg.ts": "eb112d5259e558826691737770b08819b2128782f6a3434393416c90d12871aa",
25
+ "scripts/generate-print-detail-jpeg.mjs": "c4eeb2c124ec082c4007eeebc74e74c17a42c9225bf944596bd95777a886aa8c",
26
+ "scripts/tsconfig.print-jpeg.json": "116c879efe79b8b870bfa407ba3bcdffaefb37ab33755c436a7c3eca77260fcd",
27
+ "scripts/verify-print-detail-jpeg.py": "38afb7daf89859e5e68fe38850a12a0c1899a891dc9fe4acb296c5d6acd65927",
28
+ "src/capture/photographic-export.ts": "3c0ea2bfd5081447c42e6ffa6f0c9d0f2ea63b0bf170580f4ff739b594d1088e",
29
+ "src/capture/export-jpeg.ts": "04228e0ee48a07ce04f5d1fbc4836825a384932c5c9c25a96d432e3971a0c866",
30
+ "src/capture/raw-frame-reconstruction.ts": "de0734375b00dbb375e98dd9aabae88d36f1cec1adfc3812949ff1c27fd13a3d",
31
+ "src/color/sensor-color-development.ts": "a7b315b44c6b61942a0818ab1b5ea9d2232b720f83339a2307052d222b914897",
32
+ "src/output/sdr-rendering.ts": "38abc70438d3abf7a05cb50a2fe5a688d04f94b843fff4ba4d4cea760d0d1f47",
33
+ "src/output/print-detail.ts": "1bf1c6032fabd944806eddad79c560c266bd7776b48b3c0964056c9da451be81",
34
+ "docs/PRINT_DETAIL_JPEG_EVIDENCE.md": "d6f9bd340011f063d7e9d2de26073fbb02015ebe8878274c355dbf157035c6f9",
35
+ "test/fixtures/print-detail/jpeg/export-manifest.json": "2ab550758af1217cec245b22104f2f157fc1b5b98023e11b983cd8b51b6f99cc",
36
+ "test/fixtures/print-detail/jpeg/independent-reference.json": "fbde5ef5cb776cf41e199553961cf174caec2a7fb768dad0743722e21e8f9571",
37
+ "test/fixtures/print-detail/jpeg/landscape-inverted-q1.jpg": "6facaed0b2346ad2d1bb7836edb2243954a2590f4c245c524da9b5fd483dee1c",
38
+ "test/fixtures/print-detail/jpeg/landscape-inverted-q32.jpg": "17304b75010277d30aac7df86bef8b9a87d7c0ad709fe7f8cd81f66c0e43a3b3",
39
+ "test/fixtures/print-detail/jpeg/landscape-q1.jpg": "10675e622d2ff5e5a389d90205eeaf94c9c41b546d138457900b1acd215570d7",
40
+ "test/fixtures/print-detail/jpeg/landscape-q32.jpg": "7fa1a655a8278b0da95c0c03201dba8a3d7d2c1bca4a1e199ec1def205eaafe9",
41
+ "test/fixtures/print-detail/jpeg/portrait-clockwise-q1.jpg": "6505e7e1fdcd33801cffebbfcde24de4dcc15f7972279198f6c73b9649060de7",
42
+ "test/fixtures/print-detail/jpeg/portrait-clockwise-q32.jpg": "fed3a716eb5c5ace307b571fbc78cfdc0ca7fdc4055c3e1c8c7fe7fcded01b8a",
43
+ "test/fixtures/print-detail/jpeg/portrait-counter-clockwise-q1.jpg": "7f1aa1dfc9f0ba1ecec8db2f22b15c9b1362f3d00b28aa082e440d47dfe5f887",
44
+ "test/fixtures/print-detail/jpeg/portrait-counter-clockwise-q32.jpg": "38af5cfadb9b88c38c2072963f529db24a4672edf92d60e64b80d86dcefa8889"
45
+ },
46
+ "envelope": {
47
+ "nativeRaster": [
48
+ 20,
49
+ 16
50
+ ],
51
+ "orientations": 4,
52
+ "quantizationSteps": [
53
+ 1,
54
+ 32
55
+ ],
56
+ "subsampling": "444",
57
+ "roiOrigin": [
58
+ 2,
59
+ 2
60
+ ],
61
+ "roiLandscape": [
62
+ 16,
63
+ 8
64
+ ],
65
+ "roiPortrait": [
66
+ 8,
67
+ 16
68
+ ],
69
+ "source": "neutral-post-ADC-two-sample-held-quarter-grating",
70
+ "decoderPolicy": "RGB-neutral-only-sRGB-inverse-transfer",
71
+ "referenceModulation": ".5*cos(pi/8)",
72
+ "sourceMean": "384/959",
73
+ "sampleToleranceAbsolute": 1e-12,
74
+ "measurementToleranceAbsolute": 1e-10,
75
+ "pixelAndArtifactIdentity": "exact-bytes-and-sha256"
76
+ },
77
+ "unqualified": [
78
+ "human-scientific-source-review",
79
+ "optical-source-acquisition-and-calibration",
80
+ "actual-UI-GPU-and-device",
81
+ "native-resolution-production",
82
+ "warp-resampling",
83
+ "colored-luminance-and-ICC",
84
+ "other-codecs-and-decoder-variants",
85
+ "captured-system-MTF",
86
+ "depth-and-occlusion",
87
+ "noise-aliasing-halos-compression-quality-metrics",
88
+ "observer-perception",
89
+ "printer-substrate"
90
+ ],
91
+ "fullSuite": {
92
+ "files": 146,
93
+ "tests": 1723
94
+ },
95
+ "coverage": {
96
+ "lines": 91.84,
97
+ "statements": 91.87,
98
+ "functions": 99.62,
99
+ "branches": 88.27
100
+ },
101
+ "independentChecks": [
102
+ "Pillow-exact-JPEG-decode",
103
+ "neutral-source-preencode-and-registration-truth",
104
+ "source-fundamental-identity",
105
+ "Python-independent-decoded-coefficients",
106
+ "separate-directory-byte-for-byte-reproduction"
107
+ ],
108
+ "localReleaseGates": [
109
+ "check",
110
+ "coverage",
111
+ "build",
112
+ "pack:check",
113
+ "docs:check",
114
+ "release:consumer-check"
115
+ ]
116
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@photivra/engine",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "private": false,
5
5
  "description": "Scientific TypeScript engine for camera optics, exposure, focus, motion, sensor sampling, diffraction, and digital imaging calculations.",
6
6
  "type": "module",