@photivra/engine 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (195) hide show
  1. package/AGENTS.md +3 -3
  2. package/CHANGELOG.md +5 -0
  3. package/CITATION.cff +1 -1
  4. package/CONTRIBUTING.md +3 -3
  5. package/NODE_SUPPORT.md +9 -9
  6. package/README.md +7 -7
  7. package/SECURITY.md +1 -1
  8. package/dist/core/version.d.ts +6 -11
  9. package/dist/core/version.d.ts.map +1 -1
  10. package/dist/core/version.js +6 -11
  11. package/dist/core/version.js.map +1 -1
  12. package/docs/API_REFERENCE.md +1 -1
  13. package/docs/API_STYLE.md +11 -7
  14. package/docs/ARCHITECTURE.md +1 -1
  15. package/docs/AUTOMATION_COORDINATION.md +1 -1
  16. package/docs/CAPTURE_COLOR.md +1 -1
  17. package/docs/CAPTURE_CORRECTED_SDR.md +1 -1
  18. package/docs/CAPTURE_EXPORT_METADATA.md +1 -1
  19. package/docs/CAPTURE_SDR.md +1 -1
  20. package/docs/DEVELOPERS.md +6 -6
  21. package/docs/DIGITAL_OPTICS_FOUNDATION.md +1 -1
  22. package/docs/ENVIRONMENT_RAW_CAPTURE.md +1 -1
  23. package/docs/EXPORT_ACCEPTANCE.md +1 -1
  24. package/docs/GENERIC_TIER_PRESETS.md +2 -2
  25. package/docs/GEOMETRIC_PREPARATION_REUSE.md +1 -1
  26. package/docs/IMAGE_FORMATION.md +1 -1
  27. package/docs/LINEAR_CAPTURE_ENCODING.md +1 -1
  28. package/docs/MOTION_AND_SIGNAL.md +1 -1
  29. package/docs/NUMERICAL_CORRECTNESS.md +1 -1
  30. package/docs/PERFORMANCE_BASELINE.md +1 -1
  31. package/docs/PHOTOGRAPHIC_EXPORT.md +1 -1
  32. package/docs/PHYSICS_FOUNDATION.md +1 -1
  33. package/docs/POC_API.md +1 -1
  34. package/docs/POC_PROJECTION_REUSE.md +1 -1
  35. package/docs/PROCESSED_OUTPUT.md +1 -1
  36. package/docs/PRODUCTION_COMPOSITION.md +1 -1
  37. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +3 -3
  38. package/docs/PROVENANCE.md +1 -1
  39. package/docs/PSF_FOUNDATION.md +1 -1
  40. package/docs/RAW_FRAME_ENVELOPE.md +1 -1
  41. package/docs/RAW_FRAME_RECONSTRUCTION.md +2 -2
  42. package/docs/RELEASE_1_0.md +1 -0
  43. package/docs/RELEASE_1_0_1.md +61 -0
  44. package/docs/RELEASE_AUDIT.md +1 -0
  45. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +1 -1
  46. package/docs/SCENE_SENSOR_QUADRATURE.md +1 -1
  47. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +1 -1
  48. package/docs/SCIENTIFIC_ASSURANCE.md +1 -1
  49. package/docs/SCIENTIFIC_CONFORMANCE.md +1 -1
  50. package/docs/SDR_RENDERING.md +2 -2
  51. package/docs/SENSOR_ENVIRONMENT_QUERY.md +1 -1
  52. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +1 -1
  53. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +1 -1
  54. package/docs/SENSOR_PSF_QUADRATURE.md +1 -1
  55. package/docs/SENSOR_RAW_FRAME.md +2 -2
  56. package/docs/SENSOR_RAW_PRODUCER.md +1 -1
  57. package/docs/SIGNAL_CONFORMANCE.md +1 -1
  58. package/docs/SIMULATED_CAPTURE.md +1 -1
  59. package/docs/STABILIZATION.md +1 -1
  60. package/docs/TEMPORAL_PHOTO_RAW.md +1 -1
  61. package/docs/TIER_ACCEPTANCE.md +1 -1
  62. package/docs/TIER_PRESET_ACCEPTANCE.md +2 -2
  63. package/docs/USAGE.md +1 -1
  64. package/docs/V1_COMPOSITION_MAP.md +2 -2
  65. package/docs/V1_HELPER_REUSE_REVIEW.md +1 -1
  66. package/docs/V1_PERFORMANCE_DISPOSITION.md +1 -1
  67. package/docs/api/camera-equivalent-focal-length.md +1 -1
  68. package/docs/api/camera-field-of-view.md +1 -1
  69. package/docs/api/camera-projected-object-size.md +1 -1
  70. package/docs/api/capture-capture-export-metadata.md +1 -1
  71. package/docs/api/capture-environment-raw-producer.md +1 -1
  72. package/docs/api/capture-focus-control.md +1 -1
  73. package/docs/api/capture-linear-encoding.md +1 -1
  74. package/docs/api/capture-photographic-export.md +1 -1
  75. package/docs/api/capture-raw-frame-reconstruction.md +1 -1
  76. package/docs/api/capture-release-sequence.md +1 -1
  77. package/docs/api/capture-sensor-raw-frame.md +1 -1
  78. package/docs/api/capture-sensor-raw-producer.md +1 -1
  79. package/docs/api/capture-simulated-capture.md +1 -1
  80. package/docs/api/color-capture-color.md +1 -1
  81. package/docs/api/color-white-balance.md +1 -1
  82. package/docs/api/composition-image-formation-plan.md +1 -1
  83. package/docs/api/composition-plan-consumer.md +1 -1
  84. package/docs/api/core-calculation-result.md +1 -1
  85. package/docs/api/core-configuration-error.md +1 -1
  86. package/docs/api/core-image-formation.md +1 -1
  87. package/docs/api/core-scientific-assurance.md +1 -1
  88. package/docs/api/core-spectral-composition.md +1 -1
  89. package/docs/api/core-spectral.md +1 -1
  90. package/docs/api/core-validation.md +1 -1
  91. package/docs/api/core-version.md +6 -6
  92. package/docs/api/equipment-exposure-capabilities.md +1 -1
  93. package/docs/api/equipment-generic-tier-assets.md +1 -1
  94. package/docs/api/equipment-generic-tier-presets.md +1 -1
  95. package/docs/api/equipment-iso-capabilities.md +1 -1
  96. package/docs/api/equipment-metering-capabilities.md +1 -1
  97. package/docs/api/equipment-release-capabilities.md +1 -1
  98. package/docs/api/exports.json +2 -2
  99. package/docs/api/exposure-exposure-duration-control.md +1 -1
  100. package/docs/api/exposure-exposure-mode-resolver.md +1 -1
  101. package/docs/api/exposure-exposure.md +1 -1
  102. package/docs/api/exposure-flash.md +1 -1
  103. package/docs/api/exposure-metering-scene-radiance.md +1 -1
  104. package/docs/api/exposure-metering-target.md +1 -1
  105. package/docs/api/exposure-metering-temporal.md +1 -1
  106. package/docs/api/exposure-metering.md +1 -1
  107. package/docs/api/exposure-program-line.md +1 -1
  108. package/docs/api/motion-camera-rotation.md +1 -1
  109. package/docs/api/motion-capture-rotation-inverse-mapping.md +1 -1
  110. package/docs/api/motion-capture-rotation-temporal-quadrature.md +1 -1
  111. package/docs/api/motion-capture-rotation-trajectory.md +1 -1
  112. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +1 -1
  113. package/docs/api/motion-extended-object-projection.md +1 -1
  114. package/docs/api/motion-projected-motion.md +1 -1
  115. package/docs/api/optics-aperture.md +1 -1
  116. package/docs/api/optics-circle-of-confusion.md +1 -1
  117. package/docs/api/optics-complex-pupil-psf.md +1 -1
  118. package/docs/api/optics-depth-of-field.md +1 -1
  119. package/docs/api/optics-diffraction.md +1 -1
  120. package/docs/api/optics-focus-breathing.md +1 -1
  121. package/docs/api/optics-focus-state.md +1 -1
  122. package/docs/api/optics-front-of-lens-filter.md +1 -1
  123. package/docs/api/optics-illumination-vignetting.md +1 -1
  124. package/docs/api/optics-lateral-chromatic-aberration.md +1 -1
  125. package/docs/api/optics-lens-psf-profile.md +1 -1
  126. package/docs/api/optics-polygon-diffraction.md +1 -1
  127. package/docs/api/optics-profile-contract.md +1 -1
  128. package/docs/api/optics-psf-foundation.md +1 -1
  129. package/docs/api/optics-radial-distortion.md +1 -1
  130. package/docs/api/optics-scene-to-sensor-irradiance.md +1 -1
  131. package/docs/api/optics-scene-to-sensor-quadrature.md +1 -1
  132. package/docs/api/optics-sensor-environment-query.md +1 -1
  133. package/docs/api/optics-sensor-psf-quadrature.md +1 -1
  134. package/docs/api/optics-stray-light.md +1 -1
  135. package/docs/api/optics-thin-lens.md +1 -1
  136. package/docs/api/output-capture-corrected-sdr.md +1 -1
  137. package/docs/api/output-capture-geometry.md +1 -1
  138. package/docs/api/output-capture-sdr.md +1 -1
  139. package/docs/api/output-crop.md +1 -1
  140. package/docs/api/output-geometric-transforms.md +1 -1
  141. package/docs/api/output-lens-corrections.md +1 -1
  142. package/docs/api/output-sdr-rendering.md +1 -1
  143. package/docs/api/output-subject-framing-crop.md +1 -1
  144. package/docs/api/schema-camera.md +1 -1
  145. package/docs/api/schema-illumination-spectral.md +1 -1
  146. package/docs/api/schema-illumination-temporal.md +1 -1
  147. package/docs/api/schema-illumination.md +1 -1
  148. package/docs/api/schema-scene-radiance-temporal.md +1 -1
  149. package/docs/api/schema-scene-radiance.md +1 -1
  150. package/docs/api/schema-scene.md +1 -1
  151. package/docs/api/schema-validation.md +1 -1
  152. package/docs/api/sensor-accumulated-charge.md +1 -1
  153. package/docs/api/sensor-architecture.md +1 -1
  154. package/docs/api/sensor-camera-saturation-capacity.md +1 -1
  155. package/docs/api/sensor-capture-color-sampling-binding.md +1 -1
  156. package/docs/api/sensor-capture-mode-timing.md +1 -1
  157. package/docs/api/sensor-capture-mode.md +1 -1
  158. package/docs/api/sensor-color-sampling.md +1 -1
  159. package/docs/api/sensor-constant-rate-temporal-integration.md +1 -1
  160. package/docs/api/sensor-dark-current.md +1 -1
  161. package/docs/api/sensor-environment-photo-signal.md +1 -1
  162. package/docs/api/sensor-eqe-electron-rate.md +1 -1
  163. package/docs/api/sensor-eqe-local-exposure.md +1 -1
  164. package/docs/api/sensor-eqe-temporal-exposure.md +1 -1
  165. package/docs/api/sensor-exposure-window.md +1 -1
  166. package/docs/api/sensor-iso-signal-chain.md +1 -1
  167. package/docs/api/sensor-local-exposure-binding.md +1 -1
  168. package/docs/api/sensor-optical-stack.md +1 -1
  169. package/docs/api/sensor-photon-energy.md +1 -1
  170. package/docs/api/sensor-physical-charge-capacity.md +1 -1
  171. package/docs/api/sensor-pixel-pitch.md +1 -1
  172. package/docs/api/sensor-radiometry-readiness.md +1 -1
  173. package/docs/api/sensor-raw-readout.md +1 -1
  174. package/docs/api/sensor-raw-reconstruction.md +1 -1
  175. package/docs/api/sensor-readout-exposure-linkage.md +1 -1
  176. package/docs/api/sensor-readout-timing.md +1 -1
  177. package/docs/api/sensor-response-application-compatibility.md +1 -1
  178. package/docs/api/sensor-response-operating-range.md +1 -1
  179. package/docs/api/sensor-responsivity-photocurrent.md +1 -1
  180. package/docs/api/sensor-sampling-aperture.md +1 -1
  181. package/docs/api/sensor-scene-eqe-temporal-exposure.md +1 -1
  182. package/docs/api/sensor-sensor-geometry.md +1 -1
  183. package/docs/api/sensor-signal-noise.md +1 -1
  184. package/docs/api/sensor-spatial-sample-reduction.md +1 -1
  185. package/docs/api/sensor-spatial-sampling-quadrature.md +1 -1
  186. package/docs/api/sensor-spatio-spectral-reduction.md +1 -1
  187. package/docs/api/sensor-spectral-coverage.md +1 -1
  188. package/docs/api/sensor-spectral-quadrature.md +1 -1
  189. package/docs/api/sensor-spectral-response.md +1 -1
  190. package/docs/api/sensor-temporal-photo-signal.md +1 -1
  191. package/docs/api/simulation-poc-simulation.md +1 -1
  192. package/docs/api/stabilization-camera-shake.md +1 -1
  193. package/docs/api/stabilization-system.md +1 -1
  194. package/docs/examples/quick-start.mjs +1 -1
  195. package/package.json +1 -1
