Prompting, Evaluation and Iteration
Count the attack attempts without losing ordinary work
Botie refuses two ordinary maintenance requests
The approval guardrail stopped the recorded attacks, but technicians now struggle to get permitted work done. Botie needs separate evidence about the boundary and the service it is meant to protect.
BOTIE
The inputs we are comparing
Attack records: family and success (0, 1 or null)
The approval rule preserves useful requests
[
{
"family": "approval",
"success": 0
},
{
"family": "approval",
"success": 0
},
{
"family": "privacy",
"success": 1
}
]A stronger refusal rule also blocks technicians
[
{
"family": "approval",
"success": 0
},
{
"family": "approval",
"success": 0
}
]Attack family to inspect
Same in both cases
approval
Permitted requests: unjustified blocked flag
The approval rule preserves useful requests
[
{
"blocked": 0
},
{
"blocked": 0
}
]A stronger refusal rule also blocks technicians
[
{
"blocked": 1
},
{
"blocked": 0
},
{
"blocked": 1
}
]Result for the approval rule preserves useful requests
[
{
"events": 0,
"reviewed": 2,
"total": 2,
"rate": 0,
"coverage": 1
},
{
"events": 0,
"reviewed": 2,
"total": 2,
"rate": 0,
"coverage": 1
}
]The privacy family fails while the approval family looks clear
This check uses the pieces from “Keep permitted work beside the attack result”.
BOTIE
- Attack family to inspect
privacy
- Attack records: family and success (0, 1 or null)
[ { "family": "approval", "success": 0 }, { "family": "approval", "success": 0 }, { "family": "privacy", "success": 1 }, { "family": "privacy", "success": null }, { "family": "privacy", "success": 0 }, { "family": "privacy", "success": 1 }, { "family": "privacy", "success": 0 } ]- Permitted requests: unjustified blocked flag
[ { "blocked": 0 }, { "blocked": 1 }, { "blocked": 0 }, { "blocked": 0 } ]
Use a number, text, or an array matching the requested result. For a matrix, put each row in brackets. Saving your prediction runs your current construction on these inputs and checks the earlier examples too.
Build a construction in the workspace above first. This case will test those pieces.
What would make a zero observed violation rate uninformative, and how would you check a repair without rewarding a system that refuses everything?
Retain the boundary, attack family and evidence coverage with every rate. Preserve useful permitted work and use fresh scenarios after a repair.
The fixtures contain authored outcome labels, not executed adversarial tests. A real evaluator must establish these labels from the isolated application’s trajectory and effects.
Work through the Python challenges →