Rule outcomes, the contract hint, and four extractor/backup fixes #174

Merged
bvandeusen merged 18 commits from dev into main 2026-09-21 06:31:10 -04:00
Showing only changes of commit 028d5218fc - Show all commits
+6 -1
View File
@@ -508,7 +508,12 @@ async def test_the_prompt_arm_says_nothing_when_asked_nothing():
stack.enter_context(patch.object(pc, "record_rule_surfaced", MagicMock()))
out = await pc.build_prompt_rule_hint(1, " ")
assert out == {"context": "", "rule_ids": [], "checkpoint": {}}
# NO `checkpoint` KEY, and that is the distinction rather than an
# oversight (#4214). The two ACT arms can hold a call because there is
# a composed act to hold; this arm fires on the operator's message,
# before anything has been decided, so there is nothing to put a rule
# in front of. A checkpoint here would have to guess at an act.
assert out == {"context": "", "rule_ids": []}
search.assert_not_called()
log.assert_not_called()