v0.1.3 故障注入矩阵

September 8, 2026 · View on GitHub

状态:本矩阵全部使用本地 fixture、Fake Provider、Mock Fetch 或临时目录,不发送真实供应商请求。

场景预期事实自动重复提交证据
请求前/上传前失败not_accepted;可以尝试下一候选仅下一候选一次provider-contract.mjsgeneration-actions.mjs
上传成功、提交响应 500/丢失acceptance=unknown0transcribe-task-acceptance-unknown.mjsvideo-task-acceptance-unknown.mjs
图片 500、断网或缺远端 IDacceptance/outcome=unknown0image-task-acceptance-unknown.mjs
已受理后结果落盘失败保留已受理结果并返回本地 persist 错误0provider-contract.mjs
已受理后轮询 429/500/超时watchState=exhaustedoutcome=unknown0task-runtime-faults-v2.mjs
供应商明确返回任务失败outcome=failed0task-runtime-faults-v2.mjs
已成功但下载/本地写入失败outcome=succeededdeliveryState=failed0task-store-v2.mjsimage-task-mixed-v2.mjs
进程在 submitting 阶段退出无受理证据时转为 unknown,禁止恢复提交0task-store-v2.mjs
进程在 accepted/running 阶段退出只恢复观察;供应商缺失则 suspended0task-runtime-faults-v2.mjs
已成功、交付中途退出保留 succeeded,交付标 failed0task-runtime-faults-v2.mjs
取消时无法确认远端结果cancelState/outcome=unknown0task-store-v2.mjstask-manual-recovery-v2.mjs
tasks/config 截断或结构损坏隔离原文件并保留证据0damage.mjsdoctor.mjs
SSE 断开、重连、迟到快照、慢消费者全量快照收敛;旧序号被拒绝;背压只保留最新0api.mjsclient.mjs
上传中断、过期文件与 .part 残留临时文件清理;不影响正式产物0api.mjs
旧任务附件超出最近索引从完整任务历史解析,不依赖最近 50 条0generation-actions.mjs
人工重新观察/重新交付只轮询或下载,不提交0task-manual-recovery-v2.mjs
标为已读/恢复提醒只写本地提醒审计元数据,不改变任务事实0task-manual-recovery-v2.mjs
用户知情人工重试独立确认、建立新 Task 关系并归档原提醒明确授权后 1task-manual-recovery-v2.mjs

矩阵的硬性规则是:只要已有 acceptedunknown 事实,任何自动路径的生成提交次数增量必须为 0。人工重试不属于自动恢复;它必须由用户逐次确认,并在数据中保留新旧 Task 的关系。