/** * engine_metadata_refresh 安全门 — 判旧 full_execution run 的 engine_closure_files 快照 vs 当前, * 是否触及 result-affecting 文件(改动 → 不轻量,须 full 重跑)。 * * 设计(fresh review MR-1 + 复审 FRESH-2-MAJ-1 修正): * - result-affecting = engine_closure files 排除「非结果影响白名单」(stale 评估/复用判定/存储/指纹计算/审查类) * - 反转白名单(排除非结果)而非正向前缀,因 gate_engine.ts(evaluateGate 分发/严重度)+ gate_executors(注册表)+ * verify_runner 等 result-affecting 不在 gate/executors/ 前缀下(MR-1 盲区) * - FRESH-2-MAJ-1:白名单 key 形态须与运行时一致。computeEngineClosureFileHashes 在 dist 形态(publish, * ENGINE_CODE_ROOT=dist + .js)返 'dist/gate/ruleset_fingerprint.js',开发形态返 'src/gate/...ts'。 * 白名单存无后缀基名,isResultAffecting 先 normalizeRel(strip dist//src/ 前缀 + 去后缀)再比对, * .ts/.js/src/dist 四形态统一匹配,避免 publish 形态白名单失效致轻量静默退化为 full。 * * 快照来源:VerificationRun.engine_closure_files(full_execution 时写 computeEngineClosureFileHashes())。 * 旧 run 无此字段(3.1.1 前)→ fail-closed(不轻量,须 full 一次写快照,之后轻量)。 */ /** 找改动的 result-affecting 文件(旧 run 快照 vs 当前 per-file hash)。 * 改动 = hash 不同 / 新增 / 删除,且 isResultAffecting。 * 旧 run 无快照(undefined)→ 返 [""](fail-closed,不轻量,须 full 写快照)。 */ export declare function changedResultAffectingFiles(oldFiles: Record | undefined, currentFiles: Record): string[]; /** 安全门:旧 run 快照 vs 当前,result-affecting 文件是否改动。 * safe=true(无改动)→ 允许 metadata_refresh 轻量;safe=false(改动/无快照)→ 须 full 重跑。 */ export declare function safeForMetadataRefresh(oldFiles: Record | undefined, currentFiles: Record): { safe: boolean; changedResultAffecting: string[]; };