Review: Bootstrap salt-minion on edge-proxy (Hetzner VPS)

review-1813-2026-07-05 Review

review needs-refinement

Verdict: NEEDS_REFINEMENT

Template Completeness

Issue type: Bug. Checked against template-issue-bug.
  • [x] Type -- present ("Bug")
  • [ ] Lineage -- MISSING
  • [ ] Repo -- MISSING
  • [x] What Broke -- present as "Problem" (semantically equivalent, header name differs)
  • [ ] Repro Steps -- MISSING
  • [ ] Expected Behavior -- MISSING
  • [ ] Environment -- MISSING
  • [x] Acceptance Criteria -- present (3 criteria)
  • [x] Related -- present (blocks listed)
Extra sections in issue not in template: Impact (useful), Solution (useful). 5 of 9 required Bug template sections are missing or misnamed.

Traceability

  • [x] story:platform-setup label -- Platform Setup
  • [x] story note verified -- story-prediction-assistant-platform-setup exists in pal-e-docs (user-story type, active)
  • [x] arch:edge-proxy label -- edge proxy component
  • [ ] arch note MISSING -- [SCOPE] Create architecture note arch-edge-proxy for the Hetzner VPS edge-proxy component
  • [x] Forgejo issue -- ldraney/pal-e-platform#521, open

File Targets

  • [x] terraform/modules/hetzner-edge/cloud-init.yaml -- verified: exists, contains only Tailscale + Caddy bootstrap (no salt-minion), confirms issue claim
  • [x] salt/bootstrap.sh -- verified: exists, is Arch-only (uses paru, hardcodes MINION_ID="archbox"), confirms issue claim
  • [x] salt/states/top.sls -- verified: references edge-proxy with caddy state assignment
  • [x] salt/pillar/top.sls -- verified: references edge-proxy

Repo Placement

OK. Issue filed on ldraney/pal-e-platform, fix targets files in pal-e-platform (cloud-init.yaml and/or bootstrap script). Board item is on board-prediction-assistant as a cross-project dependency -- acceptable since this blocks prediction-assistant deployment.

Dependencies

  • Blocks: pal-e-platform#516 (Apply Caddy salt state) -- board item #1771, currently in validation column
  • Blocks: prediction-assistant#93 (Verify prediction-assistant.com is live) -- board item #1774, currently in todo column
  • Sprint: 12 (deploy + verify)
  • pal-e-services#173 (tofu apply) in todo is also S12 work, not directly dependent but same sprint
Note: #1771 (pal-e-platform#516) is in the validation column, suggesting it was merged but validation found the salt-minion prerequisite missing. This is consistent with the bug classification.

Acceptance Criteria

3 ACs, all clear and testable:
  • AC1: Salt-minion installed via IaC -- verifiable by code review of cloud-init or bootstrap script
  • AC2: salt edge-proxy test.ping returns True -- requires SSH to archbox for verification
  • AC3: make salt-apply succeeds for edge-proxy -- requires SSH to archbox; note make salt-apply currently runs salt-call state.apply (local), not salt 'edge-proxy' state.apply (remote). May need a targeted salt command instead.
AC2 and AC3 are integration-level checks requiring remote execution. An agent can implement the code changes but may not be able to verify these without SSH access to archbox.

Blast Radius

  • salt/bootstrap.sh is Arch-only. If a Debian bootstrap path is added, future Debian hosts would benefit. No other Debian minions currently in top.sls.
  • lucass-macbook-air-1 is also in top.sls with mac-agent state -- different OS, separate concern.
  • Any future Hetzner VPS would have the same cloud-init gap if not updated.

Decomposition Assessment

2 primary file targets in 1 repo. 3 acceptance criteria. Estimated agent work well under 5 minutes. No decomposition needed.

Recommendations

  • [BODY] Add missing Bug template sections or restructure to match template-issue-bug: add Lineage (e.g., "Standalone -- discovered during S12 deploy validation"), Repo (ldraney/pal-e-platform), Repro Steps (e.g., "1. SSH to archbox, 2. Run salt edge-proxy test.ping, 3. Observe: minion not found"), Expected Behavior ("salt-minion running on edge-proxy, test.ping returns True"), Environment (Hetzner Debian 12, salt master on archbox at 100.110.151.59)
  • [SCOPE] Create architecture note arch-edge-proxy for the Hetzner VPS edge-proxy component. Multiple board items reference arch:edge-proxy (items #1692, #1726, #1771, #1813) but no backing arch note exists.