upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/PLAN_EXECUTION.md
blob: e1f47164295a260f5772b06c4d786b98fa679390 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# Execution Plan — TollGate + NerdQAxePlus Integration

**Created:** 2026-05-28  
**Updated:** 2026-05-28  
**Status:** In Progress — Smoke testing phase

---

## Locked-In Decisions

| Decision | Choice |
|----------|--------|
| esp32-tollgate GitHub repo | `OpenTollGate/tollgate-esp32` |
| esp32-tollgate default branch | `master` |
| NerdQAxePlus GitHub repo | `c03rad0r/ESP-Miner-NerdQAxePlus` |
| NerdQAxePlus branch | `develop` |
| Target boards | Board A + Board B + NerdAxe |
| Board variant | `NERDQAXEPLUS` for dev boards, `NERDAXE` for BM1366 hardware |
| Nostr remotes | `ngit-dev` (relay.ngit.dev) + `gitnostr` (gitnostr.com) |
| Stratum username fallback | Option A: `#ifdef TOLLGATE` uses `CONFIG_STRATUM_USER` |
| Component version | v1.3.0 |
| ASIC-less testing | Safe — TollGate WiFi/payment/portal work without ASIC |
| Upstream WiFi | `EnterSSID-2.4GHz` / `c03rad0r123!` |

## Board Inventory

| Board | Port | MAC | Hardware | Status |
|-------|------|-----|----------|--------|
| A | `/dev/ttyACM1` | `94:a9:90:2e:37:7c` | ESP32-S3 dev | USB flash failing, cable issue |
| B | `/dev/ttyACM0` | `fc:01:2c:c5:50:50` | ESP32-S3 dev | Flashed, needs NVS config + smoke test |
| NerdAxe | `/dev/ttyACM2` | `80:b5:4e:c7:79:88` | BM1366 ASIC (fan-damaged) | Needs flash + smoke test |

**Important:** Ports shift on USB replug. Always verify with `esptool --port <port> chip-id`.

## Current State

| Item | Value |
|------|-------|
| esp32-tollgate `master` | HEAD `10c69b0` (pushed to GitHub + relay.ngit.dev) |
| esp32-tollgate `feature/tollgate-core-v2` | HEAD `8f18b7a` v1.3.0 (pushed to GitHub + relay.ngit.dev) |
| NerdQAxePlus `develop` | HEAD `a2fd1fa6` (9 TollGate commits rebased on upstream, pushed to GitHub) |
| IDF Component Registry | v1.2.0 live, v1.3.0 pending upload |
| Unit tests | 29 tests, all pass |
| orangesync.tech | Entirely offline |

---

## Step 1: Stratum Username Fallback ✅

- [x] 1a-c. Implemented, committed, verified

## Step 2: Add Nostr Remotes (esp32-tollgate) ✅

- [x] 2a-f. `ngit-dev` and `gitnostr` added, pushed to relay.ngit.dev

## Step 3: Add Nostr Remotes (NerdQAxePlus) ✅

- [x] 3a-d. Remotes added, push to nostr deferred (repo too large)

## Step 4: Push esp32-tollgate to GitHub ✅

- [x] 4a-d. Both branches pushed, default set to `master`

## Step 5: Rebase + Push NerdQAxePlus ✅

- [x] 5a-g. 9 TollGate commits rebased onto upstream `4b8f3225`, pushed to GitHub

## Step 6: Bump tollgate_core to v1.3.0 ✅

- [x] 6a-f. Bumped, committed, pushed, rsynced to NerdQAxePlus

## Step 7: Re-publish to IDF Component Registry (PENDING)

- [ ] 7a. `compote component pack --path components/tollgate_core`
- [ ] 7b. `compote component upload --name tollgate_core --namespace c03rad0r`
- [ ] 7c. Verify v1.3.0 on components.espressif.com

## Step 8: Update Docs ✅

- [x] 8a. PLAN_BITAXE_FIXES.md updated with checklist
- [x] 8b. REMOTES.md updated with current state
- [x] 8c. PLAN_EXECUTION.md updated

## Step 9: Build NerdQAxePlus ✅

- [x] 9a. `TOLLGATE=1 BOARD=NERDQAXEPLUS idf.py build` passes
- [x] 9b. `TOLLGATE=1 BOARD=NERDAXE idf.py build` — needs verification for NerdAxe

## Step 10: Flash Boards

- [ ] 10a. **NerdAxe** (`/dev/ttyACM2`, MAC `80:b5:4e:c7:79:88`): Flash with `BOARD=NERDAXE`
- [ ] 10b. **Board B** (`/dev/ttyACM0`, MAC `fc:01:2c:c5:50:50`): Already flashed, needs NVS config
- [ ] 10c. **Board A** (`/dev/ttyACM1`, MAC `94:a9:90:2e:37:7c`): Blocked by USB issue

## Step 11: Configure NVS on NerdAxe

- [ ] 11a. Connect to NerdAxe AP, note IP
- [ ] 11b. `curl -X PATCH http://<IP>/api/system -d '{"ssid":"EnterSSID-2.4GHz","wifiPass":"c03rad0r123!"}'`
- [ ] 11c. `curl -X PATCH http://<IP>/api/system -d '{"stratumUser":"bc1q7n70rumyv6lvu8avpml0c3uggvssfu52egum3q.nerdqaxe"}'`
- [ ] 11d. `curl -X POST http://<IP>/api/system/restart`
- [ ] 11e. Wait for reboot, verify upstream WiFi connection

## Step 12: Smoke Test NerdAxe

- [ ] 12a. AP visible
- [ ] 12b. Connect to AP
- [ ] 12c. Captive portal auto-redirects
- [ ] 12d. Portal page renders (price, mint, form)
- [ ] 12e. Generate token: `cashu -h https://testnut-nutshell.mints.orangesync.tech send --legacy 21`
- [ ] 12f. Submit token → payment accepted
- [ ] 12g. Internet passthrough: `curl -I https://google.com`
- [ ] 12h. `GET /api/tollgate/status`
- [ ] 12i. `GET /api/tollgate/wallet`
- [ ] 12j. `GET /api/tollgate/config`
- [ ] 12k. `POST /api/tollgate/grant`
- [ ] 12l. Disconnect + reconnect → internet blocked
- [ ] 12m. `GET /api/system/info` — check ASIC detection
- [ ] 12n. Serial monitor: check ASIC init output, hashrate

## Step 13: Smoke Test Board B (if time permits)

- [ ] 13a-13n. Repeat Step 12 on Board B

## Step 14: Final Commit + Push

- [ ] 14a. Commit doc updates
- [ ] 14b. Push esp32-tollgate to GitHub + nostr
- [ ] 14c. Push NerdQAxePlus to GitHub

---

## Risks

| Risk | Mitigation |
|------|------------|
| NerdAxe ASIC dead from fan block | TollGate still works ASIC-less; diagnose via serial |
| Test mint down | Skip payment test, test everything else |
| Board doesn't create AP | Check serial monitor |
| `BOARD=NERDAXE` build fails | Use `NERDQAXEPLUS` variant, works ASIC-less |
| `compote` CLI syntax changed | Check `compote --help` before upload |