PR AB: complete Phoenix deployment scaffolding (add 3 files referenced by main 4a1f69a) #32

Merged
nsatoshi merged 1 commits from devin/1776918348-pr-ab-complete-phoenix-scaffolding into main 2026-04-23 04:39:37 +00:00
Owner

Description

main commit 4a1f69a ("deploy: make Phoenix redeploys archive-safe") adopted the Phoenix deployment scaffolding that was being iterated on in the now-closed PR #31, but three files that main's own install.sh, systemd units, deploy-currencicombo-8604.sh, and README.md all reference did not make it in. This PR adds exactly those three files, unchanged from the PR #31 branch, so main is internally consistent and actually bootable on CT 8604.

What main references but does not have

file referenced by failure mode without it
scripts/deployment/webapp-nginx.conf systemd/currencicombo-webapp.service line 13 (ExecStart=/usr/sbin/nginx -c /etc/currencicombo/webapp-nginx.conf ...); install.sh line 36 (NGINX_FILE="${ETC_DIR}/webapp-nginx.conf") + line 232 (install -m 0644 "${SCRIPT_DIR}/webapp-nginx.conf" "${NGINX_FILE}") webapp unit fails on start: nginx: [emerg] open() "/etc/currencicombo/webapp-nginx.conf" failed
scripts/deployment/systemd/currencicombo-orchestrator.service deploy-currencicombo-8604.sh line 40 (: "${ORCHESTRATOR_UNIT:=currencicombo-orchestrator.service}") + lines 101/104 (systemctl stop/start); install.sh line 238 (install -m 0644 of that path) + line 248 (systemctl enable) install.sh fails at the install step; deploy script fails at systemctl stop currencicombo-orchestrator.service with Unit ... not loaded
scripts/deployment/install-prune-cron.sh README.md step 4 (bash /var/lib/currencicombo/repo/scripts/deployment/install-prune-cron.sh); README backup-retention section ops follows the README, hits No such file or directory

Provenance

All three files are byte-identical copies of the same three files from the closed PR #31 branch devin/1776898782-pr-aa-phoenix-migration (commit ded7d24). main already absorbed everything else from PR #31 as 4a1f69a; this PR closes the remaining gap.

Type of Change

  • Bug fix (non-breaking change which fixes an issue) — fixes missing files referenced by the committed deploy scaffolding
  • New feature
  • Breaking change
  • Documentation update
  • Refactoring (no functional changes)

Supersedes closed PR #31.

Testing

  • Unit tests added/updated — n/a (deployment scaffolding only)
  • E2E tests added/updated — n/a
  • Manual testing completed (on builder box, not yet on CT 8604)

Verification on the builder box:

  • shellcheck --severity=warning scripts/deployment/install-prune-cron.sh → clean
  • bash -n scripts/deployment/install-prune-cron.sh → clean
  • systemd-analyze verify scripts/deployment/systemd/currencicombo-orchestrator.service → no errors on this unit
  • sudo bash scripts/deployment/install-prune-cron.sh --dry-run → prints exact cron body, RETAIN_DAYS=30, KEEP_MIN=5, targeting /var/lib/currencicombo/backups
  • nginx -T on webapp-nginx.conf not run here (nginx not installed on this builder); exercised during PR #31 pre-close verification

