Files
felhom.eu/REPORT.md
T
admin 1dc86523b5 docs(pilot): GL-6 wrap-up — gates LIVE-VALIDATED, REPORT, decision log
G2/G4/G5/G6/G7 -> LIVE-VALIDATED; G1 -> DONE (armed-key round-trip proven,
manifest bump confirmed); G9 -> deferred to GL-7; G10 -> GL-7 prereq.
Findings F1/F2/F3/F6/F7 filed for a v1.11.4 installer follow-up (none block
Peti). REPORT.md = the GL-6 drill. Next: GL-7.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PSK5g6qYLknKj8u3QAFEr6
2026-07-08 16:07:51 +02:00

59 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# felhom.eu — task reports
> **Overwrite** this file with a summary of the most recent task only (uniform with the other repos; not cumulative). The cumulative hub history lives in [hub/CHANGELOG.md](hub/CHANGELOG.md); the scripts history lives in [scripts/CHANGELOG.md](scripts/CHANGELOG.md).
## RUNBOOK GL-6 — supervised go-live drill (demo box, two full cycles) — 2026-07-08
Full per-phase record: `documentation/pilot/DRILL-GL6-2026-07-08.md`. Supervised, Viktor gating
every phase; destructive (guest 9201 destroyed + rebuilt twice on felhom-pve). Go-live item **G7**
and the live-validation landing zone for GL-1…GL-5b. Ended with the demo healthy on normal life.
**Baselines:** felhom.eu `bd97bc34`**`87ba30ae`** (host-install `v1.11.1`**`v1.11.3`** — two
fixes shipped mid-drill). felhom-agent `7f073936` (v0.76.0). Manifest confirmed vouching agent
0.76.0 + golden 0.103.0.
### Result: DRILL COMPLETE — all gates GO
- **Key-pin chain (GL-1's whole point) — legs 14 all green:** box==repo==password-manager
fingerprints; signers ARMED from first boot (byo + appliance); the **pinned operational key
authorized a real signed `agent_update` round-trip** 0.76.0→0.76.1→0.76.0 (verify vs pinned
`felhom-op-1` + nonce, A/B swap, dwell, commit, crash-guard silent), throwaway 0.76.1 deleted.
- **Two full destroy/rebuild cycles + two clean uninstalls.** Uninstall: busy-drive prop handled
(warn+guidance, never `-l/-f`, statement=retry), KEPT/WIPED statement verbatim, host audit clean,
**drive data intact on all three checks** (witness hash matched). byo (Phase 2) + appliance
(Phase 6) installs both green; appliance's 4b vaulted the root@pam recovery credential to the hub.
- **C7 live-validated:** an induced pool-membership drop made `step_verify` `log_error` +
WITH-WARNINGS (read-only); repaired via `--adopt-pool` → green.
- **Drive re-enrollment via the real UI** (Chrome bridge) — additive, pre-drill data reappeared;
restore-test `mount_parity: ok` on both PBS (5m35s) and local tiers.
### Two fixes shipped mid-drill
1. **host-install v1.11.2 (Gate-0 ruling, G3):** empty customer git creds → **anonymous artifact
fetch** (the Felhom artifacts are world-readable by operator ruling; the hub-vouched sha256 stays
the integrity root). All 12 installer fetch targets 200-anon-verified first. Harness `+GL6-ANON`.
2. **host-install v1.11.3 (finding F4, HIGH — Viktor HOLD):** `--resume` fully skipped completed
producer steps (`should_skip X || step_X`), but token/enroll/grows produce in-memory outputs
later steps consume → a resumed install wrote a config missing `hub.host_id`/`proxmox.token`
(daemon crash-loop) and passed `-rootfs-grow ""` (flag parse error). Fix: those three re-run every
pass (idempotent); golden's volid re-derived from local. **Live-proven** (crafted dry-resume +
the subsequent appliance install ran single-shot). Harness `+GL6-F4`; 27/27; shellcheck clean.
### Findings filed (small installer follow-up, none block Peti)
F1 config `.bak` residue on uninstall · F2 per-drive `mnt-*.mount` residue · F3 byo fresh install on
a populated host needs `--allow-new-leaf` (guard counts any guest) · F6 leftover broken dnsmasq
breaks LAN-client DNS on a byo host · F7 pool re-assert is bring-up-only (no continuous heal;
`--adopt-pool` repairs). (F5 was a self-corrected misdiagnosis — the public DNS wildcard works.)
### Deferred to GL-7 (with Peti)
Dashboard password (operator-set via hub — G9) + geo-restriction; **G10** (public dashboard is open
until the operator sets a password) is a GL-7 prerequisite. Full demo app redeploy + LAN-DNS
alignment (re-provision changed the guest DHCP IP) are Viktor's return-to-normal.
### Honest leftovers (unchanged)
S5 customer-data DR drill; G12 parity-on-real-drift + PBS-tier runtime; CGNAT retest; Impl-3;
OOB spike. **Next: GL-7** (Peti's day-0 runbook + tester agreement).