From eee3533479a624d6b8e4333655fb9f1e6eaeff8a Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sat, 30 May 2026 23:35:19 +0100 Subject: [PATCH] Seal coordinator step artifacts --- .../src/bin/epiphany-mvp-coordinator.rs | 28 ++++++++++-------- epiphany-tool-codex-mcp-spine/Cargo.lock | 1 + state/agent-heartbeats.msgpack | Bin 61945 -> 57738 bytes state/ledgers.msgpack | Bin 170952 -> 171375 bytes vendor/codex/codex-rs/Cargo.lock | 1 + 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/epiphany-core/src/bin/epiphany-mvp-coordinator.rs b/epiphany-core/src/bin/epiphany-mvp-coordinator.rs index ce29e24f..89cee605 100644 --- a/epiphany-core/src/bin/epiphany-mvp-coordinator.rs +++ b/epiphany-core/src/bin/epiphany-mvp-coordinator.rs @@ -354,12 +354,12 @@ fn run_coordinator(args: &Args) -> Result { final_action = coordinator.clone(); if args.mode == "plan" { - append_jsonl(&steps_path, &step)?; + append_operator_step_jsonl(&steps_path, &step)?; steps.push(step); break; } if is_stop_action(&action) && !args.auto_review && !is_result_review_action(&action) { - append_jsonl(&steps_path, &step)?; + append_operator_step_jsonl(&steps_path, &step)?; steps.push(step); break; } @@ -386,7 +386,7 @@ fn run_coordinator(args: &Args) -> Result { "action": wait_action_for_role(role_id), "reason": result["note"], }); - append_jsonl(&steps_path, &step)?; + append_operator_step_jsonl(&steps_path, &step)?; steps.push(step); break; } @@ -398,7 +398,7 @@ fn run_coordinator(args: &Args) -> Result { "action": review_action_for_role(role_id), "reason": result["note"] }); - append_jsonl(&steps_path, &step)?; + append_operator_step_jsonl(&steps_path, &step)?; steps.push(step); break; } @@ -434,12 +434,12 @@ fn run_coordinator(args: &Args) -> Result { ) { final_action = json!({"action": "waitForReorientResult", "reason": result["note"]}); - append_jsonl(&steps_path, &step)?; + append_operator_step_jsonl(&steps_path, &step)?; steps.push(step); break; } final_action = json!({"action": "reviewReorientResult", "reason": result["note"]}); - append_jsonl(&steps_path, &step)?; + append_operator_step_jsonl(&steps_path, &step)?; steps.push(step); break; } @@ -490,7 +490,7 @@ fn run_coordinator(args: &Args) -> Result { "action": wait_action_for_role(role_id), "reason": result["note"], }); - append_jsonl(&steps_path, &step)?; + append_operator_step_jsonl(&steps_path, &step)?; steps.push(step); break; } @@ -499,7 +499,7 @@ fn run_coordinator(args: &Args) -> Result { "action": review_action_for_role(role_id), "reason": result["note"], }); - append_jsonl(&steps_path, &step)?; + append_operator_step_jsonl(&steps_path, &step)?; steps.push(step); break; } @@ -542,14 +542,14 @@ fn run_coordinator(args: &Args) -> Result { ) { final_action = json!({"action": "waitForReorientResult", "reason": result["note"]}); - append_jsonl(&steps_path, &step)?; + append_operator_step_jsonl(&steps_path, &step)?; steps.push(step); break; } if !args.auto_review { final_action = json!({"action": "reviewReorientResult", "reason": result["note"]}); - append_jsonl(&steps_path, &step)?; + append_operator_step_jsonl(&steps_path, &step)?; steps.push(step); break; } @@ -560,7 +560,7 @@ fn run_coordinator(args: &Args) -> Result { &mut step, json!({"type": "dryCompact", "threadId": thread_id}), ); - append_jsonl(&steps_path, &step)?; + append_operator_step_jsonl(&steps_path, &step)?; steps.push(step); continue; } @@ -571,7 +571,7 @@ fn run_coordinator(args: &Args) -> Result { } _ => {} } - append_jsonl(&steps_path, &step)?; + append_operator_step_jsonl(&steps_path, &step)?; steps.push(step); } @@ -1405,6 +1405,10 @@ fn append_jsonl(path: &Path, value: &Value) -> Result<()> { Ok(()) } +fn append_operator_step_jsonl(path: &Path, step: &Value) -> Result<()> { + append_jsonl(path, &status_cli::sanitize_for_operator(step.clone())) +} + fn text_at(value: &Value, path: &[&str]) -> Result { let mut cursor = value; for key in path { diff --git a/epiphany-tool-codex-mcp-spine/Cargo.lock b/epiphany-tool-codex-mcp-spine/Cargo.lock index 26b572e3..65db69c8 100644 --- a/epiphany-tool-codex-mcp-spine/Cargo.lock +++ b/epiphany-tool-codex-mcp-spine/Cargo.lock @@ -2253,6 +2253,7 @@ dependencies = [ "serde", "serde_json", "sha1", + "toml", "tracing", "uuid", ] diff --git a/state/agent-heartbeats.msgpack b/state/agent-heartbeats.msgpack index 73e01775679e07a35254595b88484c7f346b624b..fa6f07defcf16760aae4b28ba43bd6957147cb3b 100644 GIT binary patch delta 5396 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 NSMN5Cf|3^t{|C-etZ)DT delta 6376 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 diff --git a/state/ledgers.msgpack b/state/ledgers.msgpack index 565117ca17b8467d797da4f492921ba5f5e9c44f..92357fe9ba2a20c7b147c5cbd9ec2dbd9449c42c 100644 GIT binary patch delta 448 zcmY*Uy-LJD5H=~b7OxzzQMj0pcoqj1HWqTHa*Bn`vB^#@i<_Oe+2vG(D=d5fy+W|@ z4Fn6(2N2)J!WVFJCy3Py^Ue47`MUV^zWChomXghGCqDgH@E?0GtKPZiecw#|+o|up zPJKUlSiXOYqj)QbIzbX0$8mS|fA_S~nq2m&g#O7P;00#Z2vSgKq8ub;Oa=`t>LgJR zCrQ$YyRgeLgs~=rz!dD9Tc(9A15)x5Qk$j{VXdOtAm7fJtZ}^!8Ik5fF+&Z+9FsmnJ+R7%62k@&#A0s*&`0s=FcHO3AC diff --git a/vendor/codex/codex-rs/Cargo.lock b/vendor/codex/codex-rs/Cargo.lock index 94315590..93de32c3 100644 --- a/vendor/codex/codex-rs/Cargo.lock +++ b/vendor/codex/codex-rs/Cargo.lock @@ -5092,6 +5092,7 @@ dependencies = [ name = "epiphany-codex-bridge" version = "0.1.0" dependencies = [ + "allocative", "anyhow", "chrono", "codex-app-server-protocol",