controllers tests: fresh narrative selects with a moved digest read ScopeMoved

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-10-17 12:58:54 +02:00
commit fca3ec1a3a

View file

@ -8449,12 +8449,7 @@ mod tests {
.turn(CommandId::new(), &stale_opportunity) .turn(CommandId::new(), &stale_opportunity)
.await .await
.unwrap_err(); .unwrap_err();
assert!(matches!( assert!(matches!(error, ControllerError::ScopeMoved), "{error:?}");
error,
ControllerError::NoOpportunity {
expected: ControllerMode::NarrativePersona
}
));
assert!( assert!(
capturing.prepared.lock().unwrap().is_empty(), capturing.prepared.lock().unwrap().is_empty(),
"a stale scope digest reached inference" "a stale scope digest reached inference"
@ -11370,14 +11365,13 @@ mod tests {
let refreshed = after.opportunities[0].clone(); let refreshed = after.opportunities[0].clone();
assert_ne!(refreshed, opportunity); assert_ne!(refreshed, opportunity);
assert_eq!(refreshed.scope_digest, opportunity.scope_digest); assert_eq!(refreshed.scope_digest, opportunity.scope_digest);
// A digest the world does not derive selects nothing. // A digest the world does not derive selects nothing: the scope is
// still offered, at a digest this caller did not see.
let mut forged = opportunity.clone(); let mut forged = opportunity.clone();
forged.scope_digest = ScopeDigest::fixture("sha256:not-this-scope"); forged.scope_digest = ScopeDigest::fixture("sha256:not-this-scope");
assert!(matches!( assert!(matches!(
runner.run_narrative(CommandId::new(), &forged).await, runner.run_narrative(CommandId::new(), &forged).await,
Err(ControllerError::NoOpportunity { Err(ControllerError::ScopeMoved)
expected: ControllerMode::NarrativePersona
})
)); ));
let NarrativeRun::Completed(resumed) = let NarrativeRun::Completed(resumed) =
runner.run_narrative(command_id, &refreshed).await.unwrap() runner.run_narrative(command_id, &refreshed).await.unwrap()