space-data-module-sdk 0.8.14 → 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/bin/space-data-module.js +91 -0
- 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/conformance.md +92 -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 +73 -21
- 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 +15 -5
- 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/conformance/abiDriver.js +225 -0
- package/src/conformance/index.js +151 -0
- package/src/conformance/propagatorSuite.js +526 -0
- package/src/conformance/selfTest.js +275 -0
- package/src/conformance/selfTestCorpus.js +68 -0
- package/src/conformance/twoBodyReference.js +132 -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/testing/isomorphicHarness.js +233 -0
- package/src/transport/index.js +16 -0
- package/src/transport/records.js +1015 -3
|
@@ -0,0 +1,178 @@
|
|
|
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. One sub-harness of this family — event location —" />
|
|
7
|
+
<title>Analytics — 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"><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" aria-current="page"><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>Analytics</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> One sub-harness of this family — <strong>event location</strong> — has a ratified <code>.fbs</code> source, a generated header with a drift gate, named error codes, a shared runner and a measured tri-runtime parity envelope. It has no conformance kit and no reference module, so it is not <code>Shipped</code> and a commercial module should not be sold against it. The rest of the family (coverage quality, revisit statistics, availability, link-margin distributions) remains <strong>Planned</strong> and this page states its scope and nothing more.</p>
|
|
89
|
+
<p>This is a sub-harness, not a twentieth family. The nineteen-family taxonomy is owner-ratified; event location is analytics because it derives a figure over a scenario rather than advancing one.</p>
|
|
90
|
+
<h2 id="scope"><a class="anchor" href="#scope" aria-hidden="true">#</a>Scope</h2>
|
|
91
|
+
<p>Derived figures of merit computed over a scenario: coverage quality, revisit statistics, availability, link margin distributions, and other aggregate measures that summarize a run rather than advance it — plus <strong>event location</strong>, which reduces a scenario to the epochs at which something became true.</p>
|
|
92
|
+
<h2 id="event-location-the-shaped-part"><a class="anchor" href="#event-location-the-shaped-part" aria-hidden="true">#</a>Event location — the shaped part</h2>
|
|
93
|
+
<p><strong>Read <a href="../events-abi.html">the event locator ABI</a>.</strong> Everything below is a summary of it.</p>
|
|
94
|
+
<p>Eclipse (umbra / penumbra / antumbra, any number of occulting bodies), station contact with masks and light time, sensor-FOV intrusion, apsides, node crossings and a propagate-to-condition stop are ONE ABI: a vector of scalar event functions <code>g_i(t)</code> whose sign changes are refined to roots.</p>
|
|
95
|
+
<p>A locator writes <code>plugin_event_eval</code> — the <code>g</code> vector — plus its description and its configuration decoder. The bracketing scan, the root refinement, the direction filtering, the occurrence counting and the epoch ordering come from <code>include/orbpro/orbpro_event_runner.h</code>, unchanged, in every locator. "Adding a new locator requires no change to the runner" is therefore structural: there is no runner to change, only a <code>g</code> to write.</p>
|
|
96
|
+
<p>Two decisions are worth reading the contract for:</p>
|
|
97
|
+
<ul>
|
|
98
|
+
<li><strong>The state source is pulled, never imported.</strong> <code>plugin_event_next</code> reports the epochs the locator wants; the consumer propagates them through whatever module is wired to the port; <code>plugin_event_supply</code> feeds the states back. The propagator stays a port, no new host capability is needed, and the three runtimes are byte-identical because the consumer decides nothing.</li>
|
|
99
|
+
<li><strong>Epochs are <code>(jd_day, seconds)</code> pairs.</strong> A Julian date in one <code>float64</code> resolves to 4.02e-5 s, so a single-double JD cannot carry a stop epoch to 1e-6 s. The split pair resolves 1.5e-11 s — and because <code>OrbProStateVector.epoch</code> is a frozen single <code>float64</code>, the state source's own resolution is what bounds the answer. It is DECLARED, the runner clamps to it, and a clamped root is reported <code>EPOCH_RESOLUTION_LIMITED</code> rather than claiming a precision nothing measured.</li>
|
|
100
|
+
</ul>
|
|
101
|
+
<h2 id="what-exists-today"><a class="anchor" href="#what-exists-today" aria-hidden="true">#</a>What exists today</h2>
|
|
102
|
+
<ul>
|
|
103
|
+
<li><code>schemas/orbpro/Events.fbs</code> — the single source of the wire layout.</li>
|
|
104
|
+
<li><code>include/orbpro/orbpro_events_abi.h</code> — generated, with size and offset locks; <code>node scripts/check-events-abi.mjs</code> fails when the two disagree.</li>
|
|
105
|
+
<li><code>include/orbpro/orbpro_event_runner.h</code> — the shared runner. Hand-written because it is algorithm, not layout, and there is exactly one copy of it.</li>
|
|
106
|
+
<li><code>src/generated/orbpro/events-abi.{ts,js}</code> — byte-offset bindings, so no JavaScript consumer hard-codes an offset.</li>
|
|
107
|
+
<li><code>test/events-abi.test.js</code> — the both-harness proof: one source file compiled natively and to <code>wasm32-wasip1-threads</code>, diffed as raw IEEE-754 bit patterns. Identical. Roots reproduce the closed form to 7.3e-12 s under Brent, are independent of the scan step at 60 / 137 / 300 s, survive time reversal, and agree across all three bracketing methods.</li>
|
|
108
|
+
</ul>
|
|
109
|
+
<p>Nothing else in this family is implemented. Matches for the word "analytics" elsewhere in the stack refer to product and interface analytics work, not to a plugin family.</p>
|
|
110
|
+
<h2 id="the-rest-of-the-family-and-why-it-is-still-planned"><a class="anchor" href="#the-rest-of-the-family-and-why-it-is-still-planned" aria-hidden="true">#</a>The rest of the family, and why it is still Planned</h2>
|
|
111
|
+
<p>An analytics harness is mostly a question of what it is allowed to READ. A figure of merit computed over a whole scenario needs broad read access to results, which is the opposite of the narrow, per-call inputs every other family gets — and that is the design problem to solve before freezing anything.</p>
|
|
112
|
+
<p>Event location did not have that problem, which is why it went first: it needs states at epochs it chooses, and the pull protocol gives it exactly that without widening what a module may reach.</p>
|
|
113
|
+
<h2 id="what-ratification-requires"><a class="anchor" href="#what-ratification-requires" aria-hidden="true">#</a>What ratification requires</h2>
|
|
114
|
+
<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>
|
|
115
|
+
<ul>
|
|
116
|
+
<li>A single <code>.fbs</code> schema as the source of the wire layout. <strong>(event location: done)</strong></li>
|
|
117
|
+
<li>A generated ABI header with size and offset locks, plus a drift gate that fails when the schema and the committed header disagree. <strong>(done)</strong></li>
|
|
118
|
+
<li>Declared units and frames per field, named sentinels, and named negative error codes. <strong>(done)</strong></li>
|
|
119
|
+
<li>A conformance kit carrying its own negative control, and a reference module. <strong>(open — this is what holds event location at Experimental)</strong></li>
|
|
120
|
+
<li>A stated tri-runtime parity envelope. <strong>(done, and measured)</strong></li>
|
|
121
|
+
<li>Exactly one generic consumer port. <strong>(done: the pull loop)</strong></li>
|
|
122
|
+
</ul>
|
|
123
|
+
<p>Outside event location, do not build against this family. If your work falls in that 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>
|
|
124
|
+
<section class="playground" id="playground-slot" data-family="analytics" data-playground="pending" aria-labelledby="playground-title">
|
|
125
|
+
<h2 id="playground-title">Playground</h2>
|
|
126
|
+
<p>
|
|
127
|
+
An in-browser build-and-run playground for the <code>analytics</code> harness
|
|
128
|
+
mounts here. It is being built under the graph task
|
|
129
|
+
<code>sdk-playground-emception</code>; this slot is its reserved mount
|
|
130
|
+
point and is intentionally empty until that lands.
|
|
131
|
+
</p>
|
|
132
|
+
</section>
|
|
133
|
+
<p class="doc-footer">
|
|
134
|
+
Source of truth for this page:
|
|
135
|
+
<code>docs/families/analytics.md</code>. Regenerate with
|
|
136
|
+
<code>npm run build:docs</code>.
|
|
137
|
+
</p>
|
|
138
|
+
</main>
|
|
139
|
+
<nav class="rail" aria-label="On this page"><h2>On this page</h2><ul><li><a class="depth-2" href="#scope">Scope</a></li>
|
|
140
|
+
<li><a class="depth-2" href="#event-location-the-shaped-part">Event location — the shaped part</a></li>
|
|
141
|
+
<li><a class="depth-2" href="#what-exists-today">What exists today</a></li>
|
|
142
|
+
<li><a class="depth-2" href="#the-rest-of-the-family-and-why-it-is-still-planned">The rest of the family, and why it is still Planned</a></li>
|
|
143
|
+
<li><a class="depth-2" href="#what-ratification-requires">What ratification requires</a></li></ul></nav>
|
|
144
|
+
</div>
|
|
145
|
+
<section id="stack" class="section" aria-labelledby="stack-title">
|
|
146
|
+
<div class="section-head">
|
|
147
|
+
<p class="eyebrow">SDN Stack</p>
|
|
148
|
+
<h2 id="stack-title">Connected sites</h2>
|
|
149
|
+
</div>
|
|
150
|
+
<div class="link-list">
|
|
151
|
+
<a href="https://spacedatastandards.org/">
|
|
152
|
+
<span>Standards</span>
|
|
153
|
+
<small>Canonical schemas, record contracts, and generated bindings.</small>
|
|
154
|
+
</a>
|
|
155
|
+
<a href="https://digitalarsenal.github.io/flatbuffers/">
|
|
156
|
+
<span>FlatBuffers</span>
|
|
157
|
+
<small>Binary encoding, schema tooling, and runtime documentation.</small>
|
|
158
|
+
</a>
|
|
159
|
+
<a href="https://digitalarsenal.github.io/flatsql/">
|
|
160
|
+
<span>FlatSQL</span>
|
|
161
|
+
<small>SQL-style queries over FlatBuffer-backed datasets and streams.</small>
|
|
162
|
+
</a>
|
|
163
|
+
<a href="https://spacedatanetwork.org/">
|
|
164
|
+
<span>SDN</span>
|
|
165
|
+
<small>Distributed publication, discovery, delivery, and marketplace infrastructure.</small>
|
|
166
|
+
</a>
|
|
167
|
+
<a href="https://digitalarsenal.github.io/space-data-module-sdk/" class="active">
|
|
168
|
+
<span>Module SDK</span>
|
|
169
|
+
<small>WASM module packaging, validation, and host compatibility tooling.</small>
|
|
170
|
+
</a>
|
|
171
|
+
</div>
|
|
172
|
+
</section>
|
|
173
|
+
<footer class="site-footer">
|
|
174
|
+
Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
|
|
175
|
+
source in <code>docs/</code>; edit the Markdown, never the HTML.
|
|
176
|
+
</footer>
|
|
177
|
+
</body>
|
|
178
|
+
</html>
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Analytics
|
|
2
|
+
|
|
3
|
+
**Status: EXPERIMENTAL.** One sub-harness of this family — **event location** —
|
|
4
|
+
has a ratified `.fbs` source, a generated header with a drift gate, named error
|
|
5
|
+
codes, a shared runner and a measured tri-runtime parity envelope. It has no
|
|
6
|
+
conformance kit and no reference module, so it is not `Shipped` and a
|
|
7
|
+
commercial module should not be sold against it. The rest of the family
|
|
8
|
+
(coverage quality, revisit statistics, availability, link-margin distributions)
|
|
9
|
+
remains **Planned** and this page states its scope and nothing more.
|
|
10
|
+
|
|
11
|
+
This is a sub-harness, not a twentieth family. The nineteen-family taxonomy is
|
|
12
|
+
owner-ratified; event location is analytics because it derives a figure over a
|
|
13
|
+
scenario rather than advancing one.
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
Derived figures of merit computed over a scenario: coverage quality, revisit
|
|
18
|
+
statistics, availability, link margin distributions, and other aggregate
|
|
19
|
+
measures that summarize a run rather than advance it — plus **event location**,
|
|
20
|
+
which reduces a scenario to the epochs at which something became true.
|
|
21
|
+
|
|
22
|
+
## Event location — the shaped part
|
|
23
|
+
|
|
24
|
+
**Read [the event locator ABI](../events-abi.html).** Everything below is a
|
|
25
|
+
summary of it.
|
|
26
|
+
|
|
27
|
+
Eclipse (umbra / penumbra / antumbra, any number of occulting bodies), station
|
|
28
|
+
contact with masks and light time, sensor-FOV intrusion, apsides, node
|
|
29
|
+
crossings and a propagate-to-condition stop are ONE ABI: a vector of scalar
|
|
30
|
+
event functions `g_i(t)` whose sign changes are refined to roots.
|
|
31
|
+
|
|
32
|
+
A locator writes `plugin_event_eval` — the `g` vector — plus its description
|
|
33
|
+
and its configuration decoder. The bracketing scan, the root refinement, the
|
|
34
|
+
direction filtering, the occurrence counting and the epoch ordering come from
|
|
35
|
+
`include/orbpro/orbpro_event_runner.h`, unchanged, in every locator. "Adding a
|
|
36
|
+
new locator requires no change to the runner" is therefore structural: there is
|
|
37
|
+
no runner to change, only a `g` to write.
|
|
38
|
+
|
|
39
|
+
Two decisions are worth reading the contract for:
|
|
40
|
+
|
|
41
|
+
- **The state source is pulled, never imported.** `plugin_event_next` reports
|
|
42
|
+
the epochs the locator wants; the consumer propagates them through whatever
|
|
43
|
+
module is wired to the port; `plugin_event_supply` feeds the states back.
|
|
44
|
+
The propagator stays a port, no new host capability is needed, and the three
|
|
45
|
+
runtimes are byte-identical because the consumer decides nothing.
|
|
46
|
+
- **Epochs are `(jd_day, seconds)` pairs.** A Julian date in one `float64`
|
|
47
|
+
resolves to 4.02e-5 s, so a single-double JD cannot carry a stop epoch to
|
|
48
|
+
1e-6 s. The split pair resolves 1.5e-11 s — and because
|
|
49
|
+
`OrbProStateVector.epoch` is a frozen single `float64`, the state source's
|
|
50
|
+
own resolution is what bounds the answer. It is DECLARED, the runner clamps
|
|
51
|
+
to it, and a clamped root is reported `EPOCH_RESOLUTION_LIMITED` rather than
|
|
52
|
+
claiming a precision nothing measured.
|
|
53
|
+
|
|
54
|
+
## What exists today
|
|
55
|
+
|
|
56
|
+
- `schemas/orbpro/Events.fbs` — the single source of the wire layout.
|
|
57
|
+
- `include/orbpro/orbpro_events_abi.h` — generated, with size and offset locks;
|
|
58
|
+
`node scripts/check-events-abi.mjs` fails when the two disagree.
|
|
59
|
+
- `include/orbpro/orbpro_event_runner.h` — the shared runner. Hand-written
|
|
60
|
+
because it is algorithm, not layout, and there is exactly one copy of it.
|
|
61
|
+
- `src/generated/orbpro/events-abi.{ts,js}` — byte-offset bindings, so no
|
|
62
|
+
JavaScript consumer hard-codes an offset.
|
|
63
|
+
- `test/events-abi.test.js` — the both-harness proof: one source
|
|
64
|
+
file compiled natively and to `wasm32-wasip1-threads`, diffed as raw
|
|
65
|
+
IEEE-754 bit patterns. Identical. Roots reproduce the closed form to
|
|
66
|
+
7.3e-12 s under Brent, are independent of the scan step at 60 / 137 / 300 s,
|
|
67
|
+
survive time reversal, and agree across all three bracketing methods.
|
|
68
|
+
|
|
69
|
+
Nothing else in this family is implemented. Matches for the word "analytics"
|
|
70
|
+
elsewhere in the stack refer to product and interface analytics work, not to a
|
|
71
|
+
plugin family.
|
|
72
|
+
|
|
73
|
+
## The rest of the family, and why it is still Planned
|
|
74
|
+
|
|
75
|
+
An analytics harness is mostly a question of what it is allowed to READ. A
|
|
76
|
+
figure of merit computed over a whole scenario needs broad read access to
|
|
77
|
+
results, which is the opposite of the narrow, per-call inputs every other
|
|
78
|
+
family gets — and that is the design problem to solve before freezing anything.
|
|
79
|
+
|
|
80
|
+
Event location did not have that problem, which is why it went first: it needs
|
|
81
|
+
states at epochs it chooses, and the pull protocol gives it exactly that
|
|
82
|
+
without widening what a module may reach.
|
|
83
|
+
|
|
84
|
+
## What ratification requires
|
|
85
|
+
|
|
86
|
+
A family reaches Designed when an ABI has been drafted against a real consumer,
|
|
87
|
+
and Shipped only when all of the following exist:
|
|
88
|
+
|
|
89
|
+
- A single `.fbs` schema as the source of the wire layout. **(event location:
|
|
90
|
+
done)**
|
|
91
|
+
- A generated ABI header with size and offset locks, plus a drift gate that
|
|
92
|
+
fails when the schema and the committed header disagree. **(done)**
|
|
93
|
+
- Declared units and frames per field, named sentinels, and named negative error
|
|
94
|
+
codes. **(done)**
|
|
95
|
+
- A conformance kit carrying its own negative control, and a reference module.
|
|
96
|
+
**(open — this is what holds event location at Experimental)**
|
|
97
|
+
- A stated tri-runtime parity envelope. **(done, and measured)**
|
|
98
|
+
- Exactly one generic consumer port. **(done: the pull loop)**
|
|
99
|
+
|
|
100
|
+
Outside event location, do not build against this family. If your work falls in
|
|
101
|
+
that scope and cannot wait, build a records-in, records-out module through the
|
|
102
|
+
[BYO-wasm quickstart](../byo-wasm-quickstart.html) — that path needs no harness
|
|
103
|
+
and is available now — and expect to migrate to the family ABI when it is
|
|
104
|
+
ratified.
|
|
@@ -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>Attitude — 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" aria-current="page"><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"><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>Attitude</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>Produce body orientation over time, independent of translational state: attitude profiles, pointing modes, slew dynamics, and the quaternion or direction-cosine output a renderer, a sensor model or a signature model consumes.</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 dedicated. Attitude appears only as a topic in the foundational-math scope of a general-purpose module family, not as a family with its own contract.</p>
|
|
93
|
+
<p>The frame discipline here is stricter than in most families: an attitude output is meaningless without naming both the body frame and the reference frame it is expressed against, and any freeze will have to make both mandatory fields rather than documented conventions.</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="attitude" 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>attitude</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/attitude.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
|
+
# Attitude
|
|
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
|
+
Produce body orientation over time, independent of translational state: attitude profiles, pointing modes, slew dynamics, and the quaternion or direction-cosine output a renderer, a sensor model or a signature model consumes.
|
|
11
|
+
|
|
12
|
+
## What exists today
|
|
13
|
+
|
|
14
|
+
Nothing dedicated. Attitude appears only as a topic in the foundational-math scope of a general-purpose module family, not as a family with its own contract.
|
|
15
|
+
|
|
16
|
+
The frame discipline here is stricter than in most families: an attitude output is meaningless without naming both the body frame and the reference frame it is expressed against, and any freeze will have to make both mandatory fields rather than documented conventions.
|
|
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.
|