Skip to content

fix(B-0835 Bug 4+5 — Aaron 2026-05-27 control-plane install): storage probe filters 0B devices + gh CLI in installed system PATH#5385

Merged
AceHack merged 1 commit into
mainfrom
fix-b0835-storage-probe-filter-zero-size-block-devices-2026-05-26-2233z
May 27, 2026
Merged

fix(B-0835 Bug 4+5 — Aaron 2026-05-27 control-plane install): storage probe filters 0B devices + gh CLI in installed system PATH#5385
AceHack merged 1 commit into
mainfrom
fix-b0835-storage-probe-filter-zero-size-block-devices-2026-05-26-2233z

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 27, 2026

Summary

Two empirical anchors from Aaron's iter-5.4 install of `node-e5a176` (PR #5380 self-registered cleanly) where post-reboot login surfaced two distinct gaps:

Bug 4 — `/dev/sda 0B` zero-size device in node.yaml

Storage probe at zeta-install.sh:781 emitted every block device, including 0-byte placeholders (empty SD card readers, optical bays). Aaron's Intel Core Ultra 9 185H node registered `/dev/sda 0B` → Copilot P1 on PR #5380.

Fix: `awk '$3=="disk" && $2!="0B"{...}'` filter excludes zero-size devices.

Bug 5 — `gh: command not found` on first login

Operator: "when i log in gh command is not found". Installer ISO had gh (iter-5.4.0 used it for `gh auth login` during install) but `common.nix` systemPackages didn't include it — auth tokens in `~/.config/gh` were stranded without the binary.

Fix: add `gh` to `common.nix` `environment.systemPackages` so the installed system has it for re-auth + ssh-key sync + future register/deregister tooling.

Test plan

  • CI passes
  • Next ISO build picks up both fixes
  • Future installs register without 0B entries; `gh` available on first login

Composes with

🤖 Generated with Claude Code

…al anchors): zeta-install.sh storage probe filters 0B devices + common.nix adds gh CLI to systemPackages

Two empirical anchors from Aaron's iter-5.4 install of `node-e5a176`
(PR #5380 self-registered) where install completed but operator hit
two distinct gaps on first login:

Bug 4 — `/dev/sda 0B` zero-size storage device in node.yaml
================================================================

The storage probe in zeta-install.sh (line 781) emitted EVERY block
device from lsblk, including 0-byte placeholder devices (empty SD
card readers, empty optical bays, removable-media readers without
media). Aaron's Intel Core Ultra 9 185H node has /dev/sda 0B
(likely the laptop's empty SD card reader) which got registered as
"storage" — Copilot P1 finding on PR #5380.

Fix: add `$2 != "0B"` filter to the awk pipeline so zero-size
placeholders are excluded from the spec.hardware.storage list.

  -    STORAGE_LINES=$(lsblk -ndo NAME,SIZE,TYPE -e7 2>/dev/null |
  -      awk '$3=="disk"{print "..."}' || echo "")
  +    STORAGE_LINES=$(lsblk -ndo NAME,SIZE,TYPE -e7 2>/dev/null |
  +      awk '$3=="disk" && $2!="0B"{print "..."}' || echo "")

This prevents reconcilers reading spec.hardware.storage from treating
0-byte devices as usable storage targets.

Bug 5 — gh CLI not in installed system's PATH after reboot
================================================================

Operator framing: "when i log in gh command is not found"

The installer ISO had gh in PATH (used by iter-5.4.0 for `gh auth
login` during Step 6.8) but common.nix systemPackages did not
include gh, so post-reboot the auth tokens stored in ~/.config/gh
are useless without the binary. The gap surfaced empirically on
Aaron's first login to the freshly-installed node-e5a176.

Fix: add `gh` to common.nix environment.systemPackages so the
installed system has it for ongoing operator workflows (re-auth,
ssh-key sync, future register/deregister-node tooling, kubectl
helpers that wrap gh, etc.).

Composes with: B-0813 (cluster-node schema), B-0817 (register-node
tool), iter-5.4 install cascade.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 27, 2026 02:30
@AceHack AceHack enabled auto-merge (squash) May 27, 2026 02:30
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@AceHack AceHack merged commit c32b60a into main May 27, 2026
29 of 30 checks passed
@AceHack AceHack deleted the fix-b0835-storage-probe-filter-zero-size-block-devices-2026-05-26-2233z branch May 27, 2026 02:33
@AceHack AceHack review requested due to automatic review settings May 27, 2026 02:54
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