An operating system whose day job is machine learning.
OS state is topology on the unit sphere S². Training runs get a kernel that measures the shape of their overfitting. Inference gets a KV cache that evicts by elementary collapse.
Four things the kernel does that other kernels do not try.
Built to be the layer where a training run and an inference server are understood, not just scheduled. Each of these runs in the kernel today, on synthetic workloads; real-model validation is the open work.
stratum · Seal ABI 120–124
The kernel watches the shape of your loss curve.
Push (train_loss, val_loss) each step and get a regime back: Underfit, WellFit, Overfit or Collapsing. Overfitting closes a loop in the delay embedding of the validation curve. A run that only falls scores exactly 0. 4,792 bytes per stream, no allocation per sample.
foliation · Seal ABI 130–134
A KV cache that is a prefix tree.
Live sequences share cached blocks wherever their prefixes agree, and a sequence's block table is its path down the tree. Eviction removes only a free face: a block that is resident, unreferenced and has no resident children. Sharing requires an exact token match. Its eviction order matches the optimum on a trace built so that recency always evicts the shared prefix, and loses to LRU on a multi-turn chat trace, so the system-call cache defaults to LRU. Both traces, measured.
TopoRAM · ManifoldFS
Memory and files are points on a sphere.
Every physical frame carries 64 bytes of metadata: its S² embedding, access history, Voronoi cell and lifetime class. Files are placed and found the same way, by great-circle distance to Voronoi centroids, with spectral prefetch and an entropy governor over the cells.
certify or refuse
It refuses rather than guesses.
Component counts, attention top-k, fit verdicts and nearest-centroid lookups come back with a certificate, or with a refusal naming the pair that made them ambiguous. The kernel does not return a number that rounding, not the data, chose. See every one drawn.
It boots · QEMU · OVMF
Ten theorem checks, one refusal, a desktop, an event loop.
The UEFI image boots under QEMU and checks T1 to T10 from aether_verified. T4 is judged at the step the governor actually runs, where its gain margin fails, so the line says NOT CERTIFIED and boot goes on; any other failure panics. Then the kernel brings up its layers, draws a desktop and enters its event loop. CI boots every build this way and fails it without the theorem, SealShell, desktop and event-loop lines.
9 / 10boot theorem lines VERIFIED5.01T4's α + β/dt at the runtime dt of 0.01; certifying needs < 1
$ qemu-system-x86_64 -machine q35 … seal-os.img…[T4/AGCR] Governor online: epsilon = 0.1000 alpha=0.01 beta=0.05 dt=0.01…[THEOREM] T1/TSS VERIFIED[THEOREM] T2/SCM VERIFIED[THEOREM] T3/GMC VERIFIED[THEOREM] T4/AGCR NOT CERTIFIED: alpha+beta/dt=5.01 >= 1 at dt=0.01[THEOREM] T5/HCS VERIFIED[THEOREM] T6/RGCS VERIFIED[THEOREM] T7/PHKP VERIFIED[THEOREM] T8/TEB VERIFIED[THEOREM] T9/CMA VERIFIED[THEOREM] T10/WPHB VERIFIED[BOOT] 9 of 10 theorems VERIFIED; T4/AGCR NOT CERTIFIED; T1-T3, T5 ACTIVE in runtime paths…[BOOT] Syscall FS ready[BOOT] All layers initialized.[Desktop] Rendering desktop environment[SealShell] Loaded[BOOT] Seal OS desktop ready.[EVENT] Entering real event loop — keyboard and mouse active
Lines are the kernel's own format strings at 3c14df0, in boot order; "…" marks lines left out.
Accepted plan · 2026-09-27
Direction: a Linux kernel replacement.
Seal OS is to boot under any Linux distribution as that distribution's kernel: the userland runs unmodified, the bootloader and initrd tooling work unchanged, and Linux drivers are usable. Seven decisions carry it: the Linux x86_64 syscall ABI as the only ABI, the Linux boot protocol, Linux drivers unmodified inside isolated LKL driver servers, ext4 behind a crash-consistency gate that a stock Linux kernel replays, the geometric subsystems kept under Linux permissions, progress counted by the Linux Test Project, and pinned ports for whatever is not built natively.
0ring-3 instructions executed, with or without a /bin/init1 / 49syscalls made by five Ubuntu programs that reach the same call4,310of 4,310 scanned kernel pages writable and executable; 0 of 24,004 since b3cf934853 / 924Linux driver modules the licence gate refuses in the kernel
The starting point, measured at 9ebbe2e; each number is a test under tests/linux_parity that fails there.
milestone
scope
gate, in QEMU
status at c055594
M0
ring 3; syscall entry on a kernel stack with swapgs; user faults kill the process; kernel W^X; ext2 feature refusal; theorem lines from live state; CI green; ports/
Certify or refuse: the round that made the answers honest.
Eight results from the certify-or-refuse round, then eleven more ported from related work on 2026-09-27. Each one was a number that the arithmetic, not the data, had chosen. Each figure below runs the rule it describes.
1,215 → 0wrong nearest-centroid answers in 5,000 queries0.96875 → 0loop score of a loss curve that only falls0.001 → 10.0what one /mv did to ε; now it is held849 / 0workspace tests passed / failed at 0f040e0
The separation is measured on the drawn centroids every frame.
01 · T1/TSS · b9a4531
The boot stopped failing its own theorem.
The eight boot centroids were placed at latitude ±asin(1/√3), but the distance reads colatitude, where (−t, φ) is (t, φ + π). Eight centroids fell onto four, T1 measured a minimum separation of 0 against θmin 0.50536, and boot panicked. At colatitude they are the cube again, 1.2310 rad apart, pinned by a compile-time assert because seal-os tests do not run.
0minimum separation, beforeacos(1/3)minimum separation, after
How it was checked, 3 ways
locate over the cube returned [0, 1, 2, 3, 2, 3, 0, 1] before and [0 … 7] after
ManifoldMemory::great_circle had the same latitude formula: two equator points a quarter turn apart measured 0 (73372ac)
a QEMU boot of the release image prints [THEOREM] T1/TSS VERIFIED
Centroids and query are the test's pole counterexample.Before: commit cdb4a4e. After: probe_e re-run at 0f040e0.
02 · grid-hash locate · cdb4a4e
A lookup that never checked outside its block.
SphericalGridHashIndex::locate returned the best centroid in the 3×3 cell block around a query and counted it as an O(1) hit. Nothing checked for a nearer centroid outside the block, and the block was a wedge even at the pole. It now accepts the block winner only when it is nearer than any point outside the block can be, and scans every centroid otherwise.
1,215wrong of 5,000, before0wrong of 5,000, after
How it was checked, 3 ways
25,000 seeded queries over K = 2, 8, 20, 64 and 200: 101 of 5,000 wrong at K = 2 before, 0 wrong at every K after
the pole counterexample returned slot 1 before and slot 0 after
an equatorial query whose block winner is 1.47 rad away against a 0.785 rad boundary reported a hit rate of 1.0 before and 0.0 after
The points are chosen for the picture; the tree, the band and the verdict are computed by the rule.
03 · certified β₀ · 8678c97
A component count is certified, or the pair is named.
certified_beta0 takes the n − 1 merge heights of a Euclidean minimum spanning tree. If none lies in [s/√10, s·√10], every threshold in that band gives the same count and it is certified. Otherwise the answer is a refusal naming the edge nearest the scale. The seal-os encoder used to count at a chord of 0.5 with a strict <. It now stores the certified count, or u32::MAX.
0.5 ± 1e-9chord pair: two integers before, both refused now500seeded clouds agree with all-pairs union-find
How it was checked, 4 ways
permutation, isometry and scale invariance; a single point, an empty cloud, a non-finite coordinate
heights use m·√Σ(d/m)², so a 1e-170 separation no longer squares to zero and 1e170 no longer overflows
30 embeddings, seed 42: a spanning edge of 0.089 at ε = 0.1 was accepted, and is now refused (cb8a873)
planted mutants (h <= lo, h >= hi, clamp removed, wrong edge named) each fail a test
Scores and radii are illustrative; the keep, widen and fall-back rule is certified_top_k's.
04 · attention top-k · afd0969, eb4af16
Top-k keeps its keys only when the intervals separate.
Each score carries Higham's a-priori bound γₙ·Σ|q_d k_d|. The top set is kept only when every selected lower end clears every unselected upper end. Otherwise the row widens to every key that reaches the lowest selected lower end, at no extra dot products. A NaN or infinite score refuses, and the row falls back to dense.
0.0 vs 1float vs exact score of k₀ = [1e17, 1, −1e17] at q = [1, 1, 1]2tests in the workspace suite that widen any row: the two counterexamples
How it was checked, 3 ways
on that q and k, OracleTopK{budget: 1} took key 1 (0.5) over key 0 (exact 1)
each test carries its exact reference: i128 for the inflated score, u128 for the radius against γ₈
2·1e308 + 2·(−0.95e308) reads NaN; such a row refuses as TopKRefusal::NonFinite and is listed in dense_rows
The loop score is computed live by a port of fold_score that reproduces 0.391 and 0.96875.
05 · stratum · abc7e0f, d52f6c6, dbbce44
A loss curve that only falls scores exactly zero.
stratum watches a training run's validation loss and counts loops in its delay embedding: overfitting folds back, a healthy run does not. A staircase turns by up to 90° at every change of slope, each corner closed a triangle, and the run was called Overfit. fold_score now checks monotonicity in O(n) and returns a certified 0. Two-step chords that a triangle fills are no longer counted, and the margin is 1.68, inside the derived band (1.633, 1.732).
0.96875staircase loop score, verdict Overfit, before0certified, before any complex is built
How it was checked, 3 ways
the Underfit fixture scaled by 1e-3 read spread 1.0 and WellFit, against 0.3529 and Underfit at ×1; the ratio now agrees within 1e-9 from 1e-300 to 1e300
a refused spread withholds only the Underfit gate; it no longer forces Collapsing
mutants at margins 1.0, 1.3 and 1.8 each fail a host test
The tree is a sketch; the key is the collision pinned in the kernel's const assertion.Measured under QEMU. Boot trace: CI run 36165748105, locality null 264235c. Chat trace: 0ab2377, random range from a host replay.
The KV cache shares a block only when its tokens match.
foliation shares a cached block between sequences with the same prefix. It shared whenever a 64-bit fold_key matched and never compared tokens, so two different blocks could read each other's KV state. A leaf now stores its tokens. Eviction only ever collapses a free face, and a task that did not open a sequence gets NoSuchSeq from SYS_KV_SEQ_APPEND, _RELEASE and _STATS. Which free face to collapse is another matter: the foliation ranking matches the optimum on a trace built so that recency always evicts the shared prefix, and comes last on a multi-turn chat trace.
952 bpboot trace: foliation, equal to Belady; LRU scores 0 by construction5,284 bpchat trace: foliation, against LRU's 8,068; it beats 0 of 32 random seeds
How it was checked, 4 ways
the collision 0xe0e00501162145bc was found by meet-in-the-middle against the shipped function and is pinned by a const assertion
the ABI default is LRU: with 16 live conversations instead of 4 the chat result reverses, 5,113 bp against LRU's 3,731 (one mutation build), so the winner follows whether reuse distance exceeds the pool
a locality-only null, the ranking without its entrant count, scores 476 bp on the boot trace and 6,818 on the chat trace; --check-kv-policy requires both traces (40d3568)
a foreign release, append and stats read are refused while the owner's blocks stay referenced
The margin curve is the formula; the three |e| values are quoted from commit 6c450d4.
The governor stopped certifying runs that did not converge.
epsilon-os checked T4 at boot with dt = 1, while the governor ticks at dt = 0.01, where the margin is 5.01. The READY line now says T4 is not active, and the seal-os boot gate now refuses T4 the same way. verify_theorem certified runs whose error stalled or grew, and now refuses at the first step that does not contract. /mv ran two ticks whose derivative spike threw ε from 0.001 to 10.0. It now runs none.
70 → 12of 420 configurations still certified5.01α + β/dt at the runtime dt; certification needs < 1
How it was checked, 4 ways
a run with ε pinned at 0.1 holds e = 1.7 at every step; it was certified and is now refused at step 1
ε and the tick count are pinned bit-identical across one /mv
boot prints [READY] Manifold filesystem online. Not active: T4/AGCR NOT CERTIFIED.
seal-os boot prints [THEOREM] T4/AGCR NOT CERTIFIED: alpha+beta/dt=5.01 >= 1 at dt=0.01, and --check-theorem-log rejects a VERIFIED line at that margin; with the gate put back at dt = 1, the in-kernel harness passes 563 of 564 and the log gate fails (3c14df0)
Positions and hashes are drawn at random; the split and routing rules are voronoi_cap's.
08 · ManifoldFS cells · 8e378e8, f00e8f9
Split, lookup and removal route by the same point.
VoronoiCap::split_cell sent a file to a side by a hash of its inode id, a value in [0, 1], while locate routed by its first coordinate, a value in [−1, 1], against the same boundary. After the 65th insert into a cell, find could miss a file stored before the split. Every id now records its point, and all four operations route through one function over it.
64files a cell holds before it splits520payloads the test inserts, 8·64 + 8, so some cell always splits
How it was checked, 3 ways
every id is exactly once in its locate() bucket after a split and after removing every subcell-1 id
a T3 entropy merge now redirects lookups to the merged cell; every file is found after entropy passes 2.0
voronoi_cap::basic_insert_locate is now registered with the runner; it had never run
Imported · 2026-09-27
Eleven fixes ported from related work.
Each port started from a test that failed for the reason in the "before" column and passes after it. The numbers are quoted from the commit that landed each one; all eleven are in the table in docs/RESULTS.md with their test counts.
from
rule ported
where
before
after
cleave
union-find join: the absorbed root points at the survivor
cut_tree, aether-core
points [0, 1, 10] cut at k = 1 gave two clusters
one cluster (14a3bb1)
cleave
the same join
entropy merge, epsilon-os ManifoldFS
a file stored after a merge landed in the emptied cell
routed to the survivor (82e034f)
resolvent
refuse non-finite logits before the softmax
scheduled_attention, aether-core
q = [1e200], k = [-1e200] returned Ok([NaN])
NonFiniteScore at row 0, column 0 (c26d88a)
resolvent
the same refusal, in the reference kernels
sparse_attention, dense_masked_attention
the dense reference answered Ok([NaN]) where scheduled_attention refused
both refuse (af416fa)
sigmoid
Chebyshev keep: σ from the scores judged; no spread, no pruning
regulate_entropy, aether-core heap
64 of 64 objects pruned in one pass, against a proved ceiling of 16
within the ceiling (f20f6b2)
separatrix
decide d < ε only where the error interval clears ε
rips_betti_1, aether-core
unit square at ε = fl(√2): β₁ = 1, exact 0
refused, naming pair (0, 2) (82e4a8f)
separatrix
certify a pair only where d − R > θmin, R the rounding radius
verify_separation, aether-core and aether_verified
a pair 0.4999995 apart at θmin = 0.5, and a NaN pair, were certified
both refused (2014ddb)
branchcut
an injective map onto m values misassigns at least n − m; checked to be 0
8-cell index of the scheduler, compositor and firewall
slots 3 and 6 unreachable: locate gave [0, 1, 2, 0, 4, 5, 0, 7]
[0 … 7], on the cube (87d7b10)
branchcut
the same certificate, for the router
route index, seal-os network
5 distinct slots of 8; a lookup searched only its own cell and missed a route 0.08 rad away
[0 … 7], and the nearest route over every cell (9702061)
triton-lang/kernels#22
sink plus local window, used as a null
Policy::Locality, foliation
no replay separated the entrant term from depth
476 bp against foliation's 952 on the boot trace (264235c)
NeMo-Relay#481
a stable scaffold under varying turns
chat trace, foliation proof
the proof replayed only a trace LRU loses by construction
foliation 5,284 bp against LRU 8,068 (0ab2377)
One test, four questions.
Compute the answer with an enclosure. If the enclosure stays clear of the decision boundary, return the answer. If it touches the boundary, return the witness, and let the caller widen, scan or refuse.
question
certified when
otherwise
caller then
β₀ at scale s
no spanning-tree merge height lies in [s/√10, s·√10]
refused, naming the edge (i, j, height) nearest s
stores u32::MAX, or rejects the payload
top-k of q·k
every selected lower end exceeds every unselected upper end
BoundaryRefusal: both keys, the float gap, the margin needed
widens the row, or falls back to dense
fit of a training run
a monotone window scores 0; the spread clears a relative rounding bound
the participation ratio is NaN
withholds the Underfit gate only
nearest centroid on S²
the block winner is nearer than any point outside the block can be
no answer from the block
scans every centroid
Limits.
All of them, in one place.
No user program has run
No ring-3 instruction has executed. /bin/init is absent from the image; with one present, boot stops after [execve] Loading '/bin/init'. Syscall entry stores onto the caller's stack. Everything on the desktop, the shell included, is kernel code. Reaching ring 3 is milestone M0 of the Direction.
Kernel tests do not run on the host
kernel/seal-os is excluded from the Cargo workspace, so its #[cfg(test)] tests are never compiled or run. Kernel checks run only in the in-kernel harness and the seal-mkimage boot proofs under QEMU, and the harness job fires only after CI succeeds. That is why several seal-os fixes here are pinned by compile-time assertions.
Synthetic results are screening only
stratum's fixtures and foliation's two traces are synthetic, and nothing has been run against a real model. Which eviction order wins follows the trace: foliation matches the optimum where recency always evicts the shared prefix, and loses to LRU, 5,284 bp against 8,068, where reuse follows recency. With 16 live conversations instead of 4 it wins again. Both traces run at one pool size.
T4 is refused, and no step size earns it
epsilon-os and the seal-os boot both report T4/AGCR NOT CERTIFIED at the governor's runtime dt = 0.01, where α + β/dt = 5.01. The margin assumes unit plant gain; the loop the code runs has a gain of about 10⁶ and 2-cycles between ε = 0.001 and 10 at dt = 0.01, 0.0506 and 1 alike (dcc35b6). The governor needs a redesign, not a new dt.
A certificate covers the question as posed
It says rounding and the choice of threshold cannot change the answer. It says nothing about whether the scale, the ratio of 10 or the embedding on S² was the right question. The points, scores and trees in figures 3, 4, 6 and 8 are chosen for the picture; the rules applied to them are the code's. The hit rates in figure 6 are measured, not chosen.
Elsewhere in the kernel
From the Limits in docs/RESULTS.md: TLS accepts Ed25519 certificates only; AMD GPU dispatch has never executed; WiFi and Bluetooth are PCI probes only; KASLR moves mappings, not the image base; 611 of the kernel's 627 unsafe blocks carry no safety comment. Kernel W^X is now enforced, with 0 of 24,004 scanned pages writable and executable (b3cf934).
Where the numbers come from
Every "before" figure is quoted from the commit named beside it. The nearest-centroid "after" figures, the stratum scores and the workspace count were re-run at 0f040e0 on Windows 11 with rustc 1.97.1: cargo test --workspace passed 849, failed 0, ignored 2. The 2026-09-27 results are quoted from the commits named beside them; at c055594, cargo test -p aether-core -p epsilon-os passed 490, failed 0. The QEMU results are quoted from the commits.
Reproduce it.
The host suite on stable Rust, the kernel on nightly for the UEFI target, and the boot under QEMU as .github/workflows/ci.yml runs it.
1. Host workspace
Everything except kernel/seal-os, which the workspace excludes.
Needs the rust-src and llvm-tools-preview components. --features test-mode builds the image that runs the in-kernel harness.
rustup component add rust-src llvm-tools-preview --toolchain nightly
cd kernel/seal-os
cargo +nightly build --release
cd ../seal-mkimage
cargo +stable run --release # writes seal-os.img next to seal-os.efi
3. Boot under QEMU and check the theorem lines
OVMF firmware, one AHCI disk, serial to the terminal.
timeout 240 qemu-system-x86_64 -machine q35 -cpu qemu64,+rdrand \
-drive if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/OVMF_CODE_4M.fd \
-device ahci,id=seal_sata \
-drive if=none,id=seal_disk,file=kernel/seal-os/target/x86_64-unknown-uefi/release/seal-os.img,format=raw,media=disk \
-device ide-hd,drive=seal_disk,bus=seal_sata.0,unit=0 \
-nographic -m 4G -no-reboot -no-shutdown | tee /tmp/seal-os.log
cargo +stable run --manifest-path kernel/seal-mkimage/Cargo.toml --release -- --check-theorem-log /tmp/seal-os.log
# expect: [BOOT] 9 of 10 theorems VERIFIED; T4/AGCR NOT CERTIFIED; T1-T3, T5 ACTIVE in runtime paths