Five tools.
Checking each other.

distroproof proves Omniscient and xpac on real kernels. xpac installs what Omniscient compares against.
Omniscient measures VMAnyware while atfq is checked against procfs.

THE PRINCIPLE

No tool depends on another.
They meet through files.

None of the five links against another. They cross where one tool’s output is another’s input: a JSON report, a TOML matrix, an exit code, an MCP answer. Each crossing is a test that can fail.

One tool tests another.
distroproof boots the distros; Omniscient and xpac are what it runs there. Each campaign found defects the development machine never showed, and fed fixes back into distroproof.
Disposable machines only.
Every crossing runs inside a throwaway QEMU guest, as an ordinary user. Nothing installs packages on the host, and the chain does not touch Proxmox.
Evidence, not claims.
Each crossing compares a tool’s answer with an independent reading: envprobe against Omniscient’s refusals, /proc/meminfo against atfq, a second server against VMAnyware’s lock.

THE CROSSINGS / ALREADY RUNNING

What already crosses,
and what it found.

Eight crossings are already in use. Each one names the tools it joins and what came out of it.

01 / DISTROPROOF → OMNISCIENT

A kernel tool proven on 33 targets.

Omniscient’s installed releases ran on 17 distro images on their own kernels, 5 variants, 3 arm64 images and 8 rootless containers. distroproof found 27 defects: 13 in the tool, 14 in its tests. 158 source runs that Omniscient called usable were refused by the kernel at start in the first run, and none after the fixes. The latest run passed all 25 targets (33 cells), and every refusal reason matched envprobe’s reading of the same guest.

$ distroproof up --no-tui --jobs 4 --json target/matrix/distroproof.json
$ cargo test --test portability  # the judges, over every cell
02 / OMNISCIENT → DISTROPROOF

The tested tool improved the tester.

The campaign went both ways. distroproof gained 3 images (Gentoo, Debian sid, Fedora 43), 2 boot fixes and 3 [run] options, including file_caps and collect. envprobe gained 2 facts, the memlock limits and the function tracer configuration, because two Omniscient failures needed them to be explained.

[run]
file_caps = { "/opt/omn/bin/omn" = ["bpf", "perfmon", "net_raw"] }
collect = ["cross-tools.json", "witnesses.json"]
03 / DISTROPROOF → XPAC

A package manager tested on 16 images.

xpac follows Omniscient’s installed-release matrix. Its GNU and musl releases are installed on 16 distro images, plus root and lockdown variants. Each guest sends back a cell.json for the host to check. Real installs and removals run only in new disposable overlays.

$ distroproof up --no-tui --jobs 4 --json dist/matrix/inspection.json
$ python3 scripts/distroproof/check.py dist/matrix/inspection.json
04 / XPAC → OMNISCIENT

xpac installs the reference tools.

Omniscient checks its numbers against perf, bpftrace, bcc, strace, sysstat and valgrind. In each chain guest, xpac installs these reference tools through the distro’s own package manager: APT, DNF, Pacman, apk or Portage. Each installation is recorded in xpac-history.json.

05 / OMNISCIENT → VMANYWARE

A real server, measured live.

The chain starts VMAnyware’s server, saves a definition, gets a 403 back for a write from a browser origin, and checks that a second server refuses the locked database. Omniscient attaches to the running server and records mem.rss every 100 ms, without new rights.

$ omn mem.rss --pid $SERVER -m poll@100ms -e timeline,summary -d 1s --format json
06 / ATFQ ↔ PROCFS · MCP

An explanation held to the machine.

In each guest, atfq probe mem.summary must match /proc/meminfo byte for byte. The chain also starts atfq mcp and checks that its five tools are there and still declare readOnlyHint.

$ atfq probe mem.summary --json
$ atfq mcp  # lookup, search, toc, run_probe, list_probes
07 / OMNISCIENT → ATFQ, XPAC, ENVPROBE

The read-only promises, held to the kernel.

Omniscient runs each tool and follows every process it starts, from the kernel. atfq’s nine hubs, xpac’s inventory and plan against Pacman, and envprobe --json each created, renamed, removed and synced no file. None opened a TCP connection, and none started a program other than its own. atfq opened no IPv4 or IPv6 socket at all: only netlink, to read the interfaces. All eleven checks passed on 21 October 2026.

$ python3 scripts/devutils/promises.py
atfq      PASS  no file changed        1464 opens, 8084 reads
atfq      PASS  no IPv4/IPv6 socket    netlink only
xpac      PASS  only its own programs  xpac, pacman, pacman-conf
envprobe  PASS  no TCP connection      19 ms of cpu
08 / OMNISCIENT → THIS SITE

The front end, measured before and after.

The same 28-second visit of the Design page, three times on the version before the front-end work and three times on the version after, while Omniscient counted the browser’s cpu time and the graphics card’s energy. It refused to trace the cpu time on this machine and said why (tracefs needs CAP_SYS_ADMIN), so the run counts it instead. The results are just below.

$ omn -f bench/site.yml --format json --program-stderr visit.err > visit.json

THIS SITE, MEASURED / 20 OCTOBER 2026

Without GPU acceleration,
from 10 to 60 frames.

The version before the front-end work (2e965bc) against the one after (3e96fca), on the same machine. Without graphics acceleration, the old 3D ran in software and dragged the page down. On a fast graphics card, the two versions cannot be told apart. The version after still glides the mark from section to section as the page scrolls; the move to TypeScript (628cf1f) left it on the hero, and it glides again as of 21 October 2026.

