@wenathlan/saddle 2.0.6 → 2.0.150

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 (282) hide show
  1. package/Dockerfile +47 -21
  2. package/LICENSE +0 -0
  3. package/README.md +19 -3
  4. package/alternatives.ts +0 -0
  5. package/boards.json +2 -2
  6. package/compute.ts +4 -4
  7. package/cores.json +2 -2
  8. package/docker.config +3 -3
  9. package/docs/.gitkeep +0 -0
  10. package/docs/CONVERSA.txt +0 -0
  11. package/docs/actionrecorder.md +0 -0
  12. package/docs/actionsincident.md +0 -0
  13. package/docs/alternatives.md +0 -0
  14. package/docs/architecture-1.8.19.md +0 -0
  15. package/docs/architecture-1.8.19.mmd +0 -0
  16. package/docs/architecture-1.8.19.png +0 -0
  17. package/docs/architecture.md +3 -3
  18. package/docs/artifactavailability.md +0 -0
  19. package/docs/artifactresearch-1.8.9.md +0 -0
  20. package/docs/assets/architecture.svg +0 -0
  21. package/docs/assets/saddle-browser-trace.webp +0 -0
  22. package/docs/assets/saddle-hero-bridge.webp +0 -0
  23. package/docs/assets/saddle-mark.webp +0 -0
  24. package/docs/assets/saddle-runtime-map.webp +0 -0
  25. package/docs/assets/saddlemark.svg +0 -0
  26. package/docs/batches-1816-1820.md +0 -0
  27. package/docs/brancharchive-2026-08-18.md +0 -0
  28. package/docs/branchaudit.md +0 -0
  29. package/docs/browser.md +0 -0
  30. package/docs/capabilityreport.md +0 -0
  31. package/docs/comparativeaudit.md +0 -0
  32. package/docs/consolidation.md +0 -0
  33. package/docs/containerplatforms-1.8.17.md +0 -0
  34. package/docs/containerplatforms-2.1.0.md +73 -0
  35. package/docs/documentmap-1.8.12.md +0 -0
  36. package/docs/e2ugh-engine.md +0 -0
  37. package/docs/ecosystemplan.md +0 -0
  38. package/docs/enginearchitecture.md +0 -0
  39. package/docs/example-localjob.ts +0 -0
  40. package/docs/example-publicapi.ts +0 -0
  41. package/docs/extension.md +0 -0
  42. package/docs/featureaudit.md +0 -0
  43. package/docs/flatbuildresearch-1.8.11.md +0 -0
  44. package/docs/gapmatrix.md +0 -0
  45. package/docs/hardware.md +0 -0
  46. package/docs/libraryapi.md +0 -0
  47. package/docs/licenseaudit-1.8.12.md +0 -0
  48. package/docs/logs/examplesession.json +54 -0
  49. package/docs/memoryengine.md +0 -0
  50. package/docs/mobileconversionresearch-1.8.10.md +0 -0
  51. package/docs/modes.md +0 -0
  52. package/docs/native-wrappers.md +38 -0
  53. package/docs/nativeidentityresearch-1.8.11.md +0 -0
  54. package/docs/optimization.md +0 -0
  55. package/docs/packageaudit185.md +0 -0
  56. package/docs/performance.md +0 -0
  57. package/docs/planning.1.8.18.md +0 -0
  58. package/docs/planning.1.8.19.md +0 -0
  59. package/docs/planning.engine.md +186 -0
  60. package/docs/platformpipelineaudit.md +0 -0
  61. package/docs/platformpipelines.md +0 -0
  62. package/docs/productindex.md +0 -0
  63. package/docs/registryresearch.md +0 -0
  64. package/docs/release.md +0 -0
  65. package/docs/release17notes.md +0 -0
  66. package/docs/release181notes.md +0 -0
  67. package/docs/release182notes.md +0 -0
  68. package/docs/release184notes.md +0 -0
  69. package/docs/release185notes.md +0 -0
  70. package/docs/release18notes.md +0 -0
  71. package/docs/releaseassets.md +0 -0
  72. package/docs/releasenotes-1.8.12.md +0 -0
  73. package/docs/releasenotes-1.8.13.md +0 -0
  74. package/docs/releasenotes-1.8.14.md +0 -0
  75. package/docs/releasenotes-1.8.15.md +0 -0
  76. package/docs/releasenotes-1.8.16.md +0 -0
  77. package/docs/releasenotes-1.8.17.md +0 -0
  78. package/docs/releasenotes-1.8.18.md +0 -0
  79. package/docs/releasenotes-1.8.19.md +0 -0
  80. package/docs/reorganization-1.8.8.md +0 -0
  81. package/docs/reorganization-1.8.9.md +0 -0
  82. package/docs/repo-analysis-1.8.21.json +0 -0
  83. package/docs/repo-candidates-1.8.21.jsonl +0 -0
  84. package/docs/repo-research-1.8.16.md +0 -0
  85. package/docs/repo-research-1.8.21.md +0 -0
  86. package/docs/repo-selected-1.8.21.json +0 -0
  87. package/docs/repo-synthesis-1.8.16.md +0 -0
  88. package/docs/repo-synthesis-1.8.21.md +0 -0
  89. package/docs/research-1.8.18-isolation.md +0 -0
  90. package/docs/research-1.8.19-virtual-browser.md +0 -0
  91. package/docs/roadmapp2p3.md +0 -0
  92. package/docs/s3compatible.md +0 -0
  93. package/docs/saddle.archive.1.8.17.tar.gz.gpg +0 -0
  94. package/docs/scanningresearch-1.8.11.md +0 -0
  95. package/docs/security.md +0 -0
  96. package/docs/securityaudit-1.8.7.md +0 -0
  97. package/docs/securityreferences-1.8.11.md +0 -0
  98. package/docs/securityresearch-1.8.11.md +0 -0
  99. package/docs/signingresearch-1.8.12.md +0 -0
  100. package/docs/signingwithoutcertificates.md +0 -0
  101. package/docs/signpathapplication.md +0 -0
  102. package/docs/sitemap.md +0 -0
  103. package/docs/tauri-glib-risk-1.8.11.md +0 -0
  104. package/docs/todo-1.8.15.md +0 -0
  105. package/docs/todo-1.8.16.md +0 -0
  106. package/docs/todo-1.8.18.md +0 -0
  107. package/docs/todo-1.8.19.md +0 -0
  108. package/docs/todo.md +0 -0
  109. package/docs/toolchainresearch-1.8.9.md +0 -0
  110. package/docs/toolchains.md +0 -0
  111. package/docs/usage.md +0 -0
  112. package/docs/viability.md +0 -0
  113. package/docs/virtualization.md +0 -0
  114. package/docs/web-duplicatecleanup.md +0 -0
  115. package/docs/web-ideas.md +0 -0
  116. package/docs/workflowimprovements-2026-08-19.md +0 -0
  117. package/docs/workflowinputs.md +0 -0
  118. package/docs/workflowoperations.md +0 -0
  119. package/gpumonitor.cpp +0 -0
  120. package/gpus.json +1 -1
  121. package/index.ts +14 -15
  122. package/manifest.json +20 -0
  123. package/media.ts +0 -0
  124. package/mttg.config +1 -1
  125. package/orchestrator.ts +5 -2
  126. package/package.json +142 -91
  127. package/passage.config +2 -2
  128. package/performance.ts +0 -0
  129. package/processors.json +1 -1
  130. package/qemu.config +2 -2
  131. package/qemubridge.py +0 -0
  132. package/quantum.ts +0 -0
  133. package/render.ts +0 -0
  134. package/scheduler.ts +0 -0
  135. package/security.ts +0 -0
  136. package/tiers.ts +9 -3
  137. package/tsconfig.json +22 -17
  138. package/virtualcpu.ts +1 -0
  139. package/virtualgpu.ts +1 -0
  140. package/virtualhardware.c +0 -0
  141. package/virtualhardware.json +2 -2
  142. package/virtualization.ts +0 -0
  143. package/virtualizationcore.cpp +0 -0
  144. package/virtualmemory.ts +0 -0
  145. package/vm.config.json +3 -3
  146. package/biome.json +0 -153
  147. package/dist/acquisition.d.ts +0 -359
  148. package/dist/acquisition.d.ts.map +0 -1
  149. package/dist/acquisition.js +0 -629
  150. package/dist/acquisition.js.map +0 -1
  151. package/dist/alternatives.d.ts +0 -509
  152. package/dist/alternatives.d.ts.map +0 -1
  153. package/dist/alternatives.js +0 -951
  154. package/dist/alternatives.js.map +0 -1
  155. package/dist/automation.d.ts +0 -426
  156. package/dist/automation.d.ts.map +0 -1
  157. package/dist/automation.js +0 -561
  158. package/dist/automation.js.map +0 -1
  159. package/dist/browser.d.ts +0 -562
  160. package/dist/browser.d.ts.map +0 -1
  161. package/dist/browser.js +0 -1057
  162. package/dist/browser.js.map +0 -1
  163. package/dist/capacitor.config.d.ts +0 -13
  164. package/dist/capacitor.config.d.ts.map +0 -1
  165. package/dist/capacitor.config.js +0 -26
  166. package/dist/capacitor.config.js.map +0 -1
  167. package/dist/cli.d.ts +0 -17
  168. package/dist/cli.d.ts.map +0 -1
  169. package/dist/cli.js +0 -111
  170. package/dist/cli.js.map +0 -1
  171. package/dist/communication.d.ts +0 -192
  172. package/dist/communication.d.ts.map +0 -1
  173. package/dist/communication.js +0 -418
  174. package/dist/communication.js.map +0 -1
  175. package/dist/compute.d.ts +0 -1161
  176. package/dist/compute.d.ts.map +0 -1
  177. package/dist/compute.js +0 -2273
  178. package/dist/compute.js.map +0 -1
  179. package/dist/distribution.d.ts +0 -529
  180. package/dist/distribution.d.ts.map +0 -1
  181. package/dist/distribution.js +0 -811
  182. package/dist/distribution.js.map +0 -1
  183. package/dist/execution.d.ts +0 -530
  184. package/dist/execution.d.ts.map +0 -1
  185. package/dist/execution.js +0 -761
  186. package/dist/execution.js.map +0 -1
  187. package/dist/format.d.ts +0 -19
  188. package/dist/format.d.ts.map +0 -1
  189. package/dist/format.js +0 -60
  190. package/dist/format.js.map +0 -1
  191. package/dist/foundation.d.ts +0 -176
  192. package/dist/foundation.d.ts.map +0 -1
  193. package/dist/foundation.js +0 -309
  194. package/dist/foundation.js.map +0 -1
  195. package/dist/index.d.ts +0 -735
  196. package/dist/index.d.ts.map +0 -1
  197. package/dist/index.js +0 -1020
  198. package/dist/index.js.map +0 -1
  199. package/dist/integration.d.ts +0 -236
  200. package/dist/integration.d.ts.map +0 -1
  201. package/dist/integration.js +0 -236
  202. package/dist/integration.js.map +0 -1
  203. package/dist/intelligence.d.ts +0 -94
  204. package/dist/intelligence.d.ts.map +0 -1
  205. package/dist/intelligence.js +0 -145
  206. package/dist/intelligence.js.map +0 -1
  207. package/dist/isolation.d.ts +0 -129
  208. package/dist/isolation.d.ts.map +0 -1
  209. package/dist/isolation.js +0 -96
  210. package/dist/isolation.js.map +0 -1
  211. package/dist/media.d.ts +0 -344
  212. package/dist/media.d.ts.map +0 -1
  213. package/dist/media.js +0 -986
  214. package/dist/media.js.map +0 -1
  215. package/dist/modes.d.ts +0 -359
  216. package/dist/modes.d.ts.map +0 -1
  217. package/dist/modes.js +0 -134
  218. package/dist/modes.js.map +0 -1
  219. package/dist/operations.d.ts +0 -67
  220. package/dist/operations.d.ts.map +0 -1
  221. package/dist/operations.js +0 -94
  222. package/dist/operations.js.map +0 -1
  223. package/dist/orchestrator.d.ts +0 -1339
  224. package/dist/orchestrator.d.ts.map +0 -1
  225. package/dist/orchestrator.js +0 -4308
  226. package/dist/orchestrator.js.map +0 -1
  227. package/dist/packager/targetcli.js +0 -4
  228. package/dist/performance.d.ts +0 -416
  229. package/dist/performance.d.ts.map +0 -1
  230. package/dist/performance.js +0 -827
  231. package/dist/performance.js.map +0 -1
  232. package/dist/quantum.d.ts +0 -810
  233. package/dist/quantum.d.ts.map +0 -1
  234. package/dist/quantum.js +0 -2073
  235. package/dist/quantum.js.map +0 -1
  236. package/dist/render.d.ts +0 -381
  237. package/dist/render.d.ts.map +0 -1
  238. package/dist/render.js +0 -1073
  239. package/dist/render.js.map +0 -1
  240. package/dist/scheduler.d.ts +0 -596
  241. package/dist/scheduler.d.ts.map +0 -1
  242. package/dist/scheduler.js +0 -1259
  243. package/dist/scheduler.js.map +0 -1
  244. package/dist/security.d.ts +0 -501
  245. package/dist/security.d.ts.map +0 -1
  246. package/dist/security.js +0 -1170
  247. package/dist/security.js.map +0 -1
  248. package/dist/server.d.ts +0 -21
  249. package/dist/server.d.ts.map +0 -1
  250. package/dist/server.js +0 -52
  251. package/dist/server.js.map +0 -1
  252. package/dist/tiers.d.ts +0 -1002
  253. package/dist/tiers.d.ts.map +0 -1
  254. package/dist/tiers.js +0 -2165
  255. package/dist/tiers.js.map +0 -1
  256. package/dist/virtual.d.ts +0 -641
  257. package/dist/virtual.d.ts.map +0 -1
  258. package/dist/virtual.js +0 -1285
  259. package/dist/virtual.js.map +0 -1
  260. package/dist/virtualcpu.d.ts +0 -316
  261. package/dist/virtualcpu.d.ts.map +0 -1
  262. package/dist/virtualcpu.js +0 -1180
  263. package/dist/virtualcpu.js.map +0 -1
  264. package/dist/virtualgpu.d.ts +0 -345
  265. package/dist/virtualgpu.d.ts.map +0 -1
  266. package/dist/virtualgpu.js +0 -1000
  267. package/dist/virtualgpu.js.map +0 -1
  268. package/dist/virtualization.d.ts +0 -607
  269. package/dist/virtualization.d.ts.map +0 -1
  270. package/dist/virtualization.js +0 -1187
  271. package/dist/virtualization.js.map +0 -1
  272. package/dist/virtualmemory.d.ts +0 -818
  273. package/dist/virtualmemory.d.ts.map +0 -1
  274. package/dist/virtualmemory.js +0 -1796
  275. package/dist/virtualmemory.js.map +0 -1
  276. package/dist/webscrape.d.ts +0 -720
  277. package/dist/webscrape.d.ts.map +0 -1
  278. package/dist/webscrape.js +0 -2697
  279. package/dist/webscrape.js.map +0 -1
  280. package/web/extension/manifest.json +0 -23
  281. package/web/readme.md +0 -382
  282. package/web/tsconfig.json +0 -25
