docs: STOP-2 done, 9100 destroyed — and a correction

STOP-2 applied by the operator in the right order: Day-0 Golden -> 0.153.0
(sha256 matches the bake), Agent/MinAgent 0.90.0 unchanged, global floor ->
v0.153.0 saved last. Build guest 9100 destroyed.

Agent 0.90.1's absence from the hub dropdown is CORRECT, not a defect: it
was never published (Gitea 404; 0.90.0 returns 206) and felhom-pve runs
0.90.0. The v0.90.1 source is committed at 9596d5a, so R-39 is a
build+publish away.

CORRECTION: my earlier claim that the stored controller password was stale
was WRONG. Values in ~/.config/credentials are single-quoted and my cut
extraction kept the quotes, sending a 15-char string instead of the 13-char
password. Re-tested stripped: 302 + session. The credential was always
correct.

Also records honestly that the reconstitute restored over an already-good
state, so C6 still needs the destructive empty-the-trash drill.
This commit is contained in:
2026-07-20 19:07:06 +02:00
parent 332b2b84bc
commit 8d33a90888
+38 -5
View File
@@ -197,6 +197,26 @@ was deleted. Log retained beside its predecessor: `180:/mnt/5_hdd/felhom.eu/dril
the hub*. I did **not** render the hub's golden **dropdown** — that is the password-gated operator
UI, and it remains part of STOP-2.
## 4d. STOP-2 — hub saves: **DONE** (operator, 2026-07-20)
Both password-gated saves applied in the correct order and confirmed by screenshot:
| Setting | Value |
|---|---|
| Day-0 artifact — Golden | **0.153.0**, sha256 `15fdd191f3c660a60dc8651111053dd84281aeebc6c4c0f9ecdd3a87cb45a9d0` (matches the bake exactly) |
| Day-0 artifact — Agent | 0.90.0 (unchanged) |
| Min agent | 0.90.0 (unchanged — v0.153.0 declares no coupling) |
| Managed-updates global floor | **v0.153.0**, source `DB (hub_settings)`, saved **last** ✓ |
**Agent 0.90.1 is absent from the dropdown — correct, not a defect.** It was built on the old
Windows workstation but **never published**: `felhom-agent/0.90.1` in Gitea returns **404** (0.90.0
returns 206), and felhom-pve reports `felhom-agent 0.90.0`. The hub lists only published versions.
The v0.90.1 source IS committed (`9596d5a`, the R-39 `pvesm set --server` hotfix), so shipping it is
a build+publish away — tracked under R-39, out of scope here.
Build guest **9100 destroyed** (`pct destroy 9100 --purge`, all three LVs removed); only 9201
remains on the host.
## 5. NOT yet live-validated — remaining human/supervised work
- ~~**STOP-1**~~ — **DONE 2026-07-20, PASSED.** See §4b for the log ordering, timestamps and the
@@ -205,11 +225,15 @@ UI, and it remains part of STOP-2.
- ~~**Phase C**~~ — **DONE 2026-07-20.** Golden 0.153.0 baked, published, all gates green
(§4c). `GOLDEN_SHA256=15fdd191f3c660a60dc8651111053dd84281aeebc6c4c0f9ecdd3a87cb45a9d0`.
Housekeeping left for whoever is next at the host: `pct destroy 9100 --purge`.
- **STOP-2 (Viktor, password-gated):** Day-0 manifest Golden 0.153.0 (Agent 0.90.1 / MinAgent
0.90.0 unchanged — the CHANGELOG's no-coupling declaration is the authority), then floor →
v0.153.0 saved **LAST**. Watching the demo box wake during the manifest save banks the **R-23(a)**
operator-UI save→apply evidence — log the timestamps if observed.
- **Viktor's C6 customer-restore UI run** (note the empty-the-trash method).
- ~~**STOP-2**~~ — **DONE** (§4d). Golden 0.153.0 + floor v0.153.0 saved in the right order.
- **Viktor's C6 customer-restore UI run — STILL OUTSTANDING, and it is the one that matters.**
The 2026-07-20 reconstitute restored over an ALREADY-GOOD state (11 assets before, 11 after): it
proves the H4 window is closed and the operation is clean and non-destructive, but **nothing was
ever lost in it**. C6 needs the destructive shape — delete photos, **empty the trash** (deleting in
an app's own UI usually means trash, and a drill written that way merges 0 files, flashes success
and proves nothing), then restore and verify the app's *content*, not the file count.
- **The R-23(a) operator-UI save→apply evidence** was not captured: nobody was watching the demo box
wake during the manifest save. Cheap to bank on the next manifest save.
## 6. Observations (out of scope, recorded not acted on)
@@ -228,3 +252,12 @@ UI, and it remains part of STOP-2.
is asserted on the persist half only. That is the half the split could break; the tail is
byte-identical code that was moved, not rewritten.
- **R-29a (`estimate.go` gate finding)** remains open and was not touched.
- **CORRECTION to an earlier claim in this session.** Mid-run I reported that the controller password
in `180:~/.config/credentials` was **stale** and had been superseded by the customer-claim flow.
**That was wrong.** The values in that file are single-quoted (`PASSWORD='…'`) and my
`cut -d= -f2-` extraction kept the quotes, so a 15-character string with literal `'` on both ends
was sent instead of the 13-character password. Re-tested with the quotes stripped: `302` + session
cookie. The credential was correct the entire time; no rotation, no drift, nothing to reconcile.
The lesson recorded in memory is the general one: **an auth failure is evidence about the bytes you
sent, not proof about the stored secret** — a 2-character length discrepancy is this bug's
signature, and it was stated confidently three times before being caught.