@wenathlan/saddle 2.0.170 → 2.0.172
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 +281 -29
- package/README.md +1 -1
- package/docker.config +1 -1
- package/docs/ninetymodalities.md +32 -0
- package/modalities.ts +63 -15
- package/package.json +37 -34
- package/sandbox.ts +24 -2
- package/tsconfig.json +3 -0
package/Dockerfile
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# saddle 2.0.
|
|
1
|
+
# saddle 2.0.171 — THE ENGINE CONTAINER FILE
|
|
2
2
|
#
|
|
3
3
|
# THE FAMILY CONTAINER DOCTRINE, THE SADDLE SHAPE: one versioned container
|
|
4
4
|
# per engine, built like the site homes (argan, cadria) build theirs — a
|
|
@@ -158,7 +158,7 @@ ARG NODE_BASE_DIGEST=5adad64f9a1fca2d51972caa65983634c8a774eb300d72b20f7f2a0f603
|
|
|
158
158
|
# ===== stage: solbuild — the locked npm tree and the console spa =====
|
|
159
159
|
FROM --platform=$BUILDPLATFORM ${NODE_BASE_TAG}@sha256:${NODE_BASE_DIGEST} AS solbuild
|
|
160
160
|
|
|
161
|
-
ARG SADDLE_VERSION=2.0.
|
|
161
|
+
ARG SADDLE_VERSION=2.0.171
|
|
162
162
|
|
|
163
163
|
WORKDIR /app
|
|
164
164
|
|
|
@@ -192,7 +192,7 @@ RUN npm run web:build:pages \
|
|
|
192
192
|
# ===== stage: base — the hardened runtime floor every profile shares =====
|
|
193
193
|
FROM ${NODE_BASE_TAG}@sha256:${NODE_BASE_DIGEST} AS base
|
|
194
194
|
|
|
195
|
-
ARG SADDLE_VERSION=2.0.
|
|
195
|
+
ARG SADDLE_VERSION=2.0.171
|
|
196
196
|
# the revision stamp the devthink container carries (DEVTHINK_REVISION
|
|
197
197
|
# there): the publish legs pass the release sha at build time and the
|
|
198
198
|
# revision label below declares the default-unknown local shape.
|
|
@@ -307,6 +307,76 @@ RUN apt-get update \
|
|
|
307
307
|
# degrades to a no-op at runtime - the sources are dead weight.
|
|
308
308
|
&& rm -rf node_modules/cpu-features/deps \
|
|
309
309
|
&& find node_modules -type f -name Dockerfile -delete
|
|
310
|
+
# THE TOOLCHAIN LAYER — the fourteen planned seats walk live (the pr13
|
|
311
|
+
# completion law): the engine host carries the runtimes the language,
|
|
312
|
+
# build and wasi seats spawn, every carrier pinned to the exact version
|
|
313
|
+
# the engines catalog answers and the assert after every install proving
|
|
314
|
+
# the binary answers its version. the apt lanes (make, ninja, lua, php,
|
|
315
|
+
# the gcc toolchain the v and nim codegen rides) install on every arch
|
|
316
|
+
# leg debian ships them for; the prefab carriers (rustup 1.99.1, zig
|
|
317
|
+
# 0.17.1, wasmtime 50.0.1, v 0.5.2, nim 2.4.0, dotnet sdk 10.0.403)
|
|
318
|
+
# ride the two native legs (amd64, arm64) their publishers ship — the
|
|
319
|
+
# exotic legs (ppc64le, s390x) answer the honest coded absence the
|
|
320
|
+
# seats' probes name at dispatch (HOST_RUNTIME_ABSENT — the seat never
|
|
321
|
+
# fakes a run), the same law the arch case above carries.
|
|
322
|
+
RUN set -eux; \
|
|
323
|
+
arch="${TARGETARCH:-$(dpkg --print-architecture)}"; \
|
|
324
|
+
apt-get update; \
|
|
325
|
+
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
|
|
326
|
+
build-essential ca-certificates curl git lua5.4 ninja-build php-cli unzip xz-utils; \
|
|
327
|
+
ln -sf /usr/bin/lua5.4 /usr/local/bin/lua; \
|
|
328
|
+
make --version | head -1; \
|
|
329
|
+
ninja --version; \
|
|
330
|
+
lua -v; \
|
|
331
|
+
php --version | head -1; \
|
|
332
|
+
case "$arch" in \
|
|
333
|
+
amd64|arm64) \
|
|
334
|
+
rustuparch="x86_64-unknown-linux-gnu"; \
|
|
335
|
+
[ "$arch" = "arm64" ] && rustuparch="aarch64-unknown-linux-gnu"; \
|
|
336
|
+
curl -fsS https://sh.rustup.rs -o /tmp/rustup-init.sh; \
|
|
337
|
+
sh /tmp/rustup-init.sh -y --profile minimal --default-toolchain 1.99.1 \
|
|
338
|
+
--no-modify-path --default-host "$rustuparch"; \
|
|
339
|
+
rustctool="/root/.rustup/toolchains/1.99.1-${rustuparch}/bin"; \
|
|
340
|
+
ln -sf "$rustctool/rustc" /usr/local/bin/rustc; \
|
|
341
|
+
ln -sf "$rustctool/cargo" /usr/local/bin/cargo; \
|
|
342
|
+
rustc --version; \
|
|
343
|
+
cargo --version; \
|
|
344
|
+
zigarch="x86_64"; [ "$arch" = "arm64" ] && zigarch="aarch64"; \
|
|
345
|
+
curl -fsSL "https://ziglang.org/download/0.17.1/zig-linux-${zigarch}-0.17.1.tar.xz" \
|
|
346
|
+
-o /tmp/zig.tar.xz; \
|
|
347
|
+
mkdir -p /opt/zig; \
|
|
348
|
+
tar -xJf /tmp/zig.tar.xz --strip-components=1 -C /opt/zig; \
|
|
349
|
+
ln -sf /opt/zig/zig /usr/local/bin/zig; \
|
|
350
|
+
zig version; \
|
|
351
|
+
wasmtimearch="x86_64"; [ "$arch" = "arm64" ] && wasmtimearch="aarch64"; \
|
|
352
|
+
curl -fsSL "https://github.com/bytecodealliance/wasmtime/releases/download/v50.0.1/wasmtime-v50.0.1-${wasmtimearch}-linux.tar.xz" \
|
|
353
|
+
-o /tmp/wasmtime.tar.xz; \
|
|
354
|
+
mkdir -p /opt/wasmtime; \
|
|
355
|
+
tar -xJf /tmp/wasmtime.tar.xz --strip-components=1 -C /opt/wasmtime; \
|
|
356
|
+
ln -sf /opt/wasmtime/wasmtime /usr/local/bin/wasmtime; \
|
|
357
|
+
wasmtime --version; \
|
|
358
|
+
git clone --depth 1 --branch 0.5.2 https://github.com/vlang/v.git /opt/v; \
|
|
359
|
+
make -C /opt/v; \
|
|
360
|
+
ln -sf /opt/v/v /usr/local/bin/v; \
|
|
361
|
+
v version; \
|
|
362
|
+
git clone --depth 1 --branch v2.4.0 https://github.com/nim-lang/Nim.git /opt/nim; \
|
|
363
|
+
sh -c 'cd /opt/nim && sh build_all.sh'; \
|
|
364
|
+
ln -sf /opt/nim/bin/nim /usr/local/bin/nim; \
|
|
365
|
+
nim --version | head -1; \
|
|
366
|
+
curl -fsSL https://dot.net/v1/dotnet-install.sh -o /tmp/dotnet-install.sh; \
|
|
367
|
+
bash /tmp/dotnet-install.sh --channel 10.0 --version 10.0.403 --install-dir /usr/share/dotnet; \
|
|
368
|
+
ln -sf /usr/share/dotnet/dotnet /usr/local/bin/dotnet; \
|
|
369
|
+
dotnet --version; \
|
|
370
|
+
;; \
|
|
371
|
+
*) \
|
|
372
|
+
echo "the toolchain layer answers the honest coded absence on ${arch}: the prefab carriers ship amd64 and arm64 alone (the seats' probes name the requirement at dispatch)" ;; \
|
|
373
|
+
esac; \
|
|
374
|
+
rm -rf /var/lib/apt/lists/* /tmp/* /opt/nim/.git /opt/v/.git; \
|
|
375
|
+
mkdir -p /sandbox && chown node:node /sandbox
|
|
376
|
+
ENV DOTNET_CLI_TELEMETRY_OPTOUT=1 \
|
|
377
|
+
DOTNET_NOLOGO=1 \
|
|
378
|
+
DOTNET_CLI_HOME=/sandbox/dotnet-home \
|
|
379
|
+
DOTNET_CLI_LANGUAGE=en
|
|
310
380
|
# the web service surface (self-hosted console): the staged spa plus the
|
|
311
381
|
# pure-node server stack - zero npm dependencies, the node 26 runtime
|
|
312
382
|
# carries everything (node:sqlite, node:crypto, native type stripping
|
|
@@ -509,9 +579,23 @@ LABEL org.opencontainers.image.title="saddle (the android os-distribution lane)"
|
|
|
509
579
|
# docker build --target osv -t saddle:2.0.165-v .
|
|
510
580
|
# docker build --target oswindows -t saddle:2.0.165-windows .
|
|
511
581
|
FROM scratch AS osgrapheneos
|
|
512
|
-
ARG SADDLE_VERSION=2.0.
|
|
582
|
+
ARG SADDLE_VERSION=2.0.171
|
|
513
583
|
ARG SADDLE_OS_PROFILE="grapheneos"
|
|
514
|
-
|
|
584
|
+
ARG SADDLE_TIER="max"
|
|
585
|
+
ARG VHE_PROFILE_CPU="epyc9965"
|
|
586
|
+
ARG VHE_PROFILE_VCPUS="192"
|
|
587
|
+
ARG VHE_PROFILE_THREADS="384"
|
|
588
|
+
ARG VHE_PROFILE_RAM_GB="1024"
|
|
589
|
+
ARG VHE_PROFILE_GPU="b200"
|
|
590
|
+
ARG VHE_PROFILE_GPUS="8"
|
|
591
|
+
ENV SADDLE_OS_PROFILE=grapheneos \
|
|
592
|
+
SADDLE_PROFILE=${SADDLE_TIER} \
|
|
593
|
+
SADDLE_PROFILE_CPU=${VHE_PROFILE_CPU} \
|
|
594
|
+
SADDLE_PROFILE_VCPUS=${VHE_PROFILE_VCPUS} \
|
|
595
|
+
SADDLE_PROFILE_THREADS=${VHE_PROFILE_THREADS} \
|
|
596
|
+
SADDLE_PROFILE_RAM_GB=${VHE_PROFILE_RAM_GB} \
|
|
597
|
+
SADDLE_PROFILE_GPU=${VHE_PROFILE_GPU} \
|
|
598
|
+
SADDLE_PROFILE_GPUS=${VHE_PROFILE_GPUS}
|
|
515
599
|
LABEL org.opencontainers.image.title="saddle (the grapheneos os-distribution catalog lane)" \
|
|
516
600
|
org.opencontainers.image.description="the grapheneos os-distribution seat as a catalog lane: a privacy and security hardened version of android — no runnable container base exists for an android firmware seat, the lane publishes the profile config the engine reads." \
|
|
517
601
|
org.opencontainers.image.version="${SADDLE_VERSION}" \
|
|
@@ -520,9 +604,23 @@ LABEL org.opencontainers.image.title="saddle (the grapheneos os-distribution cat
|
|
|
520
604
|
COPY osprofiles/grapheneos.json /saddle/osprofile.json
|
|
521
605
|
|
|
522
606
|
FROM scratch AS osmaruos
|
|
523
|
-
ARG SADDLE_VERSION=2.0.
|
|
607
|
+
ARG SADDLE_VERSION=2.0.171
|
|
524
608
|
ARG SADDLE_OS_PROFILE="maruos"
|
|
525
|
-
|
|
609
|
+
ARG SADDLE_TIER="max"
|
|
610
|
+
ARG VHE_PROFILE_CPU="epyc9965"
|
|
611
|
+
ARG VHE_PROFILE_VCPUS="192"
|
|
612
|
+
ARG VHE_PROFILE_THREADS="384"
|
|
613
|
+
ARG VHE_PROFILE_RAM_GB="1024"
|
|
614
|
+
ARG VHE_PROFILE_GPU="b200"
|
|
615
|
+
ARG VHE_PROFILE_GPUS="8"
|
|
616
|
+
ENV SADDLE_OS_PROFILE=maruos \
|
|
617
|
+
SADDLE_PROFILE=${SADDLE_TIER} \
|
|
618
|
+
SADDLE_PROFILE_CPU=${VHE_PROFILE_CPU} \
|
|
619
|
+
SADDLE_PROFILE_VCPUS=${VHE_PROFILE_VCPUS} \
|
|
620
|
+
SADDLE_PROFILE_THREADS=${VHE_PROFILE_THREADS} \
|
|
621
|
+
SADDLE_PROFILE_RAM_GB=${VHE_PROFILE_RAM_GB} \
|
|
622
|
+
SADDLE_PROFILE_GPU=${VHE_PROFILE_GPU} \
|
|
623
|
+
SADDLE_PROFILE_GPUS=${VHE_PROFILE_GPUS}
|
|
526
624
|
LABEL org.opencontainers.image.title="saddle (the maru os os-distribution catalog lane)" \
|
|
527
625
|
org.opencontainers.image.description="the maru os os-distribution seat as a catalog lane: maru os is firmware, not an application — no runnable container base exists for a firmware seat, the lane publishes the profile config the engine reads." \
|
|
528
626
|
org.opencontainers.image.version="${SADDLE_VERSION}" \
|
|
@@ -531,9 +629,23 @@ LABEL org.opencontainers.image.title="saddle (the maru os os-distribution catalo
|
|
|
531
629
|
COPY osprofiles/maruos.json /saddle/osprofile.json
|
|
532
630
|
|
|
533
631
|
FROM scratch AS osv
|
|
534
|
-
ARG SADDLE_VERSION=2.0.
|
|
632
|
+
ARG SADDLE_VERSION=2.0.171
|
|
535
633
|
ARG SADDLE_OS_PROFILE="v"
|
|
536
|
-
|
|
634
|
+
ARG SADDLE_TIER="max"
|
|
635
|
+
ARG VHE_PROFILE_CPU="epyc9965"
|
|
636
|
+
ARG VHE_PROFILE_VCPUS="192"
|
|
637
|
+
ARG VHE_PROFILE_THREADS="384"
|
|
638
|
+
ARG VHE_PROFILE_RAM_GB="1024"
|
|
639
|
+
ARG VHE_PROFILE_GPU="b200"
|
|
640
|
+
ARG VHE_PROFILE_GPUS="8"
|
|
641
|
+
ENV SADDLE_OS_PROFILE=v \
|
|
642
|
+
SADDLE_PROFILE=${SADDLE_TIER} \
|
|
643
|
+
SADDLE_PROFILE_CPU=${VHE_PROFILE_CPU} \
|
|
644
|
+
SADDLE_PROFILE_VCPUS=${VHE_PROFILE_VCPUS} \
|
|
645
|
+
SADDLE_PROFILE_THREADS=${VHE_PROFILE_THREADS} \
|
|
646
|
+
SADDLE_PROFILE_RAM_GB=${VHE_PROFILE_RAM_GB} \
|
|
647
|
+
SADDLE_PROFILE_GPU=${VHE_PROFILE_GPU} \
|
|
648
|
+
SADDLE_PROFILE_GPUS=${VHE_PROFILE_GPUS}
|
|
537
649
|
LABEL org.opencontainers.image.title="saddle (the v os-distribution catalog lane)" \
|
|
538
650
|
org.opencontainers.image.description="the v os-distribution seat as a catalog lane: the v language platform target the languagev compiler seat of the ninety modalities answers, never a guest distribution — the lane publishes the profile config the engine reads." \
|
|
539
651
|
org.opencontainers.image.version="${SADDLE_VERSION}" \
|
|
@@ -542,9 +654,23 @@ LABEL org.opencontainers.image.title="saddle (the v os-distribution catalog lane
|
|
|
542
654
|
COPY osprofiles/v.json /saddle/osprofile.json
|
|
543
655
|
|
|
544
656
|
FROM scratch AS oswindows
|
|
545
|
-
ARG SADDLE_VERSION=2.0.
|
|
657
|
+
ARG SADDLE_VERSION=2.0.171
|
|
546
658
|
ARG SADDLE_OS_PROFILE="windows"
|
|
547
|
-
|
|
659
|
+
ARG SADDLE_TIER="max"
|
|
660
|
+
ARG VHE_PROFILE_CPU="epyc9965"
|
|
661
|
+
ARG VHE_PROFILE_VCPUS="192"
|
|
662
|
+
ARG VHE_PROFILE_THREADS="384"
|
|
663
|
+
ARG VHE_PROFILE_RAM_GB="1024"
|
|
664
|
+
ARG VHE_PROFILE_GPU="b200"
|
|
665
|
+
ARG VHE_PROFILE_GPUS="8"
|
|
666
|
+
ENV SADDLE_OS_PROFILE=windows \
|
|
667
|
+
SADDLE_PROFILE=${SADDLE_TIER} \
|
|
668
|
+
SADDLE_PROFILE_CPU=${VHE_PROFILE_CPU} \
|
|
669
|
+
SADDLE_PROFILE_VCPUS=${VHE_PROFILE_VCPUS} \
|
|
670
|
+
SADDLE_PROFILE_THREADS=${VHE_PROFILE_THREADS} \
|
|
671
|
+
SADDLE_PROFILE_RAM_GB=${VHE_PROFILE_RAM_GB} \
|
|
672
|
+
SADDLE_PROFILE_GPU=${VHE_PROFILE_GPU} \
|
|
673
|
+
SADDLE_PROFILE_GPUS=${VHE_PROFILE_GPUS}
|
|
548
674
|
LABEL org.opencontainers.image.title="saddle (the windows os-distribution catalog lane)" \
|
|
549
675
|
org.opencontainers.image.description="the windows os-distribution seat as a catalog lane: the guest vocabulary the exe seats execute — the container standard answers the windows seats as binary targets, the lane publishes the profile config the engine reads." \
|
|
550
676
|
org.opencontainers.image.version="${SADDLE_VERSION}" \
|
|
@@ -553,9 +679,23 @@ LABEL org.opencontainers.image.title="saddle (the windows os-distribution catalo
|
|
|
553
679
|
COPY osprofiles/windows.json /saddle/osprofile.json
|
|
554
680
|
|
|
555
681
|
FROM scratch AS ospostmarketos
|
|
556
|
-
ARG SADDLE_VERSION=2.0.
|
|
682
|
+
ARG SADDLE_VERSION=2.0.171
|
|
557
683
|
ARG SADDLE_OS_PROFILE="postmarketos"
|
|
558
|
-
|
|
684
|
+
ARG SADDLE_TIER="max"
|
|
685
|
+
ARG VHE_PROFILE_CPU="epyc9965"
|
|
686
|
+
ARG VHE_PROFILE_VCPUS="192"
|
|
687
|
+
ARG VHE_PROFILE_THREADS="384"
|
|
688
|
+
ARG VHE_PROFILE_RAM_GB="1024"
|
|
689
|
+
ARG VHE_PROFILE_GPU="b200"
|
|
690
|
+
ARG VHE_PROFILE_GPUS="8"
|
|
691
|
+
ENV SADDLE_OS_PROFILE=postmarketos \
|
|
692
|
+
SADDLE_PROFILE=${SADDLE_TIER} \
|
|
693
|
+
SADDLE_PROFILE_CPU=${VHE_PROFILE_CPU} \
|
|
694
|
+
SADDLE_PROFILE_VCPUS=${VHE_PROFILE_VCPUS} \
|
|
695
|
+
SADDLE_PROFILE_THREADS=${VHE_PROFILE_THREADS} \
|
|
696
|
+
SADDLE_PROFILE_RAM_GB=${VHE_PROFILE_RAM_GB} \
|
|
697
|
+
SADDLE_PROFILE_GPU=${VHE_PROFILE_GPU} \
|
|
698
|
+
SADDLE_PROFILE_GPUS=${VHE_PROFILE_GPUS}
|
|
559
699
|
LABEL org.opencontainers.image.title="saddle (the postmarketos os-distribution catalog lane)" \
|
|
560
700
|
org.opencontainers.image.description="the postmarketos os-distribution seat as a catalog lane: postmarketos is the alpine-based mobile distribution real devices boot — no runnable container base exists for this seat, the lane publishes the profile config the engine reads." \
|
|
561
701
|
org.opencontainers.image.version="${SADDLE_VERSION}" \
|
|
@@ -564,9 +704,23 @@ LABEL org.opencontainers.image.title="saddle (the postmarketos os-distribution c
|
|
|
564
704
|
COPY osprofiles/postmarketos.json /saddle/osprofile.json
|
|
565
705
|
|
|
566
706
|
FROM scratch AS oslineageos
|
|
567
|
-
ARG SADDLE_VERSION=2.0.
|
|
707
|
+
ARG SADDLE_VERSION=2.0.171
|
|
568
708
|
ARG SADDLE_OS_PROFILE="lineageos"
|
|
569
|
-
|
|
709
|
+
ARG SADDLE_TIER="max"
|
|
710
|
+
ARG VHE_PROFILE_CPU="epyc9965"
|
|
711
|
+
ARG VHE_PROFILE_VCPUS="192"
|
|
712
|
+
ARG VHE_PROFILE_THREADS="384"
|
|
713
|
+
ARG VHE_PROFILE_RAM_GB="1024"
|
|
714
|
+
ARG VHE_PROFILE_GPU="b200"
|
|
715
|
+
ARG VHE_PROFILE_GPUS="8"
|
|
716
|
+
ENV SADDLE_OS_PROFILE=lineageos \
|
|
717
|
+
SADDLE_PROFILE=${SADDLE_TIER} \
|
|
718
|
+
SADDLE_PROFILE_CPU=${VHE_PROFILE_CPU} \
|
|
719
|
+
SADDLE_PROFILE_VCPUS=${VHE_PROFILE_VCPUS} \
|
|
720
|
+
SADDLE_PROFILE_THREADS=${VHE_PROFILE_THREADS} \
|
|
721
|
+
SADDLE_PROFILE_RAM_GB=${VHE_PROFILE_RAM_GB} \
|
|
722
|
+
SADDLE_PROFILE_GPU=${VHE_PROFILE_GPU} \
|
|
723
|
+
SADDLE_PROFILE_GPUS=${VHE_PROFILE_GPUS}
|
|
570
724
|
LABEL org.opencontainers.image.title="saddle (the lineageos os-distribution catalog lane)" \
|
|
571
725
|
org.opencontainers.image.description="the lineageos os-distribution seat as a catalog lane: lineageos is the community android continuation — the aftermarket mobile seat on the arm64 legs, the lane publishes the profile config the engine reads." \
|
|
572
726
|
org.opencontainers.image.version="${SADDLE_VERSION}" \
|
|
@@ -575,9 +729,23 @@ LABEL org.opencontainers.image.title="saddle (the lineageos os-distribution cata
|
|
|
575
729
|
COPY osprofiles/lineageos.json /saddle/osprofile.json
|
|
576
730
|
|
|
577
731
|
FROM scratch AS oscalyxos
|
|
578
|
-
ARG SADDLE_VERSION=2.0.
|
|
732
|
+
ARG SADDLE_VERSION=2.0.171
|
|
579
733
|
ARG SADDLE_OS_PROFILE="calyxos"
|
|
580
|
-
|
|
734
|
+
ARG SADDLE_TIER="max"
|
|
735
|
+
ARG VHE_PROFILE_CPU="epyc9965"
|
|
736
|
+
ARG VHE_PROFILE_VCPUS="192"
|
|
737
|
+
ARG VHE_PROFILE_THREADS="384"
|
|
738
|
+
ARG VHE_PROFILE_RAM_GB="1024"
|
|
739
|
+
ARG VHE_PROFILE_GPU="b200"
|
|
740
|
+
ARG VHE_PROFILE_GPUS="8"
|
|
741
|
+
ENV SADDLE_OS_PROFILE=calyxos \
|
|
742
|
+
SADDLE_PROFILE=${SADDLE_TIER} \
|
|
743
|
+
SADDLE_PROFILE_CPU=${VHE_PROFILE_CPU} \
|
|
744
|
+
SADDLE_PROFILE_VCPUS=${VHE_PROFILE_VCPUS} \
|
|
745
|
+
SADDLE_PROFILE_THREADS=${VHE_PROFILE_THREADS} \
|
|
746
|
+
SADDLE_PROFILE_RAM_GB=${VHE_PROFILE_RAM_GB} \
|
|
747
|
+
SADDLE_PROFILE_GPU=${VHE_PROFILE_GPU} \
|
|
748
|
+
SADDLE_PROFILE_GPUS=${VHE_PROFILE_GPUS}
|
|
581
749
|
LABEL org.opencontainers.image.title="saddle (the calyxos os-distribution catalog lane)" \
|
|
582
750
|
org.opencontainers.image.description="the calyxos os-distribution seat as a catalog lane: calyxos is the privacy-focused android distribution, the hardened mobile seat beside grapheneos — the lane publishes the profile config the engine reads." \
|
|
583
751
|
org.opencontainers.image.version="${SADDLE_VERSION}" \
|
|
@@ -586,9 +754,23 @@ LABEL org.opencontainers.image.title="saddle (the calyxos os-distribution catalo
|
|
|
586
754
|
COPY osprofiles/calyxos.json /saddle/osprofile.json
|
|
587
755
|
|
|
588
756
|
FROM scratch AS osarchlinux
|
|
589
|
-
ARG SADDLE_VERSION=2.0.
|
|
757
|
+
ARG SADDLE_VERSION=2.0.171
|
|
590
758
|
ARG SADDLE_OS_PROFILE="archlinux"
|
|
591
|
-
|
|
759
|
+
ARG SADDLE_TIER="max"
|
|
760
|
+
ARG VHE_PROFILE_CPU="epyc9965"
|
|
761
|
+
ARG VHE_PROFILE_VCPUS="192"
|
|
762
|
+
ARG VHE_PROFILE_THREADS="384"
|
|
763
|
+
ARG VHE_PROFILE_RAM_GB="1024"
|
|
764
|
+
ARG VHE_PROFILE_GPU="b200"
|
|
765
|
+
ARG VHE_PROFILE_GPUS="8"
|
|
766
|
+
ENV SADDLE_OS_PROFILE=archlinux \
|
|
767
|
+
SADDLE_PROFILE=${SADDLE_TIER} \
|
|
768
|
+
SADDLE_PROFILE_CPU=${VHE_PROFILE_CPU} \
|
|
769
|
+
SADDLE_PROFILE_VCPUS=${VHE_PROFILE_VCPUS} \
|
|
770
|
+
SADDLE_PROFILE_THREADS=${VHE_PROFILE_THREADS} \
|
|
771
|
+
SADDLE_PROFILE_RAM_GB=${VHE_PROFILE_RAM_GB} \
|
|
772
|
+
SADDLE_PROFILE_GPU=${VHE_PROFILE_GPU} \
|
|
773
|
+
SADDLE_PROFILE_GPUS=${VHE_PROFILE_GPUS}
|
|
592
774
|
LABEL org.opencontainers.image.title="saddle (the archlinux os-distribution catalog lane)" \
|
|
593
775
|
org.opencontainers.image.description="the archlinux os-distribution seat as a catalog lane: archlinux is the rolling-release distribution omarchy builds on, the pacman desktop seat — the lane publishes the profile config the engine reads." \
|
|
594
776
|
org.opencontainers.image.version="${SADDLE_VERSION}" \
|
|
@@ -597,9 +779,23 @@ LABEL org.opencontainers.image.title="saddle (the archlinux os-distribution cata
|
|
|
597
779
|
COPY osprofiles/archlinux.json /saddle/osprofile.json
|
|
598
780
|
|
|
599
781
|
FROM scratch AS osalpine
|
|
600
|
-
ARG SADDLE_VERSION=2.0.
|
|
782
|
+
ARG SADDLE_VERSION=2.0.171
|
|
601
783
|
ARG SADDLE_OS_PROFILE="alpine"
|
|
602
|
-
|
|
784
|
+
ARG SADDLE_TIER="max"
|
|
785
|
+
ARG VHE_PROFILE_CPU="epyc9965"
|
|
786
|
+
ARG VHE_PROFILE_VCPUS="192"
|
|
787
|
+
ARG VHE_PROFILE_THREADS="384"
|
|
788
|
+
ARG VHE_PROFILE_RAM_GB="1024"
|
|
789
|
+
ARG VHE_PROFILE_GPU="b200"
|
|
790
|
+
ARG VHE_PROFILE_GPUS="8"
|
|
791
|
+
ENV SADDLE_OS_PROFILE=alpine \
|
|
792
|
+
SADDLE_PROFILE=${SADDLE_TIER} \
|
|
793
|
+
SADDLE_PROFILE_CPU=${VHE_PROFILE_CPU} \
|
|
794
|
+
SADDLE_PROFILE_VCPUS=${VHE_PROFILE_VCPUS} \
|
|
795
|
+
SADDLE_PROFILE_THREADS=${VHE_PROFILE_THREADS} \
|
|
796
|
+
SADDLE_PROFILE_RAM_GB=${VHE_PROFILE_RAM_GB} \
|
|
797
|
+
SADDLE_PROFILE_GPU=${VHE_PROFILE_GPU} \
|
|
798
|
+
SADDLE_PROFILE_GPUS=${VHE_PROFILE_GPUS}
|
|
603
799
|
LABEL org.opencontainers.image.title="saddle (the alpine os-distribution catalog lane)" \
|
|
604
800
|
org.opencontainers.image.description="the alpine os-distribution seat as a catalog lane: alpine is the musl-based lightweight distribution, the small-footprint seat the musl legs answer — the lane publishes the profile config the engine reads." \
|
|
605
801
|
org.opencontainers.image.version="${SADDLE_VERSION}" \
|
|
@@ -608,9 +804,23 @@ LABEL org.opencontainers.image.title="saddle (the alpine os-distribution catalog
|
|
|
608
804
|
COPY osprofiles/alpine.json /saddle/osprofile.json
|
|
609
805
|
|
|
610
806
|
FROM scratch AS osdebian
|
|
611
|
-
ARG SADDLE_VERSION=2.0.
|
|
807
|
+
ARG SADDLE_VERSION=2.0.171
|
|
612
808
|
ARG SADDLE_OS_PROFILE="debian"
|
|
613
|
-
|
|
809
|
+
ARG SADDLE_TIER="max"
|
|
810
|
+
ARG VHE_PROFILE_CPU="epyc9965"
|
|
811
|
+
ARG VHE_PROFILE_VCPUS="192"
|
|
812
|
+
ARG VHE_PROFILE_THREADS="384"
|
|
813
|
+
ARG VHE_PROFILE_RAM_GB="1024"
|
|
814
|
+
ARG VHE_PROFILE_GPU="b200"
|
|
815
|
+
ARG VHE_PROFILE_GPUS="8"
|
|
816
|
+
ENV SADDLE_OS_PROFILE=debian \
|
|
817
|
+
SADDLE_PROFILE=${SADDLE_TIER} \
|
|
818
|
+
SADDLE_PROFILE_CPU=${VHE_PROFILE_CPU} \
|
|
819
|
+
SADDLE_PROFILE_VCPUS=${VHE_PROFILE_VCPUS} \
|
|
820
|
+
SADDLE_PROFILE_THREADS=${VHE_PROFILE_THREADS} \
|
|
821
|
+
SADDLE_PROFILE_RAM_GB=${VHE_PROFILE_RAM_GB} \
|
|
822
|
+
SADDLE_PROFILE_GPU=${VHE_PROFILE_GPU} \
|
|
823
|
+
SADDLE_PROFILE_GPUS=${VHE_PROFILE_GPUS}
|
|
614
824
|
LABEL org.opencontainers.image.title="saddle (the debian os-distribution catalog lane)" \
|
|
615
825
|
org.opencontainers.image.description="the debian os-distribution seat as a catalog lane: debian is the universal operating system, the apt desktop seat the widest hardware matrix answers — the lane publishes the profile config the engine reads." \
|
|
616
826
|
org.opencontainers.image.version="${SADDLE_VERSION}" \
|
|
@@ -619,9 +829,23 @@ LABEL org.opencontainers.image.title="saddle (the debian os-distribution catalog
|
|
|
619
829
|
COPY osprofiles/debian.json /saddle/osprofile.json
|
|
620
830
|
|
|
621
831
|
FROM scratch AS osfedora
|
|
622
|
-
ARG SADDLE_VERSION=2.0.
|
|
832
|
+
ARG SADDLE_VERSION=2.0.171
|
|
623
833
|
ARG SADDLE_OS_PROFILE="fedora"
|
|
624
|
-
|
|
834
|
+
ARG SADDLE_TIER="max"
|
|
835
|
+
ARG VHE_PROFILE_CPU="epyc9965"
|
|
836
|
+
ARG VHE_PROFILE_VCPUS="192"
|
|
837
|
+
ARG VHE_PROFILE_THREADS="384"
|
|
838
|
+
ARG VHE_PROFILE_RAM_GB="1024"
|
|
839
|
+
ARG VHE_PROFILE_GPU="b200"
|
|
840
|
+
ARG VHE_PROFILE_GPUS="8"
|
|
841
|
+
ENV SADDLE_OS_PROFILE=fedora \
|
|
842
|
+
SADDLE_PROFILE=${SADDLE_TIER} \
|
|
843
|
+
SADDLE_PROFILE_CPU=${VHE_PROFILE_CPU} \
|
|
844
|
+
SADDLE_PROFILE_VCPUS=${VHE_PROFILE_VCPUS} \
|
|
845
|
+
SADDLE_PROFILE_THREADS=${VHE_PROFILE_THREADS} \
|
|
846
|
+
SADDLE_PROFILE_RAM_GB=${VHE_PROFILE_RAM_GB} \
|
|
847
|
+
SADDLE_PROFILE_GPU=${VHE_PROFILE_GPU} \
|
|
848
|
+
SADDLE_PROFILE_GPUS=${VHE_PROFILE_GPUS}
|
|
625
849
|
LABEL org.opencontainers.image.title="saddle (the fedora os-distribution catalog lane)" \
|
|
626
850
|
org.opencontainers.image.description="the fedora os-distribution seat as a catalog lane: fedora is the red-hat-upstream community distribution, the rpm desktop seat beside the apt rows — the lane publishes the profile config the engine reads." \
|
|
627
851
|
org.opencontainers.image.version="${SADDLE_VERSION}" \
|
|
@@ -630,9 +854,23 @@ LABEL org.opencontainers.image.title="saddle (the fedora os-distribution catalog
|
|
|
630
854
|
COPY osprofiles/fedora.json /saddle/osprofile.json
|
|
631
855
|
|
|
632
856
|
FROM scratch AS osnixos
|
|
633
|
-
ARG SADDLE_VERSION=2.0.
|
|
857
|
+
ARG SADDLE_VERSION=2.0.171
|
|
634
858
|
ARG SADDLE_OS_PROFILE="nixos"
|
|
635
|
-
|
|
859
|
+
ARG SADDLE_TIER="max"
|
|
860
|
+
ARG VHE_PROFILE_CPU="epyc9965"
|
|
861
|
+
ARG VHE_PROFILE_VCPUS="192"
|
|
862
|
+
ARG VHE_PROFILE_THREADS="384"
|
|
863
|
+
ARG VHE_PROFILE_RAM_GB="1024"
|
|
864
|
+
ARG VHE_PROFILE_GPU="b200"
|
|
865
|
+
ARG VHE_PROFILE_GPUS="8"
|
|
866
|
+
ENV SADDLE_OS_PROFILE=nixos \
|
|
867
|
+
SADDLE_PROFILE=${SADDLE_TIER} \
|
|
868
|
+
SADDLE_PROFILE_CPU=${VHE_PROFILE_CPU} \
|
|
869
|
+
SADDLE_PROFILE_VCPUS=${VHE_PROFILE_VCPUS} \
|
|
870
|
+
SADDLE_PROFILE_THREADS=${VHE_PROFILE_THREADS} \
|
|
871
|
+
SADDLE_PROFILE_RAM_GB=${VHE_PROFILE_RAM_GB} \
|
|
872
|
+
SADDLE_PROFILE_GPU=${VHE_PROFILE_GPU} \
|
|
873
|
+
SADDLE_PROFILE_GPUS=${VHE_PROFILE_GPUS}
|
|
636
874
|
LABEL org.opencontainers.image.title="saddle (the nixos os-distribution catalog lane)" \
|
|
637
875
|
org.opencontainers.image.description="the nixos os-distribution seat as a catalog lane: nixos is the declarative distribution the nix package manager builds, the reproducible-system seat — the lane publishes the profile config the engine reads." \
|
|
638
876
|
org.opencontainers.image.version="${SADDLE_VERSION}" \
|
|
@@ -641,9 +879,23 @@ LABEL org.opencontainers.image.title="saddle (the nixos os-distribution catalog
|
|
|
641
879
|
COPY osprofiles/nixos.json /saddle/osprofile.json
|
|
642
880
|
|
|
643
881
|
FROM scratch AS osvoid
|
|
644
|
-
ARG SADDLE_VERSION=2.0.
|
|
882
|
+
ARG SADDLE_VERSION=2.0.171
|
|
645
883
|
ARG SADDLE_OS_PROFILE="void"
|
|
646
|
-
|
|
884
|
+
ARG SADDLE_TIER="max"
|
|
885
|
+
ARG VHE_PROFILE_CPU="epyc9965"
|
|
886
|
+
ARG VHE_PROFILE_VCPUS="192"
|
|
887
|
+
ARG VHE_PROFILE_THREADS="384"
|
|
888
|
+
ARG VHE_PROFILE_RAM_GB="1024"
|
|
889
|
+
ARG VHE_PROFILE_GPU="b200"
|
|
890
|
+
ARG VHE_PROFILE_GPUS="8"
|
|
891
|
+
ENV SADDLE_OS_PROFILE=void \
|
|
892
|
+
SADDLE_PROFILE=${SADDLE_TIER} \
|
|
893
|
+
SADDLE_PROFILE_CPU=${VHE_PROFILE_CPU} \
|
|
894
|
+
SADDLE_PROFILE_VCPUS=${VHE_PROFILE_VCPUS} \
|
|
895
|
+
SADDLE_PROFILE_THREADS=${VHE_PROFILE_THREADS} \
|
|
896
|
+
SADDLE_PROFILE_RAM_GB=${VHE_PROFILE_RAM_GB} \
|
|
897
|
+
SADDLE_PROFILE_GPU=${VHE_PROFILE_GPU} \
|
|
898
|
+
SADDLE_PROFILE_GPUS=${VHE_PROFILE_GPUS}
|
|
647
899
|
LABEL org.opencontainers.image.title="saddle (the void os-distribution catalog lane)" \
|
|
648
900
|
org.opencontainers.image.description="the void os-distribution seat as a catalog lane: void is the independent source-rolling distribution, the xbps seat the musl legs answer beside alpine — the lane publishes the profile config the engine reads." \
|
|
649
901
|
org.opencontainers.image.version="${SADDLE_VERSION}" \
|
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ domain modules land beside the saddle domains:
|
|
|
31
31
|
| `media.ts`, `render.ts`, `quantum.ts`, `tiers.ts` | media pipeline, GPU registry, quantum simulation, tier policy |
|
|
32
32
|
| `security.ts`, `alternatives.ts` | hardening gates and the alternative-stack catalog |
|
|
33
33
|
| `index.html`, `App.tsx`, `sol/` | the single SPA shell and the Sol theme (one tsx app with one stylesheet per theme) |
|
|
34
|
-
| `server.ts`, `sandbox.ts` | the zero-dependency self-hosted API of the 2.0.
|
|
34
|
+
| `server.ts`, `sandbox.ts` | the zero-dependency self-hosted API of the 2.0.171 grand-merge envelope (`node server.ts`; the api answers its version at `/api/v1/health`) and the browser-pure engine port |
|
|
35
35
|
| `vercel.json`, `netlify.toml` | the platform deploy adapters beside the surface they publish (the caddy ghost stays out of the tree) |
|
|
36
36
|
| `specs/*` package exports | processors, gpus, cores, boards and the qemu/mttg/passage/docker envelopes |
|
|
37
37
|
|
package/docker.config
CHANGED
package/docs/ninetymodalities.md
CHANGED
|
@@ -201,3 +201,35 @@ additions (postmarketos, lineageos, calyxos, archlinux, alpine, debian,
|
|
|
201
201
|
fedora, nixos and void) — with the arch pairings, the engine plan trio
|
|
202
202
|
binding and the plan-resource law. see
|
|
203
203
|
[osdistributions.md](osdistributions.md) for the record.
|
|
204
|
+
|
|
205
|
+
## the toolchain rung (the pr13 completion law)
|
|
206
|
+
|
|
207
|
+
the honesty audit's fourteen planned seats walked live: the engine
|
|
208
|
+
container's toolchain layer now carries the runtimes the host-spawn
|
|
209
|
+
seats demand, every carrier pinned to the exact version the engines
|
|
210
|
+
catalog answers and asserted after install —
|
|
211
|
+
|
|
212
|
+
- the apt lanes every arch leg carries: make, ninja, lua 5.4, php-cli
|
|
213
|
+
and the gcc toolchain the v and nim codegen rides;
|
|
214
|
+
- the prefab carriers the two native legs (amd64, arm64) carry: rustup
|
|
215
|
+
1.99.1 (rustc and cargo, edition 2024 answering the rust floor the
|
|
216
|
+
catalog pins), zig 0.17.1, wasmtime 50.0.1 (the wasi preview runtime),
|
|
217
|
+
the v 0.5.2 compiler (the exact tag the catalog's v seat answers),
|
|
218
|
+
nim 2.4.0 and the dotnet sdk 10.0.403 (the lts channel, the
|
|
219
|
+
file-based app law the seat's `dotnet run payload.cs` rides);
|
|
220
|
+
- the exotic legs (ppc64le, s390x) answer the honest coded absence the
|
|
221
|
+
seats' probes name at dispatch — HOST_RUNTIME_ABSENT, the seat never
|
|
222
|
+
fakes a run, the same law the arch case carries.
|
|
223
|
+
|
|
224
|
+
the host-spawn staging grew the payload-name law: the
|
|
225
|
+
extension-sensitive runtimes answer their own staged filename (the
|
|
226
|
+
payload.wasm, payload.rs, payload.v, payload.cs, payload.zig and
|
|
227
|
+
payload.nim seats beside the cargo manifest harness — the minimal
|
|
228
|
+
Cargo.toml the seat stages beside src/main.rs so `cargo run --offline`
|
|
229
|
+
answers a real build), and the three in-process seats whose executors
|
|
230
|
+
always drove (the serverless v8 isolate, the git objects vfs, the doh
|
|
231
|
+
resolver) walk the live lines they always deserved.
|
|
232
|
+
|
|
233
|
+
the census answers the ninety-wave promise whole: **81 live, 9 host, 0
|
|
234
|
+
planned, 90 records** — the plan the owner charged, the record never
|
|
235
|
+
pretending a wiring the engine does not drive.
|
package/modalities.ts
CHANGED
|
@@ -1576,6 +1576,15 @@ function hostspawnseat(options: {
|
|
|
1576
1576
|
env?: Record<string, string>;
|
|
1577
1577
|
priority?: ModalityPriority;
|
|
1578
1578
|
probe?: string;
|
|
1579
|
+
/** the staged payload filename — the extension-sensitive runtimes (the
|
|
1580
|
+
* dotnet file-based app that demands .cs, the nim compiler that demands
|
|
1581
|
+
* .nim, the zig and v sources, the wasm module, the cargo manifest)
|
|
1582
|
+
* answer their own staged name instead of the bare payload default. */
|
|
1583
|
+
payloadname?: string;
|
|
1584
|
+
/** the extra staged files one seat's payload model demands beside the
|
|
1585
|
+
* payload itself (the cargo manifest's src tree, the makefile's
|
|
1586
|
+
* includes) — read from the request inputs, never the host. */
|
|
1587
|
+
extrafiles?: (request: ModalityRunRequest) => Record<string, string>;
|
|
1579
1588
|
}): ModalityExecutor {
|
|
1580
1589
|
return async (request: ModalityRunRequest): Promise<ModalityRunResult> => {
|
|
1581
1590
|
const started = Date.now();
|
|
@@ -1583,9 +1592,30 @@ function hostspawnseat(options: {
|
|
|
1583
1592
|
const profile = request.profile ?? DEFAULTPROFILE;
|
|
1584
1593
|
const deadline = clampdeadline(request.deadlinems);
|
|
1585
1594
|
const staging = await stageworkspace(options.slug, request.code);
|
|
1595
|
+
let file = staging.payload;
|
|
1596
|
+
try {
|
|
1597
|
+
const fsp = (await import("node:fs/promises")) as typeof import("node:fs/promises");
|
|
1598
|
+
const nodepath = (await import("node:path")) as typeof import("node:path");
|
|
1599
|
+
if (options.payloadname !== undefined && options.payloadname !== "payload") {
|
|
1600
|
+
file = nodepath.join(staging.dir, options.payloadname);
|
|
1601
|
+
await fsp.mkdir(nodepath.dirname(file), { recursive: true });
|
|
1602
|
+
await fsp.copyFile(staging.payload, file);
|
|
1603
|
+
}
|
|
1604
|
+
if (options.extrafiles !== undefined) {
|
|
1605
|
+
const extras = options.extrafiles(request);
|
|
1606
|
+
for (const [name, content] of Object.entries(extras)) {
|
|
1607
|
+
const target = nodepath.join(staging.dir, name);
|
|
1608
|
+
await fsp.mkdir(nodepath.dirname(target), { recursive: true });
|
|
1609
|
+
await fsp.writeFile(target, content, "utf8");
|
|
1610
|
+
}
|
|
1611
|
+
}
|
|
1612
|
+
} catch (error) {
|
|
1613
|
+
await unstageworkspace(staging.dir);
|
|
1614
|
+
return failureresult(options.slug, options.num, options.lane, error, started);
|
|
1615
|
+
}
|
|
1586
1616
|
let argv: readonly string[];
|
|
1587
1617
|
try {
|
|
1588
|
-
argv = options.argv({ code: request.code, file
|
|
1618
|
+
argv = options.argv({ code: request.code, file, request });
|
|
1589
1619
|
} catch (error) {
|
|
1590
1620
|
// the gate seats refuse before the plan stamps: the typed refusal
|
|
1591
1621
|
// (the mz, the elf, the wasm magic laws) answers an honest failed
|
|
@@ -2611,7 +2641,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
2611
2641
|
slug: "runnerwasi",
|
|
2612
2642
|
lane: "runner",
|
|
2613
2643
|
isolation: "process",
|
|
2614
|
-
state: "
|
|
2644
|
+
state: "live",
|
|
2615
2645
|
drivers: ["wasmtime"],
|
|
2616
2646
|
hardening: ["capability-imports"],
|
|
2617
2647
|
boot: "hot",
|
|
@@ -2630,6 +2660,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
2630
2660
|
argv: ({ file }) => ["wasmtime", "--dir", "/sandbox::/sandbox", file],
|
|
2631
2661
|
hardening: ["capability-imports", "wasi-snapshot"],
|
|
2632
2662
|
probe: "the host must carry wasmtime (the wasi preview runtime)",
|
|
2663
|
+
payloadname: "payload.wasm",
|
|
2633
2664
|
}),
|
|
2634
2665
|
},
|
|
2635
2666
|
{
|
|
@@ -2638,7 +2669,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
2638
2669
|
slug: "runnerserverless",
|
|
2639
2670
|
lane: "runner",
|
|
2640
2671
|
isolation: "process",
|
|
2641
|
-
state: "
|
|
2672
|
+
state: "live",
|
|
2642
2673
|
drivers: ["v8"],
|
|
2643
2674
|
hardening: ["no-fs", "cpu-quota"],
|
|
2644
2675
|
boot: "hot",
|
|
@@ -3021,7 +3052,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
3021
3052
|
slug: "languagerust",
|
|
3022
3053
|
lane: "runner",
|
|
3023
3054
|
isolation: "process",
|
|
3024
|
-
state: "
|
|
3055
|
+
state: "live",
|
|
3025
3056
|
drivers: ["rustc"],
|
|
3026
3057
|
hardening: ["crate-allowlist"],
|
|
3027
3058
|
boot: "hot",
|
|
@@ -3039,6 +3070,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
3039
3070
|
binary: "rustc",
|
|
3040
3071
|
argv: ({ file }) => ["rustc", "-O", "--edition", "2024", "-o", "/sandbox/languagerust/payload", file],
|
|
3041
3072
|
hardening: ["crate-allowlist"],
|
|
3073
|
+
payloadname: "payload.rs",
|
|
3042
3074
|
}),
|
|
3043
3075
|
},
|
|
3044
3076
|
{
|
|
@@ -3047,7 +3079,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
3047
3079
|
slug: "languagecargo",
|
|
3048
3080
|
lane: "runner",
|
|
3049
3081
|
isolation: "process",
|
|
3050
|
-
state: "
|
|
3082
|
+
state: "live",
|
|
3051
3083
|
drivers: ["cargo"],
|
|
3052
3084
|
hardening: ["crate-allowlist"],
|
|
3053
3085
|
boot: "hot",
|
|
@@ -3066,6 +3098,18 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
3066
3098
|
argv: () => ["cargo", "run", "--offline"],
|
|
3067
3099
|
env: { CARGO_HOME: "/sandbox/cargo", CARGO_NET_OFFLINE: "true" },
|
|
3068
3100
|
hardening: ["crate-allowlist", "offline-only"],
|
|
3101
|
+
payloadname: "src/main.rs",
|
|
3102
|
+
extrafiles: () => ({
|
|
3103
|
+
"Cargo.toml": [
|
|
3104
|
+
"[package]",
|
|
3105
|
+
"name = \"payload\"",
|
|
3106
|
+
"version = \"0.1.0\"",
|
|
3107
|
+
"edition = \"2021\"",
|
|
3108
|
+
"",
|
|
3109
|
+
"[dependencies]",
|
|
3110
|
+
"",
|
|
3111
|
+
].join("\n"),
|
|
3112
|
+
}),
|
|
3069
3113
|
}),
|
|
3070
3114
|
},
|
|
3071
3115
|
{
|
|
@@ -3074,7 +3118,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
3074
3118
|
slug: "languagev",
|
|
3075
3119
|
lane: "runner",
|
|
3076
3120
|
isolation: "process",
|
|
3077
|
-
state: "
|
|
3121
|
+
state: "live",
|
|
3078
3122
|
drivers: ["v"],
|
|
3079
3123
|
hardening: ["package-allowlist"],
|
|
3080
3124
|
boot: "hot",
|
|
@@ -3092,6 +3136,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
3092
3136
|
binary: "v",
|
|
3093
3137
|
argv: ({ file }) => ["v", "run", file],
|
|
3094
3138
|
env: { VFLAGS: "-prod" },
|
|
3139
|
+
payloadname: "payload.v",
|
|
3095
3140
|
hardening: ["package-allowlist"],
|
|
3096
3141
|
probe: "the host must carry the v compiler (the 0.5.2 seat the catalog pins)",
|
|
3097
3142
|
}),
|
|
@@ -3129,7 +3174,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
3129
3174
|
slug: "languagedotnet",
|
|
3130
3175
|
lane: "runner",
|
|
3131
3176
|
isolation: "process",
|
|
3132
|
-
state: "
|
|
3177
|
+
state: "live",
|
|
3133
3178
|
drivers: ["dotnet"],
|
|
3134
3179
|
hardening: ["assembly-allowlist"],
|
|
3135
3180
|
boot: "warm",
|
|
@@ -3147,6 +3192,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
3147
3192
|
binary: "dotnet",
|
|
3148
3193
|
argv: ({ file }) => ["dotnet", "run", file],
|
|
3149
3194
|
hardening: ["assembly-allowlist", "mz-gate"],
|
|
3195
|
+
payloadname: "payload.cs",
|
|
3150
3196
|
}),
|
|
3151
3197
|
},
|
|
3152
3198
|
{
|
|
@@ -3181,7 +3227,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
3181
3227
|
slug: "languagelua",
|
|
3182
3228
|
lane: "runner",
|
|
3183
3229
|
isolation: "process",
|
|
3184
|
-
state: "
|
|
3230
|
+
state: "live",
|
|
3185
3231
|
drivers: ["lua"],
|
|
3186
3232
|
hardening: ["sandbox-env"],
|
|
3187
3233
|
boot: "hot",
|
|
@@ -3207,7 +3253,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
3207
3253
|
slug: "languagezig",
|
|
3208
3254
|
lane: "runner",
|
|
3209
3255
|
isolation: "process",
|
|
3210
|
-
state: "
|
|
3256
|
+
state: "live",
|
|
3211
3257
|
drivers: ["zig"],
|
|
3212
3258
|
hardening: ["package-allowlist"],
|
|
3213
3259
|
boot: "hot",
|
|
@@ -3225,6 +3271,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
3225
3271
|
binary: "zig",
|
|
3226
3272
|
argv: ({ file }) => ["zig", "run", file],
|
|
3227
3273
|
hardening: ["package-allowlist"],
|
|
3274
|
+
payloadname: "payload.zig",
|
|
3228
3275
|
}),
|
|
3229
3276
|
},
|
|
3230
3277
|
{
|
|
@@ -3233,7 +3280,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
3233
3280
|
slug: "languagenim",
|
|
3234
3281
|
lane: "runner",
|
|
3235
3282
|
isolation: "process",
|
|
3236
|
-
state: "
|
|
3283
|
+
state: "live",
|
|
3237
3284
|
drivers: ["nim"],
|
|
3238
3285
|
hardening: ["package-allowlist"],
|
|
3239
3286
|
boot: "hot",
|
|
@@ -3251,6 +3298,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
3251
3298
|
binary: "nim",
|
|
3252
3299
|
argv: ({ file }) => ["nim", "r", file],
|
|
3253
3300
|
hardening: ["package-allowlist"],
|
|
3301
|
+
payloadname: "payload.nim",
|
|
3254
3302
|
}),
|
|
3255
3303
|
},
|
|
3256
3304
|
{
|
|
@@ -3259,7 +3307,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
3259
3307
|
slug: "languagephp",
|
|
3260
3308
|
lane: "runner",
|
|
3261
3309
|
isolation: "process",
|
|
3262
|
-
state: "
|
|
3310
|
+
state: "live",
|
|
3263
3311
|
drivers: ["php"],
|
|
3264
3312
|
hardening: ["ini-lockdown"],
|
|
3265
3313
|
boot: "hot",
|
|
@@ -3366,7 +3414,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
3366
3414
|
slug: "buildmake",
|
|
3367
3415
|
lane: "runner",
|
|
3368
3416
|
isolation: "process",
|
|
3369
|
-
state: "
|
|
3417
|
+
state: "live",
|
|
3370
3418
|
drivers: ["make"],
|
|
3371
3419
|
hardening: ["recipe-allowlist"],
|
|
3372
3420
|
boot: "hot",
|
|
@@ -3419,7 +3467,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
3419
3467
|
slug: "buildninja",
|
|
3420
3468
|
lane: "runner",
|
|
3421
3469
|
isolation: "process",
|
|
3422
|
-
state: "
|
|
3470
|
+
state: "live",
|
|
3423
3471
|
drivers: ["ninja"],
|
|
3424
3472
|
hardening: ["recipe-allowlist"],
|
|
3425
3473
|
boot: "hot",
|
|
@@ -4040,7 +4088,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
4040
4088
|
slug: "fsgitobjects",
|
|
4041
4089
|
lane: "sandbox",
|
|
4042
4090
|
isolation: "process",
|
|
4043
|
-
state: "
|
|
4091
|
+
state: "live",
|
|
4044
4092
|
drivers: ["git", "vfs"],
|
|
4045
4093
|
hardening: ["content-hash", "chunk-catalog"],
|
|
4046
4094
|
boot: "hot",
|
|
@@ -4535,7 +4583,7 @@ export const MODALITYENGINE: readonly ModalitySpec[] = [
|
|
|
4535
4583
|
slug: "networkdoh",
|
|
4536
4584
|
lane: "sandbox",
|
|
4537
4585
|
isolation: "process",
|
|
4538
|
-
state: "
|
|
4586
|
+
state: "live",
|
|
4539
4587
|
drivers: ["doh"],
|
|
4540
4588
|
hardening: ["resolver-allowlist"],
|
|
4541
4589
|
boot: "hot",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wenathlan/saddle",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.172",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "binary computing engine that turns distributed storage into a publishable working set carrying the merged virtual-hardware engine (the saddle + e2ugh grand merge)",
|
|
6
6
|
"license": "GPL-3.0-only",
|
|
@@ -48,9 +48,9 @@
|
|
|
48
48
|
"vm:create": "node --import tsx ./cli.ts vm",
|
|
49
49
|
"vm:validate": "node --import tsx ./cli.ts vmlint",
|
|
50
50
|
"gpu:list": "node --import tsx ./cli.ts gpus",
|
|
51
|
-
"docker:build": "docker build -f Dockerfile -t saddle:2.0.
|
|
52
|
-
"docker:run": "docker run --rm --memory-swap=-1 --shm-size=2g saddle:2.0.
|
|
53
|
-
"docker:health": "docker run --rm -d --name saddle-health -p 8080:8080 saddle:2.0.
|
|
51
|
+
"docker:build": "docker build -f Dockerfile -t saddle:2.0.171 ..",
|
|
52
|
+
"docker:run": "docker run --rm --memory-swap=-1 --shm-size=2g saddle:2.0.171",
|
|
53
|
+
"docker:health": "docker run --rm -d --name saddle-health -p 8080:8080 saddle:2.0.171 >/dev/null && sleep 5; curl -fsS http://localhost:8080/api/v1/health || true; docker rm -f saddle-health >/dev/null 2>&1 || true",
|
|
54
54
|
"firecracker:boot": "firecracker --api-sock /tmp/fc-saddle.sock --config-file vmconfig.json 2>/dev/null || echo 'firecracker 1.16.1 warm-pool boot 125ms target'",
|
|
55
55
|
"py:bridge": "python3 qemubridge.py",
|
|
56
56
|
"py:test": "python3 -m pytest -q || python3 qemubridge.py",
|
|
@@ -131,13 +131,13 @@
|
|
|
131
131
|
"@types/react-dom": "^19.3.0",
|
|
132
132
|
"@types/three": "^0.187.0",
|
|
133
133
|
"@vitejs/plugin-react": "^6.2.1",
|
|
134
|
-
"@wenathlan/argan": "~2.0.
|
|
135
|
-
"@wenathlan/cadria": "~2.0.
|
|
136
|
-
"@wenathlan/debonair": "~2.0.
|
|
137
|
-
"@wenathlan/devthink": "~2.0.
|
|
138
|
-
"@wenathlan/getry": "~2.0.
|
|
139
|
-
"@wenathlan/saddle": "~2.0.
|
|
140
|
-
"@wenathlan/vault": "~2.0.
|
|
134
|
+
"@wenathlan/argan": "~2.0.171",
|
|
135
|
+
"@wenathlan/cadria": "~2.0.171",
|
|
136
|
+
"@wenathlan/debonair": "~2.0.171",
|
|
137
|
+
"@wenathlan/devthink": "~2.0.170",
|
|
138
|
+
"@wenathlan/getry": "~2.0.171",
|
|
139
|
+
"@wenathlan/saddle": "~2.0.171",
|
|
140
|
+
"@wenathlan/vault": "~2.0.171",
|
|
141
141
|
"add": "^2.0.9",
|
|
142
142
|
"ai": "^7.0.165",
|
|
143
143
|
"autoprefixer": "^10.6.2",
|
|
@@ -188,7 +188,7 @@
|
|
|
188
188
|
"playwright": "^1.65.0",
|
|
189
189
|
"pnpm": "^12.18.0",
|
|
190
190
|
"postcss": "^8.5.32",
|
|
191
|
-
"postcss-selector-parser": "^7.
|
|
191
|
+
"postcss-selector-parser": "^7.2.0",
|
|
192
192
|
"prettier": "^3.9.10",
|
|
193
193
|
"prisma": "^7.10.1",
|
|
194
194
|
"proxy-addr": "^2.0.8",
|
|
@@ -304,13 +304,17 @@
|
|
|
304
304
|
"@types/react-dom": "^19.3.0",
|
|
305
305
|
"@types/three": "^0.187.0",
|
|
306
306
|
"@vitejs/plugin-react": "^6.2.1",
|
|
307
|
-
"@wenathlan/argan": "~2.0.
|
|
308
|
-
"@wenathlan/cadria": "~2.0.
|
|
309
|
-
"@wenathlan/
|
|
310
|
-
"@wenathlan/
|
|
311
|
-
"@wenathlan/
|
|
312
|
-
"@wenathlan/
|
|
313
|
-
"@wenathlan/
|
|
307
|
+
"@wenathlan/argan": "~2.0.171",
|
|
308
|
+
"@wenathlan/cadria": "~2.0.171",
|
|
309
|
+
"@wenathlan/cobaia": "~2.0.171",
|
|
310
|
+
"@wenathlan/debonair": "~2.0.171",
|
|
311
|
+
"@wenathlan/devthink": "~2.0.170",
|
|
312
|
+
"@wenathlan/forge": "~2.0.171",
|
|
313
|
+
"@wenathlan/foundry": "~2.0.171",
|
|
314
|
+
"@wenathlan/getry": "~2.0.171",
|
|
315
|
+
"@wenathlan/saddle": "~2.0.171",
|
|
316
|
+
"@wenathlan/stealthhead": "~2.0.171",
|
|
317
|
+
"@wenathlan/vault": "~2.0.171",
|
|
314
318
|
"add": "^2.0.9",
|
|
315
319
|
"ai": "^7.0.165",
|
|
316
320
|
"autoprefixer": "^10.6.2",
|
|
@@ -361,7 +365,7 @@
|
|
|
361
365
|
"playwright": "^1.65.0",
|
|
362
366
|
"pnpm": "^12.18.0",
|
|
363
367
|
"postcss": "^8.5.32",
|
|
364
|
-
"postcss-selector-parser": "^7.
|
|
368
|
+
"postcss-selector-parser": "^7.2.0",
|
|
365
369
|
"prettier": "^3.9.10",
|
|
366
370
|
"prisma": "^7.10.1",
|
|
367
371
|
"proxy-addr": "^2.0.8",
|
|
@@ -477,13 +481,13 @@
|
|
|
477
481
|
"@types/react-dom": "^19.3.0",
|
|
478
482
|
"@types/three": "^0.187.0",
|
|
479
483
|
"@vitejs/plugin-react": "^6.2.1",
|
|
480
|
-
"@wenathlan/argan": "~2.0.
|
|
481
|
-
"@wenathlan/cadria": "~2.0.
|
|
482
|
-
"@wenathlan/debonair": "~2.0.
|
|
483
|
-
"@wenathlan/devthink": "~2.0.
|
|
484
|
-
"@wenathlan/getry": "~2.0.
|
|
485
|
-
"@wenathlan/saddle": "~2.0.
|
|
486
|
-
"@wenathlan/vault": "~2.0.
|
|
484
|
+
"@wenathlan/argan": "~2.0.171",
|
|
485
|
+
"@wenathlan/cadria": "~2.0.171",
|
|
486
|
+
"@wenathlan/debonair": "~2.0.171",
|
|
487
|
+
"@wenathlan/devthink": "~2.0.170",
|
|
488
|
+
"@wenathlan/getry": "~2.0.171",
|
|
489
|
+
"@wenathlan/saddle": "~2.0.171",
|
|
490
|
+
"@wenathlan/vault": "~2.0.171",
|
|
487
491
|
"add": "^2.0.9",
|
|
488
492
|
"ai": "^7.0.165",
|
|
489
493
|
"autoprefixer": "^10.6.2",
|
|
@@ -534,7 +538,7 @@
|
|
|
534
538
|
"playwright": "^1.65.0",
|
|
535
539
|
"pnpm": "^12.18.0",
|
|
536
540
|
"postcss": "^8.5.32",
|
|
537
|
-
"postcss-selector-parser": "^7.
|
|
541
|
+
"postcss-selector-parser": "^7.2.0",
|
|
538
542
|
"prettier": "^3.9.10",
|
|
539
543
|
"prisma": "^7.10.1",
|
|
540
544
|
"proxy-addr": "^2.0.8",
|
|
@@ -572,13 +576,13 @@
|
|
|
572
576
|
"webpack": "^5.112.2",
|
|
573
577
|
"webpack-cli": "^7.3.1",
|
|
574
578
|
"wouter": "^3.13.0",
|
|
579
|
+
"xcode": {
|
|
580
|
+
"uuid": "11.1.1"
|
|
581
|
+
},
|
|
575
582
|
"yaml": "^2.9.1",
|
|
576
583
|
"z-ai-web-dev-sdk": "^0.0.18",
|
|
577
584
|
"zod": "^4.6.7",
|
|
578
|
-
"zustand": "^5.1.0"
|
|
579
|
-
"xcode": {
|
|
580
|
-
"uuid": "11.1.1"
|
|
581
|
-
}
|
|
585
|
+
"zustand": "^5.1.0"
|
|
582
586
|
},
|
|
583
587
|
"type": "module",
|
|
584
588
|
"sideEffects": false,
|
|
@@ -698,6 +702,5 @@
|
|
|
698
702
|
"quantum.ts"
|
|
699
703
|
],
|
|
700
704
|
"main": "./index.ts",
|
|
701
|
-
"types": "./index.ts"
|
|
702
|
-
"optionalDependencies": {}
|
|
705
|
+
"types": "./index.ts"
|
|
703
706
|
}
|
package/sandbox.ts
CHANGED
|
@@ -2244,8 +2244,24 @@ export function specenvlimits(env: Record<string, string | undefined>): sandboxs
|
|
|
2244
2244
|
/** the three runtime bases of the saddle fleet. */
|
|
2245
2245
|
export type sandboxbaseid = 'max' | 'balanced' | 'lite';
|
|
2246
2246
|
|
|
2247
|
-
/** the guest operating systems a sandbox can boot
|
|
2248
|
-
|
|
2247
|
+
/** the guest operating systems a sandbox can boot — the eleven-seat OS
|
|
2248
|
+
* tab the owner's standardization ordered: the five historical seats
|
|
2249
|
+
* (android, grapheneos, linux, omarchy, windows) beside the six catalog
|
|
2250
|
+
* distributions that carry honest amd64 and arm64 legs in the published
|
|
2251
|
+
* grid (vanillaos, archlinux, alpine, debian, fedora, nixos), so the OS
|
|
2252
|
+
* chip row answers the same breadth the container catalog ships. */
|
|
2253
|
+
export type sandboxosid =
|
|
2254
|
+
| 'android'
|
|
2255
|
+
| 'grapheneos'
|
|
2256
|
+
| 'linux'
|
|
2257
|
+
| 'omarchy'
|
|
2258
|
+
| 'windows'
|
|
2259
|
+
| 'vanillaos'
|
|
2260
|
+
| 'archlinux'
|
|
2261
|
+
| 'alpine'
|
|
2262
|
+
| 'debian'
|
|
2263
|
+
| 'fedora'
|
|
2264
|
+
| 'nixos';
|
|
2249
2265
|
|
|
2250
2266
|
/** the guest cpu architectures (amd64 == the x86_64 of the engine bank). */
|
|
2251
2267
|
export type sandboxarchid = 'arm64' | 'amd64';
|
|
@@ -2267,6 +2283,12 @@ export const SANDBOXOSES: readonly sandboxosid[] = [
|
|
|
2267
2283
|
'linux',
|
|
2268
2284
|
'omarchy',
|
|
2269
2285
|
'windows',
|
|
2286
|
+
'vanillaos',
|
|
2287
|
+
'archlinux',
|
|
2288
|
+
'alpine',
|
|
2289
|
+
'debian',
|
|
2290
|
+
'fedora',
|
|
2291
|
+
'nixos',
|
|
2270
2292
|
];
|
|
2271
2293
|
export const SANDBOXARCHES: readonly sandboxarchid[] = ['arm64', 'amd64'];
|
|
2272
2294
|
export const SANDBOXFORMS: readonly sandboxformid[] = ['runtime-node', 'full-docker', 'published'];
|
package/tsconfig.json
CHANGED
|
@@ -24,6 +24,9 @@
|
|
|
24
24
|
"moduleResolution": "NodeNext",
|
|
25
25
|
"types": ["node", "vite/client"],
|
|
26
26
|
"paths": {
|
|
27
|
+
"@wenathlan/vault/labelstore": ["../vault/labelstore.ts"],
|
|
28
|
+
"@wenathlan/vault/onboardingstore": ["../vault/onboardingstore.ts"],
|
|
29
|
+
|
|
27
30
|
"@/*": ["./sol/*", "./*"],
|
|
28
31
|
"@saddle/isolation": ["./isolation.ts"]
|
|
29
32
|
}
|