# Teardown — OWED, not done (walk5, the fifth walk, 2026-08-07)

**Deliberately not performed in this session, per §10: the machine is the evidence until the verdict
is written.** The verdict is written (`journal.md`); the venue still stands so it can be re-read if
anything in this report is questioned. **Predecessor ledgers:** `teardown-finalwalk-2026-08-07.md`,
`teardown-2026-08-06.md`.

## The enumeration, matched on IDENTITY — never on size

Size is not a key here: on 2026-08-06 an item that measured exactly the expected size turned out to be
a working store.

| Layer | Item | Identified by |
|---|---|---|
| **machine** | `demo-hp` VM **325** `walk5-appliance` — 4 disks (efidisk + 200 G + 50 G + 50 G), **17 G actual** on `/mnt/nvme-1tb/images/325` | `qm config 325` → `name: walk5-appliance` |
| **hub** | customer **`walk5`**, host **`walk5-4bada5`** | `GET /configs/walk5/delete` preview + a FULL-SCHEMA census |
| **off-site** | Storage Box sub-account **285351**, user `u629488-sub4`, home naming the customer | Hetzner API, matched on the home directory |
| **off-site** | `ep0` PBS namespace **`walk5`** in datastore `felhom-offsite` | `ls /mnt/pbs-datastore/ns` — **the live store is `/mnt/pbs-datastore`; `/srv/pbs-felhom` is STALE and reading it gives a wrong answer in both directions** |
| **network** | WireGuard peer **10.77.0.5** | `wg_peers.host_id = walk5-4bada5`; verify removal on ep0's **live `wg show`**, not only in the hub DB |
| **DooPlex** | `~/.config/walk5/` — `dashboard_pw.txt`, `root_pw.txt`, `root_pw_rotated.txt`, `breakglass.json`, `retrieval_passphrase.txt`, `claim_code.txt` (all `0600`) | **`R_walk5.txt` is already `shred -u`'d, with a planted-copy control proving the sweep works** |
| **DooPlex** | the `walk5` block in `~/.ssh/config`, and the appliance's host key in `~/.ssh/known_hosts` | |

## `pvesm status` BEFORE (2026-08-07, venue standing)

```
c11-scratch    dir  active   983379700 KiB total   23680040 KiB used   909673048 KiB avail   2.41%
```

Take it again after; the delta should be ≈ 17 G. (`c11-scratch` and `felhom-backup` are two `dir`
entries over the **same** path `/mnt/nvme-1tb`, so they move together — do not read that as double
counting.)

## The gate that shapes the operation

**The cascade REFUSES to delete a live host** — there is no hub decommission endpoint; the word appears
only in the refusal. So VM 325 must be **stopped first** (guarded on `qm config 325` reading
`name: walk5-appliance` — `demo-hp` also carries a guest 9201, and the appliance carries its own) and
the hub allowed to age it past its `stale_threshold` (**30 m**, read from the deployed `hub-config`,
not assumed). Poll `GET /hosts/walk5-4bada5/delete-impact` for `deletable` — and **treat an empty
response as retry, not as success**.

Then `POST /configs/walk5/delete` with all six gates: `ack_hosts=1 ack_reset=1 ack_purge=1
confirm_id=walk5 expect_hosts=1`.

## What will NOT be gone, and must be checked rather than assumed — R-244

A full-schema census after the cascade will return rows, not zero. Four sources are **deliberate**
(`events`, `notification_log`, `host_deletions`, `customer_resets` — *"provenance/events are NEVER
wiped"*). The fifth is the open gap: **`app_log_issues`**, which the residue purge does not touch.

**Measured 2026-08-08 across the whole table:** 1309 rows, of which **71 reference a torn-down venue**
(`finalwalk`, `c11`, `rewalk`, `part4`) — **44 orphans** (safely deletable) and **27 shared with a live
customer** (`demo-felhom`, `peti-felhom`, …) which must be **de-referenced, never deleted**. **This
walk will add to that count.** Do not attempt a `DELETE … WHERE customer LIKE` — it would destroy a
live customer's issue history. R-244 carries the proposed shape.

**A per-table absence query is not a census.** The verification is a full-schema sweep, and that is
what found this.

## Positive controls the teardown must keep (each must SURVIVE)

- `qm list` still shows VM **300 `drill-r50`** — the protected drift fixture.
- Guest **9201 on `demo-hp` itself** still running (the host was never the target).
- Storage Box sub-accounts **`u629488-sub1/2/3`** (demo-felhom, peti-felhom, demo-hp) still present.
- `ep0` namespaces **`demo-felhom`** and **`demo-hp`** still present.
- WireGuard peers **10.77.0.2/.3/.4/.250** still on `wg0`.
- Hub rows for `demo-felhom`, `demo-hp`, `peti-felhom`, `david` untouched.

## One extra item this walk adds

**The `walk5` retrieval passphrase is compromised** — it reached a session transcript from the customer
page's `data-secret` attribute (**R-249**). It dies with this customer's deletion, which is the reason
the teardown should not be left indefinitely. No other walk5 secret left its `0600` file.
