Validate pair content seed rerolls

This commit is contained in:
2026-06-27 19:37:25 +02:00
parent 098721504d
commit 007386aae3
5 changed files with 65 additions and 4 deletions
+49
View File
@@ -936,6 +936,7 @@ def _pair_seed_snapshot(pair: dict[str, Any]) -> dict[str, Any]:
"soft_scene_text": soft_row.get("scene_text"),
"hard_scene_text": hard_row.get("scene_text"),
"soft_item": soft_row.get("item"),
"soft_pose": soft_row.get("pose"),
"hard_item": hard_row.get("item"),
"hard_position_key": hard_row.get("position_key"),
"hard_position_keys": hard_row.get("position_keys") or [],
@@ -1105,6 +1106,53 @@ def _pair_seed_pose_reroll_check(seed: int) -> dict[str, Any]:
}
def _pair_seed_content_reroll_check(seed: int) -> dict[str, Any]:
name = "pair_seed.content_reroll"
base = _pair_seed_probe(seed)
base_snapshot = _pair_seed_snapshot(base)
changed = False
changed_seed = None
changed_field_names: list[str] = []
issues: list[str] = []
stable_fields = (
"shared_cast_descriptors",
"soft_cast_descriptor_text",
"hard_cast_descriptor_text",
"soft_scene_text",
"hard_scene_text",
"hard_item",
"hard_position_key",
"hard_source_role_graph",
"soft_composition",
"hard_composition",
)
changed_fields = ("soft_item", "soft_pose")
for reroll_seed in range(seed + 1, seed + 16):
rerolled = _pair_seed_probe(seed, reroll_axis="content", reroll_seed=reroll_seed)
rerolled_snapshot = _pair_seed_snapshot(rerolled)
field_issues = _same_fields_issues(name, base_snapshot, rerolled_snapshot, stable_fields, reroll_seed)
if field_issues:
issues.extend(field_issues)
break
changed_field_names = [
field for field in changed_fields if base_snapshot.get(field) != rerolled_snapshot.get(field)
]
if changed_field_names:
changed = True
changed_seed = reroll_seed
break
if not changed:
issues.append("pair content reroll did not change soft_item or soft_pose within 15 attempts")
return {
"name": name,
"base": _row_summary(base.get("softcore_row") or {}),
"changed": changed,
"changed_seed": changed_seed,
"changed_fields": changed_field_names,
"issues": issues,
}
def _seed_axis_checks(seed: int) -> list[dict[str, Any]]:
return [
_seed_determinism_check(seed),
@@ -1144,6 +1192,7 @@ def _seed_axis_checks(seed: int) -> list[dict[str, Any]]:
def _pair_seed_checks(seed: int) -> list[dict[str, Any]]:
return [
_pair_seed_determinism_check(seed),
_pair_seed_content_reroll_check(seed),
_pair_seed_pose_reroll_check(seed),
]