7c3b3a9694
gates / gates (push) Successful in 29s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
48 lines
2.8 KiB
Markdown
48 lines
2.8 KiB
Markdown
# REPORT — controller v0.268.0 (2026-09-24)
|
|
|
|
Full record: `felhom.eu/documentation/audits/ladder-2026-09-24/README.md`.
|
|
|
|
## Not done, or changed
|
|
|
|
- The operator's English hold sentence lost „please" (house rule); Hungarian verbatim (R-516 ceiling 18 → 19).
|
|
- The hold names the newest whole copy, not a list of them (a list would need new copy).
|
|
- `TestR475_AdapterReadsEveryTier` asserted what R-659 changes on purpose; its assertion was replaced.
|
|
- `TestUndo_EveryPinWriterRecordsTheProbe` now checks `advancePinTo` (the writer moved there).
|
|
|
|
## Baselines
|
|
|
|
controller `80e6ad8c4772` (v0.267.0) → **`206b035`** (v0.268.0). MinAgent 0.131.0 (unchanged). Needs hub v0.122.0
|
|
for `app_hold_no_whole_copy`.
|
|
|
|
## What shipped
|
|
|
|
- **R-658:** `DeclaredVolumeNames` + `appVolumes` (definition selects, label cross-checks); restore creates labelled
|
|
volumes (`composeVolumeLabelArgs`); `appVolumeSet` for the remove report.
|
|
- **R-659:** `backup.WholeOnTier`, `HoldCopies`, `HoldAfterFailedUpdateWhole`, `HoldNoWholeCopy`; `RestoreHold.NoWholeCopy`
|
|
+ `CopiesSeen`; `hold.update.no_whole_copy` (hu + en); Mentések button gated on both pages; `NotifyAppHoldNoWholeCopy`
|
|
(critical) from the held-event sink; the held event's copy details now name the hold's copy.
|
|
- **R-660:** `backup.UpdateHeldStacks` + `updateHeldSet` unioned in `scanDeployedAppRunStates`.
|
|
- **R-651:** remove deletes `applied-compose.yml` and `applied-meta/`.
|
|
- **Ladder (`09` §6.4 part 5):** `stacks/ladder.go` (`LoadLadder`, `StepKey`, `StepFile`, `nextLadderStep`,
|
|
`ladderStepsLeft`); `advancePinTo(src)`; `Stack.LadderStepsLeft`; the app page's steps line
|
|
(`app_info.ladder_steps_left`, parity fixture `app_info_ladder_steps`).
|
|
|
|
## Tests (new) and red-proofs
|
|
|
|
`r658_undo_volumes_test.go` (3), `r658_restore_labels_test.go` (2), `r651_r658_remove_test.go` (2),
|
|
`r659_whole_copy_test.go` (9-case table + 2), `r659_held_page_test.go`, `r659_no_whole_copy_test.go`,
|
|
`r659_wiring_test.go`, `r660_held_not_down_test.go` (2), `r660_update_held_test.go`, `ladder_test.go` (6). Every
|
|
correctness test red-proofed — mutation and failing line in the audit's table. Green: `go build/vet/test` rc 0
|
|
(31 packages); `controller_gates.py` all OK.
|
|
|
|
## Deployed
|
|
|
|
9202 (scratch) by hand at 06:16Z; fleet by floor 0.268.0 at 06:47:13Z — demo-felhom and demo-hp healthy at +30 s.
|
|
|
|
## Live-validated (9202, endpoint-level)
|
|
|
|
A (undo after a v0.267.0 restore: 2 volumes copied by name, A+B read back; v0.268.0 restore labels), B (round 11:
|
|
sentence hu/en, no button on either page, event line), C (no `app_start_failed` for the held app; control fired;
|
|
applied files gone), D (romm two presses, two steps). **Not live-validated:** the event's delivery through a real
|
|
hub (9202 has none — the R-620 line is the observable); an engine step that FAILS and is undone.
|