Skip to content

docs(backlog) + fix(login-banner): B-0835 — installer config-bugs cluster (CORE: post-boot fully-operational chain without operator login; 5 sub-failures; CRITICAL self-reg didn't happen)#5349

Merged
AceHack merged 1 commit into
mainfrom
otto/b-0835-installer-three-config-bugs-hostname-gh-auth-banner-password-empirical-2026-05-26
May 26, 2026
Merged

docs(backlog) + fix(login-banner): B-0835 — installer config-bugs cluster (CORE: post-boot fully-operational chain without operator login; 5 sub-failures; CRITICAL self-reg didn't happen)#5349
AceHack merged 1 commit into
mainfrom
otto/b-0835-installer-three-config-bugs-hostname-gh-auth-banner-password-empirical-2026-05-26

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 26, 2026

Summary

Per operator 2026-05-26 across 5 messages from active physical hardware-support test:

CORE REQUIREMENT: "i should not have to log in for any of this to start that defeats the purpose the machine should be fully operational after usb install and reboot no need for me to login it self registers and creates/joins cluster without intervention."

5 sub-failures empirically anchored

Bug Severity Status
1 — hostname is `control-plane` not unique `node-<6hex>` P1 noise Diagnosis required
2 — gh login not respected P1 cascade Likely cascade with Bug 4
3a — login banner shows password text (display) P1 fix-now Fixed in this PR
3b — custom password operationally ignored P0 root-caused Requires separate fix (timing/path-mismatch)
4 — self-registration to maintainers/aaron/cluster-nodes/ did NOT happen CRITICAL Verified via gh api — dir doesn't exist on repo

Bug 3b root cause

Timing mismatch in initial-password.nix:

  • zeta-install.sh writes hash to /mnt/etc/zeta/initial-hashedpassword
  • initial-password.nix reads /etc/zeta/initial-hashedpassword via builtins.readFile at flake EVAL TIME
  • Flake pure-mode + path-mismatch: eval can't see /mnt/etc/zeta/ as /etc/zeta/; falls back to default hash
  • Installed system has the file at the right path BUT user config was built with fallbackHash

What this PR lands

  1. B-0835 backlog row capturing the full bug-cluster + root cause + diagnostic guidance + scoping
  2. Small fix to login-banner.nix removing the hardcoded password: zeta-change-me line (Bug 3a; security/UX gain at every login)

What this PR does NOT land (needs follow-up):

  • Bug 3b operational fix (move password apply to activation-time OR use --impure flag at install OR write hash to flake source tree)
  • Bug 4 cluster-register-chain diagnosis + fix (composes with B-0834 install log preservation)

5 empirical anchors in 1 physical test session

B-0832 + B-0833 + B-0834 + B-0835 with 4 sub-bugs = 7 substrate-engineering targets surfaced from one physical hardware-support test — strong validation of B-0831's reframing.

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings May 26, 2026 23:08
@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 enabled auto-merge (squash) May 26, 2026 23:08
…ster (CORE REQUIREMENT: post-boot fully-operational chain without operator login; 5 sub-failures empirically anchored)

Per operator 2026-05-26 across 5 messages from active physical
hardware-support test:

CORE REQUIREMENT: "i should not have to log in for any of this to start
that defeats the purpose the machine should be fully operational after
usb install and reboot no need for me to login it self registers and
creates/joins cluster without intervention."

Sub-failures empirically anchored:

- Bug 1: hostname is `control-plane` not unique `node-<6hex>`
  (iter-5.2.2 code path didn't fire OR flake hardcodes hostName)
- Bug 2: gh login not respected (auth chain broken; likely cascade
  with Bug 4)
- Bug 3a: login banner shows password text (display)
- Bug 3b: custom password operationally ignored — ROOT CAUSED:
  zeta-install.sh writes to /mnt/etc/zeta/ but initial-password.nix
  reads /etc/zeta/ via builtins.readFile at flake eval time; pure-mode
  + path-mismatch falls back to default hash
- Bug 4 (CRITICAL): self-registration to maintainers/aaron/cluster-nodes/
  did NOT happen (verified via gh api: dir doesn't exist on repo)

Per operator's CORE REQUIREMENT framing, Bug 4 is the actual failure;
Bugs 1-3 are sub-noise relative to "auto-operational chain doesn't work."

ALSO LANDS: small login-banner.nix fix (Bug 3a) — replaces hardcoded
`password: zeta-change-me` line with neutral text. Doesn't fix Bug 3b
(operational) but does fix the display-leak that violates security
discipline (banner exposes password text to anyone with physical screen
access).

Bug 3b + Bug 4 require separate fixes in subsequent PRs:
- Bug 3b: rework initial-password.nix to read at activation-time
  (NixOS activationScripts) OR pass hash via --impure-flag invocation
  OR write hash to flake source tree before nixos-install eval
- Bug 4: diagnose where cluster-register chain breaks (composes with
  B-0834 install log preservation for diagnostic substrate)

Five empirical anchors in one physical hardware-support test session
(B-0832 + B-0833 + B-0834 + B-0835 with 4 sub-bugs = 7 substrate-
engineering targets) — strong validation of B-0831's reframing.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@AceHack AceHack force-pushed the otto/b-0835-installer-three-config-bugs-hostname-gh-auth-banner-password-empirical-2026-05-26 branch from 920feaa to a67a05a Compare May 26, 2026 23:09
@AceHack AceHack merged commit 46a789d into main May 26, 2026
29 of 30 checks passed
@AceHack AceHack deleted the otto/b-0835-installer-three-config-bugs-hostname-gh-auth-banner-password-empirical-2026-05-26 branch May 26, 2026 23:11
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR documents the B-0835 installer configuration bug cluster from a physical hardware-support test and makes a small NixOS login-banner change to stop displaying a default password on running systems.

Changes:

  • Adds a new P1 backlog row for installer hostname, gh-auth, password, and self-registration failures.
  • Adds B-0835 to the generated backlog index.
  • Updates the NixOS getty login banner to avoid showing zeta-change-me.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 6 comments.

File Description
full-ai-cluster/nixos/modules/login-banner.nix Replaces the displayed default password with install-time-only guidance.
docs/backlog/P1/B-0835-installer-config-bugs-cluster-hostname-not-unique-gh-auth-not-respected-banner-password-disclosure-empirical-aaron-2026-05-26.md Adds the backlog row describing the installer bug cluster and diagnostics.
docs/BACKLOG.md Adds the B-0835 entry to the P1 backlog index.

Comment on lines +15 to +24
- B-0833
- B-0834
tags: [installer, first-boot, hostname, gh-auth, login-banner, password-disclosure, operator-ux, physical-hardware-support-test, empirical-anchor, bug-cluster]
---

## Problem

Three install-config bugs surfaced in the same 2026-05-26 physical
hardware-support test session (4th, 5th, 6th empirical anchors after
B-0832 nmtui WiFi + B-0833 auth-tension + B-0834 log preservation).
Comment on lines +22 to +23
Three install-config bugs surfaced in the same 2026-05-26 physical
hardware-support test session (4th, 5th, 6th empirical anchors after
Comment on lines +48 to +55
- The flake's `control-plane` attribute hardcodes
`networking.hostName = "control-plane"` and overrides the
`injected-hostname.nix` module's `mkDefault` setting

Diagnosis: check whether `/etc/zeta/cluster-node-id` exists on the
installed system AND check `cat /etc/hostname`. If the file exists
but `/etc/hostname` shows `control-plane`, the module-vs-flake
priority is wrong.
Comment on lines +70 to +71
operator's GH user; check `/etc/zeta/operator-ssh-keys.nix` for
populated pubkey array; check `git -C /etc/zeta remote -v` for the

```bash
ls -la /root/.config/gh/ # gh state directory
cat /etc/zeta/operator-ssh-keys.nix # injected pubkeys
Comment on lines +192 to +194
shows `control-plane` → flake-priority override; fix `injected-
hostname.nix` module priority OR change `control-plane.nix` flake
host attribute to not hardcode `networking.hostName`
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