hub v0.134.0: a down box is judged on longer missed-backup lines (R-872); household outage mail at most weekly (R-873); backup_catchup_done allowed (R-871)

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:
2026-10-05 09:24:14 +02:00
parent 8e873ee4a0
commit 6da3a7d866
7 changed files with 278 additions and 1 deletions
+4
View File
@@ -2050,6 +2050,10 @@ var allowedEventTypes = map[string]bool{
// of memory. Household + operator; hu AND en `mail.event.*`; per-app cooldown on both legs.
"app_stopped_unhealthy": true,
// R-871 (v0.134.0, controller v0.295.0, `09` decision 109): the box was off at its backup time and made the
// missed backups when it came back. Info — recorded on the box's timeline, never mailed.
"backup_catchup_done": true,
// Controller-pushed events
"controller_started": true,
"claim_lockout": true, // v0.50.0 — claim/reset code brute-force lockout tripped
@@ -0,0 +1,12 @@
package api
import "testing"
// R-871 (v0.134.0): the box's "missed backup made now" line (controller v0.295.0, event backup_catchup_done) must be
// an allowed type, or POST /event answers 400 and the household's timeline line vanishes (hub-event-allowlist trap).
// COMPANION RED-PROOF: remove "backup_catchup_done" from allowedEventTypes → this fails.
func TestR871_CatchUpEventIsAllowed(t *testing.T) {
if !allowedEventTypes["backup_catchup_done"] {
t.Fatal("backup_catchup_done is not an allowed event type — the box's catch-up line would be dropped with a 400")
}
}