Files
felhom-controller/REPORT.md
T
admin 80e6ad8c47
gates / gates (push) Successful in 26s
controller v0.267.0: tests off DooPlex's Docker, cut-off copies refused, two pages true
R-650: internal/dockerexec — every docker exec routed through it; under
go test a real docker is refused (opt-in FELHOM_TEST_REAL_DOCKER=1; a stub
under the temp dir is allowed). api/stacks/web tests run under a silent
stub (TestMain). TestR650_NoBareDockerExec pins it repo-wide.
R-640: a dump without its engine's completion marker is refused before
the first mutation (unit + off-site restore) and again before any load.
R-499: the Tier-2 page's system-disk sentence has four true branches.
R-518: the backup button states the measured ~8 min stop.
R-626: measured on 9202, not reproduced.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
2026-09-23 20:25:28 +02:00

44 lines
3.2 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.
# REPORT — controller v0.267.0: tests off DooPlex's Docker, cut-off copies refused, two pages true (2026-09-23)
Night shift 2026-09-23, Part A. R-650, R-640, R-499, R-518; R-626 measured. MinAgent 0.131.0 (unchanged).
No hub change. Full night record: `felhom.eu/documentation/audits/DRILL-night-2026-09-23.md`; evidence
`felhom.eu/documentation/audits/night-2026-09-23/A*`.
## Not done, or changed
- **R-518:** the brief said the page promises „csak néhány másodpercre". It does not — v0.243.0 removed
that. The remaining vague „általában néhány perc" is replaced by the measured ~8 minutes.
- **R-626:** not reproduced, so not "fixed" — closed by measurement (below).
- R-640's "narrowed" scope held: the undo copies folders; only the three restore paths load dumps.
## What shipped
- **R-650:** `internal/dockerexec` (`Command`/`CommandContext`/`RunWithStub`). 77 docker exec sites routed
through it. The sweep (trace of the guard's refusals, `A1-r650-sweep.txt`): `web` 67× `docker compose
version`, 19× `docker ps`, 19× `docker info`, 10× `docker inspect felhom-samba`, 2× `docker exec
felhom-samba`; `backup` 46× `docker ps`; `stacks` 11× `compose ps`, 4× `docker ps`, **1× `docker-compose
down`**; `appexport` 7× `docker ps`; `system` 1× `docker info`; 8 `api` tests FAILED on the refusal
(they built a real Manager). `api`/`stacks`/`web` → `TestMain` + `RunWithStub`; the rest pass on the refusal.
- **R-640:** `appbackup.CheckDumpComplete`; `incompleteDumps` gate in `RestoreFromRecoveryUnit` and
`ReconstituteFromOffsite` before the first mutation; a second check in `reimportDBDumpsFrom` before any
load. Test fixtures' fake dumps now end with the real markers (they did not — 38 tests red first).
- **R-499:** `systemBackupFact(resolveBackupTargetState)` → four branches on the Tier-2 page.
- **R-518:** two bundle strings, both languages, state the measured stop.
## Red-proofs (8, each seen failing, then restored; `git diff` clean on the reverted file)
1. R-650 guard disabled → `TestR650_RealDockerIsRefusedUnderGoTest`: `got <nil>`.
2. R-650 one bare `exec.CommandContext(ctx, "docker"…)` put back in dbdump.go → the sweep names `dbdump.go:140`.
3. R-640 replay check removed → `a cut-off copy was LOADED`.
4. R-640 unit gate removed → `stopped=true calls=[stop recreate startsvc:immich-postgres start]`.
5. R-640 off-site gate removed → the replay check still caught it, then a rollback — not the clean refusal.
6. R-499 handler not passing the fact → three branches missing on the page.
7. R-499 old sentence in the same-disk branch → `promises the backup protects this app`.
8. R-518 bundles back to v0.243.0 → measured downtime appears 0 times, old wording present.
## R-626, measured on 9202 (v0.266.0)
navidrome deployed and removed through the product; `docker events` for its compose project 390 s:
kill/stop/die/destroy seen (the positive observable), **no create**. Controller restarted at +150 s;
guest rebooted after. 0 containers, 0 volumes at every check. Leftover: `applied-compose.yml` +
`applied-meta/` stay in the stack dir after a remove (row filed).
## Gates
`go build/vet` rc 0; `go test -count=1 ./...` rc 0; `controller_gates.py` all OK (golden-notice advisory).