ruvnet/ruflo · error · QEHiveError
BFT consensus failed: only ${results.length}/${replicaCount}
Error message
BFT consensus failed: only ${results.length}/${replicaCount} replicas succeeded What it means
executeWithBFT() gathered all replica outcomes and too few succeeded to meet the 2f+1 agreement bound for the replica count (f = floor((n-1)/3)). The BFT quorum is not met, so the operation is reported as failed rather than acting on an unquorumed result; the counts in the message show succeeded/total.
Source
Thrown at v3/plugins/agentic-qe/src/bridges/QEHiveBridge.ts:333
const outcomes = await Promise.all(promises);
for (const outcome of outcomes) {
if (outcome.success) {
results.push(outcome.result as T);
} else {
errors.push(outcome.error as Error);
}
}
// BFT requires 2f+1 agreeing results (f = max faults tolerated)
// For 3 replicas: f=1, need 2 agreeing
// For 5 replicas: f=2, need 3 agreeing
const maxFaults = Math.floor((replicaCount - 1) / 3);
const requiredAgreement = 2 * maxFaults + 1;
if (results.length < requiredAgreement) {
this.logger.error(`BFT consensus failed: ${results.length}/${replicaCount} replicas succeeded`);
throw new QEHiveError(
`BFT consensus failed: only ${results.length}/${replicaCount} replicas succeeded`,
errors[0]
);
}
// Return first successful result (in production, would compare for consensus)
this.logger.debug(`BFT consensus achieved: ${results.length}/${replicaCount} replicas agreed`);
return results[0];
}
/**
* Propose task allocation via consensus
*/
async proposeTaskAllocation(
task: QESwarmTask,
requiredAgents: string[]
): Promise<ConsensusResult> {
this.ensureInitialized();View on GitHub (pinned to fa13ee4ad6)
Solutions
- Investigate the failed replicas and restore them before rerunning consensus.
- Reduce replica count or fix the fault causing replica failures.
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at v3/plugins/agentic-qe/src/bridges/QEHiveBridge.ts:333 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18).
Data as JSON: /api/errors/5800fac23bfe1d95.
Report an issue: GitHub.