test_task_policy.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. from __future__ import annotations
  2. from script_build_host.domain.artifacts import DirectionConstraint
  3. from script_build_host.domain.task_contracts import PlannerCriterionInput, ScriptTaskKind
  4. from script_build_host.domain.task_policy import TaskPolicyCatalog
  5. def test_task_policy_injects_protected_kind_and_direction_constraint_criteria() -> None:
  6. catalog = TaskPolicyCatalog()
  7. criteria = catalog.criteria(
  8. task_id="paragraph-task",
  9. task_kind=ScriptTaskKind.PARAGRAPH,
  10. business=(
  11. PlannerCriterionInput(
  12. client_key="business-quality",
  13. description="the opening is memorable",
  14. hard=False,
  15. ),
  16. ),
  17. direction_constraints=(
  18. DirectionConstraint(
  19. constraint_id="facts-traceable",
  20. statement="Every factual claim remains traceable",
  21. rationale="hard publication rule",
  22. ),
  23. ),
  24. )
  25. assert criteria[0].criterion_id == "paragraph-content-complete"
  26. assert criteria[0].hard is True
  27. assert criteria[1].criterion_id == "direction-constraint-facts-traceable"
  28. assert criteria[1].hard is True
  29. assert criteria[2].description == "the opening is memorable"
  30. assert criteria[2].hard is False