package/AGENTS.md CHANGED
@@ -44,7 +44,7 @@ Treat this repository as a complete, standalone open-source scientific/business-
44
44
 
45
45
  - Scientific equations and behavior are defined by implementation plus tests; documentation must agree with them.
46
46
  - Public API shape and semantics are defined by exported TypeScript contracts, tests, and `docs/API_STYLE.md`.
47
- - Root engine compatibility is versioned by `ENGINE_API_VERSION`; the composed `simulatePocCamera()` request/response contract is separately versioned by `POC_SIMULATION_API_VERSION`. Never conflate either with the npm package version.
47
+ - Root engine compatibility is versioned by `ENGINE_API_VERSION`; the composed `simulatePocCamera()` request/response contract is separately versioned by `POC_SIMULATION_API_VERSION`. From 1.0.1, ENGINE_API_VERSION must equal the npm package version; the POC contract stays independent.
48
48
  - If documentation, tests, and implementation disagree, do not guess. Determine the intended contract, fix the stale source, and add a regression test when behavior is involved.
49
49
  - UI or downstream clients are never authoritative sources for camera science.
50
50
 
@@ -418,7 +418,7 @@ Backward compatibility matters.
418
418
  - Prefer typed/config-object inputs for multi-parameter functions.
419
419
  - Follow the conventions in `docs/API_STYLE.md`.
