Repository navigation
FIX: pass the attack objective to the Crescendo refusal check - #3562
Manohar Paturi (ManoharPaturi) wants to merge 6 commits into
Conversation
Richard Lundeen (richlundeen)
left a comment
There was a problem hiding this comment.
The refusal scorer now receives the attack objective, while prompt_sent remains available for backtrack feedback. The regression test uses a different sent prompt and checks the scorer expectation. No blocking issues found by code inspection. Tests were not run for this review. AI-assisted review (GitHub Copilot).
…crosoft#3581) Co-authored-by: Roman Lutz <[email protected]>
…EB dollar sign (microsoft#3533) Signed-off-by: Barkha <[email protected]> Co-authored-by: Roman Lutz <[email protected]>
|
The CI failures came from a preexisting test that pinned the old behavior: test_crescendo_keeps_refusal_criterion_separate_async asserted the refusal scorer receives the sent prompt as its expectation objective, which is exactly the wrong reference this PR replaces. 5e01e95 moves that assertion to the attack objective with a comment naming why, and merges current main. Both affected suites pass locally at 126 tests. The coverage failure was the same test failing under the coverage run. |
Description
Fixes the linked issue
_perform_backtrack_if_refused_asyncwas passingprompt_sentinto_check_refusal_async'sobjectiveparameter, so the refusal judge evaluated deflection against the adversarial prompt itself and the persisted expectation recorded the prompt as the objective. The call now passescontext.objective, matching the parameter's contract and every other scoring call in the class.Tests and Documentation
Added a regression test that runs the backtrack path with a refusal score and asserts the scorer received the context objective, not the prompt. It fails before the change and passes after. The full Crescendo suite passes (85 tests).
No documentation change needed, so I did not run JupyText.