Skip to content

docs: two SFF trays for Saruman were bought on 2026-09-11 and never recorded - #498

Merged
Gerrrt merged 2 commits into
mainfrom
gerrrt/saruman-sff-caddies-651687
Sep 17, 2026
Merged

Gerrrt merged 2 commits into
mainfrom
gerrrt/saruman-sff-caddies-651687

Conversation

@Gerrrt

@Gerrrt Gerrrt commented Sep 17, 2026

Copy link
Copy Markdown
Owner

Stacked on #492. Base is gerrrt/prodesk-spare-firewall-restore-bb18c3, not main — both branches edit the roadmap's Already paid for paragraphs, and stacking keeps that paragraph coherent at every step instead of conflicting. Merge #492 first; GitHub will retarget this to main automatically.

What changed

grep -rn -i caddy docs/ returned nothing. Two HP 2.5" SmartDrive carriers, 651687-001, were bought on 2026-09-11 for Saruman's SFF bays and have been paid for and undocumented since. They now have an entry in docs/hardware.md § Accessories and a line in the roadmap's paid-for register.

Identified rather than guessed: the eBay order confirmation names the part as HP 2.5" HARD DRIVE CADDY TRAY FOR DL380 DL360 ML350 G8 G9 PROLIANT 651687-001, quantity 2 (2 × $9.99). That is Saruman — a DL360 Gen9 — and two trays for the two SM863a drives. The quantity is the fact most worth recording: a Gen9 bay holds a drive only in a carrier, so one tray short is one SSD fitted and one on a shelf, and that is a thing you discover at the rack.

Dated 2026-09-11, not the 2026-09-12 the confirmation is stamped with — the mail landed 03:09 UTC, which is 20:09 local the evening before, and the I226 card, the Exos pair and the boot disk's bracket from that same sitting are all dated 09-11. The same UTC slip put the ProDesk's arrival a day out in #492.

Two things came with it:

  • The SM863a entry in hardware.md still said "in transit". eBay's notice puts the pair here on 2026-09-11. Corrected — the roadmap's copy of that same fact is fixed in docs: trinity landed on the 14th, carrying Windows and a return window #492, and leaving the two files disagreeing would have been worse than the scope.
  • The roadmap note names the gap, not just the item. Six days of silence on a purchase was found by reading a delivery notice for a different issue. Nothing in this repository checks that list against what was actually bought, and that is the gap the omission exposed.

Why

The roadmap's own rule under Everything still to buy: "a PR that implies a purchase edits this section in the same commit." This purchase never did.

Blast radius

