@photivra/engine 1.4.0 → 2.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.
- package/CHANGELOG.md +401 -6
- package/CITATION.cff +1 -1
- package/NODE_SUPPORT.md +64 -12
- package/README.md +301 -182
- package/SECURITY.md +37 -28
- package/THIRD_PARTY.md +148 -4
- package/dist/camera/equivalent-focal-length.d.ts +13 -14
- package/dist/camera/equivalent-focal-length.js +15 -13
- package/dist/camera/equivalent-focal-length.js.map +1 -1
- package/dist/camera/field-of-view.d.ts +30 -19
- package/dist/camera/field-of-view.js +67 -18
- package/dist/camera/field-of-view.js.map +1 -1
- package/dist/camera/lens-projection.d.ts +170 -0
- package/dist/camera/lens-projection.js +444 -0
- package/dist/camera/lens-projection.js.map +1 -0
- package/dist/camera/projected-object-size.d.ts +10 -11
- package/dist/camera/projected-object-size.js +12 -10
- package/dist/camera/projected-object-size.js.map +1 -1
- package/dist/capture/capture-export-metadata.d.ts +9 -10
- package/dist/capture/capture-export-metadata.js +8 -5
- package/dist/capture/capture-export-metadata.js.map +1 -1
- package/dist/capture/dng-import.d.ts +91 -0
- package/dist/capture/dng-import.js +343 -0
- package/dist/capture/dng-import.js.map +1 -0
- package/dist/capture/environment-raw-producer.d.ts +37 -17
- package/dist/capture/environment-raw-producer.js +43 -19
- package/dist/capture/environment-raw-producer.js.map +1 -1
- package/dist/capture/export-jpeg.d.ts +35 -4
- package/dist/capture/export-jpeg.js +133 -47
- package/dist/capture/export-jpeg.js.map +1 -1
- package/dist/capture/export-tiff.d.ts +48 -24
- package/dist/capture/export-tiff.js +91 -31
- package/dist/capture/export-tiff.js.map +1 -1
- package/dist/capture/focus-control.d.ts +42 -65
- package/dist/capture/focus-control.js +56 -75
- package/dist/capture/focus-control.js.map +1 -1
- package/dist/capture/host-yield-cadence.d.ts +25 -0
- package/dist/capture/host-yield-cadence.js +25 -0
- package/dist/capture/host-yield-cadence.js.map +1 -0
- package/dist/capture/linear-encoding.d.ts +14 -12
- package/dist/capture/linear-encoding.js +14 -13
- package/dist/capture/linear-encoding.js.map +1 -1
- package/dist/capture/lossless-jpeg.d.ts +27 -0
- package/dist/capture/lossless-jpeg.js +237 -0
- package/dist/capture/lossless-jpeg.js.map +1 -0
- package/dist/capture/native-environment-lean.d.ts +227 -0
- package/dist/capture/native-environment-lean.js +974 -0
- package/dist/capture/native-environment-lean.js.map +1 -0
- package/dist/capture/native-environment-optical-stage.d.ts +97 -0
- package/dist/capture/native-environment-optical-stage.js +340 -0
- package/dist/capture/native-environment-optical-stage.js.map +1 -0
- package/dist/capture/native-environment-raw.d.ts +140 -6
- package/dist/capture/native-environment-raw.js +435 -34
- package/dist/capture/native-environment-raw.js.map +1 -1
- package/dist/capture/native-raw-development.d.ts +118 -5
- package/dist/capture/native-raw-development.js +224 -59
- package/dist/capture/native-raw-development.js.map +1 -1
- package/dist/capture/native-raw-dng.d.ts +60 -0
- package/dist/capture/native-raw-dng.js +167 -0
- package/dist/capture/native-raw-dng.js.map +1 -0
- package/dist/capture/native-raw.d.ts +67 -10
- package/dist/capture/native-raw.js +90 -24
- package/dist/capture/native-raw.js.map +1 -1
- package/dist/capture/packed-sensor-raw.d.ts +160 -0
- package/dist/capture/packed-sensor-raw.js +221 -0
- package/dist/capture/packed-sensor-raw.js.map +1 -0
- package/dist/capture/photographic-export.d.ts +58 -35
- package/dist/capture/photographic-export.js +177 -70
- package/dist/capture/photographic-export.js.map +1 -1
- package/dist/capture/raw-development-kernel.d.ts +52 -0
- package/dist/capture/raw-development-kernel.js +88 -0
- package/dist/capture/raw-development-kernel.js.map +1 -0
- package/dist/capture/raw-frame-limits.d.ts +7 -7
- package/dist/capture/raw-frame-limits.js +7 -6
- package/dist/capture/raw-frame-limits.js.map +1 -1
- package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
- package/dist/capture/raw-frame-reconstruction.js +9 -8
- package/dist/capture/raw-frame-reconstruction.js.map +1 -1
- package/dist/capture/raw-white-level.d.ts +55 -0
- package/dist/capture/raw-white-level.js +165 -0
- package/dist/capture/raw-white-level.js.map +1 -0
- package/dist/capture/release-sequence.d.ts +5 -7
- package/dist/capture/release-sequence.js +15 -13
- package/dist/capture/release-sequence.js.map +1 -1
- package/dist/capture/sensor-raw-frame.d.ts +5 -6
- package/dist/capture/sensor-raw-frame.js +26 -9
- package/dist/capture/sensor-raw-frame.js.map +1 -1
- package/dist/capture/sensor-raw-producer.d.ts +21 -13
- package/dist/capture/sensor-raw-producer.js +86 -25
- package/dist/capture/sensor-raw-producer.js.map +1 -1
- package/dist/capture/simulated-capture.d.ts +15 -16
- package/dist/capture/simulated-capture.js +22 -12
- package/dist/capture/simulated-capture.js.map +1 -1
- package/dist/color/camera-color-matrix.d.ts +69 -0
- package/dist/color/camera-color-matrix.js +132 -0
- package/dist/color/camera-color-matrix.js.map +1 -0
- package/dist/color/capture-color.d.ts +17 -10
- package/dist/color/capture-color.js +50 -17
- package/dist/color/capture-color.js.map +1 -1
- package/dist/color/chromatic-adaptation.d.ts +63 -0
- package/dist/color/chromatic-adaptation.js +91 -0
- package/dist/color/chromatic-adaptation.js.map +1 -0
- package/dist/color/color-difference.d.ts +104 -0
- package/dist/color/color-difference.js +205 -0
- package/dist/color/color-difference.js.map +1 -0
- package/dist/color/color-matching-functions.d.ts +168 -0
- package/dist/color/color-matching-functions.js +309 -0
- package/dist/color/color-matching-functions.js.map +1 -0
- package/dist/color/colorimetry-math.d.ts +52 -0
- package/dist/color/colorimetry-math.js +144 -0
- package/dist/color/colorimetry-math.js.map +1 -0
- package/dist/color/gamut-mapping.d.ts +54 -0
- package/dist/color/gamut-mapping.js +107 -0
- package/dist/color/gamut-mapping.js.map +1 -0
- package/dist/color/illuminants.d.ts +182 -0
- package/dist/color/illuminants.js +434 -0
- package/dist/color/illuminants.js.map +1 -0
- package/dist/color/rgb-color-spaces.d.ts +79 -0
- package/dist/color/rgb-color-spaces.js +115 -0
- package/dist/color/rgb-color-spaces.js.map +1 -0
- package/dist/color/sensor-color-development.d.ts +33 -11
- package/dist/color/sensor-color-development.js +104 -30
- package/dist/color/sensor-color-development.js.map +1 -1
- package/dist/color/srgb-icc.d.ts +9 -2
- package/dist/color/srgb-icc.js +16 -5
- package/dist/color/srgb-icc.js.map +1 -1
- package/dist/color/srgb-transfer.d.ts +1 -2
- package/dist/color/srgb-transfer.js +1 -1
- package/dist/color/srgb-transfer.js.map +1 -1
- package/dist/color/white-balance.d.ts +68 -19
- package/dist/color/white-balance.js +168 -35
- package/dist/color/white-balance.js.map +1 -1
- package/dist/composition/image-formation-plan.d.ts +152 -128
- package/dist/composition/image-formation-plan.js +292 -138
- package/dist/composition/image-formation-plan.js.map +1 -1
- package/dist/composition/plan-consumer.d.ts +6 -7
- package/dist/composition/plan-consumer.js +14 -11
- package/dist/composition/plan-consumer.js.map +1 -1
- package/dist/core/calculation-result.d.ts +21 -14
- package/dist/core/calculation-result.js +209 -11
- package/dist/core/calculation-result.js.map +1 -1
- package/dist/core/canonical-json.d.ts +13 -8
- package/dist/core/canonical-json.js +34 -15
- package/dist/core/canonical-json.js.map +1 -1
- package/dist/core/configuration-error.d.ts +5 -4
- package/dist/core/configuration-error.js +5 -3
- package/dist/core/configuration-error.js.map +1 -1
- package/dist/core/evidence-provenance.d.ts +12 -12
- package/dist/core/evidence-provenance.js +10 -9
- package/dist/core/evidence-provenance.js.map +1 -1
- package/dist/core/image-formation.d.ts +11 -10
- package/dist/core/image-formation.js +11 -9
- package/dist/core/image-formation.js.map +1 -1
- package/dist/core/owned-data.d.ts +9 -17
- package/dist/core/owned-data.js +9 -16
- package/dist/core/owned-data.js.map +1 -1
- package/dist/core/portable-math.d.ts +15 -0
- package/dist/core/portable-math.js +56 -0
- package/dist/core/portable-math.js.map +1 -0
- package/dist/core/record-validation.d.ts +48 -9
- package/dist/core/record-validation.js +93 -19
- package/dist/core/record-validation.js.map +1 -1
- package/dist/core/scientific-assurance.d.ts +16 -14
- package/dist/core/scientific-assurance.js +22 -18
- package/dist/core/scientific-assurance.js.map +1 -1
- package/dist/core/spectral-composition.d.ts +13 -14
- package/dist/core/spectral-composition.js +30 -27
- package/dist/core/spectral-composition.js.map +1 -1
- package/dist/core/spectral.d.ts +5 -6
- package/dist/core/spectral.js +9 -7
- package/dist/core/spectral.js.map +1 -1
- package/dist/core/validation.d.ts +3 -6
- package/dist/core/validation.js +3 -5
- package/dist/core/validation.js.map +1 -1
- package/dist/core/version.d.ts +6 -6
- package/dist/core/version.js +6 -5
- package/dist/core/version.js.map +1 -1
- package/dist/equipment/exposure-capabilities.d.ts +10 -10
- package/dist/equipment/exposure-capabilities.js +40 -30
- package/dist/equipment/exposure-capabilities.js.map +1 -1
- package/dist/equipment/generic-tier-assets.d.ts +13 -6
- package/dist/equipment/generic-tier-assets.js +34 -15
- package/dist/equipment/generic-tier-assets.js.map +1 -1
- package/dist/equipment/generic-tier-presets.d.ts +5 -6
- package/dist/equipment/generic-tier-presets.js +15 -13
- package/dist/equipment/generic-tier-presets.js.map +1 -1
- package/dist/equipment/iso-capabilities.d.ts +21 -22
- package/dist/equipment/iso-capabilities.js +49 -44
- package/dist/equipment/iso-capabilities.js.map +1 -1
- package/dist/equipment/metering-capabilities.d.ts +5 -6
- package/dist/equipment/metering-capabilities.js +22 -19
- package/dist/equipment/metering-capabilities.js.map +1 -1
- package/dist/equipment/release-capabilities.d.ts +3 -4
- package/dist/equipment/release-capabilities.js +18 -14
- package/dist/equipment/release-capabilities.js.map +1 -1
- package/dist/exposure/exposure-duration-control.d.ts +19 -17
- package/dist/exposure/exposure-duration-control.js +27 -23
- package/dist/exposure/exposure-duration-control.js.map +1 -1
- package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
- package/dist/exposure/exposure-mode-resolver.js +127 -82
- package/dist/exposure/exposure-mode-resolver.js.map +1 -1
- package/dist/exposure/exposure.d.ts +17 -16
- package/dist/exposure/exposure.js +22 -15
- package/dist/exposure/exposure.js.map +1 -1
- package/dist/exposure/flash-ttl.d.ts +135 -0
- package/dist/exposure/flash-ttl.js +193 -0
- package/dist/exposure/flash-ttl.js.map +1 -0
- package/dist/exposure/flash.d.ts +144 -36
- package/dist/exposure/flash.js +259 -59
- package/dist/exposure/flash.js.map +1 -1
- package/dist/exposure/metering-scene-radiance.d.ts +10 -10
- package/dist/exposure/metering-scene-radiance.js +42 -23
- package/dist/exposure/metering-scene-radiance.js.map +1 -1
- package/dist/exposure/metering-target.d.ts +8 -8
- package/dist/exposure/metering-target.js +30 -20
- package/dist/exposure/metering-target.js.map +1 -1
- package/dist/exposure/metering-temporal.d.ts +16 -15
- package/dist/exposure/metering-temporal.js +41 -19
- package/dist/exposure/metering-temporal.js.map +1 -1
- package/dist/exposure/metering.d.ts +64 -17
- package/dist/exposure/metering.js +159 -30
- package/dist/exposure/metering.js.map +1 -1
- package/dist/exposure/program-line.d.ts +5 -5
- package/dist/exposure/program-line.js +20 -13
- package/dist/exposure/program-line.js.map +1 -1
- package/dist/facade/camera-preset.d.ts +8 -0
- package/dist/facade/camera-preset.js +102 -0
- package/dist/facade/camera-preset.js.map +1 -0
- package/dist/facade/chart-radiance-batch.d.ts +57 -0
- package/dist/facade/chart-radiance-batch.js +121 -0
- package/dist/facade/chart-radiance-batch.js.map +1 -0
- package/dist/facade/chart-scenes.d.ts +177 -0
- package/dist/facade/chart-scenes.js +232 -0
- package/dist/facade/chart-scenes.js.map +1 -0
- package/dist/facade/host-yield.d.ts +7 -0
- package/dist/facade/host-yield.js +23 -0
- package/dist/facade/host-yield.js.map +1 -0
- package/dist/facade/scene-radiance.d.ts +117 -0
- package/dist/facade/scene-radiance.js +205 -0
- package/dist/facade/scene-radiance.js.map +1 -0
- package/dist/facade/simulate-capture.d.ts +284 -0
- package/dist/facade/simulate-capture.js +1026 -0
- package/dist/facade/simulate-capture.js.map +1 -0
- package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
- package/dist/gpu/chart-radiance-gpu.js +176 -0
- package/dist/gpu/chart-radiance-gpu.js.map +1 -0
- package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
- package/dist/gpu/image-kernel-accelerator.js +720 -0
- package/dist/gpu/image-kernel-accelerator.js.map +1 -0
- package/dist/gpu/image-kernel-execution.d.ts +92 -0
- package/dist/gpu/image-kernel-execution.js +84 -0
- package/dist/gpu/image-kernel-execution.js.map +1 -0
- package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
- package/dist/gpu/sensor-stage-gpu.js +317 -0
- package/dist/gpu/sensor-stage-gpu.js.map +1 -0
- package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
- package/dist/gpu/temporal-sum-gpu.js +150 -0
- package/dist/gpu/temporal-sum-gpu.js.map +1 -0
- package/dist/gpu/webgpu-runtime.d.ts +63 -0
- package/dist/gpu/webgpu-runtime.js +215 -0
- package/dist/gpu/webgpu-runtime.js.map +1 -0
- package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
- package/dist/gpu/wgsl-chart-kernel.js +165 -0
- package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
- package/dist/gpu/wgsl-kernels.d.ts +53 -0
- package/dist/gpu/wgsl-kernels.js +365 -0
- package/dist/gpu/wgsl-kernels.js.map +1 -0
- package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
- package/dist/gpu/wgsl-sensor-kernel.js +409 -0
- package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
- package/dist/index.d.ts +89 -25
- package/dist/index.js +59 -15
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +92 -40
- package/dist/motion/camera-rotation.js +84 -47
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
- package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
- package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
- package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
- package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
- package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
- package/dist/motion/capture-rotation-trajectory.js +36 -26
- package/dist/motion/capture-rotation-trajectory.js.map +1 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
- package/dist/motion/extended-object-projection.d.ts +19 -16
- package/dist/motion/extended-object-projection.js +38 -18
- package/dist/motion/extended-object-projection.js.map +1 -1
- package/dist/motion/projected-motion.d.ts +18 -17
- package/dist/motion/projected-motion.js +25 -17
- package/dist/motion/projected-motion.js.map +1 -1
- package/dist/motion/temporal-exposure-sum.d.ts +55 -0
- package/dist/motion/temporal-exposure-sum.js +141 -0
- package/dist/motion/temporal-exposure-sum.js.map +1 -0
- package/dist/motion/video-sequence.d.ts +111 -0
- package/dist/motion/video-sequence.js +179 -0
- package/dist/motion/video-sequence.js.map +1 -0
- package/dist/optics/aperture.d.ts +14 -15
- package/dist/optics/aperture.js +13 -11
- package/dist/optics/aperture.js.map +1 -1
- package/dist/optics/atmospheric-haze.d.ts +83 -0
- package/dist/optics/atmospheric-haze.js +113 -0
- package/dist/optics/atmospheric-haze.js.map +1 -0
- package/dist/optics/brown-conrady-distortion.d.ts +116 -0
- package/dist/optics/brown-conrady-distortion.js +291 -0
- package/dist/optics/brown-conrady-distortion.js.map +1 -0
- package/dist/optics/circle-of-confusion.d.ts +10 -10
- package/dist/optics/circle-of-confusion.js +15 -11
- package/dist/optics/circle-of-confusion.js.map +1 -1
- package/dist/optics/complex-pupil-psf.d.ts +64 -33
- package/dist/optics/complex-pupil-psf.js +190 -98
- package/dist/optics/complex-pupil-psf.js.map +1 -1
- package/dist/optics/depth-of-field.d.ts +25 -15
- package/dist/optics/depth-of-field.js +67 -27
- package/dist/optics/depth-of-field.js.map +1 -1
- package/dist/optics/diffraction.d.ts +14 -13
- package/dist/optics/diffraction.js +14 -10
- package/dist/optics/diffraction.js.map +1 -1
- package/dist/optics/focus-breathing.d.ts +88 -27
- package/dist/optics/focus-breathing.js +114 -23
- package/dist/optics/focus-breathing.js.map +1 -1
- package/dist/optics/focus-state.d.ts +18 -18
- package/dist/optics/focus-state.js +21 -15
- package/dist/optics/focus-state.js.map +1 -1
- package/dist/optics/front-of-lens-filter.d.ts +45 -14
- package/dist/optics/front-of-lens-filter.js +259 -88
- package/dist/optics/front-of-lens-filter.js.map +1 -1
- package/dist/optics/illumination-vignetting.d.ts +16 -17
- package/dist/optics/illumination-vignetting.js +40 -17
- package/dist/optics/illumination-vignetting.js.map +1 -1
- package/dist/optics/irradiance-convolution.d.ts +59 -0
- package/dist/optics/irradiance-convolution.js +138 -0
- package/dist/optics/irradiance-convolution.js.map +1 -0
- package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
- package/dist/optics/lateral-chromatic-aberration.js +33 -23
- package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
- package/dist/optics/lens-psf-kernels.d.ts +89 -0
- package/dist/optics/lens-psf-kernels.js +175 -0
- package/dist/optics/lens-psf-kernels.js.map +1 -0
- package/dist/optics/lens-psf-profile.d.ts +78 -46
- package/dist/optics/lens-psf-profile.js +335 -124
- package/dist/optics/lens-psf-profile.js.map +1 -1
- package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
- package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
- package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
- package/dist/optics/polygon-diffraction.d.ts +80 -23
- package/dist/optics/polygon-diffraction.js +130 -25
- package/dist/optics/polygon-diffraction.js.map +1 -1
- package/dist/optics/profile-contract.d.ts +5 -6
- package/dist/optics/profile-contract.js +14 -11
- package/dist/optics/profile-contract.js.map +1 -1
- package/dist/optics/psf-foundation.d.ts +23 -23
- package/dist/optics/psf-foundation.js +24 -21
- package/dist/optics/psf-foundation.js.map +1 -1
- package/dist/optics/pupil-vignetting.d.ts +118 -0
- package/dist/optics/pupil-vignetting.js +264 -0
- package/dist/optics/pupil-vignetting.js.map +1 -0
- package/dist/optics/radial-distortion.d.ts +34 -33
- package/dist/optics/radial-distortion.js +37 -30
- package/dist/optics/radial-distortion.js.map +1 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
- package/dist/optics/scene-to-sensor-irradiance.js +73 -45
- package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
- package/dist/optics/scene-to-sensor-quadrature.js +16 -11
- package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
- package/dist/optics/sensor-aperture-rays.d.ts +20 -4
- package/dist/optics/sensor-aperture-rays.js +32 -14
- package/dist/optics/sensor-aperture-rays.js.map +1 -1
- package/dist/optics/sensor-environment-query.d.ts +81 -16
- package/dist/optics/sensor-environment-query.js +145 -12
- package/dist/optics/sensor-environment-query.js.map +1 -1
- package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
- package/dist/optics/sensor-psf-quadrature.js +18 -11
- package/dist/optics/sensor-psf-quadrature.js.map +1 -1
- package/dist/optics/sensor-psf-support.d.ts +8 -6
- package/dist/optics/sensor-psf-support.js +8 -5
- package/dist/optics/sensor-psf-support.js.map +1 -1
- package/dist/optics/stray-light.d.ts +22 -19
- package/dist/optics/stray-light.js +18 -12
- package/dist/optics/stray-light.js.map +1 -1
- package/dist/optics/thin-lens.d.ts +10 -9
- package/dist/optics/thin-lens.js +12 -8
- package/dist/optics/thin-lens.js.map +1 -1
- package/dist/optics/zernike-wavefront.d.ts +154 -0
- package/dist/optics/zernike-wavefront.js +352 -0
- package/dist/optics/zernike-wavefront.js.map +1 -0
- package/dist/output/capture-corrected-sdr.d.ts +16 -8
- package/dist/output/capture-corrected-sdr.js +16 -8
- package/dist/output/capture-corrected-sdr.js.map +1 -1
- package/dist/output/capture-geometry.d.ts +34 -36
- package/dist/output/capture-geometry.js +52 -32
- package/dist/output/capture-geometry.js.map +1 -1
- package/dist/output/capture-sdr.d.ts +7 -6
- package/dist/output/capture-sdr.js +11 -8
- package/dist/output/capture-sdr.js.map +1 -1
- package/dist/output/crop.d.ts +22 -6
- package/dist/output/crop.js +40 -6
- package/dist/output/crop.js.map +1 -1
- package/dist/output/geometric-transforms.d.ts +60 -23
- package/dist/output/geometric-transforms.js +111 -24
- package/dist/output/geometric-transforms.js.map +1 -1
- package/dist/output/lens-corrections.d.ts +27 -19
- package/dist/output/lens-corrections.js +29 -13
- package/dist/output/lens-corrections.js.map +1 -1
- package/dist/output/native-capture-sdr.d.ts +71 -16
- package/dist/output/native-capture-sdr.js +190 -33
- package/dist/output/native-capture-sdr.js.map +1 -1
- package/dist/output/png-encoder.d.ts +65 -0
- package/dist/output/png-encoder.js +461 -0
- package/dist/output/png-encoder.js.map +1 -0
- package/dist/output/print-contrast-reference.d.ts +10 -9
- package/dist/output/print-contrast-reference.js +10 -8
- package/dist/output/print-contrast-reference.js.map +1 -1
- package/dist/output/print-detail.d.ts +18 -17
- package/dist/output/print-detail.js +12 -10
- package/dist/output/print-detail.js.map +1 -1
- package/dist/output/print-jpeg.d.ts +26 -5
- package/dist/output/print-jpeg.js +117 -50
- package/dist/output/print-jpeg.js.map +1 -1
- package/dist/output/print-plan.d.ts +19 -19
- package/dist/output/print-plan.js +11 -10
- package/dist/output/print-plan.js.map +1 -1
- package/dist/output/print-region-statistics.d.ts +14 -15
- package/dist/output/print-region-statistics.js +11 -11
- package/dist/output/print-region-statistics.js.map +1 -1
- package/dist/output/sdr-rendering.d.ts +48 -10
- package/dist/output/sdr-rendering.js +114 -25
- package/dist/output/sdr-rendering.js.map +1 -1
- package/dist/output/subject-framing-crop.d.ts +6 -10
- package/dist/output/subject-framing-crop.js +23 -13
- package/dist/output/subject-framing-crop.js.map +1 -1
- package/dist/processing/demosaic.d.ts +90 -0
- package/dist/processing/demosaic.js +275 -0
- package/dist/processing/demosaic.js.map +1 -0
- package/dist/processing/denoise.d.ts +68 -0
- package/dist/processing/denoise.js +214 -0
- package/dist/processing/denoise.js.map +1 -0
- package/dist/processing/focus-stacking.d.ts +17 -0
- package/dist/processing/focus-stacking.js +80 -0
- package/dist/processing/focus-stacking.js.map +1 -0
- package/dist/processing/hdr.d.ts +54 -0
- package/dist/processing/hdr.js +172 -0
- package/dist/processing/hdr.js.map +1 -0
- package/dist/processing/image-ops.d.ts +66 -0
- package/dist/processing/image-ops.js +192 -0
- package/dist/processing/image-ops.js.map +1 -0
- package/dist/processing/panorama.d.ts +51 -0
- package/dist/processing/panorama.js +305 -0
- package/dist/processing/panorama.js.map +1 -0
- package/dist/processing/processing-task.d.ts +85 -0
- package/dist/processing/processing-task.js +164 -0
- package/dist/processing/processing-task.js.map +1 -0
- package/dist/processing/tone-mapping.d.ts +69 -0
- package/dist/processing/tone-mapping.js +310 -0
- package/dist/processing/tone-mapping.js.map +1 -0
- package/dist/schema/camera.d.ts +5 -4
- package/dist/schema/illumination-spectral.d.ts +13 -19
- package/dist/schema/illumination-spectral.js +23 -19
- package/dist/schema/illumination-spectral.js.map +1 -1
- package/dist/schema/illumination-temporal.d.ts +12 -15
- package/dist/schema/illumination-temporal.js +43 -28
- package/dist/schema/illumination-temporal.js.map +1 -1
- package/dist/schema/illumination.d.ts +5 -4
- package/dist/schema/illumination.js +55 -20
- package/dist/schema/illumination.js.map +1 -1
- package/dist/schema/scene-radiance-temporal.d.ts +9 -11
- package/dist/schema/scene-radiance-temporal.js +26 -23
- package/dist/schema/scene-radiance-temporal.js.map +1 -1
- package/dist/schema/scene-radiance.d.ts +17 -17
- package/dist/schema/scene-radiance.js +56 -34
- package/dist/schema/scene-radiance.js.map +1 -1
- package/dist/schema/scene.d.ts +14 -13
- package/dist/schema/validation.d.ts +0 -1
- package/dist/schema/validation.js +17 -15
- package/dist/schema/validation.js.map +1 -1
- package/dist/sensor/accumulated-charge.d.ts +45 -64
- package/dist/sensor/accumulated-charge.js +41 -47
- package/dist/sensor/accumulated-charge.js.map +1 -1
- package/dist/sensor/architecture.d.ts +22 -25
- package/dist/sensor/architecture.js +17 -16
- package/dist/sensor/architecture.js.map +1 -1
- package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
- package/dist/sensor/camera-saturation-capacity.js +36 -34
- package/dist/sensor/camera-saturation-capacity.js.map +1 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
- package/dist/sensor/capture-color-sampling-binding.js +39 -41
- package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
- package/dist/sensor/capture-mode-timing.d.ts +8 -9
- package/dist/sensor/capture-mode-timing.js +24 -21
- package/dist/sensor/capture-mode-timing.js.map +1 -1
- package/dist/sensor/capture-mode.d.ts +28 -30
- package/dist/sensor/capture-mode.js +33 -31
- package/dist/sensor/capture-mode.js.map +1 -1
- package/dist/sensor/color-sampling.d.ts +30 -33
- package/dist/sensor/color-sampling.js +32 -37
- package/dist/sensor/color-sampling.js.map +1 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
- package/dist/sensor/constant-rate-temporal-integration.js +28 -26
- package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
- package/dist/sensor/dark-current.d.ts +53 -49
- package/dist/sensor/dark-current.js +87 -46
- package/dist/sensor/dark-current.js.map +1 -1
- package/dist/sensor/environment-photo-signal.d.ts +71 -30
- package/dist/sensor/environment-photo-signal.js +127 -46
- package/dist/sensor/environment-photo-signal.js.map +1 -1
- package/dist/sensor/eqe-electron-rate.d.ts +14 -13
- package/dist/sensor/eqe-electron-rate.js +34 -14
- package/dist/sensor/eqe-electron-rate.js.map +1 -1
- package/dist/sensor/eqe-local-exposure.d.ts +24 -24
- package/dist/sensor/eqe-local-exposure.js +15 -11
- package/dist/sensor/eqe-local-exposure.js.map +1 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
- package/dist/sensor/eqe-temporal-exposure.js +15 -10
- package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/exposure-window.d.ts +48 -34
- package/dist/sensor/exposure-window.js +77 -36
- package/dist/sensor/exposure-window.js.map +1 -1
- package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
- package/dist/sensor/fixed-pattern-noise.js +166 -0
- package/dist/sensor/fixed-pattern-noise.js.map +1 -0
- package/dist/sensor/iso-gain.d.ts +44 -0
- package/dist/sensor/iso-gain.js +119 -0
- package/dist/sensor/iso-gain.js.map +1 -0
- package/dist/sensor/iso-signal-chain.d.ts +25 -48
- package/dist/sensor/iso-signal-chain.js +52 -66
- package/dist/sensor/iso-signal-chain.js.map +1 -1
- package/dist/sensor/local-exposure-binding.d.ts +21 -21
- package/dist/sensor/local-exposure-binding.js +22 -18
- package/dist/sensor/local-exposure-binding.js.map +1 -1
- package/dist/sensor/optical-stack.d.ts +36 -40
- package/dist/sensor/optical-stack.js +34 -37
- package/dist/sensor/optical-stack.js.map +1 -1
- package/dist/sensor/photon-energy.d.ts +22 -28
- package/dist/sensor/photon-energy.js +42 -34
- package/dist/sensor/photon-energy.js.map +1 -1
- package/dist/sensor/physical-charge-capacity.d.ts +20 -30
- package/dist/sensor/physical-charge-capacity.js +35 -36
- package/dist/sensor/physical-charge-capacity.js.map +1 -1
- package/dist/sensor/pixel-pitch.d.ts +2 -3
- package/dist/sensor/pixel-pitch.js +4 -2
- package/dist/sensor/pixel-pitch.js.map +1 -1
- package/dist/sensor/radiometry-readiness.d.ts +13 -15
- package/dist/sensor/radiometry-readiness.js +20 -17
- package/dist/sensor/radiometry-readiness.js.map +1 -1
- package/dist/sensor/raw-readout.d.ts +173 -83
- package/dist/sensor/raw-readout.js +425 -160
- package/dist/sensor/raw-readout.js.map +1 -1
- package/dist/sensor/raw-reconstruction.d.ts +112 -44
- package/dist/sensor/raw-reconstruction.js +200 -47
- package/dist/sensor/raw-reconstruction.js.map +1 -1
- package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
- package/dist/sensor/readout-exposure-linkage.js +125 -27
- package/dist/sensor/readout-exposure-linkage.js.map +1 -1
- package/dist/sensor/readout-timing.d.ts +43 -44
- package/dist/sensor/readout-timing.js +38 -30
- package/dist/sensor/readout-timing.js.map +1 -1
- package/dist/sensor/response-application-compatibility.d.ts +21 -28
- package/dist/sensor/response-application-compatibility.js +35 -34
- package/dist/sensor/response-application-compatibility.js.map +1 -1
- package/dist/sensor/response-operating-range.d.ts +26 -35
- package/dist/sensor/response-operating-range.js +40 -39
- package/dist/sensor/response-operating-range.js.map +1 -1
- package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
- package/dist/sensor/responsivity-photocurrent.js +57 -40
- package/dist/sensor/responsivity-photocurrent.js.map +1 -1
- package/dist/sensor/sampling-aperture.d.ts +21 -25
- package/dist/sensor/sampling-aperture.js +29 -28
- package/dist/sensor/sampling-aperture.js.map +1 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
- package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
- package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/sensor-geometry.d.ts +28 -32
- package/dist/sensor/sensor-geometry.js +35 -20
- package/dist/sensor/sensor-geometry.js.map +1 -1
- package/dist/sensor/signal-noise.d.ts +14 -16
- package/dist/sensor/signal-noise.js +15 -13
- package/dist/sensor/signal-noise.js.map +1 -1
- package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
- package/dist/sensor/spatial-sample-reduction.js +39 -48
- package/dist/sensor/spatial-sample-reduction.js.map +1 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
- package/dist/sensor/spatial-sampling-quadrature.js +31 -36
- package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
- package/dist/sensor/spatio-spectral-reduction.js +24 -29
- package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
- package/dist/sensor/spectral-coverage.d.ts +6 -9
- package/dist/sensor/spectral-coverage.js +9 -6
- package/dist/sensor/spectral-coverage.js.map +1 -1
- package/dist/sensor/spectral-quadrature.d.ts +46 -60
- package/dist/sensor/spectral-quadrature.js +38 -48
- package/dist/sensor/spectral-quadrature.js.map +1 -1
- package/dist/sensor/spectral-response.d.ts +53 -41
- package/dist/sensor/spectral-response.js +80 -47
- package/dist/sensor/spectral-response.js.map +1 -1
- package/dist/sensor/stochastic-seed.d.ts +50 -0
- package/dist/sensor/stochastic-seed.js +123 -0
- package/dist/sensor/stochastic-seed.js.map +1 -0
- package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
- package/dist/sensor/temporal-eqe-sum.js +5 -6
- package/dist/sensor/temporal-eqe-sum.js.map +1 -1
- package/dist/sensor/temporal-photo-signal.d.ts +5 -6
- package/dist/sensor/temporal-photo-signal.js +11 -10
- package/dist/sensor/temporal-photo-signal.js.map +1 -1
- package/dist/sensor/temporal-sample-binding.d.ts +1 -2
- package/dist/sensor/temporal-sample-binding.js +3 -3
- package/dist/sensor/temporal-sample-binding.js.map +1 -1
- package/dist/simulation/poc-simulation.d.ts +16 -16
- package/dist/simulation/poc-simulation.js +20 -15
- package/dist/simulation/poc-simulation.js.map +1 -1
- package/dist/stabilization/camera-shake.d.ts +42 -18
- package/dist/stabilization/camera-shake.js +43 -20
- package/dist/stabilization/camera-shake.js.map +1 -1
- package/dist/stabilization/system.d.ts +44 -41
- package/dist/stabilization/system.js +196 -108
- package/dist/stabilization/system.js.map +1 -1
- package/docs/AGENT_GUIDE.md +183 -0
- package/docs/API_REFERENCE.md +761 -2
- package/docs/QUICK_START.md +495 -0
- package/docs/USAGE.md +1719 -714
- package/docs/api/camera-equivalent-focal-length.md +6 -7
- package/docs/api/camera-field-of-view.md +16 -8
- package/docs/api/camera-lens-projection.md +246 -0
- package/docs/api/camera-projected-object-size.md +6 -5
- package/docs/api/capture-capture-export-metadata.md +10 -10
- package/docs/api/capture-dng-import.md +134 -0
- package/docs/api/capture-environment-raw-producer.md +17 -11
- package/docs/api/capture-export-jpeg.md +16 -0
- package/docs/api/capture-focus-control.md +25 -47
- package/docs/api/capture-linear-encoding.md +21 -12
- package/docs/api/capture-lossless-jpeg.md +49 -0
- package/docs/api/capture-native-environment-optical-stage.md +75 -0
- package/docs/api/capture-native-environment-raw.md +161 -4
- package/docs/api/capture-native-raw-development.md +69 -4
- package/docs/api/capture-native-raw-dng.md +84 -0
- package/docs/api/capture-native-raw.md +23 -8
- package/docs/api/capture-packed-sensor-raw.md +156 -0
- package/docs/api/capture-photographic-export.md +69 -31
- package/docs/api/capture-raw-frame-reconstruction.md +8 -8
- package/docs/api/capture-raw-white-level.md +37 -0
- package/docs/api/capture-release-sequence.md +6 -7
- package/docs/api/capture-sensor-raw-frame.md +6 -6
- package/docs/api/capture-sensor-raw-producer.md +17 -11
- package/docs/api/capture-simulated-capture.md +15 -15
- package/docs/api/color-camera-color-matrix.md +103 -0
- package/docs/api/color-capture-color.md +22 -11
- package/docs/api/color-chromatic-adaptation.md +82 -0
- package/docs/api/color-color-difference.md +134 -0
- package/docs/api/color-color-matching-functions.md +259 -0
- package/docs/api/color-colorimetry-math.md +54 -0
- package/docs/api/color-gamut-mapping.md +72 -0
- package/docs/api/color-illuminants.md +280 -0
- package/docs/api/color-rgb-color-spaces.md +151 -0
- package/docs/api/color-sensor-color-development.md +27 -0
- package/docs/api/color-srgb-icc.md +2 -4
- package/docs/api/color-white-balance.md +95 -19
- package/docs/api/composition-image-formation-plan.md +124 -95
- package/docs/api/composition-plan-consumer.md +7 -7
- package/docs/api/core-calculation-result.md +18 -14
- package/docs/api/core-configuration-error.md +1 -1
- package/docs/api/core-image-formation.md +7 -7
- package/docs/api/core-scientific-assurance.md +12 -10
- package/docs/api/core-spectral-composition.md +14 -14
- package/docs/api/core-spectral.md +6 -6
- package/docs/api/core-validation.md +3 -3
- package/docs/api/core-version.md +7 -6
- package/docs/api/equipment-exposure-capabilities.md +11 -10
- package/docs/api/equipment-generic-tier-assets.md +7 -2
- package/docs/api/equipment-generic-tier-presets.md +6 -6
- package/docs/api/equipment-iso-capabilities.md +18 -18
- package/docs/api/equipment-metering-capabilities.md +6 -6
- package/docs/api/equipment-release-capabilities.md +4 -4
- package/docs/api/exports.json +2213 -8
- package/docs/api/exposure-exposure-duration-control.md +9 -9
- package/docs/api/exposure-exposure-mode-resolver.md +35 -31
- package/docs/api/exposure-exposure.md +10 -10
- package/docs/api/exposure-flash-ttl.md +182 -0
- package/docs/api/exposure-flash.md +183 -28
- package/docs/api/exposure-metering-scene-radiance.md +11 -10
- package/docs/api/exposure-metering-target.md +9 -8
- package/docs/api/exposure-metering-temporal.md +8 -8
- package/docs/api/exposure-metering.md +69 -9
- package/docs/api/exposure-program-line.md +6 -5
- package/docs/api/facade-chart-radiance-batch.md +96 -0
- package/docs/api/facade-chart-scenes.md +240 -0
- package/docs/api/facade-scene-radiance.md +122 -0
- package/docs/api/facade-simulate-capture.md +324 -0
- package/docs/api/gpu-image-kernel-accelerator.md +157 -0
- package/docs/api/gpu-image-kernel-execution.md +152 -0
- package/docs/api/motion-camera-rotation.md +43 -26
- package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
- package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
- package/docs/api/motion-capture-rotation-trajectory.md +15 -15
- package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
- package/docs/api/motion-extended-object-projection.md +10 -8
- package/docs/api/motion-projected-motion.md +8 -8
- package/docs/api/motion-temporal-exposure-sum.md +98 -0
- package/docs/api/motion-video-sequence.md +159 -0
- package/docs/api/optics-aperture.md +8 -8
- package/docs/api/optics-atmospheric-haze.md +104 -0
- package/docs/api/optics-brown-conrady-distortion.md +123 -0
- package/docs/api/optics-circle-of-confusion.md +5 -4
- package/docs/api/optics-complex-pupil-psf.md +57 -16
- package/docs/api/optics-depth-of-field.md +12 -6
- package/docs/api/optics-diffraction.md +8 -7
- package/docs/api/optics-focus-breathing.md +104 -16
- package/docs/api/optics-focus-state.md +9 -10
- package/docs/api/optics-front-of-lens-filter.md +72 -14
- package/docs/api/optics-illumination-vignetting.md +10 -10
- package/docs/api/optics-irradiance-convolution.md +95 -0
- package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
- package/docs/api/optics-lens-psf-kernels.md +72 -0
- package/docs/api/optics-lens-psf-profile.md +48 -26
- package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
- package/docs/api/optics-polygon-diffraction.md +78 -13
- package/docs/api/optics-profile-contract.md +4 -4
- package/docs/api/optics-psf-foundation.md +12 -12
- package/docs/api/optics-pupil-vignetting.md +132 -0
- package/docs/api/optics-radial-distortion.md +12 -12
- package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
- package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
- package/docs/api/optics-sensor-aperture-rays.md +3 -2
- package/docs/api/optics-sensor-environment-query.md +52 -9
- package/docs/api/optics-sensor-psf-quadrature.md +13 -10
- package/docs/api/optics-stray-light.md +12 -11
- package/docs/api/optics-thin-lens.md +4 -3
- package/docs/api/optics-zernike-wavefront.md +229 -0
- package/docs/api/output-capture-corrected-sdr.md +10 -7
- package/docs/api/output-capture-geometry.md +35 -36
- package/docs/api/output-capture-sdr.md +4 -4
- package/docs/api/output-crop.md +7 -4
- package/docs/api/output-geometric-transforms.md +65 -19
- package/docs/api/output-lens-corrections.md +17 -15
- package/docs/api/output-native-capture-sdr.md +26 -13
- package/docs/api/output-png-encoder.md +105 -0
- package/docs/api/output-print-contrast-reference.md +8 -8
- package/docs/api/output-print-detail.md +14 -14
- package/docs/api/output-print-jpeg.md +22 -5
- package/docs/api/output-print-plan.md +18 -18
- package/docs/api/output-print-region-statistics.md +14 -14
- package/docs/api/output-sdr-rendering.md +52 -10
- package/docs/api/output-subject-framing-crop.md +5 -6
- package/docs/api/processing-demosaic.md +120 -0
- package/docs/api/processing-denoise.md +148 -0
- package/docs/api/processing-focus-stacking.md +41 -0
- package/docs/api/processing-hdr.md +113 -0
- package/docs/api/processing-panorama.md +82 -0
- package/docs/api/processing-processing-task.md +107 -0
- package/docs/api/processing-tone-mapping.md +142 -0
- package/docs/api/schema-camera.md +6 -4
- package/docs/api/schema-illumination-spectral.md +10 -11
- package/docs/api/schema-illumination-temporal.md +13 -15
- package/docs/api/schema-illumination.md +4 -4
- package/docs/api/schema-scene-radiance-temporal.md +10 -11
- package/docs/api/schema-scene-radiance.md +18 -17
- package/docs/api/schema-scene.md +9 -9
- package/docs/api/schema-validation.md +1 -1
- package/docs/api/sensor-accumulated-charge.md +12 -20
- package/docs/api/sensor-architecture.md +15 -16
- package/docs/api/sensor-camera-saturation-capacity.md +9 -11
- package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
- package/docs/api/sensor-capture-mode-timing.md +9 -9
- package/docs/api/sensor-capture-mode.md +29 -30
- package/docs/api/sensor-color-sampling.md +31 -33
- package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
- package/docs/api/sensor-dark-current.md +30 -14
- package/docs/api/sensor-environment-photo-signal.md +13 -6
- package/docs/api/sensor-eqe-electron-rate.md +9 -8
- package/docs/api/sensor-eqe-local-exposure.md +18 -17
- package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
- package/docs/api/sensor-exposure-window.md +24 -24
- package/docs/api/sensor-fixed-pattern-noise.md +104 -0
- package/docs/api/sensor-iso-gain.md +63 -0
- package/docs/api/sensor-iso-signal-chain.md +13 -22
- package/docs/api/sensor-local-exposure-binding.md +12 -13
- package/docs/api/sensor-optical-stack.md +37 -40
- package/docs/api/sensor-photon-energy.md +10 -11
- package/docs/api/sensor-physical-charge-capacity.md +8 -13
- package/docs/api/sensor-pixel-pitch.md +1 -1
- package/docs/api/sensor-radiometry-readiness.md +9 -9
- package/docs/api/sensor-raw-readout.md +118 -52
- package/docs/api/sensor-raw-reconstruction.md +97 -20
- package/docs/api/sensor-readout-exposure-linkage.md +120 -24
- package/docs/api/sensor-readout-timing.md +33 -35
- package/docs/api/sensor-response-application-compatibility.md +9 -11
- package/docs/api/sensor-response-operating-range.md +14 -18
- package/docs/api/sensor-responsivity-photocurrent.md +9 -12
- package/docs/api/sensor-sampling-aperture.md +22 -25
- package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
- package/docs/api/sensor-sensor-geometry.md +23 -24
- package/docs/api/sensor-signal-noise.md +10 -10
- package/docs/api/sensor-spatial-sample-reduction.md +27 -30
- package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
- package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
- package/docs/api/sensor-spectral-coverage.md +5 -5
- package/docs/api/sensor-spectral-quadrature.md +33 -35
- package/docs/api/sensor-spectral-response.md +28 -16
- package/docs/api/sensor-temporal-photo-signal.md +6 -6
- package/docs/api/simulation-poc-simulation.md +17 -16
- package/docs/api/stabilization-camera-shake.md +29 -10
- package/docs/api/stabilization-system.md +25 -21
- package/docs/examples/production-request.json +3821 -2157
- package/docs/examples/simulate-capture.mjs +14 -0
- package/llms.txt +35 -0
- package/package.json +32 -12
- package/AGENTS.md +0 -674
- package/CONTRIBUTING.md +0 -76
- package/DCO +0 -33
- package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
- package/dist/camera/field-of-view.d.ts.map +0 -1
- package/dist/camera/projected-object-size.d.ts.map +0 -1
- package/dist/capture/capture-export-metadata.d.ts.map +0 -1
- package/dist/capture/environment-raw-producer.d.ts.map +0 -1
- package/dist/capture/export-jpeg.d.ts.map +0 -1
- package/dist/capture/export-tiff.d.ts.map +0 -1
- package/dist/capture/focus-control.d.ts.map +0 -1
- package/dist/capture/linear-encoding.d.ts.map +0 -1
- package/dist/capture/native-environment-raw.d.ts.map +0 -1
- package/dist/capture/native-raw-development.d.ts.map +0 -1
- package/dist/capture/native-raw.d.ts.map +0 -1
- package/dist/capture/photographic-export.d.ts.map +0 -1
- package/dist/capture/raw-frame-limits.d.ts.map +0 -1
- package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
- package/dist/capture/release-sequence.d.ts.map +0 -1
- package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
- package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
- package/dist/capture/simulated-capture.d.ts.map +0 -1
- package/dist/color/capture-color.d.ts.map +0 -1
- package/dist/color/sensor-color-development.d.ts.map +0 -1
- package/dist/color/srgb-icc.d.ts.map +0 -1
- package/dist/color/srgb-transfer.d.ts.map +0 -1
- package/dist/color/white-balance.d.ts.map +0 -1
- package/dist/composition/image-formation-plan.d.ts.map +0 -1
- package/dist/composition/plan-consumer.d.ts.map +0 -1
- package/dist/core/calculation-result.d.ts.map +0 -1
- package/dist/core/canonical-json.d.ts.map +0 -1
- package/dist/core/configuration-error.d.ts.map +0 -1
- package/dist/core/evidence-provenance.d.ts.map +0 -1
- package/dist/core/image-formation.d.ts.map +0 -1
- package/dist/core/owned-data.d.ts.map +0 -1
- package/dist/core/record-validation.d.ts.map +0 -1
- package/dist/core/scientific-assurance.d.ts.map +0 -1
- package/dist/core/spectral-composition.d.ts.map +0 -1
- package/dist/core/spectral.d.ts.map +0 -1
- package/dist/core/validation.d.ts.map +0 -1
- package/dist/core/version.d.ts.map +0 -1
- package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
- package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
- package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
- package/dist/equipment/iso-capabilities.d.ts.map +0 -1
- package/dist/equipment/metering-capabilities.d.ts.map +0 -1
- package/dist/equipment/release-capabilities.d.ts.map +0 -1
- package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
- package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
- package/dist/exposure/exposure.d.ts.map +0 -1
- package/dist/exposure/flash.d.ts.map +0 -1
- package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
- package/dist/exposure/metering-target.d.ts.map +0 -1
- package/dist/exposure/metering-temporal.d.ts.map +0 -1
- package/dist/exposure/metering.d.ts.map +0 -1
- package/dist/exposure/program-line.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/motion/camera-rotation.d.ts.map +0 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/extended-object-projection.d.ts.map +0 -1
- package/dist/motion/projected-motion.d.ts.map +0 -1
- package/dist/optics/aperture.d.ts.map +0 -1
- package/dist/optics/circle-of-confusion.d.ts.map +0 -1
- package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
- package/dist/optics/depth-of-field.d.ts.map +0 -1
- package/dist/optics/diffraction.d.ts.map +0 -1
- package/dist/optics/focus-breathing.d.ts.map +0 -1
- package/dist/optics/focus-state.d.ts.map +0 -1
- package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
- package/dist/optics/illumination-vignetting.d.ts.map +0 -1
- package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
- package/dist/optics/lens-psf-profile.d.ts.map +0 -1
- package/dist/optics/polygon-diffraction.d.ts.map +0 -1
- package/dist/optics/profile-contract.d.ts.map +0 -1
- package/dist/optics/psf-foundation.d.ts.map +0 -1
- package/dist/optics/radial-distortion.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
- package/dist/optics/sensor-environment-query.d.ts.map +0 -1
- package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-psf-support.d.ts.map +0 -1
- package/dist/optics/stray-light.d.ts.map +0 -1
- package/dist/optics/thin-lens.d.ts.map +0 -1
- package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
- package/dist/output/capture-geometry.d.ts.map +0 -1
- package/dist/output/capture-sdr.d.ts.map +0 -1
- package/dist/output/crop.d.ts.map +0 -1
- package/dist/output/geometric-transforms.d.ts.map +0 -1
- package/dist/output/lens-corrections.d.ts.map +0 -1
- package/dist/output/native-capture-sdr.d.ts.map +0 -1
- package/dist/output/print-contrast-reference.d.ts.map +0 -1
- package/dist/output/print-detail.d.ts.map +0 -1
- package/dist/output/print-jpeg.d.ts.map +0 -1
- package/dist/output/print-plan.d.ts.map +0 -1
- package/dist/output/print-region-statistics.d.ts.map +0 -1
- package/dist/output/sdr-rendering.d.ts.map +0 -1
- package/dist/output/subject-framing-crop.d.ts.map +0 -1
- package/dist/schema/camera.d.ts.map +0 -1
- package/dist/schema/camera.js +0 -3
- package/dist/schema/camera.js.map +0 -1
- package/dist/schema/illumination-spectral.d.ts.map +0 -1
- package/dist/schema/illumination-temporal.d.ts.map +0 -1
- package/dist/schema/illumination.d.ts.map +0 -1
- package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
- package/dist/schema/scene-radiance.d.ts.map +0 -1
- package/dist/schema/scene.d.ts.map +0 -1
- package/dist/schema/scene.js +0 -3
- package/dist/schema/scene.js.map +0 -1
- package/dist/schema/validation.d.ts.map +0 -1
- package/dist/sensor/accumulated-charge.d.ts.map +0 -1
- package/dist/sensor/architecture.d.ts.map +0 -1
- package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
- package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
- package/dist/sensor/capture-mode.d.ts.map +0 -1
- package/dist/sensor/color-sampling.d.ts.map +0 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
- package/dist/sensor/dark-current.d.ts.map +0 -1
- package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
- package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
- package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/exposure-window.d.ts.map +0 -1
- package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
- package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
- package/dist/sensor/optical-stack.d.ts.map +0 -1
- package/dist/sensor/photon-energy.d.ts.map +0 -1
- package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
- package/dist/sensor/pixel-pitch.d.ts.map +0 -1
- package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
- package/dist/sensor/raw-readout.d.ts.map +0 -1
- package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
- package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
- package/dist/sensor/readout-timing.d.ts.map +0 -1
- package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
- package/dist/sensor/response-operating-range.d.ts.map +0 -1
- package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
- package/dist/sensor/sampling-aperture.d.ts.map +0 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/sensor-geometry.d.ts.map +0 -1
- package/dist/sensor/signal-noise.d.ts.map +0 -1
- package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
- package/dist/sensor/spectral-coverage.d.ts.map +0 -1
- package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
- package/dist/sensor/spectral-response.d.ts.map +0 -1
- package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
- package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
- package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
- package/dist/simulation/poc-simulation.d.ts.map +0 -1
- package/dist/stabilization/camera-shake.d.ts.map +0 -1
- package/dist/stabilization/system.d.ts.map +0 -1
- package/docs/API_STYLE.md +0 -235
- package/docs/ARCHITECTURE.md +0 -356
- package/docs/AUTOMATION_COORDINATION.md +0 -190
- package/docs/CAPTURE_COLOR.md +0 -25
- package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
- package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
- package/docs/CAPTURE_SDR.md +0 -22
- package/docs/DEVELOPERS.md +0 -68
- package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
- package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
- package/docs/EXPORT_ACCEPTANCE.md +0 -133
- package/docs/GENERIC_TIER_PRESETS.md +0 -269
- package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
- package/docs/IMAGE_FORMATION.md +0 -247
- package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
- package/docs/MOTION_AND_SIGNAL.md +0 -250
- package/docs/NATIVE_CAPTURE_SDR.md +0 -70
- package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
- package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
- package/docs/NATIVE_RAW_AND_PRINT.md +0 -47
- package/docs/NUMERICAL_CORRECTNESS.md +0 -191
- package/docs/PERFORMANCE_BASELINE.md +0 -56
- package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
- package/docs/PHYSICS_FOUNDATION.md +0 -426
- package/docs/POC_API.md +0 -278
- package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
- package/docs/POC_PROJECTION_REUSE.md +0 -124
- package/docs/PRINT_195_196_REVIEW.md +0 -93
- package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
- package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
- package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
- package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
- package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
- package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
- package/docs/PRINT_PLANNING.md +0 -75
- package/docs/PRINT_REGION_STATISTICS.md +0 -38
- package/docs/PROCESSED_OUTPUT.md +0 -157
- package/docs/PRODUCTION_COMPOSITION.md +0 -373
- package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
- package/docs/PROVENANCE.md +0 -115
- package/docs/PSF_FOUNDATION.md +0 -165
- package/docs/RAW_FRAME_ENVELOPE.md +0 -56
- package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
- package/docs/RELEASE_1_0.md +0 -66
- package/docs/RELEASE_1_0_1.md +0 -61
- package/docs/RELEASE_1_1_0.md +0 -25
- package/docs/RELEASE_1_2_0.md +0 -51
- package/docs/RELEASE_1_3_0.md +0 -15
- package/docs/RELEASE_1_4_0.md +0 -23
- package/docs/RELEASE_AUDIT.md +0 -39
- package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
- package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
- package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
- package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
- package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
- package/docs/SDR_RENDERING.md +0 -33
- package/docs/SENSOR_APERTURE_RAYS.md +0 -23
- package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
- package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
- package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
- package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
- package/docs/SENSOR_RAW_FRAME.md +0 -20
- package/docs/SENSOR_RAW_PRODUCER.md +0 -77
- package/docs/SIGNAL_CONFORMANCE.md +0 -23
- package/docs/SIMULATED_CAPTURE.md +0 -65
- package/docs/STABILIZATION.md +0 -234
- package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
- package/docs/TIER_ACCEPTANCE.md +0 -129
- package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
- package/docs/V1_COMPOSITION_MAP.md +0 -123
- package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
- package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
- package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
- package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
- package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
- package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
- package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
- package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
- package/docs/licenses/castleCSF-MIT.txt +0 -21
- package/docs/validation/documentation-fragments.json +0 -212
- package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
- package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
- package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
- package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
- package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
- package/docs/validation/print-196-candidate-capabilities.json +0 -28
- package/docs/validation/print-196-candidate-evidence.json +0 -356
- package/docs/validation/print-196-engine-acceptance.json +0 -81
- package/docs/validation/print-detail-capabilities.json +0 -103
- package/docs/validation/print-detail-jpeg-evidence.json +0 -116
- package/docs/validation/print-detail-sdr-evidence.json +0 -81
- package/docs/validation/release-audit-inventory.json +0 -1306
- package/docs/validation/tier-acceptance-report-v1.json +0 -2538
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
# Temporal EQE photo signal to native RAW
|
|
2
|
-
|
|
3
|
-
Release context: **package 1.2.0 candidate / root API 1.2.0**. Subsystem/model versions and dated introduction or measurement records below are independent historical identities; they are not distribution versions. See [developer navigation](DEVELOPERS.md) and [release contract](RELEASE_1_2_0.md).
|
|
4
|
-
|
|
5
|
-
Root API **0.110.0** adds `createSensorEqeTemporalPhotoSignal()` and
|
|
6
|
-
`parseSensorEqeTemporalPhotoSignal()`. RAW producer result schema is **0.3.0**.
|
|
7
|
-
The compact `eqe-temporal-photo-signal` record enters the existing dark-current,
|
|
8
|
-
accumulated-charge, capacity, stochastic readout and paired DNG/JPEG path.
|
|
9
|
-
The full `eqe-temporal-quadrature-expected-counts` diagnostics remain distinct;
|
|
10
|
-
casting or relabeling them is not an accepted handoff.
|
|
11
|
-
|
|
12
|
-
## Construction and arithmetic
|
|
13
|
-
|
|
14
|
-
Supply a public, nonpersonal `temporalIntegrationId` and an `exposure` request
|
|
15
|
-
for [`calculateSensorEqeTemporalExposure()`](SENSOR_EQE_TEMPORAL_EXPOSURE.md).
|
|
16
|
-
The creator evaluates that physical input again, checking response applicability
|
|
17
|
-
and operating range at every time. It returns owned, frozen `photoSignal` plus
|
|
18
|
-
the full `exposure` child envelope retaining evidence and uncombined uncertainty.
|
|
19
|
-
No runtime dependency, third-party code/data or new cost is introduced.
|
|
20
|
-
|
|
21
|
-
The compact record retains the exact site/channel/binding and local shutter
|
|
22
|
-
start/end/duration, untreated photo-only flags, and 1–256 ordered samples of
|
|
23
|
-
photon/electron rates in s^-1 at exact uniform midpoints. It has no stationarity
|
|
24
|
-
ID, constant-photo-rate field or stationarity claim. The parser recomputes
|
|
25
|
-
compensated sums of rate times `duration / sampleCount` in seconds and requires
|
|
26
|
-
exact count agreement. It rejects unknown fields, sparse arrays, invalid public
|
|
27
|
-
identities, nonfinite/negative values, stale midpoint times, electron rates
|
|
28
|
-
above photon rates, invalid evidence and sampled/processed substitutions.
|
|
29
|
-
Shared accumulation arithmetic prevents calculator/parser drift.
|
|
30
|
-
|
|
31
|
-
```ts
|
|
32
|
-
const temporal = createSensorEqeTemporalPhotoSignal({
|
|
33
|
-
temporalIntegrationId: "exposure-1-site-0",
|
|
34
|
-
exposure: temporalEqeInput
|
|
35
|
-
});
|
|
36
|
-
const photoSignal = temporal.value.photoSignal;
|
|
37
|
-
const darkCharge = calculateSensorDarkCurrentCharge({
|
|
38
|
-
exposure: photoSignal, darkCurrentProfile, operatingTemperatureC
|
|
39
|
-
}).value;
|
|
40
|
-
const charge = { photoSignal, darkCharge, completenessProfile };
|
|
41
|
-
// Supply the same exact event for every native site before RAW production.
|
|
42
|
-
// simulateSensorRawFrame({ frame, sites, exposureWindow }) feeds paired export.
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## Event and scientific boundaries
|
|
46
|
-
|
|
47
|
-
Temporal dark charge carries the same `temporalIntegrationId`, never a fabricated
|
|
48
|
-
stationarity ID. Dark current still uses the supplied fixed operating temperature
|
|
49
|
-
and existing exact-temperature/interpolated profile rate times duration. Heating
|
|
50
|
-
or varying temperature within an exposure is not integrated. Accumulated charge
|
|
51
|
-
requires exact agreement of site/channel/binding, identity and start/end/duration;
|
|
52
|
-
completeness/additional components and physical capacity remain separate gates.
|
|
53
|
-
Both global windows and supported one-to-one rolling windows use the existing
|
|
54
|
-
RAW timing calculation. Orientation never changes native seed ownership.
|
|
55
|
-
|
|
56
|
-
The handoff validates arithmetic and declarations; an identity or evidence
|
|
57
|
-
reference does not prove optical-source execution, authenticity or calibration.
|
|
58
|
-
The instantaneous EQE model assumes applicability at each time without detector
|
|
59
|
-
lag/hysteresis. Midpoint samples can miss short pulses/discontinuities and give
|
|
60
|
-
no automatic convergence bound. No combined uncertainty is inferred. Source
|
|
61
|
-
transport, projection, PSF, production-stage activation, high-resolution execution
|
|
62
|
-
and external-editor acceptance remain separate #16/#178/#112 work. The 25/32 V1
|
|
63
|
-
tracker count and umbrella status are unchanged.
|
|
64
|
-
|
|
65
|
-
## Compatibility and acceptance
|
|
66
|
-
|
|
67
|
-
Existing stationary photo/dark inputs remain accepted with their original result
|
|
68
|
-
shapes, dark/charge model 1.0.0 and arithmetic. Narrow stationary calls retain
|
|
69
|
-
their original TypeScript evidence shape through overloads and default generic
|
|
70
|
-
types. `ComposeSensorPhotoAccumulatedChargeInput` and
|
|
71
|
-
`SensorPhotoAccumulatedChargeComposition` expose the broader contracts; union
|
|
72
|
-
inputs require normal type narrowing. Temporal dark/charge composition uses model **1.1.0** and
|
|
73
|
-
the compact creator model is **0.1.0**. Capture noise model **0.2.0**, RAW readout
|
|
74
|
-
model **2.0.0**, package/POC/production/RAW-frame schemas and stochastic seed
|
|
75
|
-
schedule are unchanged. New capture provenance includes the new root stamp;
|
|
76
|
-
historical capture replay and pinned paired-file hashes retain their stored stamp.
|
|
77
|
-
|
|
78
|
-
[`test/temporal-photo-raw.test.ts`](https://github.com/Photivra/photivra/blob/main/test/temporal-photo-raw.test.ts) independently
|
|
79
|
-
calculates SI photoelectron counts from two changing irradiance instants and
|
|
80
|
-
checks dark/total counts, global/rolling events, deterministic RAW, exact DNG strip
|
|
81
|
-
codes and JPEG lineage from the same frame. Malformed records and stale downstream
|
|
82
|
-
bindings fail closed. Fixtures are owned synthetic regression data, not measured
|
|
83
|
-
camera calibration or final V1 acceptance.
|
package/docs/TIER_ACCEPTANCE.md
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
# Generic tier acceptance suite
|
|
2
|
-
|
|
3
|
-
Release context: **package 1.2.0 candidate / root API 1.2.0**. Subsystem/model versions and dated introduction or measurement records below are independent historical identities; they are not distribution versions. See [developer navigation](DEVELOPERS.md) and [release contract](RELEASE_1_2_0.md).
|
|
4
|
-
|
|
5
|
-
Fixture/report version **1.0.0** records the reviewed/merged #119 acceptance disposition
|
|
6
|
-
for the exact Consumer, Prosumer and Professional preset assets **1.0.0**. This is
|
|
7
|
-
Photivra-owned synthetic regression evidence with unquantified physical uncertainty,
|
|
8
|
-
not measured equipment calibration, a perceptual bokeh score or a universal ranking.
|
|
9
|
-
PR #204 merged after substantive owner review/DCO; final science conformance merged in PR #206.
|
|
10
|
-
|
|
11
|
-
## Reproduce and review
|
|
12
|
-
|
|
13
|
-
Run `node scripts/generate-tier-acceptance-report.mjs` after `npm ci` to regenerate
|
|
14
|
-
[the committed report](validation/tier-acceptance-report-v1.json). An optional
|
|
15
|
-
output path writes a separate comparison report. The generator uses a temporary
|
|
16
|
-
TypeScript build, removes it afterwards, and has no published package surface.
|
|
17
|
-
It does not change runtime profiles or dependency/version contracts.
|
|
18
|
-
|
|
19
|
-
Run `npx vitest run test/generic-tier-report-acceptance.test.ts` for the report gates.
|
|
20
|
-
The normative [versioned envelopes](https://github.com/Photivra/photivra/blob/main/test/fixtures/tier-acceptance-envelopes-v1.json)
|
|
21
|
-
are finite regression limits, not physical error bars. Report JSON rounds displayed
|
|
22
|
-
numbers to twelve significant digits; CI uses full-precision calculations and
|
|
23
|
-
numeric tolerances. The report is a review artifact rather than a brittle exact
|
|
24
|
-
image golden. Stable scene ID `photivra:tier-matched-reference-v1`, #130 optical
|
|
25
|
-
state/exposure/seed, exact selected profile versions and complete catalog SHA-256
|
|
26
|
-
bind the evidence. Saved selections retain their existing strict drift guard.
|
|
27
|
-
|
|
28
|
-
## Three distinct report domains
|
|
29
|
-
|
|
30
|
-
**Physical** records the nine exact 550 nm field/defocus pupil responses per lens,
|
|
31
|
-
corner representative-channel CA, illumination falloff, breathing scale, in-frame
|
|
32
|
-
and off-frame ghost/veil, and sampled physical edge values. Pupil diagnostics retain
|
|
33
|
-
unit shape energy, separate relative throughput, peak/outer-sample fractions,
|
|
34
|
-
centroid, full 2D covariance and horizontal/vertical/diagonal sampled texture response.
|
|
35
|
-
The outer fraction is the boundary of the finite 5×5 kernel, not a measured optical
|
|
36
|
-
ring. The 100 cycles/mm texture response is discrete OTF magnitude of those taps,
|
|
37
|
-
not calibrated or continuous MTF. Existing #203 direct phase-sum tests independently
|
|
38
|
-
validate every tap and execute controlled textured/highlight scenes for all 27 slices.
|
|
39
|
-
|
|
40
|
-
**Correction costs** records full-Jacobian determinant, principal stretches and
|
|
41
|
-
output magnification (reciprocal of the smallest destination-to-source stretch),
|
|
42
|
-
corner gain and gain-only variance ratio, missing-source joint crop, retained ray
|
|
43
|
-
bounds and separately captured pixel-edge FOV. Variance ratio is gain squared
|
|
44
|
-
before clipping; it does not include covariance created by interpolation or imply
|
|
45
|
-
that photons/SNR were restored. The shifted crop retains 7×9 of 9×9 requested
|
|
46
|
-
samples, exposing the cost of unavailable support instead of padding it.
|
|
47
|
-
|
|
48
|
-
**Corrected** records residual displacement/representative-channel CA, center and
|
|
49
|
-
corner edge rows, clipping events and the unchanged capture/noise identities. The
|
|
50
|
-
physical sampled target uses the existing inverse combined radial/CA map and
|
|
51
|
-
illumination model at each source site, then adds one fixed alternating noise
|
|
52
|
-
array tied to #130's seed. Correction Off/On forks that same frozen capture.
|
|
53
|
-
Independent bilinear weights and polynomial gain predict all corrected green
|
|
54
|
-
samples; existing #179 tests independently check every channel, Jacobian and
|
|
55
|
-
residual using a scalar inverse oracle. The 9×9, 3 mm-pitch correction canvas is
|
|
56
|
-
an explicitly specialized executor target; it does not redefine #130's sensor
|
|
57
|
-
geometry or establish camera pixel resolution/optical MTF.
|
|
58
|
-
|
|
59
|
-
Pupil clipping, normalized PSF redistribution, illumination attenuation, stray
|
|
60
|
-
light and digital gain keep distinct ownership. These reports do not assert a
|
|
61
|
-
new simultaneous radiometric composition of every lens effect. The supported
|
|
62
|
-
narrow-band environment-to-RAW/output route and all nine pairings remain tested
|
|
63
|
-
by #203; its explicit PSF omission and unity field throughput remain visible.
|
|
64
|
-
|
|
65
|
-
## Intended relationships and honest unsupported metrics
|
|
66
|
-
|
|
67
|
-
The versioned limits enforce all three tiers' finite multidimensional responses,
|
|
68
|
-
sub-0.03 mm residual displacement, sub-0.06 mm residual CA, positive determinant,
|
|
69
|
-
bounded magnification and retained crop. These are sampled regression envelopes,
|
|
70
|
-
not a global continuous-field accuracy guarantee.
|
|
71
|
-
|
|
72
|
-
Professional retains less corner clipping/stray light and smaller radial/CA
|
|
73
|
-
coefficients, while its f/4 corner illumination and gain-only variance are worse
|
|
74
|
-
than Prosumer. Its near/far pupil responses differ, and its near-defocus sampled
|
|
75
|
-
texture response is lower than Prosumer's in this particular reference. Higher
|
|
76
|
-
tier therefore does not require more digital correction or superiority in every
|
|
77
|
-
metric. No aggregate sharpness/bokeh/quality score is computed.
|
|
78
|
-
|
|
79
|
-
LoCA/spectral fringing, onion-ring structure, measured MTF, arbitrary field/focus/
|
|
80
|
-
defocus interpolation and real-camera calibration are not represented by the
|
|
81
|
-
initial assets. The suite names these unsupported metrics explicitly rather than
|
|
82
|
-
fabricating numerical envelopes. Field and defocus comparisons use only their
|
|
83
|
-
exact declared slices. No third-party calibration or branded behavior is added.
|
|
84
|
-
|
|
85
|
-
## Body execution and ordinary flash
|
|
86
|
-
|
|
87
|
-
New signed pitch/yaw/roll tests independently predict each tier's delayed linear
|
|
88
|
-
response, pre-latency behavior, correction clamp and residual for ordinary and
|
|
89
|
-
large disturbances of both signs. The supplied 1 ms latency, gain and angle limits
|
|
90
|
-
own the differences. Panning bypass, translation, digital stabilization and
|
|
91
|
-
support policy are not enabled by these exact assets; no substitute stop rating
|
|
92
|
-
or device performance is inferred.
|
|
93
|
-
|
|
94
|
-
An owned 2 ms mechanical opening/closing scan is explicitly registered under the
|
|
95
|
-
exact mode/timing IDs required by each tier's flash capability. The tier's global
|
|
96
|
-
DATA readout declarations remain independent. Front/rear placement follows the
|
|
97
|
-
whole-frame exposure interval, never 30/15/8 ms data-readout duration. A declared
|
|
98
|
-
2 ms triangular pulse integrates to 1 ms of relative-modulation time through the
|
|
99
|
-
ordinary temporal source overlay and each local exposure window. No source power,
|
|
100
|
-
material/visibility, TTL, HSS, recycle, or sensor signal is inferred from that integral.
|
|
101
|
-
Too-short exposure, oversized pulse, HSS and stale timing identity reject.
|
|
102
|
-
|
|
103
|
-
Existing #181 tests retain matched AF availability/hold/loss/release gates,
|
|
104
|
-
drive cadence/timer limits, independent meter/AWB arithmetic and readout semantics.
|
|
105
|
-
Existing #182/#203 evidence covers exact ISO/readout, all orientations, rendering
|
|
106
|
-
exposure with unchanged native RAW and deterministic paired export. It is reused,
|
|
107
|
-
not replaced by a second production path.
|
|
108
|
-
|
|
109
|
-
## Browser/reference and acceptance disposition
|
|
110
|
-
|
|
111
|
-
These tier assets have no separate browser approximation or private-app calibration
|
|
112
|
-
backend. The browser-safe public functions are the ordinary reference path; #203
|
|
113
|
-
checks that interactive/reference manifests share the same immutable executed
|
|
114
|
-
results and fingerprints. No unimplemented preview is assigned an invented error
|
|
115
|
-
bound. Any future approximation must add its own same-input fidelity comparisons.
|
|
116
|
-
|
|
117
|
-
| #119 criterion | Evidence |
|
|
118
|
-
| --- | --- |
|
|
119
|
-
| All three tiers, deterministic versioned fixtures | Scene/envelope/report 1.0.0; exact selection references, catalog hash, replay |
|
|
120
|
-
| Matched optical specifications | Stable #130 50 mm/f/4/5 m state; explicit 550 nm pupil slices and specialized targets |
|
|
121
|
-
| Multidimensional bokeh | All 27 energy/throughput/centroid/covariance/outer/texture diagnostics plus #203 phase-sum and sampled scenes |
|
|
122
|
-
| Physical/correction/final outputs separate | Three report domains, same frozen edge/noise state; #179 residual/Jacobian/support oracle |
|
|
123
|
-
| Correction not monotonic by tier | Magnification/gain costs and explicit Prosumer/Professional tradeoff assertions |
|
|
124
|
-
| Testable tradeoffs | Near/far asymmetry, axis/field response and contrary Professional/Prosumer metrics |
|
|
125
|
-
| Profile drift visible | Complete catalog SHA-256, exact references, versioned envelopes and strict saved-selection parser |
|
|
126
|
-
| Identical correction A/B state | Frozen source and fixed noise; independently predicted interpolation/gain; no remetering/re-noising |
|
|
127
|
-
| Applicable browser fidelity | Same root implementation; shared immutable consumer results; no distinct approximation exists |
|
|
128
|
-
|
|
129
|
-
This historical acceptance contribution changed no runtime/API/schema/asset/package/POC versions. Final performance #43/#45 and conformance #131 are now merged; #180 prepares the distribution without changing independent model IDs. No new V1 deferral is approved.
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# Generic tier preset acceptance disposition
|
|
2
|
-
|
|
3
|
-
Release context: **package 1.2.0 candidate / root API 1.2.0**. Subsystem/model versions and dated introduction or measurement records below are independent historical identities; they are not distribution versions. See [developer navigation](DEVELOPERS.md) and [release contract](RELEASE_1_2_0.md).
|
|
4
|
-
|
|
5
|
-
This is the reviewed/merged #116 asset/catalog disposition against engine API
|
|
6
|
-
0.116.0 and production plan 0.7.0. The reviewed/merged release gate still applies.
|
|
7
|
-
#119 owns broader calibration and acceptance fixtures; #131 owns final conformance.
|
|
8
|
-
This document does not certify calibrated performance or silently approve a V1
|
|
9
|
-
science deferral.
|
|
10
|
-
|
|
11
|
-
## #116 acceptance evidence
|
|
12
|
-
|
|
13
|
-
| Criterion | Implementation and evidence |
|
|
14
|
-
| --- | --- |
|
|
15
|
-
| Generic bodies/lenses; exactly three stable names | `generic-tier-assets.ts`; complete SHA-256 manifest fixture; labels Consumer, Prosumer, Professional |
|
|
16
|
-
| Form, focal range and sensor format independent of tier | Explicit 50 mm prime assets; caller-owned geometry; selection flags; finite-state rejection tests |
|
|
17
|
-
| Matching defaults and cross-tier compatibility | Exact-version selection and #109 capability resolution; all nine pairings through executed production and output |
|
|
18
|
-
| Body/lens labels never enter scientific equations | Explicit resolved ISO/readout/transmission/pupil/correction profiles; independent photon transmission-ratio test and body-invariant photo expectation |
|
|
19
|
-
| Bokeh from explicit profiles | All 27 finite pupil slices independently checked by direct phase summation and evaluated on the same controlled texture/highlight scene |
|
|
20
|
-
| Matched optical conditions | #130 focal length, f/4, focus, exposure and seed reused; field/defocus variants remain explicit and do not modify the canonical fixture |
|
|
21
|
-
| No universal Professional ranking | Existing Prosumer/Professional falloff and gain-noise tradeoff; near/far and field responses remain multidimensional |
|
|
22
|
-
| Deterministic versioned definitions | Assets 1.0.0 and selection 0.1.0 unchanged; full manifest hash, immutable results, saved-profile drift rejection and replay tests |
|
|
23
|
-
| Exact saved references | Strict parser pins every body/lens/science reference; unknown versions and aliases reject without fallback |
|
|
24
|
-
| Physical/corrected outcomes distinct | Existing residual/CA/crop/Jacobian/interpolation/gain tests plus finite pupil scene correction Off/On using the same sampled capture/noise identity |
|
|
25
|
-
| Applicable body/output execution | Existing AF/drive/meter/AWB/stabilization/readout tests and new nine-pair authoritative scene→RAW→processed-output→paired-file tests |
|
|
26
|
-
|
|
27
|
-
## Ownership and limits
|
|
28
|
-
|
|
29
|
-
#116 defines and demonstrates the supported generic preset assets. No new optical
|
|
30
|
-
family, calibration dataset or tier-specific scientific engine is required for its
|
|
31
|
-
catalog acceptance. The existing foundations own their ordinary validity envelopes.
|
|
32
|
-
A lens with f/4–f/16 exposure capability has optical reference data only at f/4; the
|
|
33
|
-
resolver rejects unsupported optical acquisition states rather than extrapolating.
|
|
34
|
-
|
|
35
|
-
The new production fixture is a narrow-band ideal environment with independently
|
|
36
|
-
owned synthetic sensor registration/response/capacity/color declarations. It uses
|
|
37
|
-
exact tier readout profiles and transmission values via an explicitly identified
|
|
38
|
-
capability-binding fixture bridge. Its coarse 2×2 raster proves binding/lineage and
|
|
39
|
-
execution, not normal camera resolution or physical pixel pitch. Provider transport,
|
|
40
|
-
visibility, sensor calibration and absolute color accuracy remain unverified.
|
|
41
|
-
|
|
42
|
-
Exact complex pupils exist only at 550 nm, three field points and signed defocus
|
|
43
|
-
−20/0/+20 µm. Their controlled sampled-scene tests use those exact slices. Production
|
|
44
|
-
cannot silently interpolate them over spectrum/field/defocus, so its separate
|
|
45
|
-
continuous-spectrum test explicitly omits PSF. Pupil throughput and illumination
|
|
46
|
-
falloff retain separate ownership. No simultaneous composition is asserted.
|
|
47
|
-
|
|
48
|
-
#119 has its reviewed/merged matched report/envelope and stabilization/flash
|
|
49
|
-
acceptance disposition in [TIER_ACCEPTANCE.md](TIER_ACCEPTANCE.md), merged in PR #204. LoCA/spectral bokeh, measured MTF,
|
|
50
|
-
manufacturer AF performance, arbitrary lens-state optical interpolation and external
|
|
51
|
-
calibration are outside these initial assets' implemented representation; none is
|
|
52
|
-
invented by catalog labels. Unsupported required effects continue to block under
|
|
53
|
-
the authoritative production contract. #43/#45 remeasure the final consumers;
|
|
54
|
-
#131 reviews final scientific conformance; #180 performs the final documentation
|
|
55
|
-
and release audit.
|
|
56
|
-
|
|
57
|
-
All new scene data and phase-sum calculations are Photivra-owned synthetic test
|
|
58
|
-
material; no third-party calibration, brand profiles, dependencies or license changes.
|
|
59
|
-
At this historical acceptance checkpoint, root API was 0.116.0, preset 1.0.0 and selection 0.1.0. Current package/root API is 1.0.1; asset and schema versions remain unchanged.
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
# OpenSource V1 composition and consumer map
|
|
2
|
-
|
|
3
|
-
Release context: **package 1.2.0 candidate / root API 1.2.0**. Subsystem/model versions and dated introduction or measurement records below are independent historical identities; they are not distribution versions. See [developer navigation](DEVELOPERS.md) and [release contract](RELEASE_1_2_0.md).
|
|
4
|
-
|
|
5
|
-
Current candidate: package/root API 1.0.1, production plan 0.7.0. The following V1 audit records the original 1.0.0 preparation. Feature/science main is `34c6d9aca1c2e365b253c1562734d11bc8e0235f` (#206). [V1 #129](https://github.com/Photivra/photivra/issues/129) is **32/32**; #178 and #131 are closed. This audit reconciles current consumer boundaries below; #180 is the release-preparation contribution and publication remains owner-only.
|
|
6
|
-
|
|
7
|
-
A closed foundation ticket establishes its primitive scope, not automatic
|
|
8
|
-
availability of every optional model in every production route. Direct consumers,
|
|
9
|
-
bounded executed composition and unsupported combinations are distinguished
|
|
10
|
-
below; no unsupported combination is an approved V1 deferral.
|
|
11
|
-
|
|
12
|
-
## All 32 scoped items
|
|
13
|
-
|
|
14
|
-
Source paths identify the main primitive/boundary, not every helper in that
|
|
15
|
-
feature. The consumer column distinguishes direct foundations, production-plan
|
|
16
|
-
results and bounded capture/output adapters. The last column records coupling rules and supported-route limits; older ticket references identify merged owners, not outstanding feature tickets. No competing RAW writer or second scientific graph is needed.
|
|
17
|
-
|
|
18
|
-
| Ticket / feature | Tracker | Primitive or boundary | Current entry point / consumer | Representative evidence | Coupling / supported boundary |
|
|
19
|
-
| --- | --- | --- | --- | --- | --- |
|
|
20
|
-
| [#1](https://github.com/Photivra/photivra/issues/1) Non-circular diffraction | closed | [polygon-diffraction.ts](https://github.com/Photivra/photivra/blob/main/src/optics/polygon-diffraction.ts) | Direct polygon PSF; production PSF execution absent | [polygon-diffraction.test.ts](https://github.com/Photivra/photivra/blob/main/test/polygon-diffraction.test.ts) | #16/#178: compose declared pupil support without double diffraction |
|
|
21
|
-
| [#3](https://github.com/Photivra/photivra/issues/3) Extended-object motion | closed | [extended-object-projection.ts](https://github.com/Photivra/photivra/blob/main/src/motion/extended-object-projection.ts) | Direct temporal projection; production radiance accumulation absent | [extended-object-projection.test.ts](https://github.com/Photivra/photivra/blob/main/test/extended-object-projection.test.ts) | #16/#178: retain depth/visibility/time at requested nodes |
|
|
22
|
-
| [#7](https://github.com/Photivra/photivra/issues/7) ISO and signal chain | closed | [iso-signal-chain.ts](https://github.com/Photivra/photivra/blob/main/src/sensor/iso-signal-chain.ts) | Explicit regime bindings; RAW producer consumes readout profiles | [generic-tier-output-acceptance.test.ts](https://github.com/Photivra/photivra/blob/main/test/generic-tier-output-acceptance.test.ts) | #16: bind committed ISO to explicit regime; preserve physical charge |
|
|
23
|
-
| [#12](https://github.com/Photivra/photivra/issues/12) Readout and shutter | closed | [exposure-window.ts](https://github.com/Photivra/photivra/blob/main/src/sensor/exposure-window.ts) | Production temporal diagnostics; RAW local-window handoff | [sensor-raw-local-exposure.test.ts](https://github.com/Photivra/photivra/blob/main/test/sensor-raw-local-exposure.test.ts) | #16: integrate scene signal over those windows; no inferred synchronization |
|
|
24
|
-
| [#14](https://github.com/Photivra/photivra/issues/14) Sensor pipeline | closed | [eqe-electron-rate.ts](https://github.com/Photivra/photivra/blob/main/src/sensor/eqe-electron-rate.ts) | Bounded irradiance→EQE local exposure composition; charge-to-RAW adapter | [sensor-raw-pipeline.test.ts](https://github.com/Photivra/photivra/blob/main/test/sensor-raw-pipeline.test.ts) | #16/#178: bind committed scene/optics/PSF origin to physical irradiance nodes |
|
|
25
|
-
| [#15](https://github.com/Photivra/photivra/issues/15) Linear capture and color | closed | [simulated-capture.ts](https://github.com/Photivra/photivra/blob/main/src/capture/simulated-capture.ts) | Immutable capture; ideal XYZ color and linear encoding; sensor adapter distinct | [capture-color.test.ts](https://github.com/Photivra/photivra/blob/main/test/capture-color.test.ts) | #112/#16: bind physical capture origin; preserve color-channel basis |
|
|
26
|
-
| [#16](https://github.com/Photivra/photivra/issues/16) Paired RAW DNG/JPEG | closed | [photographic-export.ts](https://github.com/Photivra/photivra/blob/main/src/capture/photographic-export.ts) | Exact attached-RAW reconstruction → development → correction/SDR → files | [raw-output-conformance.test.ts](https://github.com/Photivra/photivra/blob/main/test/raw-output-conformance.test.ts) | Producer-derived independent/Adobe/editor evidence merged in #201; 4,096-site bound remains explicit |
|
|
27
|
-
| [#43](https://github.com/Photivra/photivra/issues/43) Prepared/batch performance | closed | [geometric-transforms.ts](https://github.com/Photivra/photivra/blob/main/src/output/geometric-transforms.ts) | Call-owned prepared geometric mapping reused by sampling execution | [geometric-preparation-reuse.test.ts](https://github.com/Photivra/photivra/blob/main/test/geometric-preparation-reuse.test.ts) | [Merged final remeasurement](V1_PERFORMANCE_DISPOSITION.md); retain merged call-owned reuse; no further abstraction |
|
|
28
|
-
| [#45](https://github.com/Photivra/photivra/issues/45) POC projection reuse | closed | [poc-simulation.ts](https://github.com/Photivra/photivra/blob/main/src/simulation/poc-simulation.ts) | Private prepared projection in legacy POC defocus sweeps | [poc-projection-reuse.test.ts](https://github.com/Photivra/photivra/blob/main/test/poc-projection-reuse.test.ts) | [Merged final remeasurement](V1_PERFORMANCE_DISPOSITION.md); retain request-local reuse; POC remains separate |
|
|
29
|
-
| [#95](https://github.com/Photivra/photivra/issues/95) Stable support | closed | [camera-shake.ts](https://github.com/Photivra/photivra/blob/main/src/stabilization/camera-shake.ts) | Direct ideal stable-support boundary, independent of correction | [camera-shake.test.ts](https://github.com/Photivra/photivra/blob/main/test/camera-shake.test.ts) | #16/#178: requested shake/stabilization must preserve physical ownership |
|
|
30
|
-
| [#97](https://github.com/Photivra/photivra/issues/97) IBIS/OIS | closed | [system.ts](https://github.com/Photivra/photivra/blob/main/src/stabilization/system.ts) | Explicit disturbance/trajectory temporal sampling | [stabilization-system.test.ts](https://github.com/Photivra/photivra/blob/main/test/stabilization-system.test.ts) | #16/#178: consume selected trajectory in physical sampling, not a blur-quality scalar |
|
|
31
|
-
| [#98](https://github.com/Photivra/photivra/issues/98) Sensor architecture | closed | [architecture.ts](https://github.com/Photivra/photivra/blob/main/src/sensor/architecture.ts) | Declared technology metadata and related standalone profile boundaries | [sensor-architecture.test.ts](https://github.com/Photivra/photivra/blob/main/test/sensor-architecture.test.ts) | #16: preserve selected architecture/bindings; metadata alone is not signal execution |
|
|
32
|
-
| [#100](https://github.com/Photivra/photivra/issues/100) Metering | closed | [metering.ts](https://github.com/Photivra/photivra/blob/main/src/exposure/metering.ts) | Relative pre-exposure meter → exposure target/equipment resolver | [metering-equipment-integration.test.ts](https://github.com/Photivra/photivra/blob/main/test/metering-equipment-integration.test.ts) | #16/#112: retain pre-display signal and do not infer calibrated spectral weighting |
|
|
33
|
-
| [#103](https://github.com/Photivra/photivra/issues/103) Finite/infinity focus | closed | [focus-state.ts](https://github.com/Photivra/photivra/blob/main/src/optics/focus-state.ts) | Explicit focus state consumed by optics and committed capture | [focus-state.test.ts](https://github.com/Photivra/photivra/blob/main/test/focus-state.test.ts) | #16/#178: preserve focus in field/depth/PSF evaluations |
|
|
34
|
-
| [#104](https://github.com/Photivra/photivra/issues/104) Focus control | closed | [focus-control.ts](https://github.com/Photivra/photivra/blob/main/src/capture/focus-control.ts) | MF/AF state and release gate; tier body acceptance | [generic-tier-body-acceptance.test.ts](https://github.com/Photivra/photivra/blob/main/test/generic-tier-body-acceptance.test.ts) | #16: carry committed focus; no undocumented tracking renderer |
|
|
35
|
-
| [#105](https://github.com/Photivra/photivra/issues/105) Release sequencing | closed | [release-sequence.ts](https://github.com/Photivra/photivra/blob/main/src/capture/release-sequence.ts) | Release frame → production snapshot binding; deterministic ownership | [production-capture-release-binding.test.ts](https://github.com/Photivra/photivra/blob/main/test/production-capture-release-binding.test.ts) | #16: carry frame timing/settings/seed to physical execution |
|
|
36
|
-
| [#106](https://github.com/Photivra/photivra/issues/106) Manual flash/sync | closed | [flash.ts](https://github.com/Photivra/photivra/blob/main/src/exposure/flash.ts) | Declared sync and illumination overlay; no full production radiance integration | [flash.test.ts](https://github.com/Photivra/photivra/blob/main/test/flash.test.ts) | #16/#178: apply physical-time light transport when selected; no exposure-duration shortcut |
|
|
37
|
-
| [#108](https://github.com/Photivra/photivra/issues/108) WB/custom/AWB | closed | [white-balance.ts](https://github.com/Photivra/photivra/blob/main/src/color/white-balance.ts) | Resolved WB → release/production binding; RAW intent and one-time sensor development | [photographic-export.test.ts](https://github.com/Photivra/photivra/blob/main/test/photographic-export.test.ts) | #112/#16: preserve matching basis; never re-estimate from rendered output |
|
|
38
|
-
| [#111](https://github.com/Photivra/photivra/issues/111) Production plan | closed | [image-formation-plan.ts](https://github.com/Photivra/photivra/blob/main/src/composition/image-formation-plan.ts) | Authoritative graph expansion; physical sample/temporal results and blockers | [production-image-formation-plan.test.ts](https://github.com/Photivra/photivra/blob/main/test/production-image-formation-plan.test.ts) | #178/#16/#112: intentionally add downstream stages with contract/version review |
|
|
39
|
-
| [#112](https://github.com/Photivra/photivra/issues/112) Processed camera output | closed | [capture-corrected-sdr.ts](https://github.com/Photivra/photivra/blob/main/src/output/capture-corrected-sdr.ts) | Capture-bound color/correction → oriented view/SDR; paired RAW consumer | [photographic-export-correction.test.ts](https://github.com/Photivra/photivra/blob/main/test/photographic-export-correction.test.ts) | Shared processed RAW/preview/JPEG merged in #200; executed upstream route in plan 0.7.0; final tier/conformance acceptance is merged |
|
|
40
|
-
| [#113](https://github.com/Photivra/photivra/issues/113) Lens PSF/bokeh | closed | [lens-psf-profile.ts](https://github.com/Photivra/photivra/blob/main/src/optics/lens-psf-profile.ts) | Declared sampled PSF/MTF; separate complex-pupil model | [lens-psf-framework.test.ts](https://github.com/Photivra/photivra/blob/main/test/lens-psf-framework.test.ts) | #16/#178: wavelength/field/depth sampling and finite support; MTF-only is not renderable PSF |
|
|
41
|
-
| [#114](https://github.com/Photivra/photivra/issues/114) Stray light | closed | [stray-light.ts](https://github.com/Photivra/photivra/blob/main/src/optics/stray-light.ts) | Separate declared ghost/veiling irradiance foundation | [stray-light.test.ts](https://github.com/Photivra/photivra/blob/main/test/stray-light.test.ts) | #16/#178: add only explicitly selected incremental light; never fold into primary PSF |
|
|
42
|
-
| [#116](https://github.com/Photivra/photivra/issues/116) Generic tiers | closed | [generic-tier-presets.ts](https://github.com/Photivra/photivra/blob/main/src/equipment/generic-tier-presets.ts) | Exact-version selection; body and lens profile resolution | [generic-tier-presets.test.ts](https://github.com/Photivra/photivra/blob/main/test/generic-tier-presets.test.ts) | [Merged catalog acceptance disposition](TIER_PRESET_ACCEPTANCE.md); nine-pair production/output and 27 exact pupil scenes; #119 broader validation is merged; no calibrated ranking |
|
|
43
|
-
| [#117](https://github.com/Photivra/photivra/issues/117) Lens corrections | closed | [lens-corrections.ts](https://github.com/Photivra/photivra/blob/main/src/output/lens-corrections.ts) | Capture-bound selected correction; RAW informational intent/JPEG processing | [generic-tier-correction-acceptance.test.ts](https://github.com/Photivra/photivra/blob/main/test/generic-tier-correction-acceptance.test.ts) | #112/#16: connect authoritative upstream capture while preserving residual/crop/noise costs |
|
|
44
|
-
| [#118](https://github.com/Photivra/photivra/issues/118) Composed geometry/resampling | closed | [geometric-transforms.ts](https://github.com/Photivra/photivra/blob/main/src/output/geometric-transforms.ts) | Domain-compatible joint mapping/sampling → bounded correction executor | [geometric-transforms.test.ts](https://github.com/Photivra/photivra/blob/main/test/geometric-transforms.test.ts) | #112/#16: preserve full Jacobian/filter/support and existing domain order |
|
|
45
|
-
| [#119](https://github.com/Photivra/photivra/issues/119) Tier acceptance | closed | [generic-tier-assets.ts](https://github.com/Photivra/photivra/blob/main/src/equipment/generic-tier-assets.ts) | Matched synthetic body/correction/readout-to-file fixture consumers | [generic-tier-output-acceptance.test.ts](https://github.com/Photivra/photivra/blob/main/test/generic-tier-output-acceptance.test.ts) | [Merged final tier acceptance](TIER_ACCEPTANCE.md): versioned physical/cost/corrected report, multidimensional finite pupils and matched body execution; existing paired-output evidence reused |
|
|
46
|
-
| [#130](https://github.com/Photivra/photivra/issues/130) Canonical fixture | closed | [basic-reference-fixture.ts](https://github.com/Photivra/photivra/blob/main/test/helpers/basic-reference-fixture.ts) | Shared deterministic laboratory and minimal declared variants | [basic-reference-scene.test.ts](https://github.com/Photivra/photivra/blob/main/test/basic-reference-scene.test.ts) | #131: reuse without treating tiny/synthetic raster as performance or calibration evidence |
|
|
47
|
-
| [#131](https://github.com/Photivra/photivra/issues/131) Final conformance | closed | [raw-output-conformance.test.ts](https://github.com/Photivra/photivra/blob/main/test/raw-output-conformance.test.ts) | Final meter/capture/production/output path plus incremental geometry/signal suites | [cross-stage-conformance.test.ts](https://github.com/Photivra/photivra/blob/main/test/cross-stage-conformance.test.ts) | [Reviewed/merged final conformance](SCIENTIFIC_CONFORMANCE.md), PR #206; 32/32 feature/science complete |
|
|
48
|
-
| [#132](https://github.com/Photivra/photivra/issues/132) Numerics/units | closed | [validation.ts](https://github.com/Photivra/photivra/blob/main/src/core/validation.ts) | Typed input/result guards plus shared units/finite conventions | [numerical-correctness-contract.test.ts](https://github.com/Photivra/photivra/blob/main/test/numerical-correctness-contract.test.ts) | Apply throughout new composition; existing guards do not establish physical validity |
|
|
49
|
-
| [#133](https://github.com/Photivra/photivra/issues/133) API conventions | closed | [API_STYLE.md](../docs/API_STYLE.md) | Root public naming/compatibility/version policy | [api-style-compatibility.test.ts](https://github.com/Photivra/photivra/blob/main/test/api-style-compatibility.test.ts) | Review new public handoffs and relevant independent versions before activation |
|
|
50
|
-
| [#134](https://github.com/Photivra/photivra/issues/134) Evidence/uncertainty | closed | [scientific-assurance.ts](https://github.com/Photivra/photivra/blob/main/src/core/scientific-assurance.ts) | Production assurance composition retains weakest required status and unpropagated uncertainty | [scientific-assurance.test.ts](https://github.com/Photivra/photivra/blob/main/test/scientific-assurance.test.ts) | #16/#112: preserve child evidence/status; no invented combined uncertainty |
|
|
51
|
-
| [#135](https://github.com/Photivra/photivra/issues/135) Front filters | closed | [front-of-lens-filter.ts](https://github.com/Photivra/photivra/blob/main/src/optics/front-of-lens-filter.ts) | Capture snapshot → #110 throughput exactly once | [front-of-lens-filter.test.ts](https://github.com/Photivra/photivra/blob/main/test/front-of-lens-filter.test.ts) | #16/#178: distinguish lens/filter/sensor response scope to avoid double transmission |
|
|
52
|
-
|
|
53
|
-
## Authoritative production execution
|
|
54
|
-
|
|
55
|
-
[`getImageFormationContract()`](https://github.com/Photivra/photivra/blob/main/src/core/image-formation.ts) owns the stage
|
|
56
|
-
dependencies. Plan 0.7.0 expands that graph and can invoke the existing
|
|
57
|
-
[`simulateEnvironmentSensorRawFrame()`](https://github.com/Photivra/photivra/blob/main/src/capture/environment-raw-producer.ts)
|
|
58
|
-
through `environmentCapture`. It binds exact context/event/scene/provider/optics,
|
|
59
|
-
geometry/shutter/rotation/seed/WB identities before provider code executes.
|
|
60
|
-
Optional processing consumes only its realized native RAW frame. No second
|
|
61
|
-
writer, scientific graph or seed schedule is introduced.
|
|
62
|
-
|
|
63
|
-
| Stage family | Executed consumer | Independent acceptance |
|
|
64
|
-
| --- | --- | --- |
|
|
65
|
-
| Source projection, provider, optical throughput and temporal sampling | Generated inverse environment rays, exact local shutter midpoints and supplied synchronous provider through existing optical bridge | `environment-raw-integration.test.ts`, `sensor-environment-query.test.ts`, `scene-eqe-temporal-exposure.test.ts` |
|
|
66
|
-
| Wavelength/field PSF | Existing sampled local PSF support per wavelength/destination; omitted PSF is an explicit point-optics model with evidence/limitation | `sensor-psf-quadrature.test.ts`, sampled/omitted PSF plan acceptance |
|
|
67
|
-
| Optical stack, CFA/spatial/spectral response | Existing AA/aperture plans, exact destination channel, package-plane response compatibility/range and instantaneous EQE | `spatial-sampling-quadrature.test.ts`, `eqe-local-exposure.test.ts`, `eqe-temporal-exposure.test.ts` |
|
|
68
|
-
| Charge, noise, signed readout and ADC | Existing temporal photo/dark, completeness/capacity and native seeded RAW producer | `temporal-photo-raw.test.ts`, `sensor-raw-producer.test.ts`, plan replay acceptance |
|
|
69
|
-
| Reconstruction, color/WB, selected correction, orientation/crop and display | Shared processed-RAW executor consumes the exact executed frame; output changes retain native codes and upstream noise | `processed-sensor-raw.test.ts`, `photographic-export-correction.test.ts`, all-orientation/WB/correction plan acceptance |
|
|
70
|
-
| Files | Existing paired exporter consumes that same frame; no file IO in the plan | `environment-raw-integration.test.ts`, committed #201 independent LibRaw/XML/TIFF/JPEG records and owner application evidence |
|
|
71
|
-
| Renderer/reference consumers | Consumer manifest 0.2.0 exposes the same immutable execution/output results and plan identity | `production-image-formation-plan.test.ts` |
|
|
72
|
-
|
|
73
|
-
See [production environment capture](PRODUCTION_ENVIRONMENT_CAPTURE.md) for the
|
|
74
|
-
complete binding and migration contract. Successful bounded execution can reach
|
|
75
|
-
all fourteen requested stages. Missing execution inputs, unsupported required
|
|
76
|
-
effects and insufficient renderer capabilities retain explicit blockers. The
|
|
77
|
-
sample-only and independently attached-RAW routes keep their conservative
|
|
78
|
-
limitations; standalone child flags are not rewritten by the parent composer.
|
|
79
|
-
|
|
80
|
-
## Scientific boundaries and ownership
|
|
81
|
-
|
|
82
|
-
The implemented execution envelope remains the existing bounded ideal
|
|
83
|
-
continuous-spectrum environment route: opening-reference scene time zero,
|
|
84
|
-
complete one-to-one native CFA registration, explicit unity field throughput,
|
|
85
|
-
constant-axis motion, optional destination-local sampled PSF and valid response
|
|
86
|
-
scope/area/range. The native/reference budget is 4,096 sites and aggregate
|
|
87
|
-
provider evaluations are limited to 100,000. Shared output-envelope checks reject
|
|
88
|
-
unsupported resampling/coverage before provider calls; pixel-dependent kernel
|
|
89
|
-
and correction support remain execution checks.
|
|
90
|
-
|
|
91
|
-
Executed source queries establish invocation and numerical lineage, not measured
|
|
92
|
-
transport, visibility, calibration, convergence, arbitrary world pose or global
|
|
93
|
-
field-energy conservation. Renderer implementation remains external under the
|
|
94
|
-
existing provider contract. A closed direct foundation does not license the
|
|
95
|
-
composer to mark an unsupported optional model active. The table above retains
|
|
96
|
-
feature-specific direct consumers and remaining integration ownership. No
|
|
97
|
-
broader capability or unsupported scientific combination has been approved for
|
|
98
|
-
deferral by this change.
|
|
99
|
-
|
|
100
|
-
## Defect disposition and final gates
|
|
101
|
-
|
|
102
|
-
- #178 finding 1: the 32-item primitive/consumer/evidence/ownership map is present;
|
|
103
|
-
the executed bounded environment route now composes the previously blocked
|
|
104
|
-
sensor stages through the authoritative graph. Unsupported requested effects
|
|
105
|
-
remain explicit; stale version diagnostics were fixed in #183.
|
|
106
|
-
- Finding 2: the plan invokes the engine-owned environment/optics/PSF/response/
|
|
107
|
-
temporal path into the existing RAW producer, rather than accepting a caller
|
|
108
|
-
exposure result as evidence that source execution ran. Provider truth remains
|
|
109
|
-
separate from executed origin.
|
|
110
|
-
- Finding 3: equivalent freeze/canonical JSON/allowlist/public-ID mechanics were
|
|
111
|
-
consolidated in #184/#185/#193. Current production capture bindings and output
|
|
112
|
-
envelope checks reuse the existing owners. Meaningful domain differences are
|
|
113
|
-
documented in [helper reuse review](V1_HELPER_REUSE_REVIEW.md).
|
|
114
|
-
- Finding 4: reusable sensor-color development is owned by the internal color
|
|
115
|
-
adapter from #186; WB basis/application and export/container ownership remain
|
|
116
|
-
distinct.
|
|
117
|
-
- Finding 5: shared producer/reconstruction bounds and early output compatibility
|
|
118
|
-
are documented/tested in #187 and this executed plan preflight; #201 records
|
|
119
|
-
the supported-size decision without claiming megapixel measurements. See
|
|
120
|
-
[RAW frame envelope](RAW_FRAME_ENVELOPE.md).
|
|
121
|
-
- Finding 6: `distribute*` was documented in #183; the compatibility guard remains.
|
|
122
|
-
|
|
123
|
-
#131 final conformance is reviewed and merged. #180 is this final human/agent/source documentation and 1.0 preparation contribution; final review/DCO, signed merge and final-main CI precede owner-only tag/publication. #165 remains post-V1. The linked source and tests define each supported boundary; a closed issue does not authorize every optional model combination.
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
# V1 internal helper reuse review
|
|
2
|
-
|
|
3
|
-
Release context: **package 1.2.0 candidate / root API 1.2.0**. Subsystem/model versions and dated introduction or measurement records below are independent historical identities; they are not distribution versions. See [developer navigation](DEVELOPERS.md) and [release contract](RELEASE_1_2_0.md).
|
|
4
|
-
|
|
5
|
-
This review addresses the remaining repeated validation mechanics in defect
|
|
6
|
-
#178. It does not close production integration, performance, editor acceptance
|
|
7
|
-
or final release preparation. The review follows main `e5a6ce2` and the earlier
|
|
8
|
-
freeze, canonical JSON and sensor-color ownership changes. The temporal photo-signal handoff and shared validators were merged in
|
|
9
|
-
PRs #192/#193. This is a current reuse assessment, not an unmerged stack.
|
|
10
|
-
|
|
11
|
-
## Shared mechanics
|
|
12
|
-
|
|
13
|
-
`src/core/record-validation.ts` now owns the equivalent record/own-enumerable-key
|
|
14
|
-
allowlist check used by capture, RAW attachment/producer/reconstruction, export
|
|
15
|
-
metadata, photographic export, linear encoding, capture color and SDR/correction
|
|
16
|
-
boundaries, plus the temporal photo-signal boundary. It also owns the identical 1–128 character ASCII public opaque ID
|
|
17
|
-
grammar used by capture, RAW, exporter, producer, color, SDR and temporal photo-signal boundaries.
|
|
18
|
-
|
|
19
|
-
Domain wrappers retain their original diagnostics. Domains still own field
|
|
20
|
-
lists, required fields, enum choices, evidence, numerical validity, copying,
|
|
21
|
-
freezing and scientific contracts. The helper returns the existing record;
|
|
22
|
-
it does not sanitize input or silently add stricter object semantics. This
|
|
23
|
-
preserves the existing treatment of inherited/non-enumerable/symbol properties
|
|
24
|
-
and is not a general serializer or hostile JavaScript object sandbox.
|
|
25
|
-
|
|
26
|
-
## Separations retained
|
|
27
|
-
|
|
28
|
-
- Finite-number validators differ in sign, integer ranges, negative-zero policy
|
|
29
|
-
and diagnostics. A single generic validator would obscure those contracts.
|
|
30
|
-
- Dense arrays have different limits, required lengths, sparse-array behavior
|
|
31
|
-
and element validation. Their domain policies remain local.
|
|
32
|
-
- UUID and SHA-256 grammars remain distinct from opaque public IDs.
|
|
33
|
-
- Planner/focus/release freezing has intentionally different early-return
|
|
34
|
-
semantics from the shared child-first owned-data freeze.
|
|
35
|
-
- Planner fingerprints and export hashes share canonical JSON mechanics, but
|
|
36
|
-
retain different undefined-value policies and identity algorithms.
|
|
37
|
-
- Sensor-color development and ideal virtual-camera transforms retain their
|
|
38
|
-
separate basis, conditioning and physical meanings.
|
|
39
|
-
- Evidence/calibration parsers retain their own model/version/applicability
|
|
40
|
-
checks. A public identifier grammar is not scientific applicability evidence.
|
|
41
|
-
|
|
42
|
-
The equivalent helper findings are addressed by the shared implementation and
|
|
43
|
-
these explicit retained boundaries. Future reuse should follow demonstrated
|
|
44
|
-
semantic equivalence, rather than mechanical similarity alone.
|
|
45
|
-
|
|
46
|
-
## Compatibility and verification
|
|
47
|
-
|
|
48
|
-
No public export, version, schema, equation, seed schedule or byte-identity
|
|
49
|
-
algorithm changes. Existing historical capture/RAW/DNG/JPEG hash regressions
|
|
50
|
-
remain the exact-byte oracle. Public-boundary tests cover invalid record shapes,
|
|
51
|
-
unknown fields and unsafe identities with unchanged domain error messages.
|
|
52
|
-
The shared helpers stay internal to the package's root export contract.
|
|
53
|
-
|
|
54
|
-
The final #180 audit must revisit this assessment against the integrated release
|
|
55
|
-
candidate; this document is not that exhaustive final documentation audit.
|
|
56
|
-
|
|
57
|
-
Production environment integration reuses the existing output-envelope check
|
|
58
|
-
before invoking provider code. Capture identity/exposure/seed/WB/focus validation
|
|
59
|
-
is shared between executed and attached-RAW plan routes; domain-specific scene,
|
|
60
|
-
geometry, timing and provider bindings remain separate.
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
# Final V1 performance disposition: #43 / #45
|
|
2
|
-
|
|
3
|
-
Release context: **package 1.2.0 candidate / root API 1.2.0**. Subsystem/model versions and dated introduction or measurement records below are independent historical identities; they are not distribution versions. See [developer navigation](DEVELOPERS.md) and [release contract](RELEASE_1_2_0.md).
|
|
4
|
-
|
|
5
|
-
Final measured main is `edc20e61538152fa758f3cce4b41cc34d1e8ba03` (#204), root API 0.116.0, POC API 0.20.0. #175 and #176 already merged the justified private optimizations. PR #205 merged this final remeasurement after human review/DCO; both issues are closed. The recorded engine commit identifies the measured build, not the latest release candidate. It adds no runtime optimization, public abstraction, dependency, numerical tolerance change or timing CI gate.
|
|
6
|
-
|
|
7
|
-
## Context and reproducibility
|
|
8
|
-
|
|
9
|
-
All measurements used Node 24.19.0 / V8 13.6.233.17-node.51, macOS arm64, Apple M5 Pro, 18 logical CPUs. The host is shared; ambient activity, thermals and power state are uncontrolled. Runs were sequential with no concurrent task tests/benchmarks. Both trees were compiled with canonical `tsc`. The independent pre-optimization reference is `c1374c31473f893310d1ce4f0d5a737aaba43ab5`; comparisons isolate the retained #43/#45 paths, not the entire intervening V1 feature set. Candidate source SHA-256 commitments are retained in every paired artifact. `candidateBaseCommit` now records the actual measured final main independently of the reference. Labels are operator-attested, not automatically git-verified.
|
|
10
|
-
|
|
11
|
-
Two ordinary paired runs and one separate forced-GC/profile run reuse the existing owned benchmarks unchanged in workload/equivalence semantics. Reference/candidate order alternates, scenario order rotates. POC: 500 warmups and nine blocks of 1,000 requests per shape. Geometry: five blocks, 100 warmup/block calls for 1×1/5×5, two warmups/one block call for larger grids. Whole response/result including provenance must match the independent reference before timing. See [projection method](POC_PROJECTION_REUSE.md) and [geometry method](GEOMETRIC_PREPARATION_REUSE.md).
|
|
12
|
-
|
|
13
|
-
Raw artifacts: [geometry ordinary 1](benchmarks/2026-10-02-v1-geometry-ordinary-1.json), [ordinary 2](benchmarks/2026-10-02-v1-geometry-ordinary-2.json), [GC/profile](benchmarks/2026-10-02-v1-geometry-gc-profile.json); [POC ordinary 1](benchmarks/2026-10-02-v1-poc-ordinary-1.json), [ordinary 2](benchmarks/2026-10-02-v1-poc-ordinary-2.json), [GC/profile](benchmarks/2026-10-02-v1-poc-gc-profile.json). Raw block timing and retained-heap deltas are preserved. GC-assisted timings are separate distributions and do not establish GC causality.
|
|
14
|
-
|
|
15
|
-
## #43 decision: retain call-owned geometry reuse; no further prepared API
|
|
16
|
-
|
|
17
|
-
| Whole consumer | Reference ms/call, run 1 | Final main ms/call, run 1 | Ratio run 1 | Ratio run 2 |
|
|
18
|
-
| --- | ---: | ---: | ---: | ---: |
|
|
19
|
-
| sampling-plan-1x1 | 0.0146 | 0.0117 | 0.799 | 0.796 |
|
|
20
|
-
| corrected-capture-1x1 | 0.1264 | 0.1069 | 0.846 | 0.815 |
|
|
21
|
-
| sampling-plan-5x5 | 0.2004 | 0.1157 | 0.577 | 0.594 |
|
|
22
|
-
| corrected-capture-5x5 | 1.3817 | 0.8879 | 0.643 | 0.649 |
|
|
23
|
-
| sampling-plan-17x17 | 2.3222 | 1.2968 | 0.558 | 0.566 |
|
|
24
|
-
| corrected-capture-17x17 | 16.0390 | 10.2372 | 0.638 | 0.608 |
|
|
25
|
-
| sampling-plan-33x33 | 8.6810 | 5.0144 | 0.578 | 0.577 |
|
|
26
|
-
| corrected-capture-33x33 | 62.3895 | 39.9700 | 0.641 | 0.662 |
|
|
27
|
-
| sampling-plan-65x65 | 34.3922 | 20.1464 | 0.586 | 0.557 |
|
|
28
|
-
| corrected-capture-65x65 | 244.6844 | 165.3251 | 0.676 | 0.660 |
|
|
29
|
-
|
|
30
|
-
For 17×17 through 65×65, ordinary sampling plans are approximately 41–44% shorter and whole corrected captures 32–39% shorter in these two runs. The current merged paths execute actual inverse support, joint masks/crops, three-channel nearest resampling and gain on an explicitly declared 24×24 mm synthetic field. These are bounded consumer measurements, not full-resolution or browser rendering. The gain remains material after the V1 processing/tier work stabilized.
|
|
31
|
-
|
|
32
|
-
Separate geometry preparation medians are 3.129 µs reference and 3.298 µs final main; preparation stays at the untrusted public boundary. There is no persistent prepared state or added lifecycle to measure. A returned mapping still owns its transform data and per-point diagnostics. Small grids above measure amortization including boundary overhead rather than assuming preparation is free. No portable break-even grid size is asserted.
|
|
33
|
-
|
|
34
|
-
At 65×65 correction, separate CPU sampling counted `prepareGeometricMapping` in 307/881 reference consumer stacks versus 2/599 final-main stacks. Heap sampling estimated 6,923,905,856 versus 4,842,216,576 allocated bytes over five captures (about 30% lower). Preparation-inclusive estimates were 2,070,409,472 versus 426,720 bytes. These are overlapping inclusive CPU categories and statistical allocation estimates, not exact counters, retained context size or GC-pause measurements. Large cumulative allocation is not simultaneous live memory.
|
|
35
|
-
|
|
36
|
-
Acceptance reuses the existing 32-case deterministic scalar oracle corpus, mutation isolation, fresh-call revalidation and folded/intermediate-domain failures. No inverse iteration bound or scalar API behavior changes. The final disposition is to retain #176 and the existing radial/CA batch surface, and add no generic mutable prepared engine, vignetting/rotation cache or extra solver. The new production profile below supplies no evidence that such an abstraction would materially improve its whole request.
|
|
37
|
-
|
|
38
|
-
## #45 decision: retain request-local defocus projection reuse; no broader context
|
|
39
|
-
|
|
40
|
-
| Whole POC request | Reference µs, run 1 | Final main µs, run 1 | Ratio run 1 | Ratio run 2 |
|
|
41
|
-
| --- | ---: | ---: | ---: | ---: |
|
|
42
|
-
| 24mp-base | 5.330 | 5.388 | 1.011 | 0.997 |
|
|
43
|
-
| 24mp-defocus-1 | 5.813 | 5.548 | 0.954 | 0.950 |
|
|
44
|
-
| 24mp-defocus-2 | 6.317 | 5.801 | 0.918 | 0.924 |
|
|
45
|
-
| 24mp-defocus-4 | 7.077 | 6.423 | 0.908 | 0.912 |
|
|
46
|
-
| 24mp-defocus-8 | 8.877 | 7.589 | 0.855 | 0.866 |
|
|
47
|
-
| 24mp-defocus-16 | 12.361 | 9.792 | 0.792 | 0.785 |
|
|
48
|
-
| 24mp-mixed-16-per-kind | 26.267 | 23.470 | 0.894 | 0.897 |
|
|
49
|
-
| 24mp-staged-portrait-mixed | 44.816 | 42.584 | 0.950 | 0.957 |
|
|
50
|
-
|
|
51
|
-
The 16-defocus request is 20.8–21.5% shorter, mixed sweeps 10.3–10.6% shorter and staged portrait mixed requests 4.3–5.0% shorter in the two ordinary runs. Base and single-sample changes are small and noisy. No universal benefit or portable break-even count is claimed. The 6000×4000 sensor is analytical request context; the POC does not render 24 million samples. It remains a public compatibility/developer consumer, not observed private-product traffic or the production composer.
|
|
52
|
-
|
|
53
|
-
Preparation creates a frozen three-scalar object only for a nonempty defocus sweep, borrowing the validated projection from the same request. The separate isolated probe median was 19.851 ns, with the existing escape/JIT caveat. No-sweep requests allocate no context; no context is retained across calls, exposed publicly or stored in the result. Net post-GC retained heap is not an object-size/allocation measurement.
|
|
54
|
-
|
|
55
|
-
Separate sampled allocations for 2,000 staged requests were 605,749,360 bytes reference and 564,364,680 final main (about 7% lower); thin-lens-inclusive estimates were 175,036,920 versus 138,980,832 (about 21% lower). Whole-request distributions and the unchanged 64-case independent complete-response SHA corpus support keeping #175. Alternating focal/focus inputs, invalid input and stale-context rejection remain required. No additional FOV/motion/sampling context, cross-request cache or public projection API is justified.
|
|
56
|
-
|
|
57
|
-
## Current V1 executed environment-to-RAW consumer
|
|
58
|
-
|
|
59
|
-
The new repository-only `scripts/benchmark-v1-environment.mjs` reuses the owned sensor/environment fixtures and canonical TypeScript build in a disposable directory. Setup/compilation is outside timed calls. It executes the current full environment capture adapter: rolling local windows, rotated environment queries, spatial/spectral/temporal integration, optional sampled PSF, EQE, dark charge, capacity, seeded noise and ADC. Every scenario checks executed provider count and deterministic whole-result SHA replay before timing. Two warmups and five rotating one-call blocks are recorded.
|
|
60
|
-
|
|
61
|
-
Four native sites are intentionally held constant while actual work increases from 128 to 36,864 provider evaluations. This is representative of bounded dense quadrature workloads in the supported executor, not full-native throughput, observed traffic or a performance conclusion based on the tiny canonical #130 raster. No 24/45/60 MP or complete physical renderer performance is claimed. The declared synthetic radiance callback is cheap; external provider transport/visibility cost is absent.
|
|
62
|
-
|
|
63
|
-
| Temporal samples / aperture grid / PSF | Provider evaluations/call | Ordinary median ms | Separate GC-assisted median ms |
|
|
64
|
-
| --- | ---: | ---: | ---: |
|
|
65
|
-
| 4 / 2×2 / not applied | 128 | 7.987 | 8.795 |
|
|
66
|
-
| 16 / 4×4 / not applied | 2,048 | 70.555 | 76.885 |
|
|
67
|
-
| 16 / 2×2 / 9 taps | 4,608 | 183.633 | 195.540 |
|
|
68
|
-
| 32 / 4×4 / 9 taps | 36,864 | 1448.311 | 1478.752 |
|
|
69
|
-
|
|
70
|
-
[Ordinary evidence](benchmarks/2026-10-02-v1-environment-ordinary.json) and [GC/profile evidence](benchmarks/2026-10-02-v1-environment-gc-profile.json) include raw heap/RSS deltas, work counts and result commitments. The separate heaviest-case profile counted thin-lens calculation in 10/1,090 whole-consumer CPU stacks, geometric preparation in zero, and recursive finite validation in 889/1,090. Categories overlap, inlining can hide frames, and zero observed samples do not prove zero work. The adapter calls a private internal executor, so the public photo-signal wrapper need not appear in stacks.
|
|
71
|
-
|
|
72
|
-
The independent allocation pass estimated 6,458,745,904 bytes cumulatively for one dense capture, not 6.46 GB retained live memory. Net RSS/heap deltas do not measure peak memory; no peak claim is made. Detailed diagnostic/provenance materialization and fail-closed validation have real cost. This descriptive baseline has no before/after candidate and cannot establish an optimization benefit. It supports an explicit no-further-change decision within #43/#45: no evidence shows their duplicate projection/preparation targets dominate this current consumer, and removing provenance/validation is outside their acceptance. A future narrowly evidenced diagnostic/budget optimization would need its own scope and equivalence. No new V1 deferral or feature is invented.
|
|
73
|
-
|
|
74
|
-
## Browser boundary, acceptance and reproduction
|
|
75
|
-
|
|
76
|
-
No browser-motivated public API or browser timing claim is proposed. Current root APIs stay browser-safe; existing browser-surface/package checks remain required. Node/macOS measurements do not establish browser, worker, WebGPU or end-user frame-time behavior. This finite disposition covers the merged Node-measured internal optimizations and current supported public consumer shapes. Browser-motivated future work requires real browser evidence.
|
|
77
|
-
|
|
78
|
-
The paired POC script additionally compares every complete response in the existing 64-case corpus directly against the independent pre-optimization reference on this runtime and records their hashes. All 64 agree exactly, including the case whose Linux-authored golden SHA differs on this Mac. No golden is regenerated or tolerance relaxed. Local supported-Node check/coverage pass 1,581 tests with that previously reproduced unchanged-main Mac `equivalence-38` golden-hash difference; static/policy, build and package gates pass. Required Linux CI remains the unchanged release gate. Existing analytical/fuzz/copy-safety/provenance gates remain the correctness oracle. All runtime sources, API/schema versions, asset commitments, scalar errors, reference hashes, inverse limits and coverage thresholds are unchanged. #131 still owns final scientific conformance and #180 final documentation/release audit. PR #205 reviewed/merged this evidence and closed #43/#45; PR #206 closed final conformance.
|
|
79
|
-
|
|
80
|
-
Build current main and the independent reference with `npm ci` and `npm run build`, using a supported Node runtime. Run sequentially without concurrent task tests. Replace the reference path below; repeat ordinary runs independently. Add `--expose-gc` before the script plus `--allocation=sample` (POC) or `--profile=sample` (geometry/environment) for a separate profile run.
|
|
81
|
-
|
|
82
|
-
```sh
|
|
83
|
-
node scripts/benchmark-poc-projection-reuse.mjs --reference-root=/path/to/reference --reference-commit=c1374c31473f893310d1ce4f0d5a737aaba43ab5 --candidate-commit=edc20e61538152fa758f3cce4b41cc34d1e8ba03
|
|
84
|
-
node scripts/benchmark-geometric-consumers.mjs --reference-root=/path/to/reference --reference-commit=c1374c31473f893310d1ce4f0d5a737aaba43ab5 --candidate-commit=edc20e61538152fa758f3cce4b41cc34d1e8ba03
|
|
85
|
-
node scripts/benchmark-v1-environment.mjs --commit=edc20e61538152fa758f3cce4b41cc34d1e8ba03
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
No raw inspector profiles/private paths are committed. Performance is informational, with no new dependency or third-party code/data. Human review and contribution-specific DCO certification are required for inclusion.
|