the-mindscape-of-bro-tsong/tests/test_round05_1_selector_pat...

120 lines
5.0 KiB
Python

import importlib.util
import unittest
from pathlib import Path
def load_audit_runner():
script_path = Path(__file__).resolve().parents[1] / "scripts" / "run_round05_1_selector_patch_audit.py"
spec = importlib.util.spec_from_file_location("run_round05_1_selector_patch_audit", script_path)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
return module
class Round051SelectorPatchAuditTests(unittest.TestCase):
def test_behavior_record_contains_diff_contract_fields(self):
runner = load_audit_runner()
record = runner.build_behavior_record(
source="round04_blind_pool",
case_id="R04-BI-010",
input_text="谁负责这件事一直说不清楚。",
selector_result={
"selected_models": [
{
"model_id": "qpi",
"score": 0.57,
"reasons": ["QPI problem-definition gate matched"],
"penalties": [],
}
],
"rejected_models": [
{
"model_id": "intellectual_archaeology",
"score": 0.12,
"reasons": [],
"penalties": ["no IA heavy-depth gate"],
}
],
"no_call": False,
},
targeted=True,
)
self.assertEqual(record["case_id"], "R04-BI-010")
self.assertEqual(record["source"], "round04_blind_pool")
self.assertEqual(record["selected_model_ids"], ["qpi"])
self.assertEqual(record["rejected_model_ids"], ["intellectual_archaeology"])
self.assertEqual(record["scores"]["qpi"], 0.57)
self.assertEqual(record["scores"]["intellectual_archaeology"], 0.12)
self.assertEqual(record["reasons"]["qpi"], ["QPI problem-definition gate matched"])
self.assertEqual(record["penalties"]["intellectual_archaeology"], ["no IA heavy-depth gate"])
self.assertIs(record["no_call"], False)
self.assertIs(record["targeted"], True)
def test_diff_marks_target_and_non_target_changes_with_deferred_disposition(self):
runner = load_audit_runner()
before = [
{
"case_id": "R04-BI-010",
"source": "round04_blind_pool",
"input": "谁负责这件事一直说不清楚。",
"targeted": True,
"selected_model_ids": [],
"rejected_model_ids": ["qpi", "intellectual_archaeology"],
"scores": {"qpi": 0.31, "intellectual_archaeology": 0.0},
"no_call": True,
"reasons": {"qpi": [], "intellectual_archaeology": []},
"penalties": {"qpi": ["QPI positive signal missing"], "intellectual_archaeology": []},
},
{
"case_id": "R04-BI-028",
"source": "round04_blind_pool",
"input": "我又卡住了。",
"targeted": False,
"selected_model_ids": [],
"rejected_model_ids": ["qpi", "intellectual_archaeology"],
"scores": {"qpi": 0.2, "intellectual_archaeology": 0.0},
"no_call": True,
"reasons": {"qpi": [], "intellectual_archaeology": []},
"penalties": {"qpi": ["QPI positive signal missing"], "intellectual_archaeology": []},
},
]
after = [
{
**before[0],
"selected_model_ids": ["qpi"],
"rejected_model_ids": ["intellectual_archaeology"],
"scores": {"qpi": 0.56, "intellectual_archaeology": 0.0},
"no_call": False,
"reasons": {"qpi": ["QPI problem-definition gate matched"], "intellectual_archaeology": []},
"penalties": {"qpi": [], "intellectual_archaeology": []},
},
{
**before[1],
"scores": {"qpi": 0.25, "intellectual_archaeology": 0.0},
"penalties": {"qpi": [], "intellectual_archaeology": []},
},
]
diff = runner.diff_behavior_records(before, after, targeted_cases={"R04-BI-010"})
self.assertEqual(diff["summary"]["targeted_changes"], 1)
self.assertEqual(diff["summary"]["non_target_changes"], 1)
target_change = diff["changed_cases"][0]
self.assertEqual(target_change["case_id"], "R04-BI-010")
self.assertIs(target_change["targeted"], True)
self.assertIn("selected_model_ids", target_change["changed_fields"])
self.assertIn("no_call", target_change["changed_fields"])
non_target_change = diff["changed_cases"][1]
self.assertEqual(non_target_change["case_id"], "R04-BI-028")
self.assertIs(non_target_change["targeted"], False)
self.assertEqual(non_target_change["owner_disposition"], "defer")
self.assertEqual(non_target_change["ccra_disposition"], "defer")
if __name__ == "__main__":
unittest.main()