/** * Darwin — Critic score parsing. * * The CLI run path (`cli/run.ts`) and the reproducible benchmark * (`benchmark/evolution-benchmark.ts`) both have to turn a critic's free-text * verdict into a numeric 1–10 quality score. The original logic only matched * the explicit `===SCORE===` marker and then a single `N/10` fallback — so * perfectly clear human phrasings like "8.5 out of 10", "Score: 8/10", * "rating: 8", "I'd rate this 9", or a bare "9 out of 10" all parsed to `null`, * which silently DROPPED the run from evolution (no quality score recorded). * * {@link parseCriticScore} is the single shared, robust extractor: it tries the * authoritative marker first, then a small ordered set of unambiguous numeric * patterns, normalises everything onto the 0–10 scale, and clamps to 1–10. It * returns `null` only when there is genuinely no score-like number to be found. */ /** A parsed score is always on the 1–10 scale, or null when nothing matched. */ export type ParsedCriticScore = number | null; /** * Extract a 1–10 critic score from a critic's free-text output. * * Resolution order (first match wins): * 1. `===SCORE=== N` — the authoritative machine marker * 2. `N/10`, `N/100`, `N/5` — explicit fraction (normalised to 0–10) * 3. `N out of 10|100|5` — worded fraction (denominator optional → 10) * 4. `score|rating|rate(d): N` — a score-word followed by a number * 5. `rate this N` / `rate it N` — verb phrasing * * For the score-word / "out of" forms without an explicit denominator, a value * in 0–10 is taken as-is, a value in 11–100 is treated as a 0–100 score and * divided by 10, and anything above 100 is rejected (it is not a score). The * result is clamped to 1–10. Returns `null` when nothing score-like is found. */ export declare function parseCriticScore(output: string): ParsedCriticScore; //# sourceMappingURL=parse-score.d.ts.map