qdistro aims for brokered provenance and contamination control — not full fine-grained information-flow noninterference. The model is stated explicitly on purpose: several design choices (hide-the-UI vs. sandbox, cooperative vs. enforced read-only, one-fingerprint vs. per-user auth) only make sense once you know what is and isn’t being defended. This page is the public summary; the full threat model in the source tree is authoritative.

A guiding rule: apps are not trusted to self-report their own security-relevant identity. Authoritative lineage and audit identity come from broker decisions, kernel peer credentials, SELinux labels, and compositor endpoint identity — never from an app’s say-so.

What it protects against

What it does not

These are out of scope by design, not gaps to be fixed later:

Where the boundary really is

Isolation tiers 0–3 (none / SELinux / podman / different-uid) all rest on the host kernel: a single kernel privilege-escalation collapses them together. That is stated honestly rather than papered over —

Admin is the trusted computing base. Admin’s compositor, session manager, polkit agent, and locker run with full trust — if admin is compromised, so is the machine. The intended discipline for those TCB processes is no-network + envelope-only parsing; in v1 the no-network half is shipped-with-exceptions: the broker has VM-verified SELinux and runtime no-network coverage; the polkit agent and locker have only the runtime half (the SELinux/VM-negative half is still landing); and the session manager is an explicit exception while it owns the network control client. The broker’s evidence does not speak for the others.

Deferred by design

Hardening that is planned but explicitly not in v1 — listed so the scope is honest:

See what ships in v1 for the per-feature breakdown.