Adds migration 0018 with unique (recipe_id, position) constraints on recipe_ingredients and recipe_steps, removes the read-time guard so the detail read relies on position alone, and adds regression tests for duplicate rejection and migration failure on existing duplicate data (fail fast). Run the documented duplicate check against production before deploying.
Maestro task 75bb8cc1-fd30-4050-90d2-a1627a865b22.
Adds migration 0018 with unique (recipe_id, position) constraints on recipe_ingredients and recipe_steps, removes the read-time guard so the detail read relies on position alone, and adds regression tests for duplicate rejection and migration failure on existing duplicate data (fail fast). Run the documented duplicate check against production before deploying.
Add migration 0018 with unique indexes on recipe_ingredients and
recipe_steps (recipe_id, position), so a recipe can never hold two
ingredients or two steps at one position. The dinner detail read now
orders by position alone and drops its read-time duplicate check; a
database already holding a duplicate fails the migration.
Maestro task 75bb8cc1-fd30-4050-90d2-a1627a865b22
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Maestro task 75bb8cc1-fd30-4050-90d2-a1627a865b22.
Adds migration 0018 with unique (recipe_id, position) constraints on recipe_ingredients and recipe_steps, removes the read-time guard so the detail read relies on position alone, and adds regression tests for duplicate rejection and migration failure on existing duplicate data (fail fast). Run the documented duplicate check against production before deploying.
Independent Codex gpt-6-sol review: APPROVED for this exact commit.
Independent Codex gpt-6-sol review: APPROVED for this exact commit.