upleb.uk

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

summaryrefslogtreecommitdiff
path: root/REMAINING_PLAN.md
diff options
context:
space:
mode:
authorYour Name <you@example.com>2026-05-23 22:09:57 +0530
committerYour Name <you@example.com>2026-05-23 22:09:57 +0530
commitbf8e095b94fe500a9c35d7f2f616eb85569dbe5e (patch)
treec6bb9a2b11d20aff855cc324f1c3d60751629d1f /REMAINING_PLAN.md
parentaec549f83d5084aa9fd16c00e1c09e06ac7471d4 (diff)
Phase 10a v1.2.0: MIT license, metadata update, full API docs
- Bump idf_component.yml to v1.2.0 with MIT license, targets, tags - Add LICENSE (MIT) for IDF Component Registry compatibility - Update CHANGELOG.md with v1.2.0 entries (portal, stratum_client, mint_health, client) - Update README.md with all 13 modules documented, API reference table - Add REMAINING_PLAN.md with full execution plan and checklist - 25 unit tests pass, ESP-IDF build passes
Diffstat (limited to 'REMAINING_PLAN.md')
-rw-r--r--REMAINING_PLAN.md97
1 files changed, 97 insertions, 0 deletions
diff --git a/REMAINING_PLAN.md b/REMAINING_PLAN.md
new file mode 100644
index 0000000..74ae353
--- /dev/null
+++ b/REMAINING_PLAN.md
@@ -0,0 +1,97 @@
1# TollGate Core — Remaining Execution Plan
2
3**Branch:** `feature/tollgate-core-v2`
4**Created:** 2026-05-23
5**Goal:** Complete all remaining extraction, integration, CI/CD, and publishing steps.
6
7---
8
9## Checklist
10
11### Phase A: Version bump + metadata
12- [ ] A1. Bump `idf_component.yml` to v1.2.0, add MIT license, targets, tags
13- [ ] A2. Create `LICENSE` file (MIT) in `components/tollgate_core/`
14- [ ] A3. Update `CHANGELOG.md` with v1.2.0 entries
15- [ ] A4. Update `README.md` to document all 13 modules
16- [ ] A5. Run `make test-unit` + `idf.py build`
17- [ ] A6. Commit + push
18
19### Phase B: Re-sync component to NerdQAxePlus
20- [ ] B1. Copy 4 new source pairs + updated files to NerdQAxePlus
21- [ ] B2. Verify `TOLLGATE=1 BOARD=NERDQAXEPLUS idf.py build`
22- [ ] B3. Commit + push to NerdQAxePlus develop
23
24### Phase C: Full wallet integration on NerdQAxePlus (Phase 9c)
25- [ ] C1. Copy `nucula_lib/` component and `nucula_src/` submodule to NerdQAxePlus
26- [ ] C2. Update NerdQAxePlus top-level CMakeLists to REQUIRES `nucula_lib`
27- [ ] C3. Replace `spend_proofs` stub with `nucula_wallet_receive()`
28- [ ] C4. Add `nucula_wallet_init(mint_url)` to `tollgate_nerdqaxe_init()`
29- [ ] C5. Wire `get_hashrate` to actual ASIC stats
30- [ ] C6. Wire `on_share_accepted` to real share tracking
31- [ ] C7. Verify build
32- [ ] C8. Commit + push
33
34### Phase D: NerdQAxePlus UI integration (Phase 9d)
35- [ ] D1. Add POST `/api/tollgate/pay` endpoint accepting Cashu tokens
36- [ ] D2. Add minimal captive portal HTML page
37- [ ] D3. Add GET `/api/tollgate/wallet` and POST `/api/tollgate/wallet/send` endpoints
38- [ ] D4. Update portal screen: wallet balance, session count, payment QR
39- [ ] D5. Add session status to mining screen
40- [ ] D6. Verify build, flash, test payment flow
41- [ ] D7. Commit + push
42
43### Phase E: Ansible CI/CD workflow (Phase 10b)
44- [ ] E1. Create ansible role `ci_runner` with tasks for Docker + ESP-IDF
45- [ ] E2. Create Python nostr relay listener script
46- [ ] E3. Create systemd service unit for listener
47- [ ] E4. Create ansible playbook `20-ci-runner.yml`
48- [ ] E5. Create ansible playbook for localhost hardware runner
49- [ ] E6. Test ansible deployment
50
51### Phase F: Publish to IDF Component Registry (Phase 10c)
52- [ ] F1. Create `docs/PUBLISHING.md` with step-by-step upload instructions
53- [ ] F2. Run `compote registry login` (manual — requires browser OAuth)
54- [ ] F3. Run `compote component upload --dry-run` to validate
55- [ ] F4. Run `compote component upload` to publish v1.2.0
56- [ ] F5. Verify with clean test project
57- [ ] F6. Commit + push updated metadata
58
59### Phase G: Hardware smoke test
60- [ ] G1. Flash Board A with updated firmware
61- [ ] G2. Run `TOLLGATE_IP=10.185.47.1 BOARD=a make test-smoke`
62- [ ] G3. Commit any fixes
63
64---
65
66## Execution Order
67
68```
69A → G → B → C → D → E → F
70```
71
72Phase A is quick metadata updates. G verifies on hardware. B syncs to NerdQAxePlus.
73C adds the wallet. D adds the UI. E sets up CI/CD. F publishes.
74
75---
76
77## Architecture Notes
78
79### CI/CD Design
80- **Runner:** Docker container using `espressif/idf:latest` image
81- **Trigger:** Python WebSocket client subscribed to `wss://ngit.orangesync.tech`
82 for NIP-34 git state events (kind 30617)
83- **Pipeline:** clone from GRASP → `idf.py build` → `make test-unit` → report
84- **Hardware tests:** Run on localhost (dev machine) where boards are connected
85- **Reporting:** Build status posted as nostr badge event (kind 1985)
86
87### Wallet Integration Design
88- `nucula_lib` provides C API: `nucula_wallet_init()`, `nucula_wallet_receive()`, `nucula_wallet_send()`, `nucula_wallet_balance()`
89- `spend_proofs` callback in `tollgate_platform_t` maps directly to `nucula_wallet_receive()`
90- Wallet proofs persisted to NVS automatically by nucula
91- `libsecp256k1` already compiled in NerdQAxePlus build with Schnorr + Extrakeys modules
92
93### Component Registry
94- License: MIT (required for upload)
95- Namespace: GitHub username (auto-created on first login)
96- Version immutability: once uploaded, cannot overwrite — must bump version
97- `compote` CLI installed at `~/.local/bin/compote` (v3.0.2)