Review: Bootstrap salt-minion on edge-proxy (Hetzner VPS)
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-setupexists 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-proxyfor 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, hardcodesMINION_ID="archbox"), confirms issue claim - [x]
salt/states/top.sls-- verified: referencesedge-proxywithcaddystate assignment - [x]
salt/pillar/top.sls-- verified: referencesedge-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
validationcolumn - Blocks: prediction-assistant#93 (Verify prediction-assistant.com is live) -- board item #1774, currently in
todocolumn - Sprint: 12 (deploy + verify)
- pal-e-services#173 (tofu apply) in
todois 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.pingreturns True -- requires SSH to archbox for verification - AC3:
make salt-applysucceeds for edge-proxy -- requires SSH to archbox; notemake salt-applycurrently runssalt-call state.apply(local), notsalt '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.shis Arch-only. If a Debian bootstrap path is added, future Debian hosts would benefit. No other Debian minions currently intop.sls.lucass-macbook-air-1is also intop.slswithmac-agentstate -- 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. Runsalt 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-proxyfor the Hetzner VPS edge-proxy component. Multiple board items referencearch:edge-proxy(items #1692, #1726, #1771, #1813) but no backing arch note exists.