420
420
  - Keep result/provenance structures consistent across modules.
421
- - Keep `ENGINE_API_VERSION`, `POC_SIMULATION_API_VERSION`, package version, and any schema version semantically distinct.
421
+ - Keep `ENGINE_API_VERSION` aligned with the package version; keep `POC_SIMULATION_API_VERSION` and schema/model versions independent.
422
422
  - Runtime parsers must fail closed on unknown enum/string values; TypeScript unions are not validation.
423
423
  - Do not silently reinterpret an existing field or unit.
424
424
  - If behavior must change, add regression tests and document compatibility impact.
@@ -576,7 +576,7 @@ Any further foundation composition still requires an explicit `POC_SIMULATION_AP
576
576
  - Preserve full destination-to-source Jacobians, compatible-domain groups, resampler identity, prefilter requirements and valid-source masks/joint crops. Invalid support remains unavailable.
577
577
  - Corrections warp already-sampled blur/noise; gain changes downstream signal/variance without rewriting photons. RAW metadata intent, camera mandatory settings and educational reference bypass are separate states.
578
578
  - The bounded RGB executor accepts reconstructed-linear geometry/CA followed by gain only. Reject incompatible-domain or geometry-across-gain execution rather than reorder it. Production #111/#112 require their own explicit composition.
579
- - Reconcile root API versions against other pending API branches before merge; schemas and package/POC versions remain independent.
579
+ - Reconcile root API versions against other pending API branches before merge; the root API and package versions stay aligned while schemas and POC versions remain independent.
580
580
  ### Authoritative linear capture container
581
581
 
582
582
  - #15A `SimulatedCapture` is a standalone immutable data commitment, not a radiance generator, virtual-camera color transform, quantizer, file serializer or production-stage activation.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.1 candidate — publication pending
4
+
5
+ - Expand Node support to maintained 22/24 LTS plus 26 Current, with patched-major CI and the existing 22.13 minimum job, reviewed lifecycle windows and updated tooling guidance. Keep Node 24 build/typings baseline.
6
+ - Align the npm package and `ENGINE_API_VERSION` at 1.0.1 and enforce equality in source metadata, generated references and isolated packed consumers. Schema/model/POC/plan versions and scientific calculations are unchanged. New capture/plan creator identities and hashes can differ; archived records and acceptance artifacts retain their original versions. See `docs/RELEASE_1_0_1.md`.
7
+
3
8
  ## 1.0.0 candidate — publication pending owner tag
4
9
 
5
10
  - Prepare the stable public distribution after all 32 V1 feature/science items and defect #178 are reviewed and merged. Package/lock/citation become 1.0.0; root contract 0.116.0 and every independent model/schema/POC/plan identity remain unchanged. No scientific arithmetic, seed, fixture hash, exported signature or accepted execution envelope changes.
package/CITATION.cff CHANGED
@@ -9,7 +9,7 @@ abstract: "An open TypeScript engine for the science and mathematics of photogra
9
9
  repository-code: "https://github.com/photivra/photivra"
10
10
  url: "https://photivra.com"
11
11
  license: "Apache-2.0"
12
- version: "1.0.0"
12
+ version: "1.0.1"
13
13
  keywords:
14
14
  - photography
15
15
  - camera optics
package/CONTRIBUTING.md CHANGED
@@ -4,7 +4,7 @@ Contributions are welcome when they preserve scientific integrity, source proven
4
4
 
5
5
  ## Development setup
6
6
 
7
- Node.js 22.13 or newer is required for the repository's development/tooling workflow. The reproducible npm path is:
7
+ Use a supported Node.js release: maintained 22 (minimum 22.13), maintained 24, or 26 Current. Prefer patched Node 24 for development/build tooling. The reproducible npm path is:
8
8
 
9
9
  ```sh
10
10
  npm ci
@@ -14,7 +14,7 @@ npm run build
14
14
  npm run pack:check
