diff --git a/features/steps/plan_phase_migration_steps.py b/features/steps/plan_phase_migration_steps.py index 9d1efa751..cff1c01ed 100644 --- a/features/steps/plan_phase_migration_steps.py +++ b/features/steps/plan_phase_migration_steps.py @@ -113,7 +113,11 @@ def step_insert_plan_with_phase_and_state(context: Any, phase: str, state: str) def step_try_insert_plan_with_phase_and_state( context: Any, phase: str, state: str ) -> None: - """Try to insert a plan with the specified phase and state, expecting failure.""" + """Try inserting a plan without ORM defaults to exercise the phase constraint. + + The direct SQL insert must provide both plan_id and root_plan_id so the + phase constraint is validated instead of failing on missing root_plan_id. + """ session: Session = context.phase_rebaseline_session ulid = _next_ulid() now = _now_iso() @@ -121,14 +125,15 @@ def step_try_insert_plan_with_phase_and_state( session.execute( text( "INSERT INTO v3_plans " - "(plan_id, action_name, namespaced_name, namespace, " + "(plan_id, root_plan_id, action_name, namespaced_name, namespace, " "phase, processing_state, description, tags_json, " "created_at, updated_at) " - "VALUES (:pid, :aname, :nname, :ns, :phase, :state, " + "VALUES (:pid, :rpid, :aname, :nname, :ns, :phase, :state, " ":desc, :tags, :cat, :uat)" ), { "pid": ulid, + "rpid": ulid, "aname": "local/phase-test-action", "nname": "local/try-plan", "ns": "local",