diff options
| author | Your Name <you@example.com> | 2026-05-19 12:30:30 +0530 |
|---|---|---|
| committer | Your Name <you@example.com> | 2026-05-19 12:30:30 +0530 |
| commit | ef2de0f863a0e901825c420d18dd5b596c7b3c25 (patch) | |
| tree | 8ccb332b33390a036c534a644f508f5ba1133a25 /docs/REBASE-SQUASH-MERGE-PLAN.md | |
| parent | 3aa372ccc3e11c837458b00088ffb6cbe99ff6ca (diff) | |
docs: rebase, backup, squash & merge plan with checklistbackup/multi-mint-support-pre-rebase
Diffstat (limited to 'docs/REBASE-SQUASH-MERGE-PLAN.md')
| -rw-r--r-- | docs/REBASE-SQUASH-MERGE-PLAN.md | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/docs/REBASE-SQUASH-MERGE-PLAN.md b/docs/REBASE-SQUASH-MERGE-PLAN.md new file mode 100644 index 0000000..f4bd98f --- /dev/null +++ b/docs/REBASE-SQUASH-MERGE-PLAN.md | |||
| @@ -0,0 +1,92 @@ | |||
| 1 | # Multi-Mint Support — Rebase, Backup, Squash & Merge Plan | ||
| 2 | |||
| 3 | ## Goal | ||
| 4 | Rebase `feature/multi-mint-support` onto `master`, create a backup branch, squash all 20 commits into one clean commit, then merge to master. | ||
| 5 | |||
| 6 | ## Current State | ||
| 7 | - **Branch**: `feature/multi-mint-support` in worktree `/home/c03rad0r/esp32-tollgate-multi-mint` | ||
| 8 | - **Commits on branch**: 20 (since `master` at `77031f0`) | ||
| 9 | - **Remote**: `origin` → Nostr relay `relay.ngit.dev` (currently down) | ||
| 10 | - **Worktree**: shared repo — other sessions use other worktrees on different branches | ||
| 11 | |||
| 12 | ## Procedure | ||
| 13 | |||
| 14 | ### Phase 1: Pre-flight | ||
| 15 | 1. Verify working tree is clean (no uncommitted changes) | ||
| 16 | 2. Verify build passes | ||
| 17 | 3. Verify unit tests pass (75/75) | ||
| 18 | |||
| 19 | ### Phase 2: Backup | ||
| 20 | 4. Create backup branch `backup/multi-mint-support-pre-rebase` at current HEAD | ||
| 21 | 5. Create backup branch `backup/multi-mint-support-pre-squash` (same point, used after rebase) | ||
| 22 | |||
| 23 | ### Phase 3: Rebase | ||
| 24 | 6. `git rebase master` — rebase all 20 commits onto master | ||
| 25 | 7. Resolve any conflicts | ||
| 26 | 8. Verify build + tests still pass after rebase | ||
| 27 | |||
| 28 | ### Phase 4: Post-rebase Backup | ||
| 29 | 9. Create `backup/multi-mint-support-rebased` at the rebased HEAD | ||
| 30 | 10. This preserves every individual commit even after squashing | ||
| 31 | |||
| 32 | ### Phase 5: Squash | ||
| 33 | 11. `git reset --soft master` — soft reset to master, keeping all changes staged | ||
| 34 | 12. `git commit -m "feat: multi-mint Cashu wallet with health tracking, WPA auto-detect, CVM"` — single clean commit | ||
| 35 | 13. Verify build + tests pass after squash | ||
| 36 | |||
| 37 | ### Phase 6: Merge | ||
| 38 | 14. Merge to master (fast-forward since squashed branch sits on top) | ||
| 39 | 15. Verify master builds and tests pass | ||
| 40 | |||
| 41 | ## Checklist | ||
| 42 | |||
| 43 | ### Pre-flight | ||
| 44 | - [ ] Working tree clean | ||
| 45 | - [ ] Build passes (`idf.py build`) | ||
| 46 | - [ ] Unit tests pass (`make test-unit`) | ||
| 47 | |||
| 48 | ### Backup | ||
| 49 | - [ ] `backup/multi-mint-support-pre-rebase` created at current HEAD (`3aa372c`) | ||
| 50 | |||
| 51 | ### Rebase | ||
| 52 | - [ ] `git rebase master` completed | ||
| 53 | - [ ] Conflicts resolved (if any) | ||
| 54 | - [ ] Build passes after rebase | ||
| 55 | - [ ] Unit tests pass after rebase | ||
| 56 | |||
| 57 | ### Post-rebase Backup | ||
| 58 | - [ ] `backup/multi-mint-support-rebased` created at rebased HEAD | ||
| 59 | |||
| 60 | ### Squash | ||
| 61 | - [ ] `git reset --soft master` done | ||
| 62 | - [ ] Single commit created with clean message | ||
| 63 | - [ ] Build passes after squash | ||
| 64 | - [ ] Unit tests pass after squash | ||
| 65 | |||
| 66 | ### Merge | ||
| 67 | - [ ] Merged to master (fast-forward) | ||
| 68 | - [ ] Master builds and tests pass | ||
| 69 | - [ ] Worktree updated | ||
| 70 | |||
| 71 | ## Remaining Work After Merge | ||
| 72 | 1. **Push to Nostr relay** — blocked until `relay.ngit.dev` recovers | ||
| 73 | 2. **NVS keyset storage** — `ESP_ERR_NVS_NOT_ENOUGH_SPACE` errors; factory partition at `0x10000` limits NVS to 24KB. Options: | ||
| 74 | - Store keysets in SPIFFS instead of NVS | ||
| 75 | - Compress keyset data | ||
| 76 | - Only cache active keysets | ||
| 77 | 3. **Board A crash** — hardware-specific (~50s uptime), not software. Possible causes: | ||
| 78 | - Bad power supply on QinHeng UART adapter (serial `5A84017819`) | ||
| 79 | - Failing flash chip on that ESP32-S3 board | ||
| 80 | - Swap physical boards between UART adapters to isolate | ||
| 81 | 4. **Integration test WiFi stability** — `test-multi-mint-*` targets fail on early steps because WiFi disconnects during 30s probe wait. Fix: `_connect-b-if-needed` should run before each curl call | ||
| 82 | 5. **Display AXS15231B `ESP_ERR_NO_MEM`** — SPI flush fails every ~1s (307KB PSRAM framebuffer). The `display_enabled` config field allows disabling, but proper fix needs: | ||
| 83 | - Reduce framebuffer (partial refresh instead of full-screen) | ||
| 84 | - Or use SPI DMA with larger chunk sizes | ||
| 85 | 6. **Health probe recovery threshold** — 3 consecutive successes × 300s interval = 15min before a mint is marked reachable. Consider reducing `MINT_HEALTH_RECOVERY_THRESHOLD` to 1 for initial probes | ||
| 86 | 7. **Makefile WPA auto-detect** — `detect-wpa-security` + `generate-spiffs` + `flash-spiffs-{a,b,c}` targets added to `physical-router-test-automation/esp32/Makefile`. Needs separate commit/merge there | ||
| 87 | |||
| 88 | ## Backup Branch Names | ||
| 89 | | Branch | Purpose | Created At | | ||
| 90 | |--------|---------|------------| | ||
| 91 | | `backup/multi-mint-support-pre-rebase` | Full history before rebase | Before `git rebase master` | | ||
| 92 | | `backup/multi-mint-support-rebased` | All 20 commits after rebase | After `git rebase master` | | ||