15
15
  ```
16
16
 
17
- CI verifies maintained Node.js 22 (including minimum 22.13) and 24; prefer patched Node 24 under [the runtime policy](NODE_SUPPORT.md). For release preparation also run `npm run docs:check` and `npm run release:consumer-check` after build. The generated API reference must match root exports; regenerate with `node scripts/generate-api-reference.mjs` when public contracts change.
17
+ CI verifies maintained Node.js 22 (including minimum 22.13), 24, and Node.js 26 Current; prefer patched Node 24 under [the runtime policy](NODE_SUPPORT.md). See [1.0.1 migration and release preparation](docs/RELEASE_1_0_1.md). For release preparation also run `npm run docs:check` and `npm run release:consumer-check` after build. The generated API reference must match root exports; regenerate with `node scripts/generate-api-reference.mjs` when public contracts change.
18
18
 
19
19
  ## Before submitting
20
20
 
@@ -24,7 +24,7 @@ CI verifies maintained Node.js 22 (including minimum 22.13) and 24; prefer patch
24
24
  - Add meaningful analytical/regression tests.
25
25
  - Update concise documentation when behavior, assumptions, limitations, schemas, version surfaces, or public APIs change.
26
26
  - Preserve the browser-safe published-package boundary; Node-only transport code is repository-only contributor tooling and must not become a public package export.
27
- - Keep npm/package version, `ENGINE_API_VERSION`, `POC_SIMULATION_API_VERSION`, and schema-specific versions distinct.
27
+ - Keep npm/package version and `ENGINE_API_VERSION` equal; keep `POC_SIMULATION_API_VERSION` and schema/model versions independent.
28
28
  - For sensor/capture work, preserve native coordinate conventions, active-capture vs output-crop separation, optical-axis offsets, and independent X/Y sampling.
29
29
  - For provenance/calibration work, keep evidence origin separate from reuse rights and never treat geometric sample pitch as photon-collection area.
30
30
  - Do not submit copied or adapted third-party code/data unless its license and provenance are explicitly compatible and recorded.
package/NODE_SUPPORT.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  Adopted: 2026-09-26. Applies to every Node.js repository in the Photivra organization, including contributor tooling, CI, build/deployment tooling, and supported Node.js execution environments. It does not change browser support or the browser-safe engine boundary.
4
4
 
5
- ## Maintained LTS only
5
+ ## Maintained LTS plus Current
6
6
 
7
- "Actively maintained LTS" means an official Node.js release line in either **Active LTS** or **Maintenance LTS**, before its upstream end-of-life date. Current, prerelease/nightly, end-of-life, and commercial extended-support-only releases are not supported.
7
+ "Actively maintained LTS" means an official Node.js release line in either **Active LTS** or **Maintenance LTS**, before its upstream end-of-life date. Starting with the 1.0.1 candidate, this repository supports all upstream-supported Active/Maintenance LTS lines plus the official Current release line. Prerelease/nightly, end-of-life, and commercial extended-support-only releases are not supported.
8
8
 
9
9
  Use the official lifecycle, not "latest", a version-number parity rule, or an open-ended minimum version as evidence of support:
10
10
 
@@ -12,26 +12,26 @@ Use the official lifecycle, not "latest", a version-number parity rule, or an op
12
12
  - https://github.com/nodejs/Release
13
13
  - https://github.com/nodejs/Release/blob/main/schedule.json
14
14
 
15
- As reverified against the official schedule on 2026-10-02 (original policy review 2026-09-26), Node 24 is Active LTS and Node 22 is Maintenance LTS. Node 26 is Current and is not eligible yet. Future dates must be reverified; entering LTS makes a line eligible for review, not automatically supported by every repository.
15
+ As reverified against the official schedule on 2026-10-02 (original policy review 2026-09-26), Node 24 is Active LTS and Node 22 is Maintenance LTS. Node 26 is Current and is included in the support set. This is a dated snapshot: future lines must be reviewed and tested as the official lifecycle changes. Node 26 remains supported when it enters LTS, with its runtime LTS marker required from that date.
16
16
 
17
17
  ## Repository baselines
18
18
 
19
- An eligible upstream line is not an untested repository compatibility claim. Each repository must explicitly record and test its supported subset. Prefer the newest qualified Active LTS line for normal development and builds; retain a qualified Maintenance LTS line where compatibility is already supported.
19
+ An eligible upstream line is not an untested repository compatibility claim. This repository must explicitly record and test every line covered by the maintained-LTS-plus-Current policy. Prefer the newest qualified Active LTS line for normal development and builds; retain a qualified Maintenance LTS line where compatibility is already supported.
20
20
 
21
- This repository preserves its existing Node 22 and Node 24 CI coverage, including the Node 22.13.0 minimum-version regression job. The normal tooling baseline and pinned `@types/node` major remain **24**. Use current patched releases for ordinary development/deployment; a historical minimum-version regression job is not a deployment recommendation.
21
+ This repository tests Node 22, 24 and 26, including current patched releases of each line and the Node 22.13.0 minimum-version regression job. The normal tooling baseline and pinned `@types/node` major remain **24**. Use current patched releases for ordinary development/deployment; a historical minimum-version regression job is not a deployment recommendation.
22
22
 
23
- Node 22-compatible code must not assume Node 24-only APIs merely because contributor tooling uses Node 24 typings. Keep the Node 22 runtime tests and the public browser-safe package boundary. A broad existing `engines.node` range is a compatibility hint, not permission to claim support for Current or EOL lines. Any manifest-range change must update its lockfile and follow package compatibility/release review; this policy does not rewrite already-published packages.
23
+ Node 22-compatible code must not assume Node 24-only APIs merely because contributor tooling uses Node 24 typings. Keep the Node 22 runtime tests and the public browser-safe package boundary. A broad existing `engines.node` range is a compatibility hint, not evidence of support for untested or EOL lines. Any manifest-range change must update its lockfile and follow package compatibility/release review; this policy does not rewrite already-published packages.
24
24
 
25
25
  ## CI and dependency enforcement
26
26
 
27
- `.github/node-lts-policy.mjs` checks the actual Node build's LTS marker, this repository's approved major set, a reviewed upstream LTS date window, and the approved pinned typings major before dependency installation. `.github/test-node-lts-policy.mjs` covers acceptance and rejection boundaries. Both run in existing CI jobs; no additional CI matrix or service is introduced.
27
+ `.github/node-lts-policy.mjs` checks the actual Node build's LTS marker, this repository's approved major set, reviewed upstream LTS and Current date windows, and the approved pinned typings major before dependency installation. `.github/test-node-lts-policy.mjs` covers acceptance and rejection boundaries. Both run before dependency installation in every verification matrix job.
28
28
 
29
- The lifecycle snapshot is intentionally local and reviewed, not fetched from the network during ordinary CI. It uses UTC dates and fails closed on the recorded end-of-life date. Reverify the official schedule before changing the snapshot, before a baseline/release decision, and during regular dependency maintenance. Do not extend an expired window or add a Current line merely to pass CI.
29
+ The lifecycle snapshot is intentionally local and reviewed, not fetched from the network during ordinary CI. It uses UTC dates and fails closed on the recorded end-of-life date. Reverify the official schedule before changing the snapshot, before a baseline/release decision, and during regular dependency maintenance. Do not extend an expired window or admit an unreviewed line merely to pass CI. The Current window ends when the line enters LTS; the runtime must then carry an LTS marker. A new Current line requires a coordinated snapshot and matrix review.
30
30
 
31
31
  Routine minor/patch updates within an approved major may follow normal green-PR rules. Do not auto-merge a Node runtime, Node image, or `@types/node` major upgrade independently. Where Dependabot is configured, keep Node typings major upgrades out of its routine update queue while allowing supported-major updates.
32
32
 
33
33
  ## Lifecycle changes
34
34
 
35
- Add a newly eligible LTS line through one coordinated review of the support policy/guard, CI, local version files, build environments, typings, manifest/lockfile compatibility, and tests. Update only files that exist and are relevant; do not introduce a new runtime or infrastructure merely for uniformity. Remove a line from the support set and CI before upstream EOL, documenting downstream compatibility implications. Never silently raise a library's minimum runtime or advertise an untested line.
35
+ Add a newly supported LTS or Current line through one coordinated review of the support policy/guard, CI, local version files, build environments, typings, manifest/lockfile compatibility, and tests. Update only files that exist and are relevant; do not introduce a new runtime or infrastructure merely for uniformity. Remove a line from the support set and CI before upstream EOL, documenting downstream compatibility implications. Never silently raise a library's minimum runtime or advertise an untested line.
36
36
 
37
37
  All existing scientific, security, provenance, regression, artifact, and release gates remain in force. This rule does not authorize npm publication, tags, public release, or a default runtime-major upgrade.
package/README.md CHANGED
@@ -17,10 +17,10 @@ The standalone [SDR rendering foundation](https://github.com/Photivra/photivra/b
17
17
 
18
18
  ## Quick start
19
19
 
20
- After owner publication, install the ESM package below. During candidate review, use the verified tarball from the [release guide](https://github.com/Photivra/photivra/blob/main/docs/RELEASE_1_0.md):
20
+ After owner publication, install the ESM package below. During candidate review, use the verified tarball from the [release guide](https://github.com/Photivra/photivra/blob/main/docs/RELEASE_1_0_1.md):
21
21
 
22
22
  ```sh
