@wenathlan/saddle 2.1.0 → 2.1.1

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 CHANGED
@@ -94,7 +94,7 @@
94
94
  # -v vmdata:/data/vmdata -v webdata:/data/web \
95
95
  # -v ./vm.config.json:/engine/vm.config.json:ro \
96
96
  # -e PORT=8080 -e NODE_ENV=production -p 31280:8080 \
97
- # ghcr.io/wenathlan/saddle:vhe-2.1.0
97
+ # ghcr.io/wenathlan/saddle:vhe-2.1.1
98
98
  #
99
99
  # vheqemu (the guest runner; build it first with
100
100
  # docker build --target qemu-runtime -t saddle/qemu:11.1.0 . because the
@@ -128,7 +128,7 @@
128
128
  # -e VHE_GPU_PROFILE=b200 -e VHE_GPUS=8 -e VHE_MIG=1 \
129
129
  # -e VHE_SMI_DRIVER=575.57.08 -e VHE_SMI_CUDA=12.9 \
130
130
  # -e VHE_SMI_INTERVAL=30 -e VHE_SKIP_XVFB=1 -e VHE_SKIP_VALIDATE=1 \
131
- # ghcr.io/wenathlan/saddle:vhe-2.1.0 /bin/bash -c '
131
+ # ghcr.io/wenathlan/saddle:vhe-2.1.1 /bin/bash -c '
132
132
  # while true; do
133
133
  # /usr/local/bin/nvidia-smi "$VHE_GPU_PROFILE" "$VHE_GPUS" || true
134
134
  # sleep "$VHE_SMI_INTERVAL"
@@ -145,7 +145,7 @@
145
145
  # -v qemudata:/data/qemudata \
146
146
  # -v ./qemubridge.py:/engine/qemubridge.py:ro \
147
147
  # -e QMP_SOCKET=/run/vhe/vm.qmp -e PYTHONUNBUFFERED=1 \
148
- # ghcr.io/wenathlan/saddle:vhe-2.1.0 \
148
+ # ghcr.io/wenathlan/saddle:vhe-2.1.1 \
149
149
  # python3 /engine/qemubridge.py --socket /run/vhe/vm.qmp status
150
150
  #
151
151
  # saddle-node (the node-engine service, the former compose.yml
@@ -159,7 +159,7 @@
159
159
  # --log-driver json-file --log-opt max-size=50m --log-opt max-file=5 \
160
160
  # --tmpfs /tmp:size=2g,mode=1777 \
161
161
  # -e SADDLE_MEMORY_ENGINE=ram -e SBOT_PLATFORM= -e SBOT_CDN_URL= \
162
- # ghcr.io/wenathlan/saddle:2.1.0 \
162
+ # ghcr.io/wenathlan/saddle:2.1.1 \
163
163
  # node dist/cli.js plan
164
164
  #
165
165
  # observability (the former prometheus scraper of the full profile)
@@ -643,9 +643,15 @@ ENTRYPOINT ["/usr/bin/tini", "--", "qemu-system-x86_64"]
643
643
  # vhe runtime, so BOTH container surfaces can consume its output: the
644
644
  # vhe runtime copies the built web SPA for its /engine/web console and
645
645
  # the saddle-runtime stage copies the engine dist plus the same web
646
- # tree - one build, two consumers).
646
+ # tree - one build, two consumers). The stage runs native (never under
647
+ # QEMU): its outputs are platform-independent static/js payloads.
647
648
 
648
- FROM node:26.8.1-slim AS saddle-build
649
+ # the build stage pins to the native build platform ($BUILDPLATFORM): its
650
+ # outputs (the engine dist, pure js, and the web SPA, static assets) are
651
+ # architecture-independent, while the tailwind/lightningcss pipeline only
652
+ # ships native bindings for the builder platforms - the per-arch legs never
653
+ # run it under QEMU.
654
+ FROM --platform=$BUILDPLATFORM node:26.8.1-slim AS saddle-build
649
655
 
650
656
  ARG SADDLE_VERSION
651
657
  WORKDIR /app
@@ -1265,7 +1271,7 @@ HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --start-interval=5s
1265
1271
  # OCI labels for registry introspection.
