/** * Benchmark Registry: carrega e lista casos de benchmark. * * Casos podem ser definidos em benchmarks/*.json (repo) ou via registry * embutido (definitions.ts). Cada caso: task, requirements, expectedArtifacts, * validators, metrics. * * A carga VALIDA o caso antes de aceitá-lo. Antes não validava, e o efeito não * era um caso ignorado: era um caso aceito pela metade. Um JSON sem * `expectedArtifacts` chegava ao runner, `for (const x of undefined)` estourava * dentro do `try` da suíte, e o relatório registrava `producer falhou: Cannot * read properties of undefined`, culpando a execução por um defeito da * definição. Caso recusado agora diz o motivo e diz qual arquivo o trouxe. */ import type { BenchmarkCase } from '../types.js'; /** Por que um caso de um arquivo `benchmarks/*.json` não entrou na suíte. */ export interface BenchmarkLoadIssue { /** Arquivo que trouxe o caso. */ file: string; /** Id do caso, quando havia um legível. */ id?: string; reason: string; } export declare class BenchmarkRegistry { /** * Carrega casos: embutidos + benchmarks/*.json do diretório base. * * @param issues Coletor opcional. Presente, recebe um registro por caso * recusado e por arquivo ilegível: o que antes desaparecia num `catch` * vazio. Ausente, o comportamento é o de sempre: a suíte é o que passou. */ load(baseDir: string, issues?: BenchmarkLoadIssue[]): BenchmarkCase[]; /** Filtra casos por domínio. */ filterByDomain(cases: BenchmarkCase[], domain?: string): BenchmarkCase[]; } type NormalizeResult = { ok: true; value: BenchmarkCase; } | { ok: false; id?: string; reason: string; }; /** * Valida e normaliza um caso vindo de JSON. * * A regra de recusa é uma só: um caso precisa ser MENSURÁVEL. Sem artefato * esperado e sem validator não há o que medir, e aceitar isso produzia o pior * resultado possível: razão de artefatos `0/0 = 1`, score 1.00 e `passed: * true` para um caso que não conferiu nada. */ export declare function normalizeCase(raw: unknown): NormalizeResult; export {}; //# sourceMappingURL=registry.d.ts.map