hub v0.112.0: a floor carries a declared MinAgent past the golden (R-472)
gates / gates (push) Successful in 18s
gates / gates (push) Successful in 18s
Operator ruling 2026-09-13. Above the vouched golden, a floor saved with a declared MinAgent is served under the same agent comparison; an undeclared one is still held beyond the golden. The declaration is stored beside each floor as FLOOR=MINAGENT so it never carries to a later floor. Both floor forms require min_agent above the golden (flash floor_needs_min_agent, nothing stored). The Hosts page and the API log name the source. Vouch path and R-120 gate untouched. Scenarios A-E tested; red-proofs A and C in documentation/audits/rulings-r472-r475-2026-09-13/.
This commit is contained in:
@@ -98,6 +98,18 @@ the manifest vouches the target FIRST; any MinAgent must be satisfied fleet-wide
|
||||
boxes below it automatically, and flags them); **save the floor LAST** — the DB row acts immediately
|
||||
on every box below it, on their next report.
|
||||
|
||||
**Raise the floor to a release with no golden (hub v0.112.0+, R-472).** Between bakes this is the
|
||||
normal route — do not hand-deploy.
|
||||
|
||||
1. Build and push the controller image (above). Do not install it on any box.
|
||||
2. Read the MinAgent from the release's header: `grep -m1 -A3 '^## v<VER>' CHANGELOG.md` shows
|
||||
`**MinAgent: X.Y.Z**`. `controller_gates.py --fast` refuses a release whose newest header lacks it.
|
||||
3. Hub → Configuration → Managed updates: type `<VER>` in the floor field **and** that value in
|
||||
`min_agent`. Save. Without `min_agent` the form refuses with *"This floor is above the vouched
|
||||
golden — declare its MinAgent"* and stores nothing.
|
||||
4. Verify: `sudo kubectl -n felhom-system logs deploy/hub | grep 'managed floor SERVED'` shows
|
||||
`from "declared"`, and each box logs `SetFloor: floor "…" → "<VER>"` within about a minute.
|
||||
|
||||
## 4. Golden image (fresh Day-0 installs)
|
||||
|
||||
The golden is a pre-baked controller-era guest image built in the **drill VM** on 180
|
||||
@@ -211,9 +223,9 @@ The full 0.188.0 run, with the observables: `documentation/audits/tester-gate-go
|
||||
because `golden_currency_gate.py` trips on every release by design and the only honest ways past it
|
||||
were a bake or a declared `--no-verify` (thirteen of those by 2026-09-01 — R-404/R-417). **The
|
||||
ruling:** bake on a cadence. The ruling assumed every release would still raise the FLOOR (§4.1 step
|
||||
5) and reach both demo boxes in ~20 s, with only the golden moving to a cadence. **⚠ CORRECTED THE SAME DAY (R-472): between bakes the floor does NOT carry a release — the hub holds any floor above the vouched golden (publish-train rule 1), so releases between bakes reach the demo boxes only by hand-deploy.** A
|
||||
release between bakes is hand-deployed per the `felhom-build-deploy` skill, and the floor is left at
|
||||
the vouched golden.
|
||||
5) and reach both demo boxes in ~20 s, with only the golden moving to a cadence. **⚠ CORRECTED THE SAME DAY (R-472): the hub held any floor above the vouched golden (publish-train rule 1), so releases between bakes reached the demo boxes only by hand-deploy.** **RESOLVED in hub v0.112.0:** a floor above the golden is served when it carries a
|
||||
declared MinAgent (§3 "Raise the floor to a release with no golden"). A release between bakes rides
|
||||
the floor again; only an undeclared floor is still held.
|
||||
|
||||
**The cadence, and it is a step in a routine, not a memory:**
|
||||
|
||||
|
||||
Reference in New Issue
Block a user