@wenathlan/saddle 2.1.5 → 2.1.7
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/Dockerfile +158 -60
- package/LICENSE +0 -0
- package/README.md +68 -53
- package/alternatives.ts +0 -0
- package/biome.jsonc +134 -0
- package/boards.json +2 -2
- package/compute.ts +4 -4
- package/cores.json +2 -2
- package/docker.config +37 -9
- package/docs/.gitkeep +0 -0
- package/docs/actionrecorder.md +0 -0
- package/docs/actionsincident.md +0 -0
- package/docs/alternatives.md +0 -0
- package/docs/architecture.md +0 -0
- package/docs/{architecture-1.8.19.md → architecture1819.md} +0 -0
- package/docs/{architecture-1.8.19.mmd → architecture1819.mmd} +0 -0
- package/docs/artifactavailability.md +2 -2
- package/docs/{artifactresearch-1.8.9.md → artifactresearch189.md} +0 -0
- package/docs/{batches-1816-1820.md → batches1816to1820.md} +0 -0
- package/docs/{brancharchive-2026-08-18.md → brancharchive20260818.md} +0 -0
- package/docs/branchaudit.md +0 -0
- package/docs/browser.md +0 -0
- package/docs/capabilityreport.md +0 -0
- package/docs/comparativeaudit.md +0 -0
- package/docs/consolidation.md +0 -0
- package/docs/{containerplatforms-1.8.17.md → containerplatforms1817.md} +0 -0
- package/docs/{containerplatforms-2.1.0.md → containerplatforms210.md} +1 -1
- package/docs/{documentmap-1.8.12.md → documentmap1812.md} +1 -1
- package/docs/{e2ugh-engine.md → e2ughengine.md} +0 -0
- package/docs/ecosystemplan.md +0 -0
- package/docs/enginearchitecture.md +0 -0
- package/docs/extension.md +0 -0
- package/docs/featureaudit.md +0 -0
- package/docs/{flatbuildresearch-1.8.11.md → flatbuildresearch1811.md} +0 -0
- package/docs/gapmatrix.md +0 -0
- package/docs/hardware.md +0 -0
- package/docs/libraryapi.md +0 -0
- package/docs/{licenseaudit-1.8.12.md → licenseaudit1812.md} +0 -0
- package/docs/logs/examplesession.json +54 -0
- package/docs/memoryengine.md +0 -0
- package/docs/{mobileconversionresearch-1.8.10.md → mobileconversionresearch1810.md} +0 -0
- package/docs/modes.md +0 -0
- package/docs/{nativeidentityresearch-1.8.11.md → nativeidentityresearch1811.md} +0 -0
- package/docs/{native-wrappers.md → nativewrappers.md} +0 -0
- package/docs/ninetymodalities.md +191 -0
- package/docs/optimization.md +0 -0
- package/docs/packageaudit185.md +0 -0
- package/docs/performance.md +0 -0
- package/docs/{planning.1.8.18.md → planning1818.md} +0 -0
- package/docs/{planning.1.8.19.md → planning1819.md} +0 -0
- package/docs/planningengine.md +186 -0
- package/docs/planningninety.md +391 -0
- package/docs/platformpipelineaudit.md +0 -0
- package/docs/platformpipelines.md +0 -0
- package/docs/productindex.md +0 -0
- package/docs/registryresearch.md +0 -0
- package/docs/release.md +0 -0
- package/docs/release17notes.md +0 -0
- package/docs/release181notes.md +0 -0
- package/docs/release182notes.md +0 -0
- package/docs/release184notes.md +0 -0
- package/docs/release185notes.md +0 -0
- package/docs/release18notes.md +0 -0
- package/docs/releaseassets.md +0 -0
- package/docs/{releasenotes-1.8.12.md → releasenotes1812.md} +0 -0
- package/docs/{releasenotes-1.8.13.md → releasenotes1813.md} +2 -2
- package/docs/{releasenotes-1.8.14.md → releasenotes1814.md} +1 -1
- package/docs/{releasenotes-1.8.15.md → releasenotes1815.md} +0 -0
- package/docs/{releasenotes-1.8.16.md → releasenotes1816.md} +0 -0
- package/docs/{releasenotes-1.8.17.md → releasenotes1817.md} +0 -0
- package/docs/{releasenotes-1.8.18.md → releasenotes1818.md} +0 -0
- package/docs/{releasenotes-1.8.19.md → releasenotes1819.md} +0 -0
- package/docs/{reorganization-1.8.8.md → reorganization188.md} +0 -0
- package/docs/{reorganization-1.8.9.md → reorganization189.md} +0 -0
- package/docs/{repo-analysis-1.8.21.json → repoanalysis1821.json} +0 -0
- package/docs/{repo-candidates-1.8.21.jsonl → repocandidates1821.jsonl} +0 -0
- package/docs/{repo-research-1.8.16.md → reporesearch1816.md} +0 -0
- package/docs/{repo-research-1.8.21.md → reporesearch1821.md} +0 -0
- package/docs/{repo-selected-1.8.21.json → reposelected1821.json} +0 -0
- package/docs/{repo-synthesis-1.8.16.md → reposynthesis1816.md} +1 -1
- package/docs/{repo-synthesis-1.8.21.md → reposynthesis1821.md} +0 -0
- package/docs/{research-1.8.18-isolation.md → research1818isolation.md} +0 -0
- package/docs/{research-1.8.19-virtual-browser.md → research1819virtualbrowser.md} +0 -0
- package/docs/roadmapp2p3.md +0 -0
- package/docs/s3compatible.md +0 -0
- package/docs/{scanningresearch-1.8.11.md → scanningresearch1811.md} +0 -0
- package/docs/security.md +0 -0
- package/docs/{securityaudit-1.8.7.md → securityaudit187.md} +0 -0
- package/docs/{securityreferences-1.8.11.md → securityreferences1811.md} +0 -0
- package/docs/{securityresearch-1.8.11.md → securityresearch1811.md} +0 -0
- package/docs/{signingresearch-1.8.12.md → signingresearch1812.md} +0 -0
- package/docs/signingwithoutcertificates.md +0 -0
- package/docs/signpathapplication.md +0 -0
- package/docs/sitemap.md +0 -0
- package/docs/{tauri-glib-risk-1.8.11.md → tauriglibrisk1811.md} +0 -0
- package/docs/todo.md +2 -2
- package/docs/{todo-1.8.15.md → todo1815.md} +1 -1
- package/docs/{todo-1.8.16.md → todo1816.md} +5 -5
- package/docs/{todo-1.8.18.md → todo1818.md} +0 -0
- package/docs/{todo-1.8.19.md → todo1819.md} +0 -0
- package/docs/{toolchainresearch-1.8.9.md → toolchainresearch189.md} +0 -0
- package/docs/toolchains.md +0 -0
- package/docs/usage.md +0 -0
- package/docs/viability.md +0 -0
- package/docs/virtualization.md +0 -0
- package/docs/{web-duplicatecleanup.md → webduplicatecleanup.md} +0 -0
- package/docs/{web-ideas.md → webideas.md} +0 -0
- package/docs/{workflowimprovements-2026-08-19.md → workflowimprovements20260819.md} +0 -0
- package/docs/workflowinputs.md +0 -0
- package/docs/workflowoperations.md +0 -0
- package/docs/workloadlaw.md +104 -0
- package/gpumonitor.cpp +0 -0
- package/gpus.json +1 -1
- package/index.ts +19 -10
- package/manifest.json +20 -0
- package/modalityregistry.ts +1493 -0
- package/mttg.config +1 -1
- package/orchestrator.ts +52 -15
- package/package.json +196 -103
- package/passage.config +2 -2
- package/performance.ts +0 -0
- package/processors.json +1 -1
- package/qemu.config +2 -2
- package/qemubridge.py +0 -0
- package/quantum.ts +0 -0
- package/render.ts +0 -0
- package/scheduler.ts +0 -0
- package/security.ts +0 -0
- package/tiers.ts +9 -3
- package/tsconfig.json +21 -11
- package/virtualcpu.ts +1 -0
- package/virtualgpu.ts +1 -0
- package/virtualhardware.c +0 -0
- package/virtualhardware.json +2 -2
- package/virtualization.ts +0 -0
- package/virtualizationcore.cpp +0 -0
- package/virtualmemory.ts +0 -0
- package/vm.config.json +3 -3
- package/biome.json +0 -151
- package/dist/acquisition.d.ts +0 -359
- package/dist/acquisition.d.ts.map +0 -1
- package/dist/acquisition.js +0 -629
- package/dist/acquisition.js.map +0 -1
- package/dist/alternatives.d.ts +0 -509
- package/dist/alternatives.d.ts.map +0 -1
- package/dist/alternatives.js +0 -951
- package/dist/alternatives.js.map +0 -1
- package/dist/automation.d.ts +0 -426
- package/dist/automation.d.ts.map +0 -1
- package/dist/automation.js +0 -561
- package/dist/automation.js.map +0 -1
- package/dist/browser.d.ts +0 -562
- package/dist/browser.d.ts.map +0 -1
- package/dist/browser.js +0 -1057
- package/dist/browser.js.map +0 -1
- package/dist/cli.d.ts +0 -17
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -169
- package/dist/cli.js.map +0 -1
- package/dist/communication.d.ts +0 -192
- package/dist/communication.d.ts.map +0 -1
- package/dist/communication.js +0 -418
- package/dist/communication.js.map +0 -1
- package/dist/compute.d.ts +0 -1161
- package/dist/compute.d.ts.map +0 -1
- package/dist/compute.js +0 -2273
- package/dist/compute.js.map +0 -1
- package/dist/distribution.d.ts +0 -529
- package/dist/distribution.d.ts.map +0 -1
- package/dist/distribution.js +0 -811
- package/dist/distribution.js.map +0 -1
- package/dist/docs/example-localjob.d.ts +0 -2
- package/dist/docs/example-localjob.d.ts.map +0 -1
- package/dist/docs/example-localjob.js +0 -15
- package/dist/docs/example-localjob.js.map +0 -1
- package/dist/docs/example-publicapi.d.ts +0 -2
- package/dist/docs/example-publicapi.d.ts.map +0 -1
- package/dist/docs/example-publicapi.js +0 -7
- package/dist/docs/example-publicapi.js.map +0 -1
- package/dist/execution.d.ts +0 -530
- package/dist/execution.d.ts.map +0 -1
- package/dist/execution.js +0 -761
- package/dist/execution.js.map +0 -1
- package/dist/format.d.ts +0 -19
- package/dist/format.d.ts.map +0 -1
- package/dist/format.js +0 -60
- package/dist/format.js.map +0 -1
- package/dist/foundation.d.ts +0 -176
- package/dist/foundation.d.ts.map +0 -1
- package/dist/foundation.js +0 -309
- package/dist/foundation.js.map +0 -1
- package/dist/index.d.ts +0 -735
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -1020
- package/dist/index.js.map +0 -1
- package/dist/integration.d.ts +0 -236
- package/dist/integration.d.ts.map +0 -1
- package/dist/integration.js +0 -236
- package/dist/integration.js.map +0 -1
- package/dist/intelligence.d.ts +0 -94
- package/dist/intelligence.d.ts.map +0 -1
- package/dist/intelligence.js +0 -145
- package/dist/intelligence.js.map +0 -1
- package/dist/isolation.d.ts +0 -129
- package/dist/isolation.d.ts.map +0 -1
- package/dist/isolation.js +0 -96
- package/dist/isolation.js.map +0 -1
- package/dist/media.d.ts +0 -344
- package/dist/media.d.ts.map +0 -1
- package/dist/media.js +0 -986
- package/dist/media.js.map +0 -1
- package/dist/modes.d.ts +0 -359
- package/dist/modes.d.ts.map +0 -1
- package/dist/modes.js +0 -134
- package/dist/modes.js.map +0 -1
- package/dist/operations.d.ts +0 -67
- package/dist/operations.d.ts.map +0 -1
- package/dist/operations.js +0 -94
- package/dist/operations.js.map +0 -1
- package/dist/orchestrator.d.ts +0 -1339
- package/dist/orchestrator.d.ts.map +0 -1
- package/dist/orchestrator.js +0 -4308
- package/dist/orchestrator.js.map +0 -1
- package/dist/packager/targetcli.js +0 -4
- package/dist/performance.d.ts +0 -416
- package/dist/performance.d.ts.map +0 -1
- package/dist/performance.js +0 -827
- package/dist/performance.js.map +0 -1
- package/dist/quantum.d.ts +0 -810
- package/dist/quantum.d.ts.map +0 -1
- package/dist/quantum.js +0 -2073
- package/dist/quantum.js.map +0 -1
- package/dist/render.d.ts +0 -381
- package/dist/render.d.ts.map +0 -1
- package/dist/render.js +0 -1073
- package/dist/render.js.map +0 -1
- package/dist/scheduler.d.ts +0 -596
- package/dist/scheduler.d.ts.map +0 -1
- package/dist/scheduler.js +0 -1259
- package/dist/scheduler.js.map +0 -1
- package/dist/security.d.ts +0 -501
- package/dist/security.d.ts.map +0 -1
- package/dist/security.js +0 -1170
- package/dist/security.js.map +0 -1
- package/dist/server.d.ts +0 -21
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -52
- package/dist/server.js.map +0 -1
- package/dist/tiers.d.ts +0 -1002
- package/dist/tiers.d.ts.map +0 -1
- package/dist/tiers.js +0 -2165
- package/dist/tiers.js.map +0 -1
- package/dist/virtual.d.ts +0 -641
- package/dist/virtual.d.ts.map +0 -1
- package/dist/virtual.js +0 -1285
- package/dist/virtual.js.map +0 -1
- package/dist/virtualcpu.d.ts +0 -316
- package/dist/virtualcpu.d.ts.map +0 -1
- package/dist/virtualcpu.js +0 -1180
- package/dist/virtualcpu.js.map +0 -1
- package/dist/virtualgpu.d.ts +0 -345
- package/dist/virtualgpu.d.ts.map +0 -1
- package/dist/virtualgpu.js +0 -1000
- package/dist/virtualgpu.js.map +0 -1
- package/dist/virtualization.d.ts +0 -607
- package/dist/virtualization.d.ts.map +0 -1
- package/dist/virtualization.js +0 -1187
- package/dist/virtualization.js.map +0 -1
- package/dist/virtualmemory.d.ts +0 -818
- package/dist/virtualmemory.d.ts.map +0 -1
- package/dist/virtualmemory.js +0 -1796
- package/dist/virtualmemory.js.map +0 -1
- package/dist/vitest.config.d.ts +0 -3
- package/dist/vitest.config.d.ts.map +0 -1
- package/dist/vitest.config.js +0 -26
- package/dist/vitest.config.js.map +0 -1
- package/dist/webscrape.d.ts +0 -720
- package/dist/webscrape.d.ts.map +0 -1
- package/dist/webscrape.js +0 -2697
- package/dist/webscrape.js.map +0 -1
- package/docs/CONVERSA.txt +0 -1523
- package/docs/architecture-1.8.19.png +0 -0
- package/docs/assets/architecture.svg +0 -45
- package/docs/assets/saddlemark.svg +0 -13
- package/docs/example-localjob.ts +0 -15
- package/docs/example-publicapi.ts +0 -7
- package/docs/saddle.archive.1.8.17.tar.gz.gpg +0 -0
- package/media.ts +0 -1337
- package/web/manifest.json +0 -30
- package/web/readme.md +0 -383
- package/web/tsconfig.json +0 -25
|
File without changes
|
package/docs/extension.md
CHANGED
|
File without changes
|
package/docs/featureaudit.md
CHANGED
|
File without changes
|
|
File without changes
|
package/docs/gapmatrix.md
CHANGED
|
File without changes
|
package/docs/hardware.md
CHANGED
|
File without changes
|
package/docs/libraryapi.md
CHANGED
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"session": {
|
|
4
|
+
"id": "examplesession-0001",
|
|
5
|
+
"browser": "brave",
|
|
6
|
+
"seed": "examplesession-seed-0001"
|
|
7
|
+
},
|
|
8
|
+
"events": [
|
|
9
|
+
{
|
|
10
|
+
"t": 140,
|
|
11
|
+
"type": "move",
|
|
12
|
+
"x": 120,
|
|
13
|
+
"y": 90
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"t": 300,
|
|
17
|
+
"type": "move",
|
|
18
|
+
"x": 180,
|
|
19
|
+
"y": 140
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"t": 480,
|
|
23
|
+
"type": "click",
|
|
24
|
+
"x": 180,
|
|
25
|
+
"y": 140
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"t": 680,
|
|
29
|
+
"type": "type",
|
|
30
|
+
"key": "k"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"t": 900,
|
|
34
|
+
"type": "move",
|
|
35
|
+
"x": 240,
|
|
36
|
+
"y": 200
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"t": 1140,
|
|
40
|
+
"type": "click",
|
|
41
|
+
"x": 240,
|
|
42
|
+
"y": 200
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"t": 1400,
|
|
46
|
+
"type": "scroll",
|
|
47
|
+
"dy": 320
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
"captcha": {
|
|
51
|
+
"kind": "hcaptcha",
|
|
52
|
+
"passed": true
|
|
53
|
+
}
|
|
54
|
+
}
|
package/docs/memoryengine.md
CHANGED
|
File without changes
|
|
File without changes
|
package/docs/modes.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# ninety.modalities — the wave record
|
|
2
|
+
|
|
3
|
+
the ninety modalities wave (branch waved/ninety.modalities): the saddle
|
|
4
|
+
plane answers the ninety modality plan the owner charged — every planned
|
|
5
|
+
lane of the registry wires an honest executor, every app of the family
|
|
6
|
+
declares the modality its workloads ride, and the report never lies.
|
|
7
|
+
|
|
8
|
+
## the state the wave found
|
|
9
|
+
|
|
10
|
+
the registry carried the ninety records with 30 live, 3 host and 57
|
|
11
|
+
planned — the catalog promised more than the lanes wired. the edge plane
|
|
12
|
+
drove 16 lanes (10 live, 6 host) and every app of the family named its
|
|
13
|
+
sandbox seat only through the debonair precedent (4 ids).
|
|
14
|
+
|
|
15
|
+
## the wiring the wave answered
|
|
16
|
+
|
|
17
|
+
- **edgelandeshost.ts** (group a, 25 lanes): the sandbox jails
|
|
18
|
+
(bubblewrap, nsjail, chroot with the fakechroot fallback and the
|
|
19
|
+
privilege gate), the container extensions (podman, containerd, runc,
|
|
20
|
+
crun, the docker max/lite/ghcr profiles), the runtimes (clr, workerd),
|
|
21
|
+
the screens (xvfb-run, the wayland compositor seat), the mobile
|
|
22
|
+
termux host, the builds (bazel, buck2, turborepo), the ci runners
|
|
23
|
+
(actions-runner, gitlab-runner with the exec-removed refusal), the
|
|
24
|
+
network tunnels (tor with the socks circuit, i2p, wireguard with the
|
|
25
|
+
keygen law) and the storage daemons (minio mc, garage). every lane
|
|
26
|
+
probes its binary, runs under the hard deadline in a private temp dir
|
|
27
|
+
and answers the coded absence when the host carries no runtime.
|
|
28
|
+
- **edgelandesinproc.ts** (group b, 19 lanes): the ram recipes (tmpfs,
|
|
29
|
+
mmap, overlayfs, loopram, gitram, zram with the real stored-block
|
|
30
|
+
zlib stream, zswap with the lru pool, swapfile) behind the oom-guard
|
|
31
|
+
quota, the delivery protocols (the cdn mirror manifest, the rfc6455
|
|
32
|
+
wss frame, the quic datagram, the grpc length prefix, the capnp
|
|
33
|
+
segment), the storage wire speakers (libsql envelope, the mysql
|
|
34
|
+
handshake packet, the postgres startup message, the s3 canonical
|
|
35
|
+
signer), the webcontainer seat (the frozen module vm) and the
|
|
36
|
+
local-optin consent gate — pure ts, deterministic, in-process.
|
|
37
|
+
- **edgelandesvirtual.ts** (group c, 7 lanes): the virtual hardware
|
|
38
|
+
compositions riding the engine's own catalogs — the full machine, the
|
|
39
|
+
vgpu mig slice, the screen with the session otp, the driver surface,
|
|
40
|
+
the kvm plan (the qemu argv through the lazy virtualization domain —
|
|
41
|
+
the .js specifier graph loads inside the executor, never the boot),
|
|
42
|
+
the gpuless mesa render and the virgl context. every report says
|
|
43
|
+
composed, never booted.
|
|
44
|
+
- **edgelandesninety.ts** (the merge seat): the six heavyweight probes
|
|
45
|
+
(browser-server, mobile-capacitor, mobile-postmarketos, pod-session,
|
|
46
|
+
confidential-sevsnp, confidential-tdx) and the merged lane tables the
|
|
47
|
+
dispatch plane reads — 73 lanes in the plane, every one carrying its
|
|
48
|
+
executor, the wiring self-check refusing a gap at boot.
|
|
49
|
+
- **edgeplane.ts**: the lane table rides the merged specs, the dispatch
|
|
50
|
+
reads the merged executors, the visitor law guard holds on every run.
|
|
51
|
+
- **modalityregistry.ts**: the honest flips — 51 planned lanes walk to
|
|
52
|
+
live (the lanes the wave wired), 6 walk to host (the heavyweight
|
|
53
|
+
probes), zero stay planned. the census: **81 live, 9 host, 0 planned,
|
|
54
|
+
90 records.**
|
|
55
|
+
- **the app declarations** (group e): every app of the family names the
|
|
56
|
+
modality its workloads ride — argan (17), cadria (16), cobaia (8),
|
|
57
|
+
devthink (78, the full vocabulary), forge (40), foundry (20), getry
|
|
58
|
+
(13), stealthhead (12), vault (25) and the debonair seat widened 4 →
|
|
59
|
+
23 — every one through the env opt-in (APP_WORKER_MODALITY), the ids
|
|
60
|
+
mirrored as the string contract, zero imports, the visitor law stated
|
|
61
|
+
in every header.
|
|
62
|
+
- **the vendor mirror**: devthink/modalities.ts re-synced byte-identical
|
|
63
|
+
to the engine registry (the single-source law), the census pins of the
|
|
64
|
+
sandboxlane and e2e suites updated to the new truth.
|
|
65
|
+
|
|
66
|
+
## the verification the wave recorded
|
|
67
|
+
|
|
68
|
+
- saddle: 28 files / **414 tests green** (379 base + 35 lane tests)
|
|
69
|
+
- argan 69 · cadria 548 · cobaia 30 · debonair 730 · devthink 194 files /
|
|
70
|
+
3512 · forge 90 · foundry 78 · getry 86 · stealthhead 152 · vault 98
|
|
71
|
+
- family total: **5807 tests green** (5680 base + 127 of the wave)
|
|
72
|
+
- biome zero findings on every file the wave authored
|
|
73
|
+
- the live proof: the webserver answers /api/v1/modalities with
|
|
74
|
+
{plancount: 90, live: 81, host: 9, planned: 0} and /api/v1/edge/lanes
|
|
75
|
+
with the 73 probed lanes (61 live, 12 host)
|
|
76
|
+
|
|
77
|
+
## the reconciliation with the parallel waves
|
|
78
|
+
|
|
79
|
+
the rebase onto main met two waves that landed while this one worked:
|
|
80
|
+
#239 (the tests home — the tests folders pure inside every app) and
|
|
81
|
+
#240 (the workload law — every app declares its lanes through
|
|
82
|
+
sandboxmodality.ts, the family seat with the join resolver and the
|
|
83
|
+
api routes). the reconciliation honored the no-duplication law: this
|
|
84
|
+
wave dropped its own app declaration seats (the modality.ts files of
|
|
85
|
+
group e) in favor of the #240 family seat the main branch pinned, and
|
|
86
|
+
kept everything the parallel waves did not touch — the fifty-seven
|
|
87
|
+
lane wirings, the registry flips, the vendor mirror sync and the
|
|
88
|
+
census pins. the two census rows #240 charged against the planned-only
|
|
89
|
+
gpu wait (the workload battery and the web workloads lane) now answer
|
|
90
|
+
the post-wave truth: the gpu records this wave wired live make the
|
|
91
|
+
stealthhead world-bake dispatchable, the family census carries zero
|
|
92
|
+
planned-only lanes, and the batteries say so.
|
|
93
|
+
|
|
94
|
+
## the honest notes
|
|
95
|
+
|
|
96
|
+
- the host binary lanes of group a name runtimes this host does not
|
|
97
|
+
carry — the lanes answer HOST_RUNTIME_ABSENT naming the runtime (the
|
|
98
|
+
language-ruby precedent: live means the engine drives it when the
|
|
99
|
+
host provides the seat).
|
|
100
|
+
- the kvm lane loads the virtualization domain lazily inside the
|
|
101
|
+
executor: the webserver's plain node host resolves only .ts
|
|
102
|
+
specifiers and the domain re-exports virtualgpu through a .js
|
|
103
|
+
specifier — the family law (a domain the host cannot resolve degrades
|
|
104
|
+
that one lane, never the engine boot) now pins the pattern for every
|
|
105
|
+
future lane that reaches the .js graph.
|
|
106
|
+
- the six heavyweight lanes stay host (probe only): the execution
|
|
107
|
+
wiring of a confidential compute seat or a pod session is the next
|
|
108
|
+
rung, and the registry says so.
|
|
109
|
+
|
|
110
|
+
## the wiring wave (wave four, pr15 — branch wave/ninety.wiring)
|
|
111
|
+
|
|
112
|
+
the wiring wave closed the last gap of the ninety plan: the registry
|
|
113
|
+
carried the ninety records with 81 live and 9 host while the plane
|
|
114
|
+
drove only 73 lanes — seventeen registry-live modalities waited without
|
|
115
|
+
a lane. the wave wired all seventeen, honestly, and the plane table
|
|
116
|
+
now answers the full plan: **90 lanes, 66 live, 24 host.**
|
|
117
|
+
|
|
118
|
+
### the state the wave found
|
|
119
|
+
|
|
120
|
+
- the plane: 73 lanes (61 live, 12 host); the registry live set ahead
|
|
121
|
+
of the lane table by seventeen ids — runner-deno, runner-serverless,
|
|
122
|
+
language-rust, language-cargo, language-v, language-dotnet,
|
|
123
|
+
language-php, language-lua, language-zig, language-nim, runner-wasi,
|
|
124
|
+
fs-gitobjects, storage-sqlite, network-dns, network-doh, build-make
|
|
125
|
+
and build-ninja, every one already live in the registry.
|
|
126
|
+
|
|
127
|
+
### the wiring the wave answered
|
|
128
|
+
|
|
129
|
+
- **edgelandeshost.ts** (group a, +12 lanes): the language toolchains
|
|
130
|
+
(rustc with the compile-then-run seat, cargo with CARGO_HOME and the
|
|
131
|
+
target tree inside the private dir, v with HOME at the temp dir,
|
|
132
|
+
dotnet with the csproj seat and DOTNET_CLI_HOME inside, php, lua, zig
|
|
133
|
+
with the global cache inside, nim with the nimcache inside), the
|
|
134
|
+
runner seats (deno with the scoped read permission and DENO_DIR
|
|
135
|
+
inside, wasi through wasmtime with the base64 module bytes) and the
|
|
136
|
+
build tail (make with the Makefile as the code field, ninja with the
|
|
137
|
+
build.ninja as the code field). every lane probes its binary, runs
|
|
138
|
+
under the hard deadline in the private temp dir and answers the coded
|
|
139
|
+
absence when the host carries no runtime — the twelve ride kind host
|
|
140
|
+
(the runtime probe rung), the twenty-five of the first wave stay kind
|
|
141
|
+
live.
|
|
142
|
+
- **edgelandesinproc.ts** (group b, +5 lanes): the serverless runner
|
|
143
|
+
(the v8 isolate manifest — one fresh node:vm context per run, the
|
|
144
|
+
module fingerprint fnv-1a, the frozen inputs surface), the git
|
|
145
|
+
objects vfs (the loose-object header law and the two-hex-char
|
|
146
|
+
fan-out), the sqlite vault (the hundred-byte page-one header with the
|
|
147
|
+
fnv-1a statement id as the change counter) and the network resolvers
|
|
148
|
+
(the rfc1035 question bytes of dns, the rfc8484 base64url ride of
|
|
149
|
+
doh under the https-only resolver law) — pure ts, deterministic,
|
|
150
|
+
seeded, in-process.
|
|
151
|
+
- **edgelandesninety.ts / edgeplane.ts**: the stale sixty-three
|
|
152
|
+
comments now state the post-wiring truth — ninety lanes, sixty-six
|
|
153
|
+
live, twenty-four host.
|
|
154
|
+
- **the pinned tests**: the host battery 25 → 37 (the twelve wave ids
|
|
155
|
+
in alphabetical order, kind host), the inproc battery 19 → 24 with
|
|
156
|
+
the five samples and the wave four seat laws (the isolate, the
|
|
157
|
+
fan-out, the page and the resolvers), the plane table 61/12 → 66/24,
|
|
158
|
+
and the runner-deno refusal test rewired to the wired truth (a real
|
|
159
|
+
run or the coded absence — the gap it proved is closed).
|
|
160
|
+
|
|
161
|
+
### the verification the wave recorded
|
|
162
|
+
|
|
163
|
+
- saddle: 30 files / **437 tests green** (436 base + 1 seat law test)
|
|
164
|
+
- the build green, dist carrying both lane files
|
|
165
|
+
- biome zero findings on every file the wave touched
|
|
166
|
+
- the live proof: the plane table answers 66 live and 24 host of 90 —
|
|
167
|
+
/api/v1/edge/lanes now reports the ninety probed lanes
|
|
168
|
+
|
|
169
|
+
### the honest notes
|
|
170
|
+
|
|
171
|
+
- the twelve host seats ride kind host with real executors: the plane
|
|
172
|
+
probes the runtime and the executor drives it when the host carries
|
|
173
|
+
it — an absent runtime answers HOST_RUNTIME_ABSENT naming the runtime,
|
|
174
|
+
exactly like the live seats of the first wave (the kind answers the
|
|
175
|
+
rung the table reports, the executor answers the run).
|
|
176
|
+
- the inproc seats stay deterministic: fixed fnv-1a addresses, rfc1035
|
|
177
|
+
big-endian fields and stored hex — no clock, no randomness, the same
|
|
178
|
+
payload answers the same bytes every run.
|
|
179
|
+
- this engine host carries make only: the eleven other runtimes answer
|
|
180
|
+
the coded absence here while the make lane proves a real run — the
|
|
181
|
+
batteries stay green on both kinds of host.
|
|
182
|
+
|
|
183
|
+
## the os nicknames of the owner (reference)
|
|
184
|
+
|
|
185
|
+
sandboxprofile.ts answers five guest os ids — android, grapheneos, linux,
|
|
186
|
+
omarchy, windows — and the owner's spoken names are nicknames of those
|
|
187
|
+
builds, not new ids: marsh (marshmallow) → android, grapenios and grafene
|
|
188
|
+
os → grapheneos, omashi → omarchy, linux normal → linux. the owner's "v"
|
|
189
|
+
names no guest os: it answers the language-v lane of the modality
|
|
190
|
+
registry (the v compiler seat). nothing to add — the vocabulary already
|
|
191
|
+
covers every name the owner used.
|
package/docs/optimization.md
CHANGED
|
File without changes
|
package/docs/packageaudit185.md
CHANGED
|
File without changes
|
package/docs/performance.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -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
|