feat: integrate SlopLedger completion-gate into turn loop — auto-check on every completed turn (#2127)

This commit is contained in:
Hanmiao Li
2026-05-28 11:53:25 +08:00
parent 9943fe537d
commit e9026814be
+21
View File
@@ -1491,6 +1491,27 @@ async fn run_event_loop(
// Generate post-turn receipt for completed turns.
if status == crate::core::events::TurnOutcomeStatus::Completed {
// SlopLedger completion-gate: after every completed
// turn, check whether there are unresolved slop entries
// the agent should address before claiming the task is
// done (#2127). This runs autonomously — no tool call
// required — so the agent can't forget to check.
if let Ok(ledger) = crate::slop_ledger::SlopLedger::load()
&& ledger.has_open_entries()
{
if let Some(gate_msg) = ledger.completion_gate_summary() {
let short = gate_msg
.lines()
.nth(4)
.unwrap_or("review before done");
app.push_status_toast(
format!("⚠️ SlopLedger: {short}"),
crate::tui::app::StatusToastLevel::Warning,
Some(12_000),
);
}
}
let tool_count = app.tool_evidence.len();
let mut receipt = "✓ turn completed".to_string();
if tool_count > 0 {