1266
1272
  LABEL org.opencontainers.image.title="saddle virtual-hardware engine (the grand merge)" \
1267
1273
  org.opencontainers.image.description="100% software virtual hardware: per-profile CPU/memory spoofing via LD_PRELOAD (max/balanced/lite), mesa 26.2.1 llvmpipe/lavapipe/rusticl, QEMU 11.1.0 TCG/MTTCG, virtual nvidia-smi adapter + NVML/CUDA shims, node 26.7.0, python bridge" \
1268
- org.opencontainers.image.version="2.1.0" \
1274
+ org.opencontainers.image.version="2.1.1" \
1269
1275
  org.opencontainers.image.licenses="MIT" \
1270
1276
  org.opencontainers.image.source="https://github.com/wenathlan/saddle" \
1271
1277
  org.opencontainers.image.documentation="https://github.com/wenathlan/saddle/blob/main/README.md" \
package/boards.json CHANGED
@@ -88,7 +88,7 @@
88
88
  }
89
89
  },
90
90
  "name": "boards.json",
91
- "version": "2.1.0",
91
+ "version": "2.1.1",
92
92
  "title": "saddle - Virtual Motherboard Database (retail boards + platform reference sockets)",
93
93
  "sources": [
94
94
  "pool:boards.json [S6, 20 retail boards]",
package/cores.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "metadata": {
3
3
  "id": "cores.json",
4
- "version": "2.1.0",
4
+ "version": "2.1.1",
5
5
  "date": "2026-08-22",
6
6
  "datestamp": "2026-08-22T00:00:00Z",
7
7
  "observer": "third person observer notes the hybrid core inventory reflects production silicon as of 2026-08-22",
package/docker.config CHANGED
@@ -2,7 +2,7 @@
2
2
  "meta": {
3
3
  "name": "docker.config",
4
4
  "title": "saddle - Docker Engine and Containerization Configuration",
5
- "version": "2.1.0",
5
+ "version": "2.1.1",
6
6
  "date": "2026-08-22",
7
7
  "language": "en",
8
8
  "sources": [
@@ -618,7 +618,7 @@
618
618
  "labels": {
619
619
  "org.opencontainers.image.title": "saddle-v6",
620
620
  "org.opencontainers.image.description": "Saddle v6 virtualization orchestrator with QEMU 11.1.0, Node 22 LTS, Python 3.13.5, MTTG, Passage, OVMF",
621
- "org.opencontainers.image.version": "2.1.0",
621
+ "org.opencontainers.image.version": "2.1.1",
622
622
  "org.opencontainers.image.created": "2026-08-22T00:00:00Z",
623
623
  "org.opencontainers.image.authors": "Saddle Core <core@saddle.dev>",
624
624
  "org.opencontainers.image.url": "https://saddle.dev",
@@ -630,7 +630,7 @@
630
630
  "org.opencontainers.image.base.name": "debian:bookworm-slim",
631
631
  "org.opencontainers.image.base.digest": "sha256:bookworm-slim-pinned-2026-08-22",
632
632
  "saddle": {
633
- "com.saddle.version": "2.1.0",
633
+ "com.saddle.version": "2.1.1",
634
634
  "com.saddle.engine": "qemu-11.1.0",
635
635
  "com.saddle.modes": "32",
636
636
  "com.saddle.forge.mirrors": "github,gitea,forgejo",
package/gpus.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "meta": {
4
4
  "name": "gpus.json",
5
5
  "title": "saddle - Unified Virtual GPU Database",
6
- "version": "2.1.0",
6
+ "version": "2.1.1",
7
7
  "date": "2026-08-22",
8
8
  "language": "en",
9
9
  "description": "Union of the v5 GPU database (7 virtual identity identities), the S6 registry (RX 8900 XTX + Arc B770 unique), Blackwell architecture specs v5+v6 (B100/GB200/RTX 5070/5070 Ti SKUs), gpu.config TOML SKUs (incl. 5 AMD APU RDNA iGPUs) and the 11-entry vfio profile table. PCI device id for RTX PRO 6000 corrected 2BB5->26B5 per canonical v5.",
package/mttg.config CHANGED
@@ -2,7 +2,7 @@
2
2
  "meta": {
3
3
  "name": "mttg.config",
4
4
  "title": "saddle - MTTG Multi-Tenant Task Groups (cgroups v2 + tenants + transcode) with MTTCG (QEMU TCG) section",
5
- "version": "2.1.0",
5
+ "version": "2.1.1",
6
6
  "date": "2026-08-22",
7
7
  "language": "en",
8
8
  "conceptSeparation": "MTTG = Multi-Tenant Task Groups (cgroup v2 cpu.weight/cpuset/memory/io/pids/hugetlb/rdma + tenants + transcode pipelines). MTTCG = QEMU Multi-Threaded TCG (one host thread per vCPU under TCG). Both live here as DISTINCT sections; MTTCG accel flags also in qemu.config#mttcg.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wenathlan/saddle",
3
- "version": "2.1.0",
3
+ "version": "2.1.1",
4
4
  "description": "binary computing engine that turns distributed storage into a publishable working set carrying the merged virtual-hardware engine (the saddle + e2ugh grand merge)",
5
5
  "type": "module",
6
6
  "private": false,
package/passage.config CHANGED
@@ -2,7 +2,7 @@
2
2
  "meta": {
3
3
  "name": "passage.config",
4
4
  "title": "saddle - Passage Configuration (3 homonym domains kept separate + host playbook)",
5
- "version": "2.1.0",
5
+ "version": "2.1.1",
6
6
  "date": "2026-08-22",
7
7
  "language": "en",
8
8
  "conceptSeparation": "'passage' has 3 distinct domains in the pool: (1) gateway - L7 Pingora reverse proxy (routes/upstreams/TLS 1.3); (2) passthrough - PCI device passthrough modes (VFIO/MDEV/MIG/vGPU/SR-IOV/vfio-user/hotplug/KVM/none); (3) network_binding - VM network bridge modes + host port binding (never localhost). A 4th section carries the AetherForge host-side VFIO playbook. Sections are NEVER merged.",
@@ -56,7 +56,7 @@
56
56
  "gateway": {
57
57
  "meta": {
58
58
  "project": "saddle (grand merge)",
59
- "version": "2.1.0",
59
+ "version": "2.1.1",
60
60
  "schema": "passage.config",
61
61
  "schemaversion": "2026.08.22",
62
62
  "engine": "passage gateway v6",
package/processors.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "meta": {
4
4
  "name": "processors.json",
5
5
  "title": "saddle - Unified Virtual Processor Database",
6
- "version": "2.1.0",
6
+ "version": "2.1.1",
7
7
  "date": "2026-08-22",
8
8
  "language": "en",
9
9
  "description": "Union of the v5 canonical CPU database (6 x86_64 identities), the e2ugh processor catalog (55 SKUs incl. ARM/Apple/Xeon; lineage kept), Zen5/X3D microarchitecture specs and pool minis. Field conflicts resolved V5-first (model_name/max_boost_ghz/tdp_watts canonical); OMNI complementary fields (arch, core_type, topology, memory_support, release_date) merged in place. Versions re-pinned date-first 2026-08-22.",
package/qemu.config CHANGED
@@ -2,7 +2,7 @@
2
2
  "meta": {
3
3
  "name": "qemu.config",
4
4
  "title": "saddle - QEMU Configuration (canonical JSON; sources: S6 TOML + v5 spec 11.1.0 + libvirt overlay)",
5
- "version": "2.1.0",
5
+ "version": "2.1.1",
6
6
  "date": "2026-08-22",
7
7
  "language": "en",
8
8
  "format": "JSON (canonical v2 schema; sources were S6 TOML + V5 JSON schema + libvirt conf overlay)",
@@ -90,7 +90,7 @@
90
90
  "githubSetupPython": "actions/setup-python@v5.4.0",
91
91
  "platformKernel": "6.11.0+"
92
92
  },
93
- "version": "2.1.0",
93
+ "version": "2.1.1",
94
94
  "title": "saddle - QEMU Configuration (canonical JSON; sources: S6 TOML + v5 spec 11.1.0 + libvirt overlay)",
95
95
  "project": "e2ugh v6",
96
96
  "toolchainV5": {
@@ -3,7 +3,7 @@
3
3
  "meta": {
4
4
  "name": "e2ugh",
5
5
  "title": "e2ugh v6 - Master Schema, Cross-References and Compatibility Matrix",
6
- "version": "2.1.0",
6
+ "version": "2.1.1",
7
7
  "date": "2026-08-22",
8
8
  "language": "en",
9
9
  "description": "Master schema of the e2ugh v6 virtual hardware engine: binds the 10 specification files (cpu, cores, boards, gpu, vm.config, passage, docker, qemu, mttcg, mesa), defines the modularity ranges (vCPU 1-192, RAM 1-1024 GB, vRAM 8-96 GB via MIG), defaults, validation rules and the pinned 2026-08-22 compatibility matrix.",
package/vm.config.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "meta": {
4
4
  "name": "vm.config.json",
5
5
  "title": "e2ugh v6 - VM Profiles and Orchestrator Configuration (canonical schema)",
6
- "version": "2.1.0",
6
+ "version": "2.1.1",
7
7
  "date": "2026-08-22",
8
8
  "language": "en",
9
9
  "description": "22 VM profiles consumed by the VHE orchestrator. Each profile binds a CPU identity (cpu.json), core count (cores.json), board (boards.json), GPU profile (gpu.json) and runtime (qemu.json, docker.json, mesa.json). Accel policy: KVM preferred when /dev/kvm exists, TCG multi-thread fallback on GitHub-hosted runners (see passage.json).",
package/web/manifest.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": 3,
3
3
  "name": "Saddle browser bridge",
4
- "version": "2.1.0",
4
+ "version": "2.1.1",
5
5
  "description": "User initiated page snapshots through the Saddle browser contract.",
6
6
  "minimum_chrome_version": "110",
7
7
  "permissions": [
package/web/readme.md CHANGED
@@ -5,7 +5,7 @@ virtual container — cpu, ram, gpu, mesa software graphics — entirely in the
5
5
  browser, plus one self-hosted node api exposing the exact same sandbox over
6
6
  http for automation. no framework, no build step, no serverless functions.
7
7
 
8
- version 2.1.0 — reported by `/api/v1/health` and kept in lockstep with
8
+ version 2.1.1 — reported by `/api/v1/health` and kept in lockstep with
9
9
  `package.json` and the `meta.version` envelope of the ten data documents
10
10
  (v6-SYNC worklog task).
11
11
 
@@ -61,7 +61,7 @@ vm:stopped, vm:deleted).
61
61
  | `schema.prisma` / `init.sql` / `drizzle.config.ts` | the three schema mirrors of the db.js migrations (prisma, raw sql, drizzle kit) |
62
62
  | `mime.types` | the extension to content-type table parsed by server.js at boot |
63
63
  | `index.html` + `main.tsx` + `App.tsx` | the React app entry (vite build; the Pages-published surface) |
64
- | page folders `Home/` … `NotFound/` + loose files (`PageShell`, `SiteHeader`, `SaddleMark`, `SectionRail`, `RuntimeDiagram`, `ErrorBoundary`, `button.tsx`, `card.tsx`, `tooltip.tsx`, `sonner.tsx`, `utils.ts`, `paths.ts`, `ThemeContext.tsx`) | the flattened React app that sits beside the console files at the web root (2.1.0 wave: one folder per route, shared files loose at the root) |
64
+ | page folders `Home/` … `NotFound/` + loose files (`PageShell`, `SiteHeader`, `SaddleMark`, `SectionRail`, `RuntimeDiagram`, `ErrorBoundary`, `button.tsx`, `card.tsx`, `tooltip.tsx`, `sonner.tsx`, `utils.ts`, `paths.ts`, `ThemeContext.tsx`) | the flattened React app that sits beside the console files at the web root (2.1.1 wave: one folder per route, shared files loose at the root) |
65
65
  | `package.json` | deploy manifest only (`@wenathlan/saddle-web`, private, never published): vercel/netlify require it at the deploy root; the published npm package is the central `@wenathlan/saddle` without web |
66
66
  | `Dockerfile` (repo root) | container image for ghcr.io/wenathlan/saddle (the main image; web/ ships inside) |
67
67
  | `vercel.json` (repo root) | static hosting config for the React SPA (`outputDirectory: web/dist/public`, SPA rewrite), **no functions** |