From a0fae4535ea011230046d7e9fe2ab32cf7626346 Mon Sep 17 00:00:00 2001 From: CleverThis Date: Wed, 15 Apr 2026 16:38:29 +0000 Subject: [PATCH 1/4] fix(test): add root_plan_id to raw SQL in plan_phase_migration constraint tests The step_try_insert_plan_with_phase_and_state function was using raw SQL to insert a plan with an invalid phase value to test the CHECK constraint. However, the raw SQL was missing the root_plan_id column, which is NOT NULL in the schema. This caused the insert to fail with a NOT NULL violation instead of the intended CHECK constraint violation on the phase column. This fix adds root_plan_id to the raw SQL INSERT statement, setting it to the same value as plan_id (for a root plan). This allows the test to properly exercise the CHECK constraint on the phase column, ensuring the test fails for the correct reason. ISSUES CLOSED: #9411 --- features/steps/plan_phase_migration_steps.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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", -- 2.52.0 From be8cd9b8145a81e7516167703f87a2ca7e9fe271 Mon Sep 17 00:00:00 2001 From: HAL9000 Date: Fri, 24 Apr 2026 11:53:14 +0000 Subject: [PATCH 2/4] fix(test): update a2a SDK TDD test to use Client instead of A2AClient --- features/tdd_a2a_sdk_dependency.feature | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/features/tdd_a2a_sdk_dependency.feature b/features/tdd_a2a_sdk_dependency.feature index 92f23ff48..fefe0eb43 100644 --- a/features/tdd_a2a_sdk_dependency.feature +++ b/features/tdd_a2a_sdk_dependency.feature @@ -18,6 +18,6 @@ Feature: A2A Python SDK is a declared project dependency Then the import should succeed without errors @tdd_issue @tdd_issue_4273 - Scenario: a2a SDK provides the A2AClient class - When I import "a2a.client" and access "A2AClient" - Then the "A2AClient" class should be available + Scenario: a2a SDK provides the Client class + When I import "a2a.client" and access "Client" + Then the "Client" class should be available -- 2.52.0 From 70612e0585ca24d2fb45f144828e81182611bf15 Mon Sep 17 00:00:00 2001 From: HAL9000 Date: Sat, 25 Apr 2026 00:16:18 +0000 Subject: [PATCH 3/4] ci: retrigger CI for bugfix/m3 branch after infrastructure failure -- 2.52.0 From 54385d5b4206124f0705ef0475924db8baa3ad05 Mon Sep 17 00:00:00 2001 From: CleverThis Date: Sat, 2 May 2026 23:52:48 +0000 Subject: [PATCH 4/4] ci: retrigger CI after infrastructure failure (attempt 2) -- 2.52.0