5.2 KiB
5.2 KiB
OpenSpec Change: network-plugin-governance
- Change ID: network-plugin-governance
- Package:
@suaveplan/network-plugin-governance(new) - Status: PROPOSED
- Type: new-package
- Date: 2026-04-29
Why
The tiered network design requires small groups to nominate a host dynamically. The genesis fsm package provides state machines, retry provides backoff, and events provides the bus — but there is no plugin that orchestrates elections, scores candidates, and manages host transitions. This plugin fills that gap. It consumes latency data from network-plugin-webrtc (via bus), runs elections, and publishes the winner so network-plugin-topology can promote the node to Tier 0.
What changes
- ADDED:
GovernancePluginclass implementingNetworkPlugin. - ADDED:
ElectionEngine— orchestrates election rounds: initiates, collects votes, computes winner, publishes result. - ADDED:
CandidateScorer— weighted multi-criteria scoring: latency (inverse), uptime, bandwidth, and reputation. Reputation decays over time. - ADDED:
VotingManager— collects votes viaNetworkBus, tallies, detects quorum. - ADDED:
VoteSession— encapsulates a single vote round with configurable topics, voting periods, participation thresholds, and consensus requirements. Lifecycle:creation → voting → tallying → result publication. - ADDED:
TransitionManager— host handover lifecycle:idle → preparing → transferring → confirming → completed(orfailed). - ADDED:
HostSelector— historical trust-based scoring system. Evaluates candidates using weighted multi-factor evaluation (latency, stability, uptime, capabilities, trust score). Tracks historical hosting performance viaHostHistoryto improve future selections. Enforces stability thresholds and consensus validation before confirming a host. - ADDED:
HostHistory— append-only record of successful/unsuccessful hosting sessions per peer. Used byHostSelectorto compute trust scores. - ADDED:
ReputationTracker— per-peer reputation with success/failure/violation scoring and configurable decay. - ADDED: Election modes:
metric(score-based),direct(vote tally),hybrid(score + votes). - ADDED:
NETWORK_GOV_CODES— frozen error registry.
Out of scope
- Byzantine fault tolerance beyond simple reputation scoring → future hardening change.
- Cryptographic vote signing → future
network-plugin-governance-crypto. - Global consensus across many groups → each group runs its own election; federation is deferred.
Source mapping
This change derives from ../suaveplan/enterprise/network-governance.md and ../suaveplan/packages/universal/network-governance/.
| Requirement | Source lines | Notes |
|---|---|---|
| Election modes (metric/direct/hybrid) | network-governance/README.md §Election Modes |
verbatim |
| Candidate scoring with weights | network-governance/README.md §Scoring |
verbatim |
| Transition lifecycle FSM | network-governance/README.md §Transition Lifecycle |
reworded; uses @suaveplan/fsm |
| Reputation tracking with decay | network-governance/README.md §Reputation Tracking |
verbatim |
Requirements with no source line
| Requirement | Justification |
|---|---|
Consumes peer:latency from bus |
Required for metric-mode scoring without direct coupling to webrtc plugin |
TransitionManager uses @suaveplan/fsm |
Genesis already has a production FSM; no need to hand-roll state transitions |
| Quorum detection | Defensive — prevents declaring a winner with too few participants |
Enhancement: Voting System Details
Source: docs/old-network-planning/PHASE_4.md §Voting System
VoteSession— configurable topics (host selection, config changes, tier promotions).- Configurable voting periods and participation thresholds.
- Result determination with configurable consensus requirements (simple majority, supermajority, unanimous).
VoteSessionlifecycle: creation → voting → tallying → result publication.- Vote validation against session rules (e.g. only Tier 0/1 peers may vote on host selection).
- Tamper-proof tallying — votes are signed by peers; tally is reproducible.
- Secure voting verification — any peer can verify the published tally against individual vote signatures.
- Vote history tracking — append-only log of all votes for audit (consumed by
network-plugin-audit-mesh).
Verification approach
src/election/election.spec-conformance.test.ts— pins all three modes, quorum, tiebreaking.src/scoring/scoring.spec-conformance.test.ts— pins weighted criteria, reputation decay.src/transition/transition.spec-conformance.test.ts— pins FSM states and rollback on failure.src/voting/voting.spec-conformance.test.ts— pins vote collection, tally, duplicate rejection, session lifecycle.src/vote-session/vote-session.spec-conformance.test.ts— pins configurable topics, thresholds, consensus requirements, vote validation.src/reputation/reputation.spec-conformance.test.ts— pins success/failure/violation scoring and decay.tests/dep-graph.test.ts— pins no direct import of webrtc or transport packages.
Migration impact
None — additive only.