space-data-module-sdk 0.8.18 → 0.8.20

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.
Files changed (65) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +2 -2
  3. package/docs/assembly.js +190 -0
  4. package/docs/browser-wasmedge-isomorphic.html +6 -1
  5. package/docs/byo-wasm-quickstart.html +6 -1
  6. package/docs/conformance.html +6 -1
  7. package/docs/events-abi.html +6 -1
  8. package/docs/families/analytics.html +7 -2
  9. package/docs/families/attitude.html +7 -2
  10. package/docs/families/behavior.html +7 -2
  11. package/docs/families/breakup.html +7 -2
  12. package/docs/families/conjunction.html +7 -2
  13. package/docs/families/data-source.html +7 -2
  14. package/docs/families/effects.html +7 -2
  15. package/docs/families/environment.html +7 -2
  16. package/docs/families/estimation.html +7 -2
  17. package/docs/families/gnc.html +7 -2
  18. package/docs/families/maneuver.html +7 -2
  19. package/docs/families/obstruction.html +7 -2
  20. package/docs/families/propagator.html +7 -2
  21. package/docs/families/propulsion.html +7 -2
  22. package/docs/families/reentry.html +7 -2
  23. package/docs/families/rf.html +7 -2
  24. package/docs/families/scheduler.html +7 -2
  25. package/docs/families/sensor.html +7 -2
  26. package/docs/families/signature.html +7 -2
  27. package/docs/flatsql-host-contract.html +7 -2
  28. package/docs/flatsql-host-contract.md +2 -2
  29. package/docs/flatsql-streaming-standard.html +6 -1
  30. package/docs/gpu-module-abi.html +6 -1
  31. package/docs/index.html +21 -14
  32. package/docs/isomorphic-pthreads.html +19 -2
  33. package/docs/isomorphic-pthreads.md +59 -1
  34. package/docs/isomorphic-sdn-runtime-plan.html +6 -1
  35. package/docs/language-runtime-matrix.html +6 -1
  36. package/docs/llms.txt +1 -1
  37. package/docs/module-bundle-runtime-plan.html +6 -1
  38. package/docs/module-publication-standard.html +6 -1
  39. package/docs/node-red-default-node-parity.html +6 -1
  40. package/docs/protect-and-sign.html +6 -1
  41. package/docs/protocol-installation.html +6 -1
  42. package/docs/publication-submission.html +6 -1
  43. package/docs/secrets-capability.html +6 -1
  44. package/docs/styles.css +32 -0
  45. package/docs/testing-harness.html +6 -1
  46. package/docs/tri-runtime-parity-gate.html +6 -1
  47. package/docs/tri-runtime-parity.html +6 -1
  48. package/package.json +1 -1
  49. package/src/flow/flowCompiler.js +34 -23
  50. package/src/host/browserModuleHarness.js +39 -35
  51. package/src/host/isomorphicLoader.js +13 -6
  52. package/src/host/wasiShim.js +57 -13
  53. package/src/host/wasiThreadBrowserWorker.mjs +1 -0
  54. package/src/host/wasiThreadHost.js +16 -1
  55. package/src/host/wasiThreadWorker.mjs +2 -1
  56. package/src/host/wasiThreadWorkerRuntime.js +2 -1
  57. package/src/testing/browserModuleHarness.js +2 -0
  58. package/src/testing/buildWasmEdgeRunner.js +147 -4
  59. package/src/testing/docker/wasmedge-parity.Dockerfile +23 -1
  60. package/src/testing/isomorphicHarness.js +5 -0
  61. package/src/testing/native/wasmedge-0.16.4-atomic-wait.patch +111 -0
  62. package/src/testing/native/wasmedge_wasi_threads_runner.c +345 -0
  63. package/src/testing/parityBrowserRunner.js +12 -4
  64. package/src/testing/parityHarness.js +11 -3
  65. package/src/testing/parityLanes.js +29 -5
@@ -156,12 +156,70 @@ actually spawns and runs guest threads.
156
156
  > **Rule:** Do not claim WasmEdge thread support until a real runtime invocation
157
157
  > spawns threads and runs. Compile-time validation (wasi-threads contract +
158
158
  > shared memory + atomics) is necessary but not sufficient; runtime thread-spawn
159
- > verification is owned by the deploy/benchmark node, not by this SDK.
159
+ > verification must exercise the actual host and linked runtime used in deployment.
160
160
 
161
161
  Record any WasmEdge runtime limitation honestly. An artifact that validates here
162
162
  but only compiles — and does not instantiate/spawn threads under the target
163
163
  runtime — must be reported as such.
164
164
 
