import type { EvaluationReport } from '../../types/index.js'; export interface EvolveOutcomeInput { /** 合并 evolve 报告 id(evolveSkill 返回的 reportId)。 */ reportId?: string; /** 胜出轮(0 = 无改进,不记)。 */ bestRound: number; /** resolveSkillInput 给的 skillPath(文件-skill 为 .md、目录-skill 为内部 SKILL.md)。 */ skillPath: string; /** resolveSkillInput 给的 skillDir。 */ skillDir: string; /** evolve 目标本身的形态(目录-skill / 文件-skill),由原始入参 statSync 判定。用于按形态精确匹配受管记录。 */ isDirectorySkill: boolean; /** 报告加载器覆盖(测试用);默认走 overlay 报告存储(项目 .omk/reports → 全局兜底)按 id 读。 */ loadReport?: (id: string) => Promise; /** 受管目录覆盖(测试用)。 */ dir?: string; } export interface EvolveOutcomeResult { name: string; contentHash: string; verdict: string; } /** * evolve 把胜出版本写回 source 后,为受管 skill 记一条带 verdict 的证据,并把记录 re-baseline 到新版本, * 让 `omk list` 显 measurable(而非永久 stale)。**不写 promote 决定** —— 升 promoted 仍由人 `omk promote`(A 方案: * 统计门 ≠ 人的生产接受)。未纳管 / 无改进 / 源不可达 / 报告缺失 → no-op 返回 null。 * * 证据 contentHash 统一锚到 re-baseline 后的源哈(probeSourceState 与 install / list 同口径),规避「文件-skill 哈 * vs 目录-skill 整树哈」可能与报告内 artifactHash 不在同空间的边角,保证证据判为「当前」。 */ export declare function recordEvolveOutcome(input: EvolveOutcomeInput): Promise;