Documentation only. Nothing is fitted; the Compute table's Storage column does not move — #418 does that, and these trays are what it was missing.

  • No change to network segmentation or firewall rules
  • No new port published to a VLAN that could not already reach the service
  • No credential added outside secrets/*.sops.yaml

Verification

python3 scripts/check_docs.pydocs OK — 82 Prometheus + 18 Loki rules, 7 dashboards, 141 panels, 10 assertions
./scripts/lint.sh --require-alllint passed

No row enters or leaves the buy table and README's "two items now, one later" is untouched, so check_buy_list is unaffected.

  • make validate passes
  • Deployed to the lab and confirmed working — n/a, documentation only
  • Docs updated

Still open

The trays were quoted to arrive Mon 14 – Thu 17 September and there is no delivery notice as of this morning, so they are recorded as in transit. The entry carries a checked on arrival, not assumed list: that they are the Gen8/Gen9 part and not the Gen10 or 3.5" LFF one, that both arrived, and that each has its screws.

Refs #418

🤖 Generated with Claude Code

@Gerrrt
Gerrrt added this pull request to stack #499 September 17, 2026 23:19
Base automatically changed from gerrrt/prodesk-spare-firewall-restore-bb18c3 to main September 17, 2026 23:28
@Gerrrt
Gerrrt force-pushed the gerrrt/saruman-sff-caddies-651687 branch from 4adb340 to e24a0ae Compare September 17, 2026 23:28
Gerrrt and others added 2 commits September 17, 2026 16:29
…tten down

`grep -rn -i caddy docs/` returned nothing. Two HP 2.5" SmartDrive carriers,
`651687-001`, were bought on 2026-09-11 for `Saruman`'s SFF bays and have been
paid for and undocumented since.

They are the trays the SM863a pair needs: a Gen9 bay holds a drive only in a
carrier, so two drives want two trays, and two is what was bought. That
quantity is the fact most worth recording — one tray short is one SSD fitted
and one on a shelf, which is a thing you find out at the rack.

They were bought in the same sitting as the I226 card, the Exos pair, and the
boot disk's bracket and tape, every one of which has had an entry since the day
it was bought. The roadmap's rule is that a purchase is written down when the
money is spent, so this gap is the rule failing rather than something it
allows, and the entry says so. It was found while reading the ProDesk's
arrival paperwork for #92 — not a way of finding purchases that can be relied
on.

Dated 2026-09-11, not the 2026-09-12 its confirmation is stamped with: the
mail landed 03:09 UTC, which is 20:09 local the evening before, and the
neighbouring purchases from that same sitting are all dated 09-11. The same
slip put the ProDesk's arrival a day out earlier today.

The SM863a entry above went from "in transit" to in hand since 2026-09-11 in
the same edit. eBay's delivery notice puts them here on the 11th and this file
still had them moving; the roadmap's copy of that fact is corrected under #92.

Nothing is fitted, and the Compute table's Storage column does not move —
#418 does that, and these trays are what it was missing.

`make check-docs` and `make lint` pass. No row enters or leaves the buy table.

Refs #418

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
`hardware.md` now carries the two SFF trays; this is the other half of the
rule they broke. They go into "Already paid for and still moving", which is
where a paid-for, not-yet-arrived thing belongs, and the dated note says what
happened rather than quietly filling the hole.

The note is the part worth keeping. Six days of silence on a purchase was
found by reading a delivery notice for #92, not by anything this repository
does — nothing checks this list against what was actually bought. That is the
gap the omission exposed, and it is worth stating where the rule is written.

No row enters or leaves the buy table, and README's count is untouched.

Refs #418

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Gerrrt
Gerrrt force-pushed the gerrrt/saruman-sff-caddies-651687 branch from e24a0ae to c500e6e Compare September 17, 2026 23:29
@Gerrrt
Gerrrt merged commit 3406525 into main Sep 17, 2026
@Gerrrt
Gerrrt deleted the gerrrt/saruman-sff-caddies-651687 branch September 17, 2026 23:29
Gerrrt added a commit that referenced this pull request Sep 18, 2026
…s gate it

nothing the documents say. This adds the document that makes the fit provable
when it happens, and records what has actually been decided.

The layout question the issue left open is answered: the SSDs become a second
RAID 1 logical drive on the P440ar, Smart Array managed, with the 7.2K mirror
keeping Proxmox, the ISOs and the backups. That is the smaller change, it keeps
a spindle for the things that do not need IOPS, and it leaves
IloDrivePredictiveFailure, IloDriveSmartUnreadable and the
replaceDriveSSDWearOut(4) state reading cpqida.mib exactly as they do today —
so #351's decision to skip smart-state on this host stays right rather than
needing re-checking.

The runbook's "before" column is read, not assumed: every cpqDa* value in it
came out of Prometheus on 2026-09-17. That reading also sharpens #76.
cpqDaAccelWriteCachePercent has been the one column anyone looked at; the
baseline shows cpqDaAccelMemory, cpqDaAccelReadMemory and both cache percents
all at 0 against a 2 GiB module, with cpqDaLogDrvHasAccel{1} reading other
rather than enabled. Four columns agreeing is much weaker support for "the iLO
does not populate the ratio" than one was. The runbook takes the ssacli reading
that settles it and hands the finding to #76 without acting on it: modify
cacheratio= is controller-wide and would land on the array holding every guest,
and it would move two variables at once underneath the measurement.

What is deliberately not here: ADR-0029's ninety random write IOPS is derived,
not measured — seek plus half a rotation at 7200 rpm — so replacing it with a
differently-shaped measured number would be worse than leaving it alone. The
runbook measures both arrays at the parameters that derivation implies, 4 KiB
at queue depth 1, three times. Until that reading exists ADR-0029, ADR-0007,
ADR-0017 and the roadmap's #414 paragraph stand as written, and then each gets
a dated note rather than a silent edit.

The fit is blocked, and the runbook says so at the top. #498 recorded two SFF
trays bought 2026-09-11 and still in transit; a Gen9 bay holds a drive only in
a carrier, so step 4 is a stop condition rather than something discovered at
the rack. Steps 0 to 3 can all be done first, and step 2 — getting ssacli onto
Debian 13, which nothing in this repository is evidence of — is the one most
worth failing early.

README's runbook count goes to 28 for the runbook this adds. The ADR counter
and the duplicate ADR-0041 that had check-docs failing on main are both fixed
there now, by #503, so nothing about them is carried here.

Refs #418, #76, #148

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant