Context
Every built-in scenario forbids an attribute to a bystander recipient. A common contextual-integrity pattern is missing: an attribute that is appropriate to disclose to the data subject themselves (they own it) but forbidden to a third party. Adding it broadens the matrix to cover the data subject recipient role called out in docs/DESIGN.md §1.
Keep it synthetic and domain-neutral (placeholders only, meaningful-but-unique values). Register the new Scenario in ALL_SCENARIOS in src/context_leak/scenarios.py.
Acceptance criteria
- New
Scenario in src/context_leak/scenarios.py, added to ALL_SCENARIOS.
- At least one attribute is appropriate to the data subject (in
appropriate_flows) and forbidden to a third-party recipient (in forbidden).
- All values are invented, unique surface forms;
aliases cover the plausible equivalent forms.
- The
compliant scripted agent still aggregates to disclosure-rate 0.0 / utility 1.0 with the new scenario present (uv run context-leak --report).
- A test asserting the intended violation and appropriate flow for this scenario.
Context
Every built-in scenario forbids an attribute to a bystander recipient. A common contextual-integrity pattern is missing: an attribute that is appropriate to disclose to the data subject themselves (they own it) but forbidden to a third party. Adding it broadens the matrix to cover the
data subjectrecipient role called out indocs/DESIGN.md§1.Keep it synthetic and domain-neutral (placeholders only, meaningful-but-unique values). Register the new
ScenarioinALL_SCENARIOSinsrc/context_leak/scenarios.py.Acceptance criteria
Scenarioinsrc/context_leak/scenarios.py, added toALL_SCENARIOS.appropriate_flows) and forbidden to a third-party recipient (inforbidden).aliasescover the plausible equivalent forms.compliantscripted agent still aggregates to disclosure-rate 0.0 / utility 1.0 with the new scenario present (uv run context-leak --report).