23
- npm install @photivra/engine@1.0.0
23
+ npm install @photivra/engine@1.0.1
24
24
  ```
25
25
 
26
26
  Calculate horizontal field of view for a 36 mm sensor dimension and 50 mm focal length:
@@ -37,7 +37,7 @@ console.log(horizontal.value.degrees);
37
37
  console.log(horizontal.provenance);
38
38
  ```
39
39
 
40
- Start with the [Developer Guide](https://github.com/Photivra/photivra/blob/main/docs/DEVELOPERS.md), then use the [Usage Guide](https://github.com/Photivra/photivra/blob/main/docs/USAGE.md) and [export-derived API reference](https://github.com/Photivra/photivra/blob/main/docs/API_REFERENCE.md). These documents describe the 1.0.0 candidate; installation by version becomes available only after owner publication.
40
+ Start with the [Developer Guide](https://github.com/Photivra/photivra/blob/main/docs/DEVELOPERS.md), then use the [Usage Guide](https://github.com/Photivra/photivra/blob/main/docs/USAGE.md) and [export-derived API reference](https://github.com/Photivra/photivra/blob/main/docs/API_REFERENCE.md). These documents describe the 1.0.1 candidate. The published 1.0.0 release remains available; installation of 1.0.1 becomes available after owner publication.
41
41
 
42
42
  ## Documentation
43
43
 
@@ -265,13 +265,13 @@ The calling application can then use those results while keeping the underlying
265
265
 
266
266
  ## Status
267
267
 
268
- - Repository package version: `1.0.0` (release candidate; publication is separate)
269
- - Engine API contract: `0.116.0`
268
+ - Repository package version: `1.0.1` (release candidate; publication is separate)
269
+ - Engine API contract: `1.0.1`
270
270
  - Versioned generic tier reference assets: [GENERIC_TIER_PRESETS.md](https://github.com/Photivra/photivra/blob/main/docs/GENERIC_TIER_PRESETS.md).
271
271
  - Composed POC simulation API contract: `0.20.0`
272
272
  - Stability: 1.0 root-package compatibility policy; bounded scientific models and independent POC contract
273
273
 
274
- Package version and engine API version are intentionally separate. The 1.0 distribution retains root contract ID 0.116.0 to preserve serialized identity. Breaking root contracts now require a package major release; additive and corrective changes follow [compatibility and migration](https://github.com/Photivra/photivra/blob/main/docs/RELEASE_1_0.md). A 1.0 package is not a claim of calibrated physical accuracy.
274
+ From 1.0.1, package version and `ENGINE_API_VERSION` are equal. New captures/plans record 1.0.1; existing archives retain their original creator identities. Schema, model and POC contract versions remain independent. Breaking root contracts now require a package major release; additive and corrective changes follow [compatibility and migration](https://github.com/Photivra/photivra/blob/main/docs/RELEASE_1_0_1.md). A 1.0 package is not a claim of calibrated physical accuracy.
275
275
 
276
276
  Creating a GitHub release/tag and publishing `@photivra/engine` are separate release actions. The tag-triggered publish workflow verifies that the `vX.Y.Z` tag matches the package version before publishing.
277
277
 
@@ -343,7 +343,7 @@ When the package is installed directly from a Git repository using normal npm li
343
343
 
344
344
  ## Development
345
345
 
346
- Development and Node-only tooling require Node.js 22.13 or newer. CI verifies Node.js 22.13 and Node.js 24; both are LTS release lines as of this documentation audit.
346
+ Development and Node-only tooling support maintained Node.js 22 (minimum 22.13), maintained 24, and 26 Current. Prefer patched Node 24 for builds. CI verifies Node.js 22.13 (minimum), patched 22 and 24 LTS, and 26 Current under [the runtime policy](NODE_SUPPORT.md).
347
347
 
348
348
  The reproducible npm workflow uses the committed lockfile:
349
349
 
package/SECURITY.md CHANGED
@@ -4,7 +4,7 @@ Please do not open a public issue containing vulnerability details.
4
4
 
5
5
  ## Supported versions
6
6
 
7
- The 1.0.0 candidate establishes the 1.x root-package compatibility line. Security fixes target the current maintained development/release line; older snapshots and pre-1.0 releases should not be assumed to receive fixes. Candidate preparation does not establish npm publication or a new support service.
7
+ The published 1.0.0 release established the 1.x root-package compatibility line. Security fixes target the current maintained development/release line; older snapshots and pre-1.0 releases should not be assumed to receive fixes. The current 1.0.1 candidate is not yet published. Node runtime support follows [NODE_SUPPORT.md](NODE_SUPPORT.md), covering maintained LTS lines plus Current; older/EOL runtimes are not qualified.
8
8
 
9
9
  ## Reporting a vulnerability
10
10
 
@@ -1,14 +1,9 @@
1
1
  /**
2
- * The root contract identity is embedded in capture/plan data. Package 1.0.0 deliberately retains
3
- * 0.116.0 so documentation/release metadata changes do not alter serialized scientific identity.
4
- * Distribution SemVer and independent model/schema versions remain separate.
5
- * @see docs/RELEASE_1_0.md and the corresponding domain guide.
2
+ * Version of the public root-engine release, aligned with the npm package since 1.0.1.
3
+ * New captures and plans record this creator identity; archived records retain theirs.
4
+ * POC, schema and model contracts keep their independent versions.
5
+ * Release checks enforce equality with package.json and the packed distribution.
6
+ * @see docs/RELEASE_1_0_1.md
6
7
  */
7
- /**
8
- * Version of the public root-engine API contract.
9
- *
10
- * This is distinct from the npm package version and all subsystem/schema
11
- * contract versions.
12
- */
13
- export declare const ENGINE_API_VERSION: "0.116.0";
8
+ export declare const ENGINE_API_VERSION: "1.0.1";
14
9
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAG,SAAkB,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAG,OAAgB,CAAC"}
@@ -1,15 +1,10 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  /**
3
- * The root contract identity is embedded in capture/plan data. Package 1.0.0 deliberately retains
4
- * 0.116.0 so documentation/release metadata changes do not alter serialized scientific identity.
5
- * Distribution SemVer and independent model/schema versions remain separate.
6
- * @see docs/RELEASE_1_0.md and the corresponding domain guide.
3
+ * Version of the public root-engine release, aligned with the npm package since 1.0.1.
4
+ * New captures and plans record this creator identity; archived records retain theirs.
5
+ * POC, schema and model contracts keep their independent versions.
6
+ * Release checks enforce equality with package.json and the packed distribution.
7
+ * @see docs/RELEASE_1_0_1.md
7
8
  */
8
- /**
9
- * Version of the public root-engine API contract.
10
- *
11
- * This is distinct from the npm package version and all subsystem/schema
12
- * contract versions.
13
- */
14
- export const ENGINE_API_VERSION = "0.116.0";
9
+ export const ENGINE_API_VERSION = "1.0.1";
15
10
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,SAAkB,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAgB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  # Public API reference
2
2
 
3
- Generated from the exact root exports for **@photivra/engine 1.0.0 / root contract 0.116.0** by `node scripts/generate-api-reference.mjs`. No module deep import is supported.
3
+ Generated from the exact root exports for **@photivra/engine 1.0.1 / root contract 1.0.1** by `node scripts/generate-api-reference.mjs`. No module deep import is supported.
4
4
 
5
5
  Use [the developer guide](DEVELOPERS.md) for executable paths and scientific boundaries. Types are contracts, not runtime validation: parse untrusted data, preserve units/reference frames, read assessment blockers, and retain evidence/limitations. Optional properties do not imply a universal default. Model/schema IDs remain independent of the distribution.
6
6
 
package/docs/API_STYLE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Public API Style
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  The open engine should feel like one coherent library.
6
6
 
@@ -89,14 +89,14 @@ Do **not** automatically sum, average, add in quadrature, or otherwise collapse
89
89
 
90
90
  ## Versioning
91
91
 
92
- Photivra has multiple independent version surfaces:
92
+ From 1.0.1, Photivra aligns its release and root API identities:
93
93
 
94
94
  - npm/package version: distribution/release version;
95
- - `ENGINE_API_VERSION`: root browser-safe engine/public-contract version;
95
+ - `ENGINE_API_VERSION`: the same full version as the npm package;
96
96
  - `POC_SIMULATION_API_VERSION`: composed `simulatePocCamera()` request/response contract;
97
97
  - schema-specific versions such as sensor-architecture or radiometry-readiness schemas.
98
98
 
99
- Do not reuse one version as a proxy for another. A change to a parser/schema does not necessarily require changing the POC contract, and a POC response change does not necessarily mean the npm package has been released.
99
+ The release checker enforces package/root equality. Subsystem, schema and POC versions remain independent. A change to a parser/schema does not necessarily require changing the POC contract, and a POC response change does not necessarily mean the npm package has been released.
100
100
 
101
101
  Before 1.0, public APIs may evolve with documented changes. Breaking or semantically meaningful contract changes must update the relevant version surface, tests, changelog, and migration/compatibility documentation. After 1.0, breaking public-contract changes require an appropriate major-version transition.
102
102
 
@@ -160,7 +160,7 @@ serialization keeps its existing validated JSON.stringify representation.
160
160
 
161
161
  ## Compatibility and deprecation policy
162
162
 
163
- Photivra has independent compatibility surfaces. Update only the surface whose observable contract changed.
163
+ The package and root API share a release version. Update independent schema/model/POC versions only when their observable contracts change.
164
164
 
165
165
  ### Package version
166
166
 
@@ -168,7 +168,7 @@ The npm package version identifies a published distribution. It is not a proxy f
168
168
 
169
169
  ### `ENGINE_API_VERSION`
170
170
 
171
- Bump when the browser-safe root public engine contract changes materially, including a breaking or semantically meaningful exported API change.
171
+ Set to the npm package version for every release, including patches. New records use this creator identity; parsers preserve historical archive identities.
172
172
 
173
173
  ### Subsystem/schema versions
174
174
 
@@ -228,4 +228,8 @@ Audit rule:
228
228
 
229
229
  ## Stable 1.0 distribution transition
230
230
 
231
- Package 1.0.0 intentionally retains `ENGINE_API_VERSION = "0.116.0"`: this independent root contract identity is already embedded in serialized captures and does not itself signal a published distribution. The package 1.0 policy now governs breaking changes despite that historical root ID. No schema/model/POC/plan version is reset. See [migration and release procedure](RELEASE_1_0.md).
231
+ Historically, package 1.0.0 retained `ENGINE_API_VERSION = "0.116.0"`: this independent root contract identity is already embedded in serialized captures and does not itself signal a published distribution. The package 1.0 policy now governs breaking changes despite that historical root ID. No schema/model/POC/plan version is reset. See [migration and release procedure](RELEASE_1_0.md).
232
+
233
+ ## Aligned 1.0.1 release transition
234
+
235
+ Starting with 1.0.1, `ENGINE_API_VERSION` equals the full npm package version. Package and root API follow one SemVer release sequence; schema/model/POC/plan versions remain independent. Archived capture identities and measured artifacts are preserved. Newly created capture/plan bytes and identity hashes can change because their creator API field now records 1.0.1. See [migration and release procedure](RELEASE_1_0_1.md).
@@ -1,6 +1,6 @@
1
1
  # Architecture
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  Photivra separates a reusable scientific core from optional composition and transport layers.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Public-engine automation coordination
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  This document coordinates the two recurring automation lanes that work only in the public
6
6
  `Photivra/photivra` repository. It is process guidance, not a scientific roadmap. Open issues and
@@ -1,6 +1,6 @@
1
1
  # Virtual-camera linear color: #15B
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  `resolveCaptureColorModel()` defines an ideal CIE 1931 2-degree colorimetric camera: co-sited red/green/blue channels are an invertible encoding of XYZ in the linear-sRGB primary basis, with D65 reference white. They are relative linear values, not electrons, spectral response measurements or commercial-camera RGB. Choosing this profile is an upstream producer assertion about sample meaning; naming arbitrary sensor data with its ID does not establish validity.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Capture-bound corrections and SDR: #112 integration slice
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  `calculateCaptureCorrectedSdr()` consumes the same immutable `SimulatedCapture` and explicit source/color/WB choice as `calculateCaptureSdr()`, then executes existing #117/#118 corrections before the existing SDR renderer. This bounded reference bridge does not replace the #111 composer, activate production stages, or complete #112/V1.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Capture export metadata foundation (#16B)
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  `createCaptureExportMetadataPair()` is a browser-safe, deterministic **semantic metadata projection**, not an image exporter or proof of RAW/JPEG pixel derivation. Both future writers consume its single shared object; each resource has a distinct caller-owned document UUID and saved-incarnation UUID. `imageDataPairing = "not-verified"` prevents metadata agreement being mistaken for image agreement.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Capture-to-SDR adapter
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  Current integration: [processed camera output](PROCESSED_OUTPUT.md) documents
6
6
  the shared preview/export path and explicit plan 0.6.0 post-RAW activation.
@@ -1,29 +1,29 @@
1
1
  # Developer guide
2
2
 
3
- This is the entry point for **@photivra/engine 1.0.0 candidate**, root API contract **0.116.0**. The candidate becomes an installable 1.0.0 distribution only after the owner tags and publishes it. Repository `main` may later describe newer development; use a published release's packaged docs or its exact tag for the stable contract. [Release notes and migration](RELEASE_1_0.md) explain the version distinction.
3
+ This is the entry point for **@photivra/engine 1.0.1 candidate**, root API contract **1.0.1**. The candidate becomes an installable 1.0.1 distribution only after the owner tags and publishes it. Repository `main` may later describe newer development; use a published release's packaged docs or its exact tag for the stable contract. [Release notes and migration](RELEASE_1_0_1.md) explain the transition to aligned package/root versions.
4
4
 
5
5
  Photivra is an Apache-2.0 ESM TypeScript calculation library with no runtime npm dependencies. It exposes explicit units, deterministic data, provenance and bounded scientific approximations. The package supplies no hosted API, renderer installation, UI, commercial camera calibration or automatic agent service. [Photivra's public site](https://photivra.com) is separate from the engine's license; public engine documentation is available here without an application account.
6
6
 
7
7
  ## Install and calculate
8
8
 
9
- After publication, install `npm install @photivra/engine@1.0.0`. During candidate review, use the verified tarball described in [release preparation](RELEASE_1_0.md).
9
+ After publication, install `npm install @photivra/engine@1.0.1`. During candidate review, use the verified tarball described in [release preparation](RELEASE_1_0_1.md).
10
10
 
11
11
  ```ts
12
12
  import { calculateFieldOfView, ENGINE_API_VERSION } from "@photivra/engine";
13
13
 
14
14
  const horizontal = calculateFieldOfView({ focalLengthMm: 50, sensorDimensionMm: 36 });
15
- console.log(ENGINE_API_VERSION); // 0.116.0: independent root contract identity
15
+ console.log(ENGINE_API_VERSION); // 1.0.1: matches the package version
16
16
  console.log(horizontal.value.degrees); // approximately 39.60, ideal infinity-focus geometry
17
17
  console.log(horizontal.provenance); // read assumptions/status with the value
18
18
  ```
19
19
 
20
- The root is browser-safe. Supported Node execution/tooling is Node 22.13+ within the maintained 22 line and the maintained 24 line; prefer patched Node 24. The broad manifest minimum does not qualify Node Current/EOL lines. A browser backend must supply the documented ES APIs (including `structuredClone`, typed arrays and Web Crypto where used); a browser-safe import graph is not a promise about every browser version or rendering speed. See [runtime policy](../NODE_SUPPORT.md).
20
+ The root is browser-safe. Supported Node execution/tooling is Node 22.13+ within the maintained 22 line, the maintained 24 line, and Node 26 Current; prefer patched Node 24. The broad manifest minimum does not qualify untested or EOL lines. A browser backend must supply the documented ES APIs (including `structuredClone`, typed arrays and Web Crypto where used); a browser-safe import graph is not a promise about every browser version or rendering speed. See [runtime policy](../NODE_SUPPORT.md).
21
21
 
22
22
  Primitive calculations normally return `CalculationResult<T>` with `value`, `provenance` and optional `quality`. Parsers return validated values; plans/snapshots return their independently versioned records; assessments return explicit blockers; paired export returns a Promise because hashing is asynchronous. Do not infer calibrated accuracy from successful parsing, a complete stage graph, a generic tier name or deterministic replay.
23
23
 
24
24
  ## Find the operation by scientific task
25
25
 
26
- Every row applies to package 1.0.0/root 0.116.0. Direct calculations are synchronous/browser-safe unless the row says otherwise. A listed primitive is not automatically an app feature or supported in every production combination. The [API reference](API_REFERENCE.md) resolves all root exports and exact signatures; the linked guides own equations, inputs, defaults, errors and limits.
26
+ Every row applies to package/root API 1.0.1. Direct calculations are synchronous/browser-safe unless the row says otherwise. A listed primitive is not automatically an app feature or supported in every production combination. The [API reference](API_REFERENCE.md) resolves all root exports and exact signatures; the linked guides own equations, inputs, defaults, errors and limits.
27
27
 
28
28
  | Task | Start here / executable evidence | Qualified boundary |
29
29
  | --- | --- | --- |
@@ -57,4 +57,4 @@ Malformed configurations/non-finite values throw the established domain errors.
57
57
 
58
58
  See [provenance](PROVENANCE.md), [license](../LICENSE), [NOTICE](../NOTICE), [third-party inventory](../THIRD_PARTY.md), [contributing](../CONTRIBUTING.md) and [security reporting](../SECURITY.md). Engine code/docs do not license the commercial application or its private assets. Report reproducible engine defects through [public issues](https://github.com/Photivra/photivra/issues).
59
59
 
60
- Website navigation/documentation hosting belongs to [the app-side discovery ticket #45](https://github.com/Photivra/photivra-apps/issues/45), with navigation #298 and environments #300. Handoff: link the public engine repository, this developer guide, the eventual verified npm 1.0.0 package and capability examples from the public site. No unpublished `/developers` destination is linked here. Website launch is not an engine release prerequisite; access to the site returned HTTP 403 during this audit, so its content/navigation was not verified.
60
+ Website navigation/documentation hosting belongs to [the app-side discovery ticket #45](https://github.com/Photivra/photivra-apps/issues/45), with navigation #298 and environments #300. Handoff: link the public engine repository, this developer guide, the verified npm release package and capability examples from the public site. No unpublished `/developers` destination is linked here. Website launch is not an engine release prerequisite; access to the site returned HTTP 403 during this audit, so its content/navigation was not verified.
@@ -1,6 +1,6 @@
1
1
  # Stray light and digital lens correction foundations
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  Issues #114, #118 and #117 add standalone browser-safe primitives. They do not enable a production-plan stage, change the POC, or supply a calibrated camera/lens preset. The public root API advances from 0.94.0 to 0.95.0; each new profile/prepared-map schema is 0.1.0. Package, POC, production-plan and PSF versions are unchanged. This branch incorporates merged polygon-diffraction PR #157 and reconciles the root API increment with that predecessor.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Executed environment capture to native RAW
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  `calculateEnvironmentSensorPhotoSignal()` executes one destination site's
6
6
  bounded environment exposure. `simulateEnvironmentSensorRawFrame()` applies that
@@ -1,6 +1,6 @@
1
1
  # Simulated Sensor RAW DNG / JPEG acceptance
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  This record separates implemented export behavior, reproducible independent
6
6
  checks and external application acceptance for #16. The files are synthetic
@@ -1,6 +1,6 @@
1
1
  # Generic equipment tier reference assets
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  `resolveGenericEquipmentTierCatalog({ presetVersion: "1.0.0" })` returns immutable
6
6
  Consumer, Prosumer and Professional body/lens reference bundles. These are
@@ -139,7 +139,7 @@ There is no separate tier-specific browser approximation to compare here; the
139
139
  public implementation remains browser-safe and uses the ordinary reference APIs.
140
140
  No private application acceptance is invented.
141
141
 
142
- Initial tier assets landed at root API 0.105.0; the current root API is 0.116.0.
142
+ Initial tier assets landed at root API 0.105.0; the current root API is 1.0.1.
143
143
  This acceptance-only extension does not change runtime/API or asset definitions. Selection schema 0.1.0, asset version 1.0.0, npm package,
144
144
  POC and production contracts remain independent. Human scientific/provenance
145
145
  review and contribution-specific DCO certification are still required.
@@ -1,6 +1,6 @@
1
1
  # Call-local geometry preparation reuse: #43
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  `calculateGeometricSamplingPlan()` already parses and copies a complete transform
6
6
  list at its public boundary. It previously called the public scalar mapping API
@@ -1,6 +1,6 @@
1
1
  # Image-Formation Contract
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  Photivra's image-formation contract defines **scientific ownership, coordinate semantics, and dependency/coupling boundaries** for current and future camera effects.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Deterministic linear capture encoding: #15C
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  `calculateLinearCaptureEncoding()` produces format-neutral unsigned 16-bit linear codes from one bounded inline `SimulatedCapture` plane. The exact plane/image-state identity is mandatory. The master stays unchanged; color, WB application, source reference value and upstream capture-saturation history accompany the encoded data. It neither chooses a file format nor invents a color conversion.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Motion and Signal Foundation
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  ## Projected subject motion
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Numerical Correctness and Physical Units
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  Photivra is a scientific engine. Numerical behavior and physical-unit meaning are public-contract concerns, not implementation details.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Measured-performance baseline: #43 / #45
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  This independent first slice records merged main `83a99a4c1ec525fd1add7cccff134fcee0f5159b`, root API 0.93.0, POC API 0.20.0, in `docs/benchmarks/2026-10-01-main-baseline.json`. No pending capture/output/correction/preset implementation is consumed. It does not close either issue or justify an optimization by itself.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Simulated Sensor RAW DNG / JPEG export
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  Current producer-derived files and external closure gates are recorded in
6
6
  [Export acceptance](EXPORT_ACCEPTANCE.md). The new reproducible generator uses
@@ -1,6 +1,6 @@
1
1
  # Physics Foundation
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  Photivra starts with analytical models that can be independently tested and whose assumptions can be stated explicitly.
6
6
 
package/docs/POC_API.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Local POC Simulation API
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  Photivra includes a minimal Node HTTP transport for proof-of-concept development and integration testing.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Request-local defocus projection reuse: #45
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  The measured candidate reuses the focus-plane image distance already calculated
6
6
  inside `simulatePocCamera()` for its subject and defocus sweep. It is a small
@@ -1,6 +1,6 @@
1
1
  # Processed camera output
2
2
 
3
- Release context: **package 1.0.0 candidate / root API 0.116.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_0.md).
3
+ Release context: **package 1.0.1 candidate / root API 1.0.1**. 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_0_1.md).
4
4
 
5
5
  Root API 0.115.0 completes the bounded SDR post-capture handoff for #112.
6
6
  Production plan 0.6.0 adds explicit committed RAW processing. At introduction, package 0.6.0,