@@ -0,0 +1,186 @@
1
+ # planning.engine — the saddle engine ladder (the sandbox that actually runs)
2
+
3
+ > the owner order: the interface exists, the engine must WORK — the saddle
4
+ > engine planned for real and wired into the whole system, 100% customizable
5
+ > (storage, ram, aliases, drivers, every knob editable through the api), the
6
+ > git storage and the github tree system living in the db, the sandbox
7
+ > modalities opening with their drivers (vgpu, vcpu, memory) running real on
8
+ > the hosts and NEVER touching the person's machine. the flows of the
9
+ > competitors (the telas files: z.ai, grok, manus, bolt, ai studio, vercel,
10
+ > netlify, cloudflare) are the recipe the engine follows; the framework, the
11
+ > library and the package choice stay open as long as node and the engines
12
+ > orchestrate behind. everything rides mime types + https.
13
+ >
14
+ > ## the competitor recipe the engine copies (from telas-sandbox-fluxo)
15
+ >
16
+ > - one sandbox per session, created implicitly at the first send, discovered
17
+ > never hand-built: workspaces/up (z.ai), /api/preview/{id} (grok),
18
+ > preview/resolve (manus).
19
+ > - the sandbox state streams: checking → quota ok → initializing → ready
20
+ > (sse of states with explicit quotas per user), the pod id in the ready
21
+ > payload.
22
+ > - the preview lives in its own subdomain with the port in it:
23
+ > preview-chat-<id>.devthink.pro, <port>-<hash>.<region>.devthink.run.
24
+ > - versioned storage OUTSIDE the sandbox: versions/<uuid> per write
25
+ > (z.ai), codestorage + commitSha (bolt), git repo in s3 (manus) — the
26
+ > saddle form: git objects inside the db (vault, libgit2) with the
27
+ > commitSha pointer the sandbox rootfs commits against.
28
+ > - ephemeral credentials only: jwt 300s per preview session (grok), otp per
29
+ > vnc (manus) — the saddle form: session-scoped tokens minted per sandbox
30
+ > bind, never a long-lived secret at the edge.
31
+ > - capabilities announced as an event (computer.capabilities.updated): the
32
+ > image inventory (node 26, git, ffmpeg, playwright-headless) reaches the
33
+ > front so features toggle by real capacity.
34
+ > - quotas explicit and queryable (x/min, y/4h, z/global) and the 429 typed
35
+ > before the bind.
36
+ > - the runtime daemon inside the sandbox: supervisord + runtime service
37
+ > (manus :8330/:8340 form) → devthink-runtime on its own port with the
38
+ > watcher loop and the upgrade lock, env in two layers (platform + user).
39
+ > - zero captcha anywhere, zero traffic from the person's browser: the code
40
+ > never transits the visitor, the agent's own headless browser runs inside
41
+ > the sandbox.
42
+
43
+ ## wave SV0 — what already stands (verified, 411 tests green)
44
+
45
+ - [x] SV0.001 the virtual hardware engine: cpu/gpu banks, topology solver,
46
+ the host inventory probes (meminfo, nvidia-smi, glxinfo, vulkan)
47
+ - [x] SV0.002 the vgpu drivers lane: pci ids, nvml shim env, vfio
48
+ bind/unbind, rom dump, looking glass b7, nvidia vgpu profiles, mig
49
+ layouts (blackwell) with density validation, intel sriov dkms, nvenc
50
+ dual engine
51
+ - [x] SV0.003 the vcpu and memory lanes: topology composition, the mttg and
52
+ passage envelopes, the qemu and docker envelopes, the tier policy
53
+ - [x] SV0.004 the orchestrator with the gitops flux planning, the scheduler,
54
+ the queue and the quota lanes, the isolation and security gates
55
+ - [x] SV0.005 the webserver (health, specs, sandbox lifecycle, exec, spa
56
+ shell) and the browser-pure engine port with the transport-neutral
57
+ bundle set
58
+ - [x] SV0.006 the build engine riding node directly (the windows spawnSync
59
+ EINVAL wall gone), the lockstep version stamp across the envelope
60
+ - [x] SV0.007 the competitor flows captured (the telas files live beside the
61
+ md corpus) and the recipe distilled into this plan
62
+
63
+ ## wave SV1 — the modality registry (the fifty, one catalog, the join)
64
+
65
+ - [ ] SV1.001 modalityregistry.ts: every sandbox modality as a record (id,
66
+ family, isolation level, driver requirements, boot cost class, the
67
+ mime contract, the driver modules it mounts) — the catalog grows
68
+ toward the fifty the owner counts, seeded from the rules list
69
+ - [ ] SV1.002 the families: complete virtual (drivers, cpu, gpu, memory, the
70
+ three profiles), universal runner, node packages, docker hardened,
71
+ ghcr immutable, microvm per workflow, browser/webcontainer server side,
72
+ mobile (capacitor, termux, postmarketos), confidential (sev-snp, tdx),
73
+ qemu and firecracker, pod per session, local opt-in, vm+vnc,
74
+ wasm/wasi, vfs, cdn
75
+ - [ ] SV1.003 the join resolver: the workload asks, the engine answers the
76
+ modality set (the nuclear modality — the person chooses none, the
77
+ platform resolves the join of all)
78
+ - [ ] SV1.004 the capability contract per modality: what the workload may
79
+ ask (net off, dropped caps, read-only root, pid limits for the docker
80
+ hardened; the clean rootfs, injected vcpu count, mesa llvmpipe,
81
+ lavapipe, rusticl, xvfb for the microvm)
82
+ - [ ] SV1.005 the boot ladder per modality: cold, warm, hot classes with
83
+ the measured budgets (gvisor without kvm about 200 ms, firecracker
84
+ 125 ms boot the sandbox.ts banner already answers, v8 isolates for
85
+ serverless)
86
+ - [ ] SV1.006 tests: the registry determinism, the join resolution on the
87
+ three base profiles (max, balanced, lite), every record complete
88
+
89
+ ## wave SV2 — the vfs and the cdn lane (the packages never touch the visitor)
90
+
91
+ - [ ] SV2.001 vfs.ts: the virtual file system born from prisma/git/db —
92
+ read(path) → chunk pointers from the db, write(path, bytes) → chunk
93
+ catalog with sha-256 and compression, automatic reuse of equal chunks
94
+ - [ ] SV2.002 the cdn lane: the ~45 cdns (esm.sh among them) fetched INSIDE
95
+ the sandbox over https through the vfs mirror — the person's browser
96
+ never loads a cdn byte of a sandbox workload
97
+ - [ ] SV2.003 the granular materialization: packages install ten by ten,
98
+ forty by forty inside the sandbox from the catalog (package.10 law) —
99
+ never on the build host
100
+ - [ ] SV2.004 the mime contract: every vfs object answers its mimetype, the
101
+ api serves content-type on every read (the mimetypes file feeds the
102
+ mapping)
103
+ - [ ] SV2.005 tests: chunk dedupe round trip, sha-256 stability, the cdn
104
+ mirror mock, the mime headers on every route
105
+
106
+ ## wave SV3 — the git storage and the github tree (the code survives the sandbox)
107
+
108
+ - [ ] SV3.001 gitobjects.ts: git objects and blobs inside the db through
109
+ libgit2 semantics — the tree system the github tree law names: read
110
+ tree(path) → entries, write tree, commit with the parent chain
111
+ - [ ] SV3.002 the versioned write: every sandbox write stamps versions/<uuid>
112
+ with the commitSha — the bolt/z.ai pattern with the vault storage
113
+ - [ ] SV3.003 the github tree lane: read the live tree of a repository over
114
+ the api (authenticated), mirror into the git objects table, the
115
+ sandbox mounts the tree as its rootfs through the vfs
116
+ - [ ] SV3.004 the rollback: checkout any commitSha back into a running
117
+ sandbox (the history the vitrine clicks through)
118
+ - [ ] SV3.005 tests: tree round trip, commit chain integrity, the github
119
+ mirror with a recorded fixture, rollback determinism
120
+
121
+ ## wave SV4 — the session sandbox law (pod per session, the states stream)
122
+
123
+ - [ ] SV4.001 sandboxup: one sandbox per session created implicitly at the
124
+ first send, discovered by session id — never a hand-built url
125
+ - [ ] SV4.002 the states stream over sse: checking → quota ok →
126
+ initializing → ready with the sandbox id, quotas per user explicit in
127
+ the handshake
128
+ - [ ] SV4.003 the capabilities event: the image inventory (node 26, git,
129
+ ffmpeg, playwright-headless, ffmpeg) announced when the sandbox turns
130
+ ready
131
+ - [ ] SV4.004 the preview subdomain: preview-<session>.devthink.pro with the
132
+ port binding, the ephemeral jwt 300s per bind (claims sub, session,
133
+ port)
134
+ - [ ] SV4.005 the runtime daemon: devthink-runtime inside the sandbox (the
135
+ supervisord + watcher loop + upgrade lock the manus form proves), env
136
+ in two layers (platform + session)
137
+ - [ ] SV4.006 the sweep: ttl 15 minutes, the sweep period the webserver
138
+ already carries, the workspace quota answering with the sandbox id
139
+ - [ ] SV4.007 tests: the state ladder order, the quota refusal typed 429,
140
+ the jwt expiry, the capabilities payload
141
+
142
+ ## wave SV5 — config and aliases (100% customizable through the api)
143
+
144
+ - [ ] SV5.001 sandboxconfig.ts: every knob editable — base (max, balanced,
145
+ lite), os image (android, grapheneos, linux, omarchy, windows,
146
+ distros), arch (arm64, amd64), vcpu count, vram mib, storage quota,
147
+ the modality join, the driver set
148
+ - [ ] SV5.002 the aliases table: user-defined aliases per sandbox (the
149
+ short names the shell and the api resolve), add/rename/remove through
150
+ the api, unique per owner
151
+ - [ ] SV5.003 the config store: rows in sqlite through parameter binding,
152
+ the api serves and accepts the whole surface (the ui edits the same
153
+ rows), defaults from the seed catalog never hardcoded in components
154
+ - [ ] SV5.004 the presets: named profiles (the three bases plus user
155
+ presets) shareable and versioned
156
+ - [ ] SV5.005 tests: config round trip, alias uniqueness, preset apply,
157
+ the api contract with a fake request
158
+
159
+ ## wave SV6 — the runners (forge at the frontier, foundry the face)
160
+
161
+ - [ ] SV6.001 the docker hardened runner: no network, dropped caps,
162
+ read-only root, pid limits, runsc option
163
+ - [ ] SV6.002 the microvm runner: clean rootfs, injected vcpu count, the
164
+ cpu id via ld_preload, mesa llvmpipe + lavapipe + rusticl + xvfb for
165
+ the gpu-less render, iso-style and ghcr sources
166
+ - [ ] SV6.003 the wasm/wasi runner: wasmer and wasmedge behind the same
167
+ dispatch contract
168
+ - [ ] SV6.004 the universal runner: any binary of the market through the
169
+ binfmt form, the platform processes included
170
+ - [ ] SV6.005 the dispatch result: the same SandboxState/DispatchResult
171
+ shape every runner answers (the contract the tests already pin)
172
+ - [ ] SV6.006 tests: per-runner dispatch on the recorded fixtures, the
173
+ hardening gates refusing the forbidden flags
174
+
175
+ ## wave SV7 — the verification (the owner reads the live proof)
176
+
177
+ - [ ] SV7.001 the full battery green on every wave's modules
178
+ - [ ] SV7.002 the live proof: sandbox up through the api, the states stream
179
+ answering, exec inside, the vfs fetch of a cdn package, the git
180
+ commit with the commitSha, the preview subdomain bound with the
181
+ ephemeral jwt
182
+ - [ ] SV7.003 the live proof: the config edited through the api (ram,
183
+ storage, alias), the next boot honoring it
184
+ - [ ] SV7.004 the debonair bridge: the render jobs of the audio engine run
185
+ inside a saddle sandbox (the no-client-dsp law of the music pipeline)
186
+ - [ ] SV7.005 the worklog and the ladder ticked, the wave committed
File without changes
File without changes
File without changes
File without changes
package/docs/release.md CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/docs/security.md CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/docs/sitemap.md CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/docs/todo.md CHANGED
File without changes
File without changes
File without changes
package/docs/usage.md CHANGED
File without changes
package/docs/viability.md CHANGED
File without changes
File without changes
File without changes
package/docs/web-ideas.md CHANGED
File without changes
File without changes
File without changes
File without changes
package/gpumonitor.cpp CHANGED
File without changes
package/gpus.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "meta": {
4
4
  "name": "gpus.json",
5
5
  "title": "saddle - Unified Virtual GPU Database",
6
- "version": "2.0.0",
6
+ "version": "2.0.127",
7
7
  "date": "2026-08-22",
8
8
  "language": "en",
9
9
  "description": "Union of the v5 GPU database (7 virtual identity identities), the S6 registry (RX 8900 XTX + Arc B770 unique), Blackwell architecture specs v5+v6 (B100/GB200/RTX 5070/5070 Ti SKUs), gpu.config TOML SKUs (incl. 5 AMD APU RDNA iGPUs) and the 11-entry vfio profile table. PCI device id for RTX PRO 6000 corrected 2BB5->26B5 per canonical v5.",
package/index.ts CHANGED
@@ -40,7 +40,7 @@ export const engineversions = {
40
40
  npm: '12.0.2',
41
41
  /** python stable confirmed 2026-08-23. */
42
42
  python: '3.14.7',
43
- nodecurrent: '26.7.0',
43
+ nodecurrent: '26.12.1',
44
44
  nodelts: '24.19.0',
45
45
  typescript: '7.0.2',
46
46
  docker: '29.7.2',
@@ -1460,19 +1460,18 @@ export type { migprofileid } from './virtualmemory.js';
1460
1460
  /** Re-exports the memory tier catalog and virtual memory manager. */
1461
1461
  export * from './virtualmemory.js';
1462
1462
 
1463
-
1464
1463
  /* ── Section 2: the saddle domain routing barrel ── */
1465
1464
 
1466
- export * from "./foundation.js";
1467
- export * from "./isolation.js";
1468
- export * from "./virtual.js";
1469
- export * from "./execution.js";
1470
- export * from "./browser.js";
1471
- export * from "./acquisition.js";
1472
- export * from "./communication.js";
1473
- export * from "./integration.js";
1474
- export * from "./automation.js";
1475
- export * from "./intelligence.js";
1476
- export * from "./distribution.js";
1477
- export * from "./modes.js";
1478
- export * from "./operations.js";
1465
+ export * from './acquisition.js';
1466
+ export * from './automation.js';
1467
+ export * from './browser.js';
1468
+ export * from './communication.js';
1469
+ export * from './distribution.js';
1470
+ export * from './execution.js';
1471
+ export * from './foundation.js';
1472
+ export * from './integration.js';
1473
+ export * from './intelligence.js';
1474
+ export * from './isolation.js';
1475
+ export * from './modes.js';
1476
+ export * from './operations.js';
1477
+ export * from './virtual.js';
package/manifest.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "manifest_version": 3,
3
+ "name": "Saddle browser bridge",
4
+ "version": "2.0.150",
5
+ "description": "User initiated page snapshots through the Saddle browser contract.",
6
+ "minimum_chrome_version": "110",
7
+ "permissions": [
8
+ "activeTab",
9
+ "scripting",
10
+ "storage"
11
+ ],
12
+ "icons": {
13
+ "32": "icon.svg",
14
+ "64": "icon.svg",
15
+ "128": "icon.svg"
16
+ },
17
+ "action": {
18
+ "default_title": "Saddle"
19
+ }
20
+ }
package/media.ts CHANGED
File without changes
package/mttg.config CHANGED
@@ -2,7 +2,7 @@
2
2
  "meta": {
3
3
  "name": "mttg.config",
4
4
  "title": "saddle - MTTG Multi-Tenant Task Groups (cgroups v2 + tenants + transcode) with MTTCG (QEMU TCG) section",
5
- "version": "2.0.0",
5
+ "version": "2.0.127",
6
6
  "date": "2026-08-22",
7
7
  "language": "en",
8
8
  "conceptSeparation": "MTTG = Multi-Tenant Task Groups (cgroup v2 cpu.weight/cpuset/memory/io/pids/hugetlb/rdma + tenants + transcode pipelines). MTTCG = QEMU Multi-Threaded TCG (one host thread per vCPU under TCG). Both live here as DISTINCT sections; MTTCG accel flags also in qemu.config#mttcg.",
package/orchestrator.ts CHANGED
@@ -91,7 +91,10 @@ const runtimecatalog = {
91
91
 
92
92
  /** toolchain stack reported by dumpstate and the version probe. */
93
93
  const stackcatalog = {
94
- nodecurrent: '26.7.0',
94
+ /* walks with the .nvmrc pin the maintenance rung stamps — the 2.0.133
95
+ publish regression answered the engine advertising a node the repository
96
+ retired, so the anchor rides the pin lane now (never ahead of it) */
97
+ nodecurrent: '26.12.1',
95
98
  nodelts: '24.19.0',
96
99
  typescript: '7.0.2',
97
100
  qemu: runtimecatalog.qemu,
@@ -4389,7 +4392,7 @@ class orchestrator {
4389
4392
  /**
4390
4393
  * default contents of the flat config files written by start(); the
4391
4394
  * version strings carry the v2 anchors (qemu 11.1.0, docker 29.7.2,
4392
- * node 26.7.0), replacing the stale Meta banners.
4395
+ * node 26.12.0), replacing the stale Meta banners.
4393
4396
  */
4394
4397
  #defaultconfigcontents(): Record<configfilename, string> {
4395
4398
  return {