space-data-module-sdk 0.8.15 → 0.8.16
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/docs/_shell/consumer-assets.html +5 -0
- package/docs/browser-wasmedge-isomorphic.html +261 -0
- package/docs/byo-wasm-quickstart.html +226 -0
- package/docs/byo-wasm-quickstart.md +204 -0
- package/docs/conformance.html +156 -0
- package/docs/emception-shared-memory-verdict.md +209 -0
- package/docs/events-abi.html +313 -0
- package/docs/events-abi.md +530 -0
- package/docs/families/analytics.html +178 -0
- package/docs/families/analytics.md +104 -0
- package/docs/families/attitude.html +157 -0
- package/docs/families/attitude.md +36 -0
- package/docs/families/behavior.html +157 -0
- package/docs/families/behavior.md +36 -0
- package/docs/families/breakup.html +157 -0
- package/docs/families/breakup.md +36 -0
- package/docs/families/conjunction.html +186 -0
- package/docs/families/conjunction.md +121 -0
- package/docs/families/data-source.html +318 -0
- package/docs/families/effects.html +157 -0
- package/docs/families/effects.md +36 -0
- package/docs/families/environment.html +170 -0
- package/docs/families/environment.md +73 -0
- package/docs/families/estimation.html +190 -0
- package/docs/families/estimation.md +128 -0
- package/docs/families/gnc.html +157 -0
- package/docs/families/gnc.md +36 -0
- package/docs/families/maneuver.html +209 -0
- package/docs/families/maneuver.md +206 -0
- package/docs/families/obstruction.html +191 -0
- package/docs/families/obstruction.md +96 -0
- package/docs/families/propagator.html +333 -0
- package/docs/families/propulsion.html +157 -0
- package/docs/families/propulsion.md +36 -0
- package/docs/families/reentry.html +157 -0
- package/docs/families/reentry.md +36 -0
- package/docs/families/rf.html +193 -0
- package/docs/families/rf.md +136 -0
- package/docs/families/scheduler.html +157 -0
- package/docs/families/scheduler.md +36 -0
- package/docs/families/sensor.html +157 -0
- package/docs/families/sensor.md +36 -0
- package/docs/families/signature.html +157 -0
- package/docs/families/signature.md +36 -0
- package/docs/flatsql-host-contract.html +176 -0
- package/docs/flatsql-streaming-standard.html +375 -0
- package/docs/gpu-module-abi.html +233 -0
- package/docs/harness-family-matrix.md +135 -0
- package/docs/index.html +216 -85
- package/docs/isomorphic-pthreads.html +228 -0
- package/docs/isomorphic-pthreads.md +84 -0
- package/docs/isomorphic-sdn-runtime-plan.html +274 -0
- package/docs/language-runtime-matrix.html +182 -0
- package/docs/llms.txt +86 -0
- package/docs/module-bundle-runtime-plan.html +146 -0
- package/docs/module-publication-standard.html +503 -0
- package/docs/node-red-default-node-parity.html +201 -0
- package/docs/propagator-abi.md +45 -12
- package/docs/protect-and-sign.html +181 -0
- package/docs/protect-and-sign.md +120 -0
- package/docs/protocol-installation.html +296 -0
- package/docs/publication-submission.html +158 -0
- package/docs/publication-submission.md +78 -0
- package/docs/secrets-capability.html +206 -0
- package/docs/styles.css +860 -167
- package/docs/testing-harness.html +408 -0
- package/docs/tri-runtime-parity-gate.html +182 -0
- package/docs/tri-runtime-parity.html +203 -0
- package/include/orbpro/orbpro_event_runner.h +951 -0
- package/include/orbpro/orbpro_events_abi.h +565 -0
- package/include/orbpro/orbpro_propagator_abi.h +17 -0
- package/package.json +11 -4
- package/schemas/orbpro/Events.fbs +501 -0
- package/schemas/orbpro/Propagator.fbs +72 -9
- package/schemas/orbpro/reference-frame-crosswalk.json +108 -0
- package/schemas/orbpro/reference-frame.lock.json +98 -0
- package/src/browser.js +13 -0
- package/src/generated/orbpro/events-abi.js +206 -0
- package/src/generated/orbpro/events-abi.ts +319 -0
- package/src/generated/orbpro/propagator/reference-frame.js +17 -0
- package/src/generated/orbpro/propagator/reference-frame.ts +91 -1
- package/src/generated/orbpro/propagator-abi.js +17 -0
- package/src/generated/orbpro/propagator-abi.ts +17 -0
- package/src/generated/spacedatastandards/plg/CCT.d.ts +94 -0
- package/src/generated/spacedatastandards/plg/CCT.d.ts.map +1 -0
- package/src/generated/spacedatastandards/plg/CCT.js +208 -0
- package/src/generated/spacedatastandards/plg/CCT.ts +281 -0
- package/src/generated/spacedatastandards/plg/CCTCategory.d.ts +98 -0
- package/src/generated/spacedatastandards/plg/CCTCategory.d.ts.map +1 -0
- package/src/generated/spacedatastandards/plg/CCTCategory.js +177 -0
- package/src/generated/spacedatastandards/plg/CCTCategory.ts +269 -0
- package/src/generated/spacedatastandards/plg/CCTCategoryRollup.d.ts +54 -0
- package/src/generated/spacedatastandards/plg/CCTCategoryRollup.d.ts.map +1 -0
- package/src/generated/spacedatastandards/plg/CCTCategoryRollup.js +106 -0
- package/src/generated/spacedatastandards/plg/CCTCategoryRollup.ts +144 -0
- package/src/generated/spacedatastandards/plg/PLG.d.ts +46 -2
- package/src/generated/spacedatastandards/plg/PLG.d.ts.map +1 -1
- package/src/generated/spacedatastandards/plg/PLG.js +78 -5
- package/src/generated/spacedatastandards/plg/PLG.ts +90 -5
- package/src/generated/spacedatastandards/plg/capabilityClass.d.ts +181 -0
- package/src/generated/spacedatastandards/plg/capabilityClass.d.ts.map +1 -0
- package/src/generated/spacedatastandards/plg/capabilityClass.js +183 -0
- package/src/generated/spacedatastandards/plg/capabilityClass.ts +208 -0
- package/src/generated/spacedatastandards/plg/main.d.ts +4 -0
- package/src/generated/spacedatastandards/plg/main.d.ts.map +1 -1
- package/src/generated/spacedatastandards/plg/main.js +4 -0
- package/src/generated/spacedatastandards/plg/main.ts +4 -0
- package/src/generated/spacedatastandards/plg/pluginCategory.d.ts +40 -2
- package/src/generated/spacedatastandards/plg/pluginCategory.d.ts.map +1 -1
- package/src/generated/spacedatastandards/plg/pluginCategory.js +40 -2
- package/src/generated/spacedatastandards/plg/pluginCategory.ts +40 -2
- package/src/host/browserModuleHarness.js +8 -0
- package/src/host/wasiThreadHost.js +189 -14
- package/src/index.d.ts +18 -1
- package/src/transport/index.js +16 -0
- package/src/transport/records.js +1015 -3
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<meta name="description" content="Status: EXPERIMENTAL. A production orbit-determination module is shipped and" />
|
|
7
|
+
<title>Estimation — Space Data Module SDK</title>
|
|
8
|
+
<link rel="stylesheet" href="../styles.css" />
|
|
9
|
+
<!-- SDN_CONSUMER_ASSETS_START -->
|
|
10
|
+
<link rel="stylesheet" href="https://static.spacedatanetwork.org/assets/hd-wallet-ui/2.0.28/sdn-wallet-public-client.c3f68d1cfd88478f10d836a5e829d1dfc6a10157972cf0f7d4d319d0636f2cc4.css" integrity="sha384-fICuhN4I9xqOK1F5vGGzl26opuO+xQIvTZXMSV76lWTBiQ6AfzztMGLLDw8yRT8i" crossorigin="anonymous">
|
|
11
|
+
<script defer src="https://static.spacedatanetwork.org/assets/hd-wallet-ui/2.0.28/sdn-wallet-public-client.f611e7e151a3b5c38384272f8894a4c6634f0a29bf925b0e02e0e27f8db0bfff.js" integrity="sha384-R+QqsKoWJIS7iWrtPmgJ49DVnb1hSGjZokupbLInJd1PLp8RwQhtF/hnaerc33ci" crossorigin="anonymous" data-sdn-wallet-public-client="v1"></script>
|
|
12
|
+
<script defer src="https://static.spacedatanetwork.org/assets/sdn-stack-nav/1.0.0/sdn-stack-nav.52fde607eee38ffa116188201f50258ed50bd18c9f06c1af9678f763147a8fe5.js" integrity="sha384-dgeojhJ8vTszHXIbv7O7nZcEzqD10oUYYJjBmPrV7+kLQEUlXLQD4ek5Q7HOFiO5" crossorigin="anonymous" data-nav-style-url="https://static.spacedatanetwork.org/assets/sdn-stack-nav/1.0.0/sdn-stack-nav.36a36359ce18322185e9ff179f88175bab67d5ad84a14d9c08a54f2ff27267e7.css" data-nav-style-integrity="sha384-c4M8Fg+kYaeOYYtJVr7jJsde24IhSWkWaRyAOHEZU9jozhRck089aw+mnHwxymds" data-wallet-client-url="https://static.spacedatanetwork.org/assets/hd-wallet-ui/2.0.28/sdn-wallet-public-client.f611e7e151a3b5c38384272f8894a4c6634f0a29bf925b0e02e0e27f8db0bfff.js" data-wallet-client-integrity="sha384-R+QqsKoWJIS7iWrtPmgJ49DVnb1hSGjZokupbLInJd1PLp8RwQhtF/hnaerc33ci" data-wallet-style-url="https://static.spacedatanetwork.org/assets/hd-wallet-ui/2.0.28/sdn-wallet-public-client.c3f68d1cfd88478f10d836a5e829d1dfc6a10157972cf0f7d4d319d0636f2cc4.css" data-wallet-style-integrity="sha384-fICuhN4I9xqOK1F5vGGzl26opuO+xQIvTZXMSV76lWTBiQ6AfzztMGLLDw8yRT8i" data-wallet-client-id="sdn-module-sdk-pages-v1" data-wallet-callback-uri="https://digitalarsenal.github.io/space-data-module-sdk/wallet-callback.html" data-wallet-registry-sha256="e1ce6fe903c9700484a8a87d96581c8cad97063dabf63030b4518a31a3bdaa93"></script>
|
|
13
|
+
<!-- SDN_CONSUMER_ASSETS_END -->
|
|
14
|
+
</head>
|
|
15
|
+
<body>
|
|
16
|
+
<a class="skip-link" href="#main">Skip to content</a>
|
|
17
|
+
<sdn-stack-nav active="module-sdk"></sdn-stack-nav>
|
|
18
|
+
<header class="site-header">
|
|
19
|
+
<a class="site-brand" href="../">Space Data Module SDK</a>
|
|
20
|
+
<nav class="header-links" aria-label="Site">
|
|
21
|
+
<a href="../byo-wasm-quickstart.html">Quickstart</a>
|
|
22
|
+
<a href="../conformance.html">Conformance</a>
|
|
23
|
+
<a href="https://github.com/DigitalArsenal/space-data-module-sdk">GitHub</a>
|
|
24
|
+
<a class="stack-button" href="#stack">Stack</a>
|
|
25
|
+
</nav>
|
|
26
|
+
</header>
|
|
27
|
+
<div class="shell">
|
|
28
|
+
<nav class="sidebar" id="sidebar" aria-label="Documentation">
|
|
29
|
+
<h2>Start here</h2><ul>
|
|
30
|
+
<li><a href="../index.html"><span>Harness family matrix</span></a></li>
|
|
31
|
+
<li><a href="../byo-wasm-quickstart.html"><span>BYO-wasm quickstart</span></a></li>
|
|
32
|
+
<li><a href="../conformance.html"><span>Conformance kit</span></a></li>
|
|
33
|
+
<li><a href="../protect-and-sign.html"><span>Protect and sign</span></a></li>
|
|
34
|
+
<li><a href="../publication-submission.html"><span>Publication and listing</span></a></li>
|
|
35
|
+
</ul>
|
|
36
|
+
<h2>Dynamics</h2><ul>
|
|
37
|
+
<li><a href="./propagator.html"><span>Propagator</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
38
|
+
<li><a href="./maneuver.html"><span>Maneuver</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
39
|
+
<li><a href="./propulsion.html"><span>Propulsion</span><span class="tag tag-planned">planned</span></a></li>
|
|
40
|
+
<li><a href="./attitude.html"><span>Attitude</span><span class="tag tag-planned">planned</span></a></li>
|
|
41
|
+
<li><a href="./gnc.html"><span>GNC</span><span class="tag tag-planned">planned</span></a></li>
|
|
42
|
+
</ul>
|
|
43
|
+
<h2>Environment and interaction</h2><ul>
|
|
44
|
+
<li><a href="./rf.html"><span>RF</span><span class="tag tag-designed">designed</span></a></li>
|
|
45
|
+
<li><a href="./sensor.html"><span>Sensor</span><span class="tag tag-planned">planned</span></a></li>
|
|
46
|
+
<li><a href="./signature.html"><span>Signature</span><span class="tag tag-planned">planned</span></a></li>
|
|
47
|
+
<li><a href="./environment.html"><span>Environment</span><span class="tag tag-planned">planned</span></a></li>
|
|
48
|
+
<li><a href="./obstruction.html"><span>Obstruction</span><span class="tag tag-designed">designed</span></a></li>
|
|
49
|
+
</ul>
|
|
50
|
+
<h2>Event physics</h2><ul>
|
|
51
|
+
<li><a href="./breakup.html"><span>Breakup</span><span class="tag tag-planned">planned</span></a></li>
|
|
52
|
+
<li><a href="./reentry.html"><span>Reentry</span><span class="tag tag-planned">planned</span></a></li>
|
|
53
|
+
<li><a href="./conjunction.html"><span>Conjunction</span><span class="tag tag-designed">designed</span></a></li>
|
|
54
|
+
<li><a href="./effects.html"><span>Effects</span><span class="tag tag-planned">planned</span></a></li>
|
|
55
|
+
</ul>
|
|
56
|
+
<h2>Estimation, data and logic</h2><ul>
|
|
57
|
+
<li><a href="./estimation.html" aria-current="page"><span>Estimation</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
58
|
+
<li><a href="./data-source.html"><span>Data source</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
59
|
+
<li><a href="./analytics.html"><span>Analytics</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
60
|
+
<li><a href="./scheduler.html"><span>Scheduler</span><span class="tag tag-planned">planned</span></a></li>
|
|
61
|
+
<li><a href="./behavior.html"><span>Behavior</span><span class="tag tag-planned">planned</span></a></li>
|
|
62
|
+
</ul>
|
|
63
|
+
<h2>Runtime contract</h2><ul>
|
|
64
|
+
<li><a href="../events-abi.html"><span>Event locator ABI</span></a></li>
|
|
65
|
+
<li><a href="../module-publication-standard.html"><span>Module publication standard</span></a></li>
|
|
66
|
+
<li><a href="../browser-wasmedge-isomorphic.html"><span>Browser / WasmEdge isomorphism</span></a></li>
|
|
67
|
+
<li><a href="../isomorphic-pthreads.html"><span>Isomorphic pthreads</span></a></li>
|
|
68
|
+
<li><a href="../tri-runtime-parity.html"><span>Tri-runtime parity</span></a></li>
|
|
69
|
+
<li><a href="../tri-runtime-parity-gate.html"><span>Tri-runtime parity gate</span></a></li>
|
|
70
|
+
<li><a href="../testing-harness.html"><span>Testing harness</span></a></li>
|
|
71
|
+
<li><a href="../language-runtime-matrix.html"><span>Language and runtime matrix</span></a></li>
|
|
72
|
+
</ul>
|
|
73
|
+
<h2>Host surfaces</h2><ul>
|
|
74
|
+
<li><a href="../flatsql-host-contract.html"><span>FlatSQL host contract</span></a></li>
|
|
75
|
+
<li><a href="../flatsql-streaming-standard.html"><span>FlatSQL streaming standard</span></a></li>
|
|
76
|
+
<li><a href="../secrets-capability.html"><span>Credential lanes</span></a></li>
|
|
77
|
+
<li><a href="../protocol-installation.html"><span>Protocol installation</span></a></li>
|
|
78
|
+
<li><a href="../gpu-module-abi.html"><span>GPU module ABI</span></a></li>
|
|
79
|
+
<li><a href="../module-bundle-runtime-plan.html"><span>Module bundle runtime</span></a></li>
|
|
80
|
+
<li><a href="../isomorphic-sdn-runtime-plan.html"><span>Isomorphic SDN runtime</span></a></li>
|
|
81
|
+
<li><a href="../node-red-default-node-parity.html"><span>Node-RED node parity</span></a></li>
|
|
82
|
+
</ul>
|
|
83
|
+
</nav>
|
|
84
|
+
<main class="doc" id="main">
|
|
85
|
+
<p class="breadcrumb"><a href="../index.html">Harness families</a> / Estimation, data and logic</p>
|
|
86
|
+
<h1>Estimation</h1>
|
|
87
|
+
<p class="doc-meta"><span class="pill pill-experimental">experimental</span><span>Experimental. The shape exists in wave-2 form and is expected to change. Do not ship a commercial module against it yet.</span></p>
|
|
88
|
+
<p><strong>Status: EXPERIMENTAL.</strong> A production orbit-determination module is shipped and running, but it is not a ratified harness: it has no generated ABI header, no conformance kit, and no reference module in the harness sense. The broader estimation surface that its headers describe is largely not wired into the shipped path.</p>
|
|
89
|
+
<h2 id="doctrine"><a class="anchor" href="#doctrine" aria-hidden="true">#</a>Doctrine</h2>
|
|
90
|
+
<p>An estimation module turns observations into state. Observations and an initial guess go in; an estimated state, and where the family matures, a covariance, come out. It is the inverse of the propagator family, and it depends on that family: an estimator that cannot take its propagator as a pluggable port is hardwired to one force model and is not a member of this family.</p>
|
|
91
|
+
<p>The pluggable-propagation law applies here with full force. Every propagator-consuming surface — an estimator emphatically included — takes the propagator as a parameter or port, never as a compiled-in choice.</p>
|
|
92
|
+
<h2 id="capability"><a class="anchor" href="#capability" aria-hidden="true">#</a>Capability</h2>
|
|
93
|
+
<p>Ingest observations, fit a state, emit results as standards records. The shipped path emits <code>$OMM</code>-class mean-element results and <code>$OBD</code> observation-derived records. Input ephemerides are transient by rule: they are fitted and discarded, and only the results are stored.</p>
|
|
94
|
+
<h2 id="import-and-export-set"><a class="anchor" href="#import-and-export-set" aria-hidden="true">#</a>Import and export set</h2>
|
|
95
|
+
<p><strong>Not specified as a harness ABI.</strong> No <code>orbpro_od_abi.h</code> or equivalent generated header exists. The shipped module is invoked through the SDK's generic module surface, not through a family-specific export set.</p>
|
|
96
|
+
<p>In the manifest vocabulary the family projects onto <code>PluginFamily.ORBIT_DETERMINATION</code>, which itself carries a known projection gap: Space Data Standards has no dedicated plugin-category member for it yet, so it projects onto the analysis category until one is minted.</p>
|
|
97
|
+
<h2 id="wire-layout"><a class="anchor" href="#wire-layout" aria-hidden="true">#</a>Wire layout</h2>
|
|
98
|
+
<p><strong>Not specified as a public wire.</strong> The internal C++ types describe the intended shape and are useful as a design reference, but they are not a published ABI and their layout is not locked:</p>
|
|
99
|
+
<div class="table-wrap"><table><thead><tr><th>Type</th><th>Fields</th></tr></thead><tbody><tr><td><code>StateVector</code></td><td><code>epoch_jd</code>, <code>x</code>, <code>y</code>, <code>z</code>, <code>vx</code>, <code>vy</code>, <code>vz</code></td></tr><tr><td><code>Observation</code></td><td><code>epoch_jd</code>, <code>type</code>, <code>value</code>, <code>sigma</code>, <code>station_id</code></td></tr><tr><td><code>GroundStation</code></td><td><code>id</code>, <code>name</code>, <code>lat_deg</code>, <code>lon_deg</code>, <code>alt_km</code></td></tr><tr><td><code>Covariance6x6</code></td><td>6×6 array of doubles</td></tr></tbody></table></div>
|
|
100
|
+
<p><code>ObservationType</code> covers right ascension, declination, azimuth, elevation, range, range rate, and position components.</p>
|
|
101
|
+
<p>The SDS <code>$ODW</code> problem record and its runtime wire are unminted; <code>$OBD</code> remains the results record. By explicit ruling, the OD <em>result model</em> decision stays deferred — a future record mint covers the problem and wire side only and must not freeze the result model.</p>
|
|
102
|
+
<h2 id="units-and-frames"><a class="anchor" href="#units-and-frames" aria-hidden="true">#</a>Units and frames</h2>
|
|
103
|
+
<p>The internal types mix conventions and this is a real hazard: epochs are Julian dates, station geodetic position is in degrees with altitude in kilometres, and state components are in the propagator family's units. Any published estimation ABI must state the unit of every field at the field, exactly as the propagator ABI does. Until it does, read the module's own headers rather than assuming.</p>
|
|
104
|
+
<h2 id="sentinels"><a class="anchor" href="#sentinels" aria-hidden="true">#</a>Sentinels</h2>
|
|
105
|
+
<p>Not specified. The shipped path treats a failed fit as a refusal and does not emit a record; there is no ratified sentinel vocabulary for a partially converged solution.</p>
|
|
106
|
+
<h2 id="identity"><a class="anchor" href="#identity" aria-hidden="true">#</a>Identity</h2>
|
|
107
|
+
<p>Objects are addressed by their catalog identity in the shipped path — the same identity the propagator family uses for an entity.</p>
|
|
108
|
+
<h2 id="threading"><a class="anchor" href="#threading" aria-hidden="true">#</a>Threading</h2>
|
|
109
|
+
<p><code>wasm32-wasip1-threads</code>. The shipped fit path is genuinely multi-threaded and runs a full catalog fit inside one composed WASM flow; that is the strongest evidence in this family that the threading model is sound. No harness-level shard-write discipline is specified because no batch ABI is published.</p>
|
|
110
|
+
<h2 id="error-codes"><a class="anchor" href="#error-codes" aria-hidden="true">#</a>Error codes</h2>
|
|
111
|
+
<p>Not specified as a named set.</p>
|
|
112
|
+
<h2 id="lifetime"><a class="anchor" href="#lifetime" aria-hidden="true">#</a>Lifetime</h2>
|
|
113
|
+
<p>The shipped module is instantiated once per flow run and torn down with it.</p>
|
|
114
|
+
<h2 id="parity-envelope"><a class="anchor" href="#parity-envelope" aria-hidden="true">#</a>Parity envelope</h2>
|
|
115
|
+
<p>Cross-runtime parity is exercised for the shipped flow, but the family has no parity envelope statement of its own. Use the generic <a href="../tri-runtime-parity-gate.html">parity gate</a>.</p>
|
|
116
|
+
<h2 id="consumer-seam"><a class="anchor" href="#consumer-seam" aria-hidden="true">#</a>Consumer seam</h2>
|
|
117
|
+
<p>The seam that matters is the propagator port. An estimation module accepts a propagator plugin and calls it; the consumer chooses which propagator is supplied. Any estimation module that internally hardwires a single propagator is non-conforming by the pluggable-propagation law, regardless of how good its filter is.</p>
|
|
118
|
+
<h2 id="guest-c-example"><a class="anchor" href="#guest-c-example" aria-hidden="true">#</a>Guest C++ example</h2>
|
|
119
|
+
<p>None published. Publishing a skeleton against an unratified ABI would invite exactly the drift this family needs to avoid. Start from the <a href="./propagator.html">propagator guest example</a> for module structure, and consume the propagator through its published ABI from inside your estimator.</p>
|
|
120
|
+
<h2 id="known-gaps-stated-plainly"><a class="anchor" href="#known-gaps-stated-plainly" aria-hidden="true">#</a>Known gaps, stated plainly</h2>
|
|
121
|
+
<ul>
|
|
122
|
+
<li>The shipped production path is SGP4 mean-element batch fitting. That is what runs.</li>
|
|
123
|
+
<li>The wider surface described in the module's own headers — Gauss, Laplace, double-r, Gibbs and Herrick-Gibbs initial orbit determination; sequential EKF and UKF; 6×6 covariance with consider parameters and state-transition-matrix propagation — is compiled but audited as dead code, reachable only from a test path and never called by the production entry points. Treat it as design intent, not as available capability.</li>
|
|
124
|
+
<li>The abstract propagator interface inside that module is part of the same dead path. The pluggable-propagation law is satisfied by design in the header and not yet exercised in the shipped flow.</li>
|
|
125
|
+
<li>No conformance kit, no generated header, no negative control.</li>
|
|
126
|
+
</ul>
|
|
127
|
+
<section class="playground" id="playground-slot" data-family="estimation" data-playground="pending" aria-labelledby="playground-title">
|
|
128
|
+
<h2 id="playground-title">Playground</h2>
|
|
129
|
+
<p>
|
|
130
|
+
An in-browser build-and-run playground for the <code>estimation</code> harness
|
|
131
|
+
mounts here. It is being built under the graph task
|
|
132
|
+
<code>sdk-playground-emception</code>; this slot is its reserved mount
|
|
133
|
+
point and is intentionally empty until that lands.
|
|
134
|
+
</p>
|
|
135
|
+
</section>
|
|
136
|
+
<p class="doc-footer">
|
|
137
|
+
Source of truth for this page:
|
|
138
|
+
<code>docs/families/estimation.md</code>. Regenerate with
|
|
139
|
+
<code>npm run build:docs</code>.
|
|
140
|
+
</p>
|
|
141
|
+
</main>
|
|
142
|
+
<nav class="rail" aria-label="On this page"><h2>On this page</h2><ul><li><a class="depth-2" href="#doctrine">Doctrine</a></li>
|
|
143
|
+
<li><a class="depth-2" href="#capability">Capability</a></li>
|
|
144
|
+
<li><a class="depth-2" href="#import-and-export-set">Import and export set</a></li>
|
|
145
|
+
<li><a class="depth-2" href="#wire-layout">Wire layout</a></li>
|
|
146
|
+
<li><a class="depth-2" href="#units-and-frames">Units and frames</a></li>
|
|
147
|
+
<li><a class="depth-2" href="#sentinels">Sentinels</a></li>
|
|
148
|
+
<li><a class="depth-2" href="#identity">Identity</a></li>
|
|
149
|
+
<li><a class="depth-2" href="#threading">Threading</a></li>
|
|
150
|
+
<li><a class="depth-2" href="#error-codes">Error codes</a></li>
|
|
151
|
+
<li><a class="depth-2" href="#lifetime">Lifetime</a></li>
|
|
152
|
+
<li><a class="depth-2" href="#parity-envelope">Parity envelope</a></li>
|
|
153
|
+
<li><a class="depth-2" href="#consumer-seam">Consumer seam</a></li>
|
|
154
|
+
<li><a class="depth-2" href="#guest-c-example">Guest C++ example</a></li>
|
|
155
|
+
<li><a class="depth-2" href="#known-gaps-stated-plainly">Known gaps, stated plainly</a></li></ul></nav>
|
|
156
|
+
</div>
|
|
157
|
+
<section id="stack" class="section" aria-labelledby="stack-title">
|
|
158
|
+
<div class="section-head">
|
|
159
|
+
<p class="eyebrow">SDN Stack</p>
|
|
160
|
+
<h2 id="stack-title">Connected sites</h2>
|
|
161
|
+
</div>
|
|
162
|
+
<div class="link-list">
|
|
163
|
+
<a href="https://spacedatastandards.org/">
|
|
164
|
+
<span>Standards</span>
|
|
165
|
+
<small>Canonical schemas, record contracts, and generated bindings.</small>
|
|
166
|
+
</a>
|
|
167
|
+
<a href="https://digitalarsenal.github.io/flatbuffers/">
|
|
168
|
+
<span>FlatBuffers</span>
|
|
169
|
+
<small>Binary encoding, schema tooling, and runtime documentation.</small>
|
|
170
|
+
</a>
|
|
171
|
+
<a href="https://digitalarsenal.github.io/flatsql/">
|
|
172
|
+
<span>FlatSQL</span>
|
|
173
|
+
<small>SQL-style queries over FlatBuffer-backed datasets and streams.</small>
|
|
174
|
+
</a>
|
|
175
|
+
<a href="https://spacedatanetwork.org/">
|
|
176
|
+
<span>SDN</span>
|
|
177
|
+
<small>Distributed publication, discovery, delivery, and marketplace infrastructure.</small>
|
|
178
|
+
</a>
|
|
179
|
+
<a href="https://digitalarsenal.github.io/space-data-module-sdk/" class="active">
|
|
180
|
+
<span>Module SDK</span>
|
|
181
|
+
<small>WASM module packaging, validation, and host compatibility tooling.</small>
|
|
182
|
+
</a>
|
|
183
|
+
</div>
|
|
184
|
+
</section>
|
|
185
|
+
<footer class="site-footer">
|
|
186
|
+
Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
|
|
187
|
+
source in <code>docs/</code>; edit the Markdown, never the HTML.
|
|
188
|
+
</footer>
|
|
189
|
+
</body>
|
|
190
|
+
</html>
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Estimation
|
|
2
|
+
|
|
3
|
+
**Status: EXPERIMENTAL.** A production orbit-determination module is shipped and
|
|
4
|
+
running, but it is not a ratified harness: it has no generated ABI header, no
|
|
5
|
+
conformance kit, and no reference module in the harness sense. The broader
|
|
6
|
+
estimation surface that its headers describe is largely not wired into the
|
|
7
|
+
shipped path.
|
|
8
|
+
|
|
9
|
+
## Doctrine
|
|
10
|
+
|
|
11
|
+
An estimation module turns observations into state. Observations and an initial
|
|
12
|
+
guess go in; an estimated state, and where the family matures, a covariance,
|
|
13
|
+
come out. It is the inverse of the propagator family, and it depends on that
|
|
14
|
+
family: an estimator that cannot take its propagator as a pluggable port is
|
|
15
|
+
hardwired to one force model and is not a member of this family.
|
|
16
|
+
|
|
17
|
+
The pluggable-propagation law applies here with full force. Every
|
|
18
|
+
propagator-consuming surface — an estimator emphatically included — takes the
|
|
19
|
+
propagator as a parameter or port, never as a compiled-in choice.
|
|
20
|
+
|
|
21
|
+
## Capability
|
|
22
|
+
|
|
23
|
+
Ingest observations, fit a state, emit results as standards records. The shipped
|
|
24
|
+
path emits `$OMM`-class mean-element results and `$OBD` observation-derived
|
|
25
|
+
records. Input ephemerides are transient by rule: they are fitted and discarded,
|
|
26
|
+
and only the results are stored.
|
|
27
|
+
|
|
28
|
+
## Import and export set
|
|
29
|
+
|
|
30
|
+
**Not specified as a harness ABI.** No `orbpro_od_abi.h` or equivalent
|
|
31
|
+
generated header exists. The shipped module is invoked through the SDK's generic
|
|
32
|
+
module surface, not through a family-specific export set.
|
|
33
|
+
|
|
34
|
+
In the manifest vocabulary the family projects onto
|
|
35
|
+
`PluginFamily.ORBIT_DETERMINATION`, which itself carries a known projection gap:
|
|
36
|
+
Space Data Standards has no dedicated plugin-category member for it yet, so it
|
|
37
|
+
projects onto the analysis category until one is minted.
|
|
38
|
+
|
|
39
|
+
## Wire layout
|
|
40
|
+
|
|
41
|
+
**Not specified as a public wire.** The internal C++ types describe the intended
|
|
42
|
+
shape and are useful as a design reference, but they are not a published ABI and
|
|
43
|
+
their layout is not locked:
|
|
44
|
+
|
|
45
|
+
| Type | Fields |
|
|
46
|
+
| --- | --- |
|
|
47
|
+
| `StateVector` | `epoch_jd`, `x`, `y`, `z`, `vx`, `vy`, `vz` |
|
|
48
|
+
| `Observation` | `epoch_jd`, `type`, `value`, `sigma`, `station_id` |
|
|
49
|
+
| `GroundStation` | `id`, `name`, `lat_deg`, `lon_deg`, `alt_km` |
|
|
50
|
+
| `Covariance6x6` | 6×6 array of doubles |
|
|
51
|
+
|
|
52
|
+
`ObservationType` covers right ascension, declination, azimuth, elevation,
|
|
53
|
+
range, range rate, and position components.
|
|
54
|
+
|
|
55
|
+
The SDS `$ODW` problem record and its runtime wire are unminted; `$OBD` remains
|
|
56
|
+
the results record. By explicit ruling, the OD *result model* decision stays
|
|
57
|
+
deferred — a future record mint covers the problem and wire side only and must
|
|
58
|
+
not freeze the result model.
|
|
59
|
+
|
|
60
|
+
## Units and frames
|
|
61
|
+
|
|
62
|
+
The internal types mix conventions and this is a real hazard: epochs are Julian
|
|
63
|
+
dates, station geodetic position is in degrees with altitude in kilometres, and
|
|
64
|
+
state components are in the propagator family's units. Any published estimation
|
|
65
|
+
ABI must state the unit of every field at the field, exactly as the propagator
|
|
66
|
+
ABI does. Until it does, read the module's own headers rather than assuming.
|
|
67
|
+
|
|
68
|
+
## Sentinels
|
|
69
|
+
|
|
70
|
+
Not specified. The shipped path treats a failed fit as a refusal and does not
|
|
71
|
+
emit a record; there is no ratified sentinel vocabulary for a partially
|
|
72
|
+
converged solution.
|
|
73
|
+
|
|
74
|
+
## Identity
|
|
75
|
+
|
|
76
|
+
Objects are addressed by their catalog identity in the shipped path — the same
|
|
77
|
+
identity the propagator family uses for an entity.
|
|
78
|
+
|
|
79
|
+
## Threading
|
|
80
|
+
|
|
81
|
+
`wasm32-wasip1-threads`. The shipped fit path is genuinely multi-threaded and
|
|
82
|
+
runs a full catalog fit inside one composed WASM flow; that is the strongest
|
|
83
|
+
evidence in this family that the threading model is sound. No harness-level
|
|
84
|
+
shard-write discipline is specified because no batch ABI is published.
|
|
85
|
+
|
|
86
|
+
## Error codes
|
|
87
|
+
|
|
88
|
+
Not specified as a named set.
|
|
89
|
+
|
|
90
|
+
## Lifetime
|
|
91
|
+
|
|
92
|
+
The shipped module is instantiated once per flow run and torn down with it.
|
|
93
|
+
|
|
94
|
+
## Parity envelope
|
|
95
|
+
|
|
96
|
+
Cross-runtime parity is exercised for the shipped flow, but the family has no
|
|
97
|
+
parity envelope statement of its own. Use the generic
|
|
98
|
+
[parity gate](../tri-runtime-parity-gate.html).
|
|
99
|
+
|
|
100
|
+
## Consumer seam
|
|
101
|
+
|
|
102
|
+
The seam that matters is the propagator port. An estimation module accepts a
|
|
103
|
+
propagator plugin and calls it; the consumer chooses which propagator is
|
|
104
|
+
supplied. Any estimation module that internally hardwires a single propagator is
|
|
105
|
+
non-conforming by the pluggable-propagation law, regardless of how good its
|
|
106
|
+
filter is.
|
|
107
|
+
|
|
108
|
+
## Guest C++ example
|
|
109
|
+
|
|
110
|
+
None published. Publishing a skeleton against an unratified ABI would invite
|
|
111
|
+
exactly the drift this family needs to avoid. Start from the
|
|
112
|
+
[propagator guest example](propagator.html) for module structure, and consume the
|
|
113
|
+
propagator through its published ABI from inside your estimator.
|
|
114
|
+
|
|
115
|
+
## Known gaps, stated plainly
|
|
116
|
+
|
|
117
|
+
- The shipped production path is SGP4 mean-element batch fitting. That is what
|
|
118
|
+
runs.
|
|
119
|
+
- The wider surface described in the module's own headers — Gauss, Laplace,
|
|
120
|
+
double-r, Gibbs and Herrick-Gibbs initial orbit determination; sequential EKF
|
|
121
|
+
and UKF; 6×6 covariance with consider parameters and state-transition-matrix
|
|
122
|
+
propagation — is compiled but audited as dead code, reachable only from a test
|
|
123
|
+
path and never called by the production entry points. Treat it as design
|
|
124
|
+
intent, not as available capability.
|
|
125
|
+
- The abstract propagator interface inside that module is part of the same dead
|
|
126
|
+
path. The pluggable-propagation law is satisfied by design in the header and
|
|
127
|
+
not yet exercised in the shipped flow.
|
|
128
|
+
- No conformance kit, no generated header, no negative control.
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<meta name="description" content="Status: PLANNED. This family is a ratified entry in the harness-family" />
|
|
7
|
+
<title>GNC — Space Data Module SDK</title>
|
|
8
|
+
<link rel="stylesheet" href="../styles.css" />
|
|
9
|
+
<!-- SDN_CONSUMER_ASSETS_START -->
|
|
10
|
+
<link rel="stylesheet" href="https://static.spacedatanetwork.org/assets/hd-wallet-ui/2.0.28/sdn-wallet-public-client.c3f68d1cfd88478f10d836a5e829d1dfc6a10157972cf0f7d4d319d0636f2cc4.css" integrity="sha384-fICuhN4I9xqOK1F5vGGzl26opuO+xQIvTZXMSV76lWTBiQ6AfzztMGLLDw8yRT8i" crossorigin="anonymous">
|
|
11
|
+
<script defer src="https://static.spacedatanetwork.org/assets/hd-wallet-ui/2.0.28/sdn-wallet-public-client.f611e7e151a3b5c38384272f8894a4c6634f0a29bf925b0e02e0e27f8db0bfff.js" integrity="sha384-R+QqsKoWJIS7iWrtPmgJ49DVnb1hSGjZokupbLInJd1PLp8RwQhtF/hnaerc33ci" crossorigin="anonymous" data-sdn-wallet-public-client="v1"></script>
|
|
12
|
+
<script defer src="https://static.spacedatanetwork.org/assets/sdn-stack-nav/1.0.0/sdn-stack-nav.52fde607eee38ffa116188201f50258ed50bd18c9f06c1af9678f763147a8fe5.js" integrity="sha384-dgeojhJ8vTszHXIbv7O7nZcEzqD10oUYYJjBmPrV7+kLQEUlXLQD4ek5Q7HOFiO5" crossorigin="anonymous" data-nav-style-url="https://static.spacedatanetwork.org/assets/sdn-stack-nav/1.0.0/sdn-stack-nav.36a36359ce18322185e9ff179f88175bab67d5ad84a14d9c08a54f2ff27267e7.css" data-nav-style-integrity="sha384-c4M8Fg+kYaeOYYtJVr7jJsde24IhSWkWaRyAOHEZU9jozhRck089aw+mnHwxymds" data-wallet-client-url="https://static.spacedatanetwork.org/assets/hd-wallet-ui/2.0.28/sdn-wallet-public-client.f611e7e151a3b5c38384272f8894a4c6634f0a29bf925b0e02e0e27f8db0bfff.js" data-wallet-client-integrity="sha384-R+QqsKoWJIS7iWrtPmgJ49DVnb1hSGjZokupbLInJd1PLp8RwQhtF/hnaerc33ci" data-wallet-style-url="https://static.spacedatanetwork.org/assets/hd-wallet-ui/2.0.28/sdn-wallet-public-client.c3f68d1cfd88478f10d836a5e829d1dfc6a10157972cf0f7d4d319d0636f2cc4.css" data-wallet-style-integrity="sha384-fICuhN4I9xqOK1F5vGGzl26opuO+xQIvTZXMSV76lWTBiQ6AfzztMGLLDw8yRT8i" data-wallet-client-id="sdn-module-sdk-pages-v1" data-wallet-callback-uri="https://digitalarsenal.github.io/space-data-module-sdk/wallet-callback.html" data-wallet-registry-sha256="e1ce6fe903c9700484a8a87d96581c8cad97063dabf63030b4518a31a3bdaa93"></script>
|
|
13
|
+
<!-- SDN_CONSUMER_ASSETS_END -->
|
|
14
|
+
</head>
|
|
15
|
+
<body>
|
|
16
|
+
<a class="skip-link" href="#main">Skip to content</a>
|
|
17
|
+
<sdn-stack-nav active="module-sdk"></sdn-stack-nav>
|
|
18
|
+
<header class="site-header">
|
|
19
|
+
<a class="site-brand" href="../">Space Data Module SDK</a>
|
|
20
|
+
<nav class="header-links" aria-label="Site">
|
|
21
|
+
<a href="../byo-wasm-quickstart.html">Quickstart</a>
|
|
22
|
+
<a href="../conformance.html">Conformance</a>
|
|
23
|
+
<a href="https://github.com/DigitalArsenal/space-data-module-sdk">GitHub</a>
|
|
24
|
+
<a class="stack-button" href="#stack">Stack</a>
|
|
25
|
+
</nav>
|
|
26
|
+
</header>
|
|
27
|
+
<div class="shell">
|
|
28
|
+
<nav class="sidebar" id="sidebar" aria-label="Documentation">
|
|
29
|
+
<h2>Start here</h2><ul>
|
|
30
|
+
<li><a href="../index.html"><span>Harness family matrix</span></a></li>
|
|
31
|
+
<li><a href="../byo-wasm-quickstart.html"><span>BYO-wasm quickstart</span></a></li>
|
|
32
|
+
<li><a href="../conformance.html"><span>Conformance kit</span></a></li>
|
|
33
|
+
<li><a href="../protect-and-sign.html"><span>Protect and sign</span></a></li>
|
|
34
|
+
<li><a href="../publication-submission.html"><span>Publication and listing</span></a></li>
|
|
35
|
+
</ul>
|
|
36
|
+
<h2>Dynamics</h2><ul>
|
|
37
|
+
<li><a href="./propagator.html"><span>Propagator</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
38
|
+
<li><a href="./maneuver.html"><span>Maneuver</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
39
|
+
<li><a href="./propulsion.html"><span>Propulsion</span><span class="tag tag-planned">planned</span></a></li>
|
|
40
|
+
<li><a href="./attitude.html"><span>Attitude</span><span class="tag tag-planned">planned</span></a></li>
|
|
41
|
+
<li><a href="./gnc.html" aria-current="page"><span>GNC</span><span class="tag tag-planned">planned</span></a></li>
|
|
42
|
+
</ul>
|
|
43
|
+
<h2>Environment and interaction</h2><ul>
|
|
44
|
+
<li><a href="./rf.html"><span>RF</span><span class="tag tag-designed">designed</span></a></li>
|
|
45
|
+
<li><a href="./sensor.html"><span>Sensor</span><span class="tag tag-planned">planned</span></a></li>
|
|
46
|
+
<li><a href="./signature.html"><span>Signature</span><span class="tag tag-planned">planned</span></a></li>
|
|
47
|
+
<li><a href="./environment.html"><span>Environment</span><span class="tag tag-planned">planned</span></a></li>
|
|
48
|
+
<li><a href="./obstruction.html"><span>Obstruction</span><span class="tag tag-designed">designed</span></a></li>
|
|
49
|
+
</ul>
|
|
50
|
+
<h2>Event physics</h2><ul>
|
|
51
|
+
<li><a href="./breakup.html"><span>Breakup</span><span class="tag tag-planned">planned</span></a></li>
|
|
52
|
+
<li><a href="./reentry.html"><span>Reentry</span><span class="tag tag-planned">planned</span></a></li>
|
|
53
|
+
<li><a href="./conjunction.html"><span>Conjunction</span><span class="tag tag-designed">designed</span></a></li>
|
|
54
|
+
<li><a href="./effects.html"><span>Effects</span><span class="tag tag-planned">planned</span></a></li>
|
|
55
|
+
</ul>
|
|
56
|
+
<h2>Estimation, data and logic</h2><ul>
|
|
57
|
+
<li><a href="./estimation.html"><span>Estimation</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
58
|
+
<li><a href="./data-source.html"><span>Data source</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
59
|
+
<li><a href="./analytics.html"><span>Analytics</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
60
|
+
<li><a href="./scheduler.html"><span>Scheduler</span><span class="tag tag-planned">planned</span></a></li>
|
|
61
|
+
<li><a href="./behavior.html"><span>Behavior</span><span class="tag tag-planned">planned</span></a></li>
|
|
62
|
+
</ul>
|
|
63
|
+
<h2>Runtime contract</h2><ul>
|
|
64
|
+
<li><a href="../events-abi.html"><span>Event locator ABI</span></a></li>
|
|
65
|
+
<li><a href="../module-publication-standard.html"><span>Module publication standard</span></a></li>
|
|
66
|
+
<li><a href="../browser-wasmedge-isomorphic.html"><span>Browser / WasmEdge isomorphism</span></a></li>
|
|
67
|
+
<li><a href="../isomorphic-pthreads.html"><span>Isomorphic pthreads</span></a></li>
|
|
68
|
+
<li><a href="../tri-runtime-parity.html"><span>Tri-runtime parity</span></a></li>
|
|
69
|
+
<li><a href="../tri-runtime-parity-gate.html"><span>Tri-runtime parity gate</span></a></li>
|
|
70
|
+
<li><a href="../testing-harness.html"><span>Testing harness</span></a></li>
|
|
71
|
+
<li><a href="../language-runtime-matrix.html"><span>Language and runtime matrix</span></a></li>
|
|
72
|
+
</ul>
|
|
73
|
+
<h2>Host surfaces</h2><ul>
|
|
74
|
+
<li><a href="../flatsql-host-contract.html"><span>FlatSQL host contract</span></a></li>
|
|
75
|
+
<li><a href="../flatsql-streaming-standard.html"><span>FlatSQL streaming standard</span></a></li>
|
|
76
|
+
<li><a href="../secrets-capability.html"><span>Credential lanes</span></a></li>
|
|
77
|
+
<li><a href="../protocol-installation.html"><span>Protocol installation</span></a></li>
|
|
78
|
+
<li><a href="../gpu-module-abi.html"><span>GPU module ABI</span></a></li>
|
|
79
|
+
<li><a href="../module-bundle-runtime-plan.html"><span>Module bundle runtime</span></a></li>
|
|
80
|
+
<li><a href="../isomorphic-sdn-runtime-plan.html"><span>Isomorphic SDN runtime</span></a></li>
|
|
81
|
+
<li><a href="../node-red-default-node-parity.html"><span>Node-RED node parity</span></a></li>
|
|
82
|
+
</ul>
|
|
83
|
+
</nav>
|
|
84
|
+
<main class="doc" id="main">
|
|
85
|
+
<p class="breadcrumb"><a href="../index.html">Harness families</a> / Dynamics</p>
|
|
86
|
+
<h1>GNC</h1>
|
|
87
|
+
<p class="doc-meta"><span class="pill pill-planned">planned</span><span>Planned. This family is a ratified entry in the harness-family taxonomy; its individual shape has not been ratified and nothing is implemented.</span></p>
|
|
88
|
+
<p><strong>Status: PLANNED.</strong> This family is a ratified entry in the harness-family taxonomy. Its individual shape has not been ratified, and nothing is implemented. This page states scope and status; it is not a contract, and it does not imply parity with the Designed tier.</p>
|
|
89
|
+
<h2 id="scope"><a class="anchor" href="#scope" aria-hidden="true">#</a>Scope</h2>
|
|
90
|
+
<p>Closed-loop guidance, navigation and control. A GNC module observes estimated state, decides what the vehicle should do, and commands the maneuver and attitude families. It is the only family in the dynamics group that is allowed to be stateful across a scenario timeline, because a controller without memory is not a controller.</p>
|
|
91
|
+
<h2 id="what-exists-today"><a class="anchor" href="#what-exists-today" aria-hidden="true">#</a>What exists today</h2>
|
|
92
|
+
<p>Nothing. No schema, no header, no module, no open design task.</p>
|
|
93
|
+
<p>GNC is the family most likely to need a scheduler and behavior contract to exist first, since a control loop is defined as much by when it runs as by what it computes.</p>
|
|
94
|
+
<h2 id="what-ratification-requires"><a class="anchor" href="#what-ratification-requires" aria-hidden="true">#</a>What ratification requires</h2>
|
|
95
|
+
<p>A family reaches Designed when an ABI has been drafted against a real consumer, and Shipped only when all of the following exist:</p>
|
|
96
|
+
<ul>
|
|
97
|
+
<li>A single <code>.fbs</code> schema as the source of the wire layout.</li>
|
|
98
|
+
<li>A generated ABI header with size and offset locks, plus a drift gate that fails when the schema and the committed header disagree.</li>
|
|
99
|
+
<li>Declared units and frames per field, named sentinels, and named negative error codes.</li>
|
|
100
|
+
<li>A conformance kit carrying its own negative control, and a reference module.</li>
|
|
101
|
+
<li>A stated tri-runtime parity envelope.</li>
|
|
102
|
+
<li>Exactly one generic consumer port.</li>
|
|
103
|
+
</ul>
|
|
104
|
+
<p>Until then, do not build against this family. If your work falls in this scope and cannot wait, build a records-in, records-out module through the <a href="../byo-wasm-quickstart.html">BYO-wasm quickstart</a> — that path needs no harness and is available now — and expect to migrate to the family ABI when it is ratified.</p>
|
|
105
|
+
<section class="playground" id="playground-slot" data-family="gnc" data-playground="pending" aria-labelledby="playground-title">
|
|
106
|
+
<h2 id="playground-title">Playground</h2>
|
|
107
|
+
<p>
|
|
108
|
+
An in-browser build-and-run playground for the <code>gnc</code> harness
|
|
109
|
+
mounts here. It is being built under the graph task
|
|
110
|
+
<code>sdk-playground-emception</code>; this slot is its reserved mount
|
|
111
|
+
point and is intentionally empty until that lands.
|
|
112
|
+
</p>
|
|
113
|
+
</section>
|
|
114
|
+
<p class="doc-footer">
|
|
115
|
+
Source of truth for this page:
|
|
116
|
+
<code>docs/families/gnc.md</code>. Regenerate with
|
|
117
|
+
<code>npm run build:docs</code>.
|
|
118
|
+
</p>
|
|
119
|
+
</main>
|
|
120
|
+
<nav class="rail" aria-label="On this page"><h2>On this page</h2><ul><li><a class="depth-2" href="#scope">Scope</a></li>
|
|
121
|
+
<li><a class="depth-2" href="#what-exists-today">What exists today</a></li>
|
|
122
|
+
<li><a class="depth-2" href="#what-ratification-requires">What ratification requires</a></li></ul></nav>
|
|
123
|
+
</div>
|
|
124
|
+
<section id="stack" class="section" aria-labelledby="stack-title">
|
|
125
|
+
<div class="section-head">
|
|
126
|
+
<p class="eyebrow">SDN Stack</p>
|
|
127
|
+
<h2 id="stack-title">Connected sites</h2>
|
|
128
|
+
</div>
|
|
129
|
+
<div class="link-list">
|
|
130
|
+
<a href="https://spacedatastandards.org/">
|
|
131
|
+
<span>Standards</span>
|
|
132
|
+
<small>Canonical schemas, record contracts, and generated bindings.</small>
|
|
133
|
+
</a>
|
|
134
|
+
<a href="https://digitalarsenal.github.io/flatbuffers/">
|
|
135
|
+
<span>FlatBuffers</span>
|
|
136
|
+
<small>Binary encoding, schema tooling, and runtime documentation.</small>
|
|
137
|
+
</a>
|
|
138
|
+
<a href="https://digitalarsenal.github.io/flatsql/">
|
|
139
|
+
<span>FlatSQL</span>
|
|
140
|
+
<small>SQL-style queries over FlatBuffer-backed datasets and streams.</small>
|
|
141
|
+
</a>
|
|
142
|
+
<a href="https://spacedatanetwork.org/">
|
|
143
|
+
<span>SDN</span>
|
|
144
|
+
<small>Distributed publication, discovery, delivery, and marketplace infrastructure.</small>
|
|
145
|
+
</a>
|
|
146
|
+
<a href="https://digitalarsenal.github.io/space-data-module-sdk/" class="active">
|
|
147
|
+
<span>Module SDK</span>
|
|
148
|
+
<small>WASM module packaging, validation, and host compatibility tooling.</small>
|
|
149
|
+
</a>
|
|
150
|
+
</div>
|
|
151
|
+
</section>
|
|
152
|
+
<footer class="site-footer">
|
|
153
|
+
Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
|
|
154
|
+
source in <code>docs/</code>; edit the Markdown, never the HTML.
|
|
155
|
+
</footer>
|
|
156
|
+
</body>
|
|
157
|
+
</html>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# GNC
|
|
2
|
+
|
|
3
|
+
**Status: PLANNED.** This family is a ratified entry in the harness-family
|
|
4
|
+
taxonomy. Its individual shape has not been ratified, and nothing is
|
|
5
|
+
implemented. This page states scope and status; it is not a contract, and it
|
|
6
|
+
does not imply parity with the Designed tier.
|
|
7
|
+
|
|
8
|
+
## Scope
|
|
9
|
+
|
|
10
|
+
Closed-loop guidance, navigation and control. A GNC module observes estimated state, decides what the vehicle should do, and commands the maneuver and attitude families. It is the only family in the dynamics group that is allowed to be stateful across a scenario timeline, because a controller without memory is not a controller.
|
|
11
|
+
|
|
12
|
+
## What exists today
|
|
13
|
+
|
|
14
|
+
Nothing. No schema, no header, no module, no open design task.
|
|
15
|
+
|
|
16
|
+
GNC is the family most likely to need a scheduler and behavior contract to exist first, since a control loop is defined as much by when it runs as by what it computes.
|
|
17
|
+
|
|
18
|
+
## What ratification requires
|
|
19
|
+
|
|
20
|
+
A family reaches Designed when an ABI has been drafted against a real consumer,
|
|
21
|
+
and Shipped only when all of the following exist:
|
|
22
|
+
|
|
23
|
+
- A single `.fbs` schema as the source of the wire layout.
|
|
24
|
+
- A generated ABI header with size and offset locks, plus a drift gate that
|
|
25
|
+
fails when the schema and the committed header disagree.
|
|
26
|
+
- Declared units and frames per field, named sentinels, and named negative error
|
|
27
|
+
codes.
|
|
28
|
+
- A conformance kit carrying its own negative control, and a reference module.
|
|
29
|
+
- A stated tri-runtime parity envelope.
|
|
30
|
+
- Exactly one generic consumer port.
|
|
31
|
+
|
|
32
|
+
Until then, do not build against this family. If your work falls in this scope
|
|
33
|
+
and cannot wait, build a records-in, records-out module through the
|
|
34
|
+
[BYO-wasm quickstart](../byo-wasm-quickstart.html) — that path needs no harness
|
|
35
|
+
and is available now — and expect to migrate to the family ABI when it is
|
|
36
|
+
ratified.
|