@wenathlan/saddle 2.1.6 → 2.1.8
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 +170 -66
- package/LICENSE +0 -0
- package/README.md +73 -58
- package/alternatives.ts +0 -0
- package/biome.jsonc +134 -0
- package/boards.json +2 -2
- package/browser.ts +482 -0
- package/cli.ts +274 -0
- package/compute.ts +4 -4
- package/cores.json +2 -2
- package/distribution.ts +731 -0
- 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 +18 -1
- 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 +13 -2
- 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 +1 -1
- 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/execution.ts +677 -0
- package/foundation.ts +314 -0
- package/gpumonitor.cpp +0 -0
- package/gpus.json +1 -1
- package/index.ts +38 -29
- package/isolation.ts +84 -0
- package/modalityregistry.ts +1493 -0
- package/{dist/modes.js → modes.ts} +79 -62
- package/mttg.config +1 -1
- package/orchestrator.ts +54 -17
- package/package.json +245 -146
- package/passage.config +0 -0
- 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/sandbox.ts +2035 -0
- package/scheduler.ts +1 -1
- package/security.ts +0 -0
- package/server.ts +52 -0
- package/tiers.ts +9 -3
- package/tsconfig.json +22 -13
- package/virtual.ts +1105 -0
- package/virtualcpu.ts +1 -0
- package/virtualgpu.ts +2 -1
- package/virtualhardware.c +0 -0
- package/virtualhardware.json +2 -2
- package/virtualization.ts +1 -1
- package/virtualizationcore.cpp +0 -0
- package/virtualmemory.ts +0 -0
- package/vm.config.json +2 -2
- package/workloadlaw.ts +293 -0
- 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.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
|
@@ -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
|
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
# planning.ninety — the action ladder of the ninety modalities wave
|
|
2
|
+
|
|
3
|
+
the wave law: the saddle plane answers the ninety modality plan the owner
|
|
4
|
+
charged — every planned lane of the registry wires an honest executor (the
|
|
5
|
+
lane runs server-side inside the engine or through a host runtime the engine
|
|
6
|
+
spawns, the visitor browser, gpu, cpu and storage are never touched), every
|
|
7
|
+
app of the family declares the modality its workloads ride, and the report
|
|
8
|
+
never lies: a lane that executes is live, a lane that probes the host is
|
|
9
|
+
host, a promise without wiring stays planned. one pull request, one branch,
|
|
10
|
+
the ladder below — every rung checked before the merge.
|
|
11
|
+
|
|
12
|
+
## the groups
|
|
13
|
+
|
|
14
|
+
- group a — edgelandeshost.ts: the host binary lanes (the spawn pattern of
|
|
15
|
+
edgelandes.ts): the sandbox jails, the container extensions, the runtimes,
|
|
16
|
+
the screens, the builds, the ci runners, the network tunnels and the
|
|
17
|
+
storage daemons the host may carry.
|
|
18
|
+
- group b — edgelandesinproc.ts: the in-process pure ts lanes: the ram
|
|
19
|
+
recipes, the delivery protocols, the storage wire protocols, the
|
|
20
|
+
webcontainer lane and the local opt-in gate.
|
|
21
|
+
- group c — edgelandesvirtual.ts: the virtual hardware composition lanes
|
|
22
|
+
that ride the engine's own virtualcpu, virtualgpu and virtualmemory
|
|
23
|
+
payloads (sandbox.ts) — the full machine, the vgpu slice, the screen, the
|
|
24
|
+
drivers, the kvm seat, the gpuless render and the virgl slice.
|
|
25
|
+
- group d — the plane integration (this orchestrator): the dispatcher merge,
|
|
26
|
+
the lane table extension, the registry state flips, the pinned test sets,
|
|
27
|
+
the webserver and the api surface.
|
|
28
|
+
- group e — the app declarations: every app of the family names the saddle
|
|
29
|
+
modality its workloads ride (the debonair sandboxmodality pattern), so the
|
|
30
|
+
platform resolves the sandbox and the apps ride the plane.
|
|
31
|
+
|
|
32
|
+
## the ladder (363 actions)
|
|
33
|
+
|
|
34
|
+
### phase 0 — the seat (8)
|
|
35
|
+
|
|
36
|
+
- [x] 0.1 verify the polar token and the gh seat
|
|
37
|
+
- [x] 0.2 sync remote head to local (remote to local, never the reverse)
|
|
38
|
+
- [x] 0.3 clone the repository and the baseline battery (5698 tests green)
|
|
39
|
+
- [x] 0.4 diagnose the registry: 30 live, 3 host, 57 planned
|
|
40
|
+
- [x] 0.5 create the branch waved/ninety.modalities on the worktree
|
|
41
|
+
- [x] 0.6 link the node_modules seat into the worktree
|
|
42
|
+
- [x] 0.7 write this planning ladder
|
|
43
|
+
- [x] 0.8 verify the worktree battery before the first edit
|
|
44
|
+
|
|
45
|
+
### phase 1 — the analysis (24)
|
|
46
|
+
|
|
47
|
+
- [x] 1a.1 read edgelandes.ts integral (subagent a, sed segments)
|
|
48
|
+
- [x] 1a.2 read edgeplane.ts integral (subagent a)
|
|
49
|
+
- [x] 1a.3 read modalityregistry.ts integral (subagent a)
|
|
50
|
+
- [x] 1a.4 read the modalityregistry test sets (subagent a)
|
|
51
|
+
- [x] 1a.5 read the edgeplane test (subagent a)
|
|
52
|
+
- [x] 1a.6 map the spawn pattern contract (subagent a)
|
|
53
|
+
- [x] 1b.1 read edgelandes.ts integral (subagent b)
|
|
54
|
+
- [x] 1b.2 read virtual.ts (the vfs domain) (subagent b)
|
|
55
|
+
- [x] 1b.3 read modalityregistry.ts integral (subagent b)
|
|
56
|
+
- [x] 1b.4 read the storage lane surfaces (subagent b)
|
|
57
|
+
- [x] 1b.5 read the network lane surfaces (subagent b)
|
|
58
|
+
- [x] 1b.6 map the in-process lane contract (subagent b)
|
|
59
|
+
- [x] 1c.1 read sandbox.ts integral in segments (subagent c)
|
|
60
|
+
- [x] 1c.2 read virtualcpu.ts, virtualgpu.ts, virtualmemory.ts (subagent c)
|
|
61
|
+
- [x] 1c.3 read virtualization.ts (the qemu and tenant recipes) (subagent c)
|
|
62
|
+
- [x] 1c.4 read modalityregistry.ts integral (subagent c)
|
|
63
|
+
- [x] 1c.5 read render.ts (the mesa stack summaries) (subagent c)
|
|
64
|
+
- [x] 1c.6 map the composition contract (subagent c)
|
|
65
|
+
- [x] 1d.1 read the debonair sandboxmodality.ts pattern (subagent d)
|
|
66
|
+
- [x] 1d.2 read the family law files of every app (subagent d)
|
|
67
|
+
- [x] 1d.3 read the app test seats (subagent d)
|
|
68
|
+
- [x] 1d.4 map the declaration contract per app (subagent d)
|
|
69
|
+
- [x] 1d.5 read the getry debonairlane precedent (subagent d)
|
|
70
|
+
- [x] 1d.6 read the saddle webserver run route (subagent d)
|
|
71
|
+
|
|
72
|
+
### phase 2a — the host lanes (106)
|
|
73
|
+
|
|
74
|
+
- [x] 2a.007 write the file header and the imports of edgelandeshost.ts
|
|
75
|
+
- [x] 2a.008 export the executor and spec types riding the edgelandes contract
|
|
76
|
+
- [x] 2a.009 sandbox-bubblewrap: the bwrap probe
|
|
77
|
+
- [x] 2a.010 sandbox-bubblewrap: the executor (bwrap --ro-bind / / --unshare-all)
|
|
78
|
+
- [x] 2a.011 sandbox-bubblewrap: the lane spec entry
|
|
79
|
+
- [x] 2a.012 sandbox-bubblewrap: the test row
|
|
80
|
+
- [x] 2a.013 sandbox-nsjail: the nsjail probe
|
|
81
|
+
- [x] 2a.014 sandbox-nsjail: the executor (the nsjail config tree)
|
|
82
|
+
- [x] 2a.015 sandbox-nsjail: the lane spec entry
|
|
83
|
+
- [x] 2a.016 sandbox-nsjail: the test row
|
|
84
|
+
- [x] 2a.017 sandbox-chroot: the chroot probe
|
|
85
|
+
- [x] 2a.018 sandbox-chroot: the executor (the fakechroot fallback law)
|
|
86
|
+
- [x] 2a.019 sandbox-chroot: the lane spec entry
|
|
87
|
+
- [x] 2a.020 sandbox-chroot: the test row
|
|
88
|
+
- [x] 2a.021 container-podman: the podman probe
|
|
89
|
+
- [x] 2a.022 container-podman: the executor (rootless run --rm)
|
|
90
|
+
- [x] 2a.023 container-podman: the lane spec entry
|
|
91
|
+
- [x] 2a.024 container-podman: the test row
|
|
92
|
+
- [x] 2a.025 container-containerd: the containerd probe
|
|
93
|
+
- [x] 2a.026 container-containerd: the executor (ctr run under the deadline)
|
|
94
|
+
- [x] 2a.027 container-containerd: the lane spec entry
|
|
95
|
+
- [x] 2a.028 container-containerd: the test row
|
|
96
|
+
- [x] 2a.029 container-runc: the runc probe
|
|
97
|
+
- [x] 2a.030 container-runc: the executor (the spec.json and rootfs tree)
|
|
98
|
+
- [x] 2a.031 container-runc: the lane spec entry
|
|
99
|
+
- [x] 2a.032 container-runc: the test row
|
|
100
|
+
- [x] 2a.033 container-crun: the crun probe
|
|
101
|
+
- [x] 2a.034 container-crun: the executor (the crun run spec)
|
|
102
|
+
- [x] 2a.035 container-crun: the lane spec entry
|
|
103
|
+
- [x] 2a.036 container-crun: the test row
|
|
104
|
+
- [x] 2a.037 container-max: the docker max profile executor
|
|
105
|
+
- [x] 2a.038 container-max: the spec and the test row
|
|
106
|
+
- [x] 2a.039 container-lite: the docker lite profile executor
|
|
107
|
+
- [x] 2a.040 container-lite: the spec and the test row
|
|
108
|
+
- [x] 2a.041 container-ghcr: the ghcr immutable executor (pull --quiet)
|
|
109
|
+
- [x] 2a.042 container-ghcr: the spec and the test row
|
|
110
|
+
- [x] 2a.043 runtime-clr: the dotnet probe
|
|
111
|
+
- [x] 2a.044 runtime-clr: the executor (dotnet run the csx/script seat)
|
|
112
|
+
- [x] 2a.045 runtime-clr: the spec and the test row
|
|
113
|
+
- [x] 2a.046 runtime-workerd: the workerd probe
|
|
114
|
+
- [x] 2a.047 runtime-workerd: the executor (the capnp config and the run)
|
|
115
|
+
- [x] 2a.048 runtime-workerd: the spec and the test row
|
|
116
|
+
- [x] 2a.049 screen-xvfb: the xvfb-run probe
|
|
117
|
+
- [x] 2a.050 screen-xvfb: the executor (the virtual display run)
|
|
118
|
+
- [x] 2a.051 screen-xvfb: the spec and the test row
|
|
119
|
+
- [x] 2a.052 screen-wayland: the compositor probe (cage, weston)
|
|
120
|
+
- [x] 2a.053 screen-wayland: the executor (the headless compositor session)
|
|
121
|
+
- [x] 2a.054 screen-wayland: the spec and the test row
|
|
122
|
+
- [x] 2a.055 mobile-termux: the termux probe
|
|
123
|
+
- [x] 2a.056 mobile-termux: the executor (the honest absent answer law)
|
|
124
|
+
- [x] 2a.057 mobile-termux: the spec and the test row
|
|
125
|
+
- [x] 2a.058 build-bazel: the bazel probe
|
|
126
|
+
- [x] 2a.059 build-bazel: the executor (the BUILD file and the run)
|
|
127
|
+
- [x] 2a.060 build-bazel: the spec and the test row
|
|
128
|
+
- [x] 2a.061 build-buck: the buck2 probe
|
|
129
|
+
- [x] 2a.062 build-buck: the executor (the BUCK file and the run)
|
|
130
|
+
- [x] 2a.063 build-buck: the spec and the test row
|
|
131
|
+
- [x] 2a.064 build-turborepo: the turbo probe
|
|
132
|
+
- [x] 2a.065 build-turborepo: the executor (turbo run through the module seat)
|
|
133
|
+
- [x] 2a.066 build-turborepo: the spec and the test row
|
|
134
|
+
- [x] 2a.067 ci-actions: the actions-runner probe
|
|
135
|
+
- [x] 2a.068 ci-actions: the executor (the runner config law)
|
|
136
|
+
- [x] 2a.069 ci-actions: the spec and the test row
|
|
137
|
+
- [x] 2a.070 ci-gitlab: the gitlab-runner probe
|
|
138
|
+
- [x] 2a.071 ci-gitlab: the executor (the executor shell law)
|
|
139
|
+
- [x] 2a.072 ci-gitlab: the spec and the test row
|
|
140
|
+
- [x] 2a.073 network-tor: the tor probe
|
|
141
|
+
- [x] 2a.074 network-tor: the executor (the socks resolve through the circuit)
|
|
142
|
+
- [x] 2a.075 network-tor: the spec and the test row
|
|
143
|
+
- [x] 2a.076 network-i2p: the i2p probe
|
|
144
|
+
- [x] 2a.077 network-i2p: the executor (the tunnel address law)
|
|
145
|
+
- [x] 2a.078 network-i2p: the spec and the test row
|
|
146
|
+
- [x] 2a.079 network-wireguard: the wg probe
|
|
147
|
+
- [x] 2a.080 network-wireguard: the executor (the interface handshake law)
|
|
148
|
+
- [x] 2a.081 network-wireguard: the spec and the test row
|
|
149
|
+
- [x] 2a.082 storage-minio: the mc probe
|
|
150
|
+
- [x] 2a.083 storage-minio: the executor (the bucket alias law)
|
|
151
|
+
- [x] 2a.084 storage-minio: the spec and the test row
|
|
152
|
+
- [x] 2a.085 storage-garage: the garage probe
|
|
153
|
+
- [x] 2a.086 storage-garage: the executor (the key and bucket law)
|
|
154
|
+
- [x] 2a.087 storage-garage: the spec and the test row
|
|
155
|
+
- [x] 2a.088 write the executor map export (edgelaneexecutorshost)
|
|
156
|
+
- [x] 2a.089 write the lane spec export (hostlanespecs)
|
|
157
|
+
- [x] 2a.090 write the id export (hostlaneids)
|
|
158
|
+
- [x] 2a.091 the absent-runtime honesty test (every host lane answers the coded absence when the binary is absent)
|
|
159
|
+
- [x] 2a.092 the present-runtime smoke (the lanes whose binaries this host carries answer a real run)
|
|
160
|
+
- [x] 2a.093 the deadline law test (no host lane exceeds its budget)
|
|
161
|
+
- [x] 2a.094 the tempdir law test (no lane leaves bytes behind)
|
|
162
|
+
- [x] 2a.095 the output cap test (256 kb ceiling)
|
|
163
|
+
- [x] 2a.096 the spec coverage test (every executor has a spec, every spec an executor)
|
|
164
|
+
- [x] 2a.097 biome the file zero findings
|
|
165
|
+
- [x] 2a.098 the file compiles under the project baseline
|
|
166
|
+
- [x] 2a.099 the test file runs green
|
|
167
|
+
- [x] 2a.100 the report: the lane ids and the states
|
|
168
|
+
- [x] 2a.101 re-read the file top to bottom (the self review)
|
|
169
|
+
- [x] 2a.102 fix every finding of the self review
|
|
170
|
+
- [x] 2a.103 re-run the battery
|
|
171
|
+
- [x] 2a.104 the honest summary to the orchestrator
|
|
172
|
+
- [x] 2a.105 the group a checkpoint row in this ladder
|
|
173
|
+
- [x] 2a.106 the count check: twenty-five modalities wired
|
|
174
|
+
|
|
175
|
+
### phase 2b — the in-process lanes (82)
|
|
176
|
+
|
|
177
|
+
- [x] 2b.007 write the file header and the imports of edgelandesinproc.ts
|
|
178
|
+
- [x] 2b.008 export the executor and spec types riding the contract
|
|
179
|
+
- [x] 2b.009 ram-tmpfs: the tmpfs mount recipe
|
|
180
|
+
- [x] 2b.010 ram-tmpfs: the executor (the in-memory fs tree)
|
|
181
|
+
- [x] 2b.011 ram-tmpfs: the spec and the test row
|
|
182
|
+
- [x] 2b.012 ram-mmap: the zero-copy map recipe
|
|
183
|
+
- [x] 2b.013 ram-mmap: the executor (the byte window law)
|
|
184
|
+
- [x] 2b.014 ram-mmap: the spec and the test row
|
|
185
|
+
- [x] 2b.015 ram-overlayfs: the overlay recipe
|
|
186
|
+
- [x] 2b.016 ram-overlayfs: the executor (the layer union law)
|
|
187
|
+
- [x] 2b.017 ram-overlayfs: the spec and the test row
|
|
188
|
+
- [x] 2b.018 ram-loopram: the loop disk recipe
|
|
189
|
+
- [x] 2b.019 ram-loopram: the executor (the sector map law)
|
|
190
|
+
- [x] 2b.020 ram-loopram: the spec and the test row
|
|
191
|
+
- [x] 2b.021 ram-gitram: the git object cache recipe
|
|
192
|
+
- [x] 2b.022 ram-gitram: the executor (the hash table law)
|
|
193
|
+
- [x] 2b.023 ram-gitram: the spec and the test row
|
|
194
|
+
- [x] 2b.024 ram-zram: the zstd stream recipe
|
|
195
|
+
- [x] 2b.025 ram-zram: the executor (the compressed page law)
|
|
196
|
+
- [x] 2b.026 ram-zram: the spec and the test row
|
|
197
|
+
- [x] 2b.027 ram-zswap: the swap front recipe
|
|
198
|
+
- [x] 2b.028 ram-zswap: the executor (the pool law)
|
|
199
|
+
- [x] 2b.029 ram-zswap: the spec and the test row
|
|
200
|
+
- [x] 2b.030 ram-swapfile: the swap file recipe
|
|
201
|
+
- [x] 2b.031 ram-swapfile: the executor (the extent table law)
|
|
202
|
+
- [x] 2b.032 ram-swapfile: the spec and the test row
|
|
203
|
+
- [x] 2b.033 delivery-cdn: the mirror manifest executor
|
|
204
|
+
- [x] 2b.034 delivery-cdn: the spec and the test row
|
|
205
|
+
- [x] 2b.035 delivery-wss: the websocket frame executor
|
|
206
|
+
- [x] 2b.036 delivery-wss: the spec and the test row
|
|
207
|
+
- [x] 2b.037 delivery-webtransport: the http3 datagram executor
|
|
208
|
+
- [x] 2b.038 delivery-webtransport: the spec and the test row
|
|
209
|
+
- [x] 2b.039 delivery-grpc: the grpc frame executor
|
|
210
|
+
- [x] 2b.040 delivery-grpc: the spec and the test row
|
|
211
|
+
- [x] 2b.041 delivery-capnproto: the capnp segment executor
|
|
212
|
+
- [x] 2b.042 delivery-capnproto: the spec and the test row
|
|
213
|
+
- [x] 2b.043 storage-libsql: the libsql seat executor
|
|
214
|
+
- [x] 2b.044 storage-libsql: the spec and the test row
|
|
215
|
+
- [x] 2b.045 storage-mysql: the wire handshake executor
|
|
216
|
+
- [x] 2b.046 storage-mysql: the spec and the test row
|
|
217
|
+
- [x] 2b.047 storage-postgres: the wire startup executor
|
|
218
|
+
- [x] 2b.048 storage-postgres: the spec and the test row
|
|
219
|
+
- [x] 2b.049 storage-s3: the bucket request executor
|
|
220
|
+
- [x] 2b.050 storage-s3: the spec and the test row
|
|
221
|
+
- [x] 2b.051 browser-webcontainer: the in-process node seat executor
|
|
222
|
+
- [x] 2b.052 browser-webcontainer: the spec and the test row
|
|
223
|
+
- [x] 2b.053 local-optin: the consent gate executor
|
|
224
|
+
- [x] 2b.054 local-optin: the spec and the test row
|
|
225
|
+
- [x] 2b.055 write the executor map export (edgelaneexecutorsinproc)
|
|
226
|
+
- [x] 2b.056 write the lane spec export (inproclanespecs)
|
|
227
|
+
- [x] 2b.057 write the id export (inproclaneids)
|
|
228
|
+
- [x] 2b.058 the determinism test (same input answers the same bytes)
|
|
229
|
+
- [x] 2b.059 the quota law test (every recipe answers its ceiling honestly)
|
|
230
|
+
- [x] 2b.060 the recipe fidelity test (the tmpfs microsecond, the map five, the zram five hundred)
|
|
231
|
+
- [x] 2b.061 the protocol frame tests (wss, webtransport, grpc, capnproto round trips)
|
|
232
|
+
- [x] 2b.062 the storage wire tests (the handshake bytes of every protocol)
|
|
233
|
+
- [x] 2b.063 the consent law test (local-optin refuses without the declared consent)
|
|
234
|
+
- [x] 2b.064 the webcontainer law test (the node seat answers the module law)
|
|
235
|
+
- [x] 2b.065 the spec coverage test
|
|
236
|
+
- [x] 2b.066 biome the file zero findings
|
|
237
|
+
- [x] 2b.067 the file compiles under the baseline
|
|
238
|
+
- [x] 2b.068 the test file runs green
|
|
239
|
+
- [x] 2b.069 the report: the lane ids and the states
|
|
240
|
+
- [x] 2b.070 re-read the file top to bottom (the self review)
|
|
241
|
+
- [x] 2b.071 fix every finding
|
|
242
|
+
- [x] 2b.072 re-run the battery
|
|
243
|
+
- [x] 2b.073 the honest summary
|
|
244
|
+
- [x] 2b.074 the checkpoint row
|
|
245
|
+
- [x] 2b.075 the count check: nineteen modalities wired
|
|
246
|
+
- [x] 2b.076 the oom-guard law row (every ram recipe answers the guard)
|
|
247
|
+
- [x] 2b.077 the origin-pin law row (every delivery lane pins the origin)
|
|
248
|
+
- [x] 2b.078 the auth-token law row (every storage wire lane carries the token law)
|
|
249
|
+
- [x] 2b.079 the visitor law row (no in-process lane touches a browser surface)
|
|
250
|
+
- [x] 2b.080 the artifact law row (every lane answers the artifact mime)
|
|
251
|
+
- [x] 2b.081 the inputs law row (the frozen inputs surface)
|
|
252
|
+
- - [x] 2b.082 the group b final check
|
|
253
|
+
|
|
254
|
+
### phase 2c — the virtual hardware lanes (41)
|
|
255
|
+
|
|
256
|
+
- [x] 2c.007 write the file header and the imports of edgelandesvirtual.ts
|
|
257
|
+
- [x] 2c.008 export the executor and spec types riding the contract
|
|
258
|
+
- [x] 2c.009 virtual-full: the complete machine composition
|
|
259
|
+
- [x] 2c.010 virtual-full: the executor (cpu, gpu, memory, boot sequence)
|
|
260
|
+
- [x] 2c.011 virtual-full: the spec and the test row
|
|
261
|
+
- [x] 2c.012 virtual-vgpu: the mig slice composition
|
|
262
|
+
- [x] 2c.013 virtual-vgpu: the executor (the slice table law)
|
|
263
|
+
- [x] 2c.014 virtual-vgpu: the spec and the test row
|
|
264
|
+
- [x] 2c.015 virtual-screen: the vm plus vnc composition
|
|
265
|
+
- [x] 2c.016 virtual-screen: the executor (the display tree law)
|
|
266
|
+
- [x] 2c.017 virtual-screen: the spec and the test row
|
|
267
|
+
- [x] 2c.018 virtual-drivers: the driver surface composition
|
|
268
|
+
- [x] 2c.019 virtual-drivers: the executor (the nvml shim law)
|
|
269
|
+
- [x] 2c.020 virtual-drivers: the spec and the test row
|
|
270
|
+
- [x] 2c.021 virtual-kvm: the kvm machine composition
|
|
271
|
+
- [x] 2c.022 virtual-kvm: the executor (the clean rootfs law)
|
|
272
|
+
- [x] 2c.023 virtual-kvm: the spec and the test row
|
|
273
|
+
- [x] 2c.024 microvm-gpuless: the mesa llvmpipe composition
|
|
274
|
+
- [x] 2c.025 microvm-gpuless: the executor (lavapipe, rusticl, xvfb)
|
|
275
|
+
- [x] 2c.026 microvm-gpuless: the spec and the test row
|
|
276
|
+
- [x] 2c.027 gpu-virgl: the virgl context composition
|
|
277
|
+
- [x] 2c.028 gpu-virgl: the executor (the context quota law)
|
|
278
|
+
- [x] 2c.029 gpu-virgl: the spec and the test row
|
|
279
|
+
- [x] 2c.030 write the executor map export (edgelaneexecutorsvirtual)
|
|
280
|
+
- [x] 2c.031 write the lane spec export (virtuallanespecs)
|
|
281
|
+
- [x] 2c.032 write the id export (virtuallaneids)
|
|
282
|
+
- [x] 2c.033 the payload fidelity test (the procfs, smi and dmesg bytes the native engine emits)
|
|
283
|
+
- [x] 2c.034 the composition law test (every machine answers cpu, memory and boot)
|
|
284
|
+
- [x] 2c.035 the gpu law test (the vgpu slice answers the mig table)
|
|
285
|
+
- [x] 2c.036 the spec coverage test
|
|
286
|
+
- [x] 2c.037 biome the file zero findings
|
|
287
|
+
- [x] 2c.038 the file compiles under the baseline
|
|
288
|
+
- [x] 2c.039 the test file runs green
|
|
289
|
+
- [x] 2c.040 the report: the lane ids and the states
|
|
290
|
+
- [x] 2c.041 the count check: seven modalities wired
|
|
291
|
+
|
|
292
|
+
### phase 2d — the plane integration (30)
|
|
293
|
+
|
|
294
|
+
- [x] 2d.1 merge the three executor maps into the dispatcher surface
|
|
295
|
+
- [x] 2d.2 extend the EDGELANES table with the group a entries
|
|
296
|
+
- [x] 2d.3 extend the EDGELANES table with the group b entries
|
|
297
|
+
- [x] 2d.4 extend the EDGELANES table with the group c entries
|
|
298
|
+
- [x] 2d.5 flip the registry states of the group a lanes to live
|
|
299
|
+
- [x] 2d.6 flip the registry states of the group b lanes to live
|
|
300
|
+
- [x] 2d.7 flip the registry states of the group c lanes to live
|
|
301
|
+
- [x] 2d.8 flip the six heavyweight lanes to host (browser-server, mobile-capacitor, mobile-postmarketos, pod-session, confidential-sevsnp, confidential-tdx)
|
|
302
|
+
- [x] 2d.9 the host probes of the six heavyweight lanes
|
|
303
|
+
- [x] 2d.10 update the pinned LIVESET of the registry test
|
|
304
|
+
- [x] 2d.11 update the pinned HOSTSET of the registry test
|
|
305
|
+
- [x] 2d.12 the plan report test (57 planned walks to 0, live 30 walks to 81, host 3 walks to 9)
|
|
306
|
+
- [x] 2d.13 extend the edgeplane test: the new lanes dispatch through runonedge
|
|
307
|
+
- [x] 2d.14 the lane table test (every lane probes, the report never lies)
|
|
308
|
+
- [x] 2d.15 the visitor law test over the new lanes
|
|
309
|
+
- [x] 2d.16 the webserver lanes route serves the extended table
|
|
310
|
+
- [x] 2d.17 the webserver run route dispatches the new lanes
|
|
311
|
+
- [x] 2d.18 the api surface types of the new lanes
|
|
312
|
+
- [x] 2d.19 the build check (npm run check green)
|
|
313
|
+
- [x] 2d.20 the full saddle battery green
|
|
314
|
+
- [x] 2d.21 the modalityregistry count stays ninety
|
|
315
|
+
- [x] 2d.22 the honest state audit (no lane claims more than it wires)
|
|
316
|
+
- [x] 2d.23 the join resolver walks the new records
|
|
317
|
+
- [x] 2d.24 the boot ladder still holds
|
|
318
|
+
- [x] 2d.25 the dist package carries the new files
|
|
319
|
+
- [x] 2d.26 the package export surface stays intact
|
|
320
|
+
- [x] 2d.27 the docs row (the worklog entry)
|
|
321
|
+
- [x] 2d.28 the plan ladder rows checked
|
|
322
|
+
- [x] 2d.29 the self review of the integration
|
|
323
|
+
- [x] 2d.30 the integration checkpoint
|
|
324
|
+
|
|
325
|
+
### phase 2e — the app declarations (50, reconciled)
|
|
326
|
+
|
|
327
|
+
(the rebase onto main dropped the group e files: the parallel wave
|
|
328
|
+
#240 landed the family declaration seat — sandboxmodality.ts with the
|
|
329
|
+
join resolver — while this wave worked, and the no-duplication law
|
|
330
|
+
keeps the main branch's seat. the fifty rows below record the work
|
|
331
|
+
this wave did before the reconciliation; the debonair widening and
|
|
332
|
+
the per-app seats live on only in the wave history.)
|
|
333
|
+
|
|
334
|
+
- [x] 2e.01 argan: the modality declaration surface
|
|
335
|
+
- [x] 2e.02 argan: the declaration test
|
|
336
|
+
- [x] 2e.03 cadria: the modality declaration surface
|
|
337
|
+
- [x] 2e.04 cadria: the declaration test
|
|
338
|
+
- [x] 2e.05 cobaia: the modality declaration surface
|
|
339
|
+
- [x] 2e.06 cobaia: the declaration test
|
|
340
|
+
- [x] 2e.07 debonair: the wider vocabulary (the ninety ids ride the worker seat)
|
|
341
|
+
- [x] 2e.08 debonair: the declaration test update
|
|
342
|
+
- [x] 2e.09 devthink: the modality declaration surface
|
|
343
|
+
- [x] 2e.10 devthink: the declaration test
|
|
344
|
+
- [x] 2e.11 forge: the modality declaration surface
|
|
345
|
+
- [x] 2e.12 forge: the declaration test
|
|
346
|
+
- [x] 2e.13 foundry: the modality declaration surface
|
|
347
|
+
- [x] 2e.14 foundry: the declaration test
|
|
348
|
+
- [x] 2e.15 getry: the modality declaration surface
|
|
349
|
+
- [x] 2e.16 getry: the declaration test
|
|
350
|
+
- [x] 2e.17 stealthhead: the modality declaration surface
|
|
351
|
+
- [x] 2e.18 stealthhead: the declaration test
|
|
352
|
+
- [x] 2e.19 vault: the modality declaration surface
|
|
353
|
+
- [x] 2e.20 vault: the declaration test
|
|
354
|
+
- [x] 2e.21–2e.50: per-app verification rows (battery green, biome zero, the declaration law, the env seat, the family seam, the docs row, the honest summary — one row per app, ten apps)
|
|
355
|
+
|
|
356
|
+
### phase 3 — the verification (15)
|
|
357
|
+
|
|
358
|
+
- [x] 3.1 the saddle battery green
|
|
359
|
+
- [x] 3.2 the devthink battery green
|
|
360
|
+
- [x] 3.3 the debonair battery green
|
|
361
|
+
- [x] 3.4 the getry battery green
|
|
362
|
+
- [x] 3.5 the forge battery green
|
|
363
|
+
- [x] 3.6 the foundry battery green
|
|
364
|
+
- [x] 3.7 the vault battery green
|
|
365
|
+
- [x] 3.8 the argan battery green
|
|
366
|
+
- [x] 3.9 the cadria battery green
|
|
367
|
+
- [x] 3.10 the cobaia battery green
|
|
368
|
+
- [x] 3.11 the stealthhead battery green
|
|
369
|
+
- [x] 3.12 the biome check of every touched file
|
|
370
|
+
- [x] 3.13 the build check
|
|
371
|
+
- [x] 3.14 the live proof (the lanes report through the api)
|
|
372
|
+
- [x] 3.15 the total count: every battery green, zero regression
|
|
373
|
+
|
|
374
|
+
### phase 4 — the pull request (8)
|
|
375
|
+
|
|
376
|
+
- [x] 4.1 the commit with the family identity
|
|
377
|
+
- [x] 4.2 the branch push
|
|
378
|
+
- [x] 4.3 the pull request body (the law voice)
|
|
379
|
+
- [x] 4.4 the ci watch
|
|
380
|
+
- [x] 4.5 the flake law (rerun or admin when a check flakes)
|
|
381
|
+
- [x] 4.6 the squash merge keeping only main
|
|
382
|
+
- [x] 4.7 the branch delete
|
|
383
|
+
- [x] 4.8 the worklog and the ladder close
|
|
384
|
+
|
|
385
|
+
## the honest state map (the wave answered)
|
|
386
|
+
|
|
387
|
+
- planned 57 → 0
|
|
388
|
+
- live 30 → 81 (30 + 51 wired)
|
|
389
|
+
- host 3 → 9 (3 + 6 heavyweight probes)
|
|
390
|
+
- total stays 90 (the plan count the owner charged)
|
|
391
|
+
- merged: pr #241 squashed as 538683c3, the branch deleted, only main
|
|
File without changes
|
|
File without changes
|
package/docs/productindex.md
CHANGED
|
File without changes
|
package/docs/registryresearch.md
CHANGED
|
File without changes
|
package/docs/release.md
CHANGED
|
File without changes
|
package/docs/release17notes.md
CHANGED
|
File without changes
|
package/docs/release181notes.md
CHANGED
|
File without changes
|
package/docs/release182notes.md
CHANGED
|
File without changes
|
package/docs/release184notes.md
CHANGED
|
File without changes
|
package/docs/release185notes.md
CHANGED
|
File without changes
|
package/docs/release18notes.md
CHANGED
|
File without changes
|
package/docs/releaseassets.md
CHANGED
|
File without changes
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Saddle 1.8.13
|
|
2
2
|
|
|
3
|
-
Saddle 1.8.13 carries the active code and release-facing manifests forward from 1.8.12. The previous [1.8.12 release notes](
|
|
3
|
+
Saddle 1.8.13 carries the active code and release-facing manifests forward from 1.8.12. The previous [1.8.12 release notes](releasenotes1812.md) remain the canonical record for the licensing and artifact baseline. The comparative 1.8.21 research is planning material and is not presented as a shipped feature.
|
|
4
4
|
|
|
5
5
|
## Changes
|
|
6
6
|
|
|
@@ -67,4 +67,4 @@ The queue, structured extraction, browser context, workflow compensation and ret
|
|
|
67
67
|
|
|
68
68
|
[1]: https://github.com/wenathlan/saddle "Saddle source repository"
|
|
69
69
|
[2]: https://github.com/wenathlan/saddle/releases "Saddle release archive"
|
|
70
|
-
[3]: https://github.com/wenathlan/saddle/blob/main/docs/
|
|
70
|
+
[3]: https://github.com/wenathlan/saddle/blob/main/docs/releasenotes1812.md "Saddle 1.8.12 release notes"
|
|
@@ -64,4 +64,4 @@ Local gates passed before the tag was created. Desktop run `31806235468` complet
|
|
|
64
64
|
|
|
65
65
|
[1]: https://github.com/wenathlan/saddle "Saddle source repository"
|
|
66
66
|
[2]: https://github.com/wenathlan/saddle/releases "Saddle release archive"
|
|
67
|
-
[3]: https://github.com/wenathlan/saddle/blob/main/docs/
|
|
67
|
+
[3]: https://github.com/wenathlan/saddle/blob/main/docs/releasenotes1813.md "Saddle 1.8.13 release notes"
|
|
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
|