Skip to content

Commit a05543d

Browse files
authored
docs: Update roadmap to v2.1.0 for 2026 alignment (#1167)
- Promote CLI tools from backlog to Phase 9.5 - Add vendir migration to high-priority items - Annotate funding window: Phases 3/8/9 outside, Phase 10 Silent Payments inside - Add new phase-9.5-cli-tool.md with Homebrew distribution plan - Update backlog.md to reflect CLI promotion Co-authored-by: csjones <637026+csjones@users.noreply.github.com>
1 parent e1110bf commit a05543d

7 files changed

Lines changed: 83 additions & 12 deletions

File tree

.specify/memory/roadmap.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# swift-secp256k1 Product Roadmap
22

3-
**Version**: v2.0.0
4-
**Last Updated**: 2026-06-05
3+
**Version**: v2.1.0
4+
**Last Updated**: 2026-08-01
55
**Constitution**: [constitution.md](constitution.md)
66

77
---
@@ -33,6 +33,7 @@ Build the most reliable, secure, and developer-friendly Swift secp256k1 library
3333
| **Module-rename migration & version adoption** | Most downstream consumers are stranded on the legacy `secp256k1` product name and old pins (e.g., 0.12.2, 0.18.0, 0.19.0). Primitives added only to `P256K` cannot reach them. Provide a migration path / compatibility story so new APIs are actually adoptable — the single highest adoption lever. | 🔜 Planned |
3434
| **swift-crypto 4.2.0 Update** | Update vendored swift-crypto via subtree plugin from 3.11.1 to 4.2.0. Resolve breaking availability attribute changes in `Sources/Shared/` on a case-by-case basis (e.g., `UInt256.swift` retains current attributes due to `StaticBigInt` dependency). | 🔜 Planned |
3535
| **UInt256 SecurityTests** | Add security test vectors for `UInt256`/`SIMDWordsInteger` to `Projects/Sources/SecurityTests/`: overflow detection, boundary correctness, power-of-two multiply paths, Codable parsing hardening. _(The `SecurityTests` target exists with DER/InvalidCurve/PointValidation/ScalarValidation/SignatureMalleability/ZeroSignature/Nonce coverage; UInt256 vectors are still absent.)_ | 🔜 Planned |
36+
| **Vendir migration** | Adopt vendir-driven vendoring (the pattern proven in swift-openssl), retiring `subtree.yaml`, the subtree CLI/plugin workflows, and most Dependabot configuration. Scheduled in Q1 of the 2026 funding window (shared 2026 roadmap). | 🔜 Planned |
3637

3738
---
3839

@@ -73,10 +74,13 @@ Phases are **theme-based capability slices**, ordered by **downstream-consumer r
7374
| **🟡 Next** | 7 | [HD-Wallet & Key Derivation](roadmap/phase-7-hd-wallet-derivation.md) | ★★★★☆ wallets, Nostr (NIP-06), Cashu | 🔜 Planned |
7475
| | 8 | [Blind Signatures & DLEQ](roadmap/phase-8-blind-signatures-dleq.md) | ★★★☆☆ Cashu | 🔜 Planned |
7576
| | 9 | [Applications / L2 Showcase](roadmap/phase-9-applications.md) | demo / reference | 🔜 Planned |
77+
| | 9.5 | [Command-Line Tool](roadmap/phase-9.5-cli-tool.md) | ★★★☆☆ developers, scripting/CI | 🔜 Planned |
7678
| **⚪ Later** | 10 | [secp256k1-Native Protocols](roadmap/phase-10-native-protocols.md) | ★★★☆☆ Bitcoin advanced | 📋 Future |
7779
| | 11 | [Forward-looking Signatures](roadmap/phase-11-forward-looking-signatures.md) | ★★☆☆☆ future | 📋 Future |
7880
| **** || [Backlog](roadmap/backlog.md) || 📋 Future |
7981

82+
_Funding note (2026-08-01):_ Phases 3, 8, and 9 sit outside the current 2026 funding window; Phase 9.5 (Q5) and Phase 10's Silent Payments (Q1) are scheduled inside it, per the shared 2026 outreach roadmap.
83+
8084
### Phase Summaries
8185

8286
- **Phase 0 — Tooling Foundation** ✅ — SPM pre-build plugin sharing code between P256K and ZKP targets from one source.
@@ -89,9 +93,10 @@ Phases are **theme-based capability slices**, ordered by **downstream-consumer r
8993
- **Phase 7 — HD-Wallet & Key Derivation** — BIP-32 CKD + xpub/xprv serialization, BIP-39 (PBKDF2-SHA512 + wordlist), HASH160/RIPEMD-160 (low). Depends on Phase 5.
9094
- **Phase 8 — Blind Signatures & DLEQ** — Cashu BDHKE (hash-to-curve, DST `Secp256k1_HashToCurve_Cashu_`) + NUT-12 DLEQ. Re-verify constants before implementing.
9195
- **Phase 9 — Applications / L2 Showcase** — MuSig2 SwiftUI app re-aimed at L2 (ARK/Cube covenant signing, Lightning PTLC) + NIP-19 / BIP-137 samples.
96+
- **Phase 9.5 — Command-Line Tool** — key generation, signing, verification, and address/npub encoding in the terminal; Homebrew distribution. Promoted from the backlog for the 2026 funding window.
9297
- **Phase 10 — secp256k1-Native Protocols** — Silent Payments (BIP-352), ellswift / BIP-324 v2 transport.
9398
- **Phase 11 — Forward-looking Signatures** — FROST threshold (draft), Schnorr half-aggregation.
94-
- **Backlog** — Data structures (Bloom/Golomb/Merkle), CLI apps, niche primitives, Windows support.
99+
- **Backlog** — Data structures (Bloom/Golomb/Merkle), niche primitives, Windows support.
95100

96101
---
97102

@@ -133,6 +138,7 @@ Priorities are informed by how downstream apps and libraries actually use the pa
133138
- **Phase 5 (SHA-2 Tower)** enables **Phase 7 (HD-Wallet)** (HMAC-SHA512/PBKDF2) and feeds **Phase 8 (DLEQ uses SHA-256)**.
134139
- **Phase 4 (Encodings)** feeds **Phase 7** (Base58Check for xpub/xprv) and **Phase 9** (address/invoice display).
135140
- **Phase 6 (Adaptor sigs)** enables **Phase 9** (PTLC demo) and the L2 strategy.
141+
- **Phase 9.5 (CLI)** depends on **Phase 4** (address/npub encodings); MuSig2 ceremony mode rides shipped MuSig2.
136142
- **Phase 2 (CI)** + **Phase 3 (Docs)** are continuous enabler tracks that overlap everything.
137143
- **Zone-D primitives** (ChaCha20, scrypt, AES, SHA-3) are **not** roadmap items — they come from swift-openssl (see Package Separation).
138144

@@ -167,3 +173,4 @@ Priorities are informed by how downstream apps and libraries actually use the pa
167173
| v1.7.0 | 2026-06-05 | Researched | Deep-research pass 1 (Bitcoin/L2): EC-signature layer confirmed complete; corrected 3 errors (adaptor sigs vendored-C-only; Sphinx = HMAC-SHA256 not HKDF; tagged-hash partial) |
168174
| v1.8.0 | 2026-06-05 | Researched | Deep-research pass 2 (Nostr/Cashu): NIP-44 exact construction, NIP-19 Bech32/TLV, Cashu BDHKE + NUT-12 DLEQ; corrected NIP-44 to bare ChaCha20 (not Poly1305 AEAD) |
169175
| **v2.0.0** | **2026-06-05** | **Restructured** | Re-architected into **12 demand-ordered, theme-based phases on Now/Next/Later horizons** (RICE/WSJF by downstream reach); added the centralized **Package Separation (swift-secp256k1 ↔ swift-openssl)** section (Zone A–D + priority/fallback rule); promoted ZKP-tier / BDHKE / Silent-Payments / ellswift / BIP-32-serialization from backlog to first-class phases; **folded the standalone `downstream-demand.md` + `foundational-toolkit-research.md` into this fileset (distilled) and removed them**; resolved ChaCha20 → sourced from swift-openssl (NIP-44 = composition) |
176+
| **v2.1.0** | **2026-08-01** | **MINOR** | 2026 funding-round alignment (shared 2026 outreach roadmap): promoted the CLI from backlog to **Phase 9.5** (scheduled Q5); added the **vendir migration** high-priority item (Q1); funding-window annotations — Phases 3/8/9 outside, Phase 10 Silent Payments pulled in (Q1) |

.specify/memory/roadmap/backlog.md

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,7 @@ General-purpose structures supporting specific BIPs (in-repo vs recommend-extern
4242

4343
## Deferred applications (CLIs)
4444

45-
Complement the Phase 9 SwiftUI app:
46-
47-
| App | Notes | Priority |
48-
|-----|-------|----------|
49-
| MuSig2 CLI | Command-line ceremony for scripting | Medium |
50-
| Address Generator | Key → address (Phase 4 Bech32) | Medium |
51-
| ECDSA Signing CLI | Basic signing/verification | Low |
52-
| Schnorr Verifier | Standalone verification utility | Low |
45+
**Promoted 2026-08-01**: the CLI tools (MuSig2 CLI, address generator, ECDSA signing CLI, Schnorr verifier) were promoted from this backlog to **Phase 9.5 — Command-Line Tool** for the 2026 funding window (Q5 of the shared 2026 roadmap). See [phase-9.5-cli-tool.md](phase-9.5-cli-tool.md).
5346

5447
---
5548

.specify/memory/roadmap/phase-10-native-protocols.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
**Goal**: secp256k1-native protocol-level capabilities that are pure EC but go beyond single primitives
44
**Horizon**: ⚪ Later
55
**Status**: 📋 Future
6+
**Funding**: Silent Payments pulled into the 2026 funding window (Q1 of the shared 2026 roadmap); ellswift / BIP-324 transport remains ⚪ Later
67
**Reach**: ★★★☆☆ — Bitcoin advanced
78
**Depends On**: Phase 4 (encodings), EC ops (shipped)
89
**Last Updated**: 2026-06-05

.specify/memory/roadmap/phase-3-documentation-dx.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
**Goal**: Enable adoption through comprehensive documentation, tutorials, and improved API ergonomics
44
**Horizon**: 🔵 Now (continuous enabler)
55
**Status**: 🚧 In Progress
6+
**Funding**: Outside the 2026 funding window (ongoing, unfunded)
67
**Last Updated**: 2026-06-05
78
**Depends On**: Phase 2 (CI & Quality Gates) — can partially overlap
89
**Blocks**: Phase 9 (apps need documented APIs)

.specify/memory/roadmap/phase-8-blind-signatures-dleq.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
**Goal**: Cashu's blind Diffie-Hellman key exchange (BDHKE) and NUT-12 discrete-log-equality proofs — secp256k1-native, for the ecash cohort
44
**Horizon**: 🟡 Next
55
**Status**: 🔜 Planned
6+
**Funding**: Outside the 2026 funding window
67
**Reach**: ★★★☆☆ — Cashu (CashuSwift, macadamia, bitpoints, nutsack, CashuKit); every lib reimplements BDHKE
78
**Depends On**: SHA-256 + point ops (shipped); hash-to-curve
89
**Last Updated**: 2026-06-05

.specify/memory/roadmap/phase-9-applications.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
**Goal**: Demonstrate the library through Bitcoin-Layer-2-focused apps and reference samples that double as integration tests
44
**Horizon**: 🟡 Next
55
**Status**: 🔜 Planned
6+
**Funding**: Outside the 2026 funding window
67
**Reach**: demo / reference (reduces the "everyone hand-rolls it" tax)
78
**Depends On**: Phase 6 (adaptor sigs), Phase 4 (encodings)
89
**Last Updated**: 2026-06-05
@@ -53,7 +54,7 @@ The things consumers currently hand-roll — each a small, copy-pasteable sample
5354

5455
## Backlog (future apps)
5556

56-
CLI tools deferred to [backlog.md](backlog.md): MuSig2 CLI, ECDSA signing CLI, Schnorr verifier, address generator.
57+
CLI tools: **promoted to [Phase 9.5](phase-9.5-cli-tool.md)** (2026-08-01, 2026 funding window).
5758

5859
---
5960

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Phase 9.5: Command-Line Tool
2+
3+
**Goal**: Scriptable terminal access to the package's primitives and encodings, distributed via Homebrew
4+
**Horizon**: 🟡 Next
5+
**Status**: 🔜 Planned
6+
**Reach**: ★★★☆☆ — developers, scripting/CI
7+
**Depends On**: Phase 4 (encodings — address/npub output); Phase 6 optional (adaptor ceremonies)
8+
**Funding**: Inside the 2026 funding window — Q5 (months 13–15) of the shared 2026 roadmap
9+
**Last Updated**: 2026-08-01
10+
11+
Promoted from the [backlog](backlog.md) on 2026-08-01: the deferred CLI apps (MuSig2 CLI, address generator, ECDSA signing CLI, Schnorr verifier) merge into one executable. Scheduled in the 2026 funding round as scriptable access for developers and a low-friction demo surface for the encodings and primitives shipped in year one.
12+
13+
---
14+
15+
## Features
16+
17+
### Core CLI
18+
19+
**Purpose & User Value**: Key generation, signing (ECDSA + Schnorr), verification, and address/npub encoding from the terminal — scriptable access without writing Swift.
20+
21+
**Success Metrics**:
22+
- One CLI executable with keygen / sign / verify / encode subcommands
23+
- Address and npub output matches the Phase 4 encoding vectors
24+
- Zero runtime dependencies maintained (Constitution)
25+
26+
### MuSig2 Ceremony Mode
27+
28+
**Purpose & User Value**: Command-line MuSig2 ceremony for scripting (the backlog's medium-priority item): key aggregation, nonce exchange, partial signing, aggregation.
29+
30+
**Success Metrics**:
31+
- Ceremony state export/import between steps, so scripts can drive each stage
32+
- Matches the existing MuSig2 test vectors
33+
34+
### Homebrew Formula
35+
36+
**Purpose & User Value**: `brew install` distribution — the demo surface for the year's shipped primitives.
37+
38+
**Success Metrics**:
39+
- Formula published in a tap; `brew install` produces a working binary on macOS
40+
- Versioned releases track package tags
41+
42+
---
43+
44+
## Phase Dependencies & Sequencing
45+
46+
1. **Core CLI** — after Phase 4 encodings (address/npub output)
47+
2. **MuSig2 ceremony mode** — rides shipped MuSig2; adaptor flows optional after Phase 6
48+
3. **Homebrew formula** — with the first tagged CLI release
49+
50+
---
51+
52+
## Phase-Specific Metrics
53+
54+
| Metric | Target |
55+
|--------|--------|
56+
| Homebrew install → working binary | Pass on macOS |
57+
| Encoding output vs Phase 4 vectors | 100% match |
58+
| External dependencies added | 0 |
59+
60+
---
61+
62+
## Risks & Mitigations
63+
64+
| Risk | Impact | Mitigation |
65+
|------|--------|------------|
66+
| Key material on a CLI | Misuse for real funds | Clear warnings; documented test-usage patterns (Constitution III) |
67+
| Scope creep into wallet territory | Delay | Primitives + encodings only; no chain or wallet logic |

0 commit comments

Comments
 (0)