| 12345678910111213141516171819202122232425262728293031323334 |
- from __future__ import annotations
- from script_build_host.domain.artifacts import DirectionConstraint
- from script_build_host.domain.task_contracts import PlannerCriterionInput, ScriptTaskKind
- from script_build_host.domain.task_policy import TaskPolicyCatalog
- def test_task_policy_injects_protected_kind_and_direction_constraint_criteria() -> None:
- catalog = TaskPolicyCatalog()
- criteria = catalog.criteria(
- task_id="paragraph-task",
- task_kind=ScriptTaskKind.PARAGRAPH,
- business=(
- PlannerCriterionInput(
- client_key="business-quality",
- description="the opening is memorable",
- hard=False,
- ),
- ),
- direction_constraints=(
- DirectionConstraint(
- constraint_id="facts-traceable",
- statement="Every factual claim remains traceable",
- rationale="hard publication rule",
- ),
- ),
- )
- assert criteria[0].criterion_id == "paragraph-content-complete"
- assert criteria[0].hard is True
- assert criteria[1].criterion_id == "direction-constraint-facts-traceable"
- assert criteria[1].hard is True
- assert criteria[2].description == "the opening is memorable"
- assert criteria[2].hard is False
|