ruvnet/ruflo · error · DarwinUnavailableError
Darwin explicitly requested but unavailable
Error message
Darwin explicitly requested but unavailable
What it means
proposeFlywheelCandidates raises DarwinUnavailableError when mode is explicitly 'darwin' but no Darwin proposer is available; unlike local mode, an explicit darwin request must not silently substitute.
Solutions
- Do not pass the Darwin option on this platform/config
- Enable Darwin support prerequisites before requesting it
Example fix
Remove the explicit Darwin request, or enable/install the Darwin proposer backend before requesting it.
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at v3/@claude-flow/cli/src/services/flywheel-proposer.ts:196 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/c9b28be89a920baa.
Report an issue: GitHub.
Appendix: source
Thrown at v3/@claude-flow/cli/src/services/flywheel-proposer.ts:196
}
export async function proposeFlywheelCandidates(input: ProposeCandidatesInput): Promise<CandidateArchive> {
const baselineRef = policyCandidateId(input.baselinePolicy);
const runLocal = async (substitution?: string) => finalizeArchive({
requested: input.mode,
effective: 'local',
substitution,
promotionAllowed: substitution ? input.allowSubstitutionPromotion === true : true,
baselineRef,
safetyEnvelope: input.safetyEnvelope,
seed: input.seed,
candidates: await input.localProposer(input.baselinePolicy, input.seed),
completed: true,
});
if (input.mode === 'local') return runLocal();
if (!input.darwinInvoker) {
if (input.mode === 'darwin') throw new DarwinUnavailableError('Darwin explicitly requested but unavailable');
return runLocal('darwin-unavailable');
}
try {
const maxWallTimeMs = input.maxWallTimeMs ?? 60_000;
let timeout: NodeJS.Timeout | undefined;
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);View on GitHub (pinned to fa13ee4ad6)