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,296 @@
|
|
|
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="This SDK now separates protocol identity from deployment-time routing." />
|
|
7
|
+
<title>Protocol installation — 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="./families/propagator.html"><span>Propagator</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
38
|
+
<li><a href="./families/maneuver.html"><span>Maneuver</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
39
|
+
<li><a href="./families/propulsion.html"><span>Propulsion</span><span class="tag tag-planned">planned</span></a></li>
|
|
40
|
+
<li><a href="./families/attitude.html"><span>Attitude</span><span class="tag tag-planned">planned</span></a></li>
|
|
41
|
+
<li><a href="./families/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="./families/rf.html"><span>RF</span><span class="tag tag-designed">designed</span></a></li>
|
|
45
|
+
<li><a href="./families/sensor.html"><span>Sensor</span><span class="tag tag-planned">planned</span></a></li>
|
|
46
|
+
<li><a href="./families/signature.html"><span>Signature</span><span class="tag tag-planned">planned</span></a></li>
|
|
47
|
+
<li><a href="./families/environment.html"><span>Environment</span><span class="tag tag-planned">planned</span></a></li>
|
|
48
|
+
<li><a href="./families/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="./families/breakup.html"><span>Breakup</span><span class="tag tag-planned">planned</span></a></li>
|
|
52
|
+
<li><a href="./families/reentry.html"><span>Reentry</span><span class="tag tag-planned">planned</span></a></li>
|
|
53
|
+
<li><a href="./families/conjunction.html"><span>Conjunction</span><span class="tag tag-designed">designed</span></a></li>
|
|
54
|
+
<li><a href="./families/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="./families/estimation.html"><span>Estimation</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
58
|
+
<li><a href="./families/data-source.html"><span>Data source</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
59
|
+
<li><a href="./families/analytics.html"><span>Analytics</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
60
|
+
<li><a href="./families/scheduler.html"><span>Scheduler</span><span class="tag tag-planned">planned</span></a></li>
|
|
61
|
+
<li><a href="./families/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" aria-current="page"><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
|
+
<h1>Protocol installation</h1>
|
|
86
|
+
<p>This SDK now separates protocol identity from deployment-time routing.</p>
|
|
87
|
+
<p>That split matters because module artifacts are portable, compiled, and signable, while deployment endpoints are environment-specific.</p>
|
|
88
|
+
<h2 id="canonical-manifest"><a class="anchor" href="#canonical-manifest" aria-hidden="true">#</a>Canonical Manifest</h2>
|
|
89
|
+
<p>Hosted protocol declarations belong in <code>manifest.protocols</code>.</p>
|
|
90
|
+
<p>Those declarations describe what a module can host or dial:</p>
|
|
91
|
+
<ul>
|
|
92
|
+
<li><code>protocolId</code></li>
|
|
93
|
+
<li><code>methodId</code></li>
|
|
94
|
+
<li><code>inputPortId</code></li>
|
|
95
|
+
<li><code>outputPortId</code></li>
|
|
96
|
+
<li><code>wireId</code></li>
|
|
97
|
+
<li><code>transportKind</code></li>
|
|
98
|
+
<li><code>role</code></li>
|
|
99
|
+
<li><code>specUri</code></li>
|
|
100
|
+
<li><code>autoInstall</code></li>
|
|
101
|
+
<li><code>advertise</code></li>
|
|
102
|
+
<li><code>discoveryKey</code></li>
|
|
103
|
+
<li><code>defaultPort</code></li>
|
|
104
|
+
<li><code>requireSecureTransport</code></li>
|
|
105
|
+
</ul>
|
|
106
|
+
<p>These fields are embedded in the compiled <code>PluginManifest.fbs</code> bytes and are part of the canonical module contract.</p>
|
|
107
|
+
<h2 id="deployment-metadata"><a class="anchor" href="#deployment-metadata" aria-hidden="true">#</a>Deployment Metadata</h2>
|
|
108
|
+
<p>Concrete deployment routing does <strong>not</strong> belong in the canonical manifest.</p>
|
|
109
|
+
<p>Examples:</p>
|
|
110
|
+
<ul>
|
|
111
|
+
<li>concrete multiaddrs</li>
|
|
112
|
+
<li>resolved listen ports</li>
|
|
113
|
+
<li>selected peer IDs</li>
|
|
114
|
+
<li>deployment URLs</li>
|
|
115
|
+
<li>interface-keyed input bindings</li>
|
|
116
|
+
<li>scheduler bindings</li>
|
|
117
|
+
<li>hosted service bindings</li>
|
|
118
|
+
<li>request-time auth policy</li>
|
|
119
|
+
<li>publication, pinning, retention, and archive policy</li>
|
|
120
|
+
</ul>
|
|
121
|
+
<p>Those values vary per environment and should not change the identity of a signed <code>.wasm</code> artifact.</p>
|
|
122
|
+
<p>Instead, attach them as a deployment-plan payload inside the bundle <code>MBL</code> record carried by the appended <code>REC</code> trailer.</p>
|
|
123
|
+
<p>Deployment plans should use <code>protocolId</code> as the required identifier for a resolved protocol installation. <code>wireId</code> is optional deployment metadata for legacy transports that still expose it, not a required routing key.</p>
|
|
124
|
+
<p>Deployment input and publication bindings should reference <code>manifest.externalInterfaces[].interfaceId</code>. That keeps deployment routing tied to the declared module contract instead of transport-specific <code>topic</code> or <code>wireId</code> hints.</p>
|
|
125
|
+
<p>The standard bundle entry is:</p>
|
|
126
|
+
<ul>
|
|
127
|
+
<li><code>entryId</code>: <code>deployment-plan</code></li>
|
|
128
|
+
<li><code>sectionName</code>: <code>sds.deployment</code></li>
|
|
129
|
+
<li><code>payloadEncoding</code>: <code>json-utf8</code></li>
|
|
130
|
+
<li><code>mediaType</code>: <code>application/vnd.space-data.module.deployment+json</code></li>
|
|
131
|
+
</ul>
|
|
132
|
+
<h2 id="public-helpers"><a class="anchor" href="#public-helpers" aria-hidden="true">#</a>Public Helpers</h2>
|
|
133
|
+
<p>Use <code>space-data-module-sdk/deployment</code> to work with that payload:</p>
|
|
134
|
+
<ul>
|
|
135
|
+
<li><code>normalizeDeploymentPlan(...)</code></li>
|
|
136
|
+
<li><code>validateDeploymentPlan(...)</code></li>
|
|
137
|
+
<li><code>createDeploymentPlanBundleEntry(...)</code></li>
|
|
138
|
+
<li><code>findDeploymentPlanEntry(...)</code></li>
|
|
139
|
+
<li><code>readDeploymentPlanFromBundle(...)</code></li>
|
|
140
|
+
</ul>
|
|
141
|
+
<h2 id="example-manifest-protocol"><a class="anchor" href="#example-manifest-protocol" aria-hidden="true">#</a>Example Manifest Protocol</h2>
|
|
142
|
+
<div class="codeblock"><div class="codeblock-head">json</div><pre><code>{
|
|
143
|
+
"protocols": [
|
|
144
|
+
{
|
|
145
|
+
"protocolId": "sgp4-stream",
|
|
146
|
+
"methodId": "propagate",
|
|
147
|
+
"inputPortId": "request",
|
|
148
|
+
"outputPortId": "state",
|
|
149
|
+
"wireId": "/sdn/sgp4/1.0.0",
|
|
150
|
+
"transportKind": "libp2p",
|
|
151
|
+
"role": "handle",
|
|
152
|
+
"specUri": "https://spacedatastandards.org/#/schemas/PNM",
|
|
153
|
+
"autoInstall": true,
|
|
154
|
+
"advertise": true,
|
|
155
|
+
"discoveryKey": "sgp4-stream",
|
|
156
|
+
"defaultPort": 443,
|
|
157
|
+
"requireSecureTransport": true
|
|
158
|
+
}
|
|
159
|
+
]
|
|
160
|
+
}</code></pre></div>
|
|
161
|
+
<h2 id="example-deployment-plan"><a class="anchor" href="#example-deployment-plan" aria-hidden="true">#</a>Example Deployment Plan</h2>
|
|
162
|
+
<div class="codeblock"><div class="codeblock-head">json</div><pre><code>{
|
|
163
|
+
"formatVersion": 1,
|
|
164
|
+
"pluginId": "com.example.sgp4",
|
|
165
|
+
"version": "1.2.3",
|
|
166
|
+
"protocolInstallations": [
|
|
167
|
+
{
|
|
168
|
+
"protocolId": "sgp4-stream",
|
|
169
|
+
"transportKind": "libp2p",
|
|
170
|
+
"role": "handle",
|
|
171
|
+
"peerId": "12D3KooW...",
|
|
172
|
+
"listenMultiaddrs": [
|
|
173
|
+
"/ip4/127.0.0.1/tcp/14080/ws/p2p/12D3KooW..."
|
|
174
|
+
],
|
|
175
|
+
"advertisedMultiaddrs": [
|
|
176
|
+
"/dns4/sgp4.example.test/tcp/443/wss/p2p/12D3KooW..."
|
|
177
|
+
],
|
|
178
|
+
"nodeInfoUrl": "https://sgp4.example.test/api/node/info"
|
|
179
|
+
}
|
|
180
|
+
],
|
|
181
|
+
"inputBindings": [
|
|
182
|
+
{
|
|
183
|
+
"bindingId": "catalog-feed",
|
|
184
|
+
"interfaceId": "catalog-pubsub",
|
|
185
|
+
"targetMethodId": "propagate",
|
|
186
|
+
"targetInputPortId": "request",
|
|
187
|
+
"sourceKind": "pubsub"
|
|
188
|
+
}
|
|
189
|
+
],
|
|
190
|
+
"scheduleBindings": [
|
|
191
|
+
{
|
|
192
|
+
"scheduleId": "poll-upstream",
|
|
193
|
+
"bindingMode": "local",
|
|
194
|
+
"targetMethodId": "propagate",
|
|
195
|
+
"targetInputPortId": "request",
|
|
196
|
+
"scheduleKind": "cron",
|
|
197
|
+
"cron": "*/15 * * * *"
|
|
198
|
+
}
|
|
199
|
+
],
|
|
200
|
+
"serviceBindings": [
|
|
201
|
+
{
|
|
202
|
+
"serviceId": "https-query",
|
|
203
|
+
"bindingMode": "delegated",
|
|
204
|
+
"serviceKind": "http-server",
|
|
205
|
+
"routePath": "/api/sgp4",
|
|
206
|
+
"method": "GET",
|
|
207
|
+
"remoteUrl": "https://gateway.example.test/api/sgp4",
|
|
208
|
+
"authPolicyId": "approved-keys"
|
|
209
|
+
}
|
|
210
|
+
],
|
|
211
|
+
"authPolicies": [
|
|
212
|
+
{
|
|
213
|
+
"policyId": "approved-keys",
|
|
214
|
+
"bindingMode": "delegated",
|
|
215
|
+
"targetKind": "service",
|
|
216
|
+
"targetId": "https-query",
|
|
217
|
+
"walletProfileId": "orbpro-default",
|
|
218
|
+
"trustMapId": "approved-operators",
|
|
219
|
+
"allowServerKeys": ["ed25519:..."]
|
|
220
|
+
}
|
|
221
|
+
],
|
|
222
|
+
"publicationBindings": [
|
|
223
|
+
{
|
|
224
|
+
"publicationId": "state-catalog",
|
|
225
|
+
"interfaceId": "state-catalog-pubsub",
|
|
226
|
+
"bindingMode": "local",
|
|
227
|
+
"sourceKind": "method-output",
|
|
228
|
+
"sourceMethodId": "propagate",
|
|
229
|
+
"sourceOutputPortId": "state",
|
|
230
|
+
"schemaName": "CAT.fbs",
|
|
231
|
+
"emitPnm": true,
|
|
232
|
+
"emitFlatbufferArchive": true,
|
|
233
|
+
"archivePath": "/data/catalog/cat.bin",
|
|
234
|
+
"queryInterfaceId": "state-query-api",
|
|
235
|
+
"recordRangeStartField": "startIndex",
|
|
236
|
+
"recordRangeStopField": "stopIndex"
|
|
237
|
+
}
|
|
238
|
+
]
|
|
239
|
+
}</code></pre></div>
|
|
240
|
+
<h2 id="identity-rules"><a class="anchor" href="#identity-rules" aria-hidden="true">#</a>Identity Rules</h2>
|
|
241
|
+
<ul>
|
|
242
|
+
<li><code>wireId</code> identifies the network protocol.</li>
|
|
243
|
+
<li><code>specUri</code> identifies the message or schema contract.</li>
|
|
244
|
+
<li>multiaddrs identify one deployment instance of that protocol.</li>
|
|
245
|
+
<li><code>interfaceId</code> identifies the declared module boundary used by deployment input/publication bindings.</li>
|
|
246
|
+
<li>deployment plans should resolve installed protocol surfaces by <code>protocolId</code>; include <code>wireId</code> only when a host integration still needs that legacy hint.</li>
|
|
247
|
+
</ul>
|
|
248
|
+
<p>Do not treat those as interchangeable.</p>
|
|
249
|
+
|
|
250
|
+
<p class="doc-footer">
|
|
251
|
+
Source of truth for this page:
|
|
252
|
+
<code>docs/protocol-installation.md</code>. Regenerate with
|
|
253
|
+
<code>npm run build:docs</code>.
|
|
254
|
+
</p>
|
|
255
|
+
</main>
|
|
256
|
+
<nav class="rail" aria-label="On this page"><h2>On this page</h2><ul><li><a class="depth-2" href="#canonical-manifest">Canonical Manifest</a></li>
|
|
257
|
+
<li><a class="depth-2" href="#deployment-metadata">Deployment Metadata</a></li>
|
|
258
|
+
<li><a class="depth-2" href="#public-helpers">Public Helpers</a></li>
|
|
259
|
+
<li><a class="depth-2" href="#example-manifest-protocol">Example Manifest Protocol</a></li>
|
|
260
|
+
<li><a class="depth-2" href="#example-deployment-plan">Example Deployment Plan</a></li>
|
|
261
|
+
<li><a class="depth-2" href="#identity-rules">Identity Rules</a></li></ul></nav>
|
|
262
|
+
</div>
|
|
263
|
+
<section id="stack" class="section" aria-labelledby="stack-title">
|
|
264
|
+
<div class="section-head">
|
|
265
|
+
<p class="eyebrow">SDN Stack</p>
|
|
266
|
+
<h2 id="stack-title">Connected sites</h2>
|
|
267
|
+
</div>
|
|
268
|
+
<div class="link-list">
|
|
269
|
+
<a href="https://spacedatastandards.org/">
|
|
270
|
+
<span>Standards</span>
|
|
271
|
+
<small>Canonical schemas, record contracts, and generated bindings.</small>
|
|
272
|
+
</a>
|
|
273
|
+
<a href="https://digitalarsenal.github.io/flatbuffers/">
|
|
274
|
+
<span>FlatBuffers</span>
|
|
275
|
+
<small>Binary encoding, schema tooling, and runtime documentation.</small>
|
|
276
|
+
</a>
|
|
277
|
+
<a href="https://digitalarsenal.github.io/flatsql/">
|
|
278
|
+
<span>FlatSQL</span>
|
|
279
|
+
<small>SQL-style queries over FlatBuffer-backed datasets and streams.</small>
|
|
280
|
+
</a>
|
|
281
|
+
<a href="https://spacedatanetwork.org/">
|
|
282
|
+
<span>SDN</span>
|
|
283
|
+
<small>Distributed publication, discovery, delivery, and marketplace infrastructure.</small>
|
|
284
|
+
</a>
|
|
285
|
+
<a href="https://digitalarsenal.github.io/space-data-module-sdk/" class="active">
|
|
286
|
+
<span>Module SDK</span>
|
|
287
|
+
<small>WASM module packaging, validation, and host compatibility tooling.</small>
|
|
288
|
+
</a>
|
|
289
|
+
</div>
|
|
290
|
+
</section>
|
|
291
|
+
<footer class="site-footer">
|
|
292
|
+
Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
|
|
293
|
+
source in <code>docs/</code>; edit the Markdown, never the HTML.
|
|
294
|
+
</footer>
|
|
295
|
+
</body>
|
|
296
|
+
</html>
|
|
@@ -0,0 +1,158 @@
|
|
|
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="The last step of the integrator path: turn a signed artifact into something a" />
|
|
7
|
+
<title>Publication and listing — 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" aria-current="page"><span>Publication and listing</span></a></li>
|
|
35
|
+
</ul>
|
|
36
|
+
<h2>Dynamics</h2><ul>
|
|
37
|
+
<li><a href="./families/propagator.html"><span>Propagator</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
38
|
+
<li><a href="./families/maneuver.html"><span>Maneuver</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
39
|
+
<li><a href="./families/propulsion.html"><span>Propulsion</span><span class="tag tag-planned">planned</span></a></li>
|
|
40
|
+
<li><a href="./families/attitude.html"><span>Attitude</span><span class="tag tag-planned">planned</span></a></li>
|
|
41
|
+
<li><a href="./families/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="./families/rf.html"><span>RF</span><span class="tag tag-designed">designed</span></a></li>
|
|
45
|
+
<li><a href="./families/sensor.html"><span>Sensor</span><span class="tag tag-planned">planned</span></a></li>
|
|
46
|
+
<li><a href="./families/signature.html"><span>Signature</span><span class="tag tag-planned">planned</span></a></li>
|
|
47
|
+
<li><a href="./families/environment.html"><span>Environment</span><span class="tag tag-planned">planned</span></a></li>
|
|
48
|
+
<li><a href="./families/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="./families/breakup.html"><span>Breakup</span><span class="tag tag-planned">planned</span></a></li>
|
|
52
|
+
<li><a href="./families/reentry.html"><span>Reentry</span><span class="tag tag-planned">planned</span></a></li>
|
|
53
|
+
<li><a href="./families/conjunction.html"><span>Conjunction</span><span class="tag tag-designed">designed</span></a></li>
|
|
54
|
+
<li><a href="./families/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="./families/estimation.html"><span>Estimation</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
58
|
+
<li><a href="./families/data-source.html"><span>Data source</span><span class="tag tag-shipped">shipped</span></a></li>
|
|
59
|
+
<li><a href="./families/analytics.html"><span>Analytics</span><span class="tag tag-experimental">experimental</span></a></li>
|
|
60
|
+
<li><a href="./families/scheduler.html"><span>Scheduler</span><span class="tag tag-planned">planned</span></a></li>
|
|
61
|
+
<li><a href="./families/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
|
+
<h1>Publication and listing</h1>
|
|
86
|
+
<p>The last step of the integrator path: turn a signed artifact into something a consumer can discover, fetch and load. Part of this is implemented and part of it is still being built, and this page separates the two explicitly.</p>
|
|
87
|
+
<h2 id="what-is-implemented-today"><a class="anchor" href="#what-is-implemented-today" aria-hidden="true">#</a>What is implemented today</h2>
|
|
88
|
+
<p><strong>The published artifact layout.</strong> A protected artifact carries its records in a trailer:</p>
|
|
89
|
+
<div class="codeblock"><pre><code>protected-payload-bytes || REC-flatbuffer-bytes || uint32le(REC length) || "$REC"</code></pre></div>
|
|
90
|
+
<p><code>REC</code>, <code>MBL</code>, <code>PNM</code> and <code>ENC</code> are Space Data Standards FlatBuffer record types. The SDK consumes the generated message classes; the schemas are ratified at <code>spacedatastandards.org</code>. The full contract — which record carries the manifest, which carries the bundle metadata, which carries the publication notice, and which carries the encryption envelope — is the <a href="./module-publication-standard.html">module publication standard</a>.</p>
|
|
91
|
+
<p><strong>The artifact primitives.</strong> <code>protect</code>, <code>sign</code> and <code>verify</code> are real commands with real flags. See <a href="./protect-and-sign.html">Protect and sign</a>.</p>
|
|
92
|
+
<p><strong>Post-publication loadability is gated.</strong> The tri-runtime parity gate carries a fixture for the <em>published</em> form of a module — the same artifact after its signature and manifest records have been appended as a trailing custom section — so the record-stripping and instantiation path is exercised by the gate, not assumed. See the <a href="./tri-runtime-parity-gate.html">parity gate</a>.</p>
|
|
93
|
+
<p><strong>Package distribution.</strong> The publication standard also covers delivery through conventional package ecosystems (npm, PyPI, Maven Central, NuGet, Go modules, crates.io, Swift Package Manager) for the language bindings that accompany a module.</p>
|
|
94
|
+
<h2 id="what-is-still-being-built"><a class="anchor" href="#what-is-still-being-built" aria-hidden="true">#</a>What is still being built</h2>
|
|
95
|
+
<p>These are checked absences in the SDK today, not roadmap decoration:</p>
|
|
96
|
+
<ul>
|
|
97
|
+
<li><strong>No listing-submission command.</strong> There is no <code>publish</code>, <code>submit</code> or <code>list</code> subcommand. The CLI offers artifact-level primitives only.</li>
|
|
98
|
+
<li><strong>No storefront or marketplace workflow in this repository.</strong> A module marketplace is a program in the wider stack; no listing code lives here.</li>
|
|
99
|
+
<li><strong>No manifest injection for foreign-compiled binaries.</strong> A BYO vendor's artifact cannot yet be stamped with a manifest by a tool. See the <a href="./byo-wasm-quickstart.html">BYO-wasm quickstart</a>.</li>
|
|
100
|
+
</ul>
|
|
101
|
+
<h2 id="the-escorted-path-which-works-now"><a class="anchor" href="#the-escorted-path-which-works-now" aria-hidden="true">#</a>The escorted path, which works now</h2>
|
|
102
|
+
<p>Until self-serve submission lands, a vendor can complete the whole path with help:</p>
|
|
103
|
+
<ol>
|
|
104
|
+
<li>The vendor builds <code>module.wasm</code> on the pinned toolchain and supplies the manifest JSON alongside it.</li>
|
|
105
|
+
<li>Conformance and the parity gate are run against the artifact — the vendor can run both themselves and attach the output, or hand over the artifact and have them run.</li>
|
|
106
|
+
<li>The artifact is protected and signed, and <code>verify</code> is run against the published bytes with the intended trusted key set.</li>
|
|
107
|
+
<li>The publication records are attached and the module is listed by hand.</li>
|
|
108
|
+
</ol>
|
|
109
|
+
<p>Nothing in that sequence requires the vendor to have access to a private repository, and every gate in it is a real command whose output is the evidence.</p>
|
|
110
|
+
<h2 id="submission-checklist"><a class="anchor" href="#submission-checklist" aria-hidden="true">#</a>Submission checklist</h2>
|
|
111
|
+
<p>Before handing over an artifact, confirm each of these:</p>
|
|
112
|
+
<div class="table-wrap"><table><thead><tr><th>Check</th><th>Command or evidence</th></tr></thead><tbody><tr><td>Built on the pinned toolchain</td><td>Link flags include <code>-Wl,--shared-memory</code> and <code>-Wl,--max-memory=2147483648</code></td></tr><tr><td>No Emscripten anywhere in the build</td><td>Build log; the parity gate's import classifier will catch it</td></tr><tr><td>Family ABI conformance passes</td><td><code>space-data-module conformance <family> --artifact <path></code></td></tr><tr><td>Tri-runtime parity passes</td><td><code>space-data-module parity --wasm <path> --fixture <path> --lanes browser,wasmedge,docker-wasmedge</code></td></tr><tr><td>Manifest declares family, invoke surface, runtime targets, record types</td><td>The manifest JSON</td></tr><tr><td>Signed with the intended key</td><td><code>space-data-module verify --wasm <path> --trusted <hex> --require-signature</code></td></tr><tr><td>Teardown does not leak</td><td>The conformance leak cycles reach steady state</td></tr></tbody></table></div>
|
|
113
|
+
|
|
114
|
+
<p class="doc-footer">
|
|
115
|
+
Source of truth for this page:
|
|
116
|
+
<code>docs/publication-submission.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="#what-is-implemented-today">What is implemented today</a></li>
|
|
121
|
+
<li><a class="depth-2" href="#what-is-still-being-built">What is still being built</a></li>
|
|
122
|
+
<li><a class="depth-2" href="#the-escorted-path-which-works-now">The escorted path, which works now</a></li>
|
|
123
|
+
<li><a class="depth-2" href="#submission-checklist">Submission checklist</a></li></ul></nav>
|
|
124
|
+
</div>
|
|
125
|
+
<section id="stack" class="section" aria-labelledby="stack-title">
|
|
126
|
+
<div class="section-head">
|
|
127
|
+
<p class="eyebrow">SDN Stack</p>
|
|
128
|
+
<h2 id="stack-title">Connected sites</h2>
|
|
129
|
+
</div>
|
|
130
|
+
<div class="link-list">
|
|
131
|
+
<a href="https://spacedatastandards.org/">
|
|
132
|
+
<span>Standards</span>
|
|
133
|
+
<small>Canonical schemas, record contracts, and generated bindings.</small>
|
|
134
|
+
</a>
|
|
135
|
+
<a href="https://digitalarsenal.github.io/flatbuffers/">
|
|
136
|
+
<span>FlatBuffers</span>
|
|
137
|
+
<small>Binary encoding, schema tooling, and runtime documentation.</small>
|
|
138
|
+
</a>
|
|
139
|
+
<a href="https://digitalarsenal.github.io/flatsql/">
|
|
140
|
+
<span>FlatSQL</span>
|
|
141
|
+
<small>SQL-style queries over FlatBuffer-backed datasets and streams.</small>
|
|
142
|
+
</a>
|
|
143
|
+
<a href="https://spacedatanetwork.org/">
|
|
144
|
+
<span>SDN</span>
|
|
145
|
+
<small>Distributed publication, discovery, delivery, and marketplace infrastructure.</small>
|
|
146
|
+
</a>
|
|
147
|
+
<a href="https://digitalarsenal.github.io/space-data-module-sdk/" class="active">
|
|
148
|
+
<span>Module SDK</span>
|
|
149
|
+
<small>WASM module packaging, validation, and host compatibility tooling.</small>
|
|
150
|
+
</a>
|
|
151
|
+
</div>
|
|
152
|
+
</section>
|
|
153
|
+
<footer class="site-footer">
|
|
154
|
+
Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
|
|
155
|
+
source in <code>docs/</code>; edit the Markdown, never the HTML.
|
|
156
|
+
</footer>
|
|
157
|
+
</body>
|
|
158
|
+
</html>
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Publication and listing
|
|
2
|
+
|
|
3
|
+
The last step of the integrator path: turn a signed artifact into something a
|
|
4
|
+
consumer can discover, fetch and load. Part of this is implemented and part of
|
|
5
|
+
it is still being built, and this page separates the two explicitly.
|
|
6
|
+
|
|
7
|
+
## What is implemented today
|
|
8
|
+
|
|
9
|
+
**The published artifact layout.** A protected artifact carries its records in a
|
|
10
|
+
trailer:
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
protected-payload-bytes || REC-flatbuffer-bytes || uint32le(REC length) || "$REC"
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
`REC`, `MBL`, `PNM` and `ENC` are Space Data Standards FlatBuffer record types.
|
|
17
|
+
The SDK consumes the generated message classes; the schemas are ratified at
|
|
18
|
+
`spacedatastandards.org`. The full contract — which record carries the manifest,
|
|
19
|
+
which carries the bundle metadata, which carries the publication notice, and
|
|
20
|
+
which carries the encryption envelope — is the
|
|
21
|
+
[module publication standard](module-publication-standard.html).
|
|
22
|
+
|
|
23
|
+
**The artifact primitives.** `protect`, `sign` and `verify` are real commands
|
|
24
|
+
with real flags. See [Protect and sign](protect-and-sign.html).
|
|
25
|
+
|
|
26
|
+
**Post-publication loadability is gated.** The tri-runtime parity gate carries a
|
|
27
|
+
fixture for the *published* form of a module — the same artifact after its
|
|
28
|
+
signature and manifest records have been appended as a trailing custom section —
|
|
29
|
+
so the record-stripping and instantiation path is exercised by the gate, not
|
|
30
|
+
assumed. See the [parity gate](tri-runtime-parity-gate.html).
|
|
31
|
+
|
|
32
|
+
**Package distribution.** The publication standard also covers delivery through
|
|
33
|
+
conventional package ecosystems (npm, PyPI, Maven Central, NuGet, Go modules,
|
|
34
|
+
crates.io, Swift Package Manager) for the language bindings that accompany a
|
|
35
|
+
module.
|
|
36
|
+
|
|
37
|
+
## What is still being built
|
|
38
|
+
|
|
39
|
+
These are checked absences in the SDK today, not roadmap decoration:
|
|
40
|
+
|
|
41
|
+
- **No listing-submission command.** There is no `publish`, `submit` or `list`
|
|
42
|
+
subcommand. The CLI offers artifact-level primitives only.
|
|
43
|
+
- **No storefront or marketplace workflow in this repository.** A module
|
|
44
|
+
marketplace is a program in the wider stack; no listing code lives here.
|
|
45
|
+
- **No manifest injection for foreign-compiled binaries.** A BYO vendor's
|
|
46
|
+
artifact cannot yet be stamped with a manifest by a tool. See the
|
|
47
|
+
[BYO-wasm quickstart](byo-wasm-quickstart.html).
|
|
48
|
+
|
|
49
|
+
## The escorted path, which works now
|
|
50
|
+
|
|
51
|
+
Until self-serve submission lands, a vendor can complete the whole path with
|
|
52
|
+
help:
|
|
53
|
+
|
|
54
|
+
1. The vendor builds `module.wasm` on the pinned toolchain and supplies the
|
|
55
|
+
manifest JSON alongside it.
|
|
56
|
+
2. Conformance and the parity gate are run against the artifact — the vendor can
|
|
57
|
+
run both themselves and attach the output, or hand over the artifact and have
|
|
58
|
+
them run.
|
|
59
|
+
3. The artifact is protected and signed, and `verify` is run against the
|
|
60
|
+
published bytes with the intended trusted key set.
|
|
61
|
+
4. The publication records are attached and the module is listed by hand.
|
|
62
|
+
|
|
63
|
+
Nothing in that sequence requires the vendor to have access to a private
|
|
64
|
+
repository, and every gate in it is a real command whose output is the evidence.
|
|
65
|
+
|
|
66
|
+
## Submission checklist
|
|
67
|
+
|
|
68
|
+
Before handing over an artifact, confirm each of these:
|
|
69
|
+
|
|
70
|
+
| Check | Command or evidence |
|
|
71
|
+
| --- | --- |
|
|
72
|
+
| Built on the pinned toolchain | Link flags include `-Wl,--shared-memory` and `-Wl,--max-memory=2147483648` |
|
|
73
|
+
| No Emscripten anywhere in the build | Build log; the parity gate's import classifier will catch it |
|
|
74
|
+
| Family ABI conformance passes | `space-data-module conformance <family> --artifact <path>` |
|
|
75
|
+
| Tri-runtime parity passes | `space-data-module parity --wasm <path> --fixture <path> --lanes browser,wasmedge,docker-wasmedge` |
|
|
76
|
+
| Manifest declares family, invoke surface, runtime targets, record types | The manifest JSON |
|
|
77
|
+
| Signed with the intended key | `space-data-module verify --wasm <path> --trusted <hex> --require-signature` |
|
|
78
|
+
| Teardown does not leak | The conformance leak cycles reach steady state |
|