165
+ ### SDK 0.8.20 command hosts
166
+
167
+ WasmEdge 0.16.4's CLI enables atomics with `--enable-threads` but does not
168
+ provide `wasi.thread-spawn`. For artifacts importing that function, the SDK's
169
+ native parity lane and `createStandaloneHarness("wasmedge", ...)` automatically
170
+ build and cache the C API command runner from
171
+ `src/testing/native/wasmedge_wasi_threads_runner.c`. The runner links against
172
+ WasmEdge **0.16.4**, uses one executor and shared imported memory, and creates a
173
+ fresh module instance for each `wasi_thread_start(tid, arg)`. It limits live
174
+ workers to 32 and cancels the command group on a worker trap. Guest arguments,
175
+ environment, stdin, stdout and stderr use WASI preview1.
176
+
177
+ The automatic build requires Git, CMake, Ninja, and a C/C++ compiler. It builds
178
+ an isolated, cached WasmEdge 0.16.4 runtime with the SDN atomic-wait correction:
179
+ unmodified 0.16.4 can lose a notification between comparing memory and sleeping,
180
+ and does not correctly wake on notification without a memory store. The patch
181
+ also preserves waiter iterators when other waiters register. The installed
182
+ `~/.wasmedge` SDK and CLI are unchanged.
183
+
184
+ Set both `WASMEDGE_INCLUDE_DIR` and `WASMEDGE_LIB_DIR` to supply an operator-built
185
+ runtime with the same correction. An explicit `wasmEdgeRunnerBinary` selects a
186
+ prebuilt command runner. The builder is
187
+ `buildWasmEdgeWasiThreadsRunner` in `src/testing/buildWasmEdgeRunner.js`.
188
+ The Docker parity image builds the same corrected runtime and runner for threaded
189
+ artifacts; modules without `wasi.thread-spawn` keep the ordinary CLI path.
190
+ The Docker runner image includes a source digest in its tag to avoid stale
191
+ runner reuse.
192
+
193
+ Direct-only threaded reactors have no `_start`. For those artifacts the runner
194
+ calls `_initialize`, stages the raw request through `plugin_alloc`, and invokes
195
+ `plugin_invoke_stream`. The parity harness selects the browser direct surface
196
+ automatically as well. This is one request per process; the legacy resident
197
+ runner's framing protocol remains separate. Module-owned external memory regions
198
+ are not materialized by this one-shot transport; outputs containing pointers
199
+ into guest memory are not portable byte-level parity results.
200
+
201
+ The browser command harness runs `_start` exactly once per request, after
202
+ installing stdin. Pthreads share one process input cursor and output buffers,
203
+ as well as argv and environment. Each command owns and terminates its workers.
204
+ The real-browser parity lane runs in an owning worker with a warmed pthread
205
+ pool, enabling blocking `pthread_join` outside the browser's main thread.
206
+ Parity reports include `spawnCount`; requested thread counts alone are not
207
+ evidence of actual spawning.
208
+
209
+ The regression compiles a real pthread guest, validates distinct binary
210
+ requests, and checks command/direct output and actual spawn counts at 1, 2, 4
211
+ and 8 workers through the SDK parity CLI:
212
+
213
+ ```sh
214
+ SPACE_DATA_MODULE_SDK_ENABLE_WASMEDGE_PARITY=1 \
215
+ SPACE_DATA_MODULE_SDK_ENABLE_TRI_RUNTIME_PARITY=1 \
216
+ node --test test/wasi-threads-command.test.js
217
+ ```
218
+
219
+ The old source path `src/testing/browserModuleHarness.js` remains a pure
220
+ compatibility re-export. New browser consumers should use the public
221
+ `space-data-module-sdk/host/browser-module` entry point.
222
+
165
223
  ## 4. Integrators: the browser worker anchor (REQUIRED when you bundle)
166
224
 
167
225
  The browser leg of the wasi-threads host runs each guest pthread on a pooled
@@ -2,10 +2,12 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
+ <script>try{var t=localStorage.getItem("sdn-theme");if(t==="light"||t==="dark")document.documentElement.setAttribute("data-theme",t)}catch(e){}</script>
5
6
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
7
  <meta name="description" content="Run the same signed Space Data modules across browser, server, OrbPro, and" />
7
8
  <title>Isomorphic SDN runtime — Space Data Module SDK</title>
8
9
  <link rel="stylesheet" href="./styles.css" />
10
+ <script src="./assembly.js" defer></script>
9
11
  <!-- SDN_CONSUMER_ASSETS_START -->
10
12
  <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
13
  <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>
@@ -13,6 +15,7 @@
13
15
  <!-- SDN_CONSUMER_ASSETS_END -->
14
16
  </head>
15
17
  <body>
18
+ <canvas id="assembly" aria-hidden="true"></canvas>
16
19
  <a class="skip-link" href="#main">Skip to content</a>
17
20
  <sdn-stack-nav active="module-sdk"></sdn-stack-nav>
