fix(delivery): recompute motion requirement after source-led override

This commit is contained in:
Your Name
2026-07-04 19:37:33 +05:30
parent f4b8b90a24
commit 84532dae63
2 changed files with 30 additions and 4 deletions

View File

@@ -227,14 +227,14 @@ def classify_from_brief(
if user_intent.get("motion_required") is False and promise_type == PromiseType.MOTION_LED:
promise_type = PromiseType.HYBRID
motion_required = user_intent.get("motion_required", promise_type in (
PromiseType.MOTION_LED, PromiseType.AVATAR_PRESENTER,
))
source_required = user_intent.get("has_footage", False)
if source_required and promise_type not in (PromiseType.SOURCE_LED, PromiseType.LOCALIZATION):
promise_type = PromiseType.SOURCE_LED
motion_required = user_intent.get("motion_required", promise_type in (
PromiseType.MOTION_LED, PromiseType.AVATAR_PRESENTER,
))
tone_mode = user_intent.get("tone", "corporate")
quality_floor = user_intent.get("quality", "presentable")

View File

@@ -0,0 +1,26 @@
from lib.delivery_promise import PromiseType, classify_from_brief
def test_classify_from_brief_source_led_reclassification_clears_motion_requirement() -> None:
promise = classify_from_brief("talking-head", {"has_footage": True})
assert promise.promise_type == PromiseType.SOURCE_LED
assert promise.source_required is True
assert promise.motion_required is False
def test_classify_from_brief_explicit_motion_override_survives_reclassification() -> None:
promise = classify_from_brief(
"talking-head",
{"has_footage": True, "motion_required": True},
)
assert promise.promise_type == PromiseType.SOURCE_LED
assert promise.motion_required is True
def test_classify_from_brief_avatar_defaults_stay_motion_required_without_footage() -> None:
promise = classify_from_brief("talking-head", {})
assert promise.promise_type == PromiseType.AVATAR_PRESENTER
assert promise.motion_required is True