Skip to content

fix(postmerge-5210): 5 Copilot findings — prompt copy + comment accuracy + path + banner-password truth + sk-* FIDO key support#5214

Merged
AceHack merged 1 commit into
mainfrom
otto-cli/postmerge-5210-fixfwd-5-copilot-findings-2026-05-26
May 26, 2026
Merged

fix(postmerge-5210): 5 Copilot findings — prompt copy + comment accuracy + path + banner-password truth + sk-* FIDO key support#5214
AceHack merged 1 commit into
mainfrom
otto-cli/postmerge-5210-fixfwd-5-copilot-findings-2026-05-26

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 26, 2026

Summary

Addresses all 5 Copilot post-merge findings on #5210 (iter-5.4.0 just landed at e30b567). All 5 substantive; all real:

# Pri Finding Fix
1 P0 Prompt copy "Press Enter to skip" but default is Y → Enter runs gh-auth Rewrote copy to match [Y/n] default-Y behavior
2 P1 Comment claims "NOT skippable if iter-4.2 also failed" but impl always allows skip Rewrote comment to reflect reality (always-skippable + warning)
3 P2 Warning references usb-nixos-installer/... missing full-ai-cluster/ prefix Path corrected
4 P1 Banner always prints password: zeta-change-me but iter-5.3 lets operator customize Conditional banner: reads /mnt/etc/zeta/initial-hashedpassword existence
5 P1 isKeyLine only accepts ssh- + ecdsa-, silently drops sk-* FIDO/U2F keys GitHub stores Refactored to validPrefixes list including sk-ssh- + sk-ecdsa- per existing operator-ssh-keys.nix parity

Substrate-honest note

Findings #5 (sk-* FIDO) is operationally load-bearing — operators with security-key-only GitHub setups would have had ALL their keys silently dropped. The existing operator-ssh-keys.nix module explicitly documents sk-* support; verifying that BEFORE authoring this fix (per the verify-existing-substrate-before-authoring rule landed today via #5131) caught the parity gap.

Auto-merge armed; threads resolved on #5210.

🤖 Generated with Claude Code

…nt accuracy + path correction + banner-password truth + sk-* FIDO key support

P0 + P1 + P1 + P1 + P2 findings on PR #5210 (iter-5.4.0 just merged
at e30b567). All 5 substantive; addressed:

(1) P0 — prompt copy said "Press Enter to skip" but default is Y so
    Enter actually triggers gh-auth-login. Updated copy to
    "Default is YES (recommended); press Enter to proceed OR type 'n'
    to skip" matching the actual [Y/n] default-Y behavior.

(2) P1 (comment accuracy) — block-comment said "NOT skippable if iter-
    4.2 injection also failed" but impl always allows skip. Rewrote
    comment to reflect reality ("skippable warning-only when iter-4.2
    also failed").

(3) P2 (path correction) — warning message referenced
    "usb-nixos-installer/nixos/installer/configuration.nix" missing
    the "full-ai-cluster/" prefix. Fixed to the in-repo-correct path
    so post-mortem debugging of missing-gh-binary stays clear.

(4) P1 (banner-password truth) — install-complete banner always printed
    "password: zeta-change-me" but iter-5.3 (landed earlier today via
    #5118) lets operator set a custom password. Conditional on
    /mnt/etc/zeta/initial-hashedpassword existence: print "(the value
    you set during iter-5.3 prompt; iter-4.x default is NOT in effect)"
    OR fall back to documented iter-4.x default with rotation hint.

(5) P1 (sk-* FIDO key support) — operator-authorized-keys.nix
    isKeyLine filter only accepted ssh- + ecdsa- prefixes, silently
    dropping sk-ssh-ed25519 / sk-ecdsa-sha2-* (FIDO/U2F security-key-
    backed pubkeys per RFC8709) that GitHub stores when operators
    register security keys. Existing operator-ssh-keys.nix explicitly
    documents sk-* support; this module now matches that parity.
    Refactored to validPrefixes list + hasValidPrefix helper for
    readability + future-extensibility.

Substrate-inventory pass per `.claude/rules/verify-existing-substrate-
before-authoring.md`: existing operator-ssh-keys.nix substrate has
sk-* documented — verified before authoring the parity fix per the
discipline rule landed today.

Co-Authored-By: Claude <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 26, 2026 16:26
@AceHack AceHack enabled auto-merge (squash) May 26, 2026 16:26
@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 fad21df into main May 26, 2026
29 of 30 checks passed
@AceHack AceHack deleted the otto-cli/postmerge-5210-fixfwd-5-copilot-findings-2026-05-26 branch May 26, 2026 16:29
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 addresses the post-merge findings from #5210 by aligning installer UX copy with actual default behavior, fixing a referenced path in warnings, making the install-complete credential banner reflect the iter-5.3 password outcome, and ensuring operator key ingestion supports sk-* (FIDO/U2F) SSH key types.

Changes:

  • Update zeta-install.sh prompts/comments to match [Y/n] default-YES behavior and correct the referenced configuration path.
  • Make the install-complete banner conditional on whether an operator-provided initial password hash was written.
  • Expand key-prefix filtering in the operator key ingestion module to include sk-ssh- and sk-ecdsa-.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
full-ai-cluster/usb-nixos-installer/zeta-install.sh Fixes gh-auth prompt/copy behavior and updates install banner to reflect actual password injection state.
full-ai-cluster/nixos/modules/operator-authorized-keys.nix Extends supported SSH key prefixes to include sk-* security-key-backed keys.

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