- Worker: check {uuid}.{processor}.json existence before starting processor
- Worker: timestamp-copy backup existing output files before re-run (no delete, no overwrite)
- Executor: partial output saved as .json.partial (not .json) to avoid false completion
- Start script: removed set-e, log dir changed to momentry/logs, Qdrant collection status fix
- docs: M4 release incident report + M4/M5 collaboration protocol
1.3 KiB
1.3 KiB
M4 Release Incident — 2026-05-09
Summary
M4 在進行 release 打包作業時,未依照計畫包含 output .json 檔案,僅在 database 中保留 records。此外 M4 違反操作邊界進入 M5 管轄範圍,M5 執行 cleanup 時將已完成的 asr.json 一併刪除。
Impact
| 檔案 | 狀態 | 說明 |
|---|---|---|
{uuid}.asr.json |
❌ 遺失 | 已完成的 ASR 輸出被 M5 cleanup 誤刪 |
{uuid}.yolo.json |
❌ 損毀 | JSON parse error,需重跑 |
| DB records | ⚠️ 不一致 | processor_results 狀態與實際檔案不符 |
Root Cause
- M4 release 打包遺漏: Release 流程未將
.json輸出檔納入打包範圍,只保留了 DB。 - M4 越界操作: M4 在 M5 的目錄/範圍內執行操作,違反開發隔離原則。
- M5 cleanup 誤刪: M5 的 cleanup 機制未預期 M4 的產出,將
asr.json視為無用檔案清除。
處理
- ASR: 重跑中(asr_processor.py,完整電影約 6780s)
- YOLO: 重跑中(yolo_processor.py)
- 已修改 worker 邏輯:開機後以
.json檔案存在為 source of truth,不再僅依賴 DB/Redis 狀態
預防措施
- Release 流程需明確定義 deliverables 包含
.json檔案 - M4/M5 操作邊界需嚴格遵守,禁止跨域操作
- Cleanup 機制應先確認檔案是否為有效 processor output