space-data-module-sdk 0.8.16 → 0.8.18
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/bin/space-data-module.js +24 -6
- package/docs/browser-wasmedge-isomorphic.html +1 -1
- package/docs/byo-wasm-quickstart.html +1 -1
- package/docs/conformance.html +10 -4
- package/docs/conformance.md +20 -4
- package/docs/events-abi.html +1 -1
- package/docs/families/analytics.html +1 -1
- package/docs/families/attitude.html +1 -1
- package/docs/families/behavior.html +1 -1
- package/docs/families/breakup.html +1 -1
- package/docs/families/conjunction.html +1 -1
- package/docs/families/data-source.html +7 -2
- package/docs/families/effects.html +1 -1
- package/docs/families/environment.html +1 -1
- package/docs/families/estimation.html +56 -54
- package/docs/families/estimation.md +155 -125
- package/docs/families/gnc.html +1 -1
- package/docs/families/maneuver.html +1 -1
- package/docs/families/obstruction.html +1 -1
- package/docs/families/propagator.html +16 -2
- package/docs/families/propulsion.html +1 -1
- package/docs/families/reentry.html +1 -1
- package/docs/families/rf.html +1 -1
- package/docs/families/scheduler.html +1 -1
- package/docs/families/sensor.html +1 -1
- package/docs/families/signature.html +1 -1
- package/docs/flatsql-host-contract.html +1 -1
- package/docs/flatsql-streaming-standard.html +1 -1
- package/docs/gpu-module-abi.html +1 -1
- package/docs/harness-family-matrix.md +7 -7
- package/docs/index.html +2 -2
- package/docs/isomorphic-pthreads.html +1 -1
- package/docs/isomorphic-sdn-runtime-plan.html +1 -1
- package/docs/language-runtime-matrix.html +1 -1
- package/docs/llms.txt +1 -1
- package/docs/module-bundle-runtime-plan.html +1 -1
- package/docs/module-publication-standard.html +1 -1
- package/docs/node-red-default-node-parity.html +1 -1
- package/docs/propagator-abi.md +52 -0
- package/docs/protect-and-sign.html +1 -1
- package/docs/protocol-installation.html +1 -1
- package/docs/provider-access-abi.md +25 -0
- package/docs/publication-submission.html +1 -1
- package/docs/secrets-capability.html +1 -1
- package/docs/testing-harness.html +1 -1
- package/docs/tri-runtime-parity-gate.html +1 -1
- package/docs/tri-runtime-parity.html +1 -1
- package/include/orbpro/orbpro_estimation_abi.h +883 -0
- package/include/orbpro/orbpro_propagator_abi.h +58 -0
- package/include/orbpro/orbpro_solver_abi.h +183 -0
- package/package.json +4 -2
- package/schemas/orbpro/Estimation.fbs +244 -0
- package/schemas/orbpro/Propagator.fbs +64 -0
- package/schemas/orbpro/Solver.fbs +115 -0
- package/src/conformance/estimationReference.js +81 -0
- package/src/conformance/estimationSuite.js +134 -0
- package/src/conformance/index.js +39 -2
- package/src/generated/orbpro/propagator-abi.js +21 -0
- package/src/generated/orbpro/propagator-abi.ts +50 -0
- package/src/standards/sharedCatalog.js +7 -0
- package/templates/estimation-module/README.md +24 -0
- package/templates/estimation-module/build.mjs +32 -0
- package/templates/estimation-module/package.json +12 -0
- package/templates/estimation-module/plugin-manifest.json +34 -0
- package/templates/estimation-module/src/reference_estimation.cpp +53 -0
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
<li><a href="./families/effects.html"><span>Effects</span><span class="tag tag-planned">planned</span></a></li>
|
|
55
55
|
</ul>
|
|
56
56
|
<h2>Estimation, data and logic</h2><ul>
|
|
57
|
-
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-
|
|
57
|
+
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
58
58
|
<li><a href="./families/data-source.html"><span>Data source</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
59
59
|
<li><a href="./families/analytics.html"><span>Analytics</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
60
60
|
<li><a href="./families/scheduler.html"><span>Scheduler</span><span class="tag tag-planned">planned</span></a></li>
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
<li><a href="./families/effects.html"><span>Effects</span><span class="tag tag-planned">planned</span></a></li>
|
|
55
55
|
</ul>
|
|
56
56
|
<h2>Estimation, data and logic</h2><ul>
|
|
57
|
-
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-
|
|
57
|
+
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
58
58
|
<li><a href="./families/data-source.html"><span>Data source</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
59
59
|
<li><a href="./families/analytics.html"><span>Analytics</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
60
60
|
<li><a href="./families/scheduler.html"><span>Scheduler</span><span class="tag tag-planned">planned</span></a></li>
|
package/docs/propagator-abi.md
CHANGED
|
@@ -110,6 +110,56 @@ shipping both is expected, and they must agree exactly (see
|
|
|
110
110
|
`plugin_init_omm` REPLACES the element set. `plugin_ingest_omm_one` APPENDS
|
|
111
111
|
and returns its handle — see [identity](#identity).
|
|
112
112
|
|
|
113
|
+
### Ephemeris ingest
|
|
114
|
+
|
|
115
|
+
| Export | Signature | Returns |
|
|
116
|
+
|---|---|---|
|
|
117
|
+
| `plugin_init_ephemeris` | `int32_t(const uint8_t* bytes, size_t len, uint32_t format)` | entities initialized (>0), or a negative [error code](#error-codes) |
|
|
118
|
+
|
|
119
|
+
`format` is an `OrbProEphemerisFormat` member (`AUTO` = identify from the
|
|
120
|
+
bytes). This is the ONLY legal door for an ephemeris container. It exists
|
|
121
|
+
because `plugin_init` is bound to packed `OrbProOMMRecord` and MUST refuse a
|
|
122
|
+
length that is not a whole multiple of that struct — so a DAF, a Code-500
|
|
123
|
+
record stream or an STK `.e` body has no entry point through it, and passing
|
|
124
|
+
one anyway is a size-lock violation dressed as an ingest. Do not smuggle
|
|
125
|
+
ephemeris bytes through `plugin_init` as fake OMM records.
|
|
126
|
+
|
|
127
|
+
An ephemeris provider is a propagator like any other. It exports
|
|
128
|
+
`plugin_init_ephemeris` INSTEAD of the OMM/element ingest verbs, and is
|
|
129
|
+
otherwise held to every rule on this page: `plugin_propagate` and
|
|
130
|
+
`plugin_propagate_batch` agree exactly, output is **ECEF metres** (§[Frames](#frames)),
|
|
131
|
+
padding bytes are zero, `plugin_destroy` really releases, and every failure
|
|
132
|
+
carries its own code. The consumer seam does not change — the host still
|
|
133
|
+
resolves it by name and drives it through `PropagatedPositionProperty`.
|
|
134
|
+
|
|
135
|
+
Three obligations are specific to this verb:
|
|
136
|
+
|
|
137
|
+
- **The frame is DECLARED, and this is the one family that may exit
|
|
138
|
+
non-ECEF.** Every other provider outputs ECEF because it computes in a frame
|
|
139
|
+
of its own choosing and the host cannot know which. An ephemeris container is
|
|
140
|
+
different: it states its frame outright (a `REF_FRAME` keyword, a DAF frame
|
|
141
|
+
code, an STK `CoordinateSystem`, SP3's terrestrial frame), and rotating a
|
|
142
|
+
J2000 kernel to ECEF so the consumer can rotate it straight back is two
|
|
143
|
+
interpolated rotations added to an answer that was already exact. So an
|
|
144
|
+
ephemeris provider emits the container's own frame and SAYS SO in
|
|
145
|
+
`StateVector.reference_frame`, set through
|
|
146
|
+
`orbpro_state_set_reference_frame()` — never by assigning the field, which
|
|
147
|
+
leaves the padding bytes stale.
|
|
148
|
+
|
|
149
|
+
The frame it names must be a member of the ABI's own `ReferenceFrame` roster,
|
|
150
|
+
translated by NAMED TOKEN. A native frame integer never crosses this seam:
|
|
151
|
+
five incompatible `ReferenceFrame` vocabularies meet here and `ECI == 0`,
|
|
152
|
+
`TEME == 0` and `FIXED == 0` all collide. A container whose declared frame
|
|
153
|
+
has no member on the roster is `UNSUPPORTED_FORMAT`, not a guess.
|
|
154
|
+
- **Interpolation is declared, not implied.** A container that states its own
|
|
155
|
+
interpolation rule (SPK segment type, OEM `INTERPOLATION`/`INTERPOLATION_DEGREE`,
|
|
156
|
+
STK `InterpolationMethod`) is evaluated by THAT rule. A module that silently
|
|
157
|
+
substitutes its own is not reading the file, it is fitting one.
|
|
158
|
+
- **Ingest is streamed, not slurped.** A multi-hundred-megabyte kernel that
|
|
159
|
+
loads on native WasmEdge and dies in the browser is a runtime-shaped branch.
|
|
160
|
+
Read the container by record and declare `initialMemoryBytes` /
|
|
161
|
+
`maximumMemoryBytes` rather than inheriting a per-lane default.
|
|
162
|
+
|
|
113
163
|
### Batch and introspection
|
|
114
164
|
|
|
115
165
|
| Export | Signature | Returns |
|
|
@@ -348,6 +398,8 @@ the degradation ladder (transient → skip; fatal → respawn; exhausted → lat
|
|
|
348
398
|
| `-4` | BAD_INPUT | malformed or short input buffer |
|
|
349
399
|
| `-5` | NOT_CONVERGED | the solve failed to converge |
|
|
350
400
|
| `-6` | UNPHYSICAL | the elements describe no closed orbit |
|
|
401
|
+
| `-7` | UNSUPPORTED_FORMAT | the ephemeris container is not one this module reads, or `AUTO` could not identify it |
|
|
402
|
+
| `-8` | EPOCH_OUT_OF_RANGE | the requested epoch lies outside every segment the loaded ephemeris covers |
|
|
351
403
|
|
|
352
404
|
Rules that are not negotiable:
|
|
353
405
|
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
<li><a href="./families/effects.html"><span>Effects</span><span class="tag tag-planned">planned</span></a></li>
|
|
55
55
|
</ul>
|
|
56
56
|
<h2>Estimation, data and logic</h2><ul>
|
|
57
|
-
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-
|
|
57
|
+
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
58
58
|
<li><a href="./families/data-source.html"><span>Data source</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
59
59
|
<li><a href="./families/analytics.html"><span>Analytics</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
60
60
|
<li><a href="./families/scheduler.html"><span>Scheduler</span><span class="tag tag-planned">planned</span></a></li>
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
<li><a href="./families/effects.html"><span>Effects</span><span class="tag tag-planned">planned</span></a></li>
|
|
55
55
|
</ul>
|
|
56
56
|
<h2>Estimation, data and logic</h2><ul>
|
|
57
|
-
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-
|
|
57
|
+
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
58
58
|
<li><a href="./families/data-source.html"><span>Data source</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
59
59
|
<li><a href="./families/analytics.html"><span>Analytics</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
60
60
|
<li><a href="./families/scheduler.html"><span>Scheduler</span><span class="tag tag-planned">planned</span></a></li>
|
|
@@ -12,8 +12,33 @@ Nothing in the guest ABI names an engine, a tile scheme, or a vendor. The same
|
|
|
12
12
|
three imports serve a browser engine's live quadtree cache, a host-side tile
|
|
13
13
|
store, and a deterministic test fixture.
|
|
14
14
|
|
|
15
|
+
## What this port is NOT
|
|
16
|
+
|
|
17
|
+
Stated because it was read the other way and a consumer nearly built on it:
|
|
18
|
+
this is a **raster tile** port. `sdm_provider_tile_desc_t.kind` has exactly two
|
|
19
|
+
members — terrain and imagery — and every `acquire` operation (`tile`,
|
|
20
|
+
`profile`, `region`) is geospatial. There is no `kind`, no `encoding` and no
|
|
21
|
+
operation that describes a DAF record, an ephemeris block, a tracking-data
|
|
22
|
+
message or any other non-raster container.
|
|
23
|
+
|
|
24
|
+
A module that reads bytes which are not tiles does **not** use this port. It
|
|
25
|
+
takes those bytes on a declared input port of its own method surface, as
|
|
26
|
+
`data-source/oem-source-iss` does (`pluginFamily: "data_source"`,
|
|
27
|
+
`capabilities: []`, `externalInterfaces: []`), and an ephemeris container
|
|
28
|
+
reaches a propagator through `plugin_init_ephemeris` — see
|
|
29
|
+
[the propagator ABI](./propagator-abi.md#ephemeris-ingest). Stretching a tile
|
|
30
|
+
descriptor over a record stream would be an ABI-shaped lie, which is the exact
|
|
31
|
+
failure this SDK exists to prevent.
|
|
32
|
+
|
|
33
|
+
Scope note on the family matrix: `docs/harness-family-matrix.md` lists
|
|
34
|
+
data-source as covered by "a conformance kit and a reference module". No
|
|
35
|
+
data-source conformance kit exists — `src/conformance/index.js` freezes
|
|
36
|
+
`CONFORMANCE_FAMILIES` to `["propagator"]`, which is today the only harnessed
|
|
37
|
+
family with a kit. Read the matrix row as the reference-module claim only.
|
|
38
|
+
|
|
15
39
|
## Table of contents
|
|
16
40
|
|
|
41
|
+
- [What this port is NOT](#what-this-port-is-not)
|
|
17
42
|
- [Doctrine](#doctrine)
|
|
18
43
|
- [Capability](#capability)
|
|
19
44
|
- [The import set](#the-import-set)
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
<li><a href="./families/effects.html"><span>Effects</span><span class="tag tag-planned">planned</span></a></li>
|
|
55
55
|
</ul>
|
|
56
56
|
<h2>Estimation, data and logic</h2><ul>
|
|
57
|
-
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-
|
|
57
|
+
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
58
58
|
<li><a href="./families/data-source.html"><span>Data source</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
59
59
|
<li><a href="./families/analytics.html"><span>Analytics</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
60
60
|
<li><a href="./families/scheduler.html"><span>Scheduler</span><span class="tag tag-planned">planned</span></a></li>
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
<li><a href="./families/effects.html"><span>Effects</span><span class="tag tag-planned">planned</span></a></li>
|
|
55
55
|
</ul>
|
|
56
56
|
<h2>Estimation, data and logic</h2><ul>
|
|
57
|
-
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-
|
|
57
|
+
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
58
58
|
<li><a href="./families/data-source.html"><span>Data source</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
59
59
|
<li><a href="./families/analytics.html"><span>Analytics</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
60
60
|
<li><a href="./families/scheduler.html"><span>Scheduler</span><span class="tag tag-planned">planned</span></a></li>
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
<li><a href="./families/effects.html"><span>Effects</span><span class="tag tag-planned">planned</span></a></li>
|
|
55
55
|
</ul>
|
|
56
56
|
<h2>Estimation, data and logic</h2><ul>
|
|
57
|
-
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-
|
|
57
|
+
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
58
58
|
<li><a href="./families/data-source.html"><span>Data source</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
59
59
|
<li><a href="./families/analytics.html"><span>Analytics</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
60
60
|
<li><a href="./families/scheduler.html"><span>Scheduler</span><span class="tag tag-planned">planned</span></a></li>
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
<li><a href="./families/effects.html"><span>Effects</span><span class="tag tag-planned">planned</span></a></li>
|
|
55
55
|
</ul>
|
|
56
56
|
<h2>Estimation, data and logic</h2><ul>
|
|
57
|
-
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-
|
|
57
|
+
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
58
58
|
<li><a href="./families/data-source.html"><span>Data source</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
59
59
|
<li><a href="./families/analytics.html"><span>Analytics</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
60
60
|
<li><a href="./families/scheduler.html"><span>Scheduler</span><span class="tag tag-planned">planned</span></a></li>
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
<li><a href="./families/effects.html"><span>Effects</span><span class="tag tag-planned">planned</span></a></li>
|
|
55
55
|
</ul>
|
|
56
56
|
<h2>Estimation, data and logic</h2><ul>
|
|
57
|
-
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-
|
|
57
|
+
<li><a href="./families/estimation.html"><span>Estimation</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
58
58
|
<li><a href="./families/data-source.html"><span>Data source</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
59
59
|
<li><a href="./families/analytics.html"><span>Analytics</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
60
60
|
<li><a href="./families/scheduler.html"><span>Scheduler</span><span class="tag tag-planned">planned</span></a></li>
|