Repository navigation
docs: record the Smart Storage Battery as fitted and proven, and delete its silence (#76) - #243
Merged
Merged
Conversation
…te its silence (#76) The spare 815983-001 went into Saruman on 2026-09-02. The first scrape after the box came back (23:02 UTC) read chassis 0 battery 1 at condition 2 (ok), status 1 (noError), with serial 6EZBN0FB2431YM where the failed pack was 6EZBN0CB29N3YZ — a different part being read, not the old one reading differently. The Smart Array re-enabled its cache on the same scrape: cpqDaAccelStatus 5 -> 3, cpqDaAccelBackupPowerSource 1 -> 4 (smartbattery), cpqDaAccelBattery 6 -> 2, and the three controller rollups back to 2. The silence bfdfff66 was deleted at 23:11 UTC rather than left to run to 2026-10-01, so both alerts are live again over the new part. Every file that recorded the silence by UUID and expiry, or asserted the failed state in the present tense, now says what is true: the runbook (status, an Observed column, two proof rows the table lacked, the ErrCode expectation corrected to 1 or 2, steps 3 and 4 marked done), the roadmap (#76 into Done), the rules header, docs/observability.md, docs/hardware.md, docs/images/README.md, and the test file's comments — the quiet-pack fixture is now a measured reading too. Two readings did not move and are recorded rather than claimed: the cache ratio still reads 0/0 and cpqDaAccelFailedBatteries still reads 1. Neither is alerted on; the runbook names the ssacli check on Saruman that resolves the first. Rule expressions are untouched — they became correct on their own. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
There was a problem hiding this comment.
🟢 Approval recommended
Changes are documentation/comment-only with no rule expression changes, and the two noted nits are purely wording/formatting improvements.
Pull request overview
Updates the HomeLab documentation and Prometheus rule/test commentary to reflect that shiva’s Smart Storage Battery replacement is now fitted and verified, and that the Alertmanager silence referenced in the runbook has been removed.
Changes:
- Update the Smart Storage Battery runbook with post-replacement observations, proof points, and remaining open readings.
- Move issue #76 from “In progress” to “Done” in the roadmap, and update related docs to past tense.
- Refresh Prometheus rule/test comments to reflect that the silence is lifted and that the “quiet” fixture is now a measured post-replacement reading.
File summaries
| File | Description |
|---|---|
| stacks/observability/prometheus/tests/network.test.yaml | Updates test commentary to note the quiet fixture is now measured post-replacement data. |
| stacks/observability/prometheus/rules/network.rules.yaml | Updates header commentary to record the (now-deleted) silence and current live state of alerts. |
| docs/runbooks/replace-the-smart-storage-battery.md | Rewrites runbook status and steps with measured “after” readings, proof rows, and an “open” section for non-moving metrics. |
| docs/roadmap.md | Moves #76 into Done with a dated completion summary and remaining caveats. |
| docs/observability.md | Updates rules overview text to reflect the battery issue is historical and metrics before 2026-09-02 still show the failed pack. |
| docs/images/README.md | Updates screenshot narration to past tense and notes the next capture should show the alert quiet. |
| docs/hardware.md | Updates hardware inventory note to reflect the battery was replaced and calls out the still-open cache ratio observation. |
Review details
- Files reviewed: 7/7 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
… did not change precisely Two review nits on #243: the docker-containers.png note started mid-line, and the rules header said nothing in the file changed when the comment itself had. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The pack is in, and the documents that said failed, spare in transit are now
wrong in the other direction. This moves them to fitted and proven — and
names the two readings that did not move, so "proven" is not read as "finished".
What was verified before anything was written
Sarumanwas off 22:30–22:58 UTC on 2026-09-02. The Observed column isthe 23:02 UTC scrape, the first after it came back, unchanged at 23:12.
cpqHeSysBatteryCondition4failed2ok2cpqHeSysBatteryStatus13shutdownPermanentFailure1noError1cpqHeSysBatterySerialNumber6EZBN0CB29N3YZ6EZBN0FB2431YMcpqDaAccelStatus5permDisabled3enabled3cpqDaAccelErrCode25noCapacitorAttached12—1and2are both "nothing wrong"; the table said1cpqDaAccelBattery6notPresent2ok2cpqDaAccelBackupPowerSource1other4smartbatterycpqDaAccelBadData2none2none2cpqDaAccelCondition/cpqDaCntlrCondition/cpqDaCntlrBoardCondition3/3/322/2/2cpqDaAccelWriteCachePercent/ReadCachePercent0/00/0— did not movecpqDaAccelFailedBatteries11— did not moveThe serial row is the one the runbook's table lacked and the one that settles
it: every other row could be the old pack reporting differently, and that one
cannot. Both proof rows are added to the runbook.
The silence
bfdfff66-d9c3-4df4-9495-f1f38ebf93c1readsexpiredwithendsAt2026-09-02T23:11:53Z instead of its original 2026-10-01, so it was deleted
rather than left to lapse.
IloBatteryConditionandIloWriteCacheDisabledare live again over the new part; nothing is firing for
shivain Prometheusor Alertmanager.
The order was inverted again — reading 23:02, deletion 23:11, the same
thing the UPS runbook recorded. It cost nothing here for a reason that case did
not have: both rules carry a
for:of 30m and 1h, so no notification couldhave existed inside nine minutes, suppressed or otherwise. The runbook says so
and still says delete first.
What did not move
0/0. The controller says the cache is enabled andbacked by the new pack, and reports no read/write split, where a P440ar with
a 2 GB module normally reports something like 10/90. Slow iLO refresh, a
ratio left unset after weeks permanently disabled, or a first charge — ten
minutes of history cannot tell them apart. If still
0/0after an hour,the next step is
ssacli ctrl all show config detailonSaruman, which isnot reachable from the monitoring host. Not alerted on.
cpqDaAccelFailedBatteriesstill1. An octet-string bitmap that didnot clear when
cpqDaAccelBatterywent to ok. Latched or cached; unknown.Not alerted on, recorded so nobody rediscovers it.
Files
Runbook (status, Observed column, two proof rows, ErrCode corrected, steps 3
and 4 marked done, a "What is still open" section); roadmap (#76 into Done);
network.rules.yamlheader comment only — no rule expression changed, theybecame correct on their own as designed;
docs/observability.md,docs/hardware.md,docs/images/README.mdto past tense; the test file'scomments, since the quiet-pack fixture is now a measured reading too. No
dashboard change, so the panel-count coupling is untouched.
make validategreen (two skips, the usual worktree ones).🤖 Generated with Claude Code