d6a3107e4e
stratified_sample 先 build_units 聚合,以 QuestionUnit 为采样原子做 分层/去重/补足/rng.sample,返回前 flatten_units 展开为逐题列表; size/correct_ratio/min_per_class 均按 unit 计数,单元正确性走成员 AND, 孪生对两题永不被劈开。纯 single 输入下 build_units 1:1 折叠、顺序不变, rng 消耗与旧逐题实现字节级一致(新增回归测试守护)。 _backfill_per_class candidates 改按 unit 枚举去重;build_units/flatten_units 函数内延迟导入以规避 question_gen<->harness 循环依赖(沿用 adversarial_filter)。 load_benchmark 反序列化补 pair_id/question_role/flip_axis/unit_id 四字段, 用 .get 兼容旧 JSON(缺失退化为 single,unit_id 由 __post_init__ 回填)。 pools._sample_excluding 随之改为透传 flatten_units(candidates) 给已单元化的 stratified_sample(不再用 lone pair-original 代表),行为对 single-only 保持等价。