@wenathlan/saddle 2.0.171 → 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 CHANGED
@@ -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
@@ -511,7 +581,21 @@ LABEL org.opencontainers.image.title="saddle (the android os-distribution lane)"
511
581
  FROM scratch AS osgrapheneos
512
582
  ARG SADDLE_VERSION=2.0.171
513
583
  ARG SADDLE_OS_PROFILE="grapheneos"
514
- ENV SADDLE_OS_PROFILE=grapheneos
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}" \
@@ -522,7 +606,21 @@ COPY osprofiles/grapheneos.json /saddle/osprofile.json
522
606
  FROM scratch AS osmaruos
523
607
  ARG SADDLE_VERSION=2.0.171
524
608
  ARG SADDLE_OS_PROFILE="maruos"
525
- ENV SADDLE_OS_PROFILE=maruos
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}" \
@@ -533,7 +631,21 @@ COPY osprofiles/maruos.json /saddle/osprofile.json
533
631
  FROM scratch AS osv
534
632
  ARG SADDLE_VERSION=2.0.171
535
633
  ARG SADDLE_OS_PROFILE="v"
536
- ENV SADDLE_OS_PROFILE=v
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}" \
@@ -544,7 +656,21 @@ COPY osprofiles/v.json /saddle/osprofile.json
544
656
  FROM scratch AS oswindows
545
657
  ARG SADDLE_VERSION=2.0.171
546
658
  ARG SADDLE_OS_PROFILE="windows"
547
- ENV SADDLE_OS_PROFILE=windows
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}" \
@@ -555,7 +681,21 @@ COPY osprofiles/windows.json /saddle/osprofile.json
555
681
  FROM scratch AS ospostmarketos
556
682
  ARG SADDLE_VERSION=2.0.171
557
683
  ARG SADDLE_OS_PROFILE="postmarketos"
558
- ENV SADDLE_OS_PROFILE=postmarketos
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}" \
@@ -566,7 +706,21 @@ COPY osprofiles/postmarketos.json /saddle/osprofile.json
566
706
  FROM scratch AS oslineageos
567
707
  ARG SADDLE_VERSION=2.0.171
568
708
  ARG SADDLE_OS_PROFILE="lineageos"
569
- ENV SADDLE_OS_PROFILE=lineageos
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}" \
@@ -577,7 +731,21 @@ COPY osprofiles/lineageos.json /saddle/osprofile.json
577
731
  FROM scratch AS oscalyxos
578
732
  ARG SADDLE_VERSION=2.0.171
579
733
  ARG SADDLE_OS_PROFILE="calyxos"
580
- ENV SADDLE_OS_PROFILE=calyxos
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}" \
@@ -588,7 +756,21 @@ COPY osprofiles/calyxos.json /saddle/osprofile.json
588
756
  FROM scratch AS osarchlinux
589
757
  ARG SADDLE_VERSION=2.0.171
590
758
  ARG SADDLE_OS_PROFILE="archlinux"
591
- ENV SADDLE_OS_PROFILE=archlinux
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}" \
@@ -599,7 +781,21 @@ COPY osprofiles/archlinux.json /saddle/osprofile.json
599
781
  FROM scratch AS osalpine
600
782
  ARG SADDLE_VERSION=2.0.171
601
783
  ARG SADDLE_OS_PROFILE="alpine"
602
- ENV SADDLE_OS_PROFILE=alpine
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}" \
@@ -610,7 +806,21 @@ COPY osprofiles/alpine.json /saddle/osprofile.json
610
806
  FROM scratch AS osdebian
611
807
  ARG SADDLE_VERSION=2.0.171
612
808
  ARG SADDLE_OS_PROFILE="debian"
613
- ENV SADDLE_OS_PROFILE=debian
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}" \
@@ -621,7 +831,21 @@ COPY osprofiles/debian.json /saddle/osprofile.json
621
831
  FROM scratch AS osfedora
622
832
  ARG SADDLE_VERSION=2.0.171
623
833
  ARG SADDLE_OS_PROFILE="fedora"
624
- ENV SADDLE_OS_PROFILE=fedora
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}" \
@@ -632,7 +856,21 @@ COPY osprofiles/fedora.json /saddle/osprofile.json
632
856
  FROM scratch AS osnixos
633
857
  ARG SADDLE_VERSION=2.0.171
634
858
  ARG SADDLE_OS_PROFILE="nixos"
635
- ENV SADDLE_OS_PROFILE=nixos
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}" \
@@ -643,7 +881,21 @@ COPY osprofiles/nixos.json /saddle/osprofile.json
643
881
  FROM scratch AS osvoid
644
882
  ARG SADDLE_VERSION=2.0.171
645
883
  ARG SADDLE_OS_PROFILE="void"
646
- ENV SADDLE_OS_PROFILE=void
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}" \
@@ -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: staging.payload, request });
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: "planned",
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: "planned",
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: "planned",
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: "planned",
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: "planned",
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: "planned",
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: "planned",
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: "planned",
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: "planned",
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: "planned",
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: "planned",
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: "planned",
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: "planned",
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: "planned",
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.171",
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",
@@ -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.168",
135
- "@wenathlan/cadria": "~2.0.168",
136
- "@wenathlan/debonair": "~2.0.168",
137
- "@wenathlan/devthink": "~2.0.168",
138
- "@wenathlan/getry": "~2.0.168",
139
- "@wenathlan/saddle": "~2.0.168",
140
- "@wenathlan/vault": "~2.0.168",
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.1.8",
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.168",
308
- "@wenathlan/cadria": "~2.0.168",
309
- "@wenathlan/debonair": "~2.0.168",
310
- "@wenathlan/devthink": "~2.0.168",
311
- "@wenathlan/getry": "~2.0.168",
312
- "@wenathlan/saddle": "~2.0.168",
313
- "@wenathlan/vault": "~2.0.168",
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.1.8",
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.168",
481
- "@wenathlan/cadria": "~2.0.168",
482
- "@wenathlan/debonair": "~2.0.168",
483
- "@wenathlan/devthink": "~2.0.168",
484
- "@wenathlan/getry": "~2.0.168",
485
- "@wenathlan/saddle": "~2.0.168",
486
- "@wenathlan/vault": "~2.0.168",
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.1.8",
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
- export type sandboxosid = 'android' | 'grapheneos' | 'linux' | 'omarchy' | 'windows';
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
  }