@neilberkman/sidereon 0.30.0 → 0.31.2

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 CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.31.2 - 2026-07-16
4
+
5
+ - Returns canonical contributors and ordered precedence contributors alongside
6
+ the merged-SP3 stable ID.
7
+ - Rejects artifact byte lengths that are not positive exact JavaScript safe
8
+ integers and enforces whole-second target epoch intervals.
9
+ - Adds the shared literal provenance fixture and builds against `sidereon` and
10
+ `sidereon-core` 0.31.2.
11
+
12
+ ## 0.31.0 - 2026-07-16
13
+
14
+ - Adds `sp3MergeInputIdentity`, which validates complete exact SP3 artifact
15
+ records plus the full merge policy and returns the shared versioned stable
16
+ identity. Incomplete, malformed, mismatched, duplicate, non-SP3, and unknown
17
+ fields fail closed.
18
+ - Builds against `sidereon` and `sidereon-core` 0.31.0.
19
+
3
20
  ## 0.30.0 - 2026-07-16
4
21
 
5
22
  - Exposes analysis center, parsed format version, and the canonical all-field
package/README.md CHANGED
@@ -112,12 +112,23 @@ import {
112
112
  distributionLocation,
113
113
  GnssExactProductSet,
114
114
  productIdentity,
115
+ sp3MergeInputIdentity,
115
116
  } from "@neilberkman/sidereon";
116
117
 
117
118
  const identity = productIdentity("cod", "sp3", 2026, 7, 12);
118
119
  console.log(identity.officialFilename);
119
120
  // COD0MGXFIN_20261930000_01D_05M_ORB.SP3
120
121
 
122
+ // Once every input has been acquired and validated, bind its complete exact
123
+ // artifact record and the full merge policy to one canonical stable ID.
124
+ const mergeInput = sp3MergeInputIdentity([artifactRecord], {
125
+ combine: "mean",
126
+ systems: ["G", "E"],
127
+ });
128
+ console.log(mergeInput.schemaVersion, mergeInput.stableId);
129
+ console.log(mergeInput.contributors); // distributor-independent canonical order
130
+ // precedenceContributors is defined only when combine is "precedence".
131
+
121
132
  const cddis = distributionLocation(
122
133
  "cod",
123
134
  "sp3",
@@ -137,6 +148,17 @@ exactSet.addAvailable(identity); // add only after content validation
137
148
  exactSet.validate();
138
149
  ```
139
150
 
151
+ `artifactRecord` contains the requested and parsed/resolved product identities,
152
+ explicit distributor, official filename, decompressed and archive SHA-256/length
153
+ pairs, and archive compression. Contributor enumeration does not affect mean or
154
+ median IDs. Precedence IDs bind the original order because it determines source
155
+ priority. Object-property ordering does not affect any ID; changing an artifact
156
+ or effective merge control does. Incomplete, mismatched, duplicate, non-SP3,
157
+ and unknown fields are rejected. Byte lengths must be positive integers no
158
+ greater than `Number.MAX_SAFE_INTEGER`. Retrieval timestamps, URLs, HTTP metadata,
159
+ credentials, cache paths, and retry history are intentionally not accepted as
160
+ canonical inputs.
161
+
140
162
  `productIdentity` returns publisher, solution class, campaign, date, issue,
141
163
  coverage span, cadence, official filename, format, and a validated cache key.
142
164
  `distributionLocation` accepts `direct`, `nasa_cddis`, `local_file`, or
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neilberkman/sidereon",
3
- "version": "0.30.0",
3
+ "version": "0.31.2",
4
4
  "description": "WebAssembly / JavaScript interface over the sidereon GNSS + astrodynamics engine: SP3 loading and multi-product merge, SPP / RTK (float + fixed) / PPP (float + fixed) positioning, IONEX slant delay, SGP4 and numerical orbit propagation, RINEX observation/navigation/clock parsing, CRINEX (Hatanaka) decoding, observable-domain math (carrier combinations, cycle slips, Hatch smoothing, weighting, velocity, GPS C/A signal), and the astro domain (scale-tagged time, frame transforms, Sun/Moon ephemerides, eclipse / body angles, DOP, passes / visibility, conjunction + collision probability, CDM / OMM / ANTEX parsing, RF link budget)",
5
5
  "type": "module",
6
6
  "license": "MIT",