fix: file-based source of truth for worker + backup protocol

- 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
This commit is contained in:
Accusys
2026-05-09 05:32:13 +08:00
parent b220920e64
commit 9f5afd1b86
5 changed files with 328 additions and 2 deletions

View File

@@ -244,8 +244,10 @@ impl PythonExecutor {
.and_then(|c| serde_json::from_str::<serde_json::Value>(&c).ok())
.is_some();
if is_valid {
let _ = std::fs::rename(tmp, out);
tracing::warn!("[Executor] Partial output preserved: {:?}", out);
let mut partial_path = out.to_path_buf();
partial_path.set_extension("json.partial");
let _ = std::fs::rename(tmp, &partial_path);
tracing::warn!("[Executor] Partial output preserved: {:?}", partial_path);
} else {
let mut err_path = out.to_path_buf();
err_path.set_extension("json.err");