Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
+12
-1
@@ -7,7 +7,18 @@
|
|||||||
>
|
>
|
||||||
> Ask Claude Code: "Please update CONTEXT.md with what we did today"
|
> Ask Claude Code: "Please update CONTEXT.md with what we did today"
|
||||||
|
|
||||||
Last updated: 2026-09-23 (v0.263.2 — a failed update puts the app back by itself)
|
Last updated: 2026-09-23 (v0.264.0 — the household is told when an update is undone or held)
|
||||||
|
|
||||||
|
> **2026-09-23 (evening) — v0.264.0 (`09` §6.4 parts 2–3; R-606, R-620, R-646).** Two events,
|
||||||
|
> `app_update_undone` / `app_update_held`, one per app per outcome, via `Manager.SetUpdateEventSink`
|
||||||
|
> (main.go) → `NotifyAppUpdateUndone` / `NotifyAppUpdateHeld`; on by default and seeded once on existing
|
||||||
|
> boxes (`app_update_events_seeded`), with two toggles on the notifications page (the page pushes the
|
||||||
|
> list to the hub on save). Update sentences are stored as key + args (`UpdateErrorKey/Args`,
|
||||||
|
> `update.error.*`, `update.refusal.*`, `update.phase.*`, `hold.*`) and rendered per reader
|
||||||
|
> (`updatePhaseText` / `updateErrorText` / `holdText`, `RestoreHoldForLang`, `UpdateErrorIn`); stored
|
||||||
|
> Hungarian unchanged. Startup `BackfillAppliedMeta` (R-646). Disabled notifier WARNs once per type
|
||||||
|
> (R-620). Needs hub v0.120.0. Floor 0.264.0. Leftovers: R-647. Evidence:
|
||||||
|
> `felhom.eu/documentation/audits/undo-fleet-2026-09-23/`.
|
||||||
|
|
||||||
> **2026-09-23 — v0.263.0 → v0.263.2 (R-637, `09` §3 decisions 15 + 19).** A failed health check after
|
> **2026-09-23 — v0.263.0 → v0.263.2 (R-637, `09` §3 decisions 15 + 19).** A failed health check after
|
||||||
> an update is now UNDONE: phase `copying` (after the pull, the app stopped anyway) copies every NAMED
|
> an update is now UNDONE: phase `copying` (after the pull, the app stopped anyway) copies every NAMED
|
||||||
|
|||||||
@@ -1,38 +1,31 @@
|
|||||||
# REPORT — v0.263.0 → v0.263.2: a failed update puts the app back by itself (R-637)
|
# REPORT — controller v0.264.0: the household is told when an update is undone or held (2026-09-23)
|
||||||
|
|
||||||
2026-09-23. Baseline `b9deec19077b` (v0.262.1). Commits: `8fc2b4a` (v0.263.0), `5d38573` (v0.263.1),
|
`09` §6.4 parts 2–3; R-606, R-620, R-646. Commit `bc27894`. MinAgent 0.131.0 (unchanged). Needs hub
|
||||||
`2cd6666` (v0.263.2). **MinAgent 0.131.0, unchanged.** Deployed: **scratch guest 9202 only**; the fleet
|
v0.120.0 (deployed first). **Floor raised to 0.264.0** after the live proof. Full report, mails and
|
||||||
floor stays at 0.262.1 (the operator's question).
|
evidence: `felhom.eu/REPORT.md`, `felhom.eu/documentation/audits/undo-fleet-2026-09-23/`.
|
||||||
|
|
||||||
## What changed
|
## Not done, or changed
|
||||||
|
- R-606 has three leftovers → **R-647**: a reader in the other language than the box sees a HELD sentence
|
||||||
|
in the box's language; the English mail's raw `Note:` keeps the Hungarian `copy_holds`; two log wordings.
|
||||||
|
- Added beyond the brief: a one-time box-side seed + two notifications-page toggles (the page pushes its
|
||||||
|
list to the hub on save, which would undo the hub's migration).
|
||||||
|
- The undone line ends „nincs teendőd" (the product's „te" voice), not „teendője nincs".
|
||||||
|
|
||||||
- `internal/stacks/undo.go` (new): the folder copy (`volumeCopier`, docker helper), `tryUndo`, the
|
## What shipped
|
||||||
applied `.felhom.yml` record, `last_update_undone`.
|
- `app_update_undone` (warning) / `app_update_held` (error), one per app per outcome, via
|
||||||
- `internal/stacks/update.go`: phase `copying` after the pull; `failAndHold` undoes first; journal
|
`Manager.SetUpdateEventSink` (main.go); held mails carry the hold sentence in the household's language.
|
||||||
phases `copying`/`undoing` with recovery; `restoreDefinition` split from `pinBack`;
|
- Update sentences stored as key + args and rendered per reader on both pages and `GET /api/stacks/<n>`;
|
||||||
`waitUpdateHealthyMeta` (the undo's own probe, which runs on an `unhealthy` app); seam `probeRunFn`.
|
stored Hungarian byte-identical.
|
||||||
- `pin.go`, `deploy.go`: every pin writer records the pinned version's `.felhom.yml` (`applied-meta/`).
|
- `BackfillAppliedMeta` at startup (R-646). Disabled notifier: one WARN per type, then DEBUG (R-620).
|
||||||
- `backup/`: `RestoreHold.UndoState`; the hold sentence's undo prefix + state clause (box language).
|
|
||||||
- `web/`: the undone line on the app page (request language). `api/`: R-642 start answer.
|
|
||||||
- `delete.go`: a removal deletes the app's kept undo copies.
|
|
||||||
- i18n: 10 keys born as keys (hu + en). `docker_run_volume_path_gate`: four named-volume mounts allowlisted.
|
|
||||||
|
|
||||||
## Tests and red-proofs
|
## Red-proofs (9, each seen failing)
|
||||||
|
Backfill stores nothing; `dropped()` not called; undone event not emitted; held event not emitted; page
|
||||||
|
error text not localised; hold sentence ignores the language; `UpdateErrorIn` returns Hungarian; box
|
||||||
|
seed not run; sink not wired in main (retried with a compiling mutation). Messages in `felhom.eu/REPORT.md` §6.
|
||||||
|
|
||||||
`go build ./... && go vet ./... && go test ./...` → rc=0 before each commit. Controller gates rc=0.
|
## Live
|
||||||
Twelve red-proofs, each seen failing and restored — table in `felhom.eu/REPORT.md` §3. Two of them
|
9202: undone + held, pages hu/en, WARN-then-DEBUG, backfill 3. 9201 (hub on): 4 household + 4 operator
|
||||||
(9, 3b) reproduce the two live-only defects verbatim.
|
mails in hu and en, `notification_log` 937–946 all sent, backfill 10. Both torn down to their standing
|
||||||
|
apps and the live catalog; both on 0.264.0.
|
||||||
|
|
||||||
## Live (endpoint-level, 9202)
|
`go test ./...` rc=0; `controller_gates.py` rc=0.
|
||||||
|
|
||||||
Three apps undone by the product with seeds before/after the backup and seconds before the press read
|
|
||||||
back; a cut-off copy held honestly (hu and en prefix); a power cut during `undoing` resumed and undone;
|
|
||||||
a person's press after an undo worked; removal deleted kept copies. Evidence:
|
|
||||||
`felhom.eu/documentation/audits/undo-live-2026-09-23/README.md`.
|
|
||||||
|
|
||||||
## NOT yet live-validated
|
|
||||||
|
|
||||||
- The household mail / operator event for an undo (not built — `09` §6.4 part 2).
|
|
||||||
- An app pinned BEFORE v0.263.2 that has not been re-pinned (R-646) — its undo probes with the
|
|
||||||
current `.felhom.yml`; reasoned, not run live.
|
|
||||||
- Any box other than 9202.
|
|
||||||
|
|||||||
Reference in New Issue
Block a user