{"record":{"id":"ea1e4c61423af638","repo":"ruvnet/ruflo","slug":"tunedistillation-every-grid-candidate-was-skipped","errorCode":null,"errorMessage":"tuneDistillation: every grid candidate was skipped — see candidates[].skipped","messagePattern":"tuneDistillation: every grid candidate was skipped — see candidates\\[\\]\\.skipped","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"v3/@claude-flow/cli/src/services/distill-tuning.ts","lineNumber":306,"sourceCode":"      namespaces,\n      querySet: trainQuerySet,\n      topK,\n    });\n    candidates.push({\n      config,\n      trainScore: result.mrrAtK,\n      trainRecallAt10: result.recallAtK,\n      trainQueryCount: result.queryCount,\n      patternCount: result.patternCount,\n      promotedCount: result.promotedCount,\n      distillMs: result.distillMs,\n      ...(result.skipped ? { skipped: result.skipped } : {}),\n    });\n  }\n\n  const scored = candidates.filter((c) => !c.skipped);\n  if (scored.length === 0) {\n    throw new Error('tuneDistillation: every grid candidate was skipped — see candidates[].skipped');\n  }\n  const winner = scored.reduce((best, c) => (c.trainScore > best.trainScore ? c : best), scored[0]);\n\n  // ── Held-out: score the winner ONCE, refit on the FULL outer train partition ──\n  const winnerFull = await evaluateCandidate({\n    Database,\n    sourceDbPath: dbPath,\n    tmpDir,\n    config: winner.config,\n    fitBoundaryRowid: outerSplit.trainBoundaryRowid,\n    namespaces,\n    querySet: heldOutQuerySet,\n    topK,\n  });\n  const baseline = scoreQuerySet(heldOutBaselineIndex, heldOutQuerySet, topK);\n\n  const heldOut: HeldOutScore = {\n    mrrAt10: winnerFull.mrrAtK,","sourceCodeStart":288,"sourceCodeEnd":324,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/v3/@claude-flow/cli/src/services/distill-tuning.ts#L288-L324","documentation":"Every candidate config in the grid was skipped during evaluation (each candidate record carries a skipped reason), so there are no scored candidates to rank or report. The error points at candidates[].skipped for the per-candidate causes; common triggers are empty train query sets or failed distillation copies.","triggerScenarios":"Thrown at v3/@claude-flow/cli/src/services/distill-tuning.ts:306 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect candidates[].skipped to learn why each candidate was rejected","Loosen skip criteria or supply candidates that satisfy them"],"exampleFix":"Inspect the candidates[].skipped reasons in the output, widen the grid ranges or relax constraints, and re-run so at least one candidate is evaluated.","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fa13ee4ad60ac2090b1480656eb233521790d640","analyzedAt":"2026-08-18T21:34:22.708Z","contentChangedAt":"2026-08-18T21:34:22.708Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}