Skip to content

docs(adr): ADR-0096, fit ifrit's range disk as a SATA SSD in the Tiny's bay - #1200

Merged
Gerrrt merged 7 commits into
mainfrom
worktree-ifrit-sata-ssd
Oct 16, 2026
Merged

Gerrrt merged 7 commits into
mainfrom
worktree-ifrit-sata-ssd

Conversation

@Gerrrt

@Gerrrt Gerrrt commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

What changed

Docs only, no change to the running lab. ADR-0096 puts ifrit's range disk in the M80q's 2.5" bay as a 1 TB SATA SSD and keeps the 256 GB M.2 as the boot disk, superseding the Disk row of ADR-0017, which carries the forward note. The roadmap row becomes a 2.5" SATA SSD; the bay's tray and cable are in the chassis (checked 2026-10-16), so no kit row joins, and README's counts follow (96 ADRs, 11 items). A later commit on this PR also carries the playground runbook's §1 fix from review: install onto the M.2, then a ZFS pool range on the SATA SSD as the guest storage. hardware.md's ifrit paragraph, the playground runbook's gate and the move runbook's §0.1 and §1.3 say the same: the drive goes in the bay, the M.2 is not swapped, nothing is kept "with the spare parts". Changelog entry dated 2026-10-16.

This PR now also carries #1201, which was merged into this branch: mjolnir's 2U four-post rail pair joins the table and the colour patch leads and cage nuts leave it, ten rows in all. #1199 landed on main as a squash and main was merged back in; README's purchase count is ten.

Why

Refs #421. Refs #919. The operator chose SATA on 2026-10-16. The runbook's claim that "there is nowhere to fit both" drives was wrong: Lenovo's PSREF sheet for the first-generation M80q lists one 2.5" SATA bay plus one M.2. ADR-0017's premise, flash rather than spindles for snapshot revert, stands; a SATA SSD is an order of magnitude above the mirror it was measured against.

Blast radius

None: documentation only.

  • 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.py: docs OK — 158 Prometheus + 20 Loki rules, 8 dashboards, 156 panels, 12 assertions (the ADR count and the purchase count are among the assertions).

  • ./scripts/lint.sh: every check PASS.

  • make validate: all checks passed (5 skipped — NOT run, not verified). The five skips are the worktree ones: the offsite path refusal (CI covers it), unit syntax, installed timers, the sensitive stack's timers and the homelab-* units, none of which this checkout serves. Lint ran without --require-all; CI runs the hardened boots, the secret scan and the close-keyword check too.

  • python3 scripts/check_close_keywords.py --text on this body: clean.

  • make validate passes

  • Deployed to the lab and confirmed working (nothing to deploy)

  • Docs updated (docs/, service README, or docs/roadmap.md)

🤖 Generated with Claude Code

Gerrrt and others added 3 commits October 15, 2026 23:52
…he Tiny tray

Both trays were mounted on 2026-10-15 and wobble with all six ear
screws tight: the keyboard drawer is a 10.8" slide with no rear support
and the Tiny tray a 6.6" hinged shelf, and on a 29" four-post frame
their rears rest on nothing. Two pairs of adjustable 1U four-post
support rails join Everything still to buy, ten rows to eleven, with
README's count following. hardware.md's two rows say why and footnote
the parts; the move runbook lists the rails, fits them before each tray
and fastens the tray's rear to them before anything is loaded above.

Refs #919.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Chosen 2026-10-16 for a stated 10–31.5" mounting range, a 45 lb rating
and a cabling crossbar the keyboard drawer's slider rears can tie to.
The roadmap row names it the way the smaug shelf row names StarTech,
the runbook's parts table and §6.1 say the same, and the changelog
entry records the choice.

Refs #919.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…'s bay

The move runbook had the 1 TB drive replace the 256 GB M.2 because
"there is nowhere to fit both". Lenovo's PSREF sheet for the
first-generation M80q says it takes one 2.5" SATA drive as well as one
M.2. The operator chose SATA on 2026-10-16: the 256 GB M.2 stays as the
boot disk and the 1 TB SATA SSD carries the guests. ADR-0017's Disk row
is superseded and carries the note; flash over spindles still stands.
The roadmap row becomes a 2.5" SATA SSD and gains a conditional row for
Lenovo's tray kit, eleven rows to twelve, with README's counts following
(96 ADRs, 12 items). hardware.md, the playground runbook and the move
runbook's §1.3 say the same.

Refs #421. Refs #919.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 16, 2026 02:24

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The build procedure still assumes one disk and omits provisioning the SATA SSD for guest storage.

1 open finding
What changed in this PR

Documents ifrit’s revised storage plan: retain the M.2 boot disk and add a SATA SSD for the range, with no running-lab changes.

Changes:

  • Adds ADR-0096 and a supersession note in ADR-0017.
  • Updates hardware, purchase planning, and runbook guidance.
  • Updates README counts and records the decision in the changelog.
File Description
README.md Updates ADR and purchase counts.
docs/​runbooks/​move-into-the-32u-rack.md Revises drive fitting and parts guidance.
docs/​runbooks/​build-the-playground.md Updates the storage prerequisite.
docs/​roadmap.md Replaces NVMe purchase with SATA SSD and conditional bay kit.
docs/​hardware.md Documents the revised storage layout and parts.
docs/​changelog.md Records the SATA decision.
docs/​adr/​0096-fit-ifrits-range-disk-as-a-sata-ssd-in-the-tinys-bay.md Defines the two-disk layout and rationale.
docs/​adr/​0017-buy-ifrit-for-iops-and-keep-the-range-disposable.md Adds the disk-decision supersession note.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread docs/runbooks/build-the-playground.md
Gerrrt and others added 2 commits October 16, 2026 02:52
… ZFS pool

Review on #1200: §1 still said "there is one disk" and took the installer
defaults, which could leave the 1 TB SSD unused and guests on the boot
disk. §1 now picks the M.2 as the install target, creates a single-disk
ZFS pool named range on the SATA SSD and registers it as guest storage;
§5 and §6 put every guest disk on it.

Refs #421.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…it row

Checked 2026-10-16: ifrit's M80q has the 2.5" tray and its flat SATA
cable fitted. The conditional roadmap row leaves, twelve rows to eleven
with README following, and ADR-0096, hardware.md, the move runbook and
the changelog entry say the parts are present rather than to be checked.

Refs #421.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Base automatically changed from worktree-rear-support-rails to main October 16, 2026 04:09
@Gerrrt
Gerrrt enabled auto-merge (squash) October 16, 2026 04:10
#1199 landed on main as a squash while this branch carried its commits
in original form. Both roadmap and runbook conflicts were the UPS rail
row from #1201 against nothing on main's side, kept. README's purchase
count was re-set to ten: git took main's eleven because this branch's
ten matched the merge base, and the table has ten rows.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Gerrrt
Gerrrt merged commit 16adb97 into main Oct 16, 2026
9 checks passed
@Gerrrt
Gerrrt deleted the worktree-ifrit-sata-ssd branch October 16, 2026 04:27
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.

2 participants