Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Test runs

Each version runs the whole test matrix on the reference machine, in one session, before its tag is made. Its record is added here, newest first. A record never names the machine, its addresses or its network.

v1.0.1

  • Date: 2026-10-17
  • Commit: b87ba77b62b270ca651cbc74b856d0815e43b742
  • Kernel: 7.1.8-arch1-Watanare-T2-3-t2
  • Podman: 6.1.0
  • systemd: systemd 261 (261.2-1-arch)
  • Smokescreen: 609eb8931420453daf5893509be0b25b21bd9edb
LevelCommandResult
Ugo test ./...pass
Igo test -tags integration ./...pass
Onlinego test -tags integration,online -run Online ./...pass
Fuzzeach target for 5 minutesno new failure
Manual stepResult
A1pass, “permission denied” on the configuration, the secrets and the data_dir; the operator reads them
A2pass, the decoy is in no process list or environment in 30 samples, 9 during a box; the operator finds it in its files
A3pass, “permission denied” on the keep\’s socket and on the data_dir; the operator connects
A4pass
Trafficpass, sandcastle’s pieces open only keep → gate and gate → an allowed destination; every other flow is a test’s attacker or control
Bootpass, the gate, the keep and the core were up from the lingering user manager, whose session logind opened first; the desktop’s auto-login opened in the same second
Private namespass: the publication script finds no private name in the git history, on GitHub or in the built site

v1.0.0

  • Date: 2026-10-16
  • Commit: 0851a23aff269507d10c1c7527ab2a163c5f7f39
  • Kernel: 7.1.8-arch1-Watanare-T2-3-t2
  • Podman: 6.1.0
  • systemd: systemd 261 (261.2-1-arch)
  • Smokescreen: 609eb8931420453daf5893509be0b25b21bd9edb
LevelCommandResult
Ugo test ./...pass
Igo test -tags integration ./...pass
Onlinego test -tags integration,online -run Online ./...pass
Fuzzeach target for 5 minutesno new failure
Manual stepResult
A1pass, “permission denied” on the configuration, the secrets and the data_dir; the operator reads them
A2pass, the decoy is in no process list or environment in 30 samples, 6 during a box; the operator finds it in its files
A3pass, “permission denied” on the keep’s socket and on the data_dir; the operator connects
A4pass, the gate does not answer; no listening port of the machine is sandcastle’s
Trafficpass, sandcastle’s pieces open only keep → gate and gate → an allowed destination; every other flow is a test’s attacker or control
Bootpass, the gate, the keep and the core were up from the lingering user manager, whose session logind opened first; the desktop’s auto-login opened in the same second
Private namespass: the publication script finds no private name in the git history, on GitHub or in the built site

The shape of a record

## vX.Y.Z

- **Date**: YYYY-MM-DD
- **Commit**: the full hash the tag points at
- **Kernel**: `uname -r`
- **Podman**: `podman version --format '{{.Client.Version}}'`
- **systemd**: `systemctl --version`, first line
- **Smokescreen**: the commit the gate's recipe fixes

| Level | Command | Result |
|---|---|---|
| U | `go test ./...` | pass / fail |
| I | `go test -tags integration ./...` | pass / fail |
| Online | `go test -tags integration,online -run Online ./...` | pass / fail |
| Fuzz | each target for 5 minutes | no new failure / the failing input |

| Manual step | Result |
|---|---|
| A1 | pass / fail, with what was seen |
| A2 | … |
| A3 | … |
| A4 | … |
| Traffic | … |
| Boot | … |
| Private names | … |

A version is released only when every row passes. A promise that cannot be proved is fixed, or moved outside the promise with the threat model rewritten; a row is never left empty.