# Desktop consume-gate (throwaway only)

Prove `oci.thepeoples.io/desktop/quarry:stable` on a **disposable** bootc VM.

## Forbidden hosts

- `quarry-builder-01` (VM 140)
- `steamvm-01` (VM 130 — gaming/Sunshine)
- `desktop-agent-01`, estate CTs/VMs used for production

## Throwaway host

| Field | Value |
| --- | --- |
| PVE VMID | **141** |
| Name | `quarry-qa-01` |
| Spec | 8G RAM (balloon 0), 4 cores, 50G scsi0 virtio-scsi, OVMF+std VGA, serial0, agent=1, onboot=0 |
| LAN IP (DHCP) | `172.25.0.20` (MAC `BC:24:11:AE:34:70`, vmbr0) |
| Base image | `quay.io/fedora/fedora-bootc:42` via `bootc install to-disk --generic-image --via-loopback --filesystem xfs` |
| SSH | root with dig-agent + grokbot keys baked at install |

Safe to destroy when done.

## Procedure

1. Cosign verify:
   ```bash
   curl -fsSL -o /tmp/oci.pub https://thepeoples.io/keys/oci.thepeoples.io.pub
   # cosign binary: download to /tmp on bootc (usr is RO) if not present
   cosign verify --key /tmp/oci.pub --insecure-ignore-tlog \
     oci.thepeoples.io/desktop/quarry:stable
   ```
2. On the throwaway only:
   ```bash
   bootc switch oci.thepeoples.io/desktop/quarry:stable
   systemctl reboot
   ```
3. After reboot: confirm Quarry overlay markers, networking, and that rollback still works (`bootc status`).

### Notes from VM 141 run

- First `bootc switch` OOM-killed when balloon left the guest at ~753Mi; set `balloon: 0` and hard-restart so guest sees ~8G before retry.
- Post-switch boot hung on `bazzite-hardware-setup.service` in KVM; mask that unit on the staged deployment if the guest never reaches multi-user/SSH.
- Plasma first-setup UI appears; SSH still works once network is up.

## Result (2026-09-09 CT / 2026-09-10 UTC) — PASS

| Check | Result |
| --- | --- |
| Cosign verify | **PASS** — digest `sha256:3bb0562e0bc661ec074e6dcbbfd789590a4bfa968bda2dc88cf3abcdb5e6b3ac`, key `oci.thepeoples.io.pub`, `--insecure-ignore-tlog` |
| Before switch | Booted `quay.io/fedora/fedora-bootc:42` (`42.20260513.0`) |
| `bootc switch` | **PASS** — staged `oci.thepeoples.io/desktop/quarry:stable` version `44.20260908` |
| After reboot | Booted `oci.thepeoples.io/desktop/quarry:stable` / `44.20260908` / digest above |
| Rollback slot | Present: `quay.io/fedora/fedora-bootc:42` |
| Overlay markers | `/usr/share/quarry/` (POLICY, README, kde-defaults), `/usr/share/backgrounds/quarry/`, `/usr/share/plymouth/themes/quarry`, `/usr/share/ublue-os/just/90-quarry.just`, `/usr/share/pixmaps/quarry.png` |
| OS identity | `NAME=Bazzite` / `PRETTY_NAME=Bazzite` (Quarry cut); `image-info.json` still vendor `ublue-os/bazzite` as expected for the cut |

## Follow-up: ISO / installer

Disk-image consume-gate on `quarry-qa-01` (VM 141) is green. KVM notes
above (balloon 0; mask `bazzite-hardware-setup.service` if hung) remain
in force for re-runs.

**Next:** minimal-installer spike (Option B) — strategy in
[`docs/iso-strategy.md`](iso-strategy.md), plan + scripts in
[`docs/iso-spike.md`](iso-spike.md). Helper:

```bash
sudo ./scripts/iso/install-quarry.sh --mode switch --yes --variant desktop/quarry:stable
```

Do not destroy VM 141 unless needed; prefer a fresh throwaway disk/VM for
`to-disk` P1 tests.


## ISO installer P1 (2026-09-10) — PASS

Drove [`scripts/iso/install-quarry.sh`](../scripts/iso/install-quarry.sh) on
throwaway **VM 142** (`quarry-iso-p1`, `172.25.0.21`) after rollback to
`fedora-bootc:42`. Cosign + `bootc switch` to `:stable` succeeded; post-reboot
overlay markers matched the consume-gate table. Details in
[`docs/iso-spike.md`](iso-spike.md) § P1 results.

Mirror remap config + canonical cosign verified; live pull via
`oci.thepeoples.dev` skipped (`desktop/quarry` not on mirror yet).


## VM layout (anti-sprawl)

| VMID | Name | Role |
| --- | --- | --- |
| 140 | `quarry-builder-01` | Long-lived **builder** (images, BIB, act_runner) |
| 141 | `quarry-qa-01` | Long-lived **test guest** for images built on 140 |

Do **not** leave extra Quarry QA VMs. Ephemeral ISO/Anaconda guests (e.g. former 144) are one-shot and must be destroyed when finished. Prefer reusing 141 for `install-quarry` / `bootc switch` QA.
