- Establish repository
- Choose Rust for core implementation
- Define PoARM research objective
- Choose UTXO direction
- Establish deterministic encoding skeleton
- Establish protocol test-vector format
- Draft P2P architecture
- Draft cryptography/addressing requirements
- Draft difficulty-adjustment requirements
- Prepare Android ARM64 integration direction
- Freeze transaction serialization
- Freeze block serialization
- Define provisional chain-selection laboratory rule
- Define difficulty adjustment
- Define emission schedule
- Define address encoding
- Define genesis rules
- Create Rust workspace
- Implement benchmark harness
- Implement candidate PoARM v0
- Add deterministic unit tests
- Add published cross-platform test vectors
- Implement experimental PoARM candidate variants A/B/C
- Add canonical transaction/block-header hashing helpers
- Benchmark ARM64
- Benchmark x86-64
- Measure memory usage
- Measure sustained performance
- Test multi-core scaling
- Test GPU and ASIC resistance assumptions
- Iterate algorithm
- Begin blockchain data structures
- Provisional deterministic genesis builder
- Provisional mining block builder with coinbase
- Add provisional devnet block builder
- Provisional deterministic genesis
- Final genesis block
- Provisional coinbase/reward validation boundary
- Transaction validation skeleton
- UTXO set skeleton
- Provisional block validation
- Final consensus block validation
- Add provisional cumulative-work scoring
- PoARM header-seed construction
- End-to-end PoARM devnet mining smoke test
- Provisional PoARM mining\n- [ ] Production PoARM mining
- Difficulty-adjustment laboratory model
- Provisional difficulty enforcement
- Final difficulty adjustment
- P2P message serialization skeleton
- Add bounded P2P collection/payload decoding
- P2P networking
- Two-node synchronization integration
- Full canonical block persistence and restart replay recovery
- Add provisional synchronization state and locator
- Add bounded synchronization request planner
- Add persistent canonical-header storage foundation
- Add in-process node engine joining peer, sync, consensus, and header persistence
- Add canonical block storage with persisted PoARM proofs
- Add restart recovery by replaying persisted canonical blocks through consensus
- Wallet key-selection requirements
- Provisional wallet and key handling\n- [ ] Final wallet/key specification
- CLI node and miner
- Define Rust/Android ARM64 preparation path
- Compile Rust core for Android
- Wallet
- Sync
- Mining controls
- Device and network discovery
- Send and receive
- Activity
- Battery and thermal safety controls
The project is now moving toward a short public Testnet phase. Testnet must be a real network with its own chain identity/genesis; it is not a renamed Devnet.
- Public bootstrap infrastructure
- Testnet genesis construction with distinct chain identity
- Explorer
- Test MEMO distribution
- Independent node operation
- Network stress testing
- Adversarial testing
The intended progression is Devnet → short Testnet → Mainnet candidate → Mainnet.
Devnet is no longer the default destination for new architecture work. Testnet is used to expose real multi-node, synchronization, PoARM, persistence, wallet, and adversarial issues. We should not keep adding speculative features to Testnet once its core network behaviour is proven.
Before Mainnet candidate, the remaining blockers are consensus/PoARM finalization, reproducible genesis, real P2P transport, independent node operation, security review, and cross-platform validation.
- Consensus freeze
- Security review
- PoARM finalization
- Genesis reproducibility
- Mainnet client
- Documentation
- Independent validation
Only after the protocol and PoARM assumptions have survived public testing.
Before promoting the protocol to a Mainnet candidate, the current Testnet gate is intentionally narrow: independent nodes must handshake over the transport boundary, synchronize headers then blocks, converge on the same tip/UTXO state, survive durable restart recovery, and reject malformed or divergent persisted data. PoARM must also receive CPU/ARM64 measurements before its production parameters are frozen. This is a gate, not a second feature-development cycle.