18
21
  <header class="site-header">
@@ -22,12 +25,13 @@
22
25
  <a href="./conformance.html">Conformance</a>
23
26
  <a href="https://github.com/DigitalArsenal/space-data-module-sdk">GitHub</a>
24
27
  <a class="stack-button" href="#stack">Stack</a>
28
+ <button class="theme-toggle" type="button" aria-label="Switch between light and dark theme" title="Light or dark theme"><svg class="sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></svg><svg class="moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 14.5A8 8 0 0 1 9.5 4a8 8 0 1 0 10.5 10.5z"/></svg></button>
25
29
  </nav>
26
30
  </header>
27
31
  <div class="shell">
28
32
  <nav class="sidebar" id="sidebar" aria-label="Documentation">
29
33
  <h2>Start here</h2><ul>
30
- <li><a href="./index.html"><span>Harness family matrix</span></a></li>
34
+ <li><a href="./index.html"><span>Module types</span></a></li>
31
35
  <li><a href="./byo-wasm-quickstart.html"><span>BYO-wasm quickstart</span></a></li>
32
36
  <li><a href="./conformance.html"><span>Conformance kit</span></a></li>
33
37
  <li><a href="./protect-and-sign.html"><span>Protect and sign</span></a></li>
@@ -269,6 +273,7 @@
269
273
  <footer class="site-footer">
270
274
  Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
271
275
  source in <code>docs/</code>; edit the Markdown, never the HTML.
276
+ Contact <a href="mailto:tj@edgesource.com">tj@edgesource.com</a>.
272
277
  </footer>
273
278
  </body>
274
279
  </html>
@@ -2,10 +2,12 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
+ <script>try{var t=localStorage.getItem("sdn-theme");if(t==="light"||t==="dark")document.documentElement.setAttribute("data-theme",t)}catch(e){}</script>
5
6
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
7
  <meta name="description" content="Status: WS12.1 deliverable. Section 1 is the definitive language/runtime matrix. Section 2 is the per-file port/dedupe plan that WS12.2 executes. All source paths verified again..." />
7
8
  <title>Language and runtime matrix — Space Data Module SDK</title>
8
9
  <link rel="stylesheet" href="./styles.css" />
10
+ <script src="./assembly.js" defer></script>
9
11
  <!-- SDN_CONSUMER_ASSETS_START -->
10
12
  <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
13
  <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>
@@ -13,6 +15,7 @@
13
15
  <!-- SDN_CONSUMER_ASSETS_END -->
14
16
  </head>
15
17
  <body>
18
+ <canvas id="assembly" aria-hidden="true"></canvas>
16
19
  <a class="skip-link" href="#main">Skip to content</a>
17
20
  <sdn-stack-nav active="module-sdk"></sdn-stack-nav>
18
21
  <header class="site-header">
@@ -22,12 +25,13 @@
22
25
  <a href="./conformance.html">Conformance</a>
23
26
  <a href="https://github.com/DigitalArsenal/space-data-module-sdk">GitHub</a>
24
27
  <a class="stack-button" href="#stack">Stack</a>
28
+ <button class="theme-toggle" type="button" aria-label="Switch between light and dark theme" title="Light or dark theme"><svg class="sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></svg><svg class="moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 14.5A8 8 0 0 1 9.5 4a8 8 0 1 0 10.5 10.5z"/></svg></button>
25
29
  </nav>
26
30
  </header>
27
31
  <div class="shell">
28
32
  <nav class="sidebar" id="sidebar" aria-label="Documentation">
29
33
  <h2>Start here</h2><ul>
30
- <li><a href="./index.html"><span>Harness family matrix</span></a></li>
34
+ <li><a href="./index.html"><span>Module types</span></a></li>
31
35
  <li><a href="./byo-wasm-quickstart.html"><span>BYO-wasm quickstart</span></a></li>
32
36
  <li><a href="./conformance.html"><span>Conformance kit</span></a></li>
33
37
  <li><a href="./protect-and-sign.html"><span>Protect and sign</span></a></li>
@@ -177,6 +181,7 @@
177
181
  <footer class="site-footer">
178
182
  Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
179
183
  source in <code>docs/</code>; edit the Markdown, never the HTML.
184
+ Contact <a href="mailto:tj@edgesource.com">tj@edgesource.com</a>.
180
185
  </footer>
181
186
  </body>
182
187
  </html>
package/docs/llms.txt CHANGED
@@ -13,7 +13,7 @@ WasmEdge, which breaks tri-runtime isomorphism. Modules must be EH-free.
13
13
 
14
14
  ## Start here
15
15
 
