Skip to content

Latest commit

 

History

History
301 lines (258 loc) · 38.5 KB

File metadata and controls

301 lines (258 loc) · 38.5 KB

Changelog

0.2.1 (2026-01-09)

Features

  • 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)

Bug Fixes

  • 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)

Code Refactoring

  • consensus: address code review feedback (10a5394)

Documentation

  • update README to reflect centralized architecture (4bc8313)

Miscellaneous

Tests

  • 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)

⚠ BREAKING CHANGES

  • Production validators now require the broker by default.

Features

  • 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)

Bug Fixes

  • 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)

Performance Improvements

  • ci: optimize caching for Rust builds and Docker images (52fb82b)

Code Refactoring

  • 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)

Documentation

  • 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)

Miscellaneous

  • 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)

CI/CD

  • 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)