Skip to content

docs(backlog): B-0833 — installer interactive-login vs baked-in-keys CI-test tension (resolve without shipping credentials on ISO)#5346

Merged
AceHack merged 2 commits into
mainfrom
otto/b-0833-interactive-login-vs-baked-in-keys-ci-test-tension-aaron-2026-05-26
May 26, 2026
Merged

docs(backlog): B-0833 — installer interactive-login vs baked-in-keys CI-test tension (resolve without shipping credentials on ISO)#5346
AceHack merged 2 commits into
mainfrom
otto/b-0833-interactive-login-vs-baked-in-keys-ci-test-tension-aaron-2026-05-26

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented May 26, 2026

Summary

Per operator 2026-05-26 from physical hardware-support test: "in the automated tests i see a tention between interactive login and baked in keys we probably are going to have to resolve this i would love if interactive device login didn't need to be human tested everytime but this is hard to test"

The tension

Mode Security Testability
Interactive login (gh auth login device-code) NO credentials on ISO; aligned with B-0794 homelab-mode Hard to test in CI without human
Baked-in keys VIOLATES: ISO is publicly downloadable Easy to test

4-approach scoping

# Approach Phase Code cost
A Mock GH device-code endpoint in CI Proper coverage (Phase 1) ~200 LOC TS mock server
B Test-only ephemeral GH App with OIDC-minted tokens Proper coverage (Phase 1) GH App + OIDC trust setup
C Skip auth in cascade #6 phase 1; layered tests Immediate (Phase 0) --skip-gh-auth flag
D Manual auth-only physical test Residual (steady-state) Operator-cadence discipline

Likely landing: C first + A or B follow-up + D as residual.

5 HARD LIMITS (non-negotiable per methodology-hard-limits + B-0794)

  1. NO real GitHub PATs on ISO (publicly downloadable)
  2. NO operator SSH private keys on ISO (gh ssh-key list reads PUBLIC only)
  3. NO long-lived credentials in CI (ephemeral or mock only)
  4. NO test credentials work against real GH API (mock-scoped)
  5. Audit trail for every CI auth test

Test plan

  • markdownlint clean
  • BACKLOG.md regenerated
  • Composes_with cross-refs to B-0794 + B-0831 + B-0812 + B-0813 + methodology-hard-limits + classifier-bypass-research

🤖 Generated with Claude Code

…nsion (resolve without shipping credentials on ISO)

Per operator 2026-05-26 from physical hardware-support test:
"in the automated tests i see a tention between interactive login and
baked in keys we probably are going to have to resolve this i would
love if interactive device login didn't need to be human tested
everytime but this is hard to test"

Files B-0833 as P1 substrate-engineering target. 4-approach scoping:

- A: Mock GH device-code endpoint in CI (stub OAuth server; ~200 LOC;
  zero real credentials)
- B: Test-only ephemeral GH App with CI-scoped OIDC-minted tokens
  (real GH infrastructure; per-run rotation; scoped permissions)
- C: Skip auth in cascade #6 phase 1; layered tests (fastest;
  immediate testability gain; leaves auth coverage gap)
- D: Manual auth-only physical test (operator periodic; honest about
  what CI can/cannot cover; aligns with B-0831 physical-as-hardware-
  support-test reframing)

Likely landing: C first (Phase 0 immediate gain) + A or B (Phase 1
proper coverage) + D (steady-state residual).

HARD LIMITS section names 5 non-negotiable security properties:
- NO real GitHub PATs on ISO (publicly downloadable)
- NO operator SSH private keys on ISO (gh ssh-key list reads PUBLIC)
- NO long-lived credentials in CI (ephemeral or mock only)
- NO test credentials work against real GH API (mock-scoped)
- Audit trail for every CI auth test

Composes_with B-0794 (homelab-mode no-credentials-on-ISO) + B-0831
(CI cascade #6; this row resolves a P1 blocker for #6 phase 1+2) +
B-0812/B-0813 (cluster-bringup substrate that auth gates) +
methodology-hard-limits + classifier-bypass-research rules.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 26, 2026 23:01
@AceHack AceHack enabled auto-merge (squash) May 26, 2026 23:01
…wright with dedicated AI GH accounts (operator 2026-05-26)

Per operator: "to have it fully tested by ai likely going to have to
preform the step and use paywrite to login into github likely going
to need its own accounts and such"

Adds 5th resolution approach to B-0833 + matching acceptance criterion.

Approach E properties:
- AI agent uses Playwright to drive real GH device-code OAuth flow
- Dedicated AI-owned GH accounts (separate from operator's account)
- AI account scoped permissions (read-only this repo; minimal scope)
- 2FA TOTP secret in CI secret-store; agent generates TOTP at auth-time
- Per-run audit log: which AI account used; what scope tokens issued;
  tokens revoked post-test
- Composes with mcp__plugin_playwright_playwright__* tooling (existing
  Playwright surface; reusable for other browser-automation tests)

Trade-off named: highest-fidelity automated path (full real-GH OAuth
end-to-end) but requires most operational substrate (AI accounts +
Playwright + 2FA + account hygiene).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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

Adds a new P1 backlog row (B-0833) documenting the security vs CI-testability tension for installer GitHub authentication (interactive device-code login vs baked-in credentials), and updates the generated backlog index to include the new row.

Changes:

  • Added backlog row B-0833 describing four resolution approaches (mock endpoint, ephemeral GH App, layered tests with auth skip, and periodic manual auth testing) plus non-negotiable security limits.
  • Regenerated docs/BACKLOG.md to include B-0833 in the P1 section.

Reviewed changes

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

File Description
docs/backlog/P1/B-0833-installer-interactive-login-vs-baked-in-keys-ci-test-tension-resolve-without-shipping-credentials-aaron-2026-05-26.md New backlog item capturing constraints and candidate approaches for CI-testing installer auth without shipping credentials.
docs/BACKLOG.md Index update to list the new B-0833 row under P1.

@AceHack AceHack merged commit fee9053 into main May 26, 2026
28 of 29 checks passed
@AceHack AceHack deleted the otto/b-0833-interactive-login-vs-baked-in-keys-ci-test-tension-aaron-2026-05-26 branch May 26, 2026 23:05
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