核心要点缓存条目必须包含 `SHA-256`;校验失败拒绝重用并清理。门禁策略:仅在输入一致与哈希匹配时允许重用。实现示例type CacheEntry = { key: string; sha256: string; inputs: string[] }
function hex64(h: string): boolean {
return /^[A-Fa-f0-9]{64}$/.test(h)
}
function inputsMatch(a: string[], b: string[]): boolean {
if (a.length !== b.length) return false
const sa = [...a].sort().join('|')
const sb = [...b].sort().join('|')
return sa === sb
}
function validEntry(e: CacheEntry): boolean {
return !!e.key && hex64(e.sha256) && e.inputs.length > 0
}
function allowReuse(candidate: CacheEntry, expected: CacheEntry): boolean {
if (!validEntry(candidate) || !validEntry(expected)) return false
if (candidate.key !== expected.key) return false
if (!inputsMatch(candidate.inputs, expected.inputs)) return false
return candidate.sha256.toLowerCase() === expected.sha256.toLowerCase()
}
审计与CI门禁审计记录包含键、哈希与输入摘要;污染检出阻断并清理缓存。回退到最近可信缓存或触发重新构建并输出证据。

发表评论 取消回复