Decisions & Consensus
Every consensus decision in Kaneru is persisted with full reasoning โ question, votes, strategy, outcome, participants, and confidence. Decisions are stored as Cortex triples and committed to the DAG, making them queryable and auditable. "Why did we block v2.1?" becomes a triple query, not a lost Slack thread.
Consensus Strategies
Kaneru supports 5 consensus strategies for multi-agent decisions:
| Strategy | Description |
|---|---|
majority | Simple majority vote โ each agent gets one vote, most votes wins |
weighted | Weighted vote โ votes are scaled by each agent's EMA expertise score |
arbitrate | LLM-arbitrated โ a designated agent reviews all positions and decides |
pbft-local | Practical Byzantine Fault Tolerance (local) โ tolerates up to f faulty agents in a 3f+1 quorum |
leader-score | Leader-based โ the highest-scoring agent's vote is authoritative |
Choose a strategy based on your trust model:
- majority for equal-weight teams
- weighted when expertise matters (security experts outweigh generalists on CVE triage)
- arbitrate for nuanced decisions requiring reasoning
- pbft-local when agents may produce unreliable outputs
- leader-score for hierarchical teams with a clear authority
How Decisions Are Stored
Each decision is persisted as a set of Cortex RDF triples under a decision: subject:
| Predicate | Value |
|---|---|
question | The question that was decided |
strategy | Which consensus strategy was used |
resolvedValue | The outcome |
confidence | Confidence score (0.0โ1.0) |
participants | Comma-separated agent IDs |
votes | JSON object mapping agent IDs to vote weights |
ventureId | Associated venture (if any) |
missionId | Associated mission (if any) |
decidedAt | ISO 8601 timestamp |
Auto-Recording
When you call consensusResolve() in the agent mesh, the result is automatically persisted to DecisionHistory. No manual recording step is needed โ every resolved consensus becomes a queryable decision record.
consensusResolve(question, agentVotes, strategy)
โ ConsensusResult
โ DecisionHistory.record(result, { ventureId, missionId })
Querying Decisions
List Decisions
bash# All decisions across all ventures mayros kaneru decisions list # Filter by venture mayros kaneru decisions list --venture <id> # Limit results mayros kaneru decisions list --venture <id> --limit 5
Decisions are returned sorted by most recent first.
Explain a Decision
Get a human-readable breakdown of a specific decision:
bashmayros kaneru decisions explain --decision <id>
Output:
Decision: a1b2c3d4e5f6
Question: Should we block the v2.1 release?
Strategy: weighted
Outcome: block
Confidence: 87.5%
Decided at: 2026-03-18T14:30:00.000Z
Participants: scanner, reviewer, fixer
Votes:
scanner: 0.92
reviewer: 0.85
fixer: 0.45
Venture: venture-sec-001
Mission: SEC-42
Run Consensus
Trigger a consensus round from the CLI:
bashmayros kaneru consensus \ --question "Should we merge PR #42?" \ --strategy weighted \ --agents scanner,reviewer,fixer
MCP Tools
kaneru_decisions_list
Query decision history with optional venture filter. Returns decisions sorted by most recent first.
kaneru_decisions_explain
Get a human-readable explanation of a specific decision with votes, strategy, and reasoning.
kaneru_consensus
Run a consensus round with a question, strategy, and agent list.
Use Cases
- Release gates โ "Should we ship v2.1?" with weighted votes from security, QA, and engineering agents
- Triage decisions โ "Is CVE-2026-1234 critical?" with majority vote across scanner agents
- Architecture choices โ "REST or GraphQL for the new API?" with LLM arbitration
- Incident response โ "Rollback or hotfix?" with leader-score from the on-call agent
Next Steps
- Learning & Routing โ expertise scores that power weighted votes
- Ventures & Missions โ venture and mission context for decisions
- DAG Audit Trail โ every decision is DAG-committed