Skip to main content
implementedInspired by Honeybee waggle dance (distributed signal competition)

Waggle Convergence

Counterpart to Weighted Averages / Voting Classifiers / Ensemble Methods

Key Properties

  • Evidence Mesh: typed evidence topology with reinforcement, contradiction, correlation, and sequence edges
  • Structural reads instead of scores: convergence ratio, tension ratio, commitment readiness with fragility
  • DomainSpace trait: consumer defines content, modality, and direction; mesh manages topology
  • Age-accelerated decay: evidence and edge weights decay per tick; stale evidence is evicted
  • Independent reinforcement bonus: uncorrelated sources strengthen evidence more than correlated ones
  • Bridge detection: structurally important evidence connecting clusters resists eviction
  • Commitment fragility: measures whether convergence survives removal of marginal evidence

Operation Complexity

Side-by-side comparison with the classical counterpart.

Operation complexity comparison
OperationWaggle ConvergenceWeighted Averages / Voting Classifiers / Ensemble Methods
depositO(W)O(1)
reinforceO(1)N/A
convergenceO(n)N/A
tensionO(E)N/A
commitment_readinessO(n + E)N/A
tick (maintenance)O(n + E)N/A

Interface Preview

waggle_convergence.rs
rust
1// Evidence Mesh (mutuus-waggle-mesh)
2pub struct EvidenceMesh<D: DomainSpace> { /* internal */ }
3
4impl<D: DomainSpace> EvidenceMesh<D> {
5    pub fn new(config: MeshConfig) -> Self;
6
7    // Source management
8    pub fn register_source(&mut self, source: Source);
9    pub fn sources_mut(&mut self) -> &mut HashMap<SourceId, Source>;
10
11    // Evidence operations
12    pub fn deposit(
13        &mut self,
14        source: SourceId,
15        content: D::Content,
16        modality: D::Modality,
17        initial_strength: f32,
18    ) -> EvidenceId;
19    pub fn reinforce(&mut self, evidence_id: EvidenceId, source: &SourceId) -> bool;
20
21    // Structural reads
22    pub fn convergence(&self) -> ConvergenceReport<D>;
23    pub fn tension(&self) -> TensionReport;
24    pub fn commitment_readiness(&self) -> CommitmentReport<D>;
25
26    // Introspection
27    pub fn len(&self) -> usize;
28    pub fn is_empty(&self) -> bool;
29    pub fn current_tick(&self) -> Tick;
30    pub fn evidence_iter(&self) -> impl Iterator<Item = &Evidence<D>>;
31    pub fn edge_iter(&self) -> impl Iterator<Item = (&EvidenceId, &EvidenceEdge)>;
32
33    // Maintenance
34    pub fn tick(&mut self) -> TickReport;
35}
36
37// DomainSpace trait — consumer implements this
38pub trait DomainSpace: Clone + Debug {
39    type Content: Clone + Debug;
40    type Modality: Clone + Debug + Eq + Hash;
41    type Direction: Clone + Debug + Eq + Hash;
42
43    fn agrees(a: &Self::Content, b: &Self::Content) -> bool;
44    fn contradicts(a: &Self::Content, b: &Self::Content) -> bool;
45    fn direction(content: &Self::Content) -> Self::Direction;
46}
47

Where This Matters

HoneyScouter

Signal Fusion Engine

Improvement comparison
TodayWith Waggle ConvergenceHow
Static weighted average of analyst signalsTopology-aware convergence with contradiction structureEvidence Mesh tracks agreement, contradiction, and correlation between signals; commitment readiness replaces threshold-based triggering
Equal treatment of correlated and independent signalsIndependence bonus for uncorrelated sourcesMesh tracks source correlation partners and weights independent reinforcement higher
No visibility into signal disagreementTension reads expose contradiction clustersContradiction edges form typed subgraph with cluster detection

Interactive Simulation

Discussion

Questions, ideas, or experiences with Waggle Convergence? Join the discussion.