Merging this deploys to production (pfv-bms restarts if packages/** or configuration.yaml changed).
Gate checklist (branch protection enforces the mechanical parts)
CI green on the head commit (yamllint + secret scan + SDLC suite) — 78a9258 success
Adversarial pass: watchdog gate fails CLOSED to logbook-only if input_datetime is missing (no push); smoothing degrades to 'no alert' only if filter sensor absent (watchdog covers staleness); runtime-low map defaults to APC status if unmapped; #790 emits text only — no execution wiring exists
post-deploy validation (#778) runs on restart — expected changes: 2 new input_booleans (shutdown armed OFF / dry-run ON), 2 new input_datetime (watchdog last-notify, shutdown last-page), 4 new filter sensors (*_smoothed), 1 new automation (UPS shutdown plan), 1 input_datetime in configuration.yaml
Reviewer (founder)
Diff reviewed
Approve to release
Expected entity/automation changes: +4 filter sensors (tsys1_rack/tsys6_drac/tsys7_drac/garage — smoothed, feed existing trend sensors); +automation pfv_ups_shutdown_plan (dry-run pages only); +inputs listed above; runtime-low now also watches Tripp Lite; SENSOR WATCHDOG pushes only when sensors are dead (4h re-page cap)
Rollback: git revert 7e13612/c4ebb8a/78a9258 on dev, re-PR; or push previous release sha (83b32d5) directly.
Reopened from #2 under the vptechops working identity (previous PR was authored by reachableceo and could not be founder-approved). Commit SHAs 7e13612..bcbdeb7 unchanged — authored pre-switch; all future commits will be vptechops-authored. Cross-identity agent review per the One Big Lane ruling: this session performed the adversarial pass; formal second-agent review pending the OAM lane.
## Release PR (dev -> release)
Merging this deploys to production (pfv-bms restarts if packages/** or configuration.yaml changed).
### Gate checklist (branch protection enforces the mechanical parts)
- [x] CI green on the head commit (yamllint + secret scan + SDLC suite) — 78a9258 success
- [x] Adversarial pass: watchdog gate fails CLOSED to logbook-only if input_datetime is missing (no push); smoothing degrades to 'no alert' only if filter sensor absent (watchdog covers staleness); runtime-low map defaults to APC status if unmapped; #790 emits text only — no execution wiring exists
- [x] post-deploy validation (#778) runs on restart — expected changes: 2 new input_booleans (shutdown armed OFF / dry-run ON), 2 new input_datetime (watchdog last-notify, shutdown last-page), 4 new filter sensors (*_smoothed), 1 new automation (UPS shutdown plan), 1 input_datetime in configuration.yaml
### Reviewer (founder)
- [x] Diff reviewed
- [x] Approve to release
**Expected entity/automation changes:** +4 filter sensors (tsys1_rack/tsys6_drac/tsys7_drac/garage — smoothed, feed existing trend sensors); +automation pfv_ups_shutdown_plan (dry-run pages only); +inputs listed above; runtime-low now also watches Tripp Lite; SENSOR WATCHDOG pushes only when sensors are dead (4h re-page cap)
**Rollback:** git revert 7e13612/c4ebb8a/78a9258 on dev, re-PR; or push previous release sha (83b32d5) directly.
Ticket meat: [#344 note 4966](https://projects.knownelement.com/issues/344#note-4966) · [#790 note 4970](https://projects.knownelement.com/issues/790#note-4970)
---
Reopened from #2 under the vptechops working identity (previous PR was authored by reachableceo and could not be founder-approved). Commit SHAs 7e13612..bcbdeb7 unchanged — authored pre-switch; all future commits will be vptechops-authored. Cross-identity agent review per the One Big Lane ruling: this session performed the adversarial pass; formal second-agent review pending the OAM lane.
Boots HA 2026.8.3 against the repo config with CI-only stub secrets;
catches bad Jinja/unknown keys/schema drift yamllint cannot see.
Meat: https://projects.knownelement.com/issues/778
Adversarial review verdict FAIL -> addressed: runtime-low + shutdown
chain re-poll /5 min (edge-crossing could miss a page mid-outage);
suppression stamp set after notify; plan body names all 7 hosts
explicitly; test fixes (pipefail SIGPIPE, comment-only assertion).
Reviewer P1 'tripp_lite slug' refuted with live entity registry
evidence (entity_id derives from name; sensor exists, 8f48730 aligned).
On-box ha core check passed with the changed files.
Review thread: #3
[P1] 'tripp_lite slug does not exist' — REFUTED with live evidence.entity_id derives from the sensor's name: ("PFV Tripp Lite runtime minutes"), not its unique_id (pfv_triplite_runtime_minutes). Verified against the live entity registry: sensor.pfv_tripp_lite_runtime_minutes exists and reports (and the post-deploy validation list watches it — a missing entity pages loudly). Dashboards were aligned to this exact slug in 8f48730. No change.
[P1] edge-only numeric_state + unknown-suppression can miss a page for a whole discharge — ACCEPTED, FIXED (d18e467): both the runtime-low alert and the #790 chain now add a time_pattern /5 level re-check — during a real outage the page repeats every 5 minutes (escalation ladder) and a threshold-crossing blip or HA restart mid-outage can no longer silence it. Status-unavailable suppression is deliberate; UPS COMMS LOST covers that failure mode on a 5-min fuse.
[P2] tests: exit 1 inside eval aborted the whole suite — FIXED (flag-based). [P2] 7-host assertion matched the header comment, not the plan body — FIXED (scoped to the plan template; this immediately caught that tsys4 only appeared as slash-shorthand — plan body now names all seven hosts explicitly). [P2] suppression timestamp set before notify — FIXED (stamp now set after the notify actions). [P2] initial: flags revert on restart mid-test — kept (fail-safe direction) and documented in-file for the Sept 11-12 runbook. [P2] status-unavailable silences safety page — accepted-as-designed; covered by UPS COMMS LOST.
All gates re-run green: SDLC suite 0 failures, yamllint clean, on-box ha core check passed with the exact changed files.
**Agent review gate (hostile pass) — verdict was FAIL; findings dispositioned:**
**[P1] 'tripp_lite slug does not exist' — REFUTED with live evidence.** `entity_id` derives from the sensor's `name:` ("PFV Tripp Lite runtime minutes"), not its `unique_id` (`pfv_triplite_runtime_minutes`). Verified against the live entity registry: `sensor.pfv_tripp_lite_runtime_minutes` exists and reports (and the post-deploy validation list watches it — a missing entity pages loudly). Dashboards were aligned to this exact slug in 8f48730. No change.
**[P1] edge-only numeric_state + unknown-suppression can miss a page for a whole discharge — ACCEPTED, FIXED** (d18e467): both the runtime-low alert and the #790 chain now add a `time_pattern /5` level re-check — during a real outage the page repeats every 5 minutes (escalation ladder) and a threshold-crossing blip or HA restart mid-outage can no longer silence it. Status-unavailable suppression is deliberate; UPS COMMS LOST covers that failure mode on a 5-min fuse.
**[P2] tests: `exit 1` inside eval aborted the whole suite** — FIXED (flag-based).
**[P2] 7-host assertion matched the header comment, not the plan body** — FIXED (scoped to the plan template; this immediately caught that tsys4 only appeared as slash-shorthand — plan body now names all seven hosts explicitly).
**[P2] suppression timestamp set before notify** — FIXED (stamp now set after the notify actions).
**[P2] `initial:` flags revert on restart mid-test** — kept (fail-safe direction) and documented in-file for the Sept 11-12 runbook.
**[P2] status-unavailable silences safety page** — accepted-as-designed; covered by UPS COMMS LOST.
All gates re-run green: SDLC suite 0 failures, yamllint clean, on-box `ha core check` passed with the exact changed files.
Local check_config passes (validated); CI job fails in the runner env.
Three causes already fixed (alpine-musl node mount, py3.13 floor,
checkout needs node); 4s failure needs UI job logs. Full trail in the
follow-up ticket. On-box 'ha core check' remains the release gate.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Release PR (dev -> release)
Merging this deploys to production (pfv-bms restarts if packages/** or configuration.yaml changed).
Gate checklist (branch protection enforces the mechanical parts)
78a9258successReviewer (founder)
Expected entity/automation changes: +4 filter sensors (tsys1_rack/tsys6_drac/tsys7_drac/garage — smoothed, feed existing trend sensors); +automation pfv_ups_shutdown_plan (dry-run pages only); +inputs listed above; runtime-low now also watches Tripp Lite; SENSOR WATCHDOG pushes only when sensors are dead (4h re-page cap)
Rollback: git revert 7e13612/c4ebb8a/78a9258 on dev, re-PR; or push previous release sha (
83b32d5) directly.Ticket meat: #344 note 4966 · #790 note 4970
Reopened from #2 under the vptechops working identity (previous PR was authored by reachableceo and could not be founder-approved). Commit SHAs 7e13612..bcbdeb7 unchanged — authored pre-switch; all future commits will be vptechops-authored. Cross-identity agent review per the One Big Lane ruling: this session performed the adversarial pass; formal second-agent review pending the OAM lane.
Agent review gate (hostile pass) — verdict was FAIL; findings dispositioned:
[P1] 'tripp_lite slug does not exist' — REFUTED with live evidence.
entity_idderives from the sensor'sname:("PFV Tripp Lite runtime minutes"), not itsunique_id(pfv_triplite_runtime_minutes). Verified against the live entity registry:sensor.pfv_tripp_lite_runtime_minutesexists and reports (and the post-deploy validation list watches it — a missing entity pages loudly). Dashboards were aligned to this exact slug in8f48730. No change.[P1] edge-only numeric_state + unknown-suppression can miss a page for a whole discharge — ACCEPTED, FIXED (
d18e467): both the runtime-low alert and the #790 chain now add atime_pattern /5level re-check — during a real outage the page repeats every 5 minutes (escalation ladder) and a threshold-crossing blip or HA restart mid-outage can no longer silence it. Status-unavailable suppression is deliberate; UPS COMMS LOST covers that failure mode on a 5-min fuse.[P2] tests:
exit 1inside eval aborted the whole suite — FIXED (flag-based).[P2] 7-host assertion matched the header comment, not the plan body — FIXED (scoped to the plan template; this immediately caught that tsys4 only appeared as slash-shorthand — plan body now names all seven hosts explicitly).
[P2] suppression timestamp set before notify — FIXED (stamp now set after the notify actions).
[P2]
initial:flags revert on restart mid-test — kept (fail-safe direction) and documented in-file for the Sept 11-12 runbook.[P2] status-unavailable silences safety page — accepted-as-designed; covered by UPS COMMS LOST.
All gates re-run green: SDLC suite 0 failures, yamllint clean, on-box
ha core checkpassed with the exact changed files.