MeasureBeforeAfterMeasured by
no GPU · frames9–10 a second, a frame every 100 ms60 a second, a frame every 16.7 msthe page’s own frame clock, 3 visits each
no GPU · cpu time262–268 s for a 28 s visit64–164 somn cpu.oncpu_time, count: the browser and all its processes
RTX 2080 Ti · frames60 a second60 a secondthe page’s own frame clock
RTX 2080 Ti · energy33–34 W at 1080p, 40–42 W at 2560×1440 ×233–34 W, 43–44 Womn gpu.power: within the noise, single runs reached 60 W either way
load · Lighthouseperformance 66–70, 1.6–6.2 s blocked98–100, 0–40 ms blockedLighthouse, mobile profile
load · layout shift0.096 on the tool pages0Lighthouse

Chromium driven by Playwright, headless, 1920×1080 unless stated; visits alternated between the two versions. The energy is the whole card’s, and the card changes its clock speed from one run to the next, so the energy cannot separate the two versions there. The smoother scrolling felt in Firefox was not measured here. Reproduce with bench/browse.ts and bench/site.yml in the site’s repository.

THE CHAIN / ONE GUEST, FOUR TOOLS

One matrix file.
Every tool installed as a user would.

The chain is one distroproof matrix, distroproof-devutils.toml, kept in Omniscient’s repository. Each guest gets frozen builds of the tools and runs them as an ordinary user.

LATEST RUNS / 21 OCTOBER 2026

Nine targets.
Every check holds.

The latest run on each target: the checks of the chain, the packages xpac installed for the reference tools, and Omniscient’s reference pairs. The chain now has eleven checks, the last one first run on 21 October: atfq and envprobe must describe the machine the same way. Every target has run all eleven checks, with 132 pairs.

TargetRunKernelInstalled by xpacReference pairs
chain-debian-1221 Oct · 11 checks6.120 packages, APT70 held · 61 skipped · 1 gap
chain-debian-1321 Oct · 11 checks6.1220 packages, APT74 held · 57 skipped · 1 gap
chain-ubuntu-24.0421 Oct · 11 checks6.821 packages, APT79 held · 52 skipped · 1 gap
chain-ubuntu-18.0421 Oct · 11 checks4.1518 packages, APT36 held · 95 skipped · 1 gap
chain-fedora-latest21 Oct · 11 checks6.1919 packages, DNF95 held · 36 skipped · 1 gap
chain-rocky-921 Oct · 11 checks5.1416 packages, DNF81 held · 50 skipped · 1 gap
chain-arch21 Oct · 11 checks7.218 packages, Pacman95 held · 36 skipped · 1 gap
chain-alpine21 Oct · 11 checks6.1820 packages, apk83 held · 48 skipped · 1 gap
chain-gentoo21 Oct · 11 checks6.1813 packages, Portage46 held · 85 skipped · 1 gap

A pair is held when Omniscient and the reference tool agree within the declared tolerance. A pair is skipped when the guest cannot serve it, and the skip names the reason: kernels and packaged tools differ between distros. The gap, the same on every target, is a known difference rather than a failure: memleak counts memory mapped with mmap, and Omniscient’s heap measure does not. The chain found an xpac defect on Gentoo, now fixed: two emerge --pretend runs list the same plan in a different order, and xpac refused bpftrace as a stale plan. Two problems remain outside the tools. Gentoo’s binhost built bcc and bpftrace against another LLVM, so neither loads; on Debian 13, bcc does not compile its programs. Omniscient’s pairs used to count such a tool as a disagreement; they now skip it with its reason, which is why Gentoo skips 85 pairs, all of bpftrace’s among them. On Debian 13, a biolatency median one bucket outside its band in the previous run held on the rerun.

THE SHARED CONTRACT

What makes them
composable.

The crossings work because the tools follow the same rules, so the output of one can be checked by another.

{ }01 / JSON

Structured output

Every tool has a --json output. envprobe and the chain report carry a schema_version.

envprobe --json
⊘02 / REFUSALS

A refusal names its reason

An unavailable Omniscient source, a missing atfq probe, a denied envprobe value: each says why, so another tool can check that reason.

✓03 / REVIEW

Changes are explicit

xpac shows a plan before it runs. VMAnyware previews provisioning before creating anything. atfq and envprobe only read.

◇04 / MCP

Agents included

atfq mcp and Omniscient’s omn-mcp serve read-only tools over stdio. An agent can ask atfq what a number means and Omniscient what it measured.

▥05 / LOOK & FEEL

One family of interfaces

xpac’s TUI takes its two panes from atfq and its confidence cues from Omniscient. atfq’s demo script follows the format of Omniscient’s.

⧉06 / DISPOSABLE

Tested where it can break

Package transactions, capabilities and kernel probes run in throwaway VMs on the distro’s own kernel, never on the developer’s host.

RUN THE CHAIN

Four tools,
one command.

The chain lives in Omniscient’s repository, which is private for now. These are the commands it runs.

FROM AN OMNISCIENT CHECKOUT, WITH XPAC, ATFQ AND VMANYWARE BESIDE IT
sh scripts/distroproof/reference-build.sh
sh scripts/distroproof/devutils-build.sh
distroproof up -f distroproof-devutils.toml --no-tui --pin-cache --jobs 4 \
  --json target/matrix/devutils.json
Nine targets, every check holds · Omniscient is private for now · MIT / Apache-2.0