16
- - [Harness family matrix](https://digitalarsenal.github.io/space-data-module-sdk/): every family and its status.
16
+ - [Module types](https://digitalarsenal.github.io/space-data-module-sdk/): every harness family and its status.
17
17
  - [BYO-wasm quickstart](https://digitalarsenal.github.io/space-data-module-sdk/byo-wasm-quickstart.html): multi-TU C++ to a loadable artifact.
18
18
  - [Conformance kit](https://digitalarsenal.github.io/space-data-module-sdk/conformance.html): self-test commands and what each asserts.
19
19
  - [Protect and sign](https://digitalarsenal.github.io/space-data-module-sdk/protect-and-sign.html): artifact protection and signing.
@@ -2,10 +2,12 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
+ <script>try{var t=localStorage.getItem("sdn-theme");if(t==="light"||t==="dark")document.documentElement.setAttribute("data-theme",t)}catch(e){}</script>
5
6
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
7
  <meta name="description" content="This document is superseded by:" />
7
8
  <title>Module bundle runtime — Space Data Module SDK</title>
8
9
  <link rel="stylesheet" href="./styles.css" />
10
+ <script src="./assembly.js" defer></script>
9
11
  <!-- SDN_CONSUMER_ASSETS_START -->
10
12
  <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
13
  <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>
@@ -13,6 +15,7 @@
13
15
  <!-- SDN_CONSUMER_ASSETS_END -->
14
16
  </head>
15
17
  <body>
18
+ <canvas id="assembly" aria-hidden="true"></canvas>
16
19
  <a class="skip-link" href="#main">Skip to content</a>
17
20
  <sdn-stack-nav active="module-sdk"></sdn-stack-nav>
18
21
  <header class="site-header">
@@ -22,12 +25,13 @@
22
25
  <a href="./conformance.html">Conformance</a>
23
26
  <a href="https://github.com/DigitalArsenal/space-data-module-sdk">GitHub</a>
24
27
  <a class="stack-button" href="#stack">Stack</a>
28
+ <button class="theme-toggle" type="button" aria-label="Switch between light and dark theme" title="Light or dark theme"><svg class="sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></svg><svg class="moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 14.5A8 8 0 0 1 9.5 4a8 8 0 1 0 10.5 10.5z"/></svg></button>
25
29
  </nav>
26
30
  </header>
27
31
  <div class="shell">
28
32
  <nav class="sidebar" id="sidebar" aria-label="Documentation">
29
33
  <h2>Start here</h2><ul>
30
- <li><a href="./index.html"><span>Harness family matrix</span></a></li>
34
+ <li><a href="./index.html"><span>Module types</span></a></li>
31
35
  <li><a href="./byo-wasm-quickstart.html"><span>BYO-wasm quickstart</span></a></li>
32
36
  <li><a href="./conformance.html"><span>Conformance kit</span></a></li>
33
37
  <li><a href="./protect-and-sign.html"><span>Protect and sign</span></a></li>
@@ -141,6 +145,7 @@
141
145
  <footer class="site-footer">
142
146
  Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
143
147
  source in <code>docs/</code>; edit the Markdown, never the HTML.
148
+ Contact <a href="mailto:tj@edgesource.com">tj@edgesource.com</a>.
144
149
  </footer>
145
150
  </body>
146
151
  </html>
@@ -2,10 +2,12 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
+ <script>try{var t=localStorage.getItem("sdn-theme");if(t==="light"||t==="dark")document.documentElement.setAttribute("data-theme",t)}catch(e){}</script>
5
6
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
7
  <meta name="description" content="This document defines how a compliant Space Data module is published through the" />
7
8
  <title>Module publication standard — Space Data Module SDK</title>
8
9
  <link rel="stylesheet" href="./styles.css" />
10
+ <script src="./assembly.js" defer></script>
9
11
  <!-- SDN_CONSUMER_ASSETS_START -->
10
12
  <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
13
  <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>
@@ -13,6 +15,7 @@
13
15
  <!-- SDN_CONSUMER_ASSETS_END -->
14
16
  </head>
15
17
  <body>
18
+ <canvas id="assembly" aria-hidden="true"></canvas>
16
19
  <a class="skip-link" href="#main">Skip to content</a>
17
20
  <sdn-stack-nav active="module-sdk"></sdn-stack-nav>
18
21
  <header class="site-header">
@@ -22,12 +25,13 @@
22
25
  <a href="./conformance.html">Conformance</a>
23
26
  <a href="https://github.com/DigitalArsenal/space-data-module-sdk">GitHub</a>
24
27
  <a class="stack-button" href="#stack">Stack</a>
28
+ <button class="theme-toggle" type="button" aria-label="Switch between light and dark theme" title="Light or dark theme"><svg class="sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></svg><svg class="moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 14.5A8 8 0 0 1 9.5 4a8 8 0 1 0 10.5 10.5z"/></svg></button>
25
29
  </nav>
26
30
  </header>
27
31
  <div class="shell">
28
32
  <nav class="sidebar" id="sidebar" aria-label="Documentation">
29
33
  <h2>Start here</h2><ul>
30
- <li><a href="./index.html"><span>Harness family matrix</span></a></li>
34
+ <li><a href="./index.html"><span>Module types</span></a></li>
31
35
  <li><a href="./byo-wasm-quickstart.html"><span>BYO-wasm quickstart</span></a></li>
32
36
  <li><a href="./conformance.html"><span>Conformance kit</span></a></li>
33
37
  <li><a href="./protect-and-sign.html"><span>Protect and sign</span></a></li>
@@ -498,6 +502,7 @@ manifestSizeSymbol = &quot;plugin_get_manifest_flatbuffer_size&quot;</code></pre
498
502
  <footer class="site-footer">
499
503
  Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
500
504
  source in <code>docs/</code>; edit the Markdown, never the HTML.
505
+ Contact <a href="mailto:tj@edgesource.com">tj@edgesource.com</a>.
501
506
  </footer>
502
507
  </body>
503
508
  </html>
@@ -2,10 +2,12 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
+ <script>try{var t=localStorage.getItem("sdn-theme");if(t==="light"||t==="dark")document.documentElement.setAttribute("data-theme",t)}catch(e){}</script>
5
6
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
7
  <meta name="description" content="This matrix defines the deployment intent for compiled hosted-runtime artifacts." />
7
8
  <title>Node-RED node parity — Space Data Module SDK</title>
8
9
  <link rel="stylesheet" href="./styles.css" />
10
+ <script src="./assembly.js" defer></script>
9
11
  <!-- SDN_CONSUMER_ASSETS_START -->
10
12
  <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
13
  <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>
@@ -13,6 +15,7 @@
13
15
  <!-- SDN_CONSUMER_ASSETS_END -->
14
16
  </head>
15
17
  <body>
18
+ <canvas id="assembly" aria-hidden="true"></canvas>
16
19
  <a class="skip-link" href="#main">Skip to content</a>
17
20
  <sdn-stack-nav active="module-sdk"></sdn-stack-nav>
18
21
  <header class="site-header">
@@ -22,12 +25,13 @@
22
25
  <a href="./conformance.html">Conformance</a>
23
26
  <a href="https://github.com/DigitalArsenal/space-data-module-sdk">GitHub</a>
24
27
  <a class="stack-button" href="#stack">Stack</a>
28
+ <button class="theme-toggle" type="button" aria-label="Switch between light and dark theme" title="Light or dark theme"><svg class="sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></svg><svg class="moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 14.5A8 8 0 0 1 9.5 4a8 8 0 1 0 10.5 10.5z"/></svg></button>
25
29
  </nav>
26
30
  </header>
27
31
  <div class="shell">
28
32
  <nav class="sidebar" id="sidebar" aria-label="Documentation">
29
33
  <h2>Start here</h2><ul>
30
- <li><a href="./index.html"><span>Harness family matrix</span></a></li>
34
+ <li><a href="./index.html"><span>Module types</span></a></li>
31
35
  <li><a href="./byo-wasm-quickstart.html"><span>BYO-wasm quickstart</span></a></li>
32
36
  <li><a href="./conformance.html"><span>Conformance kit</span></a></li>
33
37
  <li><a href="./protect-and-sign.html"><span>Protect and sign</span></a></li>
@@ -196,6 +200,7 @@
196
200
  <footer class="site-footer">
197
201
  Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
198
202
  source in <code>docs/</code>; edit the Markdown, never the HTML.
203
+ Contact <a href="mailto:tj@edgesource.com">tj@edgesource.com</a>.
199
204
  </footer>
200
205
  </body>
201
206
  </html>
@@ -2,10 +2,12 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
+ <script>try{var t=localStorage.getItem("sdn-theme");if(t==="light"||t==="dark")document.documentElement.setAttribute("data-theme",t)}catch(e){}</script>
5
6
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
7
  <meta name="description" content="Once a module passes conformance and the parity gate, it is protected" />
7
8
  <title>Protect and sign — Space Data Module SDK</title>
8
9
  <link rel="stylesheet" href="./styles.css" />
10
+ <script src="./assembly.js" defer></script>
9
11
  <!-- SDN_CONSUMER_ASSETS_START -->
10
12
  <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
13
  <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>
@@ -13,6 +15,7 @@
13
15
  <!-- SDN_CONSUMER_ASSETS_END -->
14
16
  </head>
15
17
  <body>
18
+ <canvas id="assembly" aria-hidden="true"></canvas>
16
19
  <a class="skip-link" href="#main">Skip to content</a>
17
20
  <sdn-stack-nav active="module-sdk"></sdn-stack-nav>
18
21
  <header class="site-header">
@@ -22,12 +25,13 @@
22
25
  <a href="./conformance.html">Conformance</a>
23
26
  <a href="https://github.com/DigitalArsenal/space-data-module-sdk">GitHub</a>
24
27
  <a class="stack-button" href="#stack">Stack</a>
28
+ <button class="theme-toggle" type="button" aria-label="Switch between light and dark theme" title="Light or dark theme"><svg class="sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></svg><svg class="moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 14.5A8 8 0 0 1 9.5 4a8 8 0 1 0 10.5 10.5z"/></svg></button>
25
29
  </nav>
26
30
  </header>
27
31
  <div class="shell">
28
32
  <nav class="sidebar" id="sidebar" aria-label="Documentation">
29
33
  <h2>Start here</h2><ul>
30
- <li><a href="./index.html"><span>Harness family matrix</span></a></li>
34
+ <li><a href="./index.html"><span>Module types</span></a></li>
31
35
  <li><a href="./byo-wasm-quickstart.html"><span>BYO-wasm quickstart</span></a></li>
32
36
  <li><a href="./conformance.html"><span>Conformance kit</span></a></li>
33
37
  <li><a href="./protect-and-sign.html" aria-current="page"><span>Protect and sign</span></a></li>
@@ -176,6 +180,7 @@ space-data-module protect \
176
180
  <footer class="site-footer">
177
181
  Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
178
182
  source in <code>docs/</code>; edit the Markdown, never the HTML.
183
+ Contact <a href="mailto:tj@edgesource.com">tj@edgesource.com</a>.
179
184
  </footer>
180
185
  </body>
181
186
  </html>
@@ -2,10 +2,12 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
+ <script>try{var t=localStorage.getItem("sdn-theme");if(t==="light"||t==="dark")document.documentElement.setAttribute("data-theme",t)}catch(e){}</script>
5
6
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
7
  <meta name="description" content="This SDK now separates protocol identity from deployment-time routing." />
7
8
  <title>Protocol installation — Space Data Module SDK</title>
8
9
  <link rel="stylesheet" href="./styles.css" />
10
+ <script src="./assembly.js" defer></script>
9
11
  <!-- SDN_CONSUMER_ASSETS_START -->
10
12
  <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
13
  <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>
@@ -13,6 +15,7 @@
13
15
  <!-- SDN_CONSUMER_ASSETS_END -->
14
16
  </head>
15
17
  <body>
18
+ <canvas id="assembly" aria-hidden="true"></canvas>
16
19
  <a class="skip-link" href="#main">Skip to content</a>
17
20
  <sdn-stack-nav active="module-sdk"></sdn-stack-nav>
18
21
  <header class="site-header">
@@ -22,12 +25,13 @@
22
25
  <a href="./conformance.html">Conformance</a>
23
26
  <a href="https://github.com/DigitalArsenal/space-data-module-sdk">GitHub</a>
24
27
  <a class="stack-button" href="#stack">Stack</a>
28
+ <button class="theme-toggle" type="button" aria-label="Switch between light and dark theme" title="Light or dark theme"><svg class="sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></svg><svg class="moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 14.5A8 8 0 0 1 9.5 4a8 8 0 1 0 10.5 10.5z"/></svg></button>
25
29
  </nav>
26
30
  </header>
27
31
  <div class="shell">
28
32
  <nav class="sidebar" id="sidebar" aria-label="Documentation">
29
33
  <h2>Start here</h2><ul>
30
- <li><a href="./index.html"><span>Harness family matrix</span></a></li>
34
+ <li><a href="./index.html"><span>Module types</span></a></li>
31
35
  <li><a href="./byo-wasm-quickstart.html"><span>BYO-wasm quickstart</span></a></li>
32
36
  <li><a href="./conformance.html"><span>Conformance kit</span></a></li>
33
37
  <li><a href="./protect-and-sign.html"><span>Protect and sign</span></a></li>
@@ -291,6 +295,7 @@
291
295
  <footer class="site-footer">
292
296
  Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
293
297
  source in <code>docs/</code>; edit the Markdown, never the HTML.
298
+ Contact <a href="mailto:tj@edgesource.com">tj@edgesource.com</a>.
294
299
  </footer>
295
300
  </body>
296
301
  </html>
@@ -2,10 +2,12 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
+ <script>try{var t=localStorage.getItem("sdn-theme");if(t==="light"||t==="dark")document.documentElement.setAttribute("data-theme",t)}catch(e){}</script>
5
6
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
7
  <meta name="description" content="The last step of the integrator path: turn a signed artifact into something a" />
7
8
  <title>Publication and listing — Space Data Module SDK</title>
8
9
  <link rel="stylesheet" href="./styles.css" />
10
+ <script src="./assembly.js" defer></script>
9
11
  <!-- SDN_CONSUMER_ASSETS_START -->
10
12
  <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
13
  <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>
@@ -13,6 +15,7 @@
13
15
  <!-- SDN_CONSUMER_ASSETS_END -->
14
16
  </head>
15
17
  <body>
18
+ <canvas id="assembly" aria-hidden="true"></canvas>
16
19
  <a class="skip-link" href="#main">Skip to content</a>
17
20
  <sdn-stack-nav active="module-sdk"></sdn-stack-nav>
18
21
  <header class="site-header">
@@ -22,12 +25,13 @@
22
25
  <a href="./conformance.html">Conformance</a>
23
26
  <a href="https://github.com/DigitalArsenal/space-data-module-sdk">GitHub</a>
24
27
  <a class="stack-button" href="#stack">Stack</a>
28
+ <button class="theme-toggle" type="button" aria-label="Switch between light and dark theme" title="Light or dark theme"><svg class="sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></svg><svg class="moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 14.5A8 8 0 0 1 9.5 4a8 8 0 1 0 10.5 10.5z"/></svg></button>
25
29
  </nav>
26
30
  </header>
27
31
  <div class="shell">
28
32
  <nav class="sidebar" id="sidebar" aria-label="Documentation">
29
33
  <h2>Start here</h2><ul>
30
- <li><a href="./index.html"><span>Harness family matrix</span></a></li>
34
+ <li><a href="./index.html"><span>Module types</span></a></li>
31
35
  <li><a href="./byo-wasm-quickstart.html"><span>BYO-wasm quickstart</span></a></li>
32
36
  <li><a href="./conformance.html"><span>Conformance kit</span></a></li>
33
37
  <li><a href="./protect-and-sign.html"><span>Protect and sign</span></a></li>
@@ -153,6 +157,7 @@
153
157
  <footer class="site-footer">
154
158
  Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
155
159
  source in <code>docs/</code>; edit the Markdown, never the HTML.
160
+ Contact <a href="mailto:tj@edgesource.com">tj@edgesource.com</a>.
156
161
  </footer>
157
162
  </body>
158
163
  </html>
@@ -2,10 +2,12 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
+ <script>try{var t=localStorage.getItem("sdn-theme");if(t==="light"||t==="dark")document.documentElement.setAttribute("data-theme",t)}catch(e){}</script>
5
6
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
7
  <meta name="description" content="A module often needs an operator's third-party credential: a Space-Track login," />
7
8
  <title>Credential lanes — Space Data Module SDK</title>
8
9
  <link rel="stylesheet" href="./styles.css" />
10
+ <script src="./assembly.js" defer></script>
9
11
  <!-- SDN_CONSUMER_ASSETS_START -->
10
12
  <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
13
  <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>
@@ -13,6 +15,7 @@
13
15
  <!-- SDN_CONSUMER_ASSETS_END -->
14
16
  </head>
15
17
  <body>
18
+ <canvas id="assembly" aria-hidden="true"></canvas>
16
19
  <a class="skip-link" href="#main">Skip to content</a>
17
20
  <sdn-stack-nav active="module-sdk"></sdn-stack-nav>
18
21
  <header class="site-header">
@@ -22,12 +25,13 @@
22
25
  <a href="./conformance.html">Conformance</a>
23
26
  <a href="https://github.com/DigitalArsenal/space-data-module-sdk">GitHub</a>
24
27
  <a class="stack-button" href="#stack">Stack</a>
28
+ <button class="theme-toggle" type="button" aria-label="Switch between light and dark theme" title="Light or dark theme"><svg class="sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></svg><svg class="moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 14.5A8 8 0 0 1 9.5 4a8 8 0 1 0 10.5 10.5z"/></svg></button>
25
29
  </nav>
26
30
  </header>
27
31
  <div class="shell">
28
32
  <nav class="sidebar" id="sidebar" aria-label="Documentation">
29
33
  <h2>Start here</h2><ul>
30
- <li><a href="./index.html"><span>Harness family matrix</span></a></li>
34
+ <li><a href="./index.html"><span>Module types</span></a></li>
31
35
  <li><a href="./byo-wasm-quickstart.html"><span>BYO-wasm quickstart</span></a></li>
32
36
  <li><a href="./conformance.html"><span>Conformance kit</span></a></li>
33
37
  <li><a href="./protect-and-sign.html"><span>Protect and sign</span></a></li>
@@ -201,6 +205,7 @@ secrets.status -&gt; {&quot;id&quot;:&quot;&lt;lane&gt;&quot;}
201
205
  <footer class="site-footer">
202
206
  Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
203
207
  source in <code>docs/</code>; edit the Markdown, never the HTML.
208
+ Contact <a href="mailto:tj@edgesource.com">tj@edgesource.com</a>.
204
209
  </footer>
205
210
  </body>
206
211
  </html>
package/docs/styles.css CHANGED
@@ -979,3 +979,35 @@ a.card:hover {
979
979
  transition: none !important;
980
980
  }
981
981
  }
982
+
983
+ /* ------------------------------------------------------------ background */
984
+
985
+ /* "Assembly" (assembly.js): module tiles that settle into a lattice and
986
+ connect into flows. Faded under the reading column so text stays clear. */
987
+ #assembly {
988
+ position: fixed;
989
+ inset: 0;
990
+ width: 100%;
991
+ height: 100%;
992
+ z-index: -1;
993
+ pointer-events: none;
994
+ -webkit-mask-image: radial-gradient(ellipse 48% 62% at 50% 46%, rgba(0, 0, 0, 0.14), #000 82%);
995
+ mask-image: radial-gradient(ellipse 48% 62% at 50% 46%, rgba(0, 0, 0, 0.14), #000 82%);
996
+ }
997
+
998
+ /* Reading pages keep the lattice quieter than the landing page. */
999
+ body:not([data-assembly="scroll"]) #assembly {
1000
+ opacity: 0.45;
1001
+ }
1002
+
1003
+ /* Theme switcher: follows the system until the reader picks; the choice is remembered. */
1004
+ .theme-toggle { display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--hairline-strong); background: transparent; color: var(--ink); cursor: pointer; }
1005
+ .theme-toggle:hover { background: var(--surface-hover); }
1006
+ .theme-toggle svg { width: 16px; height: 16px; }
1007
+ .theme-toggle .moon { display: none; }
1008
+ :root[data-theme="light"] .theme-toggle .moon { display: block; }
1009
+ :root[data-theme="light"] .theme-toggle .sun { display: none; }
1010
+ @media (prefers-color-scheme: light) {
1011
+ :root:not([data-theme]) .theme-toggle .moon { display: block; }
1012
+ :root:not([data-theme]) .theme-toggle .sun { display: none; }
1013
+ }
@@ -2,10 +2,12 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
+ <script>try{var t=localStorage.getItem("sdn-theme");if(t==="light"||t==="dark")document.documentElement.setAttribute("data-theme",t)}catch(e){}</script>
5
6
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
7
  <meta name="description" content="This repo now includes two related testing/runtime surfaces in" />
7
8
  <title>Testing harness — Space Data Module SDK</title>
8
9
  <link rel="stylesheet" href="./styles.css" />
10
+ <script src="./assembly.js" defer></script>
9
11
  <!-- SDN_CONSUMER_ASSETS_START -->
10
12
  <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
13
  <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>
@@ -13,6 +15,7 @@
13
15
  <!-- SDN_CONSUMER_ASSETS_END -->
14
16
  </head>
15
17
  <body>
18
+ <canvas id="assembly" aria-hidden="true"></canvas>
16
19
  <a class="skip-link" href="#main">Skip to content</a>
17
20
  <sdn-stack-nav active="module-sdk"></sdn-stack-nav>
18
21
  <header class="site-header">
@@ -22,12 +25,13 @@
22
25
  <a href="./conformance.html">Conformance</a>
23
26
  <a href="https://github.com/DigitalArsenal/space-data-module-sdk">GitHub</a>
24
27
  <a class="stack-button" href="#stack">Stack</a>
28
+ <button class="theme-toggle" type="button" aria-label="Switch between light and dark theme" title="Light or dark theme"><svg class="sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/></svg><svg class="moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 14.5A8 8 0 0 1 9.5 4a8 8 0 1 0 10.5 10.5z"/></svg></button>
25
29
  </nav>
26
30
  </header>
27
31
  <div class="shell">
28
32
  <nav class="sidebar" id="sidebar" aria-label="Documentation">
29
33
  <h2>Start here</h2><ul>
30
- <li><a href="./index.html"><span>Harness family matrix</span></a></li>
34
+ <li><a href="./index.html"><span>Module types</span></a></li>
31
35
  <li><a href="./byo-wasm-quickstart.html"><span>BYO-wasm quickstart</span></a></li>
32
36
  <li><a href="./conformance.html"><span>Conformance kit</span></a></li>
33
37
  <li><a href="./protect-and-sign.html"><span>Protect and sign</span></a></li>
@@ -403,6 +407,7 @@ npm run benchmark:module-stream-1gib</code></pre></div>
403
407
  <footer class="site-footer">
404
408
  Space Data Module SDK — Apache-2.0. Every ABI page renders a Markdown
405
409
  source in <code>docs/</code>; edit the Markdown, never the HTML.
410
+ Contact <a href="mailto:tj@edgesource.com">tj@edgesource.com</a>.
406
411
  </footer>
407
412
  </body>
408
413
  </html>