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

review-1813-2026-07-05-r2 Review

review approved

Verdict: APPROVED

Re-review of board item #1813. Previous review (review-1813-2026-07-05) found 2 issues: 5 missing bug template sections and missing arch-edge-proxy architecture note. Both are now resolved.

Template Completeness

Issue type: Bug. Checked against template-issue-bug.
  • [x] Type -- present ("Bug")
  • [x] Lineage -- present ("Blocks pal-e-platform#516... Standalone discovery during prediction-assistant S11 deploy")
  • [x] Repo -- present ("ldraney/pal-e-platform")
  • [x] What Broke -- present as "Problem" (semantically equivalent, header name differs slightly)
  • [x] Repro Steps -- present (salt test.ping + salt-minion --version commands)
  • [x] Expected Behavior -- present (test.ping returns True, salt-apply works)
  • [x] Environment -- present (Hetzner CPX11, Debian 12, Tailscale 100.72.199.14)
  • [x] Acceptance Criteria -- present (3 criteria)
  • [x] Related -- present (blocks listed)
Extra sections: Impact (useful), Solution (useful). All 9 required Bug template sections are present.

Traceability

  • [x] story:platform-setup label -- Platform Setup
  • [x] story note verified -- platform-setup entry exists in project-prediction-assistant user-stories section (Developer role, "CI/CD push-to-deploy in under 10 minutes")
  • [x] arch:edge-proxy label -- edge proxy component
  • [x] arch note verified -- arch-edge-proxy note exists in pal-e-docs (architecture type, active status, pal-e-platform project). Comprehensive content including diagram, components table, provisioning flow, and "Known Gap: Salt-Minion Not Bootstrapped" section
  • [x] Forgejo issue -- ldraney/pal-e-platform#521, closed (status:approved label)

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: line 23 references 'edge-proxy' with caddy state assignment
  • [x] salt/pillar/top.sls -- verified: line 22 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
Forgejo issue is now closed with status:approved, indicating implementation has merged. Board item is in validation column awaiting post-merge verification.

Acceptance Criteria

3 ACs, all clear and testable:
  • AC1: Salt-minion installed on edge-proxy 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
AC2 and AC3 are integration-level checks requiring remote execution. An agent can implement the code changes but verification requires 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.
  • Any future Hetzner VPS would have the same cloud-init gap if not updated.
  • arch-edge-proxy note documents the gap under "Known Gap: Salt-Minion Not Bootstrapped" -- good traceability.

Decomposition Assessment

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

Recommendations

No action needed. Both issues from the previous review have been resolved:
  • All 5 missing Bug template sections (Lineage, Repo, Repro Steps, Expected Behavior, Environment) are now present in the Forgejo issue body.
  • The arch-edge-proxy architecture note now exists with comprehensive documentation of the edge proxy component, including the known salt-minion gap.