0.2.1 (2026-01-09)
- add container broker to platform-server (4772327)
- add tempo fetching from Bittensor chain (e455e29)
- add WsContainerClient for WebSocket broker access (58c8618)
- auto-generate random BROKER_JWT_SECRET if not provided (d7be22b)
- auto-pull images in broker when creating containers (f0ef63d)
- broker: add image build support via Build command (6da49e2)
- CI publish HTML test coverage report to GitHub Pages (299d25a)
- CI publish HTML test coverage report to GitHub Pages (1155c72)
- Docker-in-Docker support with named volumes and CopyFrom/CopyTo protocol (e56a639)
- enable debug logging for challenges and broker (1db95e6)
- Improve auto-updater coverage and fix CI coverage command (d9183f2)
- Improve auto-updater coverage and fix CI coverage command (19a6e0d)
- remove image whitelist by default, allow all public images (0d30bfa)
- validator metrics reporting (CPU/RAM) with 5s interval and in-memory cache (f06e67d)
- add PLATFORM_PUBLIC_URL to validator docker-compose (c70f755)
- consensus: improve test accuracy for zero-stake scenarios (de9d492)
- default PLATFORM_PUBLIC_URL to chain.platform.network (a980e47)
- export VALIDATOR_HOTKEY and VALIDATOR_SECRET_KEY as env vars (eb3065c)
- handle auth message even when JWT validation is disabled (19e9d1f)
- increase broker JWT TTL to 10 years to prevent ExpiredSignature errors (94682da)
- increase container limits and add startup cleanup (9387864)
- integer overflow in calculation (138fbf9)
- integer overflow in calculation (534c7f9)
- pass CHALLENGE_UUID env var for broker authentication (d88bfe5)
- remove restrictive cap_drop from container broker, add user field (372641c)
- reorder validator routes - static paths before :hotkey parameter (6ffb7ca)
- update tests to use strict() policy for image whitelist tests (fb63e63)
- use actual hostname as fallback for broker URL (351b657)
- use challenge name (not UUID) for JWT token generation (8ecab04)
- consensus: address code review feedback (10a5394)
- update README to reflect centralized architecture (4bc8313)
- auto-updater: add helper-backed coverage tests (f572dd8)
- broaden platform-bittensor coverage (add3be8)
- challenge-orchestrator: add env and helper coverage (a97b84e)
- challenge-orchestrator: broaden orchestrator, lifecycle, evaluator, and health coverage (ed67e29)
- challenge-orchestrator: expand config/health/evaluator coverage (3c30e6b)
- challenge-sdk: Add comprehensive test coverage (168d03d)
- challenge-sdk: Add comprehensive test coverage for challenge SDK modules (6dd0d55)
- challenge-sdk: Add database persistence test across reopens (b7a7984)
- challenge-sdk: enhance multi-agent testing in get_latest_results (ddf89c0)
- consensus: add comprehensive test coverage for consensus module (fe39408)
- consensus: comprehensive coverage improvements for platform-consensus (7d96ec8)
- distributed-db: Achieve 97% test coverage across all modules (982c67c)
- distributed-db: Achieve 97% test coverage across all modules (1946fd6)
- distributed-db: consolidate test helpers and fix code review issues (d2dade0)
- epoch: add comprehensive unit tests achieving 95%+ coverage (ceb4984)
- epoch: add comprehensive unit tests achieving 95%+ coverage (4e96e50)
- expand bittensor helper coverage (e6c4950)
- platform-core: Add comprehensive test coverage for core module (446af5a)
- platform-server: add comprehensive unit tests (8ebc662)
- platform-server: add comprehensive unit tests (551a4f4)
- platform-server: improve test quality and reduce duplication (5726879)
- rpc: add comprehensive test suite for platform-rpc module (7cb4a33)
- rpc: add comprehensive test suite for platform-rpc module (55fc570)
- secure-runtime: achieve comprehensive test coverage for container runtime (93459a8)
0.2.0 (2026-01-04)
- Production validators now require the broker by default.
- add --no-bootnode flag and improve bootnode reconnection (c1045a6)
- add bridge API to proxy submissions to term-challenge (85c30da)
- add challenge custom events for WebSocket broadcast (39b0ccf)
- add Custom P2P message type for challenge-specific protocols (00ebeec)
- add docker-compose for bootnode deployment (d0f3f1e)
- Add dynamic route discovery via /.well-known/routes (106681f)
- add infinite retry loop (30s) for platform-server connection in validator-node (d8e28b6)
- add keypair to RpcHandler for webhook P2P broadcast (0f4eb83)
- add P2P message forwarding to challenge containers (8abeda7)
- add periodic cleanup of stale task containers (4b26cf4)
- add periodic validator sync to challenge containers (cff55d7)
- add persistent data volume for challenge containers (1b5463b)
- add platform-server (central API) with PostgreSQL, Data API, Claim/Lease (6bd057d)
- add secure-container-runtime crate with powerful helpers (38862c4)
- Add Sentry error monitoring (enabled by default) (fdd0f65)
- add verbose logging option to docker-compose.server.yml (57e17e6)
- add WebSocket event listener for distributed evaluation (54057fd)
- add WebSocket transport to secure-container-runtime (004f60c)
- authenticated WebSocket + validator whitelist endpoint (f18b74b)
- auto-convert hotkeys to UIDs in weight submission (319f92d)
- auto-create Docker network and connect validator (e8de0ce)
- auto-pull docker images and add refresh challenges command (3b9f9f2)
- Auto-retry bootstrap peer connection every 30 seconds (326b8a6)
- auto-start challenge containers from platform-server registry (4362a3c)
- centralized LLM review with miner API key (39e72c1)
- challenge-sdk: add P2P chain storage module (8bac6e9)
- consensus: Add stake-based governance with bootstrap period (7dc4e3f)
- csudo: complete CLI refactoring with beautiful interactive mode (60b115c)
- Derive libp2p peer ID from validator keypair for stable identity (e64b1c6)
- DEVELOPMENT_MODE support for local Docker images (71a8086)
- emission-based weight distribution with UID 0 burn (169ac1b)
- generic bridge API for multi-challenge support (686c44f)
- Hardcode default bootnode address (9f270af)
- immediate stake validation via identify protocol (d38b39b)
- implement sr25519 signature verification for agent submissions (6fb3820)
- integrate container broker into validator node (1a0592f)
- Major platform improvements and bittensor-rs Subtensor API integration (db6cd10)
- make secure broker the default container backend (e50e1df)
- orchestrator: add ContainerBackend abstraction for secure mode (5e729c9)
- orchestrator: use Docker named volume for persistent challenge data (c1db0ed)
- pass BROADCAST_SECRET to challenge containers (a5d7505)
- pass VERBOSE env var to challenge containers for debug logging (2c6cb55)
- platform-server: dynamic challenge orchestration (55686f0)
- real sr25519 signatures + binary evaluation in Docker (353aff3)
- sdk: add P2P messages for real-time progress sharing (b524581)
- security: add stake-weighted PBFT, merkle sync verification, and hotkey rate limiting (27353a0)
- security: implement authenticated P2P communication with challenge containers (5e48ea2)
- sentry: improve error tracking with hotkey context (1039741)
- server: add submissions and evaluations API routes (88e9d4a)
- sr25519 crypto + Docker image whitelist security (b723820)
- state: add versioned state serialization with automatic migration (1fe787b)
- storage: add anti-corruption protections for RocksDB (f45d41c)
- sync metagraph at startup for validator stake lookup (c155fe4)
- unified platform binary with server/validator modes (5036425)
- validate miner_hotkey is SS58 format in /submit endpoint (972161d)
- validator-node: authenticate WebSocket connection with signature (5934e7d)
- validator-node: handle ChallengeStopped WebSocket event (f3d52d0)
- validator: integrate with platform-server for centralized weights (1c5b77a)
- validator: sync validators to challenge containers on startup (94f72c5)
- weights: Add CRv4 timelock encryption support (475126d)
- weights: add persistence for commit-reveal state (53dd4dd)
- add 30s delay before crash exit to allow Watchtower updates (1635a16)
- add bootnode retry timer to validator event loop (007b920)
- add bridge routes to unified platform binary (ce04921)
- add cache bind mount for Docker-in-Docker path mapping (107b064)
- add challenge to ChainState when receiving P2P Proposal (0ab4c2e)
- add DNS servers to docker-compose.server.yml (ef47913)
- add eval logs bind mount for Docker-in-Docker (1b29e3d)
- add events/broadcast route to platform bin + secure with BROADCAST_SECRET (ebb468f)
- add logging for P2P outbox message processing (aef5359)
- Add peer ID to bootstrap peer address (2be994d)
- add whitelist route and metagraph sync to platform bin server mode (c09cd79)
- allow all ghcr.io/platformnetwork/ images in agent runner whitelist (9ed64b3)
- allow custom DATABASE_URL (Supabase, etc.) (f543705)
- auto-detect validator network for challenge containers (5bf156f)
- auto-recover from corrupted distributed-db and state (332f75d)
- bittensor: update to bittensor-rs f79759e with DRAND fix (11cfe4a)
- broadcast ChallengeStarted event to validators (9047616)
- broadcast ChallengeStopped event to validators in platform bin server (b99e43d)
- challenge-sdk: fix consensus test math (8aa071f)
- change stale container cleanup to 2 hours (8f4592d)
- ci: move -E filter before -- in cargo llvm-cov nextest (c91e830)
- ci: properly use cargo cache across jobs (14bc231)
- ci: separate cache keys for release and debug builds (a2149e4)
- clippy warnings and add mandatory CI hooks (9a9c395)
- clippy: resolve all clippy warnings for CI (e8829bd)
- connect validator container to platform-network on startup (41d9d8b)
- consensus: correct test expectations for 33% default threshold (d621eb8)
- consensus: improve P2P mesh stability and reduce quorum threshold (34f65a0)
- correct netuid_index calculation and salt serialization (c2ba34b)
- correct sled corruption recovery to remove actual db files (00df049)
- db: strip trailing database name from URL (19d4298)
- Derive peer ID from hotkey (public key) not seed (39f578d)
- docker: add clang/libclang-dev for zstd-sys bindgen (650d5f7)
- docker: default to validator-node for backward compatibility (4d6f210)
- docker: use ubuntu:24.04 for glibc 2.39 compatibility (af00fac)
- don't cleanup challenge containers with different suffixes (f433704)
- force exact network name 'platform-network' (27071de)
- gossipsub: resolve empty mesh issue by removing add_explicit_peer calls (375ce2e)
- implement targeted P2P send (broadcasts to all) (121d5f0)
- include challenge_configs in chain_getState RPC response (00690e7)
- migrate remaining ed25519 to sr25519 + add mandatory CI hooks (65bd1e8)
- network: add mesh repair mechanism for gossipsub (bad9b34)
- network: add mesh repair mechanism for gossipsub (b171ff4)
- network: handle gossipsub Subscribed event for proper mesh membership (f8efbd6)
- network: improve gossipsub mesh stability for bootnodes (381ae26)
- orchestrator: pass PORT=8080 env var to challenge containers (ab4782e)
- Pass bootstrap-peer argument directly in docker-compose (d3ac865)
- pass real challenge config values in ChallengeStarted event (06dc544)
- pass VALIDATOR_SECRET_KEY to challenge containers (44e1dce)
- populate registered_hotkeys from metagraph sync (aff29f3)
- remove obsolete version from docker-compose.bootnode.yml (3ba56f2)
- resolve CI lint and clippy warnings (c470b4c)
- reveal mechanism weights when internal epoch manager detects reveal phase (3291318)
- skip stake validation in no-bittensor mode for PeerIdentified event (f6ff0a2)
- trigger commit/reveal on Subtensor timing windows in tests (fa85fea)
- Update bittensor-rs to 3fc7ab5 and export sync_metagraph (c328831)
- Update bittensor-rs to a1a4558 and fix clippy warnings (b9bc10c)
- Update bittensor-rs to db10a19 - fix commit-reveal detection (80f10e5)
- update challenge endpoints for P2P and dev mode containers (9ee7c7a)
- update coverage badge generation to use peaceiris/actions-gh-pages (347daba)
- update release-please config for workspace (c6ff25c)
- use challenge name (not UUID) for CHALLENGE_ID env var (b5bd205)
- use container ID for challenge container naming suffix (39e4724)
- use container name for challenge endpoint instead of 127.0.0.1 (f04d4fa)
- use correct salt type for reveal_weights (41e0a05)
- use effective stake (alpha + root) for validator validation (cb30a93)
- use orchestrator endpoint instead of hardcoded URL for challenge containers (bd4c349)
- use PLATFORM_PUBLIC_URL for validator challenge containers (7ce3b24)
- Use proper Substrate SR25519 derivation for peer ID (95321e5)
- use real container endpoints for P2P outbox polling (ae9250d)
- use simple release type for workspace (60c3078)
- use simple release type with manifest config (ba79252)
- use stake_weight for validator stake validation (be15cdc)
- use stored endpoints for challenge container URLs (2adda1a)
- use total_stake from runtime API for validator stake validation (dcb389c)
- use u16 for NetUidStorageIndex in hash computation (c8a392e)
- use u16 salt directly for reveal_mechanism_weights (72f3806)
- validator uses Subtensor.set_mechanism_weights() for CRv4 (eda164e)
- validator uses Subtensor.set_mechanism_weights() for CRv4 (3e0b1e5)
- validator: change default RPC port from 8545 to 8080 (c610dde)
- validator: check sudo/owner FIRST before any stake validation (81524af)
- validator: use correct container name with validator suffix for challenge endpoints (c6137eb)
- warn when validator cannot join platform network (3c1bdde)
- ci: optimize caching for Rust builds and Docker images (52fb82b)
- clean dead code in evaluator, increase proxy timeout (cbffb81)
- event-driven commit/reveal from Bittensor timing (4d3f0ff)
- migrate from ed25519 to sr25519 for Substrate/Bittensor compatibility (dbf722e)
- remove anti-cheat weight manipulation for pure pass-through (63ed510)
- remove P2P networking, centralized architecture only (66477bd)
- remove P2P networking, centralized architecture only (9ef71a6)
- Remove redundant weights_v2.rs, use bittensor_rs::Subtensor directly (5317b8d)
- remove term-challenge specific code from validator-node (a4713e9)
- Replace WeightSubmitter with bittensor_rs::Subtensor (1b55113)
- simplify WeightAssignment to hotkey + weight only (56ccd21)
- add badges and repobeats analytics to README (5c2a3bb)
- add banner image to README (2a89445)
- add hardware requirements section (4 vCPU, 16GB RAM minimum) (e1ffadb)
- add network requirements (port 9000/tcp) (a0fee78)
- comprehensive README with incentive mechanism and validator guide (b85812f)
- improve README formatting and clarify aggregation method (31ab5bc)
- improve README formatting and clarify aggregation method (ccc90f0)
- move description before badges (4c6c3fc)
- move repobeats after badges, update rust to 1.90+ (491f255)
- remove Validator Utility Maximization section from README (fef431a)
- simplify README - remove weight capping, commit-reveal, and agent terminology (8897501)
- update storage requirements (250GB min, 500GB recommended) (43b6805)
- validator: simplify guide - no GPU, no third-party APIs needed (79a1e97)
- add git hooks for format and CI checks (b42dfc8)
- add MIT license file (7fd5106)
- update bittensor-rs to 453ce56 (proper SCALE decoding) (56f99f9)
- update Rust to 1.92 (latest stable) (ca22249)
- add automatic versioning with release-please (80070f7)
- add code coverage badge with cargo-llvm-cov (7b22a73)
- docker push only after build/clippy/test pass (616dfac)
- optimize CI with nextest, better caching, and parallel jobs (6155af8)
- optimize with fully parallel jobs (360c14c)
- optimize workflow with disk cleanup and rust-cache (4bd7164)
- restore parallel jobs with proper cache dependencies (11d25b0)
- round coverage to whole number (35bc17e)
- use platform-runner label (7080d56)
- use self-hosted runners (63c1e86)