CT 8604 cutover is artifacts-only: after merge, operator runs install.shdeploy-currencicombo-8604.sh → applies the NPMplus /api/* location rule → runs the 5 public smokes documented in scripts/deployment/README.md.

Checklist

  • Code follows project style guidelines
  • Self-review completed
  • Comments added for complex code
  • Documentation updated (main's README already documents these three files; the gap was the files themselves)
  • No new warnings generated
  • Tests pass locally
  • Changes tested on multiple browsers (if applicable) — n/a

Additional Notes

install-prune-cron.sh is opt-in and not called from install.sh. The other two files are required for install.sh / deploy-currencicombo-8604.sh / currencicombo-webapp.service to work at all.

## Description `main` commit `4a1f69a` ("deploy: make Phoenix redeploys archive-safe") adopted the Phoenix deployment scaffolding that was being iterated on in the now-closed PR #31, but three files that `main`'s own `install.sh`, systemd units, `deploy-currencicombo-8604.sh`, and `README.md` all reference did not make it in. This PR adds exactly those three files, **unchanged** from the PR #31 branch, so `main` is internally consistent and actually bootable on CT 8604. ### What main references but does not have | file | referenced by | failure mode without it | |---|---|---| | `scripts/deployment/webapp-nginx.conf` | `systemd/currencicombo-webapp.service` line 13 (`ExecStart=/usr/sbin/nginx -c /etc/currencicombo/webapp-nginx.conf ...`); `install.sh` line 36 (`NGINX_FILE="${ETC_DIR}/webapp-nginx.conf"`) + line 232 (`install -m 0644 "${SCRIPT_DIR}/webapp-nginx.conf" "${NGINX_FILE}"`) | webapp unit fails on start: `nginx: [emerg] open() "/etc/currencicombo/webapp-nginx.conf" failed` | | `scripts/deployment/systemd/currencicombo-orchestrator.service` | `deploy-currencicombo-8604.sh` line 40 (`: "${ORCHESTRATOR_UNIT:=currencicombo-orchestrator.service}"`) + lines 101/104 (`systemctl stop`/`start`); `install.sh` line 238 (`install -m 0644` of that path) + line 248 (`systemctl enable`) | `install.sh` fails at the install step; deploy script fails at `systemctl stop currencicombo-orchestrator.service` with `Unit ... not loaded` | | `scripts/deployment/install-prune-cron.sh` | `README.md` step 4 (`bash /var/lib/currencicombo/repo/scripts/deployment/install-prune-cron.sh`); README backup-retention section | ops follows the README, hits `No such file or directory` | ### Provenance All three files are byte-identical copies of the same three files from the closed PR #31 branch `devin/1776898782-pr-aa-phoenix-migration` (commit `ded7d24`). `main` already absorbed everything else from PR #31 as `4a1f69a`; this PR closes the remaining gap. ## Type of Change - [x] Bug fix (non-breaking change which fixes an issue) — fixes missing files referenced by the committed deploy scaffolding - [ ] New feature - [ ] Breaking change - [ ] Documentation update - [ ] Refactoring (no functional changes) ## Related Issues Supersedes closed PR #31. ## Testing - [ ] Unit tests added/updated — n/a (deployment scaffolding only) - [ ] E2E tests added/updated — n/a - [x] Manual testing completed (on builder box, not yet on CT 8604) Verification on the builder box: - `shellcheck --severity=warning scripts/deployment/install-prune-cron.sh` → clean - `bash -n scripts/deployment/install-prune-cron.sh` → clean - `systemd-analyze verify scripts/deployment/systemd/currencicombo-orchestrator.service` → no errors on this unit - `sudo bash scripts/deployment/install-prune-cron.sh --dry-run` → prints exact cron body, `RETAIN_DAYS=30`, `KEEP_MIN=5`, targeting `/var/lib/currencicombo/backups` - `nginx -T` on `webapp-nginx.conf` not run here (nginx not installed on this builder); exercised during PR #31 pre-close verification CT 8604 cutover is artifacts-only: after merge, operator runs `install.sh` → `deploy-currencicombo-8604.sh` → applies the NPMplus `/api/*` location rule → runs the 5 public smokes documented in `scripts/deployment/README.md`. ## Checklist - [x] Code follows project style guidelines - [x] Self-review completed - [x] Comments added for complex code - [x] Documentation updated (`main`'s README already documents these three files; the gap was the files themselves) - [x] No new warnings generated - [x] Tests pass locally - [ ] Changes tested on multiple browsers (if applicable) — n/a ## Additional Notes `install-prune-cron.sh` is opt-in and not called from `install.sh`. The other two files are required for `install.sh` / `deploy-currencicombo-8604.sh` / `currencicombo-webapp.service` to work at all.
nsatoshi added 1 commit 2026-04-23 04:28:45 +00:00
main 4a1f69a 'deploy: make Phoenix redeploys archive-safe' adopted the
Phoenix deployment scaffolding from the abandoned PR #31 branch but
landed with three referenced-but-missing files. This PR adds exactly
those three files, unchanged from the PR #31 branch, so main is
internally consistent and bootable on CT 8604.

What main references but does not have
--------------------------------------

1. scripts/deployment/webapp-nginx.conf
   Referenced by: systemd/currencicombo-webapp.service (ExecStart calls
   'nginx -c /etc/currencicombo/webapp-nginx.conf') and install.sh
   (NGINX_FILE="${ETC_DIR}/webapp-nginx.conf"; install -m 0644 of
   "${SCRIPT_DIR}/webapp-nginx.conf").
   Without this file: webapp unit fails on start with 'nginx: [emerg]
   open() "/etc/currencicombo/webapp-nginx.conf" failed'.

2. scripts/deployment/systemd/currencicombo-orchestrator.service
   Referenced by: deploy-currencicombo-8604.sh (line 40:
   ${ORCHESTRATOR_UNIT:=currencicombo-orchestrator.service};
   lines 101/104 systemctl stop/start) and install.sh (line 238
   install -m 0644 of
   "${SCRIPT_DIR}/systemd/currencicombo-orchestrator.service";
   line 248 systemctl enable).
   Without this file: install.sh fails at the install step, deploy
   script fails at 'systemctl stop currencicombo-orchestrator.service
   Unit not found'.

3. scripts/deployment/install-prune-cron.sh
   Referenced by: README.md (step 4: 'bash /var/lib/currencicombo/repo/
   scripts/deployment/install-prune-cron.sh' and the 'Backup retention
   / pruning' section).
   Without this file: ops follows the README, hits a 'No such file'
   and has to reconstruct the pruner from prose.

Provenance
----------

All three files are verbatim copies of the same three files from the
closed PR #31 branch devin/1776898782-pr-aa-phoenix-migration (commit
ded7d24), which was the source PR #31 reviewers discussed when the
three ops improvements (loud-failure rollback, keep-min-5 prune cron,
/root/currencicombo-first-keys.txt 0600) were locked. main already
absorbed everything else from PR #31 as commit 4a1f69a.

Verification
------------

- shellcheck --severity=warning scripts/deployment/install-prune-cron.sh: clean
- bash -n on install-prune-cron.sh: clean
- systemd-analyze verify on currencicombo-orchestrator.service: clean
  (only unrelated-host-service errors surface on this build box)
- sudo bash scripts/deployment/install-prune-cron.sh --dry-run: prints
  the exact cron body with retain=30, keep-min=5, targeting
  /var/lib/currencicombo/backups, as expected.
- nginx -T on webapp-nginx.conf: not run (nginx not installed on
  build box); tested on the CT in PR #31's pre-close verification run.

Co-Authored-By: Nakamoto, S <defi@defi-oracle.io>
nsatoshi merged commit f2e0434ad6 into main 2026-04-23 04:39:37 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: d-bis/CurrenciCombo#32