ruvnet/ruflo · error · DarwinUnavailableError
Darwin archive incomplete
Error message
Darwin archive incomplete
What it means
A Darwin archive run finished without completing and no more specific reason was returned by the invoker, so the archive result is unusable. This is the fallback message when result.reason is empty; in darwin-only mode it surfaces as DarwinUnavailableError, otherwise the proposer degrades to the local fallback path tagged darwin-incomplete.
Solutions
- Re-download or regenerate the Darwin archive so all required members are present
- Verify the archive manifest before proposing
Example fix
Ensure the Darwin archive contains the required candidate and evaluation data; regenerate the archive before proposing.
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at v3/@claude-flow/cli/src/services/flywheel-proposer.ts:221 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/1fcbb8a5c1ab600f.
Report an issue: GitHub.
Appendix: source
Thrown at v3/@claude-flow/cli/src/services/flywheel-proposer.ts:221
const result = await Promise.race([
input.darwinInvoker({
baselinePolicy: input.baselinePolicy,
seed: input.seed,
budget: {
maxEvaluationCostMicros: input.safetyEnvelope.maxEvaluationCostMicros,
maxConcurrency: input.maxConcurrency ?? 2,
maxWallTimeMs,
},
}),
new Promise<never>((_, reject) => {
timeout = setTimeout(() => reject(new DarwinUnavailableError('Darwin exceeded wall-time budget')), maxWallTimeMs);
timeout.unref?.();
}),
]).finally(() => {
if (timeout) clearTimeout(timeout);
});
if (!result.completed) {
if (input.mode === 'darwin') throw new DarwinUnavailableError(result.reason ?? 'Darwin archive incomplete');
return runLocal(`darwin-incomplete:${result.reason ?? 'unknown'}`);
}
if (result.candidates.length > (input.maxCandidates ?? 256)) {
throw new DarwinUnavailableError('Darwin archive exceeded candidate-count budget');
}
const evaluationCost = result.candidates.reduce(
(sum, candidate) => sum + candidate.resources.evaluationCostMicros,
0,
);
if (evaluationCost > input.safetyEnvelope.maxEvaluationCostMicros) {
throw new DarwinUnavailableError('Darwin archive exceeded evaluation-cost budget');
}
return finalizeArchive({
requested: input.mode,
effective: 'darwin',
promotionAllowed: true,
baselineRef,
safetyEnvelope: input.safetyEnvelope,View on GitHub (pinned to fa13ee4ad6)