|
| 1 | +# v1.4 ship — follow in order |
| 2 | + |
| 3 | +Do **step 1 → end** in order. Deep detail and failure recovery: **`docs/releasing.md`**. |
| 4 | + |
| 5 | +**Replace `X.Y.Z`** below with the **semver only** (no `v`) of the release Release Please just produced — the same string as `@version` in `mix.exs` on the release tag. |
| 6 | + |
| 7 | +--- |
| 8 | + |
| 9 | +## 1. Secrets (skip if already set) |
| 10 | + |
| 11 | +- [ ] In the GitHub repo: **Settings → Secrets and variables → Actions** |
| 12 | +- [ ] `HEX_API_KEY` exists and can publish **`scrypath`** |
| 13 | + |
| 14 | +## 2. Push what is on your machine |
| 15 | + |
| 16 | +```bash |
| 17 | +cd /path/to/scrypath # this repo |
| 18 | +git status # should be clean |
| 19 | +git push origin main |
| 20 | +``` |
| 21 | + |
| 22 | +- [ ] Push succeeded (CI green on `main` is normal before the release PR). |
| 23 | + |
| 24 | +## 3. Optional local confidence (2 minutes) |
| 25 | + |
| 26 | +```bash |
| 27 | +mix verify.phase11 |
| 28 | +``` |
| 29 | + |
| 30 | +- [ ] Command finished without error (or you are comfortable trusting CI only). |
| 31 | + |
| 32 | +## 4. Release Please PR |
| 33 | + |
| 34 | +- [ ] On GitHub: **Pull requests** → find the **Release Please** release PR (version/changelog/manifest bump; not random feature PRs). |
| 35 | +- [ ] Open it. In the diff, confirm **one** new version: `mix.exs`, `.release-please-manifest.json`, and `CHANGELOG.md` **top entry** all match **`X.Y.Z`** / **`vX.Y.Z`** consistently. |
| 36 | + |
| 37 | +## 5. Merge the release PR |
| 38 | + |
| 39 | +- [ ] **Merge** that PR to **`main`** (use the project’s normal merge policy). |
| 40 | + |
| 41 | +## 6. Watch the publish workflow |
| 42 | + |
| 43 | +GitHub runs **`.github/workflows/release-please.yml`**. When it creates a release, the **publish** job tags and runs **`mix hex.publish`**, then **`mix verify.release_publish`**, then **`mix verify.release_parity`** on the server. |
| 44 | + |
| 45 | +```bash |
| 46 | +gh run list --workflow release-please.yml --limit 5 |
| 47 | +# pick the latest run id, then: |
| 48 | +gh run watch <RUN_ID> |
| 49 | +``` |
| 50 | + |
| 51 | +- [ ] Workflow finished **green** (especially the **publish** / Hex job). |
| 52 | + |
| 53 | +## 7. Record the version you actually shipped |
| 54 | + |
| 55 | +After green: |
| 56 | + |
| 57 | +```bash |
| 58 | +git fetch origin --tags |
| 59 | +git tag --sort=version:refname | tail -n 5 |
| 60 | +``` |
| 61 | + |
| 62 | +- [ ] You wrote down **`X.Y.Z`** = semver from the new **`vX.Y.Z`** tag (example: tag `v0.3.1` → **`X.Y.Z` = `0.3.1`**). |
| 63 | + |
| 64 | +## 8. Quick sanity in the browser (optional but easy) |
| 65 | + |
| 66 | +- [ ] Package: `https://hex.pm/packages/scrypath` shows **`X.Y.Z`**. |
| 67 | +- [ ] Docs: `https://hexdocs.pm/scrypath/X.Y.Z` loads. |
| 68 | + |
| 69 | +## 9. Tick planning checkboxes (only after step 6 is green) |
| 70 | + |
| 71 | +Edit in this repo: |
| 72 | + |
| 73 | +| File | What to change | |
| 74 | +|------|----------------| |
| 75 | +| **`.planning/ROADMAP.md`** | Line with **Phase 24** — change `- [ ]` to `- [x]` and add completion date if you want (match style of Phase 25/26). | |
| 76 | +| **`.planning/REQUIREMENTS.md`** | **SHIP-01**, **SHIP-02**, **SHIP-03** bullets — change `- [ ]` to `- [x]`. | |
| 77 | +| **`.planning/REQUIREMENTS.md`** | Traceability table (`SHIP-01` / `SHIP-02` / `SHIP-03` rows) — change **Pending** to **Complete** (or your house style). | |
| 78 | + |
| 79 | +- [ ] All three edits saved and committed (example message: `docs: mark v1.4 SHIP complete after X.Y.Z publish`). |
| 80 | + |
| 81 | +## 10. Close the milestone in GSD |
| 82 | + |
| 83 | +In Cursor: |
| 84 | + |
| 85 | +```text |
| 86 | +/gsd-complete-milestone v1.4 |
| 87 | +``` |
| 88 | + |
| 89 | +- [ ] Command finished; milestone archived / `PROJECT.md` / roadmap updated per that workflow. |
| 90 | + |
| 91 | +## 11. Push again if needed |
| 92 | + |
| 93 | +```bash |
| 94 | +git push origin main |
| 95 | +``` |
| 96 | + |
| 97 | +- [ ] Remote has your bookkeeping commit(s). |
| 98 | + |
| 99 | +--- |
| 100 | + |
| 101 | +## If something failed |
| 102 | + |
| 103 | +Stop and read **`docs/releasing.md`** from **“Recovering Tag or Version Drift”** and **“Recovering a Failed Publish”** — do not hand-bump versions or invent a second publish path unless that doc tells you to. |
0 commit comments