fix(memory): verdict lines carry the brief and a distinguishing mission id
The first self_audit run on a planted brief/condition mismatch found the pattern and quoted it, then diagnosed "the agent skipped the section": the record held the condition but not the brief, and working agents never see the condition. It also read two missions as one — a UUIDv7's first 8 chars are a timestamp, and missions 34 s apart both rendered as 01a0cb38. - verdict_line records the phase brief (config.task) beside the condition - the short mission id is the uuid tail - self_audit copies the record into the checkout (the judge cannot read /mission/memory) and compares brief with condition Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
fca828b5a1
commit
9ca71e5fa4
@@ -2622,7 +2622,7 @@ async fn evaluate_finished_phases(
|
||||
) -> Result<(), String> {
|
||||
let rows = sqlx::query(
|
||||
"SELECT mp.id, mp.mission_id, mp.kind, mp.done_when, mp.max_iterations, mp.iteration,
|
||||
m.runtime_kind, m.repo_id
|
||||
mp.config->>'task' AS task, m.runtime_kind, m.repo_id
|
||||
FROM mission_phases mp
|
||||
JOIN missions m ON m.id = mp.mission_id
|
||||
WHERE mp.status = 'evaluating' AND m.status = 'running'
|
||||
@@ -2692,7 +2692,10 @@ async fn evaluate_finished_phases(
|
||||
// The project remembers the verdict. Only a repo-backed mission has a
|
||||
// project to remember into; a repo-less one leaves no trace here.
|
||||
if let Some(repo) = repo_id {
|
||||
crate::mission_memory::remember_verdict(repo, mission_id, &kind, &condition, &verdict);
|
||||
let brief = row.get::<Option<String>, _>("task").unwrap_or_default();
|
||||
crate::mission_memory::remember_verdict(
|
||||
repo, mission_id, &kind, &brief, &condition, &verdict,
|
||||
);
|
||||
}
|
||||
|
||||
// A judge that could not be REACHED has not judged. `Verdict.error` is
|
||||
|
||||
Reference in New Issue
Block a user