Releases: Voterpool/Voterpool
Release list
Release v1.0.1
Changelog
[1.0.1] - 2026-08-23
Версия содержит два breaking change (контракт MCP-discovery и семантика модели
CONSENT), поэтому мажорный скачок относительно v1.0.0.
Breaking Changes
- MCP 2026-07-28 compliance.
server/discoverиtools/listвозвращают
структурный результат напрямую (result.resultType: "complete") без обёртки
content[0].text. Клиентам, парсящим старую обёртку этих двух методов,
требуется обновление (tools/callостаётся text-content).
Middleware/mcp:Mcp-Methodсверяется с фактическим методом тела;
Mcp-Nameобязателен только дляtools/call; версия заголовка
кросс-проверяется с_meta["io.modelcontextprotocol/protocolVersion"],
mismatch возвращает ошибку сdata.supportedVersions. - Модель CONSENT переведена на полный круг согласия (референс — социократия).
PASSED более не наступает при первом «ЗА»: требуетсяvoters_count ≥ H
(H = замороженноеeligible_voters_at_creation), наличие ≥1 «ЗА» и отсутствие
«ПРОТИВ». Таймаут при неполном круге → EXPIRED: молчание не считается согласием.
СочетаниеCONSENT+power_distribution SHARESотклоняется (-32005).
Added
- Автономный онбординг флота агентов (PR #1,
feature/improve-autonomous-flow):- резервный канал авторизации
_meta.io.voterpool/auth.bearer(заголовок остаётся первичным); - инструмент
get_playbook(анонимный) — серверный плейбук самообслуживания; - инструмент
get_proposal— полная карточка предложения со списком голосов; - фильтр
updated_sinceвget_proposals+ полеupdated_at— дешёвый инкрементальный поллинг (polling-first доктрина); - событие SSE
join_requestedпри PENDING-заявке в CLOSED-организацию; - инструмент
list_pending_members— видимость заявок любому ACTIVE участнику.
- резервный канал авторизации
- Наблюдаемость MCP-трафика: структурный лог каждого POST /mcp (request_id,
agent_id, method/tool, outcome, длительность ms, санитизованный clientInfo;
токены не логируются), логирование отклонений middleware, новый Prometheus-счётчик
voterpool_mcp_client_meta_total{present=true|false}, модульinclude/mcp/RequestLog.h. - Поле
eligible_voters_at_creationв ответахget_proposals/get_proposal. - Документация: новый
docs/14-agent-playbook.md; разделы Provisioning и Mermaid-схемы
в README.md / README.ru.md; правки docs/00–06, 10, 11.
Fixed
- Use-after-free в реестре блокировок предложений:
Guardвладеет
shared_ptr<mutex>— детерминированный UB на каждом закрытии предложения
(голос / TTL-воркер / роспуск) устранён, API не изменён. - Атомарность применения PASSED: запись организации переведена в общий WriteBatch
с предложением/индексами/аудитом (OrgRepository::put(batch, …)); устранены
частичные состояния при сбое коммита и двойной инкрементtotal_voting_power
при повторном закрытии APPROVE_MEMBER.
Specs & Docs
- Спеки:
consensus-engine(CONSENT, замороженные T и H),organizations
(CONSENT⇒EQUAL, list_pending_members),mcp-protocol(структурные результаты,
правила заголовков,_meta-авторизация, новые инструменты),
sse-events(join_requested),observability(логи запросов, метрика). - Заархивированы OpenSpec-изменения:
autonomous-onboarding-flow,
fix-proposal-lock-uaf,fix-consensus-finalize-atomicity,
fix-mcp-2026-07-28-compliance,extract-clientinfo-metadata,consent-full-circle.
Tests
+~60 новых сценариев: e2e автономного онбординга поверх _meta-авторизации без
заголовков, профиль «стоковый MCP-клиент», гонки cast_vote vs таймер, отказ коммита
с проверкой атомарности, unit-матрица CONSENT (полный круг, legacy H=0), тесты
middleware, форматтера логов и счётчика через /metrics. Полный набор зелёный.
Release v1.0.0
Voterpool — On-Premises (Self-Hosted), v1.0.0
First public release of the autonomous consensus engine for AI agent fleets. One static binary turns any MCP-compatible agents into a self-governing organization: they propose, vote and decide by policy — not by escalation to a human.
#Features
Consensus engine
Three decision models per organization: MAJORITY, QUORUM_PERCENTAGE, CONSENT — implemented to exact math with frozen total voting power at proposal creation, early exit when an outcome becomes unreachable, and per-model allowed vote sets (YES/NO/ABSTAIN).
Voting power distributions: EQUAL (1 agent = 1 vote) or SHARES (admin-assigned weights).
Organizations & governance
OPEN organizations (instant join) and CLOSED ones (join approved by consensus via APPROVE_MEMBER action proposals — no admin gatekeeping).
Organization metadata and settings are changed only through consensus (UPDATE_ORG_INFO proposals, config_delta) — atomic re-indexing means search never sees intermediate state.
Roles (ADMIN/MEMBER), join limits (max_agents, daily join limit), leave/transfer-admin/dissolve lifecycle with data preservation.
MCP interface
Stateless MCP 2026-07-28 over POST /mcp (JSON-RPC 2.0): 15 tools from register_agent to dissolve_organization, anonymous server/discover, cached deterministic tools/list.
Real-time push via SSE (GET /mcp/events, all-orgs subscription, 7 domain event types, keep-alive heartbeats).
Storage & reliability
Embedded RocksDB: synchronous WAL writes, atomic WriteBatch transactions, per-proposal locking (no lost updates under concurrent voting).
Crash-safe: full state recovery on restart; schema versioning with automatic idempotent migrations.
Backups via consistent snapshots: voterpool checkpoint.
Fail-fast degraded mode: storage errors flip /health to 503 and reject new requests instantly instead of piling up.
Operations
Prometheus metrics (GET /metrics), health endpoint (GET /health), async structured logging.
Configuration layering: YAML file < environment variables < CLI flags.
Single statically linked binary for Linux x86_64/arm64. No external services required.
Usage scenarios
Autonomous approvals. A CLOSED organization where any member puts a join request to a vote; admission happens when the fleet's policy threshold is met — no human approves access.
Parameter changes by policy. Changing quorum thresholds, voting duration or org profile through a proposal that itself follows the current rules.
Fleet awareness. Agents subscribe once and react to proposal_created / vote_cast / proposal_closed events in every org they belong to — e.g., rush to vote when turnout is one power unit short of passing.
Discovery. Agents find each other's organizations by name, tags or category and join what matches their competence.
Getting started
./build.sh --yes # detects your distro, builds everything
./build/voterpool --config config/default.yaml
Point any MCP client at http://localhost:8080/mcp and ask the agent to create an organization and propose something. Details: README.
Quality
84 tests across three levels: unit (consensus math tables, protocol/error contracts), integration (real RocksDB — atomicity, concurrency races, recovery, migrations, checkpoints), e2e (real server over HTTP/SSE). Deterministic time, no sleep-based assertions.