Compose name-first form write plans

This commit is contained in:
2026-07-26 17:30:04 +03:00
parent c1d5d06f6d
commit 39c8c4ab18
6 changed files with 603 additions and 10 deletions
+28 -1
View File
@@ -146,6 +146,7 @@ def validate_selector_chain(
resolve_overrides = coverage.get("resolve_overrides") if isinstance(coverage.get("resolve_overrides"), dict) else {}
saved_state_resolution = coverage.get("saved_state_resolution") if isinstance(coverage.get("saved_state_resolution"), dict) else {}
composition = coverage.get("write_plan_composition") if isinstance(coverage.get("write_plan_composition"), dict) else {}
form_composition = coverage.get("form_write_plan_composition") if isinstance(coverage.get("form_write_plan_composition"), dict) else {}
skips = coverage.get("skips") if isinstance(coverage.get("skips"), list) else None
summary = {
"path": str(path),
@@ -161,6 +162,9 @@ def validate_selector_chain(
"write_plan_target": saved_state_resolution.get("write_plan_target"),
"composition_status": composition.get("status"),
"composed": composition.get("composed"),
"form_composition_status": form_composition.get("status"),
"form_composed": form_composition.get("composed"),
"form_name_first": form_composition.get("name_first"),
}
if not report:
return summary
@@ -177,7 +181,7 @@ def validate_selector_chain(
)
if report.get("passed") is not True:
failures.append({"code": "selector_chain_not_passed", "label": label, "path": str(path), "issues": report.get("issues")})
for section in ("resolve_overrides", "saved_state_resolution", "write_plan_composition", "skips"):
for section in ("resolve_overrides", "saved_state_resolution", "write_plan_composition", "form_write_plan_composition", "skips"):
if section not in coverage:
failures.append({"code": "selector_chain_coverage_section_missing", "label": label, "section": section, "path": str(path)})
if resolve_overrides.get("attempted") is not True:
@@ -207,10 +211,23 @@ def validate_selector_chain(
})
if composition.get("composed") is True and composition.get("status") in {None, "skipped_no_saved_state_target"}:
failures.append({"code": "selector_chain_composed_status_unexpected", "label": label, "path": str(path), "composition": composition})
if not isinstance(form_composition.get("attempted"), bool):
failures.append({"code": "selector_chain_form_composition_attempted_not_boolean", "label": label, "path": str(path), "composition": form_composition})
if not isinstance(form_composition.get("composed"), bool):
failures.append({"code": "selector_chain_form_composed_not_boolean", "label": label, "path": str(path), "composition": form_composition})
if form_composition.get("candidate") is True and form_composition.get("composed") is not True:
failures.append({"code": "selector_chain_form_target_not_composed", "label": label, "path": str(path), "composition": form_composition})
if form_composition.get("composed") is True and form_composition.get("name_first") is not True:
failures.append({"code": "selector_chain_form_composition_not_name_first", "label": label, "path": str(path), "composition": form_composition})
if skips is None:
failures.append({"code": "selector_chain_skips_not_list", "label": label, "path": str(path), "skips": coverage.get("skips")})
if require_composition and composition.get("composed") is not True:
failures.append({"code": "selector_chain_composition_required", "label": label, "path": str(path), "composition": composition})
if require_composition and (
form_composition.get("composed") is not True
or form_composition.get("name_first") is not True
):
failures.append({"code": "selector_chain_form_composition_required", "label": label, "path": str(path), "composition": form_composition})
steps = report.get("steps") if isinstance(report.get("steps"), list) else []
for step in steps:
if not isinstance(step, dict):
@@ -1445,6 +1462,15 @@ def write_self_test_reports(report_dir: Path, *, base_id: str, composed: bool, s
"composed": composed,
"from_write_plan_target": composed,
},
"form_write_plan_composition": {
"attempted": composed,
"search_attempted": composed,
"search_status": "ok" if composed else None,
"candidate": composed,
"status": "planned" if composed else None,
"composed": composed,
"name_first": composed,
},
"skips": [] if composed else [{"step": "metadata.write.plan", "status": "skipped_no_saved_state_target"}],
},
"steps": [
@@ -1970,6 +1996,7 @@ def run_self_test() -> dict[str, Any]:
strict_codes = {str(failure.get("code")) for failure in strict_skip["failures"]}
for expected in (
"selector_chain_composition_required",
"selector_chain_form_composition_required",
"saved_state_form_write_required",
"saved_state_module_write_required",
):