3.6 KiB
3.6 KiB
Tasks — network-plugin-governance
Blocked on:
network-core.
1. Scaffold
- 1.1
packages/network/network-plugin-governance/withpackage.json(@suaveplan/network-plugin-governance@0.0.0),tsconfig.json,vitest.config.ts,README.md. - 1.2 Workspace deps:
@suaveplan/network,@suaveplan/error,@suaveplan/types,@suaveplan/events,@suaveplan/fsm,@suaveplan/timing,@opentelemetry/api,zod. - 1.3
sideEffects: false.
2. Types
- 2.1
src/types/election.types.ts—ElectionMode,ElectionConfig,ElectionResult. - 2.2
src/types/candidate.types.ts—Candidate,CandidateScore,ScoringWeights. - 2.3
src/types/transition.types.ts—TransitionState,TransitionConfig. - 2.4
src/types/reputation.types.ts—ReputationScore,ReputationEvent. - 2.5
src/error-codes.ts—defineCodes("NET_GOV", [...]).
3. Candidate scorer
- 3.1
src/scoring/candidate-scorer.ts—CandidateScorerwith weighted criteria. - 3.2 Formula:
score = Σ(weightᵢ × normalize(metricᵢ)). - 3.3 Metrics: latency (inverse), uptime, bandwidth, reputation.
- 3.4 Tiebreaking: deterministic by peerId hash.
4. Reputation tracker
- 4.1
src/reputation/reputation-tracker.ts—ReputationTracker. - 4.2 Events:
success,failure,violation. - 4.3 Exponential decay:
scoreₜ = scoreₜ₋₁ × αwhere α configurable.
5. Voting manager
- 5.1
src/voting/voting-manager.ts— collects votes overNetworkBus. - 5.2 Deduplication by
peerId. - 5.3 Quorum detection: configurable fraction of known peers.
6. Election engine
- 6.1
src/election/election-engine.ts—ElectionEngine. - 6.2 Modes:
metric(score only),direct(vote tally),hybrid(score × vote weight). - 6.3 Emits
election:resultonNetworkBuswithwinnerId,mode,score.
7. Transition manager
- 7.1
src/transition/transition-manager.ts— host handover FSM using@suaveplan/fsm. - 7.2 States:
idle → preparing → transferring → confirming → completed | failed. - 7.3 Emits
transition:state-changeon bus. - 7.4 On
failed, rolls back toidleand emitstransition:failed.
8. Plugin wrapper
- 8.1
src/plugin/governance-plugin.ts—GovernancePluginimplementsNetworkPlugin. - 8.2 Subscribes to
peer:latency,peer:disconnectedon bus. - 8.3 Installs election, scorer, voting, transition, and reputation managers.
9. Spec
- 9.1 Update
openspec/specs/network/spec.mdwithNET-08,NET-09.
10. Conformance tests
- 10.1
src/election/election.spec-conformance.test.ts— all three modes, quorum, tiebreaking. - 10.2
src/scoring/scoring.spec-conformance.test.ts— weighted criteria, reputation decay. - 10.3
src/transition/transition.spec-conformance.test.ts— FSM states, rollback on failure. - 10.4
src/voting/voting.spec-conformance.test.ts— vote collection, tally, duplicate rejection. - 10.5
src/reputation/reputation.spec-conformance.test.ts— success/failure/violation, decay. - 10.6
src/backpressure/backpressure.spec-conformance.test.ts— not applicable (N/A). - 10.7
src/error-codes.spec-conformance.test.ts— frozen registry.
11. Verify
- 11.1
bunx turbo lint typecheck test --filter=@suaveplan/network-plugin-governancegreen. - 11.2
bunx turbo test:coverage --filter=@suaveplan/network-plugin-governance100/100/100/100. - 11.3
bun scripts/openspec-conformance.ts @suaveplan/network-plugin-governancePASS.