{ "directed": false, "multigraph": false, "graph": {}, "nodes": [ { "label": "database.py", "file_type": "code", "source_file": "backend/app/database.py", "source_location": "L1", "community": 27, "norm_label": "database.py", "id": "backend_app_database_py" }, { "label": "get_db()", "file_type": "code", "source_file": "backend/app/database.py", "source_location": "L11", "community": 27, "norm_label": "get_db()", "id": "database_get_db" }, { "label": "security.py", "file_type": "code", "source_file": "backend/app/security.py", "source_location": "L1", "community": 27, "norm_label": "security.py", "id": "backend_app_security_py" }, { "label": "require_admin()", "file_type": "code", "source_file": "backend/app/security.py", "source_location": "L29", "community": 27, "norm_label": "require_admin()", "id": "security_require_admin" }, { "label": "_signer()", "file_type": "code", "source_file": "backend/app/security.py", "source_location": "L45", "community": 27, "norm_label": "_signer()", "id": "security_signer" }, { "label": "issue_session()", "file_type": "code", "source_file": "backend/app/security.py", "source_location": "L49", "community": 27, "norm_label": "issue_session()", "id": "security_issue_session" }, { "label": "require_session()", "file_type": "code", "source_file": "backend/app/security.py", "source_location": "L54", "community": 27, "norm_label": "require_session()", "id": "security_require_session" }, { "label": "Auth dependencies for the MealPlanner backend. Two flavors: - ``require_admin``", "file_type": "rationale", "source_file": "backend/app/security.py", "source_location": "L1", "community": 27, "norm_label": "auth dependencies for the mealplanner backend. two flavors: - ``require_admin``", "id": "security_rationale_1" }, { "label": "Enforce a shared bearer token. 401 on bad/missing token, 503 if unset.", "file_type": "rationale", "source_file": "backend/app/security.py", "source_location": "L30", "community": 27, "norm_label": "enforce a shared bearer token. 401 on bad/missing token, 503 if unset.", "id": "security_rationale_30" }, { "label": "Sign the family_profile_id and return the cookie value.", "file_type": "rationale", "source_file": "backend/app/security.py", "source_location": "L50", "community": 27, "norm_label": "sign the family_profile_id and return the cookie value.", "id": "security_rationale_50" }, { "label": "Auto-authenticate: return the first family_profile_id from the DB. No cooki", "file_type": "rationale", "source_file": "backend/app/security.py", "source_location": "L55", "community": 27, "norm_label": "auto-authenticate: return the first family_profile_id from the db. no cooki", "id": "security_rationale_55" }, { "label": "main.py", "file_type": "code", "source_file": "backend/app/main.py", "source_location": "L1", "community": 0, "norm_label": "main.py", "id": "backend_app_main_py" }, { "label": "health_check()", "file_type": "code", "source_file": "backend/app/main.py", "source_location": "L19", "community": 0, "norm_label": "health_check()", "id": "main_health_check" }, { "label": "health_check_db()", "file_type": "code", "source_file": "backend/app/main.py", "source_location": "L24", "community": 0, "norm_label": "health_check_db()", "id": "main_health_check_db" }, { "label": "config.py", "file_type": "code", "source_file": "backend/app/config.py", "source_location": "L1", "community": 20, "norm_label": "config.py", "id": "backend_app_config_py" }, { "label": "Settings", "file_type": "code", "source_file": "backend/app/config.py", "source_location": "L6", "community": 20, "norm_label": "settings", "id": "config_settings" }, { "label": "BaseSettings", "file_type": "code", "source_file": "", "source_location": "", "community": 20, "norm_label": "basesettings", "id": "basesettings" }, { "label": "Config", "file_type": "code", "source_file": "backend/app/config.py", "source_location": "L41", "community": 20, "norm_label": "config", "id": "config_config" }, { "label": "_require_database_url()", "file_type": "code", "source_file": "backend/app/config.py", "source_location": "L45", "community": 20, "norm_label": "_require_database_url()", "id": "config_require_database_url" }, { "label": "__init__.py", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L1", "community": 0, "norm_label": "__init__.py", "id": "backend_app_models_init_py" }, { "label": "DayOfWeek", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L13", "community": 0, "norm_label": "dayofweek", "id": "init_dayofweek" }, { "label": "MealType", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L23", "community": 0, "norm_label": "mealtype", "id": "init_mealtype" }, { "label": "MealPlanStatus", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L29", "community": 0, "norm_label": "mealplanstatus", "id": "init_mealplanstatus" }, { "label": "MealPlanItemStatus", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L36", "community": 0, "norm_label": "mealplanitemstatus", "id": "init_mealplanitemstatus" }, { "label": "str", "file_type": "code", "source_file": "", "source_location": "", "community": 0, "norm_label": "str", "id": "str" }, { "label": "ApprovalTokenStatus", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L43", "community": 0, "norm_label": "approvaltokenstatus", "id": "init_approvaltokenstatus" }, { "label": "FamilyMemberRole", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L49", "community": 0, "norm_label": "familymemberrole", "id": "init_familymemberrole" }, { "label": "DenialReason", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L54", "community": 0, "norm_label": "denialreason", "id": "init_denialreason" }, { "label": "NeverSuggestReason", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L62", "community": 0, "norm_label": "neversuggestreason", "id": "init_neversuggestreason" }, { "label": "ScrapeStatus", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L69", "community": 0, "norm_label": "scrapestatus", "id": "init_scrapestatus" }, { "label": "EmailStatus", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L75", "community": 0, "norm_label": "emailstatus", "id": "init_emailstatus" }, { "label": "IngredientMatchSource", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L82", "community": 0, "norm_label": "ingredientmatchsource", "id": "init_ingredientmatchsource" }, { "label": "FamilyProfile", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L88", "community": 0, "norm_label": "familyprofile", "id": "init_familyprofile" }, { "label": "Base", "file_type": "code", "source_file": "", "source_location": "", "community": 0, "norm_label": "base", "id": "base" }, { "label": "FamilyMember", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L120", "community": 0, "norm_label": "familymember", "id": "init_familymember" }, { "label": "Ingredient", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L141", "community": 0, "norm_label": "ingredient", "id": "init_ingredient" }, { "label": "Recipe", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L161", "community": 0, "norm_label": "recipe", "id": "init_recipe" }, { "label": "total_time_minutes()", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L191", "community": 0, "norm_label": "total_time_minutes()", "id": "init_total_time_minutes" }, { "label": "MealPlan", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L195", "community": 0, "norm_label": "mealplan", "id": "init_mealplan" }, { "label": "MealPlanItem", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L216", "community": 0, "norm_label": "mealplanitem", "id": "init_mealplanitem" }, { "label": "MealPlanVote", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L243", "community": 5, "norm_label": "mealplanvote", "id": "init_mealplanvote" }, { "label": "ApprovalToken", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L260", "community": 0, "norm_label": "approvaltoken", "id": "init_approvaltoken" }, { "label": "HomePantry", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L280", "community": 0, "norm_label": "homepantry", "id": "init_homepantry" }, { "label": "Feedback", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L300", "community": 0, "norm_label": "feedback", "id": "init_feedback" }, { "label": "NeverSuggest", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L322", "community": 0, "norm_label": "neversuggest", "id": "init_neversuggest" }, { "label": "GroceryItem", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L337", "community": 0, "norm_label": "groceryitem", "id": "init_groceryitem" }, { "label": "ScrapeLog", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L364", "community": 0, "norm_label": "scrapelog", "id": "init_scrapelog" }, { "label": "EmailLog", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L378", "community": 0, "norm_label": "emaillog", "id": "init_emaillog" }, { "label": "IngredientGroceryMatch", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L397", "community": 0, "norm_label": "ingredientgrocerymatch", "id": "init_ingredientgrocerymatch" }, { "label": "WeeklyRun", "file_type": "code", "source_file": "backend/app/models/__init__.py", "source_location": "L415", "community": 5, "norm_label": "weeklyrun", "id": "init_weeklyrun" }, { "label": "__init__.py", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L1", "community": 2, "norm_label": "__init__.py", "id": "backend_app_schemas_init_py" }, { "label": "Enum", "file_type": "code", "source_file": "", "source_location": "", "community": 0, "norm_label": "enum", "id": "enum" }, { "label": "IngredientBase", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L48", "community": 2, "norm_label": "ingredientbase", "id": "init_ingredientbase" }, { "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": "", "community": 2, "norm_label": "basemodel", "id": "basemodel" }, { "label": "IngredientResponse", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L58", "community": 2, "norm_label": "ingredientresponse", "id": "init_ingredientresponse" }, { "label": "Config", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L62", "community": 2, "norm_label": "config", "id": "init_config" }, { "label": "IngredientCreate", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L66", "community": 2, "norm_label": "ingredientcreate", "id": "init_ingredientcreate" }, { "label": "FamilyMemberBase", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L70", "community": 2, "norm_label": "familymemberbase", "id": "init_familymemberbase" }, { "label": "FamilyMemberResponse", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L77", "community": 2, "norm_label": "familymemberresponse", "id": "init_familymemberresponse" }, { "label": "FamilyMemberCreate", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L87", "community": 2, "norm_label": "familymembercreate", "id": "init_familymembercreate" }, { "label": "FamilyProfileBase", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L91", "community": 2, "norm_label": "familyprofilebase", "id": "init_familyprofilebase" }, { "label": "FamilyProfileResponse", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L100", "community": 2, "norm_label": "familyprofileresponse", "id": "init_familyprofileresponse" }, { "label": "FamilyProfileCreate", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L110", "community": 2, "norm_label": "familyprofilecreate", "id": "init_familyprofilecreate" }, { "label": "FamilyProfileUpdate", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L114", "community": 2, "norm_label": "familyprofileupdate", "id": "init_familyprofileupdate" }, { "label": "RecipeIngredient", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L123", "community": 2, "norm_label": "recipeingredient", "id": "init_recipeingredient" }, { "label": "_normalize()", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L133", "community": 2, "norm_label": "_normalize()", "id": "init_normalize" }, { "label": "RecipeBase", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L142", "community": 2, "norm_label": "recipebase", "id": "init_recipebase" }, { "label": "RecipeResponse", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L161", "community": 2, "norm_label": "reciperesponse", "id": "init_reciperesponse" }, { "label": "RecipeCreate", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L173", "community": 2, "norm_label": "recipecreate", "id": "init_recipecreate" }, { "label": "MealPlanItemBase", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L177", "community": 2, "norm_label": "mealplanitembase", "id": "init_mealplanitembase" }, { "label": "MealPlanItemResponse", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L184", "community": 2, "norm_label": "mealplanitemresponse", "id": "init_mealplanitemresponse" }, { "label": "MealPlanItemCreate", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L199", "community": 2, "norm_label": "mealplanitemcreate", "id": "init_mealplanitemcreate" }, { "label": "MealPlanBase", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L203", "community": 2, "norm_label": "mealplanbase", "id": "init_mealplanbase" }, { "label": "MealPlanResponse", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L210", "community": 2, "norm_label": "mealplanresponse", "id": "init_mealplanresponse" }, { "label": "MealPlanCreate", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L222", "community": 2, "norm_label": "mealplancreate", "id": "init_mealplancreate" }, { "label": "VoteRequest", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L226", "community": 2, "norm_label": "voterequest", "id": "init_voterequest" }, { "label": "VoteResponse", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L232", "community": 2, "norm_label": "voteresponse", "id": "init_voteresponse" }, { "label": "HomePantryBase", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L243", "community": 2, "norm_label": "homepantrybase", "id": "init_homepantrybase" }, { "label": "HomePantryResponse", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L250", "community": 2, "norm_label": "homepantryresponse", "id": "init_homepantryresponse" }, { "label": "HomePantryCreate", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L261", "community": 2, "norm_label": "homepantrycreate", "id": "init_homepantrycreate" }, { "label": "FeedbackBase", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L265", "community": 2, "norm_label": "feedbackbase", "id": "init_feedbackbase" }, { "label": "FeedbackResponse", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L272", "community": 2, "norm_label": "feedbackresponse", "id": "init_feedbackresponse" }, { "label": "FeedbackCreate", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L283", "community": 2, "norm_label": "feedbackcreate", "id": "init_feedbackcreate" }, { "label": "ShoppingListItem", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L287", "community": 2, "norm_label": "shoppinglistitem", "id": "init_shoppinglistitem" }, { "label": "ShoppingListResponse", "file_type": "code", "source_file": "backend/app/schemas/__init__.py", "source_location": "L300", "community": 2, "norm_label": "shoppinglistresponse", "id": "init_shoppinglistresponse" }, { "label": "ingredient.py", "file_type": "code", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L1", "community": 2, "norm_label": "ingredient.py", "id": "backend_app_schemas_ingredient_py" }, { "label": "IngredientBase", "file_type": "code", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L10", "community": 2, "norm_label": "ingredientbase", "id": "ingredient_ingredientbase" }, { "label": "_strip_and_drop_empty()", "file_type": "code", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L19", "community": 2, "norm_label": "_strip_and_drop_empty()", "id": "ingredient_strip_and_drop_empty" }, { "label": "IngredientCreate", "file_type": "code", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L23", "community": 2, "norm_label": "ingredientcreate", "id": "ingredient_ingredientcreate" }, { "label": "IngredientUpdate", "file_type": "code", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L27", "community": 2, "norm_label": "ingredientupdate", "id": "ingredient_ingredientupdate" }, { "label": "IngredientRead", "file_type": "code", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L42", "community": 2, "norm_label": "ingredientread", "id": "ingredient_ingredientread" }, { "label": "IngredientGroceryMatchRead", "file_type": "code", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L48", "community": 2, "norm_label": "ingredientgrocerymatchread", "id": "ingredient_ingredientgrocerymatchread" }, { "label": "recipe.py", "file_type": "code", "source_file": "backend/app/schemas/recipe.py", "source_location": "L1", "community": 2, "norm_label": "recipe.py", "id": "backend_app_schemas_recipe_py" }, { "label": "RecipeIngredientRef", "file_type": "code", "source_file": "backend/app/schemas/recipe.py", "source_location": "L10", "community": 2, "norm_label": "recipeingredientref", "id": "recipe_recipeingredientref" }, { "label": "RecipeBase", "file_type": "code", "source_file": "backend/app/schemas/recipe.py", "source_location": "L17", "community": 2, "norm_label": "recipebase", "id": "recipe_recipebase" }, { "label": "RecipeCreate", "file_type": "code", "source_file": "backend/app/schemas/recipe.py", "source_location": "L34", "community": 2, "norm_label": "recipecreate", "id": "recipe_recipecreate" }, { "label": "RecipeUpdate", "file_type": "code", "source_file": "backend/app/schemas/recipe.py", "source_location": "L38", "community": 2, "norm_label": "recipeupdate", "id": "recipe_recipeupdate" }, { "label": "RecipeRead", "file_type": "code", "source_file": "backend/app/schemas/recipe.py", "source_location": "L54", "community": 2, "norm_label": "reciperead", "id": "recipe_reciperead" }, { "label": "ResolveIngredientRequest", "file_type": "code", "source_file": "backend/app/schemas/recipe.py", "source_location": "L60", "community": 2, "norm_label": "resolveingredientrequest", "id": "recipe_resolveingredientrequest" }, { "label": "ResolveIngredientCandidate", "file_type": "code", "source_file": "backend/app/schemas/recipe.py", "source_location": "L64", "community": 2, "norm_label": "resolveingredientcandidate", "id": "recipe_resolveingredientcandidate" }, { "label": "ResolveIngredientResponse", "file_type": "code", "source_file": "backend/app/schemas/recipe.py", "source_location": "L71", "community": 2, "norm_label": "resolveingredientresponse", "id": "recipe_resolveingredientresponse" }, { "label": "never_suggest.py", "file_type": "code", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L1", "community": 2, "norm_label": "never_suggest.py", "id": "backend_app_schemas_never_suggest_py" }, { "label": "NeverSuggestCreate", "file_type": "code", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L9", "community": 2, "norm_label": "neversuggestcreate", "id": "never_suggest_neversuggestcreate" }, { "label": "_exactly_one_target()", "file_type": "code", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L17", "community": 2, "norm_label": "_exactly_one_target()", "id": "never_suggest_exactly_one_target" }, { "label": "NeverSuggestRead", "file_type": "code", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L24", "community": 2, "norm_label": "neversuggestread", "id": "never_suggest_neversuggestread" }, { "label": "meal_plan_generation.py", "file_type": "code", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L1", "community": 2, "norm_label": "meal_plan_generation.py", "id": "backend_app_schemas_meal_plan_generation_py" }, { "label": "GenerateRequest", "file_type": "code", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L11", "community": 2, "norm_label": "generaterequest", "id": "meal_plan_generation_generaterequest" }, { "label": "RegenerateRequest", "file_type": "code", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L16", "community": 2, "norm_label": "regeneraterequest", "id": "meal_plan_generation_regeneraterequest" }, { "label": "GenerationItem", "file_type": "code", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L25", "community": 2, "norm_label": "generationitem", "id": "meal_plan_generation_generationitem" }, { "label": "GenerationDebug", "file_type": "code", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L33", "community": 2, "norm_label": "generationdebug", "id": "meal_plan_generation_generationdebug" }, { "label": "GenerationResponse", "file_type": "code", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L39", "community": 2, "norm_label": "generationresponse", "id": "meal_plan_generation_generationresponse" }, { "label": "profile.py", "file_type": "code", "source_file": "backend/app/api/profile.py", "source_location": "L1", "community": 0, "norm_label": "profile.py", "id": "backend_app_api_profile_py" }, { "label": "get_profile()", "file_type": "code", "source_file": "backend/app/api/profile.py", "source_location": "L17", "community": 0, "norm_label": "get_profile()", "id": "profile_get_profile" }, { "label": "update_profile()", "file_type": "code", "source_file": "backend/app/api/profile.py", "source_location": "L25", "community": 0, "norm_label": "update_profile()", "id": "profile_update_profile" }, { "label": "get_members()", "file_type": "code", "source_file": "backend/app/api/profile.py", "source_location": "L40", "community": 0, "norm_label": "get_members()", "id": "profile_get_members" }, { "label": "add_member()", "file_type": "code", "source_file": "backend/app/api/profile.py", "source_location": "L48", "community": 0, "norm_label": "add_member()", "id": "profile_add_member" }, { "label": "delete_member()", "file_type": "code", "source_file": "backend/app/api/profile.py", "source_location": "L74", "community": 0, "norm_label": "delete_member()", "id": "profile_delete_member" }, { "label": "pantry.py", "file_type": "code", "source_file": "backend/app/api/pantry.py", "source_location": "L1", "community": 0, "norm_label": "pantry.py", "id": "backend_app_api_pantry_py" }, { "label": "get_pantry_items()", "file_type": "code", "source_file": "backend/app/api/pantry.py", "source_location": "L14", "community": 0, "norm_label": "get_pantry_items()", "id": "pantry_get_pantry_items" }, { "label": "add_pantry_item()", "file_type": "code", "source_file": "backend/app/api/pantry.py", "source_location": "L26", "community": 0, "norm_label": "add_pantry_item()", "id": "pantry_add_pantry_item" }, { "label": "remove_pantry_item()", "file_type": "code", "source_file": "backend/app/api/pantry.py", "source_location": "L59", "community": 0, "norm_label": "remove_pantry_item()", "id": "pantry_remove_pantry_item" }, { "label": "update_pantry_item()", "file_type": "code", "source_file": "backend/app/api/pantry.py", "source_location": "L70", "community": 0, "norm_label": "update_pantry_item()", "id": "pantry_update_pantry_item" }, { "label": "auth.py", "file_type": "code", "source_file": "backend/app/api/auth.py", "source_location": "L1", "community": 27, "norm_label": "auth.py", "id": "backend_app_api_auth_py" }, { "label": "LoginRequest", "file_type": "code", "source_file": "backend/app/api/auth.py", "source_location": "L26", "community": 27, "norm_label": "loginrequest", "id": "auth_loginrequest" }, { "label": "login()", "file_type": "code", "source_file": "backend/app/api/auth.py", "source_location": "L31", "community": 27, "norm_label": "login()", "id": "auth_login" }, { "label": "logout()", "file_type": "code", "source_file": "backend/app/api/auth.py", "source_location": "L64", "community": 27, "norm_label": "logout()", "id": "auth_logout" }, { "label": "Family-shared session login. POST /api/auth/login \u2014 body ``{\"password\": \"...\"}`", "file_type": "rationale", "source_file": "backend/app/api/auth.py", "source_location": "L1", "community": 27, "norm_label": "family-shared session login. post /api/auth/login \u2014 body ``{\"password\": \"...\"}`", "id": "auth_rationale_1" }, { "label": "shopping_list.py", "file_type": "code", "source_file": "backend/app/api/shopping_list.py", "source_location": "L1", "community": 2, "norm_label": "shopping_list.py", "id": "backend_app_api_shopping_list_py" }, { "label": "_parse_uuid()", "file_type": "code", "source_file": "backend/app/api/shopping_list.py", "source_location": "L18", "community": 2, "norm_label": "_parse_uuid()", "id": "shopping_list_parse_uuid" }, { "label": "get_shopping_list()", "file_type": "code", "source_file": "backend/app/api/shopping_list.py", "source_location": "L28", "community": 2, "norm_label": "get_shopping_list()", "id": "shopping_list_get_shopping_list" }, { "label": "print_shopping_list()", "file_type": "code", "source_file": "backend/app/api/shopping_list.py", "source_location": "L155", "community": 2, "norm_label": "print_shopping_list()", "id": "shopping_list_print_shopping_list" }, { "label": "recipes.py", "file_type": "code", "source_file": "backend/app/api/recipes.py", "source_location": "L1", "community": 2, "norm_label": "recipes.py", "id": "backend_app_api_recipes_py" }, { "label": "_validate_ingredient_ids()", "file_type": "code", "source_file": "backend/app/api/recipes.py", "source_location": "L32", "community": 2, "norm_label": "_validate_ingredient_ids()", "id": "recipes_validate_ingredient_ids" }, { "label": "_serialize()", "file_type": "code", "source_file": "backend/app/api/recipes.py", "source_location": "L46", "community": 2, "norm_label": "_serialize()", "id": "recipes_serialize" }, { "label": "list_recipes()", "file_type": "code", "source_file": "backend/app/api/recipes.py", "source_location": "L67", "community": 2, "norm_label": "list_recipes()", "id": "recipes_list_recipes" }, { "label": "get_recipe()", "file_type": "code", "source_file": "backend/app/api/recipes.py", "source_location": "L81", "community": 2, "norm_label": "get_recipe()", "id": "recipes_get_recipe" }, { "label": "create_recipe()", "file_type": "code", "source_file": "backend/app/api/recipes.py", "source_location": "L89", "community": 2, "norm_label": "create_recipe()", "id": "recipes_create_recipe" }, { "label": "update_recipe()", "file_type": "code", "source_file": "backend/app/api/recipes.py", "source_location": "L115", "community": 2, "norm_label": "update_recipe()", "id": "recipes_update_recipe" }, { "label": "delete_recipe()", "file_type": "code", "source_file": "backend/app/api/recipes.py", "source_location": "L132", "community": 2, "norm_label": "delete_recipe()", "id": "recipes_delete_recipe" }, { "label": "_parse_qty_unit()", "file_type": "code", "source_file": "backend/app/api/recipes.py", "source_location": "L152", "community": 2, "norm_label": "_parse_qty_unit()", "id": "recipes_parse_qty_unit" }, { "label": "resolve_ingredient()", "file_type": "code", "source_file": "backend/app/api/recipes.py", "source_location": "L171", "community": 2, "norm_label": "resolve_ingredient()", "id": "recipes_resolve_ingredient" }, { "label": "ingredients.py", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L1", "community": 0, "norm_label": "ingredients.py", "id": "backend_app_api_ingredients_py" }, { "label": "list_ingredients()", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L33", "community": 0, "norm_label": "list_ingredients()", "id": "ingredients_list_ingredients" }, { "label": "get_ingredient()", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L51", "community": 0, "norm_label": "get_ingredient()", "id": "ingredients_get_ingredient" }, { "label": "create_ingredient()", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L59", "community": 0, "norm_label": "create_ingredient()", "id": "ingredients_create_ingredient" }, { "label": "update_ingredient()", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L79", "community": 0, "norm_label": "update_ingredient()", "id": "ingredients_update_ingredient" }, { "label": "delete_ingredient()", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L108", "community": 0, "norm_label": "delete_ingredient()", "id": "ingredients_delete_ingredient" }, { "label": "_PinMatchBody", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L117", "community": 2, "norm_label": "_pinmatchbody", "id": "ingredients_pinmatchbody" }, { "label": "pin_match()", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L127", "community": 0, "norm_label": "pin_match()", "id": "ingredients_pin_match" }, { "label": "unpin_match()", "file_type": "code", "source_file": "backend/app/api/ingredients.py", "source_location": "L170", "community": 0, "norm_label": "unpin_match()", "id": "ingredients_unpin_match" }, { "label": "never_suggest.py", "file_type": "code", "source_file": "backend/app/api/never_suggest.py", "source_location": "L1", "community": 0, "norm_label": "never_suggest.py", "id": "backend_app_api_never_suggest_py" }, { "label": "_coerce_reason()", "file_type": "code", "source_file": "backend/app/api/never_suggest.py", "source_location": "L23", "community": 0, "norm_label": "_coerce_reason()", "id": "never_suggest_coerce_reason" }, { "label": "list_for_family()", "file_type": "code", "source_file": "backend/app/api/never_suggest.py", "source_location": "L33", "community": 0, "norm_label": "list_for_family()", "id": "never_suggest_list_for_family" }, { "label": "block()", "file_type": "code", "source_file": "backend/app/api/never_suggest.py", "source_location": "L45", "community": 0, "norm_label": "block()", "id": "never_suggest_block" }, { "label": "unblock()", "file_type": "code", "source_file": "backend/app/api/never_suggest.py", "source_location": "L64", "community": 0, "norm_label": "unblock()", "id": "never_suggest_unblock" }, { "label": "meal_plans.py", "file_type": "code", "source_file": "backend/app/api/meal_plans.py", "source_location": "L1", "community": 2, "norm_label": "meal_plans.py", "id": "backend_app_api_meal_plans_py" }, { "label": "_to_response()", "file_type": "code", "source_file": "backend/app/api/meal_plans.py", "source_location": "L33", "community": 2, "norm_label": "_to_response()", "id": "meal_plans_to_response" }, { "label": "generate()", "file_type": "code", "source_file": "backend/app/api/meal_plans.py", "source_location": "L60", "community": 2, "norm_label": "generate()", "id": "meal_plans_generate" }, { "label": "regenerate()", "file_type": "code", "source_file": "backend/app/api/meal_plans.py", "source_location": "L82", "community": 2, "norm_label": "regenerate()", "id": "meal_plans_regenerate" }, { "label": "get_plan()", "file_type": "code", "source_file": "backend/app/api/meal_plans.py", "source_location": "L120", "community": 2, "norm_label": "get_plan()", "id": "meal_plans_get_plan" }, { "label": "admin.py", "file_type": "code", "source_file": "backend/app/api/admin.py", "source_location": "L1", "community": 0, "norm_label": "admin.py", "id": "backend_app_api_admin_py" }, { "label": "trigger_scrape()", "file_type": "code", "source_file": "backend/app/api/admin.py", "source_location": "L14", "community": 0, "norm_label": "trigger_scrape()", "id": "admin_trigger_scrape" }, { "label": "get_logs()", "file_type": "code", "source_file": "backend/app/api/admin.py", "source_location": "L30", "community": 0, "norm_label": "get_logs()", "id": "admin_get_logs" }, { "label": "get_log()", "file_type": "code", "source_file": "backend/app/api/admin.py", "source_location": "L60", "community": 0, "norm_label": "get_log()", "id": "admin_get_log" }, { "label": "get_email_logs()", "file_type": "code", "source_file": "backend/app/api/admin.py", "source_location": "L78", "community": 0, "norm_label": "get_email_logs()", "id": "admin_get_email_logs" }, { "label": "get_all_meal_plans()", "file_type": "code", "source_file": "backend/app/api/admin.py", "source_location": "L107", "community": 0, "norm_label": "get_all_meal_plans()", "id": "admin_get_all_meal_plans" }, { "label": "test_email()", "file_type": "code", "source_file": "backend/app/api/admin.py", "source_location": "L134", "community": 0, "norm_label": "test_email()", "id": "admin_test_email" }, { "label": "get_stats()", "file_type": "code", "source_file": "backend/app/api/admin.py", "source_location": "L171", "community": 0, "norm_label": "get_stats()", "id": "admin_get_stats" }, { "label": "feedback.py", "file_type": "code", "source_file": "backend/app/api/feedback.py", "source_location": "L1", "community": 0, "norm_label": "feedback.py", "id": "backend_app_api_feedback_py" }, { "label": "get_feedback()", "file_type": "code", "source_file": "backend/app/api/feedback.py", "source_location": "L17", "community": 0, "norm_label": "get_feedback()", "id": "feedback_get_feedback" }, { "label": "create_feedback()", "file_type": "code", "source_file": "backend/app/api/feedback.py", "source_location": "L39", "community": 0, "norm_label": "create_feedback()", "id": "feedback_create_feedback" }, { "label": "Get existing feedback for a meal plan item.", "file_type": "rationale", "source_file": "backend/app/api/feedback.py", "source_location": "L22", "community": 0, "norm_label": "get existing feedback for a meal plan item.", "id": "feedback_rationale_22" }, { "label": "Create or update feedback for a meal plan item.", "file_type": "rationale", "source_file": "backend/app/api/feedback.py", "source_location": "L44", "community": 0, "norm_label": "create or update feedback for a meal plan item.", "id": "feedback_rationale_44" }, { "label": "meals.py", "file_type": "code", "source_file": "backend/app/api/meals.py", "source_location": "L1", "community": 10, "norm_label": "meals.py", "id": "backend_app_api_meals_py" }, { "label": "get_planned_meals()", "file_type": "code", "source_file": "backend/app/api/meals.py", "source_location": "L30", "community": 10, "norm_label": "get_planned_meals()", "id": "meals_get_planned_meals" }, { "label": "create_meal_plan()", "file_type": "code", "source_file": "backend/app/api/meals.py", "source_location": "L46", "community": 0, "norm_label": "create_meal_plan()", "id": "meals_create_meal_plan" }, { "label": "get_meal_plan()", "file_type": "code", "source_file": "backend/app/api/meals.py", "source_location": "L85", "community": 10, "norm_label": "get_meal_plan()", "id": "meals_get_meal_plan" }, { "label": "lock_meal_plan()", "file_type": "code", "source_file": "backend/app/api/meals.py", "source_location": "L93", "community": 10, "norm_label": "lock_meal_plan()", "id": "meals_lock_meal_plan" }, { "label": "VoteSubmission", "file_type": "code", "source_file": "backend/app/api/meals.py", "source_location": "L109", "community": 10, "norm_label": "votesubmission", "id": "meals_votesubmission" }, { "label": "get_vote_page()", "file_type": "code", "source_file": "backend/app/api/meals.py", "source_location": "L119", "community": 10, "norm_label": "get_vote_page()", "id": "meals_get_vote_page" }, { "label": "submit_vote()", "file_type": "code", "source_file": "backend/app/api/meals.py", "source_location": "L251", "community": 10, "norm_label": "submit_vote()", "id": "meals_submit_vote" }, { "label": "get_meal_item()", "file_type": "code", "source_file": "backend/app/api/meals.py", "source_location": "L301", "community": 10, "norm_label": "get_meal_item()", "id": "meals_get_meal_item" }, { "label": "swap_meal_item()", "file_type": "code", "source_file": "backend/app/api/meals.py", "source_location": "L323", "community": 10, "norm_label": "swap_meal_item()", "id": "meals_swap_meal_item" }, { "label": "approve_meal_item()", "file_type": "code", "source_file": "backend/app/api/meals.py", "source_location": "L342", "community": 10, "norm_label": "approve_meal_item()", "id": "meals_approve_meal_item" }, { "label": "deny_meal_item()", "file_type": "code", "source_file": "backend/app/api/meals.py", "source_location": "L353", "community": 10, "norm_label": "deny_meal_item()", "id": "meals_deny_meal_item" }, { "label": "generate_single_item()", "file_type": "code", "source_file": "backend/app/api/meals.py", "source_location": "L364", "community": 0, "norm_label": "generate_single_item()", "id": "meals_generate_single_item" }, { "label": "move_meal_item()", "file_type": "code", "source_file": "backend/app/api/meals.py", "source_location": "L413", "community": 10, "norm_label": "move_meal_item()", "id": "meals_move_meal_item" }, { "label": "Body for POST /vote/{item_id}?token=... Spec body: {\"vote\": \"approve\" | \"de", "file_type": "rationale", "source_file": "backend/app/api/meals.py", "source_location": "L110", "community": 10, "norm_label": "body for post /vote/{item_id}?token=... spec body: {\"vote\": \"approve\" | \"de", "id": "meals_rationale_110" }, { "label": "Render the per-voter approval confirmation page. Verifies the signed token", "file_type": "rationale", "source_file": "backend/app/api/meals.py", "source_location": "L124", "community": 10, "norm_label": "render the per-voter approval confirmation page. verifies the signed token", "id": "meals_rationale_124" }, { "label": "Record a per-voter vote and apply the approval rule. - Single-use enforceme", "file_type": "rationale", "source_file": "backend/app/api/meals.py", "source_location": "L257", "community": 10, "norm_label": "record a per-voter vote and apply the approval rule. - single-use enforceme", "id": "meals_rationale_257" }, { "label": "Directly approve a meal plan item from the dashboard.", "file_type": "rationale", "source_file": "backend/app/api/meals.py", "source_location": "L343", "community": 10, "norm_label": "directly approve a meal plan item from the dashboard.", "id": "meals_rationale_343" }, { "label": "Directly deny a meal plan item from the dashboard.", "file_type": "rationale", "source_file": "backend/app/api/meals.py", "source_location": "L354", "community": 10, "norm_label": "directly deny a meal plan item from the dashboard.", "id": "meals_rationale_354" }, { "label": "Generate a single meal for an empty slot.", "file_type": "rationale", "source_file": "backend/app/api/meals.py", "source_location": "L370", "community": 0, "norm_label": "generate a single meal for an empty slot.", "id": "meals_rationale_370" }, { "label": "Move a meal to a new day/type slot. If the target slot is occupied by anoth", "file_type": "rationale", "source_file": "backend/app/api/meals.py", "source_location": "L419", "community": 10, "norm_label": "move a meal to a new day/type slot. if the target slot is occupied by anoth", "id": "meals_rationale_419" }, { "label": "orchestrate.py", "file_type": "code", "source_file": "backend/app/api/orchestrate.py", "source_location": "L1", "community": 0, "norm_label": "orchestrate.py", "id": "backend_app_api_orchestrate_py" }, { "label": "orchestrate_status()", "file_type": "code", "source_file": "backend/app/api/orchestrate.py", "source_location": "L15", "community": 0, "norm_label": "orchestrate_status()", "id": "orchestrate_orchestrate_status" }, { "label": "orchestrate_run_week()", "file_type": "code", "source_file": "backend/app/api/orchestrate.py", "source_location": "L41", "community": 0, "norm_label": "orchestrate_run_week()", "id": "orchestrate_orchestrate_run_week" }, { "label": "orchestrate_step()", "file_type": "code", "source_file": "backend/app/api/orchestrate.py", "source_location": "L51", "community": 0, "norm_label": "orchestrate_step()", "id": "orchestrate_orchestrate_step" }, { "label": "__init__.py", "file_type": "code", "source_file": "backend/app/services/__init__.py", "source_location": "L1", "community": 8, "norm_label": "__init__.py", "id": "backend_app_services_init_py" }, { "label": "approval.py", "file_type": "code", "source_file": "backend/app/services/approval.py", "source_location": "L1", "community": 10, "norm_label": "approval.py", "id": "backend_app_services_approval_py" }, { "label": "_serializer()", "file_type": "code", "source_file": "backend/app/services/approval.py", "source_location": "L33", "community": 10, "norm_label": "_serializer()", "id": "approval_serializer" }, { "label": "issue_token()", "file_type": "code", "source_file": "backend/app/services/approval.py", "source_location": "L37", "community": 10, "norm_label": "issue_token()", "id": "approval_issue_token" }, { "label": "verify_token()", "file_type": "code", "source_file": "backend/app/services/approval.py", "source_location": "L45", "community": 10, "norm_label": "verify_token()", "id": "approval_verify_token" }, { "label": "consume_token()", "file_type": "code", "source_file": "backend/app/services/approval.py", "source_location": "L57", "community": 10, "norm_label": "consume_token()", "id": "approval_consume_token" }, { "label": "Per-voter approval tokens. Stateless signed tokens (itsdangerous) keyed on sett", "file_type": "rationale", "source_file": "backend/app/services/approval.py", "source_location": "L1", "community": 10, "norm_label": "per-voter approval tokens. stateless signed tokens (itsdangerous) keyed on sett", "id": "approval_rationale_1" }, { "label": "Verify + match URL + enforce single-use. Returns the voter on success. Sing", "file_type": "rationale", "source_file": "backend/app/services/approval.py", "source_location": "L63", "community": 10, "norm_label": "verify + match url + enforce single-use. returns the voter on success. sing", "id": "approval_rationale_63" }, { "label": "swiftly_auth.py", "file_type": "code", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L1", "community": 4, "norm_label": "swiftly_auth.py", "id": "backend_app_services_swiftly_auth_py" }, { "label": "SwiftlyAuthMintError", "file_type": "code", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L28", "community": 4, "norm_label": "swiftlyauthminterror", "id": "swiftly_auth_swiftlyauthminterror" }, { "label": "Exception", "file_type": "code", "source_file": "", "source_location": "", "community": 4, "norm_label": "exception", "id": "exception" }, { "label": "_reset_cache_for_tests()", "file_type": "code", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L51", "community": 4, "norm_label": "_reset_cache_for_tests()", "id": "swiftly_auth_reset_cache_for_tests" }, { "label": "_decode_jwt_payload()", "file_type": "code", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L59", "community": 4, "norm_label": "_decode_jwt_payload()", "id": "swiftly_auth_decode_jwt_payload" }, { "label": "_fetch_firebase_api_key()", "file_type": "code", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L72", "community": 4, "norm_label": "_fetch_firebase_api_key()", "id": "swiftly_auth_fetch_firebase_api_key" }, { "label": "mint_anonymous_token()", "file_type": "code", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L105", "community": 4, "norm_label": "mint_anonymous_token()", "id": "swiftly_auth_mint_anonymous_token" }, { "label": "get_token()", "file_type": "code", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L160", "community": 4, "norm_label": "get_token()", "id": "swiftly_auth_get_token" }, { "label": "Swiftly bearer-JWT auto-mint via Firebase REST. Replaces the static ``SWIFTLY_B", "file_type": "rationale", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L1", "community": 4, "norm_label": "swiftly bearer-jwt auto-mint via firebase rest. replaces the static ``swiftly_b", "id": "swiftly_auth_rationale_1" }, { "label": "Raised when minting a fresh Swiftly JWT fails. Surface the message verbatim", "file_type": "rationale", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L29", "community": 4, "norm_label": "raised when minting a fresh swiftly jwt fails. surface the message verbatim", "id": "swiftly_auth_rationale_29" }, { "label": "Clear the process-local cache. Test-only helper.", "file_type": "rationale", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L52", "community": 4, "norm_label": "clear the process-local cache. test-only helper.", "id": "swiftly_auth_rationale_52" }, { "label": "Mint a fresh anonymous Firebase ID token. Returns ``(token, exp_epoch_secon", "file_type": "rationale", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L106", "community": 4, "norm_label": "mint a fresh anonymous firebase id token. returns ``(token, exp_epoch_secon", "id": "swiftly_auth_rationale_106" }, { "label": "Return a valid Swiftly bearer JWT, minting one if needed. A cached token is", "file_type": "rationale", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L161", "community": 4, "norm_label": "return a valid swiftly bearer jwt, minting one if needed. a cached token is", "id": "swiftly_auth_rationale_161" }, { "label": "email.py", "file_type": "code", "source_file": "backend/app/services/email.py", "source_location": "L1", "community": 5, "norm_label": "email.py", "id": "backend_app_services_email_py" }, { "label": "EmailBackend", "file_type": "code", "source_file": "backend/app/services/email.py", "source_location": "L29", "community": 5, "norm_label": "emailbackend", "id": "email_emailbackend" }, { "label": "Protocol", "file_type": "code", "source_file": "", "source_location": "", "community": 5, "norm_label": "protocol", "id": "protocol" }, { "label": ".send()", "file_type": "code", "source_file": "backend/app/services/email.py", "source_location": "L30", "community": 5, "norm_label": ".send()", "id": "email_emailbackend_send" }, { "label": "ConsoleEmailBackend", "file_type": "code", "source_file": "backend/app/services/email.py", "source_location": "L40", "community": 5, "norm_label": "consoleemailbackend", "id": "email_consoleemailbackend" }, { "label": ".send()", "file_type": "code", "source_file": "backend/app/services/email.py", "source_location": "L46", "community": 5, "norm_label": ".send()", "id": "email_consoleemailbackend_send" }, { "label": "SendGridEmailBackend", "file_type": "code", "source_file": "backend/app/services/email.py", "source_location": "L70", "community": 5, "norm_label": "sendgridemailbackend", "id": "email_sendgridemailbackend" }, { "label": ".__init__()", "file_type": "code", "source_file": "backend/app/services/email.py", "source_location": "L71", "community": 5, "norm_label": ".__init__()", "id": "email_sendgridemailbackend_init" }, { "label": ".send()", "file_type": "code", "source_file": "backend/app/services/email.py", "source_location": "L76", "community": 5, "norm_label": ".send()", "id": "email_sendgridemailbackend_send" }, { "label": "get_email_backend()", "file_type": "code", "source_file": "backend/app/services/email.py", "source_location": "L98", "community": 5, "norm_label": "get_email_backend()", "id": "email_get_email_backend" }, { "label": "Email backends. R2-B spike: only ConsoleEmailBackend is functional. SendGrid is", "file_type": "rationale", "source_file": "backend/app/services/email.py", "source_location": "L1", "community": 5, "norm_label": "email backends. r2-b spike: only consoleemailbackend is functional. sendgrid is", "id": "email_rationale_1" }, { "label": "Dev/spike backend. Prints to stdout AND appends a JSON line to backend/var/e", "file_type": "rationale", "source_file": "backend/app/services/email.py", "source_location": "L41", "community": 5, "norm_label": "dev/spike backend. prints to stdout and appends a json line to backend/var/e", "id": "email_rationale_41" }, { "label": "matcher.py", "file_type": "code", "source_file": "backend/app/services/matcher.py", "source_location": "L1", "community": 24, "norm_label": "matcher.py", "id": "backend_app_services_matcher_py" }, { "label": "_singularize()", "file_type": "code", "source_file": "backend/app/services/matcher.py", "source_location": "L42", "community": 24, "norm_label": "_singularize()", "id": "matcher_singularize" }, { "label": "MatchResult", "file_type": "code", "source_file": "backend/app/services/matcher.py", "source_location": "L87", "community": 24, "norm_label": "matchresult", "id": "matcher_matchresult" }, { "label": "_sig_words()", "file_type": "code", "source_file": "backend/app/services/matcher.py", "source_location": "L93", "community": 24, "norm_label": "_sig_words()", "id": "matcher_sig_words" }, { "label": "run_match_job()", "file_type": "code", "source_file": "backend/app/services/matcher.py", "source_location": "L103", "community": 0, "norm_label": "run_match_job()", "id": "matcher_run_match_job" }, { "label": "Fuzzy ingredient\u2192grocery_item matcher. Ingredient-centric: for each ingredient,", "file_type": "rationale", "source_file": "backend/app/services/matcher.py", "source_location": "L1", "community": 24, "norm_label": "fuzzy ingredient\u2192grocery_item matcher. ingredient-centric: for each ingredient,", "id": "matcher_rationale_1" }, { "label": "Best-effort English singularization for grocery product names. Handles 'tor", "file_type": "rationale", "source_file": "backend/app/services/matcher.py", "source_location": "L43", "community": 24, "norm_label": "best-effort english singularization for grocery product names. handles 'tor", "id": "matcher_rationale_43" }, { "label": "Lowercase alpha tokens >2 chars, stop-words removed, plurals normalized.", "file_type": "rationale", "source_file": "backend/app/services/matcher.py", "source_location": "L94", "community": 24, "norm_label": "lowercase alpha tokens >2 chars, stop-words removed, plurals normalized.", "id": "matcher_rationale_94" }, { "label": "Refresh AUTO ingredient_grocery_match rows for grocery items from `source_filter", "file_type": "rationale", "source_file": "backend/app/services/matcher.py", "source_location": "L109", "community": 0, "norm_label": "refresh auto ingredient_grocery_match rows for grocery items from `source_filter", "id": "matcher_rationale_109" }, { "label": "scraper_service.py", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L1", "community": 0, "norm_label": "scraper_service.py", "id": "backend_app_services_scraper_service_py" }, { "label": "enqueue_scrape()", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L36", "community": 0, "norm_label": "enqueue_scrape()", "id": "scraper_service_enqueue_scrape" }, { "label": "_run_scrape_in_background()", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L65", "community": 4, "norm_label": "_run_scrape_in_background()", "id": "scraper_service_run_scrape_in_background" }, { "label": "ScraperService", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L123", "community": 0, "norm_label": "scraperservice", "id": "scraper_service_scraperservice" }, { "label": ".__init__()", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L124", "community": 0, "norm_label": ".__init__()", "id": "scraper_service_scraperservice_init" }, { "label": ".run_scrape()", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L127", "community": 0, "norm_label": ".run_scrape()", "id": "scraper_service_scraperservice_run_scrape" }, { "label": "._do_scrape()", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L180", "community": 4, "norm_label": "._do_scrape()", "id": "scraper_service_scraperservice_do_scrape" }, { "label": "._save_grocery_item()", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L200", "community": 0, "norm_label": "._save_grocery_item()", "id": "scraper_service_scraperservice_save_grocery_item" }, { "label": ".get_sale_items()", "file_type": "code", "source_file": "backend/app/services/scraper_service.py", "source_location": "L285", "community": 0, "norm_label": ".get_sale_items()", "id": "scraper_service_scraperservice_get_sale_items" }, { "label": "Scraper service. Two entry points: - ``enqueue_scrape(db, source, scrape_type,", "file_type": "rationale", "source_file": "backend/app/services/scraper_service.py", "source_location": "L1", "community": 0, "norm_label": "scraper service. two entry points: - ``enqueue_scrape(db, source, scrape_type,", "id": "scraper_service_rationale_1" }, { "label": "Create the ScrapeLog row, commit, and schedule the background scrape. Retur", "file_type": "rationale", "source_file": "backend/app/services/scraper_service.py", "source_location": "L43", "community": 0, "norm_label": "create the scrapelog row, commit, and schedule the background scrape. retur", "id": "scraper_service_rationale_43" }, { "label": "Background entry point. Opens a fresh DB session \u2014 the request-scoped sessio", "file_type": "rationale", "source_file": "backend/app/services/scraper_service.py", "source_location": "L68", "community": 4, "norm_label": "background entry point. opens a fresh db session \u2014 the request-scoped sessio", "id": "scraper_service_rationale_68" }, { "label": "Synchronous end-to-end scrape (legacy path). Creates the log row, runs t", "file_type": "rationale", "source_file": "backend/app/services/scraper_service.py", "source_location": "L130", "community": 0, "norm_label": "synchronous end-to-end scrape (legacy path). creates the log row, runs t", "id": "scraper_service_rationale_130" }, { "label": "Run the scraper and persist items. Returns (saved, found). Raises any s", "file_type": "rationale", "source_file": "backend/app/services/scraper_service.py", "source_location": "L181", "community": 4, "norm_label": "run the scraper and persist items. returns (saved, found). raises any s", "id": "scraper_service_rationale_181" }, { "label": "llm_matcher.py", "file_type": "code", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L1", "community": 24, "norm_label": "llm_matcher.py", "id": "backend_app_services_llm_matcher_py" }, { "label": "_get_candidates()", "file_type": "code", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L38", "community": 24, "norm_label": "_get_candidates()", "id": "llm_matcher_get_candidates" }, { "label": "_get_unmatched_ingredients()", "file_type": "code", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L86", "community": 24, "norm_label": "_get_unmatched_ingredients()", "id": "llm_matcher_get_unmatched_ingredients" }, { "label": "_ask_ollama()", "file_type": "code", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L97", "community": 24, "norm_label": "_ask_ollama()", "id": "llm_matcher_ask_ollama" }, { "label": "run_llm_match_job()", "file_type": "code", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L147", "community": 24, "norm_label": "run_llm_match_job()", "id": "llm_matcher_run_llm_match_job" }, { "label": "LLM-powered second-pass ingredient\u2192grocery matcher. After the deterministic AUT", "file_type": "rationale", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L1", "community": 24, "norm_label": "llm-powered second-pass ingredient\u2192grocery matcher. after the deterministic aut", "id": "llm_matcher_rationale_1" }, { "label": "Return up to ``_CANDIDATE_LIMIT`` grocery items ranked by fuzzy\u00d7precision.", "file_type": "rationale", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L42", "community": 24, "norm_label": "return up to ``_candidate_limit`` grocery items ranked by fuzzy\u00d7precision.", "id": "llm_matcher_rationale_42" }, { "label": "Ingredients with no existing match in ingredient_grocery_match.", "file_type": "rationale", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L87", "community": 24, "norm_label": "ingredients with no existing match in ingredient_grocery_match.", "id": "llm_matcher_rationale_87" }, { "label": "Ask the LLM to pick the best grocery item for the ingredient. Returns the 0", "file_type": "rationale", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L98", "community": 24, "norm_label": "ask the llm to pick the best grocery item for the ingredient. returns the 0", "id": "llm_matcher_rationale_98" }, { "label": "LLM second pass: match remaining unmatched ingredients. For each ingredient", "file_type": "rationale", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L152", "community": 24, "norm_label": "llm second pass: match remaining unmatched ingredients. for each ingredient", "id": "llm_matcher_rationale_152" }, { "label": "__init__.py", "file_type": "code", "source_file": "backend/app/services/planner/__init__.py", "source_location": "L1", "community": 8, "norm_label": "__init__.py", "id": "backend_app_services_planner_init_py" }, { "label": "config.py", "file_type": "code", "source_file": "backend/app/services/planner/config.py", "source_location": "L1", "community": 6, "norm_label": "config.py", "id": "backend_app_services_planner_config_py" }, { "label": "PlannerConfig", "file_type": "code", "source_file": "backend/app/services/planner/config.py", "source_location": "L8", "community": 6, "norm_label": "plannerconfig", "id": "config_plannerconfig" }, { "label": ".validate()", "file_type": "code", "source_file": "backend/app/services/planner/config.py", "source_location": "L35", "community": 6, "norm_label": ".validate()", "id": "config_plannerconfig_validate" }, { "label": "Planner constants. Tune here without touching algorithm code.", "file_type": "rationale", "source_file": "backend/app/services/planner/config.py", "source_location": "L1", "community": 6, "norm_label": "planner constants. tune here without touching algorithm code.", "id": "config_rationale_1" }, { "label": "types.py", "file_type": "code", "source_file": "backend/app/services/planner/types.py", "source_location": "L1", "community": 6, "norm_label": "types.py", "id": "backend_app_services_planner_types_py" }, { "label": "IngredientCost", "file_type": "code", "source_file": "backend/app/services/planner/types.py", "source_location": "L11", "community": 32, "norm_label": "ingredientcost", "id": "types_ingredientcost" }, { "label": "RecipeCost", "file_type": "code", "source_file": "backend/app/services/planner/types.py", "source_location": "L26", "community": 6, "norm_label": "recipecost", "id": "types_recipecost" }, { "label": "sale_coverage_pct()", "file_type": "code", "source_file": "backend/app/services/planner/types.py", "source_location": "L37", "community": 6, "norm_label": "sale_coverage_pct()", "id": "types_sale_coverage_pct" }, { "label": "pantry_hit_pct()", "file_type": "code", "source_file": "backend/app/services/planner/types.py", "source_location": "L43", "community": 6, "norm_label": "pantry_hit_pct()", "id": "types_pantry_hit_pct" }, { "label": "FilterResult", "file_type": "code", "source_file": "backend/app/services/planner/types.py", "source_location": "L50", "community": 6, "norm_label": "filterresult", "id": "types_filterresult" }, { "label": "ScoredRecipe", "file_type": "code", "source_file": "backend/app/services/planner/types.py", "source_location": "L56", "community": 6, "norm_label": "scoredrecipe", "id": "types_scoredrecipe" }, { "label": "GenerationResult", "file_type": "code", "source_file": "backend/app/services/planner/types.py", "source_location": "L66", "community": 6, "norm_label": "generationresult", "id": "types_generationresult" }, { "label": "Shared planner data structures.", "file_type": "rationale", "source_file": "backend/app/services/planner/types.py", "source_location": "L1", "community": 6, "norm_label": "shared planner data structures.", "id": "types_rationale_1" }, { "label": "cost.py", "file_type": "code", "source_file": "backend/app/services/planner/cost.py", "source_location": "L1", "community": 32, "norm_label": "cost.py", "id": "backend_app_services_planner_cost_py" }, { "label": "_decimal()", "file_type": "code", "source_file": "backend/app/services/planner/cost.py", "source_location": "L30", "community": 32, "norm_label": "_decimal()", "id": "cost_decimal" }, { "label": "_scale()", "file_type": "code", "source_file": "backend/app/services/planner/cost.py", "source_location": "L36", "community": 32, "norm_label": "_scale()", "id": "cost_scale" }, { "label": "compute_recipe_cost()", "file_type": "code", "source_file": "backend/app/services/planner/cost.py", "source_location": "L40", "community": 32, "norm_label": "compute_recipe_cost()", "id": "cost_compute_recipe_cost" }, { "label": "Compute per-recipe cost and savings against ingredient_grocery_match. Inputs:", "file_type": "rationale", "source_file": "backend/app/services/planner/cost.py", "source_location": "L1", "community": 32, "norm_label": "compute per-recipe cost and savings against ingredient_grocery_match. inputs:", "id": "cost_rationale_1" }, { "label": "filter.py", "file_type": "code", "source_file": "backend/app/services/planner/filter.py", "source_location": "L1", "community": 6, "norm_label": "filter.py", "id": "backend_app_services_planner_filter_py" }, { "label": "_calorie_band()", "file_type": "code", "source_file": "backend/app/services/planner/filter.py", "source_location": "L12", "community": 6, "norm_label": "_calorie_band()", "id": "filter_calorie_band" }, { "label": "filter_recipes()", "file_type": "code", "source_file": "backend/app/services/planner/filter.py", "source_location": "L17", "community": 6, "norm_label": "filter_recipes()", "id": "filter_filter_recipes" }, { "label": "Hard-constraint filter (constraints #1-#6 from the spec).", "file_type": "rationale", "source_file": "backend/app/services/planner/filter.py", "source_location": "L1", "community": 6, "norm_label": "hard-constraint filter (constraints #1-#6 from the spec).", "id": "filter_rationale_1" }, { "label": "score.py", "file_type": "code", "source_file": "backend/app/services/planner/score.py", "source_location": "L1", "community": 6, "norm_label": "score.py", "id": "backend_app_services_planner_score_py" }, { "label": "time_bonus()", "file_type": "code", "source_file": "backend/app/services/planner/score.py", "source_location": "L13", "community": 6, "norm_label": "time_bonus()", "id": "score_time_bonus" }, { "label": "recency_bonus()", "file_type": "code", "source_file": "backend/app/services/planner/score.py", "source_location": "L23", "community": 6, "norm_label": "recency_bonus()", "id": "score_recency_bonus" }, { "label": "normalize_savings()", "file_type": "code", "source_file": "backend/app/services/planner/score.py", "source_location": "L42", "community": 6, "norm_label": "normalize_savings()", "id": "score_normalize_savings" }, { "label": "score_recipes()", "file_type": "code", "source_file": "backend/app/services/planner/score.py", "source_location": "L52", "community": 6, "norm_label": "score_recipes()", "id": "score_score_recipes" }, { "label": "Per-recipe scoring with the 5 weighted signals from the spec.", "file_type": "rationale", "source_file": "backend/app/services/planner/score.py", "source_location": "L1", "community": 6, "norm_label": "per-recipe scoring with the 5 weighted signals from the spec.", "id": "score_rationale_1" }, { "label": "Returns recipes scored DESC. Caller passes only the feasible set.", "file_type": "rationale", "source_file": "backend/app/services/planner/score.py", "source_location": "L60", "community": 6, "norm_label": "returns recipes scored desc. caller passes only the feasible set.", "id": "score_rationale_60" }, { "label": "select.py", "file_type": "code", "source_file": "backend/app/services/planner/select.py", "source_location": "L1", "community": 6, "norm_label": "select.py", "id": "backend_app_services_planner_select_py" }, { "label": "set_diversity_penalty()", "file_type": "code", "source_file": "backend/app/services/planner/select.py", "source_location": "L16", "community": 6, "norm_label": "set_diversity_penalty()", "id": "select_set_diversity_penalty" }, { "label": "_set_score()", "file_type": "code", "source_file": "backend/app/services/planner/select.py", "source_location": "L29", "community": 6, "norm_label": "_set_score()", "id": "select_set_score" }, { "label": "select_set()", "file_type": "code", "source_file": "backend/app/services/planner/select.py", "source_location": "L33", "community": 6, "norm_label": "select_set()", "id": "select_select_set" }, { "label": "Top-K set enumeration with diversity penalty. Takes the top K (=20) scored reci", "file_type": "rationale", "source_file": "backend/app/services/planner/select.py", "source_location": "L1", "community": 6, "norm_label": "top-k set enumeration with diversity penalty. takes the top k (=20) scored reci", "id": "select_rationale_1" }, { "label": "generate.py", "file_type": "code", "source_file": "backend/app/services/planner/generate.py", "source_location": "L1", "community": 6, "norm_label": "generate.py", "id": "backend_app_services_planner_generate_py" }, { "label": "_load_match_index()", "file_type": "code", "source_file": "backend/app/services/planner/generate.py", "source_location": "L32", "community": 6, "norm_label": "_load_match_index()", "id": "generate_load_match_index" }, { "label": "_load_blocklists()", "file_type": "code", "source_file": "backend/app/services/planner/generate.py", "source_location": "L55", "community": 6, "norm_label": "_load_blocklists()", "id": "generate_load_blocklists" }, { "label": "_load_pantry()", "file_type": "code", "source_file": "backend/app/services/planner/generate.py", "source_location": "L68", "community": 6, "norm_label": "_load_pantry()", "id": "generate_load_pantry" }, { "label": "_load_last_cooked()", "file_type": "code", "source_file": "backend/app/services/planner/generate.py", "source_location": "L76", "community": 6, "norm_label": "_load_last_cooked()", "id": "generate_load_last_cooked" }, { "label": "generate_meal_plan()", "file_type": "code", "source_file": "backend/app/services/planner/generate.py", "source_location": "L92", "community": 6, "norm_label": "generate_meal_plan()", "id": "generate_generate_meal_plan" }, { "label": "End-to-end planner orchestration: load \u2192 filter \u2192 score \u2192 select \u2192 persist.", "file_type": "rationale", "source_file": "backend/app/services/planner/generate.py", "source_location": "L1", "community": 6, "norm_label": "end-to-end planner orchestration: load \u2192 filter \u2192 score \u2192 select \u2192 persist.", "id": "generate_rationale_1" }, { "label": "ingredient_id \u2192 list of match dicts ordered by confidence DESC.", "file_type": "rationale", "source_file": "backend/app/services/planner/generate.py", "source_location": "L33", "community": 6, "norm_label": "ingredient_id \u2192 list of match dicts ordered by confidence desc.", "id": "generate_rationale_33" }, { "label": "__init__.py", "file_type": "code", "source_file": "backend/app/services/orchestrator/__init__.py", "source_location": "L1", "community": 8, "norm_label": "__init__.py", "id": "backend_app_services_orchestrator_init_py" }, { "label": "alerts.py", "file_type": "code", "source_file": "backend/app/services/orchestrator/alerts.py", "source_location": "L1", "community": 5, "norm_label": "alerts.py", "id": "backend_app_services_orchestrator_alerts_py" }, { "label": "send_admin_alert()", "file_type": "code", "source_file": "backend/app/services/orchestrator/alerts.py", "source_location": "L9", "community": 5, "norm_label": "send_admin_alert()", "id": "alerts_send_admin_alert" }, { "label": "runner.py", "file_type": "code", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L1", "community": 5, "norm_label": "runner.py", "id": "backend_app_services_orchestrator_runner_py" }, { "label": "_current_week_start()", "file_type": "code", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L20", "community": 5, "norm_label": "_current_week_start()", "id": "runner_current_week_start" }, { "label": "_get_or_create_run()", "file_type": "code", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L27", "community": 5, "norm_label": "_get_or_create_run()", "id": "runner_get_or_create_run" }, { "label": "run_step()", "file_type": "code", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L50", "community": 5, "norm_label": "run_step()", "id": "runner_run_step" }, { "label": "run_week()", "file_type": "code", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L84", "community": 5, "norm_label": "run_week()", "id": "runner_run_week" }, { "label": "Orchestrator runner. run_step(step_name, week_start_date) \u2014 execute one step f", "file_type": "rationale", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L1", "community": 5, "norm_label": "orchestrator runner. run_step(step_name, week_start_date) \u2014 execute one step f", "id": "runner_rationale_1" }, { "label": "Return the most recent Friday (today if today is Friday).", "file_type": "rationale", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L21", "community": 5, "norm_label": "return the most recent friday (today if today is friday).", "id": "runner_rationale_21" }, { "label": "steps.py", "file_type": "code", "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L1", "community": 5, "norm_label": "steps.py", "id": "backend_app_services_orchestrator_steps_py" }, { "label": "step_scrape()", "file_type": "code", "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L34", "community": 5, "norm_label": "step_scrape()", "id": "steps_step_scrape" }, { "label": "step_generate()", "file_type": "code", "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L67", "community": 5, "norm_label": "step_generate()", "id": "steps_step_generate" }, { "label": "step_email()", "file_type": "code", "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L92", "community": 5, "norm_label": "step_email()", "id": "steps_step_email" }, { "label": "step_deadline()", "file_type": "code", "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L297", "community": 5, "norm_label": "step_deadline()", "id": "steps_step_deadline" }, { "label": "step_finalize()", "file_type": "code", "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L335", "community": 5, "norm_label": "step_finalize()", "id": "steps_step_finalize" }, { "label": "step_reminder()", "file_type": "code", "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L460", "community": 5, "norm_label": "step_reminder()", "id": "steps_step_reminder" }, { "label": "Orchestrator step functions. Each step receives a WeeklyRun row and an open Ses", "file_type": "rationale", "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L1", "community": 5, "norm_label": "orchestrator step functions. each step receives a weeklyrun row and an open ses", "id": "steps_rationale_1" }, { "label": "base.py", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L1", "community": 25, "norm_label": "base.py", "id": "backend_app_scraper_base_py" }, { "label": "BaseScraper", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L14", "community": 25, "norm_label": "basescraper", "id": "base_basescraper" }, { "label": "ABC", "file_type": "code", "source_file": "", "source_location": "", "community": 25, "norm_label": "abc", "id": "abc" }, { "label": ".__init__()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L15", "community": 25, "norm_label": ".__init__()", "id": "base_basescraper_init" }, { "label": "._create_session()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L29", "community": 25, "norm_label": "._create_session()", "id": "base_basescraper_create_session" }, { "label": "._rate_limit()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L51", "community": 25, "norm_label": "._rate_limit()", "id": "base_basescraper_rate_limit" }, { "label": "._get()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L59", "community": 25, "norm_label": "._get()", "id": "base_basescraper_get" }, { "label": "._post()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L80", "community": 25, "norm_label": "._post()", "id": "base_basescraper_post" }, { "label": "scrape()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L102", "community": 25, "norm_label": "scrape()", "id": "base_scrape" }, { "label": ".log_scrape()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L105", "community": 25, "norm_label": ".log_scrape()", "id": "base_basescraper_log_scrape" }, { "label": "SeleniumScraper", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L109", "community": 25, "norm_label": "seleniumscraper", "id": "base_seleniumscraper" }, { "label": ".__init__()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L110", "community": 25, "norm_label": ".__init__()", "id": "base_seleniumscraper_init" }, { "label": "._init_playwright()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L114", "community": 25, "norm_label": "._init_playwright()", "id": "base_seleniumscraper_init_playwright" }, { "label": "._get_playwright()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L123", "community": 25, "norm_label": "._get_playwright()", "id": "base_seleniumscraper_get_playwright" }, { "label": ".get_browser_page()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L127", "community": 25, "norm_label": ".get_browser_page()", "id": "base_seleniumscraper_get_browser_page" }, { "label": ".cleanup()", "file_type": "code", "source_file": "backend/app/scraper/base.py", "source_location": "L133", "community": 25, "norm_label": ".cleanup()", "id": "base_seleniumscraper_cleanup" }, { "label": "__init__.py", "file_type": "code", "source_file": "backend/app/scraper/__init__.py", "source_location": "L1", "community": 25, "norm_label": "__init__.py", "id": "backend_app_scraper_init_py" }, { "label": "lucky_ca_scraper.py", "file_type": "code", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L1", "community": 4, "norm_label": "lucky_ca_scraper.py", "id": "backend_app_scraper_lucky_ca_scraper_py" }, { "label": "SwiftlyAuthError", "file_type": "code", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L49", "community": 4, "norm_label": "swiftlyautherror", "id": "lucky_ca_scraper_swiftlyautherror" }, { "label": "LuckyCaliforniaScraper", "file_type": "code", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L67", "community": 4, "norm_label": "luckycaliforniascraper", "id": "lucky_ca_scraper_luckycaliforniascraper" }, { "label": ".__init__()", "file_type": "code", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L86", "community": 4, "norm_label": ".__init__()", "id": "lucky_ca_scraper_luckycaliforniascraper_init" }, { "label": ".cleanup()", "file_type": "code", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L129", "community": 4, "norm_label": ".cleanup()", "id": "lucky_ca_scraper_luckycaliforniascraper_cleanup" }, { "label": ".scrape()", "file_type": "code", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L138", "community": 4, "norm_label": ".scrape()", "id": "lucky_ca_scraper_luckycaliforniascraper_scrape" }, { "label": ".fetch_all()", "file_type": "code", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L157", "community": 4, "norm_label": ".fetch_all()", "id": "lucky_ca_scraper_luckycaliforniascraper_fetch_all" }, { "label": ".discover_categories()", "file_type": "code", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L179", "community": 4, "norm_label": ".discover_categories()", "id": "lucky_ca_scraper_luckycaliforniascraper_discover_categories" }, { "label": "parse_categories_html()", "file_type": "code", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L191", "community": 4, "norm_label": "parse_categories_html()", "id": "lucky_ca_scraper_parse_categories_html" }, { "label": ".fetch_category()", "file_type": "code", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L208", "community": 4, "norm_label": ".fetch_category()", "id": "lucky_ca_scraper_luckycaliforniascraper_fetch_category" }, { "label": "parse_category_response()", "file_type": "code", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L226", "community": 4, "norm_label": "parse_category_response()", "id": "lucky_ca_scraper_parse_category_response" }, { "label": "map_product()", "file_type": "code", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L240", "community": 4, "norm_label": "map_product()", "id": "lucky_ca_scraper_map_product" }, { "label": "_parse_price()", "file_type": "code", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L297", "community": 4, "norm_label": "_parse_price()", "id": "lucky_ca_scraper_parse_price" }, { "label": "_aisle_from_slug()", "file_type": "code", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L317", "community": 4, "norm_label": "_aisle_from_slug()", "id": "lucky_ca_scraper_aisle_from_slug" }, { "label": "._rate_limit()", "file_type": "code", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L325", "community": 4, "norm_label": "._rate_limit()", "id": "lucky_ca_scraper_luckycaliforniascraper_rate_limit" }, { "label": "Lucky California / Swiftly product API client. Replaces the prior Playwright +", "file_type": "rationale", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L1", "community": 4, "norm_label": "lucky california / swiftly product api client. replaces the prior playwright +", "id": "lucky_ca_scraper_rationale_1" }, { "label": "Raised when the Swiftly API returns 401. The exception message is surfaced", "file_type": "rationale", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L50", "community": 4, "norm_label": "raised when the swiftly api returns 401. the exception message is surfaced", "id": "lucky_ca_scraper_rationale_50" }, { "label": "Swiftly product-API client for the Lucky California banner. The class name", "file_type": "rationale", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L68", "community": 4, "norm_label": "swiftly product-api client for the lucky california banner. the class name", "id": "lucky_ca_scraper_rationale_68" }, { "label": "Synchronous top-level scrape. Kept for the legacy ``ScraperService.run_", "file_type": "rationale", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L139", "community": 4, "norm_label": "synchronous top-level scrape. kept for the legacy ``scraperservice.run_", "id": "lucky_ca_scraper_rationale_139" }, { "label": "Yield mapped product dicts across every discovered category.", "file_type": "rationale", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L158", "community": 4, "norm_label": "yield mapped product dicts across every discovered category.", "id": "lucky_ca_scraper_rationale_158" }, { "label": "Fetch the categories page and return the list of API slugs. The slugs l", "file_type": "rationale", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L180", "community": 4, "norm_label": "fetch the categories page and return the list of api slugs. the slugs l", "id": "lucky_ca_scraper_rationale_180" }, { "label": "Pure parser used by tests against a saved fixture.", "file_type": "rationale", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L192", "community": 4, "norm_label": "pure parser used by tests against a saved fixture.", "id": "lucky_ca_scraper_rationale_192" }, { "label": "Fetch every product in a category. Raises ``SwiftlyAuthError`` on 401.", "file_type": "rationale", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L209", "community": 4, "norm_label": "fetch every product in a category. raises ``swiftlyautherror`` on 401.", "id": "lucky_ca_scraper_rationale_209" }, { "label": "Pure parser used by tests against a saved fixture.", "file_type": "rationale", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L227", "community": 4, "norm_label": "pure parser used by tests against a saved fixture.", "id": "lucky_ca_scraper_rationale_227" }, { "label": "Convert one Swiftly product dict to a grocery_item-ready dict. Returns", "file_type": "rationale", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L247", "community": 4, "norm_label": "convert one swiftly product dict to a grocery_item-ready dict. returns", "id": "lucky_ca_scraper_rationale_247" }, { "label": "Extract ``(price, unit)`` from strings like ``\"$3.49 /lb\"``. Returns ``", "file_type": "rationale", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L298", "community": 4, "norm_label": "extract ``(price, unit)`` from strings like ``\"$3.49 /lb\"``. returns ``", "id": "lucky_ca_scraper_rationale_298" }, { "label": "``Product/meat_seafood`` \u2192 ``meat_seafood``.", "file_type": "rationale", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L318", "community": 4, "norm_label": "``product/meat_seafood`` \u2192 ``meat_seafood``.", "id": "lucky_ca_scraper_rationale_318" }, { "label": "__init__.py", "file_type": "code", "source_file": "backend/app/scheduler/__init__.py", "source_location": "L1", "community": 8, "norm_label": "__init__.py", "id": "backend_app_scheduler_init_py" }, { "label": "__main__.py", "file_type": "code", "source_file": "backend/app/scheduler/__main__.py", "source_location": "L1", "community": 8, "norm_label": "__main__.py", "id": "backend_app_scheduler_main_py" }, { "label": "APScheduler entry point for the scheduler container. Run: python -m app.schedul", "file_type": "rationale", "source_file": "backend/app/scheduler/__main__.py", "source_location": "L1", "community": 8, "norm_label": "apscheduler entry point for the scheduler container. run: python -m app.schedul", "id": "main_rationale_1" }, { "label": "env.py", "file_type": "code", "source_file": "backend/alembic/env.py", "source_location": "L1", "community": 53, "norm_label": "env.py", "id": "backend_alembic_env_py" }, { "label": "run_migrations_offline()", "file_type": "code", "source_file": "backend/alembic/env.py", "source_location": "L22", "community": 53, "norm_label": "run_migrations_offline()", "id": "env_run_migrations_offline" }, { "label": "run_migrations_online()", "file_type": "code", "source_file": "backend/alembic/env.py", "source_location": "L35", "community": 53, "norm_label": "run_migrations_online()", "id": "env_run_migrations_online" }, { "label": "0003_grocery_item_description.py", "file_type": "code", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L1", "community": 44, "norm_label": "0003_grocery_item_description.py", "id": "backend_alembic_versions_0003_grocery_item_description_py" }, { "label": "upgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L24", "community": 44, "norm_label": "upgrade()", "id": "0003_grocery_item_description_upgrade" }, { "label": "downgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L31", "community": 44, "norm_label": "downgrade()", "id": "0003_grocery_item_description_downgrade" }, { "label": "Add nullable description column to grocery_item. The Lucky California parser pr", "file_type": "rationale", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L1", "community": 44, "norm_label": "add nullable description column to grocery_item. the lucky california parser pr", "id": "0003_grocery_item_description_rationale_1" }, { "label": "0002_seed_data.py", "file_type": "code", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L1", "community": 45, "norm_label": "0002_seed_data.py", "id": "backend_alembic_versions_0002_seed_data_py" }, { "label": "upgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L17", "community": 45, "norm_label": "upgrade()", "id": "0002_seed_data_upgrade" }, { "label": "downgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L112", "community": 45, "norm_label": "downgrade()", "id": "0002_seed_data_downgrade" }, { "label": "Seed initial data Revision ID: 0002 Revises: 0001 Create Date: 2026-05-04", "file_type": "rationale", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L1", "community": 45, "norm_label": "seed initial data revision id: 0002 revises: 0001 create date: 2026-05-04", "id": "0002_seed_data_rationale_1" }, { "label": "0004_family_profile_calorie_target.py", "file_type": "code", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L1", "community": 46, "norm_label": "0004_family_profile_calorie_target.py", "id": "backend_alembic_versions_0004_family_profile_calorie_target_py" }, { "label": "upgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L22", "community": 46, "norm_label": "upgrade()", "id": "0004_family_profile_calorie_target_upgrade" }, { "label": "downgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L29", "community": 46, "norm_label": "downgrade()", "id": "0004_family_profile_calorie_target_downgrade" }, { "label": "Add calorie_target to family_profile Revision ID: 0004 Revises: 0003 Create Dat", "file_type": "rationale", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L1", "community": 46, "norm_label": "add calorie_target to family_profile revision id: 0004 revises: 0003 create dat", "id": "0004_family_profile_calorie_target_rationale_1" }, { "label": "0001_initial_migration.py", "file_type": "code", "source_file": "backend/alembic/versions/0001_initial_migration.py", "source_location": "L1", "community": 0, "norm_label": "0001_initial_migration.py", "id": "backend_alembic_versions_0001_initial_migration_py" }, { "label": "upgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0001_initial_migration.py", "source_location": "L18", "community": 0, "norm_label": "upgrade()", "id": "0001_initial_migration_upgrade" }, { "label": "downgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0001_initial_migration.py", "source_location": "L288", "community": 0, "norm_label": "downgrade()", "id": "0001_initial_migration_downgrade" }, { "label": "Initial migration Revision ID: 0001 Revises: Create Date: 2026-05-04", "file_type": "rationale", "source_file": "backend/alembic/versions/0001_initial_migration.py", "source_location": "L1", "community": 0, "norm_label": "initial migration revision id: 0001 revises: create date: 2026-05-04", "id": "0001_initial_migration_rationale_1" }, { "label": "0005_grocery_item_external_id.py", "file_type": "code", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L1", "community": 47, "norm_label": "0005_grocery_item_external_id.py", "id": "backend_alembic_versions_0005_grocery_item_external_id_py" }, { "label": "upgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L26", "community": 47, "norm_label": "upgrade()", "id": "0005_grocery_item_external_id_upgrade" }, { "label": "downgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L45", "community": 47, "norm_label": "downgrade()", "id": "0005_grocery_item_external_id_downgrade" }, { "label": "Add nullable indexed external_id and source columns to grocery_item. The Swiftl", "file_type": "rationale", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L1", "community": 47, "norm_label": "add nullable indexed external_id and source columns to grocery_item. the swiftl", "id": "0005_grocery_item_external_id_rationale_1" }, { "label": "0006_recipe_engine_thin.py", "file_type": "code", "source_file": "backend/alembic/versions/0006_recipe_engine_thin.py", "source_location": "L1", "community": 0, "norm_label": "0006_recipe_engine_thin.py", "id": "backend_alembic_versions_0006_recipe_engine_thin_py" }, { "label": "upgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0006_recipe_engine_thin.py", "source_location": "L19", "community": 0, "norm_label": "upgrade()", "id": "0006_recipe_engine_thin_upgrade" }, { "label": "downgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0006_recipe_engine_thin.py", "source_location": "L88", "community": 0, "norm_label": "downgrade()", "id": "0006_recipe_engine_thin_downgrade" }, { "label": "thin phase 4: ingredient.aliases, recipe.calories_per_serving, ingredient_grocer", "file_type": "rationale", "source_file": "backend/alembic/versions/0006_recipe_engine_thin.py", "source_location": "L1", "community": 0, "norm_label": "thin phase 4: ingredient.aliases, recipe.calories_per_serving, ingredient_grocer", "id": "0006_recipe_engine_thin_rationale_1" }, { "label": "0007_seed_recipes.py", "file_type": "code", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L1", "community": 35, "norm_label": "0007_seed_recipes.py", "id": "backend_alembic_versions_0007_seed_recipes_py" }, { "label": "_upsert_ingredients()", "file_type": "code", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L82", "community": 35, "norm_label": "_upsert_ingredients()", "id": "0007_seed_recipes_upsert_ingredients" }, { "label": "_insert_recipes()", "file_type": "code", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L767", "community": 35, "norm_label": "_insert_recipes()", "id": "0007_seed_recipes_insert_recipes" }, { "label": "_delete_recipes()", "file_type": "code", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L823", "community": 35, "norm_label": "_delete_recipes()", "id": "0007_seed_recipes_delete_recipes" }, { "label": "_delete_ingredients()", "file_type": "code", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L832", "community": 35, "norm_label": "_delete_ingredients()", "id": "0007_seed_recipes_delete_ingredients" }, { "label": "upgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L846", "community": 35, "norm_label": "upgrade()", "id": "0007_seed_recipes_upgrade" }, { "label": "downgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L851", "community": 35, "norm_label": "downgrade()", "id": "0007_seed_recipes_downgrade" }, { "label": "seed canonical ingredients (and 30 starter recipes in P4-14) Revision ID: 0007", "file_type": "rationale", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L1", "community": 35, "norm_label": "seed canonical ingredients (and 30 starter recipes in p4-14) revision id: 0007", "id": "0007_seed_recipes_rationale_1" }, { "label": "Best-effort: only remove rows whose name_lower matches one of our seeds. Pre", "file_type": "rationale", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L833", "community": 35, "norm_label": "best-effort: only remove rows whose name_lower matches one of our seeds. pre", "id": "0007_seed_recipes_rationale_833" }, { "label": "0008_phase5_orchestration.py", "file_type": "code", "source_file": "backend/alembic/versions/0008_phase5_orchestration.py", "source_location": "L1", "community": 48, "norm_label": "0008_phase5_orchestration.py", "id": "backend_alembic_versions_0008_phase5_orchestration_py" }, { "label": "upgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0008_phase5_orchestration.py", "source_location": "L17", "community": 48, "norm_label": "upgrade()", "id": "0008_phase5_orchestration_upgrade" }, { "label": "downgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0008_phase5_orchestration.py", "source_location": "L67", "community": 48, "norm_label": "downgrade()", "id": "0008_phase5_orchestration_downgrade" }, { "label": "Phase 5 orchestration: weekly_run table + pending_approval_policy Revision ID:", "file_type": "rationale", "source_file": "backend/alembic/versions/0008_phase5_orchestration.py", "source_location": "L1", "community": 48, "norm_label": "phase 5 orchestration: weekly_run table + pending_approval_policy revision id:", "id": "0008_phase5_orchestration_rationale_1" }, { "label": "0009_phase6_reminded_at.py", "file_type": "code", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L1", "community": 49, "norm_label": "0009_phase6_reminded_at.py", "id": "backend_alembic_versions_0009_phase6_reminded_at_py" }, { "label": "upgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L16", "community": 49, "norm_label": "upgrade()", "id": "0009_phase6_reminded_at_upgrade" }, { "label": "downgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L23", "community": 49, "norm_label": "downgrade()", "id": "0009_phase6_reminded_at_downgrade" }, { "label": "Phase 6: add reminded_at to weekly_run Revision ID: 0009 Revises: 0008 Create D", "file_type": "rationale", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L1", "community": 49, "norm_label": "phase 6: add reminded_at to weekly_run revision id: 0009 revises: 0008 create d", "id": "0009_phase6_reminded_at_rationale_1" }, { "label": "0010_auto_llm_source.py", "file_type": "code", "source_file": "backend/alembic/versions/0010_auto_llm_source.py", "source_location": "L1", "community": 50, "norm_label": "0010_auto_llm_source.py", "id": "backend_alembic_versions_0010_auto_llm_source_py" }, { "label": "upgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0010_auto_llm_source.py", "source_location": "L15", "community": 50, "norm_label": "upgrade()", "id": "0010_auto_llm_source_upgrade" }, { "label": "downgrade()", "file_type": "code", "source_file": "backend/alembic/versions/0010_auto_llm_source.py", "source_location": "L21", "community": 50, "norm_label": "downgrade()", "id": "0010_auto_llm_source_downgrade" }, { "label": "Add auto_llm to ingredient_match_source_enum Revision ID: 0010 Revises: 0009 Cr", "file_type": "rationale", "source_file": "backend/alembic/versions/0010_auto_llm_source.py", "source_location": "L1", "community": 50, "norm_label": "add auto_llm to ingredient_match_source_enum revision id: 0010 revises: 0009 cr", "id": "0010_auto_llm_source_rationale_1" }, { "label": "__init__.py", "file_type": "code", "source_file": "backend/tests/__init__.py", "source_location": "L1", "community": 8, "norm_label": "__init__.py", "id": "backend_tests_init_py" }, { "label": "test_alembic.py", "file_type": "code", "source_file": "backend/tests/test_alembic.py", "source_location": "L1", "community": 0, "norm_label": "test_alembic.py", "id": "backend_tests_test_alembic_py" }, { "label": "test_alembic_upgrade_head_roundtrip()", "file_type": "code", "source_file": "backend/tests/test_alembic.py", "source_location": "L21", "community": 0, "norm_label": "test_alembic_upgrade_head_roundtrip()", "id": "test_alembic_test_alembic_upgrade_head_roundtrip" }, { "label": "Alembic round-trip test. Verifies that ``alembic upgrade head`` followed by ``a", "file_type": "rationale", "source_file": "backend/tests/test_alembic.py", "source_location": "L1", "community": 0, "norm_label": "alembic round-trip test. verifies that ``alembic upgrade head`` followed by ``a", "id": "test_alembic_rationale_1" }, { "label": "test_smoke.py", "file_type": "code", "source_file": "backend/tests/test_smoke.py", "source_location": "L1", "community": 36, "norm_label": "test_smoke.py", "id": "backend_tests_test_smoke_py" }, { "label": "test_app_imports()", "file_type": "code", "source_file": "backend/tests/test_smoke.py", "source_location": "L15", "community": 36, "norm_label": "test_app_imports()", "id": "test_smoke_test_app_imports" }, { "label": "test_health()", "file_type": "code", "source_file": "backend/tests/test_smoke.py", "source_location": "L21", "community": 36, "norm_label": "test_health()", "id": "test_smoke_test_health" }, { "label": "test_health_db()", "file_type": "code", "source_file": "backend/tests/test_smoke.py", "source_location": "L28", "community": 36, "norm_label": "test_health_db()", "id": "test_smoke_test_health_db" }, { "label": "test_router_list_endpoints()", "file_type": "code", "source_file": "backend/tests/test_smoke.py", "source_location": "L49", "community": 36, "norm_label": "test_router_list_endpoints()", "id": "test_smoke_test_router_list_endpoints" }, { "label": "Smoke tests: app boots, routers wire up, no import-time crashes. The router-lis", "file_type": "rationale", "source_file": "backend/tests/test_smoke.py", "source_location": "L1", "community": 36, "norm_label": "smoke tests: app boots, routers wire up, no import-time crashes. the router-lis", "id": "test_smoke_rationale_1" }, { "label": "Each canonical GET must respond. 200 (handled), 401 (admin-gated), 404 (hand", "file_type": "rationale", "source_file": "backend/tests/test_smoke.py", "source_location": "L50", "community": 36, "norm_label": "each canonical get must respond. 200 (handled), 401 (admin-gated), 404 (hand", "id": "test_smoke_rationale_50" }, { "label": "test_auth.py", "file_type": "code", "source_file": "backend/tests/test_auth.py", "source_location": "L1", "community": 20, "norm_label": "test_auth.py", "id": "backend_tests_test_auth_py" }, { "label": "_reload_settings()", "file_type": "code", "source_file": "backend/tests/test_auth.py", "source_location": "L25", "community": 20, "norm_label": "_reload_settings()", "id": "test_auth_reload_settings" }, { "label": "test_admin_requires_token()", "file_type": "code", "source_file": "backend/tests/test_auth.py", "source_location": "L41", "community": 20, "norm_label": "test_admin_requires_token()", "id": "test_auth_test_admin_requires_token" }, { "label": "test_admin_logs_requires_token()", "file_type": "code", "source_file": "backend/tests/test_auth.py", "source_location": "L55", "community": 20, "norm_label": "test_admin_logs_requires_token()", "id": "test_auth_test_admin_logs_requires_token" }, { "label": "test_session_required_for_mutation()", "file_type": "code", "source_file": "backend/tests/test_auth.py", "source_location": "L69", "community": 20, "norm_label": "test_session_required_for_mutation()", "id": "test_auth_test_session_required_for_mutation" }, { "label": "test_session_open_for_reads()", "file_type": "code", "source_file": "backend/tests/test_auth.py", "source_location": "L79", "community": 20, "norm_label": "test_session_open_for_reads()", "id": "test_auth_test_session_open_for_reads" }, { "label": "test_session_login_logout()", "file_type": "code", "source_file": "backend/tests/test_auth.py", "source_location": "L90", "community": 20, "norm_label": "test_session_login_logout()", "id": "test_auth_test_session_login_logout" }, { "label": "Auth gate tests for R1-B+D. Covers: - /api/admin/* requires bearer token (401 w", "file_type": "rationale", "source_file": "backend/tests/test_auth.py", "source_location": "L1", "community": 20, "norm_label": "auth gate tests for r1-b+d. covers: - /api/admin/* requires bearer token (401 w", "id": "test_auth_rationale_1" }, { "label": "Force ``settings`` to re-read env (test isolation).", "file_type": "rationale", "source_file": "backend/tests/test_auth.py", "source_location": "L26", "community": 20, "norm_label": "force ``settings`` to re-read env (test isolation).", "id": "test_auth_rationale_26" }, { "label": "No bearer \u2192 401. Valid bearer \u2192 not 401 (handler runs).", "file_type": "rationale", "source_file": "backend/tests/test_auth.py", "source_location": "L42", "community": 20, "norm_label": "no bearer \u2192 401. valid bearer \u2192 not 401 (handler runs).", "id": "test_auth_rationale_42" }, { "label": "POST /api/profile/members without cookie \u2192 401.", "file_type": "rationale", "source_file": "backend/tests/test_auth.py", "source_location": "L70", "community": 20, "norm_label": "post /api/profile/members without cookie \u2192 401.", "id": "test_auth_rationale_70" }, { "label": "GET /api/profile is NOT auth-gated (reads stay open).", "file_type": "rationale", "source_file": "backend/tests/test_auth.py", "source_location": "L80", "community": 20, "norm_label": "get /api/profile is not auth-gated (reads stay open).", "id": "test_auth_rationale_80" }, { "label": "test_scrape_endpoint.py", "file_type": "code", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L1", "community": 40, "norm_label": "test_scrape_endpoint.py", "id": "backend_tests_test_scrape_endpoint_py" }, { "label": "_admin_token()", "file_type": "code", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L20", "community": 40, "norm_label": "_admin_token()", "id": "test_scrape_endpoint_admin_token" }, { "label": "test_scrape_returns_202_and_log_id()", "file_type": "code", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L26", "community": 40, "norm_label": "test_scrape_returns_202_and_log_id()", "id": "test_scrape_endpoint_test_scrape_returns_202_and_log_id" }, { "label": "Async scrape endpoint contract. Verifies that ``POST /api/admin/scrape``: - r", "file_type": "rationale", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L1", "community": 40, "norm_label": "async scrape endpoint contract. verifies that ``post /api/admin/scrape``: - r", "id": "test_scrape_endpoint_rationale_1" }, { "label": "Endpoint enqueues the scrape and returns 202 + scrape_log_id. We replace th", "file_type": "rationale", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L27", "community": 40, "norm_label": "endpoint enqueues the scrape and returns 202 + scrape_log_id. we replace th", "id": "test_scrape_endpoint_rationale_27" }, { "label": "test_approval.py", "file_type": "code", "source_file": "backend/tests/test_approval.py", "source_location": "L1", "community": 10, "norm_label": "test_approval.py", "id": "backend_tests_test_approval_py" }, { "label": "test_issue_and_verify_token_roundtrip()", "file_type": "code", "source_file": "backend/tests/test_approval.py", "source_location": "L23", "community": 10, "norm_label": "test_issue_and_verify_token_roundtrip()", "id": "test_approval_test_issue_and_verify_token_roundtrip" }, { "label": "test_verify_rejects_tampered_token()", "file_type": "code", "source_file": "backend/tests/test_approval.py", "source_location": "L32", "community": 10, "norm_label": "test_verify_rejects_tampered_token()", "id": "test_approval_test_verify_rejects_tampered_token" }, { "label": "test_verify_rejects_expired_token()", "file_type": "code", "source_file": "backend/tests/test_approval.py", "source_location": "L42", "community": 10, "norm_label": "test_verify_rejects_expired_token()", "id": "test_approval_test_verify_rejects_expired_token" }, { "label": "scenario()", "file_type": "code", "source_file": "backend/tests/test_approval.py", "source_location": "L74", "community": 0, "norm_label": "scenario()", "id": "test_approval_scenario" }, { "label": "test_consume_token_single_use()", "file_type": "code", "source_file": "backend/tests/test_approval.py", "source_location": "L159", "community": 10, "norm_label": "test_consume_token_single_use()", "id": "test_approval_test_consume_token_single_use" }, { "label": "test_vote_get_renders_html()", "file_type": "code", "source_file": "backend/tests/test_approval.py", "source_location": "L186", "community": 10, "norm_label": "test_vote_get_renders_html()", "id": "test_approval_test_vote_get_renders_html" }, { "label": "test_vote_post_records_and_decides()", "file_type": "code", "source_file": "backend/tests/test_approval.py", "source_location": "L207", "community": 10, "norm_label": "test_vote_post_records_and_decides()", "id": "test_approval_test_vote_post_records_and_decides" }, { "label": "R2-B: approval-token + per-voter vote round-trip tests. - Pure unit tests for `", "file_type": "rationale", "source_file": "backend/tests/test_approval.py", "source_location": "L1", "community": 10, "norm_label": "r2-b: approval-token + per-voter vote round-trip tests. - pure unit tests for `", "id": "test_approval_rationale_1" }, { "label": "itsdangerous reads `time.time()` \u2014 patch the time module's `time` attribute", "file_type": "rationale", "source_file": "backend/tests/test_approval.py", "source_location": "L43", "community": 10, "norm_label": "itsdangerous reads `time.time()` \u2014 patch the time module's `time` attribute", "id": "test_approval_rationale_43" }, { "label": "Create profile + 2 voters + recipe + plan + item, all in one shot. Uses the", "file_type": "rationale", "source_file": "backend/tests/test_approval.py", "source_location": "L75", "community": 0, "norm_label": "create profile + 2 voters + recipe + plan + item, all in one shot. uses the", "id": "test_approval_rationale_75" }, { "label": "First voter approves -> still pending (Bob hasn't voted). Then Bob approves", "file_type": "rationale", "source_file": "backend/tests/test_approval.py", "source_location": "L208", "community": 10, "norm_label": "first voter approves -> still pending (bob hasn't voted). then bob approves", "id": "test_approval_rationale_208" }, { "label": "test_config.py", "file_type": "code", "source_file": "backend/tests/test_config.py", "source_location": "L1", "community": 20, "norm_label": "test_config.py", "id": "backend_tests_test_config_py" }, { "label": "test_database_url_required()", "file_type": "code", "source_file": "backend/tests/test_config.py", "source_location": "L12", "community": 20, "norm_label": "test_database_url_required()", "id": "test_config_test_database_url_required" }, { "label": "Config fail-fast: importing app.config with DATABASE_URL unset must raise.", "file_type": "rationale", "source_file": "backend/tests/test_config.py", "source_location": "L1", "community": 20, "norm_label": "config fail-fast: importing app.config with database_url unset must raise.", "id": "test_config_rationale_1" }, { "label": "Settings() with empty DATABASE_URL \u2192 RuntimeError at instantiation.", "file_type": "rationale", "source_file": "backend/tests/test_config.py", "source_location": "L13", "community": 20, "norm_label": "settings() with empty database_url \u2192 runtimeerror at instantiation.", "id": "test_config_rationale_13" }, { "label": "test_ingredient_schema.py", "file_type": "code", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L1", "community": 2, "norm_label": "test_ingredient_schema.py", "id": "backend_tests_test_ingredient_schema_py" }, { "label": "test_ingredient_create_normalizes_aliases()", "file_type": "code", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L7", "community": 2, "norm_label": "test_ingredient_create_normalizes_aliases()", "id": "test_ingredient_schema_test_ingredient_create_normalizes_aliases" }, { "label": "test_ingredient_match_read_round_trip()", "file_type": "code", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L18", "community": 2, "norm_label": "test_ingredient_match_read_round_trip()", "id": "test_ingredient_schema_test_ingredient_match_read_round_trip" }, { "label": "test_recipe_schema.py", "file_type": "code", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L1", "community": 2, "norm_label": "test_recipe_schema.py", "id": "backend_tests_test_recipe_schema_py" }, { "label": "test_recipe_create_requires_canonical_ingredient_ids()", "file_type": "code", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L9", "community": 2, "norm_label": "test_recipe_create_requires_canonical_ingredient_ids()", "id": "test_recipe_schema_test_recipe_create_requires_canonical_ingredient_ids" }, { "label": "test_recipe_create_rejects_empty_ingredients()", "file_type": "code", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L25", "community": 2, "norm_label": "test_recipe_create_rejects_empty_ingredients()", "id": "test_recipe_schema_test_recipe_create_rejects_empty_ingredients" }, { "label": "test_resolve_ingredient_request_round_trip()", "file_type": "code", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L39", "community": 2, "norm_label": "test_resolve_ingredient_request_round_trip()", "id": "test_recipe_schema_test_resolve_ingredient_request_round_trip" }, { "label": "test_recipe_api.py", "file_type": "code", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L1", "community": 37, "norm_label": "test_recipe_api.py", "id": "backend_tests_test_recipe_api_py" }, { "label": "_admin_headers()", "file_type": "code", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L6", "community": 37, "norm_label": "_admin_headers()", "id": "test_recipe_api_admin_headers" }, { "label": "_new_ingredient()", "file_type": "code", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L10", "community": 37, "norm_label": "_new_ingredient()", "id": "test_recipe_api_new_ingredient" }, { "label": "test_create_recipe_with_canonical_ingredients()", "file_type": "code", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L20", "community": 37, "norm_label": "test_create_recipe_with_canonical_ingredients()", "id": "test_recipe_api_test_create_recipe_with_canonical_ingredients" }, { "label": "test_create_recipe_rejects_unknown_ingredient_id()", "file_type": "code", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L45", "community": 37, "norm_label": "test_create_recipe_rejects_unknown_ingredient_id()", "id": "test_recipe_api_test_create_recipe_rejects_unknown_ingredient_id" }, { "label": "test_list_recipes_returns_seeded_data()", "file_type": "code", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L63", "community": 37, "norm_label": "test_list_recipes_returns_seeded_data()", "id": "test_recipe_api_test_list_recipes_returns_seeded_data" }, { "label": "test_resolve_ingredient.py", "file_type": "code", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L1", "community": 41, "norm_label": "test_resolve_ingredient.py", "id": "backend_tests_test_resolve_ingredient_py" }, { "label": "_admin()", "file_type": "code", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L6", "community": 41, "norm_label": "_admin()", "id": "test_resolve_ingredient_admin" }, { "label": "_seed_ingredient()", "file_type": "code", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L10", "community": 41, "norm_label": "_seed_ingredient()", "id": "test_resolve_ingredient_seed_ingredient" }, { "label": "test_resolve_ingredient_returns_top_three_candidates()", "file_type": "code", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L19", "community": 41, "norm_label": "test_resolve_ingredient_returns_top_three_candidates()", "id": "test_resolve_ingredient_test_resolve_ingredient_returns_top_three_candidates" }, { "label": "test_resolve_ingredient_handles_no_unit()", "file_type": "code", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L38", "community": 41, "norm_label": "test_resolve_ingredient_handles_no_unit()", "id": "test_resolve_ingredient_test_resolve_ingredient_handles_no_unit" }, { "label": "test_matcher.py", "file_type": "code", "source_file": "backend/tests/test_matcher.py", "source_location": "L1", "community": 51, "norm_label": "test_matcher.py", "id": "backend_tests_test_matcher_py" }, { "label": "test_build_match_pool_includes_aliases()", "file_type": "code", "source_file": "backend/tests/test_matcher.py", "source_location": "L6", "community": 51, "norm_label": "test_build_match_pool_includes_aliases()", "id": "test_matcher_test_build_match_pool_includes_aliases" }, { "label": "test_rank_candidates_top_n_with_threshold()", "file_type": "code", "source_file": "backend/tests/test_matcher.py", "source_location": "L18", "community": 51, "norm_label": "test_rank_candidates_top_n_with_threshold()", "id": "test_matcher_test_rank_candidates_top_n_with_threshold" }, { "label": "test_rank_candidates_drops_below_threshold()", "file_type": "code", "source_file": "backend/tests/test_matcher.py", "source_location": "L36", "community": 51, "norm_label": "test_rank_candidates_drops_below_threshold()", "id": "test_matcher_test_rank_candidates_drops_below_threshold" }, { "label": "test_match_hook.py", "file_type": "code", "source_file": "backend/tests/test_match_hook.py", "source_location": "L1", "community": 0, "norm_label": "test_match_hook.py", "id": "backend_tests_test_match_hook_py" }, { "label": "test_run_match_job_persists_top_matches()", "file_type": "code", "source_file": "backend/tests/test_match_hook.py", "source_location": "L6", "community": 0, "norm_label": "test_run_match_job_persists_top_matches()", "id": "test_match_hook_test_run_match_job_persists_top_matches" }, { "label": "End-to-end: seed Ingredient + GroceryItem rows, run the matcher, verify ingr", "file_type": "rationale", "source_file": "backend/tests/test_match_hook.py", "source_location": "L7", "community": 0, "norm_label": "end-to-end: seed ingredient + groceryitem rows, run the matcher, verify ingr", "id": "test_match_hook_rationale_7" }, { "label": "conftest.py", "file_type": "code", "source_file": "backend/tests/conftest.py", "source_location": "L1", "community": 26, "norm_label": "conftest.py", "id": "backend_tests_conftest_py" }, { "label": "_resolve_test_dsn()", "file_type": "code", "source_file": "backend/tests/conftest.py", "source_location": "L45", "community": 26, "norm_label": "_resolve_test_dsn()", "id": "conftest_resolve_test_dsn" }, { "label": "_postgres_reachable()", "file_type": "code", "source_file": "backend/tests/conftest.py", "source_location": "L54", "community": 26, "norm_label": "_postgres_reachable()", "id": "conftest_postgres_reachable" }, { "label": "pytest_collection_modifyitems()", "file_type": "code", "source_file": "backend/tests/conftest.py", "source_location": "L72", "community": 26, "norm_label": "pytest_collection_modifyitems()", "id": "conftest_pytest_collection_modifyitems" }, { "label": "pytest_configure()", "file_type": "code", "source_file": "backend/tests/conftest.py", "source_location": "L84", "community": 26, "norm_label": "pytest_configure()", "id": "conftest_pytest_configure" }, { "label": "_schema()", "file_type": "code", "source_file": "backend/tests/conftest.py", "source_location": "L105", "community": 26, "norm_label": "_schema()", "id": "conftest_schema" }, { "label": "_engine()", "file_type": "code", "source_file": "backend/tests/conftest.py", "source_location": "L129", "community": 26, "norm_label": "_engine()", "id": "conftest_engine" }, { "label": "db()", "file_type": "code", "source_file": "backend/tests/conftest.py", "source_location": "L142", "community": 26, "norm_label": "db()", "id": "conftest_db" }, { "label": "db_session()", "file_type": "code", "source_file": "backend/tests/conftest.py", "source_location": "L159", "community": 26, "norm_label": "db_session()", "id": "conftest_db_session" }, { "label": "client()", "file_type": "code", "source_file": "backend/tests/conftest.py", "source_location": "L172", "community": 26, "norm_label": "client()", "id": "conftest_client" }, { "label": "client_no_db()", "file_type": "code", "source_file": "backend/tests/conftest.py", "source_location": "L193", "community": 26, "norm_label": "client_no_db()", "id": "conftest_client_no_db" }, { "label": "Pytest fixtures for MealPlanner backend. DB strategy ----------- - If env ``TES", "file_type": "rationale", "source_file": "backend/tests/conftest.py", "source_location": "L1", "community": 26, "norm_label": "pytest fixtures for mealplanner backend. db strategy ----------- - if env ``tes", "id": "conftest_rationale_1" }, { "label": "Skip postgres-only tests when no live Postgres is available.", "file_type": "rationale", "source_file": "backend/tests/conftest.py", "source_location": "L73", "community": 26, "norm_label": "skip postgres-only tests when no live postgres is available.", "id": "conftest_rationale_73" }, { "label": "Per-test transactional session that rolls back at teardown.", "file_type": "rationale", "source_file": "backend/tests/conftest.py", "source_location": "L143", "community": 26, "norm_label": "per-test transactional session that rolls back at teardown.", "id": "conftest_rationale_143" }, { "label": "Plain SessionLocal for tests that need to seed data outside the transactiona", "file_type": "rationale", "source_file": "backend/tests/conftest.py", "source_location": "L160", "community": 26, "norm_label": "plain sessionlocal for tests that need to seed data outside the transactiona", "id": "conftest_rationale_160" }, { "label": "TestClient with get_db overridden to yield the test session.", "file_type": "rationale", "source_file": "backend/tests/conftest.py", "source_location": "L173", "community": 26, "norm_label": "testclient with get_db overridden to yield the test session.", "id": "conftest_rationale_173" }, { "label": "TestClient that does NOT require a live DB \u2014 for pure import/wiring smoke.", "file_type": "rationale", "source_file": "backend/tests/conftest.py", "source_location": "L194", "community": 26, "norm_label": "testclient that does not require a live db \u2014 for pure import/wiring smoke.", "id": "conftest_rationale_194" }, { "label": "test_ingredient_api.py", "file_type": "code", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L1", "community": 34, "norm_label": "test_ingredient_api.py", "id": "backend_tests_test_ingredient_api_py" }, { "label": "_admin_headers()", "file_type": "code", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L6", "community": 34, "norm_label": "_admin_headers()", "id": "test_ingredient_api_admin_headers" }, { "label": "test_create_ingredient_returns_201_with_id()", "file_type": "code", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L10", "community": 34, "norm_label": "test_create_ingredient_returns_201_with_id()", "id": "test_ingredient_api_test_create_ingredient_returns_201_with_id" }, { "label": "test_create_ingredient_rejects_duplicate_name()", "file_type": "code", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L24", "community": 34, "norm_label": "test_create_ingredient_rejects_duplicate_name()", "id": "test_ingredient_api_test_create_ingredient_rejects_duplicate_name" }, { "label": "test_list_ingredients_supports_search()", "file_type": "code", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L32", "community": 34, "norm_label": "test_list_ingredients_supports_search()", "id": "test_ingredient_api_test_list_ingredients_supports_search" }, { "label": "test_create_ingredient_requires_admin_token()", "file_type": "code", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L44", "community": 34, "norm_label": "test_create_ingredient_requires_admin_token()", "id": "test_ingredient_api_test_create_ingredient_requires_admin_token" }, { "label": "test_update_ingredient_replaces_aliases()", "file_type": "code", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L50", "community": 34, "norm_label": "test_update_ingredient_replaces_aliases()", "id": "test_ingredient_api_test_update_ingredient_replaces_aliases" }, { "label": "_seed_grocery()", "file_type": "code", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L66", "community": 34, "norm_label": "_seed_grocery()", "id": "test_ingredient_api_seed_grocery" }, { "label": "test_pin_manual_match()", "file_type": "code", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L90", "community": 34, "norm_label": "test_pin_manual_match()", "id": "test_ingredient_api_test_pin_manual_match" }, { "label": "test_unpin_manual_match()", "file_type": "code", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L110", "community": 34, "norm_label": "test_unpin_manual_match()", "id": "test_ingredient_api_test_unpin_manual_match" }, { "label": "test_delete_ingredient_removes_row()", "file_type": "code", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L128", "community": 34, "norm_label": "test_delete_ingredient_removes_row()", "id": "test_ingredient_api_test_delete_ingredient_removes_row" }, { "label": "test_never_suggest_api.py", "file_type": "code", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L1", "community": 0, "norm_label": "test_never_suggest_api.py", "id": "backend_tests_test_never_suggest_api_py" }, { "label": "_admin()", "file_type": "code", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L6", "community": 0, "norm_label": "_admin()", "id": "test_never_suggest_api_admin" }, { "label": "_seed_family()", "file_type": "code", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L10", "community": 0, "norm_label": "_seed_family()", "id": "test_never_suggest_api_seed_family" }, { "label": "test_block_ingredient()", "file_type": "code", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L29", "community": 0, "norm_label": "test_block_ingredient()", "id": "test_never_suggest_api_test_block_ingredient" }, { "label": "test_list_never_suggest_for_family()", "file_type": "code", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L46", "community": 0, "norm_label": "test_list_never_suggest_for_family()", "id": "test_never_suggest_api_test_list_never_suggest_for_family" }, { "label": "test_unblock_removes_row()", "file_type": "code", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L63", "community": 0, "norm_label": "test_unblock_removes_row()", "id": "test_never_suggest_api_test_unblock_removes_row" }, { "label": "test_thin_phase4_smoke.py", "file_type": "code", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L1", "community": 38, "norm_label": "test_thin_phase4_smoke.py", "id": "backend_tests_test_thin_phase4_smoke_py" }, { "label": "_admin()", "file_type": "code", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L7", "community": 38, "norm_label": "_admin()", "id": "test_thin_phase4_smoke_admin" }, { "label": "test_seed_data_present_and_resolvable()", "file_type": "code", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L11", "community": 38, "norm_label": "test_seed_data_present_and_resolvable()", "id": "test_thin_phase4_smoke_test_seed_data_present_and_resolvable" }, { "label": "test_resolve_against_seeded_ingredients()", "file_type": "code", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L18", "community": 38, "norm_label": "test_resolve_against_seeded_ingredients()", "id": "test_thin_phase4_smoke_test_resolve_against_seeded_ingredients" }, { "label": "test_match_job_runs_against_seeded_data()", "file_type": "code", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L30", "community": 38, "norm_label": "test_match_job_runs_against_seeded_data()", "id": "test_thin_phase4_smoke_test_match_job_runs_against_seeded_data" }, { "label": "End-to-end: ingredient + recipe + match all wired together.", "file_type": "rationale", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L1", "community": 38, "norm_label": "end-to-end: ingredient + recipe + match all wired together.", "id": "test_thin_phase4_smoke_rationale_1" }, { "label": "test_planner_cost.py", "file_type": "code", "source_file": "backend/tests/test_planner_cost.py", "source_location": "L1", "community": 32, "norm_label": "test_planner_cost.py", "id": "backend_tests_test_planner_cost_py" }, { "label": "_ingredient()", "file_type": "code", "source_file": "backend/tests/test_planner_cost.py", "source_location": "L10", "community": 32, "norm_label": "_ingredient()", "id": "test_planner_cost_ingredient" }, { "label": "_match()", "file_type": "code", "source_file": "backend/tests/test_planner_cost.py", "source_location": "L14", "community": 32, "norm_label": "_match()", "id": "test_planner_cost_match" }, { "label": "test_compute_recipe_cost_sums_ingredient_costs()", "file_type": "code", "source_file": "backend/tests/test_planner_cost.py", "source_location": "L25", "community": 32, "norm_label": "test_compute_recipe_cost_sums_ingredient_costs()", "id": "test_planner_cost_test_compute_recipe_cost_sums_ingredient_costs" }, { "label": "test_unmatched_ingredient_zero_cost_and_savings()", "file_type": "code", "source_file": "backend/tests/test_planner_cost.py", "source_location": "L51", "community": 32, "norm_label": "test_unmatched_ingredient_zero_cost_and_savings()", "id": "test_planner_cost_test_unmatched_ingredient_zero_cost_and_savings" }, { "label": "test_pantry_hits_counted()", "file_type": "code", "source_file": "backend/tests/test_planner_cost.py", "source_location": "L65", "community": 32, "norm_label": "test_pantry_hits_counted()", "id": "test_planner_cost_test_pantry_hits_counted" }, { "label": "test_planner_filter.py", "file_type": "code", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L1", "community": 6, "norm_label": "test_planner_filter.py", "id": "backend_tests_test_planner_filter_py" }, { "label": "_recipe()", "file_type": "code", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L15", "community": 6, "norm_label": "_recipe()", "id": "test_planner_filter_recipe" }, { "label": "_cost()", "file_type": "code", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L35", "community": 6, "norm_label": "_cost()", "id": "test_planner_filter_cost" }, { "label": "test_filter_blocks_by_never_suggest_ingredient()", "file_type": "code", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L48", "community": 6, "norm_label": "test_filter_blocks_by_never_suggest_ingredient()", "id": "test_planner_filter_test_filter_blocks_by_never_suggest_ingredient" }, { "label": "test_filter_blocks_by_never_suggest_recipe()", "file_type": "code", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L70", "community": 6, "norm_label": "test_filter_blocks_by_never_suggest_recipe()", "id": "test_planner_filter_test_filter_blocks_by_never_suggest_recipe" }, { "label": "test_filter_blocks_by_recency()", "file_type": "code", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L87", "community": 6, "norm_label": "test_filter_blocks_by_recency()", "id": "test_planner_filter_test_filter_blocks_by_recency" }, { "label": "test_filter_blocks_by_calories()", "file_type": "code", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L104", "community": 6, "norm_label": "test_filter_blocks_by_calories()", "id": "test_planner_filter_test_filter_blocks_by_calories" }, { "label": "test_filter_blocks_by_time()", "file_type": "code", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L122", "community": 6, "norm_label": "test_filter_blocks_by_time()", "id": "test_planner_filter_test_filter_blocks_by_time" }, { "label": "test_filter_blocks_by_cost()", "file_type": "code", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L140", "community": 6, "norm_label": "test_filter_blocks_by_cost()", "id": "test_planner_filter_test_filter_blocks_by_cost" }, { "label": "test_filter_passes_when_calorie_target_is_none()", "file_type": "code", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L158", "community": 6, "norm_label": "test_filter_passes_when_calorie_target_is_none()", "id": "test_planner_filter_test_filter_passes_when_calorie_target_is_none" }, { "label": "test_filter_blocks_recipe_with_null_calories_when_target_set()", "file_type": "code", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L174", "community": 6, "norm_label": "test_filter_blocks_recipe_with_null_calories_when_target_set()", "id": "test_planner_filter_test_filter_blocks_recipe_with_null_calories_when_target_set" }, { "label": "test_planner_score.py", "file_type": "code", "source_file": "backend/tests/test_planner_score.py", "source_location": "L1", "community": 6, "norm_label": "test_planner_score.py", "id": "backend_tests_test_planner_score_py" }, { "label": "test_time_bonus_capped_at_ideal()", "file_type": "code", "source_file": "backend/tests/test_planner_score.py", "source_location": "L18", "community": 6, "norm_label": "test_time_bonus_capped_at_ideal()", "id": "test_planner_score_test_time_bonus_capped_at_ideal" }, { "label": "test_time_bonus_decays_to_zero_at_full()", "file_type": "code", "source_file": "backend/tests/test_planner_score.py", "source_location": "L23", "community": 6, "norm_label": "test_time_bonus_decays_to_zero_at_full()", "id": "test_planner_score_test_time_bonus_decays_to_zero_at_full" }, { "label": "test_time_bonus_linear_midpoint()", "file_type": "code", "source_file": "backend/tests/test_planner_score.py", "source_location": "L27", "community": 6, "norm_label": "test_time_bonus_linear_midpoint()", "id": "test_planner_score_test_time_bonus_linear_midpoint" }, { "label": "test_recency_bonus_full_when_long_ago()", "file_type": "code", "source_file": "backend/tests/test_planner_score.py", "source_location": "L32", "community": 6, "norm_label": "test_recency_bonus_full_when_long_ago()", "id": "test_planner_score_test_recency_bonus_full_when_long_ago" }, { "label": "test_recency_bonus_zero_when_just_eligible()", "file_type": "code", "source_file": "backend/tests/test_planner_score.py", "source_location": "L38", "community": 6, "norm_label": "test_recency_bonus_zero_when_just_eligible()", "id": "test_planner_score_test_recency_bonus_zero_when_just_eligible" }, { "label": "test_recency_bonus_full_when_never_cooked()", "file_type": "code", "source_file": "backend/tests/test_planner_score.py", "source_location": "L45", "community": 6, "norm_label": "test_recency_bonus_full_when_never_cooked()", "id": "test_planner_score_test_recency_bonus_full_when_never_cooked" }, { "label": "test_normalize_savings_minmax()", "file_type": "code", "source_file": "backend/tests/test_planner_score.py", "source_location": "L49", "community": 6, "norm_label": "test_normalize_savings_minmax()", "id": "test_planner_score_test_normalize_savings_minmax" }, { "label": "test_normalize_savings_uniform_returns_zeros()", "file_type": "code", "source_file": "backend/tests/test_planner_score.py", "source_location": "L54", "community": 6, "norm_label": "test_normalize_savings_uniform_returns_zeros()", "id": "test_planner_score_test_normalize_savings_uniform_returns_zeros" }, { "label": "test_score_recipes_orders_by_combined_score()", "file_type": "code", "source_file": "backend/tests/test_planner_score.py", "source_location": "L59", "community": 6, "norm_label": "test_score_recipes_orders_by_combined_score()", "id": "test_planner_score_test_score_recipes_orders_by_combined_score" }, { "label": "test_planner_select.py", "file_type": "code", "source_file": "backend/tests/test_planner_select.py", "source_location": "L1", "community": 6, "norm_label": "test_planner_select.py", "id": "backend_tests_test_planner_select_py" }, { "label": "_mk()", "file_type": "code", "source_file": "backend/tests/test_planner_select.py", "source_location": "L12", "community": 6, "norm_label": "_mk()", "id": "test_planner_select_mk" }, { "label": "test_diversity_penalty_zero_when_all_unique()", "file_type": "code", "source_file": "backend/tests/test_planner_select.py", "source_location": "L33", "community": 6, "norm_label": "test_diversity_penalty_zero_when_all_unique()", "id": "test_planner_select_test_diversity_penalty_zero_when_all_unique" }, { "label": "test_diversity_penalty_three_chickens()", "file_type": "code", "source_file": "backend/tests/test_planner_select.py", "source_location": "L40", "community": 6, "norm_label": "test_diversity_penalty_three_chickens()", "id": "test_planner_select_test_diversity_penalty_three_chickens" }, { "label": "test_select_set_picks_diverse_over_homogeneous()", "file_type": "code", "source_file": "backend/tests/test_planner_select.py", "source_location": "L49", "community": 6, "norm_label": "test_select_set_picks_diverse_over_homogeneous()", "id": "test_planner_select_test_select_set_picks_diverse_over_homogeneous" }, { "label": "test_select_set_handles_too_few()", "file_type": "code", "source_file": "backend/tests/test_planner_select.py", "source_location": "L68", "community": 6, "norm_label": "test_select_set_handles_too_few()", "id": "test_planner_select_test_select_set_handles_too_few" }, { "label": "test_select_set_empty_input()", "file_type": "code", "source_file": "backend/tests/test_planner_select.py", "source_location": "L75", "community": 6, "norm_label": "test_select_set_empty_input()", "id": "test_planner_select_test_select_set_empty_input" }, { "label": "Three chicken/american (each 0.95) lose to fully-diverse mixed (each 0.90) o", "file_type": "rationale", "source_file": "backend/tests/test_planner_select.py", "source_location": "L50", "community": 6, "norm_label": "three chicken/american (each 0.95) lose to fully-diverse mixed (each 0.90) o", "id": "test_planner_select_rationale_50" }, { "label": "test_planner_generate.py", "file_type": "code", "source_file": "backend/tests/test_planner_generate.py", "source_location": "L1", "community": 0, "norm_label": "test_planner_generate.py", "id": "backend_tests_test_planner_generate_py" }, { "label": "test_generate_meal_plan_against_seeded_data()", "file_type": "code", "source_file": "backend/tests/test_planner_generate.py", "source_location": "L10", "community": 0, "norm_label": "test_generate_meal_plan_against_seeded_data()", "id": "test_planner_generate_test_generate_meal_plan_against_seeded_data" }, { "label": "Smoke test: with the seeded 30 recipes and a seeded grocery scrape, generate", "file_type": "rationale", "source_file": "backend/tests/test_planner_generate.py", "source_location": "L11", "community": 0, "norm_label": "smoke test: with the seeded 30 recipes and a seeded grocery scrape, generate", "id": "test_planner_generate_rationale_11" }, { "label": "test_meal_plan_generate_api.py", "file_type": "code", "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L1", "community": 0, "norm_label": "test_meal_plan_generate_api.py", "id": "backend_tests_test_meal_plan_generate_api_py" }, { "label": "_admin()", "file_type": "code", "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L10", "community": 0, "norm_label": "_admin()", "id": "test_meal_plan_generate_api_admin" }, { "label": "family_with_groceries()", "file_type": "code", "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L15", "community": 0, "norm_label": "family_with_groceries()", "id": "test_meal_plan_generate_api_family_with_groceries" }, { "label": "test_generate_endpoint_returns_meal_plan()", "file_type": "code", "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L50", "community": 0, "norm_label": "test_generate_endpoint_returns_meal_plan()", "id": "test_meal_plan_generate_api_test_generate_endpoint_returns_meal_plan" }, { "label": "test_generate_endpoint_requires_admin_token()", "file_type": "code", "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L64", "community": 0, "norm_label": "test_generate_endpoint_requires_admin_token()", "id": "test_meal_plan_generate_api_test_generate_endpoint_requires_admin_token" }, { "label": "test_generate_endpoint_returns_404_for_unknown_family()", "file_type": "code", "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L73", "community": 0, "norm_label": "test_generate_endpoint_returns_404_for_unknown_family()", "id": "test_meal_plan_generate_api_test_generate_endpoint_returns_404_for_unknown_family" }, { "label": "test_swiftly_auth.py", "file_type": "code", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L1", "community": 4, "norm_label": "test_swiftly_auth.py", "id": "backend_tests_test_swiftly_auth_py" }, { "label": "_clear_cache()", "file_type": "code", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L34", "community": 4, "norm_label": "_clear_cache()", "id": "test_swiftly_auth_clear_cache" }, { "label": "_b64url()", "file_type": "code", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L40", "community": 4, "norm_label": "_b64url()", "id": "test_swiftly_auth_b64url" }, { "label": "_make_jwt()", "file_type": "code", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L44", "community": 4, "norm_label": "_make_jwt()", "id": "test_swiftly_auth_make_jwt" }, { "label": "_config_response()", "file_type": "code", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L53", "community": 4, "norm_label": "_config_response()", "id": "test_swiftly_auth_config_response" }, { "label": "_signup_response()", "file_type": "code", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L60", "community": 4, "norm_label": "_signup_response()", "id": "test_swiftly_auth_signup_response" }, { "label": "test_get_token_mints_fresh_when_cache_empty()", "file_type": "code", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L71", "community": 4, "norm_label": "test_get_token_mints_fresh_when_cache_empty()", "id": "test_swiftly_auth_test_get_token_mints_fresh_when_cache_empty" }, { "label": "test_get_token_returns_cached_without_reminting()", "file_type": "code", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L99", "community": 4, "norm_label": "test_get_token_returns_cached_without_reminting()", "id": "test_swiftly_auth_test_get_token_returns_cached_without_reminting" }, { "label": "test_get_token_remints_when_cached_token_near_expiry()", "file_type": "code", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L118", "community": 4, "norm_label": "test_get_token_remints_when_cached_token_near_expiry()", "id": "test_swiftly_auth_test_get_token_remints_when_cached_token_near_expiry" }, { "label": "test_mint_raises_on_firebase_non_200()", "file_type": "code", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L140", "community": 4, "norm_label": "test_mint_raises_on_firebase_non_200()", "id": "test_swiftly_auth_test_mint_raises_on_firebase_non_200" }, { "label": "Offline tests for swiftly_auth \u2014 Firebase REST anon-signUp + cache. All tests r", "file_type": "rationale", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L1", "community": 4, "norm_label": "offline tests for swiftly_auth \u2014 firebase rest anon-signup + cache. all tests r", "id": "test_swiftly_auth_rationale_1" }, { "label": "First call fetches config.json, posts to Firebase, returns idToken.", "file_type": "rationale", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L72", "community": 4, "norm_label": "first call fetches config.json, posts to firebase, returns idtoken.", "id": "test_swiftly_auth_rationale_72" }, { "label": "Second call within the refresh window does NOT re-hit Firebase.", "file_type": "rationale", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L100", "community": 4, "norm_label": "second call within the refresh window does not re-hit firebase.", "id": "test_swiftly_auth_rationale_100" }, { "label": "A cached token within the refresh-margin window triggers a re-mint.", "file_type": "rationale", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L119", "community": 4, "norm_label": "a cached token within the refresh-margin window triggers a re-mint.", "id": "test_swiftly_auth_rationale_119" }, { "label": "Firebase 403/400/etc. surfaces as SwiftlyAuthMintError with status detail.", "file_type": "rationale", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L141", "community": 4, "norm_label": "firebase 403/400/etc. surfaces as swiftlyauthminterror with status detail.", "id": "test_swiftly_auth_rationale_141" }, { "label": "test_swiftly_api.py", "file_type": "code", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L1", "community": 4, "norm_label": "test_swiftly_api.py", "id": "backend_tests_test_swiftly_api_py" }, { "label": "test_parse_categories_fixture()", "file_type": "code", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L40", "community": 4, "norm_label": "test_parse_categories_fixture()", "id": "test_swiftly_api_test_parse_categories_fixture" }, { "label": "test_parse_category_response_fixture()", "file_type": "code", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L57", "community": 4, "norm_label": "test_parse_category_response_fixture()", "id": "test_swiftly_api_test_parse_category_response_fixture" }, { "label": "test_map_product_returns_none_for_unparseable()", "file_type": "code", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L107", "community": 4, "norm_label": "test_map_product_returns_none_for_unparseable()", "id": "test_swiftly_api_test_map_product_returns_none_for_unparseable" }, { "label": "_mock_response()", "file_type": "code", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L121", "community": 4, "norm_label": "_mock_response()", "id": "test_swiftly_api_mock_response" }, { "label": "test_swiftly_auth_error_on_401_from_api()", "file_type": "code", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L135", "community": 4, "norm_label": "test_swiftly_auth_error_on_401_from_api()", "id": "test_swiftly_api_test_swiftly_auth_error_on_401_from_api" }, { "label": "test_fetch_category_mints_token_when_none_pinned()", "file_type": "code", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L146", "community": 4, "norm_label": "test_fetch_category_mints_token_when_none_pinned()", "id": "test_swiftly_api_test_fetch_category_mints_token_when_none_pinned" }, { "label": "test_background_runner_writes_failed_with_token_message()", "file_type": "code", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L171", "community": 4, "norm_label": "test_background_runner_writes_failed_with_token_message()", "id": "test_swiftly_api_test_background_runner_writes_failed_with_token_message" }, { "label": "Offline tests for the Swiftly product-API client (R3-0). All tests run against", "file_type": "rationale", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L1", "community": 4, "norm_label": "offline tests for the swiftly product-api client (r3-0). all tests run against", "id": "test_swiftly_api_rationale_1" }, { "label": "Parser returns >=10 distinct API slugs from the captured page.", "file_type": "rationale", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L41", "community": 4, "norm_label": "parser returns >=10 distinct api slugs from the captured page.", "id": "test_swiftly_api_rationale_41" }, { "label": "Parser returns >=10 product dicts each with the mapped fields populated.", "file_type": "rationale", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L58", "community": 4, "norm_label": "parser returns >=10 product dicts each with the mapped fields populated.", "id": "test_swiftly_api_rationale_58" }, { "label": "Products with no name AND no parseable price are dropped.", "file_type": "rationale", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L108", "community": 4, "norm_label": "products with no name and no parseable price are dropped.", "id": "test_swiftly_api_rationale_108" }, { "label": "A 401 from the API host raises SwiftlyAuthError before raise_for_status.", "file_type": "rationale", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L136", "community": 4, "norm_label": "a 401 from the api host raises swiftlyautherror before raise_for_status.", "id": "test_swiftly_api_rationale_136" }, { "label": "With no explicit bearer_token, fetch_category calls swiftly_auth.get_token()", "file_type": "rationale", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L147", "community": 4, "norm_label": "with no explicit bearer_token, fetch_category calls swiftly_auth.get_token()", "id": "test_swiftly_api_rationale_147" }, { "label": "A 401 during the background scrape lands in ScrapeLog as FAILED + message.", "file_type": "rationale", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L172", "community": 4, "norm_label": "a 401 during the background scrape lands in scrapelog as failed + message.", "id": "test_swiftly_api_rationale_172" }, { "label": "test_email_backend.py", "file_type": "code", "source_file": "backend/tests/test_email_backend.py", "source_location": "L1", "community": 5, "norm_label": "test_email_backend.py", "id": "backend_tests_test_email_backend_py" }, { "label": "test_sendgrid_send_calls_api()", "file_type": "code", "source_file": "backend/tests/test_email_backend.py", "source_location": "L5", "community": 5, "norm_label": "test_sendgrid_send_calls_api()", "id": "test_email_backend_test_sendgrid_send_calls_api" }, { "label": "test_sendgrid_raises_on_4xx()", "file_type": "code", "source_file": "backend/tests/test_email_backend.py", "source_location": "L26", "community": 5, "norm_label": "test_sendgrid_raises_on_4xx()", "id": "test_email_backend_test_sendgrid_raises_on_4xx" }, { "label": "Unit tests for SendGridEmailBackend \u2014 no Postgres needed.", "file_type": "rationale", "source_file": "backend/tests/test_email_backend.py", "source_location": "L1", "community": 5, "norm_label": "unit tests for sendgridemailbackend \u2014 no postgres needed.", "id": "test_email_backend_rationale_1" }, { "label": "test_orchestrator.py", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L1", "community": 5, "norm_label": "test_orchestrator.py", "id": "backend_tests_test_orchestrator_py" }, { "label": "family()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L15", "community": 0, "norm_label": "family()", "id": "test_orchestrator_family" }, { "label": "member()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L31", "community": 0, "norm_label": "member()", "id": "test_orchestrator_member" }, { "label": "weekly_run()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L46", "community": 5, "norm_label": "weekly_run()", "id": "test_orchestrator_weekly_run" }, { "label": "weekly_run_scraped()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L55", "community": 5, "norm_label": "weekly_run_scraped()", "id": "test_orchestrator_weekly_run_scraped" }, { "label": "weekly_run_generated()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L69", "community": 5, "norm_label": "weekly_run_generated()", "id": "test_orchestrator_weekly_run_generated" }, { "label": "meal_plan()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L84", "community": 0, "norm_label": "meal_plan()", "id": "test_orchestrator_meal_plan" }, { "label": "pending_item()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L98", "community": 0, "norm_label": "pending_item()", "id": "test_orchestrator_pending_item" }, { "label": "weekly_run_emailed()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L123", "community": 5, "norm_label": "weekly_run_emailed()", "id": "test_orchestrator_weekly_run_emailed" }, { "label": "weekly_run_reminded()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L139", "community": 5, "norm_label": "weekly_run_reminded()", "id": "test_orchestrator_weekly_run_reminded" }, { "label": "test_send_admin_alert_noop_when_email_unset()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L159", "community": 5, "norm_label": "test_send_admin_alert_noop_when_email_unset()", "id": "test_orchestrator_test_send_admin_alert_noop_when_email_unset" }, { "label": "test_send_admin_alert_calls_backend()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L168", "community": 5, "norm_label": "test_send_admin_alert_calls_backend()", "id": "test_orchestrator_test_send_admin_alert_calls_backend" }, { "label": "test_step_scrape_idempotent()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L194", "community": 5, "norm_label": "test_step_scrape_idempotent()", "id": "test_orchestrator_test_step_scrape_idempotent" }, { "label": "test_step_scrape_success()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L201", "community": 5, "norm_label": "test_step_scrape_success()", "id": "test_orchestrator_test_step_scrape_success" }, { "label": "test_step_scrape_both_fail_marks_stale()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L212", "community": 5, "norm_label": "test_step_scrape_both_fail_marks_stale()", "id": "test_orchestrator_test_step_scrape_both_fail_marks_stale" }, { "label": "test_step_generate_idempotent()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L231", "community": 5, "norm_label": "test_step_generate_idempotent()", "id": "test_orchestrator_test_step_generate_idempotent" }, { "label": "test_step_generate_creates_plan()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L238", "community": 5, "norm_label": "test_step_generate_creates_plan()", "id": "test_orchestrator_test_step_generate_creates_plan" }, { "label": "test_step_generate_records_error_on_failure()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L257", "community": 5, "norm_label": "test_step_generate_records_error_on_failure()", "id": "test_orchestrator_test_step_generate_records_error_on_failure" }, { "label": "test_step_email_idempotent()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L276", "community": 5, "norm_label": "test_step_email_idempotent()", "id": "test_orchestrator_test_step_email_idempotent" }, { "label": "test_step_email_sends_per_member()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L283", "community": 5, "norm_label": "test_step_email_sends_per_member()", "id": "test_orchestrator_test_step_email_sends_per_member" }, { "label": "test_step_email_stale_banner()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L302", "community": 5, "norm_label": "test_step_email_stale_banner()", "id": "test_orchestrator_test_step_email_stale_banner" }, { "label": "test_step_email_escapes_recipe_name()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L319", "community": 5, "norm_label": "test_step_email_escapes_recipe_name()", "id": "test_orchestrator_test_step_email_escapes_recipe_name" }, { "label": "test_step_reminder_idempotent()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L345", "community": 5, "norm_label": "test_step_reminder_idempotent()", "id": "test_orchestrator_test_step_reminder_idempotent" }, { "label": "test_step_reminder_skips_when_not_emailed()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L352", "community": 5, "norm_label": "test_step_reminder_skips_when_not_emailed()", "id": "test_orchestrator_test_step_reminder_skips_when_not_emailed" }, { "label": "test_step_reminder_sends_to_non_voter()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L370", "community": 5, "norm_label": "test_step_reminder_sends_to_non_voter()", "id": "test_orchestrator_test_step_reminder_sends_to_non_voter" }, { "label": "test_step_reminder_skips_voter()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L391", "community": 5, "norm_label": "test_step_reminder_skips_voter()", "id": "test_orchestrator_test_step_reminder_skips_voter" }, { "label": "test_step_reminder_no_sends_when_all_voted()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L420", "community": 5, "norm_label": "test_step_reminder_no_sends_when_all_voted()", "id": "test_orchestrator_test_step_reminder_no_sends_when_all_voted" }, { "label": "test_step_deadline_idempotent()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L454", "community": 5, "norm_label": "test_step_deadline_idempotent()", "id": "test_orchestrator_test_step_deadline_idempotent" }, { "label": "test_step_deadline_resolves_pending_to_approved()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L463", "community": 5, "norm_label": "test_step_deadline_resolves_pending_to_approved()", "id": "test_orchestrator_test_step_deadline_resolves_pending_to_approved" }, { "label": "test_step_deadline_resolves_pending_to_denied()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L474", "community": 5, "norm_label": "test_step_deadline_resolves_pending_to_denied()", "id": "test_orchestrator_test_step_deadline_resolves_pending_to_denied" }, { "label": "weekly_run_deadline_passed()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L489", "community": 5, "norm_label": "weekly_run_deadline_passed()", "id": "test_orchestrator_weekly_run_deadline_passed" }, { "label": "approved_item()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L506", "community": 0, "norm_label": "approved_item()", "id": "test_orchestrator_approved_item" }, { "label": "test_step_finalize_idempotent()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L530", "community": 5, "norm_label": "test_step_finalize_idempotent()", "id": "test_orchestrator_test_step_finalize_idempotent" }, { "label": "test_step_finalize_sends_shopping_list()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L539", "community": 5, "norm_label": "test_step_finalize_sends_shopping_list()", "id": "test_orchestrator_test_step_finalize_sends_shopping_list" }, { "label": "test_step_finalize_no_approved_sends_empty_message()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L559", "community": 5, "norm_label": "test_step_finalize_no_approved_sends_empty_message()", "id": "test_orchestrator_test_step_finalize_no_approved_sends_empty_message" }, { "label": "test_run_step_upserts_weekly_run()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L580", "community": 5, "norm_label": "test_run_step_upserts_weekly_run()", "id": "test_orchestrator_test_run_step_upserts_weekly_run" }, { "label": "test_run_step_invalid_raises()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L606", "community": 5, "norm_label": "test_run_step_invalid_raises()", "id": "test_orchestrator_test_run_step_invalid_raises" }, { "label": "test_run_week_calls_all_steps()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L612", "community": 5, "norm_label": "test_run_week_calls_all_steps()", "id": "test_orchestrator_test_run_week_calls_all_steps" }, { "label": "admin_client()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L632", "community": 5, "norm_label": "admin_client()", "id": "test_orchestrator_admin_client" }, { "label": "test_orchestrate_status_returns_list()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L646", "community": 5, "norm_label": "test_orchestrate_status_returns_list()", "id": "test_orchestrator_test_orchestrate_status_returns_list" }, { "label": "test_orchestrate_step_invalid_returns_400()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L654", "community": 5, "norm_label": "test_orchestrate_step_invalid_returns_400()", "id": "test_orchestrator_test_orchestrate_step_invalid_returns_400" }, { "label": "test_orchestrate_run_week_returns_202()", "file_type": "code", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L663", "community": 5, "norm_label": "test_orchestrate_run_week_returns_202()", "id": "test_orchestrator_test_orchestrate_run_week_returns_202" }, { "label": "Tests for the Phase 5 weekly orchestration.", "file_type": "rationale", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L1", "community": 5, "norm_label": "tests for the phase 5 weekly orchestration.", "id": "test_orchestrator_rationale_1" }, { "label": "vite.config.ts", "file_type": "code", "source_file": "frontend/vite.config.ts", "source_location": "L1", "community": 8, "norm_label": "vite.config.ts", "id": "frontend_vite_config_ts" }, { "label": "tailwind.config.js", "file_type": "code", "source_file": "frontend/tailwind.config.js", "source_location": "L1", "community": 8, "norm_label": "tailwind.config.js", "id": "frontend_tailwind_config_js" }, { "label": "postcss.config.js", "file_type": "code", "source_file": "frontend/postcss.config.js", "source_location": "L1", "community": 8, "norm_label": "postcss.config.js", "id": "frontend_postcss_config_js" }, { "label": "main.tsx", "file_type": "code", "source_file": "frontend/src/main.tsx", "source_location": "L1", "community": 8, "norm_label": "main.tsx", "id": "frontend_src_main_tsx" }, { "label": "vite-env.d.ts", "file_type": "code", "source_file": "frontend/src/vite-env.d.ts", "source_location": "L1", "community": 8, "norm_label": "vite-env.d.ts", "id": "frontend_src_vite_env_d_ts" }, { "label": "App.tsx", "file_type": "code", "source_file": "frontend/src/App.tsx", "source_location": "L1", "community": 54, "norm_label": "app.tsx", "id": "frontend_src_app_tsx" }, { "label": "isActive()", "file_type": "code", "source_file": "frontend/src/App.tsx", "source_location": "L13", "community": 54, "norm_label": "isactive()", "id": "app_isactive" }, { "label": "linkClass()", "file_type": "code", "source_file": "frontend/src/App.tsx", "source_location": "L15", "community": 54, "norm_label": "linkclass()", "id": "app_linkclass" }, { "label": "ErrorBoundary.tsx", "file_type": "code", "source_file": "frontend/src/components/ErrorBoundary.tsx", "source_location": "L1", "community": 55, "norm_label": "errorboundary.tsx", "id": "frontend_src_components_errorboundary_tsx" }, { "label": "getDerivedStateFromError()", "file_type": "code", "source_file": "frontend/src/components/ErrorBoundary.tsx", "source_location": "L19", "community": 55, "norm_label": "getderivedstatefromerror()", "id": "errorboundary_getderivedstatefromerror" }, { "label": "componentDidCatch()", "file_type": "code", "source_file": "frontend/src/components/ErrorBoundary.tsx", "source_location": "L23", "community": 55, "norm_label": "componentdidcatch()", "id": "errorboundary_componentdidcatch" }, { "label": "Button.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/Button.tsx", "source_location": "L1", "community": 8, "norm_label": "button.tsx", "id": "frontend_src_components_ui_button_tsx" }, { "label": "Button()", "file_type": "code", "source_file": "frontend/src/components/ui/Button.tsx", "source_location": "L11", "community": 8, "norm_label": "button()", "id": "button_button" }, { "label": "Badge.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/Badge.tsx", "source_location": "L1", "community": 8, "norm_label": "badge.tsx", "id": "frontend_src_components_ui_badge_tsx" }, { "label": "Badge()", "file_type": "code", "source_file": "frontend/src/components/ui/Badge.tsx", "source_location": "L9", "community": 8, "norm_label": "badge()", "id": "badge_badge" }, { "label": "Card.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L1", "community": 42, "norm_label": "card.tsx", "id": "frontend_src_components_ui_card_tsx" }, { "label": "Card()", "file_type": "code", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L8", "community": 42, "norm_label": "card()", "id": "card_card" }, { "label": "CardHeader()", "file_type": "code", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L17", "community": 42, "norm_label": "cardheader()", "id": "card_cardheader" }, { "label": "CardBody()", "file_type": "code", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L26", "community": 42, "norm_label": "cardbody()", "id": "card_cardbody" }, { "label": "CardFooter()", "file_type": "code", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L35", "community": 42, "norm_label": "cardfooter()", "id": "card_cardfooter" }, { "label": "Input.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/Input.tsx", "source_location": "L1", "community": 8, "norm_label": "input.tsx", "id": "frontend_src_components_ui_input_tsx" }, { "label": "cn()", "file_type": "code", "source_file": "frontend/src/components/ui/Input.tsx", "source_location": "L17", "community": 8, "norm_label": "cn()", "id": "input_cn" }, { "label": "EmptyState.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/EmptyState.tsx", "source_location": "L1", "community": 8, "norm_label": "emptystate.tsx", "id": "frontend_src_components_ui_emptystate_tsx" }, { "label": "Skeleton.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/Skeleton.tsx", "source_location": "L1", "community": 8, "norm_label": "skeleton.tsx", "id": "frontend_src_components_ui_skeleton_tsx" }, { "label": "LoadingSpinner.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/LoadingSpinner.tsx", "source_location": "L1", "community": 8, "norm_label": "loadingspinner.tsx", "id": "frontend_src_components_ui_loadingspinner_tsx" }, { "label": "LoadingSpinner()", "file_type": "code", "source_file": "frontend/src/components/ui/LoadingSpinner.tsx", "source_location": "L10", "community": 8, "norm_label": "loadingspinner()", "id": "loadingspinner_loadingspinner" }, { "label": "Select.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/Select.tsx", "source_location": "L1", "community": 8, "norm_label": "select.tsx", "id": "frontend_src_components_ui_select_tsx" }, { "label": "Textarea.tsx", "file_type": "code", "source_file": "frontend/src/components/ui/Textarea.tsx", "source_location": "L1", "community": 8, "norm_label": "textarea.tsx", "id": "frontend_src_components_ui_textarea_tsx" }, { "label": "cn()", "file_type": "code", "source_file": "frontend/src/components/ui/Textarea.tsx", "source_location": "L17", "community": 8, "norm_label": "cn()", "id": "textarea_cn" }, { "label": "Dashboard.tsx", "file_type": "code", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L1", "community": 8, "norm_label": "dashboard.tsx", "id": "frontend_src_pages_dashboard_tsx" }, { "label": "handleSend()", "file_type": "code", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L282", "community": 8, "norm_label": "handlesend()", "id": "dashboard_handlesend" }, { "label": "MealDetail.tsx", "file_type": "code", "source_file": "frontend/src/pages/MealDetail.tsx", "source_location": "L1", "community": 8, "norm_label": "mealdetail.tsx", "id": "frontend_src_pages_mealdetail_tsx" }, { "label": "Pantry.tsx", "file_type": "code", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L1", "community": 8, "norm_label": "pantry.tsx", "id": "frontend_src_pages_pantry_tsx" }, { "label": "handleAdd()", "file_type": "code", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L59", "community": 8, "norm_label": "handleadd()", "id": "pantry_handleadd" }, { "label": "ShoppingList.tsx", "file_type": "code", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L1", "community": 39, "norm_label": "shoppinglist.tsx", "id": "frontend_src_pages_shoppinglist_tsx" }, { "label": "ShoppingListSkeleton()", "file_type": "code", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L12", "community": 39, "norm_label": "shoppinglistskeleton()", "id": "shoppinglist_shoppinglistskeleton" }, { "label": "SkeletonCard()", "file_type": "code", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L33", "community": 39, "norm_label": "skeletoncard()", "id": "shoppinglist_skeletoncard" }, { "label": "storageKey()", "file_type": "code", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L44", "community": 39, "norm_label": "storagekey()", "id": "shoppinglist_storagekey" }, { "label": "toggle()", "file_type": "code", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L77", "community": 39, "norm_label": "toggle()", "id": "shoppinglist_toggle" }, { "label": "clearAll()", "file_type": "code", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L86", "community": 39, "norm_label": "clearall()", "id": "shoppinglist_clearall" }, { "label": "Login.tsx", "file_type": "code", "source_file": "frontend/src/pages/Login.tsx", "source_location": "L1", "community": 8, "norm_label": "login.tsx", "id": "frontend_src_pages_login_tsx" }, { "label": "Login()", "file_type": "code", "source_file": "frontend/src/pages/Login.tsx", "source_location": "L8", "community": 8, "norm_label": "login()", "id": "login_login" }, { "label": "index.ts", "file_type": "code", "source_file": "frontend/src/api/index.ts", "source_location": "L1", "community": 8, "norm_label": "index.ts", "id": "frontend_src_api_index_ts" }, { "label": "index.ts", "file_type": "code", "source_file": "frontend/src/types/index.ts", "source_location": "L1", "community": 8, "norm_label": "index.ts", "id": "frontend_src_types_index_ts" }, { "label": "utils.ts", "file_type": "code", "source_file": "frontend/src/lib/utils.ts", "source_location": "L1", "community": 8, "norm_label": "utils.ts", "id": "frontend_src_lib_utils_ts" }, { "label": "cn()", "file_type": "code", "source_file": "frontend/src/lib/utils.ts", "source_location": "L4", "community": 8, "norm_label": "cn()", "id": "utils_cn" }, { "label": "toast.ts", "file_type": "code", "source_file": "frontend/src/lib/toast.ts", "source_location": "L1", "community": 8, "norm_label": "toast.ts", "id": "frontend_src_lib_toast_ts" }, { "label": "spike_lucky_scrape.py", "file_type": "code", "source_file": "scripts/spike_lucky_scrape.py", "source_location": "L1", "community": 4, "norm_label": "spike_lucky_scrape.py", "id": "scripts_spike_lucky_scrape_py" }, { "label": "main()", "file_type": "code", "source_file": "scripts/spike_lucky_scrape.py", "source_location": "L38", "community": 4, "norm_label": "main()", "id": "spike_lucky_scrape_main" }, { "label": "R2-A live-scrape spike for Lucky California weekly ad. Performs ONE live fetch", "file_type": "rationale", "source_file": "scripts/spike_lucky_scrape.py", "source_location": "L1", "community": 4, "norm_label": "r2-a live-scrape spike for lucky california weekly ad. performs one live fetch", "id": "spike_lucky_scrape_rationale_1" }, { "label": "send_test_approval.py", "file_type": "code", "source_file": "scripts/send_test_approval.py", "source_location": "L1", "community": 0, "norm_label": "send_test_approval.py", "id": "scripts_send_test_approval_py" }, { "label": "main()", "file_type": "code", "source_file": "scripts/send_test_approval.py", "source_location": "L44", "community": 0, "norm_label": "main()", "id": "send_test_approval_main" }, { "label": "spike_swiftly_ingest.py", "file_type": "code", "source_file": "scripts/spike_swiftly_ingest.py", "source_location": "L1", "community": 4, "norm_label": "spike_swiftly_ingest.py", "id": "scripts_spike_swiftly_ingest_py" }, { "label": "main()", "file_type": "code", "source_file": "scripts/spike_swiftly_ingest.py", "source_location": "L33", "community": 4, "norm_label": "main()", "id": "spike_swiftly_ingest_main" }, { "label": "Live spike for the Swiftly product API (R3-0, ad-hoc admin tool). Usage: py", "file_type": "rationale", "source_file": "scripts/spike_swiftly_ingest.py", "source_location": "L1", "community": 4, "norm_label": "live spike for the swiftly product api (r3-0, ad-hoc admin tool). usage: py", "id": "spike_swiftly_ingest_rationale_1" }, { "label": "seed_family.py", "file_type": "code", "source_file": "scripts/seed_family.py", "source_location": "L1", "community": 8, "norm_label": "seed_family.py", "id": "scripts_seed_family_py" }, { "label": "enrich_recipes_spoonacular.py", "file_type": "code", "source_file": "scripts/enrich_recipes_spoonacular.py", "source_location": "L1", "community": 52, "norm_label": "enrich_recipes_spoonacular.py", "id": "scripts_enrich_recipes_spoonacular_py" }, { "label": "strip_html()", "file_type": "code", "source_file": "scripts/enrich_recipes_spoonacular.py", "source_location": "L30", "community": 52, "norm_label": "strip_html()", "id": "enrich_recipes_spoonacular_strip_html" }, { "label": "search_recipe()", "file_type": "code", "source_file": "scripts/enrich_recipes_spoonacular.py", "source_location": "L34", "community": 52, "norm_label": "search_recipe()", "id": "enrich_recipes_spoonacular_search_recipe" }, { "label": "main()", "file_type": "code", "source_file": "scripts/enrich_recipes_spoonacular.py", "source_location": "L53", "community": 52, "norm_label": "main()", "id": "enrich_recipes_spoonacular_main" }, { "label": "meal-planner-plan.md", "file_type": "document", "source_file": "meal-planner-plan.md", "source_location": null, "community": 28, "norm_label": "meal-planner-plan.md", "id": "meal_planner_plan_md" }, { "label": "Meal Planner System", "file_type": "document", "source_file": "meal-planner-plan.md", "source_location": "L1", "community": 28, "norm_label": "meal planner system", "id": "meal_planner_plan_md_meal_planner_system" }, { "label": "Goal", "file_type": "document", "source_file": "meal-planner-plan.md", "source_location": "L3", "community": 28, "norm_label": "goal", "id": "meal_planner_plan_md_goal" }, { "label": "Architecture", "file_type": "document", "source_file": "meal-planner-plan.md", "source_location": "L6", "community": 28, "norm_label": "architecture", "id": "meal_planner_plan_md_architecture" }, { "label": "Tech Stack", "file_type": "document", "source_file": "meal-planner-plan.md", "source_location": "L26", "community": 28, "norm_label": "tech stack", "id": "meal_planner_plan_md_tech_stack" }, { "label": "Project Structure", "file_type": "document", "source_file": "meal-planner-plan.md", "source_location": "L35", "community": 28, "norm_label": "project structure", "id": "meal_planner_plan_md_project_structure" }, { "label": "Tasks", "file_type": "document", "source_file": "meal-planner-plan.md", "source_location": "L54", "community": 28, "norm_label": "tasks", "id": "meal_planner_plan_md_tasks" }, { "label": "Phase 1: Foundation", "file_type": "document", "source_file": "meal-planner-plan.md", "source_location": "L56", "community": 28, "norm_label": "phase 1: foundation", "id": "meal_planner_plan_md_phase_1_foundation" }, { "label": "Phase 2: Scraping", "file_type": "document", "source_file": "meal-planner-plan.md", "source_location": "L62", "community": 28, "norm_label": "phase 2: scraping", "id": "meal_planner_plan_md_phase_2_scraping" }, { "label": "Phase 3: Recipe & Meal Engine", "file_type": "document", "source_file": "meal-planner-plan.md", "source_location": "L67", "community": 28, "norm_label": "phase 3: recipe & meal engine", "id": "meal_planner_plan_md_phase_3_recipe_meal_engine" }, { "label": "Phase 4: Notifications & Approval", "file_type": "document", "source_file": "meal-planner-plan.md", "source_location": "L73", "community": 28, "norm_label": "phase 4: notifications & approval", "id": "meal_planner_plan_md_phase_4_notifications_approval" }, { "label": "Phase 5: Shopping List & UI", "file_type": "document", "source_file": "meal-planner-plan.md", "source_location": "L79", "community": 28, "norm_label": "phase 5: shopping list & ui", "id": "meal_planner_plan_md_phase_5_shopping_list_ui" }, { "label": "Phase 6: Polish", "file_type": "document", "source_file": "meal-planner-plan.md", "source_location": "L85", "community": 28, "norm_label": "phase 6: polish", "id": "meal_planner_plan_md_phase_6_polish" }, { "label": "Done When", "file_type": "document", "source_file": "meal-planner-plan.md", "source_location": "L90", "community": 28, "norm_label": "done when", "id": "meal_planner_plan_md_done_when" }, { "label": "README.md", "file_type": "document", "source_file": "README.md", "source_location": null, "community": 7, "norm_label": "readme.md", "id": "readme_md" }, { "label": "Meal Planner", "file_type": "document", "source_file": "README.md", "source_location": "L1", "community": 7, "norm_label": "meal planner", "id": "readme_md_meal_planner" }, { "label": "Background", "file_type": "document", "source_file": "README.md", "source_location": "L5", "community": 7, "norm_label": "background", "id": "readme_md_background" }, { "label": "Features", "file_type": "document", "source_file": "README.md", "source_location": "L13", "community": 7, "norm_label": "features", "id": "readme_md_features" }, { "label": "Architecture", "file_type": "document", "source_file": "README.md", "source_location": "L23", "community": 7, "norm_label": "architecture", "id": "readme_md_architecture" }, { "label": "Documentation", "file_type": "document", "source_file": "README.md", "source_location": "L31", "community": 7, "norm_label": "documentation", "id": "readme_md_documentation" }, { "label": "Quick Start", "file_type": "document", "source_file": "README.md", "source_location": "L39", "community": 7, "norm_label": "quick start", "id": "readme_md_quick_start" }, { "label": "Clone and start", "file_type": "document", "source_file": "README.md", "source_location": "L42", "community": 7, "norm_label": "clone and start", "id": "readme_md_clone_and_start" }, { "label": "View logs", "file_type": "document", "source_file": "README.md", "source_location": "L45", "community": 7, "norm_label": "view logs", "id": "readme_md_view_logs" }, { "label": "Stop", "file_type": "document", "source_file": "README.md", "source_location": "L48", "community": 7, "norm_label": "stop", "id": "readme_md_stop" }, { "label": "Family Profile", "file_type": "document", "source_file": "README.md", "source_location": "L52", "community": 7, "norm_label": "family profile", "id": "readme_md_family_profile" }, { "label": "Approval Workflow", "file_type": "document", "source_file": "README.md", "source_location": "L60", "community": 7, "norm_label": "approval workflow", "id": "readme_md_approval_workflow" }, { "label": "Tech Stack", "file_type": "document", "source_file": "README.md", "source_location": "L67", "community": 7, "norm_label": "tech stack", "id": "readme_md_tech_stack" }, { "label": "CLAUDE.md", "file_type": "document", "source_file": "CLAUDE.md", "source_location": null, "community": 29, "norm_label": "claude.md", "id": "claude_md" }, { "label": "context-mode \u2014 MANDATORY routing rules", "file_type": "document", "source_file": "CLAUDE.md", "source_location": "L1", "community": 29, "norm_label": "context-mode \u2014 mandatory routing rules", "id": "claude_md_context_mode_mandatory_routing_rules" }, { "label": "BLOCKED commands \u2014 do NOT attempt these", "file_type": "document", "source_file": "CLAUDE.md", "source_location": "L5", "community": 29, "norm_label": "blocked commands \u2014 do not attempt these", "id": "claude_md_blocked_commands_do_not_attempt_these" }, { "label": "curl / wget \u2014 BLOCKED", "file_type": "document", "source_file": "CLAUDE.md", "source_location": "L7", "community": 29, "norm_label": "curl / wget \u2014 blocked", "id": "claude_md_curl_wget_blocked" }, { "label": "Inline HTTP \u2014 BLOCKED", "file_type": "document", "source_file": "CLAUDE.md", "source_location": "L13", "community": 29, "norm_label": "inline http \u2014 blocked", "id": "claude_md_inline_http_blocked" }, { "label": "WebFetch \u2014 BLOCKED", "file_type": "document", "source_file": "CLAUDE.md", "source_location": "L18", "community": 29, "norm_label": "webfetch \u2014 blocked", "id": "claude_md_webfetch_blocked" }, { "label": "REDIRECTED tools \u2014 use sandbox equivalents", "file_type": "document", "source_file": "CLAUDE.md", "source_location": "L23", "community": 29, "norm_label": "redirected tools \u2014 use sandbox equivalents", "id": "claude_md_redirected_tools_use_sandbox_equivalents" }, { "label": "Bash (>20 lines output)", "file_type": "document", "source_file": "CLAUDE.md", "source_location": "L25", "community": 29, "norm_label": "bash (>20 lines output)", "id": "claude_md_bash_20_lines_output" }, { "label": "Read (for analysis)", "file_type": "document", "source_file": "CLAUDE.md", "source_location": "L31", "community": 29, "norm_label": "read (for analysis)", "id": "claude_md_read_for_analysis" }, { "label": "Grep (large results)", "file_type": "document", "source_file": "CLAUDE.md", "source_location": "L35", "community": 29, "norm_label": "grep (large results)", "id": "claude_md_grep_large_results" }, { "label": "Tool selection hierarchy", "file_type": "document", "source_file": "CLAUDE.md", "source_location": "L38", "community": 29, "norm_label": "tool selection hierarchy", "id": "claude_md_tool_selection_hierarchy" }, { "label": "Subagent routing", "file_type": "document", "source_file": "CLAUDE.md", "source_location": "L46", "community": 29, "norm_label": "subagent routing", "id": "claude_md_subagent_routing" }, { "label": "Output constraints", "file_type": "document", "source_file": "CLAUDE.md", "source_location": "L50", "community": 29, "norm_label": "output constraints", "id": "claude_md_output_constraints" }, { "label": "ctx commands", "file_type": "document", "source_file": "CLAUDE.md", "source_location": "L56", "community": 29, "norm_label": "ctx commands", "id": "claude_md_ctx_commands" }, { "label": "SPEC.md", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": null, "community": 12, "norm_label": "spec.md", "id": "docs_spec_md" }, { "label": "Meal Planner - Project Specification", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L1", "community": 12, "norm_label": "meal planner - project specification", "id": "docs_spec_md_meal_planner_project_specification" }, { "label": "1. Overview", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L3", "community": 12, "norm_label": "1. overview", "id": "docs_spec_md_1_overview" }, { "label": "2. Problem Statement", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L12", "community": 12, "norm_label": "2. problem statement", "id": "docs_spec_md_2_problem_statement" }, { "label": "3. Goals", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L29", "community": 12, "norm_label": "3. goals", "id": "docs_spec_md_3_goals" }, { "label": "Primary Goals", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L31", "community": 12, "norm_label": "primary goals", "id": "docs_spec_md_primary_goals" }, { "label": "Secondary Goals", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L40", "community": 12, "norm_label": "secondary goals", "id": "docs_spec_md_secondary_goals" }, { "label": "4. Non-Goals (Out of Scope)", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L48", "community": 12, "norm_label": "4. non-goals (out of scope)", "id": "docs_spec_md_4_non_goals_out_of_scope" }, { "label": "5. User Stories", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L59", "community": 12, "norm_label": "5. user stories", "id": "docs_spec_md_5_user_stories" }, { "label": "As a family member, I can:", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L61", "community": 12, "norm_label": "as a family member, i can:", "id": "docs_spec_md_as_a_family_member_i_can" }, { "label": "As the system administrator, I can:", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L69", "community": 12, "norm_label": "as the system administrator, i can:", "id": "docs_spec_md_as_the_system_administrator_i_can" }, { "label": "6. Family Profile", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L77", "community": 12, "norm_label": "6. family profile", "id": "docs_spec_md_6_family_profile" }, { "label": "Household", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L79", "community": 12, "norm_label": "household", "id": "docs_spec_md_household" }, { "label": "Family Members", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L84", "community": 12, "norm_label": "family members", "id": "docs_spec_md_family_members" }, { "label": "Dietary Constraints", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L92", "community": 12, "norm_label": "dietary constraints", "id": "docs_spec_md_dietary_constraints" }, { "label": "Preference Signals", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L96", "community": 12, "norm_label": "preference signals", "id": "docs_spec_md_preference_signals" }, { "label": "7. Approval Workflow", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L104", "community": 12, "norm_label": "7. approval workflow", "id": "docs_spec_md_7_approval_workflow" }, { "label": "Weekly Flow", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L106", "community": 12, "norm_label": "weekly flow", "id": "docs_spec_md_weekly_flow" }, { "label": "Approval Token Security", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L138", "community": 12, "norm_label": "approval token security", "id": "docs_spec_md_approval_token_security" }, { "label": "8. Technical Constraints", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L146", "community": 12, "norm_label": "8. technical constraints", "id": "docs_spec_md_8_technical_constraints" }, { "label": "Self-Hosting Requirements", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L148", "community": 12, "norm_label": "self-hosting requirements", "id": "docs_spec_md_self_hosting_requirements" }, { "label": "Authentication & Authorization", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L153", "community": 12, "norm_label": "authentication & authorization", "id": "docs_spec_md_authentication_authorization" }, { "label": "Lucky California Integration", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L159", "community": 12, "norm_label": "lucky california integration", "id": "docs_spec_md_lucky_california_integration" }, { "label": "Email", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L166", "community": 12, "norm_label": "email", "id": "docs_spec_md_email" }, { "label": "External Dependencies", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L172", "community": 12, "norm_label": "external dependencies", "id": "docs_spec_md_external_dependencies" }, { "label": "9. Accessibility (WCAG 2.1 AA)", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L182", "community": 12, "norm_label": "9. accessibility (wcag 2.1 aa)", "id": "docs_spec_md_9_accessibility_wcag_2_1_aa" }, { "label": "Web UI", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L184", "community": 12, "norm_label": "web ui", "id": "docs_spec_md_web_ui" }, { "label": "10. Data Retention", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L199", "community": 12, "norm_label": "10. data retention", "id": "docs_spec_md_10_data_retention" }, { "label": "Stored Data", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L201", "community": 12, "norm_label": "stored data", "id": "docs_spec_md_stored_data" }, { "label": "Retention Period", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L208", "community": 12, "norm_label": "retention period", "id": "docs_spec_md_retention_period" }, { "label": "11. Success Metrics", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L215", "community": 12, "norm_label": "11. success metrics", "id": "docs_spec_md_11_success_metrics" }, { "label": "12. Future Considerations", "file_type": "document", "source_file": "docs/SPEC.md", "source_location": "L225", "community": 12, "norm_label": "12. future considerations", "id": "docs_spec_md_12_future_considerations" }, { "label": "ARCHITECTURE.md", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": null, "community": 13, "norm_label": "architecture.md", "id": "docs_architecture_md" }, { "label": "Meal Planner - Architecture", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L1", "community": 13, "norm_label": "meal planner - architecture", "id": "docs_architecture_md_meal_planner_architecture" }, { "label": "1. System Overview", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L3", "community": 13, "norm_label": "1. system overview", "id": "docs_architecture_md_1_system_overview" }, { "label": "2. Component Descriptions", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L52", "community": 13, "norm_label": "2. component descriptions", "id": "docs_architecture_md_2_component_descriptions" }, { "label": "2.1 Scraper Service", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L54", "community": 13, "norm_label": "2.1 scraper service", "id": "docs_architecture_md_2_1_scraper_service" }, { "label": "2.2 Recipe Engine", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L76", "community": 13, "norm_label": "2.2 recipe engine", "id": "docs_architecture_md_2_2_recipe_engine" }, { "label": "2.3 Meal Planner Service", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L91", "community": 13, "norm_label": "2.3 meal planner service", "id": "docs_architecture_md_2_3_meal_planner_service" }, { "label": "2.4 Notification Service", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L112", "community": 13, "norm_label": "2.4 notification service", "id": "docs_architecture_md_2_4_notification_service" }, { "label": "2.5 Feedback Service", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L147", "community": 13, "norm_label": "2.5 feedback service", "id": "docs_architecture_md_2_5_feedback_service" }, { "label": "2.6 Web UI (React + Tailwind)", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L164", "community": 13, "norm_label": "2.6 web ui (react + tailwind)", "id": "docs_architecture_md_2_6_web_ui_react_tailwind" }, { "label": "3. Data Architecture", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L183", "community": 13, "norm_label": "3. data architecture", "id": "docs_architecture_md_3_data_architecture" }, { "label": "3.1 PostgreSQL Schema Overview", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L185", "community": 13, "norm_label": "3.1 postgresql schema overview", "id": "docs_architecture_md_3_1_postgresql_schema_overview" }, { "label": "3.2 Key Relationships", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L267", "community": 13, "norm_label": "3.2 key relationships", "id": "docs_architecture_md_3_2_key_relationships" }, { "label": "4. API Design", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L284", "community": 13, "norm_label": "4. api design", "id": "docs_architecture_md_4_api_design" }, { "label": "4.1 Core Endpoints", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L286", "community": 13, "norm_label": "4.1 core endpoints", "id": "docs_architecture_md_4_1_core_endpoints" }, { "label": "4.2 Email Approval Links", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L306", "community": 13, "norm_label": "4.2 email approval links", "id": "docs_architecture_md_4_2_email_approval_links" }, { "label": "5. Deployment Architecture", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L313", "community": 13, "norm_label": "5. deployment architecture", "id": "docs_architecture_md_5_deployment_architecture" }, { "label": "5.1 Docker Compose Services", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L315", "community": 13, "norm_label": "5.1 docker compose services", "id": "docs_architecture_md_5_1_docker_compose_services" }, { "label": "5.2 Reverse Proxy (Nginx)", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L365", "community": 13, "norm_label": "5.2 reverse proxy (nginx)", "id": "docs_architecture_md_5_2_reverse_proxy_nginx" }, { "label": "5.3 Remote Access Security", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L373", "community": 13, "norm_label": "5.3 remote access security", "id": "docs_architecture_md_5_3_remote_access_security" }, { "label": "6. Image Strategy", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L380", "community": 13, "norm_label": "6. image strategy", "id": "docs_architecture_md_6_image_strategy" }, { "label": "6.1 Primary: Scraped Images", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L382", "community": 13, "norm_label": "6.1 primary: scraped images", "id": "docs_architecture_md_6_1_primary_scraped_images" }, { "label": "6.2 Fallback: AI Generation", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L387", "community": 13, "norm_label": "6.2 fallback: ai generation", "id": "docs_architecture_md_6_2_fallback_ai_generation" }, { "label": "6.3 Email Image Handling", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L393", "community": 13, "norm_label": "6.3 email image handling", "id": "docs_architecture_md_6_3_email_image_handling" }, { "label": "7. Error Handling Strategy", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L400", "community": 13, "norm_label": "7. error handling strategy", "id": "docs_architecture_md_7_error_handling_strategy" }, { "label": "7.1 Scraper Failures", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L402", "community": 13, "norm_label": "7.1 scraper failures", "id": "docs_architecture_md_7_1_scraper_failures" }, { "label": "7.2 Email Failures", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L409", "community": 13, "norm_label": "7.2 email failures", "id": "docs_architecture_md_7_2_email_failures" }, { "label": "7.3 Database Failures", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L415", "community": 13, "norm_label": "7.3 database failures", "id": "docs_architecture_md_7_3_database_failures" }, { "label": "8. Logging & Monitoring", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L422", "community": 13, "norm_label": "8. logging & monitoring", "id": "docs_architecture_md_8_logging_monitoring" }, { "label": "8.1 Log Categories", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L424", "community": 13, "norm_label": "8.1 log categories", "id": "docs_architecture_md_8_1_log_categories" }, { "label": "8.2 Log Storage", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L431", "community": 13, "norm_label": "8.2 log storage", "id": "docs_architecture_md_8_2_log_storage" }, { "label": "8.3 Monitoring (Future)", "file_type": "document", "source_file": "docs/ARCHITECTURE.md", "source_location": "L436", "community": 13, "norm_label": "8.3 monitoring (future)", "id": "docs_architecture_md_8_3_monitoring_future" }, { "label": "database-schema.md", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": null, "community": 7, "norm_label": "database-schema.md", "id": "docs_database_schema_md" }, { "label": "Meal Planner - Database Schema", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L1", "community": 7, "norm_label": "meal planner - database schema", "id": "docs_database_schema_md_meal_planner_database_schema" }, { "label": "1. Schema Overview", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L3", "community": 7, "norm_label": "1. schema overview", "id": "docs_database_schema_md_1_schema_overview" }, { "label": "2. Enums", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L11", "community": 7, "norm_label": "2. enums", "id": "docs_database_schema_md_2_enums" }, { "label": "3. Tables", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L27", "community": 7, "norm_label": "3. tables", "id": "docs_database_schema_md_3_tables" }, { "label": "3.1 `family_profile`", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L29", "community": 7, "norm_label": "3.1 `family_profile`", "id": "docs_database_schema_md_3_1_family_profile" }, { "label": "3.2 `family_member`", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L49", "community": 7, "norm_label": "3.2 `family_member`", "id": "docs_database_schema_md_3_2_family_member" }, { "label": "3.3 `ingredient`", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L66", "community": 7, "norm_label": "3.3 `ingredient`", "id": "docs_database_schema_md_3_3_ingredient" }, { "label": "3.4 `recipe`", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L82", "community": 7, "norm_label": "3.4 `recipe`", "id": "docs_database_schema_md_3_4_recipe" }, { "label": "3.5 `meal_plan`", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L112", "community": 7, "norm_label": "3.5 `meal_plan`", "id": "docs_database_schema_md_3_5_meal_plan" }, { "label": "3.6 `meal_plan_item`", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L130", "community": 7, "norm_label": "3.6 `meal_plan_item`", "id": "docs_database_schema_md_3_6_meal_plan_item" }, { "label": "3.7 `meal_plan_vote`", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L151", "community": 7, "norm_label": "3.7 `meal_plan_vote`", "id": "docs_database_schema_md_3_7_meal_plan_vote" }, { "label": "3.8 `approval_token`", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L165", "community": 7, "norm_label": "3.8 `approval_token`", "id": "docs_database_schema_md_3_8_approval_token" }, { "label": "3.9 `home_pantry`", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L182", "community": 7, "norm_label": "3.9 `home_pantry`", "id": "docs_database_schema_md_3_9_home_pantry" }, { "label": "3.10 `feedback`", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L199", "community": 7, "norm_label": "3.10 `feedback`", "id": "docs_database_schema_md_3_10_feedback" }, { "label": "3.11 `never_suggest`", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L217", "community": 7, "norm_label": "3.11 `never_suggest`", "id": "docs_database_schema_md_3_11_never_suggest" }, { "label": "3.12 `grocery_item`", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L231", "community": 7, "norm_label": "3.12 `grocery_item`", "id": "docs_database_schema_md_3_12_grocery_item" }, { "label": "3.13 `scrape_log`", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L254", "community": 7, "norm_label": "3.13 `scrape_log`", "id": "docs_database_schema_md_3_13_scrape_log" }, { "label": "3.14 `email_log`", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L270", "community": 7, "norm_label": "3.14 `email_log`", "id": "docs_database_schema_md_3_14_email_log" }, { "label": "4. Indexes", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L290", "community": 7, "norm_label": "4. indexes", "id": "docs_database_schema_md_4_indexes" }, { "label": "4.1 Primary Indexes", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L292", "community": 7, "norm_label": "4.1 primary indexes", "id": "docs_database_schema_md_4_1_primary_indexes" }, { "label": "4.2 Foreign Key Indexes", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L295", "community": 7, "norm_label": "4.2 foreign key indexes", "id": "docs_database_schema_md_4_2_foreign_key_indexes" }, { "label": "4.3 Full-Text Search Indexes", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L316", "community": 7, "norm_label": "4.3 full-text search indexes", "id": "docs_database_schema_md_4_3_full_text_search_indexes" }, { "label": "5. Day of Week Convention", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L324", "community": 7, "norm_label": "5. day of week convention", "id": "docs_database_schema_md_5_day_of_week_convention" }, { "label": "6. Data Migration Strategy", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L341", "community": 7, "norm_label": "6. data migration strategy", "id": "docs_database_schema_md_6_data_migration_strategy" }, { "label": "6.1 Initial Schema", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L343", "community": 7, "norm_label": "6.1 initial schema", "id": "docs_database_schema_md_6_1_initial_schema" }, { "label": "6.2 Migration Policy", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L346", "community": 7, "norm_label": "6.2 migration policy", "id": "docs_database_schema_md_6_2_migration_policy" }, { "label": "6.3 Seed Data", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L351", "community": 7, "norm_label": "6.3 seed data", "id": "docs_database_schema_md_6_3_seed_data" }, { "label": "7. Data Retention", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L359", "community": 7, "norm_label": "7. data retention", "id": "docs_database_schema_md_7_data_retention" }, { "label": "8. Row-Level Security (Future)", "file_type": "document", "source_file": "docs/database-schema.md", "source_location": "L374", "community": 7, "norm_label": "8. row-level security (future)", "id": "docs_database_schema_md_8_row_level_security_future" }, { "label": "implementation-plan.md", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": null, "community": 3, "norm_label": "implementation-plan.md", "id": "docs_implementation_plan_md" }, { "label": "Meal Planner - Implementation Plan", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L1", "community": 3, "norm_label": "meal planner - implementation plan", "id": "docs_implementation_plan_md_meal_planner_implementation_plan" }, { "label": "Overview", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L3", "community": 3, "norm_label": "overview", "id": "docs_implementation_plan_md_overview" }, { "label": "Phase 1: Infrastructure & Foundation", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L9", "community": 3, "norm_label": "phase 1: infrastructure & foundation", "id": "docs_implementation_plan_md_phase_1_infrastructure_foundation" }, { "label": "1.1 Project Setup", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L11", "community": 3, "norm_label": "1.1 project setup", "id": "docs_implementation_plan_md_1_1_project_setup" }, { "label": "1.2 Backend Skeleton", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L21", "community": 3, "norm_label": "1.2 backend skeleton", "id": "docs_implementation_plan_md_1_2_backend_skeleton" }, { "label": "1.3 Frontend Skeleton", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L42", "community": 3, "norm_label": "1.3 frontend skeleton", "id": "docs_implementation_plan_md_1_3_frontend_skeleton" }, { "label": "1.4 Reverse Proxy (Nginx)", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L59", "community": 3, "norm_label": "1.4 reverse proxy (nginx)", "id": "docs_implementation_plan_md_1_4_reverse_proxy_nginx" }, { "label": "Phase 2: Database & Models", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L70", "community": 3, "norm_label": "phase 2: database & models", "id": "docs_implementation_plan_md_phase_2_database_models" }, { "label": "2.1 SQLAlchemy Models", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L72", "community": 3, "norm_label": "2.1 sqlalchemy models", "id": "docs_implementation_plan_md_2_1_sqlalchemy_models" }, { "label": "2.2 Pydantic Schemas", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L86", "community": 3, "norm_label": "2.2 pydantic schemas", "id": "docs_implementation_plan_md_2_2_pydantic_schemas" }, { "label": "2.3 Database Migrations", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L91", "community": 3, "norm_label": "2.3 database migrations", "id": "docs_implementation_plan_md_2_3_database_migrations" }, { "label": "Phase 3: API Endpoints", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L100", "community": 3, "norm_label": "phase 3: api endpoints", "id": "docs_implementation_plan_md_phase_3_api_endpoints" }, { "label": "3.1 Core CRUD Endpoints", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L102", "community": 3, "norm_label": "3.1 core crud endpoints", "id": "docs_implementation_plan_md_3_1_core_crud_endpoints" }, { "label": "3.2 Meal Plan Endpoints", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L110", "community": 3, "norm_label": "3.2 meal plan endpoints", "id": "docs_implementation_plan_md_3_2_meal_plan_endpoints" }, { "label": "3.3 Shopping List Endpoints", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L116", "community": 3, "norm_label": "3.3 shopping list endpoints", "id": "docs_implementation_plan_md_3_3_shopping_list_endpoints" }, { "label": "3.4 Feedback Endpoints", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L120", "community": 3, "norm_label": "3.4 feedback endpoints", "id": "docs_implementation_plan_md_3_4_feedback_endpoints" }, { "label": "3.5 Admin Endpoints", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L124", "community": 3, "norm_label": "3.5 admin endpoints", "id": "docs_implementation_plan_md_3_5_admin_endpoints" }, { "label": "Phase 4: Lucky California Scraper", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L132", "community": 3, "norm_label": "phase 4: lucky california scraper", "id": "docs_implementation_plan_md_phase_4_lucky_california_scraper" }, { "label": "4.1 Scraper Infrastructure", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L134", "community": 3, "norm_label": "4.1 scraper infrastructure", "id": "docs_implementation_plan_md_4_1_scraper_infrastructure" }, { "label": "4.2 Weekly Ad Scraper", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L141", "community": 3, "norm_label": "4.2 weekly ad scraper", "id": "docs_implementation_plan_md_4_2_weekly_ad_scraper" }, { "label": "4.3 Product Catalog Scraper (Future)", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L148", "community": 3, "norm_label": "4.3 product catalog scraper (future)", "id": "docs_implementation_plan_md_4_3_product_catalog_scraper_future" }, { "label": "4.4 Scrape Scheduling", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L153", "community": 3, "norm_label": "4.4 scrape scheduling", "id": "docs_implementation_plan_md_4_4_scrape_scheduling" }, { "label": "4.5 Error Handling", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L158", "community": 3, "norm_label": "4.5 error handling", "id": "docs_implementation_plan_md_4_5_error_handling" }, { "label": "Phase 5: Recipe Engine", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L167", "community": 3, "norm_label": "phase 5: recipe engine", "id": "docs_implementation_plan_md_phase_5_recipe_engine" }, { "label": "5.1 Recipe Database", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L169", "community": 3, "norm_label": "5.1 recipe database", "id": "docs_implementation_plan_md_5_1_recipe_database" }, { "label": "5.2 Recipe Importing", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L175", "community": 3, "norm_label": "5.2 recipe importing", "id": "docs_implementation_plan_md_5_2_recipe_importing" }, { "label": "5.3 Ingredient Mapping", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L180", "community": 3, "norm_label": "5.3 ingredient mapping", "id": "docs_implementation_plan_md_5_3_ingredient_mapping" }, { "label": "Phase 6: Meal Planner Engine", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L189", "community": 3, "norm_label": "phase 6: meal planner engine", "id": "docs_implementation_plan_md_phase_6_meal_planner_engine" }, { "label": "6.1 Plan Generation Algorithm", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L191", "community": 3, "norm_label": "6.1 plan generation algorithm", "id": "docs_implementation_plan_md_6_1_plan_generation_algorithm" }, { "label": "6.2 Substitution Logic", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L200", "community": 3, "norm_label": "6.2 substitution logic", "id": "docs_implementation_plan_md_6_2_substitution_logic" }, { "label": "6.3 Cost Calculation", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L205", "community": 3, "norm_label": "6.3 cost calculation", "id": "docs_implementation_plan_md_6_3_cost_calculation" }, { "label": "6.4 Plan Persistence", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L210", "community": 3, "norm_label": "6.4 plan persistence", "id": "docs_implementation_plan_md_6_4_plan_persistence" }, { "label": "Phase 7: SendGrid Email Integration", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L219", "community": 3, "norm_label": "phase 7: sendgrid email integration", "id": "docs_implementation_plan_md_phase_7_sendgrid_email_integration" }, { "label": "7.1 SendGrid Setup", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L221", "community": 3, "norm_label": "7.1 sendgrid setup", "id": "docs_implementation_plan_md_7_1_sendgrid_setup" }, { "label": "7.2 Meal Proposal Email", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L227", "community": 3, "norm_label": "7.2 meal proposal email", "id": "docs_implementation_plan_md_7_2_meal_proposal_email" }, { "label": "7.3 Reminder Email", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L236", "community": 3, "norm_label": "7.3 reminder email", "id": "docs_implementation_plan_md_7_3_reminder_email" }, { "label": "7.4 Confirmation Email", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L241", "community": 3, "norm_label": "7.4 confirmation email", "id": "docs_implementation_plan_md_7_4_confirmation_email" }, { "label": "Phase 8: Web UI - Core Features", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L250", "community": 3, "norm_label": "phase 8: web ui - core features", "id": "docs_implementation_plan_md_phase_8_web_ui_core_features" }, { "label": "8.1 Dashboard", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L252", "community": 3, "norm_label": "8.1 dashboard", "id": "docs_implementation_plan_md_8_1_dashboard" }, { "label": "8.2 Meal Detail Page", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L259", "community": 3, "norm_label": "8.2 meal detail page", "id": "docs_implementation_plan_md_8_2_meal_detail_page" }, { "label": "8.3 Approval Center", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L266", "community": 3, "norm_label": "8.3 approval center", "id": "docs_implementation_plan_md_8_3_approval_center" }, { "label": "8.4 Pantry Manager", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L272", "community": 3, "norm_label": "8.4 pantry manager", "id": "docs_implementation_plan_md_8_4_pantry_manager" }, { "label": "Phase 9: Web UI - Feedback & Learning", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L282", "community": 3, "norm_label": "phase 9: web ui - feedback & learning", "id": "docs_implementation_plan_md_phase_9_web_ui_feedback_learning" }, { "label": "9.1 Feedback Portal", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L284", "community": 3, "norm_label": "9.1 feedback portal", "id": "docs_implementation_plan_md_9_1_feedback_portal" }, { "label": "9.2 Learning Integration", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L290", "community": 3, "norm_label": "9.2 learning integration", "id": "docs_implementation_plan_md_9_2_learning_integration" }, { "label": "9.3 Recipe Discovery", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L295", "community": 3, "norm_label": "9.3 recipe discovery", "id": "docs_implementation_plan_md_9_3_recipe_discovery" }, { "label": "Phase 10: Shopping List & Print", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L305", "community": 3, "norm_label": "phase 10: shopping list & print", "id": "docs_implementation_plan_md_phase_10_shopping_list_print" }, { "label": "10.1 Shopping List Generation", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L307", "community": 3, "norm_label": "10.1 shopping list generation", "id": "docs_implementation_plan_md_10_1_shopping_list_generation" }, { "label": "10.2 Printable Shopping List", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L314", "community": 3, "norm_label": "10.2 printable shopping list", "id": "docs_implementation_plan_md_10_2_printable_shopping_list" }, { "label": "10.3 Web UI Shopping List View", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L320", "community": 3, "norm_label": "10.3 web ui shopping list view", "id": "docs_implementation_plan_md_10_3_web_ui_shopping_list_view" }, { "label": "Phase 11: Image Strategy Implementation", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L331", "community": 3, "norm_label": "phase 11: image strategy implementation", "id": "docs_implementation_plan_md_phase_11_image_strategy_implementation" }, { "label": "11.1 Scraped Images", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L333", "community": 3, "norm_label": "11.1 scraped images", "id": "docs_implementation_plan_md_11_1_scraped_images" }, { "label": "11.2 AI Image Generation (Fallback)", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L338", "community": 3, "norm_label": "11.2 ai image generation (fallback)", "id": "docs_implementation_plan_md_11_2_ai_image_generation_fallback" }, { "label": "11.3 Email Image Handling", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L345", "community": 3, "norm_label": "11.3 email image handling", "id": "docs_implementation_plan_md_11_3_email_image_handling" }, { "label": "Phase 12: Polish & Future Features", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L354", "community": 3, "norm_label": "phase 12: polish & future features", "id": "docs_implementation_plan_md_phase_12_polish_future_features" }, { "label": "12.1 Variety Analysis", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L356", "community": 3, "norm_label": "12.1 variety analysis", "id": "docs_implementation_plan_md_12_1_variety_analysis" }, { "label": "12.2 Budget Tracking", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L361", "community": 3, "norm_label": "12.2 budget tracking", "id": "docs_implementation_plan_md_12_2_budget_tracking" }, { "label": "12.3 WhatsApp Integration (Future)", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L366", "community": 3, "norm_label": "12.3 whatsapp integration (future)", "id": "docs_implementation_plan_md_12_3_whatsapp_integration_future" }, { "label": "12.4 Recipe Scraping (Future)", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L371", "community": 3, "norm_label": "12.4 recipe scraping (future)", "id": "docs_implementation_plan_md_12_4_recipe_scraping_future" }, { "label": "Verification Commands", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L378", "community": 3, "norm_label": "verification commands", "id": "docs_implementation_plan_md_verification_commands" }, { "label": "Backend Tests", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L380", "community": 3, "norm_label": "backend tests", "id": "docs_implementation_plan_md_backend_tests" }, { "label": "Health check", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L382", "community": 3, "norm_label": "health check", "id": "docs_implementation_plan_md_health_check" }, { "label": "API tests", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L385", "community": 3, "norm_label": "api tests", "id": "docs_implementation_plan_md_api_tests" }, { "label": "Frontend Tests", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L391", "community": 3, "norm_label": "frontend tests", "id": "docs_implementation_plan_md_frontend_tests" }, { "label": "Build test", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L393", "community": 3, "norm_label": "build test", "id": "docs_implementation_plan_md_build_test" }, { "label": "Dev server", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L396", "community": 3, "norm_label": "dev server", "id": "docs_implementation_plan_md_dev_server" }, { "label": "Full Stack Tests", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L400", "community": 3, "norm_label": "full stack tests", "id": "docs_implementation_plan_md_full_stack_tests" }, { "label": "Start all services", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L402", "community": 3, "norm_label": "start all services", "id": "docs_implementation_plan_md_start_all_services" }, { "label": "Check all services running", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L405", "community": 3, "norm_label": "check all services running", "id": "docs_implementation_plan_md_check_all_services_running" }, { "label": "View logs", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L408", "community": 3, "norm_label": "view logs", "id": "docs_implementation_plan_md_view_logs" }, { "label": "Stop all services", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L411", "community": 3, "norm_label": "stop all services", "id": "docs_implementation_plan_md_stop_all_services" }, { "label": "File Structure", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L417", "community": 3, "norm_label": "file structure", "id": "docs_implementation_plan_md_file_structure" }, { "label": "Dependencies", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L484", "community": 3, "norm_label": "dependencies", "id": "docs_implementation_plan_md_dependencies" }, { "label": "Backend (Python 3.11+)", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L486", "community": 3, "norm_label": "backend (python 3.11+)", "id": "docs_implementation_plan_md_backend_python_3_11" }, { "label": "Frontend (Node 18+)", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L500", "community": 3, "norm_label": "frontend (node 18+)", "id": "docs_implementation_plan_md_frontend_node_18" }, { "label": "Environment Variables", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L516", "community": 3, "norm_label": "environment variables", "id": "docs_implementation_plan_md_environment_variables" }, { "label": "Backend", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L519", "community": 3, "norm_label": "backend", "id": "docs_implementation_plan_md_backend" }, { "label": "Frontend", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L528", "community": 3, "norm_label": "frontend", "id": "docs_implementation_plan_md_frontend" }, { "label": "Docker", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L531", "community": 3, "norm_label": "docker", "id": "docs_implementation_plan_md_docker" }, { "label": "Notes", "file_type": "document", "source_file": "docs/implementation-plan.md", "source_location": "L537", "community": 3, "norm_label": "notes", "id": "docs_implementation_plan_md_notes" }, { "label": "RUNNING.md", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": null, "community": 1, "norm_label": "running.md", "id": "docs_running_md" }, { "label": "Running the Meal Planner", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L1", "community": 1, "norm_label": "running the meal planner", "id": "docs_running_md_running_the_meal_planner" }, { "label": "Prerequisites", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L3", "community": 1, "norm_label": "prerequisites", "id": "docs_running_md_prerequisites" }, { "label": "Environment Setup", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L10", "community": 1, "norm_label": "environment setup", "id": "docs_running_md_environment_setup" }, { "label": "1. Clone Repository", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L12", "community": 1, "norm_label": "1. clone repository", "id": "docs_running_md_1_clone_repository" }, { "label": "2. Create Environment File", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L19", "community": 1, "norm_label": "2. create environment file", "id": "docs_running_md_2_create_environment_file" }, { "label": "Database", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L28", "community": 1, "norm_label": "database", "id": "docs_running_md_database" }, { "label": "SendGrid", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L31", "community": 1, "norm_label": "sendgrid", "id": "docs_running_md_sendgrid" }, { "label": "Family Emails", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L34", "community": 1, "norm_label": "family emails", "id": "docs_running_md_family_emails" }, { "label": "Lucky California (for scraping)", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L38", "community": 1, "norm_label": "lucky california (for scraping)", "id": "docs_running_md_lucky_california_for_scraping" }, { "label": "AI Images (optional)", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L41", "community": 1, "norm_label": "ai images (optional)", "id": "docs_running_md_ai_images_optional" }, { "label": "3. Create SSL Certificates (for remote access)", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L47", "community": 1, "norm_label": "3. create ssl certificates (for remote access)", "id": "docs_running_md_3_create_ssl_certificates_for_remote_acc" }, { "label": "Option 1: Let's Encrypt with Certbot", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L51", "community": 1, "norm_label": "option 1: let's encrypt with certbot", "id": "docs_running_md_option_1_let_s_encrypt_with_certbot" }, { "label": "Option 2: Self-signed for local testing", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L54", "community": 1, "norm_label": "option 2: self-signed for local testing", "id": "docs_running_md_option_2_self_signed_for_local_testing" }, { "label": "Starting Services", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L59", "community": 1, "norm_label": "starting services", "id": "docs_running_md_starting_services" }, { "label": "Local Development", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L61", "community": 1, "norm_label": "local development", "id": "docs_running_md_local_development" }, { "label": "Start all services", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L64", "community": 1, "norm_label": "start all services", "id": "docs_running_md_start_all_services" }, { "label": "View logs", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L67", "community": 1, "norm_label": "view logs", "id": "docs_running_md_view_logs" }, { "label": "Stop all services", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L71", "community": 1, "norm_label": "stop all services", "id": "docs_running_md_stop_all_services" }, { "label": "Production Deployment", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L75", "community": 1, "norm_label": "production deployment", "id": "docs_running_md_production_deployment" }, { "label": "Start with production settings", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L78", "community": 1, "norm_label": "start with production settings", "id": "docs_running_md_start_with_production_settings" }, { "label": "Check service status", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L81", "community": 1, "norm_label": "check service status", "id": "docs_running_md_check_service_status" }, { "label": "View resource usage", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L84", "community": 1, "norm_label": "view resource usage", "id": "docs_running_md_view_resource_usage" }, { "label": "Accessing the Application", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L88", "community": 1, "norm_label": "accessing the application", "id": "docs_running_md_accessing_the_application" }, { "label": "Local Access", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L90", "community": 1, "norm_label": "local access", "id": "docs_running_md_local_access" }, { "label": "Remote Access (with reverse proxy)", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L96", "community": 1, "norm_label": "remote access (with reverse proxy)", "id": "docs_running_md_remote_access_with_reverse_proxy" }, { "label": "Database Management", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L102", "community": 1, "norm_label": "database management", "id": "docs_running_md_database_management" }, { "label": "Initial Migration", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L104", "community": 1, "norm_label": "initial migration", "id": "docs_running_md_initial_migration" }, { "label": "Run migrations", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L107", "community": 1, "norm_label": "run migrations", "id": "docs_running_md_run_migrations" }, { "label": "Check current migration", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L110", "community": 1, "norm_label": "check current migration", "id": "docs_running_md_check_current_migration" }, { "label": "Create new migration after model changes", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L113", "community": 1, "norm_label": "create new migration after model changes", "id": "docs_running_md_create_new_migration_after_model_changes" }, { "label": "Backup Database", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L117", "community": 1, "norm_label": "backup database", "id": "docs_running_md_backup_database" }, { "label": "Backup to file", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L120", "community": 1, "norm_label": "backup to file", "id": "docs_running_md_backup_to_file" }, { "label": "Restore from backup", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L123", "community": 1, "norm_label": "restore from backup", "id": "docs_running_md_restore_from_backup" }, { "label": "Reset Database", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L127", "community": 1, "norm_label": "reset database", "id": "docs_running_md_reset_database" }, { "label": "Danger: Drops and recreates all data", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L130", "community": 1, "norm_label": "danger: drops and recreates all data", "id": "docs_running_md_danger_drops_and_recreates_all_data" }, { "label": "Scraping", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L136", "community": 1, "norm_label": "scraping", "id": "docs_running_md_scraping" }, { "label": "Manual Scrape Trigger", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L138", "community": 1, "norm_label": "manual scrape trigger", "id": "docs_running_md_manual_scrape_trigger" }, { "label": "Scrape Lucky California weekly ad", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L141", "community": 1, "norm_label": "scrape lucky california weekly ad", "id": "docs_running_md_scrape_lucky_california_weekly_ad" }, { "label": "Check Scrape Logs", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L147", "community": 1, "norm_label": "check scrape logs", "id": "docs_running_md_check_scrape_logs" }, { "label": "View recent scrape operations", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L150", "community": 1, "norm_label": "view recent scrape operations", "id": "docs_running_md_view_recent_scrape_operations" }, { "label": "Scheduling", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L154", "community": 1, "norm_label": "scheduling", "id": "docs_running_md_scheduling" }, { "label": "Email Testing", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L160", "community": 1, "norm_label": "email testing", "id": "docs_running_md_email_testing" }, { "label": "Test Email Send", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L162", "community": 1, "norm_label": "test email send", "id": "docs_running_md_test_email_send" }, { "label": "Send test email", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L165", "community": 1, "norm_label": "send test email", "id": "docs_running_md_send_test_email" }, { "label": "View Email Logs", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L171", "community": 1, "norm_label": "view email logs", "id": "docs_running_md_view_email_logs" }, { "label": "Troubleshooting", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L177", "community": 1, "norm_label": "troubleshooting", "id": "docs_running_md_troubleshooting" }, { "label": "Backend Won't Start", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L179", "community": 1, "norm_label": "backend won't start", "id": "docs_running_md_backend_won_t_start" }, { "label": "Check logs", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L182", "community": 1, "norm_label": "check logs", "id": "docs_running_md_check_logs" }, { "label": "Common issues:", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L185", "community": 1, "norm_label": "common issues:", "id": "docs_running_md_common_issues" }, { "label": "- Database not ready: wait for db to be healthy", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L186", "community": 1, "norm_label": "- database not ready: wait for db to be healthy", "id": "docs_running_md_database_not_ready_wait_for_db_to_be_hea" }, { "label": "- Port conflict: check if port 8000 is in use", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L187", "community": 1, "norm_label": "- port conflict: check if port 8000 is in use", "id": "docs_running_md_port_conflict_check_if_port_8000_is_in_u" }, { "label": "- Missing env vars: verify .env file exists and is valid", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L188", "community": 1, "norm_label": "- missing env vars: verify .env file exists and is valid", "id": "docs_running_md_missing_env_vars_verify_env_file_exists_" }, { "label": "Frontend Build Fails", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L191", "community": 1, "norm_label": "frontend build fails", "id": "docs_running_md_frontend_build_fails" }, { "label": "Check for Node version issues", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L194", "community": 1, "norm_label": "check for node version issues", "id": "docs_running_md_check_for_node_version_issues" }, { "label": "Clear cache and rebuild", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L197", "community": 1, "norm_label": "clear cache and rebuild", "id": "docs_running_md_clear_cache_and_rebuild" }, { "label": "Database Connection Errors", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L203", "community": 1, "norm_label": "database connection errors", "id": "docs_running_md_database_connection_errors" }, { "label": "Verify database is running", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L206", "community": 1, "norm_label": "verify database is running", "id": "docs_running_md_verify_database_is_running" }, { "label": "Test connection from backend", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L209", "community": 1, "norm_label": "test connection from backend", "id": "docs_running_md_test_connection_from_backend" }, { "label": "Check credentials", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L212", "community": 1, "norm_label": "check credentials", "id": "docs_running_md_check_credentials" }, { "label": "Scraping Failures", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L216", "community": 1, "norm_label": "scraping failures", "id": "docs_running_md_scraping_failures" }, { "label": "Check Lucky California is accessible", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L219", "community": 1, "norm_label": "check lucky california is accessible", "id": "docs_running_md_check_lucky_california_is_accessible" }, { "label": "Verify Playwright browser installed", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L222", "community": 1, "norm_label": "verify playwright browser installed", "id": "docs_running_md_verify_playwright_browser_installed" }, { "label": "Manual retry", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L225", "community": 1, "norm_label": "manual retry", "id": "docs_running_md_manual_retry" }, { "label": "Email Not Sending", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L229", "community": 1, "norm_label": "email not sending", "id": "docs_running_md_email_not_sending" }, { "label": "Verify SendGrid API key", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L232", "community": 1, "norm_label": "verify sendgrid api key", "id": "docs_running_md_verify_sendgrid_api_key" }, { "label": "Check SendGrid dashboard for failures", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L235", "community": 1, "norm_label": "check sendgrid dashboard for failures", "id": "docs_running_md_check_sendgrid_dashboard_for_failures" }, { "label": "Ensure sender email is verified in SendGrid", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L236", "community": 1, "norm_label": "ensure sender email is verified in sendgrid", "id": "docs_running_md_ensure_sender_email_is_verified_in_sendg" }, { "label": "Development", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L239", "community": 1, "norm_label": "development", "id": "docs_running_md_development" }, { "label": "Backend Development", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L241", "community": 1, "norm_label": "backend development", "id": "docs_running_md_backend_development" }, { "label": "Enter backend container", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L244", "community": 1, "norm_label": "enter backend container", "id": "docs_running_md_enter_backend_container" }, { "label": "Run tests", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L247", "community": 1, "norm_label": "run tests", "id": "docs_running_md_run_tests" }, { "label": "Run with hot reload", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L250", "community": 1, "norm_label": "run with hot reload", "id": "docs_running_md_run_with_hot_reload" }, { "label": "Frontend Development", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L254", "community": 1, "norm_label": "frontend development", "id": "docs_running_md_frontend_development" }, { "label": "Enter frontend container", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L257", "community": 1, "norm_label": "enter frontend container", "id": "docs_running_md_enter_frontend_container" }, { "label": "Run dev server with hot reload", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L260", "community": 1, "norm_label": "run dev server with hot reload", "id": "docs_running_md_run_dev_server_with_hot_reload" }, { "label": "Database Migrations", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L264", "community": 1, "norm_label": "database migrations", "id": "docs_running_md_database_migrations" }, { "label": "Create migration", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L267", "community": 1, "norm_label": "create migration", "id": "docs_running_md_create_migration" }, { "label": "Upgrade", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L270", "community": 1, "norm_label": "upgrade", "id": "docs_running_md_upgrade" }, { "label": "Downgrade", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L273", "community": 1, "norm_label": "downgrade", "id": "docs_running_md_downgrade" }, { "label": "Show migration history", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L276", "community": 1, "norm_label": "show migration history", "id": "docs_running_md_show_migration_history" }, { "label": "Health Checks", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L280", "community": 1, "norm_label": "health checks", "id": "docs_running_md_health_checks" }, { "label": "Check backend health", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L283", "community": 1, "norm_label": "check backend health", "id": "docs_running_md_check_backend_health" }, { "label": "Check database connectivity", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L286", "community": 1, "norm_label": "check database connectivity", "id": "docs_running_md_check_database_connectivity" }, { "label": "Check all services", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L289", "community": 1, "norm_label": "check all services", "id": "docs_running_md_check_all_services" }, { "label": "Logs", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L293", "community": 1, "norm_label": "logs", "id": "docs_running_md_logs" }, { "label": "View All Logs", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L295", "community": 1, "norm_label": "view all logs", "id": "docs_running_md_view_all_logs" }, { "label": "View Specific Service", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L301", "community": 1, "norm_label": "view specific service", "id": "docs_running_md_view_specific_service" }, { "label": "Configure Log Level", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L309", "community": 1, "norm_label": "configure log level", "id": "docs_running_md_configure_log_level" }, { "label": "Security Notes", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L316", "community": 1, "norm_label": "security notes", "id": "docs_running_md_security_notes" }, { "label": "Updating", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L324", "community": 1, "norm_label": "updating", "id": "docs_running_md_updating" }, { "label": "Pull latest code", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L327", "community": 1, "norm_label": "pull latest code", "id": "docs_running_md_pull_latest_code" }, { "label": "Rebuild images", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L330", "community": 1, "norm_label": "rebuild images", "id": "docs_running_md_rebuild_images" }, { "label": "Restart services", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L336", "community": 1, "norm_label": "restart services", "id": "docs_running_md_restart_services" }, { "label": "Stopping Completely", "file_type": "document", "source_file": "docs/RUNNING.md", "source_location": "L340", "community": 1, "norm_label": "stopping completely", "id": "docs_running_md_stopping_completely" }, { "label": "ORIENTATION.md", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": null, "community": 18, "norm_label": "orientation.md", "id": "docs_orientation_md" }, { "label": "Meal Planner \u2014 Orientation", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L1", "community": 18, "norm_label": "meal planner \u2014 orientation", "id": "docs_orientation_md_meal_planner_orientation" }, { "label": "What this project is", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L7", "community": 18, "norm_label": "what this project is", "id": "docs_orientation_md_what_this_project_is" }, { "label": "Architecture (current)", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L15", "community": 18, "norm_label": "architecture (current)", "id": "docs_orientation_md_architecture_current" }, { "label": "Phase status (2026-05-08)", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L39", "community": 18, "norm_label": "phase status (2026-05-08)", "id": "docs_orientation_md_phase_status_2026_05_08" }, { "label": "Auth model (R1-B+D, locked in)", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L59", "community": 18, "norm_label": "auth model (r1-b+d, locked in)", "id": "docs_orientation_md_auth_model_r1_b_d_locked_in" }, { "label": "Database schema highlights", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L69", "community": 18, "norm_label": "database schema highlights", "id": "docs_orientation_md_database_schema_highlights" }, { "label": "Environment variables (verified)", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L83", "community": 18, "norm_label": "environment variables (verified)", "id": "docs_orientation_md_environment_variables_verified" }, { "label": "Database", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L86", "community": 18, "norm_label": "database", "id": "docs_orientation_md_database" }, { "label": "Auth", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L90", "community": 18, "norm_label": "auth", "id": "docs_orientation_md_auth" }, { "label": "Email", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L95", "community": 18, "norm_label": "email", "id": "docs_orientation_md_email" }, { "label": "Phase 5 orchestration", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L101", "community": 18, "norm_label": "phase 5 orchestration", "id": "docs_orientation_md_phase_5_orchestration" }, { "label": "Lucky / Swiftly", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L105", "community": 18, "norm_label": "lucky / swiftly", "id": "docs_orientation_md_lucky_swiftly" }, { "label": "(no bearer-token env var \u2014 minted on demand by app/services/swiftly_auth.py)", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L109", "community": 18, "norm_label": "(no bearer-token env var \u2014 minted on demand by app/services/swiftly_auth.py)", "id": "docs_orientation_md_no_bearer_token_env_var_minted_on_demand" }, { "label": "Other", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L111", "community": 18, "norm_label": "other", "id": "docs_orientation_md_other" }, { "label": "Verification commands", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L121", "community": 18, "norm_label": "verification commands", "id": "docs_orientation_md_verification_commands" }, { "label": "Full local stack (include scheduler for Phase 5)", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L124", "community": 18, "norm_label": "full local stack (include scheduler for phase 5)", "id": "docs_orientation_md_full_local_stack_include_scheduler_for_p" }, { "label": "Verify scheduler", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L129", "community": 18, "norm_label": "verify scheduler", "id": "docs_orientation_md_verify_scheduler" }, { "label": "Expected: 6 lines \u2014 scrape/generate/email/reminder/deadline/finalize", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L131", "community": 18, "norm_label": "expected: 6 lines \u2014 scrape/generate/email/reminder/deadline/finalize", "id": "docs_orientation_md_expected_6_lines_scrape_generate_email_r" }, { "label": "Manual step trigger (useful for testing without waiting for Friday)", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L133", "community": 18, "norm_label": "manual step trigger (useful for testing without waiting for friday)", "id": "docs_orientation_md_manual_step_trigger_useful_for_testing_w" }, { "label": "Frontend", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L137", "community": 18, "norm_label": "frontend", "id": "docs_orientation_md_frontend" }, { "label": "CI: .github/workflows/ci.yml runs both jobs on push/PR.", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L140", "community": 18, "norm_label": "ci: .github/workflows/ci.yml runs both jobs on push/pr.", "id": "docs_orientation_md_ci_github_workflows_ci_yml_runs_both_job" }, { "label": "Conventions", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L147", "community": 18, "norm_label": "conventions", "id": "docs_orientation_md_conventions" }, { "label": "Where to look", "file_type": "document", "source_file": "docs/ORIENTATION.md", "source_location": "L158", "community": 18, "norm_label": "where to look", "id": "docs_orientation_md_where_to_look" }, { "label": "HANDOFF.md", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": null, "community": 9, "norm_label": "handoff.md", "id": "docs_handoff_md" }, { "label": "MealPlanner \u2014 Agent Handoff", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L1", "community": 9, "norm_label": "mealplanner \u2014 agent handoff", "id": "docs_handoff_md_mealplanner_agent_handoff" }, { "label": "TL;DR", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L14", "community": 9, "norm_label": "tl;dr", "id": "docs_handoff_md_tl_dr" }, { "label": "Infrastructure \u2014 READ THIS FIRST", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L26", "community": 9, "norm_label": "infrastructure \u2014 read this first", "id": "docs_handoff_md_infrastructure_read_this_first" }, { "label": "Access", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L28", "community": 9, "norm_label": "access", "id": "docs_handoff_md_access" }, { "label": "Stack up", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L33", "community": 9, "norm_label": "stack up", "id": "docs_handoff_md_stack_up" }, { "label": "Applying Python code changes", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L39", "community": 9, "norm_label": "applying python code changes", "id": "docs_handoff_md_applying_python_code_changes" }, { "label": "DB connection", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L46", "community": 9, "norm_label": "db connection", "id": "docs_handoff_md_db_connection" }, { "label": "Admin API auth", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L52", "community": 9, "norm_label": "admin api auth", "id": "docs_handoff_md_admin_api_auth" }, { "label": "Key env vars (`.env.test`)", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L58", "community": 9, "norm_label": "key env vars (`.env.test`)", "id": "docs_handoff_md_key_env_vars_env_test" }, { "label": "Family data (live, seeded)", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L69", "community": 9, "norm_label": "family data (live, seeded)", "id": "docs_handoff_md_family_data_live_seeded" }, { "label": "What changed in this session", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L78", "community": 9, "norm_label": "what changed in this session", "id": "docs_handoff_md_what_changed_in_this_session" }, { "label": "MVP login + auth gating (committed in `feature/mvp-login`, merged to master)", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L80", "community": 9, "norm_label": "mvp login + auth gating (committed in `feature/mvp-login`, merged to master)", "id": "docs_handoff_md_mvp_login_auth_gating_committed_in_featu" }, { "label": "nginx (committed in `59a15a2`)", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L86", "community": 9, "norm_label": "nginx (committed in `59a15a2`)", "id": "docs_handoff_md_nginx_committed_in_59a15a2" }, { "label": "Vote email enrichment (`aeed2a4`)", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L91", "community": 9, "norm_label": "vote email enrichment (`aeed2a4`)", "id": "docs_handoff_md_vote_email_enrichment_aeed2a4" }, { "label": "Shopping list email improvements (`aeed2a4`)", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L99", "community": 9, "norm_label": "shopping list email improvements (`aeed2a4`)", "id": "docs_handoff_md_shopping_list_email_improvements_aeed2a4" }, { "label": "Ingredient matcher \u2014 full rewrite (`ac2b575`, `d7a3f5c`, `2373883`)", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L103", "community": 9, "norm_label": "ingredient matcher \u2014 full rewrite (`ac2b575`, `d7a3f5c`, `2373883`)", "id": "docs_handoff_md_ingredient_matcher_full_rewrite_ac2b575_" }, { "label": "Scraper fix \u2014 save priceless produce (`2373883`)", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L145", "community": 9, "norm_label": "scraper fix \u2014 save priceless produce (`2373883`)", "id": "docs_handoff_md_scraper_fix_save_priceless_produce_23738" }, { "label": "What is real (verified)", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L150", "community": 9, "norm_label": "what is real (verified)", "id": "docs_handoff_md_what_is_real_verified" }, { "label": "Lucky CA API (Swiftly) \u2014 full catalog accessible", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L154", "community": 9, "norm_label": "lucky ca api (swiftly) \u2014 full catalog accessible", "id": "docs_handoff_md_lucky_ca_api_swiftly_full_catalog_access" }, { "label": "Matcher runs automatically", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L162", "community": 9, "norm_label": "matcher runs automatically", "id": "docs_handoff_md_matcher_runs_automatically" }, { "label": "What is stubbed or missing", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L167", "community": 9, "norm_label": "what is stubbed or missing", "id": "docs_handoff_md_what_is_stubbed_or_missing" }, { "label": "Recipe images (Phase 10 \u2014 approved, not started)", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L169", "community": 9, "norm_label": "recipe images (phase 10 \u2014 approved, not started)", "id": "docs_handoff_md_recipe_images_phase_10_approved_not_star" }, { "label": "Recipe descriptions", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L174", "community": 9, "norm_label": "recipe descriptions", "id": "docs_handoff_md_recipe_descriptions" }, { "label": "Olive Oil + Corn Tortillas (Lucky catalog gap)", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L178", "community": 9, "norm_label": "olive oil + corn tortillas (lucky catalog gap)", "id": "docs_handoff_md_olive_oil_corn_tortillas_lucky_catalog_g" }, { "label": "Phase 8 \u2014 Feedback UI (done)", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L183", "community": 9, "norm_label": "phase 8 \u2014 feedback ui (done)", "id": "docs_handoff_md_phase_8_feedback_ui_done" }, { "label": "Known caveats and traps", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L189", "community": 9, "norm_label": "known caveats and traps", "id": "docs_handoff_md_known_caveats_and_traps" }, { "label": "Admin API reference", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L212", "community": 9, "norm_label": "admin api reference", "id": "docs_handoff_md_admin_api_reference" }, { "label": "Trigger individual steps", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L215", "community": 9, "norm_label": "trigger individual steps", "id": "docs_handoff_md_trigger_individual_steps" }, { "label": "Valid steps: scrape, generate, email, reminder, deadline, finalize", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L218", "community": 9, "norm_label": "valid steps: scrape, generate, email, reminder, deadline, finalize", "id": "docs_handoff_md_valid_steps_scrape_generate_email_remind" }, { "label": "Full week cycle (background)", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L220", "community": 9, "norm_label": "full week cycle (background)", "id": "docs_handoff_md_full_week_cycle_background" }, { "label": "Scrape status", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L224", "community": 9, "norm_label": "scrape status", "id": "docs_handoff_md_scrape_status" }, { "label": "Weekly run status", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L228", "community": 9, "norm_label": "weekly run status", "id": "docs_handoff_md_weekly_run_status" }, { "label": "Trigger fresh scrape + auto-match", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L232", "community": 9, "norm_label": "trigger fresh scrape + auto-match", "id": "docs_handoff_md_trigger_fresh_scrape_auto_match" }, { "label": "Suggested next moves", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L239", "community": 9, "norm_label": "suggested next moves", "id": "docs_handoff_md_suggested_next_moves" }, { "label": "1. Spoonacular recipe enrichment (images + descriptions)", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L241", "community": 9, "norm_label": "1. spoonacular recipe enrichment (images + descriptions)", "id": "docs_handoff_md_1_spoonacular_recipe_enrichment_images_d" }, { "label": "2. Ollama LLM matcher (Olive Oil, Corn Tortillas, etc.)", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L251", "community": 9, "norm_label": "2. ollama llm matcher (olive oil, corn tortillas, etc.)", "id": "docs_handoff_md_2_ollama_llm_matcher_olive_oil_corn_tort" }, { "label": "3. Natural Friday cycle", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L267", "community": 9, "norm_label": "3. natural friday cycle", "id": "docs_handoff_md_3_natural_friday_cycle" }, { "label": "File map (additions from this session)", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L273", "community": 9, "norm_label": "file map (additions from this session)", "id": "docs_handoff_md_file_map_additions_from_this_session" }, { "label": "Final words", "file_type": "document", "source_file": "docs/HANDOFF.md", "source_location": "L285", "community": 9, "norm_label": "final words", "id": "docs_handoff_md_final_words" }, { "label": "2026-05-05-meal-planner-algorithm-design.md", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": null, "community": 21, "norm_label": "2026-05-05-meal-planner-algorithm-design.md", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md" }, { "label": "Meal Planner Algorithm \u2014 Design Spec", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L1", "community": 21, "norm_label": "meal planner algorithm \u2014 design spec", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_meal_planner_algorithm_design_spec" }, { "label": "1. Goal", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L9", "community": 21, "norm_label": "1. goal", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_1_goal" }, { "label": "2. Algorithm shape", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L17", "community": 21, "norm_label": "2. algorithm shape", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_2_algorithm_shape" }, { "label": "2.1 Hard constraints", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L26", "community": 21, "norm_label": "2.1 hard constraints", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_2_1_hard_constraints" }, { "label": "2.2 Scoring signals", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L41", "community": 21, "norm_label": "2.2 scoring signals", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_2_2_scoring_signals" }, { "label": "2.3 Set-selection diversity", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L64", "community": 21, "norm_label": "2.3 set-selection diversity", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_2_3_set_selection_diversity" }, { "label": "3. Ingredient \u2194 grocery_item matching layer", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L82", "community": 21, "norm_label": "3. ingredient \u2194 grocery_item matching layer", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_3_ingredient_grocery_item_matching_layer" }, { "label": "3.1 Schema", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L86", "community": 21, "norm_label": "3.1 schema", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_3_1_schema" }, { "label": "3.2 Match job", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L112", "community": 21, "norm_label": "3.2 match job", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_3_2_match_job" }, { "label": "3.3 Manual override", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L123", "community": 21, "norm_label": "3.3 manual override", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_3_3_manual_override" }, { "label": "3.4 Recipe-create assist", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L127", "community": 21, "norm_label": "3.4 recipe-create assist", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_3_4_recipe_create_assist" }, { "label": "4. Thin Phase 4 surface", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L133", "community": 21, "norm_label": "4. thin phase 4 surface", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_4_thin_phase_4_surface" }, { "label": "4.1 In scope", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L137", "community": 21, "norm_label": "4.1 in scope", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_4_1_in_scope" }, { "label": "4.2 Recipe model fields (additions to existing `recipe` table)", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L150", "community": 21, "norm_label": "4.2 recipe model fields (additions to existing `recipe` table)", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_4_2_recipe_model_fields_additions_to_exi" }, { "label": "4.3 Out of scope (deferred)", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L174", "community": 21, "norm_label": "4.3 out of scope (deferred)", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_4_3_out_of_scope_deferred" }, { "label": "5. Phase 9 API surface", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L185", "community": 21, "norm_label": "5. phase 9 api surface", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_5_phase_9_api_surface" }, { "label": "6. Recipe source comparison (deferred decision)", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L204", "community": 21, "norm_label": "6. recipe source comparison (deferred decision)", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_6_recipe_source_comparison_deferred_deci" }, { "label": "7. Open questions / deferred", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L224", "community": 21, "norm_label": "7. open questions / deferred", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_7_open_questions_deferred" }, { "label": "8. Implementation order", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L233", "community": 21, "norm_label": "8. implementation order", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_8_implementation_order" }, { "label": "9. Out of scope for this spec", "file_type": "document", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L245", "community": 21, "norm_label": "9. out of scope for this spec", "id": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_9_out_of_scope_for_this_spec" }, { "label": "2026-05-05-thin-phase-4-recipe-engine.md", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": null, "community": 19, "norm_label": "2026-05-05-thin-phase-4-recipe-engine.md", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md" }, { "label": "Thin Phase 4 \u2014 Recipe Engine + Matching Layer Implementation Plan", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L1", "community": 19, "norm_label": "thin phase 4 \u2014 recipe engine + matching layer implementation plan", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_thin_phase_4_recipe_engine_matching_laye" }, { "label": "File Structure", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L21", "community": 19, "norm_label": "file structure", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_file_structure" }, { "label": "Task 1: Add rapidfuzz dependency", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L50", "community": 19, "norm_label": "task 1: add rapidfuzz dependency", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_1_add_rapidfuzz_dependency" }, { "label": "Task 2: Migration 0006 \u2014 schema changes", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L92", "community": 19, "norm_label": "task 2: migration 0006 \u2014 schema changes", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_2_migration_0006_schema_changes" }, { "label": "Task 3: Update SQLAlchemy models", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L228", "community": 19, "norm_label": "task 3: update sqlalchemy models", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_3_update_sqlalchemy_models" }, { "label": "Task 4: Pydantic schemas \u2014 ingredient", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L313", "community": 19, "norm_label": "task 4: pydantic schemas \u2014 ingredient", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_4_pydantic_schemas_ingredient" }, { "label": "Task 5: Pydantic schemas \u2014 recipe", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L450", "community": 19, "norm_label": "task 5: pydantic schemas \u2014 recipe", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_5_pydantic_schemas_recipe" }, { "label": "Task 6: Ingredient CRUD endpoints", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L611", "community": 19, "norm_label": "task 6: ingredient crud endpoints", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_6_ingredient_crud_endpoints" }, { "label": "Task 7: Recipe CRUD endpoints", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L850", "community": 19, "norm_label": "task 7: recipe crud endpoints", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_7_recipe_crud_endpoints" }, { "label": "Task 8: Resolve-ingredient assist endpoint", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L1121", "community": 19, "norm_label": "task 8: resolve-ingredient assist endpoint", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_8_resolve_ingredient_assist_endpoin" }, { "label": "Task 9: Matcher service (rapidfuzz top-3)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L1304", "community": 19, "norm_label": "task 9: matcher service (rapidfuzz top-3)", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_9_matcher_service_rapidfuzz_top_3" }, { "label": "Task 10: Wire matcher into scrape success path", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L1528", "community": 19, "norm_label": "task 10: wire matcher into scrape success path", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_10_wire_matcher_into_scrape_success" }, { "label": "Task 11: Manual match override endpoints", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L1658", "community": 19, "norm_label": "task 11: manual match override endpoints", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_11_manual_match_override_endpoints" }, { "label": "Re-import BaseModel near the top of the file if not already present.", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L1757", "community": 19, "norm_label": "re-import basemodel near the top of the file if not already present.", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_re_import_basemodel_near_the_top_of_the_" }, { "label": "Task 12: NeverSuggest CRUD endpoints", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L1841", "community": 19, "norm_label": "task 12: neversuggest crud endpoints", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_12_neversuggest_crud_endpoints" }, { "label": "Task 13: Migration 0007 \u2014 seed canonical ingredients", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L2078", "community": 19, "norm_label": "task 13: migration 0007 \u2014 seed canonical ingredients", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_13_migration_0007_seed_canonical_in" }, { "label": "Stable UUIDs so re-running upgrade after a downgrade is idempotent on FK refs.", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L2110", "community": 19, "norm_label": "stable uuids so re-running upgrade after a downgrade is idempotent on fk refs.", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_stable_uuids_so_re_running_upgrade_after" }, { "label": "Task 14: Migration 0007 \u2014 populate 30 starter recipes", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L2263", "community": 19, "norm_label": "task 14: migration 0007 \u2014 populate 30 starter recipes", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_14_migration_0007_populate_30_start" }, { "label": "Task 15: End-to-end smoke test + docs refresh", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L2406", "community": 19, "norm_label": "task 15: end-to-end smoke test + docs refresh", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_15_end_to_end_smoke_test_docs_refre" }, { "label": "Verification gate", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L2504", "community": 19, "norm_label": "verification gate", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_verification_gate" }, { "label": "Out of scope (Phase 9 plan, written separately)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L2519", "community": 19, "norm_label": "out of scope (phase 9 plan, written separately)", "id": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_out_of_scope_phase_9_plan_written_separa" }, { "label": "2026-05-05-phase-9-planner-algorithm.md", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": null, "community": 30, "norm_label": "2026-05-05-phase-9-planner-algorithm.md", "id": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md" }, { "label": "Phase 9 \u2014 Meal-Planner Algorithm Implementation Plan", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L1", "community": 30, "norm_label": "phase 9 \u2014 meal-planner algorithm implementation plan", "id": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_phase_9_meal_planner_algorithm_implement" }, { "label": "File Structure", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L22", "community": 30, "norm_label": "file structure", "id": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_file_structure" }, { "label": "Task 1: Planner config + types", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L49", "community": 30, "norm_label": "task 1: planner config + types", "id": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_1_planner_config_types" }, { "label": "Task 2: Cost + savings estimator", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L208", "community": 30, "norm_label": "task 2: cost + savings estimator", "id": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_2_cost_savings_estimator" }, { "label": "Task 3: Hard-constraint filter", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L456", "community": 30, "norm_label": "task 3: hard-constraint filter", "id": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_3_hard_constraint_filter" }, { "label": "Task 4: Individual scoring", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L778", "community": 30, "norm_label": "task 4: individual scoring", "id": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_4_individual_scoring" }, { "label": "Task 5: Top-K set selection with diversity", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L1040", "community": 30, "norm_label": "task 5: top-k set selection with diversity", "id": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_5_top_k_set_selection_with_diversit" }, { "label": "Task 6: Generation orchestrator", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L1212", "community": 30, "norm_label": "task 6: generation orchestrator", "id": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_6_generation_orchestrator" }, { "label": "Task 7: Generate API endpoint", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L1559", "community": 30, "norm_label": "task 7: generate api endpoint", "id": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_7_generate_api_endpoint" }, { "label": "Task 8: Final regression sweep + docs refresh", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L1899", "community": 30, "norm_label": "task 8: final regression sweep + docs refresh", "id": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_8_final_regression_sweep_docs_refre" }, { "label": "Verification gate", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L1948", "community": 30, "norm_label": "verification gate", "id": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_verification_gate" }, { "label": "Open items (deferred, tracked here)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L1961", "community": 30, "norm_label": "open items (deferred, tracked here)", "id": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_open_items_deferred_tracked_here" }, { "label": "Out of scope (other phases)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L1971", "community": 30, "norm_label": "out of scope (other phases)", "id": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_out_of_scope_other_phases" }, { "label": "2026-05-07-phase5-orchestration.md", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": null, "community": 11, "norm_label": "2026-05-07-phase5-orchestration.md", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md" }, { "label": "Phase 5 \u2014 Weekly Orchestration Implementation Plan", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1", "community": 11, "norm_label": "phase 5 \u2014 weekly orchestration implementation plan", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_phase_5_weekly_orchestration_implementat" }, { "label": "File Map", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L13", "community": 11, "norm_label": "file map", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_file_map" }, { "label": "Task 1 \u2014 Alembic migration 0008", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L32", "community": 11, "norm_label": "task 1 \u2014 alembic migration 0008", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_1_alembic_migration_0008" }, { "label": "backend/alembic/versions/0008_phase5_orchestration.py", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L40", "community": 11, "norm_label": "backend/alembic/versions/0008_phase5_orchestration.py", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_backend_alembic_versions_0008_phase5_orc" }, { "label": "Task 2 \u2014 WeeklyRun model + FamilyProfile update", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L134", "community": 11, "norm_label": "task 2 \u2014 weeklyrun model + familyprofile update", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_2_weeklyrun_model_familyprofile_upd" }, { "label": "column (after calorie_target line):", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L177", "community": 11, "norm_label": "column (after calorie_target line):", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_column_after_calorie_target_line" }, { "label": "relationship (after the existing relationships):", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L180", "community": 11, "norm_label": "relationship (after the existing relationships):", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_relationship_after_the_existing_relation" }, { "label": "Task 3 \u2014 Settings: ADMIN_EMAIL + APP_BASE_URL", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L202", "community": 11, "norm_label": "task 3 \u2014 settings: admin_email + app_base_url", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_3_settings_admin_email_app_base_url" }, { "label": "Task 4 \u2014 alerts.py", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L242", "community": 11, "norm_label": "task 4 \u2014 alerts.py", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_4_alerts_py" }, { "label": "---------------------------------------------------------------------------", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L262", "community": 11, "norm_label": "---------------------------------------------------------------------------", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_" }, { "label": "Fixtures", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L263", "community": 11, "norm_label": "fixtures", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_fixtures" }, { "label": "alerts.py tests", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L393", "community": 11, "norm_label": "alerts.py tests", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_alerts_py_tests" }, { "label": "Task 5 \u2014 step_scrape", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L489", "community": 11, "norm_label": "task 5 \u2014 step_scrape", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_5_step_scrape" }, { "label": "step_scrape tests", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L499", "community": 11, "norm_label": "step_scrape tests", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_step_scrape_tests" }, { "label": "Task 6 \u2014 step_generate", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L631", "community": 11, "norm_label": "task 6 \u2014 step_generate", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_6_step_generate" }, { "label": "step_generate tests", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L641", "community": 11, "norm_label": "step_generate tests", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_step_generate_tests" }, { "label": "Task 7 \u2014 step_email", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L742", "community": 11, "norm_label": "task 7 \u2014 step_email", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_7_step_email" }, { "label": "step_email tests", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L752", "community": 11, "norm_label": "step_email tests", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_step_email_tests" }, { "label": "Task 8 \u2014 step_deadline", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L900", "community": 11, "norm_label": "task 8 \u2014 step_deadline", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_8_step_deadline" }, { "label": "step_deadline tests", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L910", "community": 11, "norm_label": "step_deadline tests", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_step_deadline_tests" }, { "label": "Task 9 \u2014 step_finalize", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1013", "community": 11, "norm_label": "task 9 \u2014 step_finalize", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_9_step_finalize" }, { "label": "step_finalize tests", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1023", "community": 11, "norm_label": "step_finalize tests", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_step_finalize_tests" }, { "label": "Task 10 \u2014 runner.py + orchestrator/__init__.py", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1208", "community": 11, "norm_label": "task 10 \u2014 runner.py + orchestrator/__init__.py", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_10_runner_py_orchestrator_init_py" }, { "label": "runner tests", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1219", "community": 11, "norm_label": "runner tests", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_runner_tests" }, { "label": "backend/app/services/orchestrator/__init__.py", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1370", "community": 11, "norm_label": "backend/app/services/orchestrator/__init__.py", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_backend_app_services_orchestrator_init_p" }, { "label": "Task 11 \u2014 Admin orchestrate endpoints", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1403", "community": 11, "norm_label": "task 11 \u2014 admin orchestrate endpoints", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_11_admin_orchestrate_endpoints" }, { "label": "Admin endpoint tests", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1413", "community": 11, "norm_label": "admin endpoint tests", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_admin_endpoint_tests" }, { "label": "Task 12 \u2014 Scheduler entry point", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1574", "community": 11, "norm_label": "task 12 \u2014 scheduler entry point", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_12_scheduler_entry_point" }, { "label": "Task 13 \u2014 Docker Compose: scheduler service", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1680", "community": 11, "norm_label": "task 13 \u2014 docker compose: scheduler service", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_13_docker_compose_scheduler_service" }, { "label": "Final verification", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1749", "community": 11, "norm_label": "final verification", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_final_verification" }, { "label": "Seed a family_profile row first if DB is fresh", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1763", "community": 11, "norm_label": "seed a family_profile row first if db is fresh", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_seed_a_family_profile_row_first_if_db_is" }, { "label": "Environment variables added", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1783", "community": 11, "norm_label": "environment variables added", "id": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_environment_variables_added" }, { "label": "2026-05-07-phase6-sendgrid.md", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": null, "community": 31, "norm_label": "2026-05-07-phase6-sendgrid.md", "id": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md" }, { "label": "Phase 6 \u2014 SendGrid Email Integration Implementation Plan", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L1", "community": 31, "norm_label": "phase 6 \u2014 sendgrid email integration implementation plan", "id": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_phase_6_sendgrid_email_integration_imple" }, { "label": "File map", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L13", "community": 31, "norm_label": "file map", "id": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_file_map" }, { "label": "Task 1: Migration 0009 \u2014 add `reminded_at` to `weekly_run`", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L30", "community": 31, "norm_label": "task 1: migration 0009 \u2014 add `reminded_at` to `weekly_run`", "id": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_task_1_migration_0009_add_reminded_at_to" }, { "label": "Context", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L36", "community": 31, "norm_label": "context", "id": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_context" }, { "label": "Expected: INFO [alembic.runtime.migration] Running upgrade 0008 -> 0009 ...", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L99", "community": 31, "norm_label": "expected: info [alembic.runtime.migration] running upgrade 0008 -> 0009 ...", "id": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_expected_info_alembic_runtime_migration_" }, { "label": "Expected: Running upgrade 0008 -> 0009 again, clean", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L105", "community": 31, "norm_label": "expected: running upgrade 0008 -> 0009 again, clean", "id": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_expected_running_upgrade_0008_0009_again" }, { "label": "Task 2: Wire `SendGridEmailBackend`", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L128", "community": 31, "norm_label": "task 2: wire `sendgridemailbackend`", "id": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_task_2_wire_sendgridemailbackend" }, { "label": "Task 3: `step_reminder` + tests", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L302", "community": 31, "norm_label": "task 3: `step_reminder` + tests", "id": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_task_3_step_reminder_tests" }, { "label": "\u2500\u2500 step_reminder \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L339", "community": 31, "norm_label": "\u2500\u2500 step_reminder \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", "id": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_step_reminder" }, { "label": "Task 4: Wire reminder into runner, admin, and scheduler", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L579", "community": 31, "norm_label": "task 4: wire reminder into runner, admin, and scheduler", "id": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_task_4_wire_reminder_into_runner_admin_a" }, { "label": "Task 5: HTML-escape (#P5-a) and `getattr` cleanup (#P5-b)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L674", "community": 31, "norm_label": "task 5: html-escape (#p5-a) and `getattr` cleanup (#p5-b)", "id": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_task_5_html_escape_p5_a_and_getattr_clea" }, { "label": "Final verification", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L828", "community": 31, "norm_label": "final verification", "id": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_final_verification" }, { "label": "2026-05-09-mvp-login.md", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": null, "community": 23, "norm_label": "2026-05-09-mvp-login.md", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md" }, { "label": "MVP Login + Family Seed Implementation Plan", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L1", "community": 23, "norm_label": "mvp login + family seed implementation plan", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_mvp_login_family_seed_implementation_pla" }, { "label": "File map", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L13", "community": 23, "norm_label": "file map", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_file_map" }, { "label": "Task 1: Login page + 401 interceptor + nav logout", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L24", "community": 23, "norm_label": "task 1: login page + 401 interceptor + nav logout", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_task_1_login_page_401_interceptor_nav_lo" }, { "label": "Step 1: Create `frontend/src/pages/Login.tsx`", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L33", "community": 23, "norm_label": "step 1: create `frontend/src/pages/login.tsx`", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_1_create_frontend_src_pages_login_t" }, { "label": "Step 2: Modify `frontend/src/App.tsx`", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L92", "community": 23, "norm_label": "step 2: modify `frontend/src/app.tsx`", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_2_modify_frontend_src_app_tsx" }, { "label": "Step 3: Add 401 interceptor to `frontend/src/api/index.ts`", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L183", "community": 23, "norm_label": "step 3: add 401 interceptor to `frontend/src/api/index.ts`", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_3_add_401_interceptor_to_frontend_s" }, { "label": "Step 4: Build and verify", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L199", "community": 23, "norm_label": "step 4: build and verify", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_4_build_and_verify" }, { "label": "Expected: no TypeScript errors, build succeeds", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L205", "community": 23, "norm_label": "expected: no typescript errors, build succeeds", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_expected_no_typescript_errors_build_succ" }, { "label": "Step 5: Commit", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L208", "community": 23, "norm_label": "step 5: commit", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_5_commit" }, { "label": "Task 2: Family profile seed script", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L220", "community": 23, "norm_label": "task 2: family profile seed script", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_task_2_family_profile_seed_script" }, { "label": "\u2500\u2500 Edit these before running \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L241", "community": 23, "norm_label": "\u2500\u2500 edit these before running \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_edit_these_before_running" }, { "label": "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L249", "community": 23, "norm_label": "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_" }, { "label": "Step: Commit", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L288", "community": 23, "norm_label": "step: commit", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_commit" }, { "label": "Post-merge steps (run by operator after merge)", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L298", "community": 23, "norm_label": "post-merge steps (run by operator after merge)", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_post_merge_steps_run_by_operator_after_m" }, { "label": "1. Add APP_BASE_URL to `.env.test`", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L300", "community": 23, "norm_label": "1. add app_base_url to `.env.test`", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_1_add_app_base_url_to_env_test" }, { "label": "2. Rebuild frontend container and restart", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L309", "community": 23, "norm_label": "2. rebuild frontend container and restart", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_2_rebuild_frontend_container_and_restart" }, { "label": "3. Run the seed script", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L316", "community": 23, "norm_label": "3. run the seed script", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_3_run_the_seed_script" }, { "label": "Edit scripts/seed_family.py to fill in real names/emails first, then:", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L319", "community": 23, "norm_label": "edit scripts/seed_family.py to fill in real names/emails first, then:", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_edit_scripts_seed_family_py_to_fill_in_r" }, { "label": "4. Verify login works", "file_type": "document", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L324", "community": 23, "norm_label": "4. verify login works", "id": "docs_superpowers_plans_2026_05_09_mvp_login_md_4_verify_login_works" }, { "label": "2026-05-07-phase6-sendgrid-design.md", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": null, "community": 22, "norm_label": "2026-05-07-phase6-sendgrid-design.md", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md" }, { "label": "Phase 6 \u2014 SendGrid Email Integration Design", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L1", "community": 22, "norm_label": "phase 6 \u2014 sendgrid email integration design", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_phase_6_sendgrid_email_integration_desig" }, { "label": "Goal", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L7", "community": 22, "norm_label": "goal", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_goal" }, { "label": "Scope", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L13", "community": 22, "norm_label": "scope", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_scope" }, { "label": "Architecture", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L27", "community": 22, "norm_label": "architecture", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_architecture" }, { "label": "Components", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L35", "community": 22, "norm_label": "components", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_components" }, { "label": "`backend/app/services/email.py` (modify)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L37", "community": 22, "norm_label": "`backend/app/services/email.py` (modify)", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_services_email_py_modify" }, { "label": "`backend/app/config.py` (modify)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L67", "community": 22, "norm_label": "`backend/app/config.py` (modify)", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_config_py_modify" }, { "label": "`backend/app/services/orchestrator/steps.py` (modify)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L74", "community": 22, "norm_label": "`backend/app/services/orchestrator/steps.py` (modify)", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_services_orchestrator_steps_" }, { "label": "`backend/alembic/versions/0009_phase6_reminded_at.py` (create)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L100", "community": 22, "norm_label": "`backend/alembic/versions/0009_phase6_reminded_at.py` (create)", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_alembic_versions_0009_phase6_rem" }, { "label": "`backend/app/models/__init__.py` (modify)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L110", "community": 22, "norm_label": "`backend/app/models/__init__.py` (modify)", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_models_init_py_modify" }, { "label": "`backend/app/services/orchestrator/runner.py` (modify)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L114", "community": 22, "norm_label": "`backend/app/services/orchestrator/runner.py` (modify)", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_services_orchestrator_runner" }, { "label": "`backend/app/api/admin.py` (modify)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L122", "community": 22, "norm_label": "`backend/app/api/admin.py` (modify)", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_api_admin_py_modify" }, { "label": "`backend/app/scheduler/__main__.py` (modify)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L130", "community": 22, "norm_label": "`backend/app/scheduler/__main__.py` (modify)", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_scheduler_main_py_modify" }, { "label": "`requirements.txt` (verify / add)", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L143", "community": 22, "norm_label": "`requirements.txt` (verify / add)", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_requirements_txt_verify_add" }, { "label": "Data flow", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L149", "community": 22, "norm_label": "data flow", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_data_flow" }, { "label": "Error handling", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L162", "community": 22, "norm_label": "error handling", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_error_handling" }, { "label": "Testing", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L168", "community": 22, "norm_label": "testing", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_testing" }, { "label": "Environment variables", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L182", "community": 22, "norm_label": "environment variables", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_environment_variables" }, { "label": "Required for EMAIL_BACKEND=sendgrid", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L185", "community": 22, "norm_label": "required for email_backend=sendgrid", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_required_for_email_backend_sendgrid" }, { "label": "Files touched", "file_type": "document", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L195", "community": 22, "norm_label": "files touched", "id": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_files_touched" }, { "label": "requirements-dev.txt", "file_type": "document", "source_file": "backend/requirements-dev.txt", "source_location": null, "community": 8, "norm_label": "requirements-dev.txt", "id": "backend_requirements_dev_txt" }, { "label": "Dev / test-only dependencies. Production deps live in requirements.txt.", "file_type": "document", "source_file": "backend/requirements-dev.txt", "source_location": "L1", "community": 8, "norm_label": "dev / test-only dependencies. production deps live in requirements.txt.", "id": "backend_requirements_dev_txt_dev_test_only_dependencies_production_de" }, { "label": "requirements.txt", "file_type": "document", "source_file": "backend/requirements.txt", "source_location": null, "community": 8, "norm_label": "requirements.txt", "id": "backend_requirements_txt" }, { "label": "META.md", "file_type": "document", "source_file": "backend/tests/fixtures/lucky_ca/META.md", "source_location": null, "community": 43, "norm_label": "meta.md", "id": "backend_tests_fixtures_lucky_ca_meta_md" }, { "label": "Lucky California weekly-ad spike (R2-A)", "file_type": "document", "source_file": "backend/tests/fixtures/lucky_ca/META.md", "source_location": "L1", "community": 43, "norm_label": "lucky california weekly-ad spike (r2-a)", "id": "backend_tests_fixtures_lucky_ca_meta_md_lucky_california_weekly_ad_spike_r2_a" }, { "label": "Selectors used (verified against this fixture)", "file_type": "document", "source_file": "backend/tests/fixtures/lucky_ca/META.md", "source_location": "L15", "community": 43, "norm_label": "selectors used (verified against this fixture)", "id": "backend_tests_fixtures_lucky_ca_meta_md_selectors_used_verified_against_this_fix" }, { "label": "First parsed item (sample)", "file_type": "document", "source_file": "backend/tests/fixtures/lucky_ca/META.md", "source_location": "L23", "community": 43, "norm_label": "first parsed item (sample)", "id": "backend_tests_fixtures_lucky_ca_meta_md_first_parsed_item_sample" }, { "label": "Notes", "file_type": "document", "source_file": "backend/tests/fixtures/lucky_ca/META.md", "source_location": "L38", "community": 43, "norm_label": "notes", "id": "backend_tests_fixtures_lucky_ca_meta_md_notes" }, { "label": "docs-gpt5.5.md", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": null, "community": 17, "norm_label": "docs-gpt5.5.md", "id": "review_docs_gpt5_5_md" }, { "label": "Adversarial Documentation Review", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L1", "community": 17, "norm_label": "adversarial documentation review", "id": "review_docs_gpt5_5_md_adversarial_documentation_review" }, { "label": "Verdict", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L3", "community": 17, "norm_label": "verdict", "id": "review_docs_gpt5_5_md_verdict" }, { "label": "Blocking Findings", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L7", "community": 17, "norm_label": "blocking findings", "id": "review_docs_gpt5_5_md_blocking_findings" }, { "label": "1. Phase/status docs contradict current implementation state", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L9", "community": 17, "norm_label": "1. phase/status docs contradict current implementation state", "id": "review_docs_gpt5_5_md_1_phase_status_docs_contradict_current_i" }, { "label": "2. Database schema is internally inconsistent and conflicts with current models", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L18", "community": 17, "norm_label": "2. database schema is internally inconsistent and conflicts with current models", "id": "review_docs_gpt5_5_md_2_database_schema_is_internally_inconsis" }, { "label": "3. API endpoint definitions conflict across docs", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L27", "community": 17, "norm_label": "3. api endpoint definitions conflict across docs", "id": "review_docs_gpt5_5_md_3_api_endpoint_definitions_conflict_acro" }, { "label": "4. Security model is missing for externally reachable workflows", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L36", "community": 17, "norm_label": "4. security model is missing for externally reachable workflows", "id": "review_docs_gpt5_5_md_4_security_model_is_missing_for_external" }, { "label": "5. Migration strategy conflicts with runtime table creation", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L46", "community": 17, "norm_label": "5. migration strategy conflicts with runtime table creation", "id": "review_docs_gpt5_5_md_5_migration_strategy_conflicts_with_runt" }, { "label": "6. Current code appears incompatible with documented model layout", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L55", "community": 17, "norm_label": "6. current code appears incompatible with documented model layout", "id": "review_docs_gpt5_5_md_6_current_code_appears_incompatible_with" }, { "label": "High-Risk Gaps", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L64", "community": 17, "norm_label": "high-risk gaps", "id": "review_docs_gpt5_5_md_high_risk_gaps" }, { "label": "7. Scraping feasibility is under-specified", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L66", "community": 17, "norm_label": "7. scraping feasibility is under-specified", "id": "review_docs_gpt5_5_md_7_scraping_feasibility_is_under_specifie" }, { "label": "8. Meal-planning algorithm lacks deterministic requirements", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L75", "community": 17, "norm_label": "8. meal-planning algorithm lacks deterministic requirements", "id": "review_docs_gpt5_5_md_8_meal_planning_algorithm_lacks_determin" }, { "label": "9. Shopping-list math is not implementable from current docs", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L84", "community": 17, "norm_label": "9. shopping-list math is not implementable from current docs", "id": "review_docs_gpt5_5_md_9_shopping_list_math_is_not_implementabl" }, { "label": "10. Deployment docs promise production features that compose file does not provide", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L93", "community": 17, "norm_label": "10. deployment docs promise production features that compose file does not provide", "id": "review_docs_gpt5_5_md_10_deployment_docs_promise_production_fe" }, { "label": "11. Environment-variable docs are inconsistent and include unsafe examples", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L102", "community": 17, "norm_label": "11. environment-variable docs are inconsistent and include unsafe examples", "id": "review_docs_gpt5_5_md_11_environment_variable_docs_are_inconsi" }, { "label": "Medium-Risk Issues", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L111", "community": 17, "norm_label": "medium-risk issues", "id": "review_docs_gpt5_5_md_medium_risk_issues" }, { "label": "12. Documentation contains stale and misspelled file paths", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L113", "community": 17, "norm_label": "12. documentation contains stale and misspelled file paths", "id": "review_docs_gpt5_5_md_12_documentation_contains_stale_and_miss" }, { "label": "13. Tech-stack docs are already version stale", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L117", "community": 17, "norm_label": "13. tech-stack docs are already version stale", "id": "review_docs_gpt5_5_md_13_tech_stack_docs_are_already_version_s" }, { "label": "14. Operational docs assume endpoints that are not proven to exist", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L121", "community": 17, "norm_label": "14. operational docs assume endpoints that are not proven to exist", "id": "review_docs_gpt5_5_md_14_operational_docs_assume_endpoints_tha" }, { "label": "15. Data retention lacks implementation mechanics", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L125", "community": 17, "norm_label": "15. data retention lacks implementation mechanics", "id": "review_docs_gpt5_5_md_15_data_retention_lacks_implementation_m" }, { "label": "16. Accessibility is barely addressed despite family-facing UI", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L129", "community": 17, "norm_label": "16. accessibility is barely addressed despite family-facing ui", "id": "review_docs_gpt5_5_md_16_accessibility_is_barely_addressed_des" }, { "label": "17. Observability requirements are aspirational", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L133", "community": 17, "norm_label": "17. observability requirements are aspirational", "id": "review_docs_gpt5_5_md_17_observability_requirements_are_aspira" }, { "label": "Suggested Gate Before Implementation", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L137", "community": 17, "norm_label": "suggested gate before implementation", "id": "review_docs_gpt5_5_md_suggested_gate_before_implementation" }, { "label": "Implementation Readiness Rating", "file_type": "document", "source_file": "Review/docs-gpt5.5.md", "source_location": "L149", "community": 17, "norm_label": "implementation readiness rating", "id": "review_docs_gpt5_5_md_implementation_readiness_rating" }, { "label": "repo-gpt5.5.md", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": null, "community": 14, "norm_label": "repo-gpt5.5.md", "id": "review_repo_gpt5_5_md" }, { "label": "Repository Analysis", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L1", "community": 14, "norm_label": "repository analysis", "id": "review_repo_gpt5_5_md_repository_analysis" }, { "label": "Executive Summary", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L3", "community": 14, "norm_label": "executive summary", "id": "review_repo_gpt5_5_md_executive_summary" }, { "label": "Current Repo Shape", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L11", "community": 14, "norm_label": "current repo shape", "id": "review_repo_gpt5_5_md_current_repo_shape" }, { "label": "Blocking Findings", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L32", "community": 14, "norm_label": "blocking findings", "id": "review_repo_gpt5_5_md_blocking_findings" }, { "label": "1. Backend likely fails during import because model module layout is inconsistent", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L34", "community": 14, "norm_label": "1. backend likely fails during import because model module layout is inconsistent", "id": "review_repo_gpt5_5_md_1_backend_likely_fails_during_import_bec" }, { "label": "2. SQLAlchemy relationships contain at least one broken back-populates reference", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L44", "community": 14, "norm_label": "2. sqlalchemy relationships contain at least one broken back-populates reference", "id": "review_repo_gpt5_5_md_2_sqlalchemy_relationships_contain_at_le" }, { "label": "3. Frontend build is blocked by a missing imported page", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L54", "community": 14, "norm_label": "3. frontend build is blocked by a missing imported page", "id": "review_repo_gpt5_5_md_3_frontend_build_is_blocked_by_a_missing" }, { "label": "4. Frontend Docker build is blocked by missing npm lockfile", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L63", "community": 14, "norm_label": "4. frontend docker build is blocked by missing npm lockfile", "id": "review_repo_gpt5_5_md_4_frontend_docker_build_is_blocked_by_mi" }, { "label": "5. Vite app is missing required HTML entrypoint", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L72", "community": 14, "norm_label": "5. vite app is missing required html entrypoint", "id": "review_repo_gpt5_5_md_5_vite_app_is_missing_required_html_entr" }, { "label": "6. Alembic is documented and installed but not configured", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L81", "community": 14, "norm_label": "6. alembic is documented and installed but not configured", "id": "review_repo_gpt5_5_md_6_alembic_is_documented_and_installed_bu" }, { "label": "Important Findings", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L92", "community": 14, "norm_label": "important findings", "id": "review_repo_gpt5_5_md_important_findings" }, { "label": "7. API routes are placeholders with no schemas or persistence", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L94", "community": 14, "norm_label": "7. api routes are placeholders with no schemas or persistence", "id": "review_repo_gpt5_5_md_7_api_routes_are_placeholders_with_no_sc" }, { "label": "8. Admin endpoints are unauthenticated", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L104", "community": 14, "norm_label": "8. admin endpoints are unauthenticated", "id": "review_repo_gpt5_5_md_8_admin_endpoints_are_unauthenticated" }, { "label": "9. Email approval security is not implemented and not modeled yet", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L114", "community": 14, "norm_label": "9. email approval security is not implemented and not modeled yet", "id": "review_repo_gpt5_5_md_9_email_approval_security_is_not_impleme" }, { "label": "10. `SECRET_KEY` has an unsafe default", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L125", "community": 14, "norm_label": "10. `secret_key` has an unsafe default", "id": "review_repo_gpt5_5_md_10_secret_key_has_an_unsafe_default" }, { "label": "11. SQLAlchemy 2 health query may fail", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L135", "community": 14, "norm_label": "11. sqlalchemy 2 health query may fail", "id": "review_repo_gpt5_5_md_11_sqlalchemy_2_health_query_may_fail" }, { "label": "12. Docker Compose exposes backend and frontend directly plus nginx", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L144", "community": 14, "norm_label": "12. docker compose exposes backend and frontend directly plus nginx", "id": "review_repo_gpt5_5_md_12_docker_compose_exposes_backend_and_fr" }, { "label": "13. Nginx SSL and rate limiting are not implemented", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L154", "community": 14, "norm_label": "13. nginx ssl and rate limiting are not implemented", "id": "review_repo_gpt5_5_md_13_nginx_ssl_and_rate_limiting_are_not_i" }, { "label": "Maintainability Findings", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L164", "community": 14, "norm_label": "maintainability findings", "id": "review_repo_gpt5_5_md_maintainability_findings" }, { "label": "14. Model file is too large for early iteration and hides domain decisions", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L166", "community": 14, "norm_label": "14. model file is too large for early iteration and hides domain decisions", "id": "review_repo_gpt5_5_md_14_model_file_is_too_large_for_early_ite" }, { "label": "15. Schema constraints are only partially represented", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L174", "community": 14, "norm_label": "15. schema constraints are only partially represented", "id": "review_repo_gpt5_5_md_15_schema_constraints_are_only_partially" }, { "label": "16. API prefix behavior may produce trailing-slash-only endpoints", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L182", "community": 14, "norm_label": "16. api prefix behavior may produce trailing-slash-only endpoints", "id": "review_repo_gpt5_5_md_16_api_prefix_behavior_may_produce_trail" }, { "label": "17. No repository-level quality gates exist", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L189", "community": 14, "norm_label": "17. no repository-level quality gates exist", "id": "review_repo_gpt5_5_md_17_no_repository_level_quality_gates_exi" }, { "label": "Documentation Alignment", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L197", "community": 14, "norm_label": "documentation alignment", "id": "review_repo_gpt5_5_md_documentation_alignment" }, { "label": "Recommended Remediation Order", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L207", "community": 14, "norm_label": "recommended remediation order", "id": "review_repo_gpt5_5_md_recommended_remediation_order" }, { "label": "Phase 0: Make skeleton start and build", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L209", "community": 14, "norm_label": "phase 0: make skeleton start and build", "id": "review_repo_gpt5_5_md_phase_0_make_skeleton_start_and_build" }, { "label": "Phase 1: Establish schema/migration baseline", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L219", "community": 14, "norm_label": "phase 1: establish schema/migration baseline", "id": "review_repo_gpt5_5_md_phase_1_establish_schema_migration_basel" }, { "label": "Phase 2: Establish API and security baseline", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L227", "community": 14, "norm_label": "phase 2: establish api and security baseline", "id": "review_repo_gpt5_5_md_phase_2_establish_api_and_security_basel" }, { "label": "Phase 3: Implement first vertical slice", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L235", "community": 14, "norm_label": "phase 3: implement first vertical slice", "id": "review_repo_gpt5_5_md_phase_3_implement_first_vertical_slice" }, { "label": "Verification Matrix To Add", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L242", "community": 14, "norm_label": "verification matrix to add", "id": "review_repo_gpt5_5_md_verification_matrix_to_add" }, { "label": "Final Assessment", "file_type": "document", "source_file": "Review/repo-gpt5.5.md", "source_location": "L259", "community": 14, "norm_label": "final assessment", "id": "review_repo_gpt5_5_md_final_assessment" }, { "label": "docs-claude.md", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": null, "community": 16, "norm_label": "docs-claude.md", "id": "review_docs_claude_md" }, { "label": "Adversarial Documentation Review \u2014 Claude", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L1", "community": 16, "norm_label": "adversarial documentation review \u2014 claude", "id": "review_docs_claude_md_adversarial_documentation_review_claude" }, { "label": "Verdict", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L9", "community": 16, "norm_label": "verdict", "id": "review_docs_claude_md_verdict" }, { "label": "Blocking", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L17", "community": 16, "norm_label": "blocking", "id": "review_docs_claude_md_blocking" }, { "label": "B1. Family profile is internally inconsistent \u2014 the math doesn't close", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L19", "community": 16, "norm_label": "b1. family profile is internally inconsistent \u2014 the math doesn't close", "id": "review_docs_claude_md_b1_family_profile_is_internally_inconsis" }, { "label": "B2. There is no `family_member` (or `user`) table \u2014 but the spec is per-person", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L30", "community": 16, "norm_label": "b2. there is no `family_member` (or `user`) table \u2014 but the spec is per-person", "id": "review_docs_claude_md_b2_there_is_no_family_member_or_user_tab" }, { "label": "B3. Recipe\u2194ingredient relationship is documented two contradictory ways", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L42", "community": 16, "norm_label": "b3. recipe\u2194ingredient relationship is documented two contradictory ways", "id": "review_docs_claude_md_b3_recipe_ingredient_relationship_is_doc" }, { "label": "B4. There is no authentication anywhere in the system", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L51", "community": 16, "norm_label": "b4. there is no authentication anywhere in the system", "id": "review_docs_claude_md_b4_there_is_no_authentication_anywhere_i" }, { "label": "B5. Approval-by-email is fragile and probably exploitable", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L63", "community": 16, "norm_label": "b5. approval-by-email is fragile and probably exploitable", "id": "review_docs_claude_md_b5_approval_by_email_is_fragile_and_prob" }, { "label": "B6. \"Self-hosted, no external cloud services *except SendGrid*\" is undermined", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L77", "community": 16, "norm_label": "b6. \"self-hosted, no external cloud services *except sendgrid*\" is undermined", "id": "review_docs_claude_md_b6_self_hosted_no_external_cloud_service" }, { "label": "Major", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L90", "community": 16, "norm_label": "major", "id": "review_docs_claude_md_major" }, { "label": "M1. Scraping legality / ToS unaddressed", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L92", "community": 16, "norm_label": "m1. scraping legality / tos unaddressed", "id": "review_docs_claude_md_m1_scraping_legality_tos_unaddressed" }, { "label": "M2. Phase ordering buries the hard problems behind weeks of plumbing", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L103", "community": 16, "norm_label": "m2. phase ordering buries the hard problems behind weeks of plumbing", "id": "review_docs_claude_md_m2_phase_ordering_buries_the_hard_proble" }, { "label": "M3. APScheduler + multiple workers will misfire", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L109", "community": 16, "norm_label": "m3. apscheduler + multiple workers will misfire", "id": "review_docs_claude_md_m3_apscheduler_multiple_workers_will_mis" }, { "label": "M4. Schema has avoidable defects", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L115", "community": 16, "norm_label": "m4. schema has avoidable defects", "id": "review_docs_claude_md_m4_schema_has_avoidable_defects" }, { "label": "M5. Migration story is muddled", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L126", "community": 16, "norm_label": "m5. migration story is muddled", "id": "review_docs_claude_md_m5_migration_story_is_muddled" }, { "label": "M6. \"If both approve OR no response \u2192 meal confirmed\" is silence-as-consent", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L132", "community": 16, "norm_label": "m6. \"if both approve or no response \u2192 meal confirmed\" is silence-as-consent", "id": "review_docs_claude_md_m6_if_both_approve_or_no_response_meal_c" }, { "label": "M7. \"Calorie target\" appears in the schema but is a non-goal", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L136", "community": 16, "norm_label": "m7. \"calorie target\" appears in the schema but is a non-goal", "id": "review_docs_claude_md_m7_calorie_target_appears_in_the_schema_" }, { "label": "M8. Image strategy contradicts itself", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L140", "community": 16, "norm_label": "m8. image strategy contradicts itself", "id": "review_docs_claude_md_m8_image_strategy_contradicts_itself" }, { "label": "Minor", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L148", "community": 16, "norm_label": "minor", "id": "review_docs_claude_md_minor" }, { "label": "m1. Doc hygiene", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L150", "community": 16, "norm_label": "m1. doc hygiene", "id": "review_docs_claude_md_m1_doc_hygiene" }, { "label": "m2. Operational gaps not in any doc", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L157", "community": 16, "norm_label": "m2. operational gaps not in any doc", "id": "review_docs_claude_md_m2_operational_gaps_not_in_any_doc" }, { "label": "m3. Docker-compose exposure", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L165", "community": 16, "norm_label": "m3. docker-compose exposure", "id": "review_docs_claude_md_m3_docker_compose_exposure" }, { "label": "m4. Success metrics aren't measurable", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L169", "community": 16, "norm_label": "m4. success metrics aren't measurable", "id": "review_docs_claude_md_m4_success_metrics_aren_t_measurable" }, { "label": "m5. Future features are mixed into the implementation plan", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L179", "community": 16, "norm_label": "m5. future features are mixed into the implementation plan", "id": "review_docs_claude_md_m5_future_features_are_mixed_into_the_im" }, { "label": "m6. `SECRET_KEY` ghost variable", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L183", "community": 16, "norm_label": "m6. `secret_key` ghost variable", "id": "review_docs_claude_md_m6_secret_key_ghost_variable" }, { "label": "Cross-doc contradictions, summarized", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L189", "community": 16, "norm_label": "cross-doc contradictions, summarized", "id": "review_docs_claude_md_cross_doc_contradictions_summarized" }, { "label": "Suggested order of operations before any more code", "file_type": "document", "source_file": "Review/docs-claude.md", "source_location": "L205", "community": 16, "norm_label": "suggested order of operations before any more code", "id": "review_docs_claude_md_suggested_order_of_operations_before_any" }, { "label": "synthesis.md", "file_type": "document", "source_file": "Review/synthesis.md", "source_location": null, "community": 33, "norm_label": "synthesis.md", "id": "review_synthesis_md" }, { "label": "Review Synthesis \u2014 Three Reviewers Compared", "file_type": "document", "source_file": "Review/synthesis.md", "source_location": "L1", "community": 33, "norm_label": "review synthesis \u2014 three reviewers compared", "id": "review_synthesis_md_review_synthesis_three_reviewers_compare" }, { "label": "1. Strong Consensus (all reviewers, blocking)", "file_type": "document", "source_file": "Review/synthesis.md", "source_location": "L7", "community": 33, "norm_label": "1. strong consensus (all reviewers, blocking)", "id": "review_synthesis_md_1_strong_consensus_all_reviewers_blockin" }, { "label": "2. Partial Agreement (2 of 3)", "file_type": "document", "source_file": "Review/synthesis.md", "source_location": "L24", "community": 33, "norm_label": "2. partial agreement (2 of 3)", "id": "review_synthesis_md_2_partial_agreement_2_of_3" }, { "label": "3. Unique Findings (only one reviewer)", "file_type": "document", "source_file": "Review/synthesis.md", "source_location": "L40", "community": 33, "norm_label": "3. unique findings (only one reviewer)", "id": "review_synthesis_md_3_unique_findings_only_one_reviewer" }, { "label": "Claude only", "file_type": "document", "source_file": "Review/synthesis.md", "source_location": "L42", "community": 33, "norm_label": "claude only", "id": "review_synthesis_md_claude_only" }, { "label": "GPT-5.5 docs only", "file_type": "document", "source_file": "Review/synthesis.md", "source_location": "L56", "community": 33, "norm_label": "gpt-5.5 docs only", "id": "review_synthesis_md_gpt_5_5_docs_only" }, { "label": "GPT-5.5 repo only (Claude could not have caught these \u2014 doc-only review)", "file_type": "document", "source_file": "Review/synthesis.md", "source_location": "L61", "community": 33, "norm_label": "gpt-5.5 repo only (claude could not have caught these \u2014 doc-only review)", "id": "review_synthesis_md_gpt_5_5_repo_only_claude_could_not_have_" }, { "label": "4. Where Reviewers Conflict", "file_type": "document", "source_file": "Review/synthesis.md", "source_location": "L73", "community": 33, "norm_label": "4. where reviewers conflict", "id": "review_synthesis_md_4_where_reviewers_conflict" }, { "label": "5. Combined Blocker List (deduplicated, ranked)", "file_type": "document", "source_file": "Review/synthesis.md", "source_location": "L82", "community": 33, "norm_label": "5. combined blocker list (deduplicated, ranked)", "id": "review_synthesis_md_5_combined_blocker_list_deduplicated_ran" }, { "label": "6. Additional Investigation Needed", "file_type": "document", "source_file": "Review/synthesis.md", "source_location": "L98", "community": 33, "norm_label": "6. additional investigation needed", "id": "review_synthesis_md_6_additional_investigation_needed" }, { "label": "7. Net Assessment", "file_type": "document", "source_file": "Review/synthesis.md", "source_location": "L114", "community": 33, "norm_label": "7. net assessment", "id": "review_synthesis_md_7_net_assessment" }, { "label": "reviewconcensus.md", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": null, "community": 15, "norm_label": "reviewconcensus.md", "id": "review_reviewconcensus_md" }, { "label": "Review Consensus \u2014 Feedback for Originating Agent", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L1", "community": 15, "norm_label": "review consensus \u2014 feedback for originating agent", "id": "review_reviewconcensus_md_review_consensus_feedback_for_originatin" }, { "label": "Headline", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L12", "community": 15, "norm_label": "headline", "id": "review_reviewconcensus_md_headline" }, { "label": "1. Consensus Blockers \u2014 must resolve before any further code", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L20", "community": 15, "norm_label": "1. consensus blockers \u2014 must resolve before any further code", "id": "review_reviewconcensus_md_1_consensus_blockers_must_resolve_before" }, { "label": "1.1 Recipe \u2194 Ingredient relationship is modeled two contradictory ways", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L24", "community": 15, "norm_label": "1.1 recipe \u2194 ingredient relationship is modeled two contradictory ways", "id": "review_reviewconcensus_md_1_1_recipe_ingredient_relationship_is_mo" }, { "label": "1.2 No authentication exists anywhere in the system", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L30", "community": 15, "norm_label": "1.2 no authentication exists anywhere in the system", "id": "review_reviewconcensus_md_1_2_no_authentication_exists_anywhere_in" }, { "label": "1.3 Email approval flow is unsafe and probably exploitable", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L36", "community": 15, "norm_label": "1.3 email approval flow is unsafe and probably exploitable", "id": "review_reviewconcensus_md_1_3_email_approval_flow_is_unsafe_and_pr" }, { "label": "1.4 No `family_member` table despite per-person spec", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L42", "community": 15, "norm_label": "1.4 no `family_member` table despite per-person spec", "id": "review_reviewconcensus_md_1_4_no_family_member_table_despite_per_p" }, { "label": "1.5 Phase status is contradictory and the skeleton does not work", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L48", "community": 15, "norm_label": "1.5 phase status is contradictory and the skeleton does not work", "id": "review_reviewconcensus_md_1_5_phase_status_is_contradictory_and_th" }, { "label": "1.6 Schema has avoidable correctness defects", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L59", "community": 15, "norm_label": "1.6 schema has avoidable correctness defects", "id": "review_reviewconcensus_md_1_6_schema_has_avoidable_correctness_def" }, { "label": "1.7 Docker compose exposes backend (8000) and frontend (3000) directly", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L69", "community": 15, "norm_label": "1.7 docker compose exposes backend (8000) and frontend (3000) directly", "id": "review_reviewconcensus_md_1_7_docker_compose_exposes_backend_8000_" }, { "label": "1.8 Production deployment claims exceed implementation", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L73", "community": 15, "norm_label": "1.8 production deployment claims exceed implementation", "id": "review_reviewconcensus_md_1_8_production_deployment_claims_exceed_" }, { "label": "2. High-Risk Gaps \u2014 agreed by 2 of 3 reviewers", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L80", "community": 15, "norm_label": "2. high-risk gaps \u2014 agreed by 2 of 3 reviewers", "id": "review_reviewconcensus_md_2_high_risk_gaps_agreed_by_2_of_3_review" }, { "label": "2.1 Migration tooling is muddled", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L82", "community": 15, "norm_label": "2.1 migration tooling is muddled", "id": "review_reviewconcensus_md_2_1_migration_tooling_is_muddled" }, { "label": "2.2 API endpoint contract conflicts across docs", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L85", "community": 15, "norm_label": "2.2 api endpoint contract conflicts across docs", "id": "review_reviewconcensus_md_2_2_api_endpoint_contract_conflicts_acro" }, { "label": "2.3 Scraping is under-specified and risky", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L88", "community": 15, "norm_label": "2.3 scraping is under-specified and risky", "id": "review_reviewconcensus_md_2_3_scraping_is_under_specified_and_risk" }, { "label": "2.4 Phase ordering hides risk behind plumbing", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L94", "community": 15, "norm_label": "2.4 phase ordering hides risk behind plumbing", "id": "review_reviewconcensus_md_2_4_phase_ordering_hides_risk_behind_plu" }, { "label": "2.5 Shopping-list math is not implementable from current docs", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L97", "community": 15, "norm_label": "2.5 shopping-list math is not implementable from current docs", "id": "review_reviewconcensus_md_2_5_shopping_list_math_is_not_implementa" }, { "label": "2.6 Environment variables inconsistent across `.env.example`, ORIENTATION, RUNNING, plan", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L100", "community": 15, "norm_label": "2.6 environment variables inconsistent across `.env.example`, orientation, running, plan", "id": "review_reviewconcensus_md_2_6_environment_variables_inconsistent_a" }, { "label": "2.7 Accessibility absent despite family-facing UI + email", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L103", "community": 15, "norm_label": "2.7 accessibility absent despite family-facing ui + email", "id": "review_reviewconcensus_md_2_7_accessibility_absent_despite_family_" }, { "label": "2.8 Health check will fail under SQLAlchemy 2", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L106", "community": 15, "norm_label": "2.8 health check will fail under sqlalchemy 2", "id": "review_reviewconcensus_md_2_8_health_check_will_fail_under_sqlalch" }, { "label": "3. Single-Reviewer Findings worth keeping", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L111", "community": 15, "norm_label": "3. single-reviewer findings worth keeping", "id": "review_reviewconcensus_md_3_single_reviewer_findings_worth_keeping" }, { "label": "From Claude", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L113", "community": 15, "norm_label": "from claude", "id": "review_reviewconcensus_md_from_claude" }, { "label": "From GPT-5.5 (docs)", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L123", "community": 15, "norm_label": "from gpt-5.5 (docs)", "id": "review_reviewconcensus_md_from_gpt_5_5_docs" }, { "label": "From GPT-5.5 (repo)", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L128", "community": 15, "norm_label": "from gpt-5.5 (repo)", "id": "review_reviewconcensus_md_from_gpt_5_5_repo" }, { "label": "4. Where Reviewers Disagreed", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L135", "community": 15, "norm_label": "4. where reviewers disagreed", "id": "review_reviewconcensus_md_4_where_reviewers_disagreed" }, { "label": "5. Combined Remediation Order", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L144", "community": 15, "norm_label": "5. combined remediation order", "id": "review_reviewconcensus_md_5_combined_remediation_order" }, { "label": "6. Verification Matrix (currently failing \u2014 make this pass to claim Phase 1 complete)", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L160", "community": 15, "norm_label": "6. verification matrix (currently failing \u2014 make this pass to claim phase 1 complete)", "id": "review_reviewconcensus_md_6_verification_matrix_currently_failing_" }, { "label": "7. Additional Investigation Still Needed", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L177", "community": 15, "norm_label": "7. additional investigation still needed", "id": "review_reviewconcensus_md_7_additional_investigation_still_needed" }, { "label": "8. Suggested Response Format from Originating Agent", "file_type": "document", "source_file": "Review/reviewconcensus.md", "source_location": "L195", "community": 15, "norm_label": "8. suggested response format from originating agent", "id": "review_reviewconcensus_md_8_suggested_response_format_from_origina" }, { "label": "weekly_ad.png", "file_type": "image", "source_file": "backend/tests/fixtures/lucky_ca/weekly_ad.png", "source_location": null, "community": 8, "norm_label": "weekly_ad.png", "id": "backend_tests_fixtures_lucky_ca_weekly_ad_png" } ], "links": [ { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/database.py", "source_location": "L11", "weight": 1.0, "_src": "backend_app_database_py", "_tgt": "database_get_db", "confidence_score": 1.0, "source": "backend_app_database_py", "target": "database_get_db" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/security.py", "source_location": "L72", "weight": 1.0, "_src": "security_require_session", "_tgt": "database_get_db", "source": "database_get_db", "target": "security_require_session" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/security.py", "source_location": "L29", "weight": 1.0, "_src": "backend_app_security_py", "_tgt": "security_require_admin", "confidence_score": 1.0, "source": "backend_app_security_py", "target": "security_require_admin" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/security.py", "source_location": "L45", "weight": 1.0, "_src": "backend_app_security_py", "_tgt": "security_signer", "confidence_score": 1.0, "source": "backend_app_security_py", "target": "security_signer" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/security.py", "source_location": "L49", "weight": 1.0, "_src": "backend_app_security_py", "_tgt": "security_issue_session", "confidence_score": 1.0, "source": "backend_app_security_py", "target": "security_issue_session" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/security.py", "source_location": "L54", "weight": 1.0, "_src": "backend_app_security_py", "_tgt": "security_require_session", "confidence_score": 1.0, "source": "backend_app_security_py", "target": "security_require_session" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/security.py", "source_location": "L1", "weight": 1.0, "_src": "security_rationale_1", "_tgt": "backend_app_security_py", "confidence_score": 1.0, "source": "backend_app_security_py", "target": "security_rationale_1" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/security.py", "source_location": "L30", "weight": 1.0, "_src": "security_rationale_30", "_tgt": "security_require_admin", "confidence_score": 1.0, "source": "security_require_admin", "target": "security_rationale_30" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/security.py", "source_location": "L51", "weight": 1.0, "_src": "security_issue_session", "_tgt": "security_signer", "confidence_score": 1.0, "source": "security_signer", "target": "security_issue_session" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/security.py", "source_location": "L66", "weight": 1.0, "_src": "security_require_session", "_tgt": "security_signer", "confidence_score": 1.0, "source": "security_signer", "target": "security_require_session" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/security.py", "source_location": "L50", "weight": 1.0, "_src": "security_rationale_50", "_tgt": "security_issue_session", "confidence_score": 1.0, "source": "security_issue_session", "target": "security_rationale_50" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/auth.py", "source_location": "L48", "weight": 1.0, "_src": "auth_login", "_tgt": "security_issue_session", "source": "security_issue_session", "target": "auth_login" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/security.py", "source_location": "L55", "weight": 1.0, "_src": "security_rationale_55", "_tgt": "security_require_session", "confidence_score": 1.0, "source": "security_require_session", "target": "security_rationale_55" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/security.py", "source_location": "L75", "weight": 1.0, "_src": "security_require_session", "_tgt": "str", "source": "security_require_session", "target": "str" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L19", "weight": 1.0, "_src": "backend_app_main_py", "_tgt": "main_health_check", "confidence_score": 1.0, "source": "backend_app_main_py", "target": "main_health_check" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/main.py", "source_location": "L24", "weight": 1.0, "_src": "backend_app_main_py", "_tgt": "main_health_check_db", "confidence_score": 1.0, "source": "backend_app_main_py", "target": "main_health_check_db" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/main.py", "source_location": "L29", "weight": 1.0, "_src": "main_health_check_db", "_tgt": "str", "source": "main_health_check_db", "target": "str" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/config.py", "source_location": "L6", "weight": 1.0, "_src": "backend_app_config_py", "_tgt": "config_settings", "confidence_score": 1.0, "source": "backend_app_config_py", "target": "config_settings" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/config.py", "source_location": "L41", "weight": 1.0, "_src": "backend_app_config_py", "_tgt": "config_config", "confidence_score": 1.0, "source": "backend_app_config_py", "target": "config_config" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/config.py", "source_location": "L45", "weight": 1.0, "_src": "backend_app_config_py", "_tgt": "config_require_database_url", "confidence_score": 1.0, "source": "backend_app_config_py", "target": "config_require_database_url" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/config.py", "source_location": "L6", "weight": 1.0, "_src": "config_settings", "_tgt": "basesettings", "confidence_score": 1.0, "source": "config_settings", "target": "basesettings" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_auth.py", "source_location": "L33", "weight": 1.0, "_src": "test_auth_reload_settings", "_tgt": "config_settings", "source": "config_settings", "target": "test_auth_reload_settings" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_config.py", "source_location": "L19", "weight": 1.0, "_src": "test_config_test_database_url_required", "_tgt": "config_settings", "source": "config_settings", "target": "test_config_test_database_url_required" }, { "relation": "imports", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L10", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "enum", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "enum" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L13", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_dayofweek", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_dayofweek" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L23", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_mealtype", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_mealtype" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L29", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_mealplanstatus", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_mealplanstatus" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L36", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_mealplanitemstatus", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_mealplanitemstatus" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L43", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_approvaltokenstatus", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_approvaltokenstatus" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L49", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_familymemberrole", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_familymemberrole" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L54", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_denialreason", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_denialreason" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L62", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_neversuggestreason", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_neversuggestreason" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L69", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_scrapestatus", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_scrapestatus" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L75", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_emailstatus", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_emailstatus" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L82", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_ingredientmatchsource", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_ingredientmatchsource" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L88", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_familyprofile", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_familyprofile" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L120", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_familymember", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_familymember" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L141", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_ingredient", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_ingredient" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L161", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_recipe", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_recipe" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L191", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_total_time_minutes", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_total_time_minutes" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L195", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_mealplan", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_mealplan" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L216", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_mealplanitem", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_mealplanitem" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L243", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_mealplanvote", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_mealplanvote" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L260", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_approvaltoken", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_approvaltoken" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L280", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_homepantry", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_homepantry" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L300", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_feedback", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_feedback" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L322", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_neversuggest", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_neversuggest" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L337", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_groceryitem", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_groceryitem" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L364", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_scrapelog", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_scrapelog" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L378", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_emaillog", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_emaillog" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L397", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_ingredientgrocerymatch", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_ingredientgrocerymatch" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L415", "weight": 1.0, "_src": "backend_app_models_init_py", "_tgt": "init_weeklyrun", "confidence_score": 1.0, "source": "backend_app_models_init_py", "target": "init_weeklyrun" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L13", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_mealtype", "confidence_score": 1.0, "source": "init_mealtype", "target": "backend_app_schemas_init_py" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L13", "weight": 1.0, "_src": "init_mealtype", "_tgt": "str", "confidence_score": 1.0, "source": "init_mealtype", "target": "str" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L13", "weight": 1.0, "_src": "init_mealtype", "_tgt": "enum", "confidence_score": 1.0, "source": "init_mealtype", "target": "enum" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L19", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_mealplanstatus", "confidence_score": 1.0, "source": "init_mealplanstatus", "target": "backend_app_schemas_init_py" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L19", "weight": 1.0, "_src": "init_mealplanstatus", "_tgt": "str", "confidence_score": 1.0, "source": "init_mealplanstatus", "target": "str" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L19", "weight": 1.0, "_src": "init_mealplanstatus", "_tgt": "enum", "confidence_score": 1.0, "source": "init_mealplanstatus", "target": "enum" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L26", "weight": 1.0, "_src": "init_mealplanitemstatus", "_tgt": "str", "confidence_score": 1.0, "source": "init_mealplanitemstatus", "target": "str" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L26", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_mealplanitemstatus", "confidence_score": 1.0, "source": "init_mealplanitemstatus", "target": "backend_app_schemas_init_py" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L26", "weight": 1.0, "_src": "init_mealplanitemstatus", "_tgt": "enum", "confidence_score": 1.0, "source": "init_mealplanitemstatus", "target": "enum" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L8", "weight": 1.0, "_src": "init_familymemberrole", "_tgt": "str", "confidence_score": 1.0, "source": "str", "target": "init_familymemberrole" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L33", "weight": 1.0, "_src": "init_denialreason", "_tgt": "str", "confidence_score": 1.0, "source": "str", "target": "init_denialreason" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L41", "weight": 1.0, "_src": "init_neversuggestreason", "_tgt": "str", "confidence_score": 1.0, "source": "str", "target": "init_neversuggestreason" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/auth.py", "source_location": "L47", "weight": 1.0, "_src": "auth_login", "_tgt": "str", "source": "str", "target": "auth_login" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/recipes.py", "source_location": "L38", "weight": 1.0, "_src": "recipes_validate_ingredient_ids", "_tgt": "str", "source": "str", "target": "recipes_validate_ingredient_ids" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/ingredients.py", "source_location": "L142", "weight": 1.0, "_src": "ingredients_pin_match", "_tgt": "str", "source": "str", "target": "ingredients_pin_match" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meal_plans.py", "source_location": "L71", "weight": 1.0, "_src": "meal_plans_generate", "_tgt": "str", "source": "str", "target": "meal_plans_generate" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/admin.py", "source_location": "L26", "weight": 1.0, "_src": "admin_trigger_scrape", "_tgt": "str", "source": "str", "target": "admin_trigger_scrape" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/admin.py", "source_location": "L44", "weight": 1.0, "_src": "admin_get_logs", "_tgt": "str", "source": "str", "target": "admin_get_logs" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/admin.py", "source_location": "L65", "weight": 1.0, "_src": "admin_get_log", "_tgt": "str", "source": "str", "target": "admin_get_log" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/admin.py", "source_location": "L92", "weight": 1.0, "_src": "admin_get_email_logs", "_tgt": "str", "source": "str", "target": "admin_get_email_logs" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/admin.py", "source_location": "L121", "weight": 1.0, "_src": "admin_get_all_meal_plans", "_tgt": "str", "source": "str", "target": "admin_get_all_meal_plans" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/admin.py", "source_location": "L164", "weight": 1.0, "_src": "admin_test_email", "_tgt": "str", "source": "str", "target": "admin_test_email" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meals.py", "source_location": "L130", "weight": 1.0, "_src": "meals_get_vote_page", "_tgt": "str", "source": "str", "target": "meals_get_vote_page" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meals.py", "source_location": "L313", "weight": 1.0, "_src": "meals_get_meal_item", "_tgt": "str", "source": "str", "target": "meals_get_meal_item" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meals.py", "source_location": "L459", "weight": 1.0, "_src": "meals_move_meal_item", "_tgt": "str", "source": "str", "target": "meals_move_meal_item" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/orchestrate.py", "source_location": "L25", "weight": 1.0, "_src": "orchestrate_orchestrate_status", "_tgt": "str", "source": "str", "target": "orchestrate_orchestrate_status" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/orchestrate.py", "source_location": "L47", "weight": 1.0, "_src": "orchestrate_orchestrate_run_week", "_tgt": "str", "source": "str", "target": "orchestrate_orchestrate_run_week" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/orchestrate.py", "source_location": "L63", "weight": 1.0, "_src": "orchestrate_orchestrate_step", "_tgt": "str", "source": "str", "target": "orchestrate_orchestrate_step" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/approval.py", "source_location": "L39", "weight": 1.0, "_src": "approval_issue_token", "_tgt": "str", "source": "str", "target": "approval_issue_token" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/approval.py", "source_location": "L70", "weight": 1.0, "_src": "approval_consume_token", "_tgt": "str", "source": "str", "target": "approval_consume_token" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/matcher.py", "source_location": "L227", "weight": 1.0, "_src": "matcher_run_match_job", "_tgt": "str", "source": "str", "target": "matcher_run_match_job" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/scraper_service.py", "source_location": "L109", "weight": 1.0, "_src": "scraper_service_run_scrape_in_background", "_tgt": "str", "source": "str", "target": "scraper_service_run_scrape_in_background" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/scraper_service.py", "source_location": "L157", "weight": 1.0, "_src": "scraper_service_scraperservice_run_scrape", "_tgt": "str", "source": "str", "target": "scraper_service_scraperservice_run_scrape" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/scraper_service.py", "source_location": "L292", "weight": 1.0, "_src": "scraper_service_scraperservice_get_sale_items", "_tgt": "str", "source": "str", "target": "scraper_service_scraperservice_get_sale_items" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/planner/cost.py", "source_location": "L33", "weight": 1.0, "_src": "cost_decimal", "_tgt": "str", "source": "str", "target": "cost_decimal" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/planner/cost.py", "source_location": "L37", "weight": 1.0, "_src": "cost_scale", "_tgt": "str", "source": "str", "target": "cost_scale" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L83", "weight": 1.0, "_src": "steps_step_generate", "_tgt": "str", "source": "str", "target": "steps_step_generate" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L137", "weight": 1.0, "_src": "steps_step_email", "_tgt": "str", "source": "str", "target": "steps_step_email" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L376", "weight": 1.0, "_src": "steps_step_finalize", "_tgt": "str", "source": "str", "target": "steps_step_finalize" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L528", "weight": 1.0, "_src": "steps_step_reminder", "_tgt": "str", "source": "str", "target": "steps_step_reminder" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L276", "weight": 1.0, "_src": "lucky_ca_scraper_map_product", "_tgt": "str", "source": "str", "target": "lucky_ca_scraper_map_product" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L772", "weight": 1.0, "_src": "0007_seed_recipes_insert_recipes", "_tgt": "str", "source": "str", "target": "0007_seed_recipes_insert_recipes" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_alembic.py", "source_location": "L33", "weight": 1.0, "_src": "test_alembic_test_alembic_upgrade_head_roundtrip", "_tgt": "str", "source": "str", "target": "test_alembic_test_alembic_upgrade_head_roundtrip" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L28", "weight": 1.0, "_src": "test_approval_test_issue_and_verify_token_roundtrip", "_tgt": "str", "source": "str", "target": "test_approval_test_issue_and_verify_token_roundtrip" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/conftest.py", "source_location": "L114", "weight": 1.0, "_src": "conftest_schema", "_tgt": "str", "source": "str", "target": "conftest_schema" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L87", "weight": 1.0, "_src": "test_ingredient_api_seed_grocery", "_tgt": "str", "source": "str", "target": "test_ingredient_api_seed_grocery" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L26", "weight": 1.0, "_src": "test_never_suggest_api_seed_family", "_tgt": "str", "source": "str", "target": "test_never_suggest_api_seed_family" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_cost.py", "source_location": "L18", "weight": 1.0, "_src": "test_planner_cost_match", "_tgt": "str", "source": "str", "target": "test_planner_cost_match" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_filter.py", "source_location": "L38", "weight": 1.0, "_src": "test_planner_filter_cost", "_tgt": "str", "source": "str", "target": "test_planner_filter_cost" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L52", "weight": 1.0, "_src": "test_meal_plan_generate_api_test_generate_endpoint_returns_meal_plan", "_tgt": "str", "source": "str", "target": "test_meal_plan_generate_api_test_generate_endpoint_returns_meal_plan" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L66", "weight": 1.0, "_src": "test_meal_plan_generate_api_test_generate_endpoint_requires_admin_token", "_tgt": "str", "source": "str", "target": "test_meal_plan_generate_api_test_generate_endpoint_requires_admin_token" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L75", "weight": 1.0, "_src": "test_meal_plan_generate_api_test_generate_endpoint_returns_404_for_unknown_family", "_tgt": "str", "source": "str", "target": "test_meal_plan_generate_api_test_generate_endpoint_returns_404_for_unknown_family" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L152", "weight": 1.0, "_src": "test_swiftly_auth_test_mint_raises_on_firebase_non_200", "_tgt": "str", "source": "str", "target": "test_swiftly_auth_test_mint_raises_on_firebase_non_200" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L143", "weight": 1.0, "_src": "test_swiftly_api_test_swiftly_auth_error_on_401_from_api", "_tgt": "str", "source": "str", "target": "test_swiftly_api_test_swiftly_auth_error_on_401_from_api" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L299", "weight": 1.0, "_src": "test_orchestrator_test_step_email_sends_per_member", "_tgt": "str", "source": "str", "target": "test_orchestrator_test_step_email_sends_per_member" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/spike_lucky_scrape.py", "source_location": "L93", "weight": 1.0, "_src": "spike_lucky_scrape_main", "_tgt": "str", "source": "str", "target": "spike_lucky_scrape_main" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/spike_swiftly_ingest.py", "source_location": "L91", "weight": 1.0, "_src": "spike_swiftly_ingest_main", "_tgt": "str", "source": "str", "target": "spike_swiftly_ingest_main" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L8", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_familymemberrole", "confidence_score": 1.0, "source": "init_familymemberrole", "target": "backend_app_schemas_init_py" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L8", "weight": 1.0, "_src": "init_familymemberrole", "_tgt": "enum", "confidence_score": 1.0, "source": "init_familymemberrole", "target": "enum" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L33", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_denialreason", "confidence_score": 1.0, "source": "init_denialreason", "target": "backend_app_schemas_init_py" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L33", "weight": 1.0, "_src": "init_denialreason", "_tgt": "enum", "confidence_score": 1.0, "source": "init_denialreason", "target": "enum" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L41", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_neversuggestreason", "confidence_score": 1.0, "source": "init_neversuggestreason", "target": "backend_app_schemas_init_py" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L41", "weight": 1.0, "_src": "init_neversuggestreason", "_tgt": "enum", "confidence_score": 1.0, "source": "init_neversuggestreason", "target": "enum" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/never_suggest.py", "source_location": "L27", "weight": 1.0, "_src": "never_suggest_coerce_reason", "_tgt": "init_neversuggestreason", "source": "init_neversuggestreason", "target": "never_suggest_coerce_reason" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L88", "weight": 1.0, "_src": "init_familyprofile", "_tgt": "base", "confidence_score": 1.0, "source": "init_familyprofile", "target": "base" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L93", "weight": 1.0, "_src": "test_approval_scenario", "_tgt": "init_familyprofile", "source": "init_familyprofile", "target": "test_approval_scenario" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L16", "weight": 1.0, "_src": "test_never_suggest_api_seed_family", "_tgt": "init_familyprofile", "source": "init_familyprofile", "target": "test_never_suggest_api_seed_family" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_generate.py", "source_location": "L31", "weight": 1.0, "_src": "test_planner_generate_test_generate_meal_plan_against_seeded_data", "_tgt": "init_familyprofile", "source": "init_familyprofile", "target": "test_planner_generate_test_generate_meal_plan_against_seeded_data" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L18", "weight": 1.0, "_src": "test_meal_plan_generate_api_family_with_groceries", "_tgt": "init_familyprofile", "source": "init_familyprofile", "target": "test_meal_plan_generate_api_family_with_groceries" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L17", "weight": 1.0, "_src": "test_orchestrator_family", "_tgt": "init_familyprofile", "source": "init_familyprofile", "target": "test_orchestrator_family" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/send_test_approval.py", "source_location": "L88", "weight": 1.0, "_src": "send_test_approval_main", "_tgt": "init_familyprofile", "source": "init_familyprofile", "target": "send_test_approval_main" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L120", "weight": 1.0, "_src": "init_familymember", "_tgt": "base", "confidence_score": 1.0, "source": "base", "target": "init_familymember" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L141", "weight": 1.0, "_src": "init_ingredient", "_tgt": "base", "confidence_score": 1.0, "source": "base", "target": "init_ingredient" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L161", "weight": 1.0, "_src": "init_recipe", "_tgt": "base", "confidence_score": 1.0, "source": "base", "target": "init_recipe" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L195", "weight": 1.0, "_src": "init_mealplan", "_tgt": "base", "confidence_score": 1.0, "source": "base", "target": "init_mealplan" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L216", "weight": 1.0, "_src": "init_mealplanitem", "_tgt": "base", "confidence_score": 1.0, "source": "base", "target": "init_mealplanitem" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L243", "weight": 1.0, "_src": "init_mealplanvote", "_tgt": "base", "confidence_score": 1.0, "source": "base", "target": "init_mealplanvote" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L260", "weight": 1.0, "_src": "init_approvaltoken", "_tgt": "base", "confidence_score": 1.0, "source": "base", "target": "init_approvaltoken" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L280", "weight": 1.0, "_src": "init_homepantry", "_tgt": "base", "confidence_score": 1.0, "source": "base", "target": "init_homepantry" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L300", "weight": 1.0, "_src": "init_feedback", "_tgt": "base", "confidence_score": 1.0, "source": "base", "target": "init_feedback" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L322", "weight": 1.0, "_src": "init_neversuggest", "_tgt": "base", "confidence_score": 1.0, "source": "base", "target": "init_neversuggest" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L337", "weight": 1.0, "_src": "init_groceryitem", "_tgt": "base", "confidence_score": 1.0, "source": "base", "target": "init_groceryitem" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L364", "weight": 1.0, "_src": "init_scrapelog", "_tgt": "base", "confidence_score": 1.0, "source": "base", "target": "init_scrapelog" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L378", "weight": 1.0, "_src": "init_emaillog", "_tgt": "base", "confidence_score": 1.0, "source": "base", "target": "init_emaillog" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L397", "weight": 1.0, "_src": "init_ingredientgrocerymatch", "_tgt": "base", "confidence_score": 1.0, "source": "base", "target": "init_ingredientgrocerymatch" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/models/__init__.py", "source_location": "L415", "weight": 1.0, "_src": "init_weeklyrun", "_tgt": "base", "confidence_score": 1.0, "source": "base", "target": "init_weeklyrun" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/profile.py", "source_location": "L60", "weight": 1.0, "_src": "profile_add_member", "_tgt": "init_familymember", "source": "init_familymember", "target": "profile_add_member" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L102", "weight": 1.0, "_src": "test_approval_scenario", "_tgt": "init_familymember", "source": "init_familymember", "target": "test_approval_scenario" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L33", "weight": 1.0, "_src": "test_orchestrator_member", "_tgt": "init_familymember", "source": "init_familymember", "target": "test_orchestrator_member" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/send_test_approval.py", "source_location": "L97", "weight": 1.0, "_src": "send_test_approval_main", "_tgt": "init_familymember", "source": "init_familymember", "target": "send_test_approval_main" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/ingredients.py", "source_location": "L60", "weight": 1.0, "_src": "ingredients_create_ingredient", "_tgt": "init_ingredient", "source": "init_ingredient", "target": "ingredients_create_ingredient" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/scraper_service.py", "source_location": "L216", "weight": 1.0, "_src": "scraper_service_scraperservice_save_grocery_item", "_tgt": "init_ingredient", "source": "init_ingredient", "target": "scraper_service_scraperservice_save_grocery_item" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_match_hook.py", "source_location": "L28", "weight": 1.0, "_src": "test_match_hook_test_run_match_job_persists_top_matches", "_tgt": "init_ingredient", "source": "init_ingredient", "target": "test_match_hook_test_run_match_job_persists_top_matches" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/recipes.py", "source_location": "L91", "weight": 1.0, "_src": "recipes_create_recipe", "_tgt": "init_recipe", "source": "init_recipe", "target": "recipes_create_recipe" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L117", "weight": 1.0, "_src": "test_approval_scenario", "_tgt": "init_recipe", "source": "init_recipe", "target": "test_approval_scenario" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L100", "weight": 1.0, "_src": "test_orchestrator_pending_item", "_tgt": "init_recipe", "source": "init_recipe", "target": "test_orchestrator_pending_item" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L508", "weight": 1.0, "_src": "test_orchestrator_approved_item", "_tgt": "init_recipe", "source": "init_recipe", "target": "test_orchestrator_approved_item" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/send_test_approval.py", "source_location": "L106", "weight": 1.0, "_src": "send_test_approval_main", "_tgt": "init_recipe", "source": "init_recipe", "target": "send_test_approval_main" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meals.py", "source_location": "L58", "weight": 1.0, "_src": "meals_create_meal_plan", "_tgt": "init_mealplan", "source": "init_mealplan", "target": "meals_create_meal_plan" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/planner/generate.py", "source_location": "L168", "weight": 1.0, "_src": "generate_generate_meal_plan", "_tgt": "init_mealplan", "source": "init_mealplan", "target": "generate_generate_meal_plan" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L128", "weight": 1.0, "_src": "test_approval_scenario", "_tgt": "init_mealplan", "source": "init_mealplan", "target": "test_approval_scenario" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L86", "weight": 1.0, "_src": "test_orchestrator_meal_plan", "_tgt": "init_mealplan", "source": "init_mealplan", "target": "test_orchestrator_meal_plan" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/send_test_approval.py", "source_location": "L117", "weight": 1.0, "_src": "send_test_approval_main", "_tgt": "init_mealplan", "source": "init_mealplan", "target": "send_test_approval_main" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meals.py", "source_location": "L70", "weight": 1.0, "_src": "meals_create_meal_plan", "_tgt": "init_mealplanitem", "source": "init_mealplanitem", "target": "meals_create_meal_plan" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meals.py", "source_location": "L399", "weight": 1.0, "_src": "meals_generate_single_item", "_tgt": "init_mealplanitem", "source": "init_mealplanitem", "target": "meals_generate_single_item" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/planner/generate.py", "source_location": "L183", "weight": 1.0, "_src": "generate_generate_meal_plan", "_tgt": "init_mealplanitem", "source": "init_mealplanitem", "target": "generate_generate_meal_plan" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L136", "weight": 1.0, "_src": "test_approval_scenario", "_tgt": "init_mealplanitem", "source": "init_mealplanitem", "target": "test_approval_scenario" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L109", "weight": 1.0, "_src": "test_orchestrator_pending_item", "_tgt": "init_mealplanitem", "source": "init_mealplanitem", "target": "test_orchestrator_pending_item" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L517", "weight": 1.0, "_src": "test_orchestrator_approved_item", "_tgt": "init_mealplanitem", "source": "init_mealplanitem", "target": "test_orchestrator_approved_item" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/send_test_approval.py", "source_location": "L125", "weight": 1.0, "_src": "send_test_approval_main", "_tgt": "init_mealplanitem", "source": "init_mealplanitem", "target": "send_test_approval_main" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meals.py", "source_location": "L270", "weight": 1.0, "_src": "meals_submit_vote", "_tgt": "init_mealplanvote", "source": "init_mealplanvote", "target": "meals_submit_vote" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L172", "weight": 1.0, "_src": "test_approval_test_consume_token_single_use", "_tgt": "init_mealplanvote", "source": "init_mealplanvote", "target": "test_approval_test_consume_token_single_use" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L395", "weight": 1.0, "_src": "test_orchestrator_test_step_reminder_skips_voter", "_tgt": "init_mealplanvote", "source": "init_mealplanvote", "target": "test_orchestrator_test_step_reminder_skips_voter" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L425", "weight": 1.0, "_src": "test_orchestrator_test_step_reminder_no_sends_when_all_voted", "_tgt": "init_mealplanvote", "source": "init_mealplanvote", "target": "test_orchestrator_test_step_reminder_no_sends_when_all_voted" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/pantry.py", "source_location": "L44", "weight": 1.0, "_src": "pantry_add_pantry_item", "_tgt": "init_homepantry", "source": "init_homepantry", "target": "pantry_add_pantry_item" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/feedback.py", "source_location": "L73", "weight": 1.0, "_src": "feedback_create_feedback", "_tgt": "init_feedback", "source": "init_feedback", "target": "feedback_create_feedback" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/never_suggest.py", "source_location": "L46", "weight": 1.0, "_src": "never_suggest_block", "_tgt": "init_neversuggest", "source": "init_neversuggest", "target": "never_suggest_block" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/scraper_service.py", "source_location": "L259", "weight": 1.0, "_src": "scraper_service_scraperservice_save_grocery_item", "_tgt": "init_groceryitem", "source": "init_groceryitem", "target": "scraper_service_scraperservice_save_grocery_item" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_match_hook.py", "source_location": "L38", "weight": 1.0, "_src": "test_match_hook_test_run_match_job_persists_top_matches", "_tgt": "init_groceryitem", "source": "init_groceryitem", "target": "test_match_hook_test_run_match_job_persists_top_matches" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L75", "weight": 1.0, "_src": "test_ingredient_api_seed_grocery", "_tgt": "init_groceryitem", "source": "init_groceryitem", "target": "test_ingredient_api_seed_grocery" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_generate.py", "source_location": "L47", "weight": 1.0, "_src": "test_planner_generate_test_generate_meal_plan_against_seeded_data", "_tgt": "init_groceryitem", "source": "init_groceryitem", "target": "test_planner_generate_test_generate_meal_plan_against_seeded_data" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L31", "weight": 1.0, "_src": "test_meal_plan_generate_api_family_with_groceries", "_tgt": "init_groceryitem", "source": "init_groceryitem", "target": "test_meal_plan_generate_api_family_with_groceries" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/scraper_service.py", "source_location": "L48", "weight": 1.0, "_src": "scraper_service_enqueue_scrape", "_tgt": "init_scrapelog", "source": "init_scrapelog", "target": "scraper_service_enqueue_scrape" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/scraper_service.py", "source_location": "L134", "weight": 1.0, "_src": "scraper_service_scraperservice_run_scrape", "_tgt": "init_scrapelog", "source": "init_scrapelog", "target": "scraper_service_scraperservice_run_scrape" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L188", "weight": 1.0, "_src": "test_swiftly_api_test_background_runner_writes_failed_with_token_message", "_tgt": "init_scrapelog", "source": "init_scrapelog", "target": "test_swiftly_api_test_background_runner_writes_failed_with_token_message" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/admin.py", "source_location": "L152", "weight": 1.0, "_src": "admin_test_email", "_tgt": "init_emaillog", "source": "init_emaillog", "target": "admin_test_email" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/ingredients.py", "source_location": "L146", "weight": 1.0, "_src": "ingredients_pin_match", "_tgt": "init_ingredientgrocerymatch", "source": "init_ingredientgrocerymatch", "target": "ingredients_pin_match" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L39", "weight": 1.0, "_src": "runner_get_or_create_run", "_tgt": "init_weeklyrun", "source": "init_weeklyrun", "target": "runner_get_or_create_run" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L48", "weight": 1.0, "_src": "test_orchestrator_weekly_run", "_tgt": "init_weeklyrun", "source": "init_weeklyrun", "target": "test_orchestrator_weekly_run" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L57", "weight": 1.0, "_src": "test_orchestrator_weekly_run_scraped", "_tgt": "init_weeklyrun", "source": "init_weeklyrun", "target": "test_orchestrator_weekly_run_scraped" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L71", "weight": 1.0, "_src": "test_orchestrator_weekly_run_generated", "_tgt": "init_weeklyrun", "source": "init_weeklyrun", "target": "test_orchestrator_weekly_run_generated" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L125", "weight": 1.0, "_src": "test_orchestrator_weekly_run_emailed", "_tgt": "init_weeklyrun", "source": "init_weeklyrun", "target": "test_orchestrator_weekly_run_emailed" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L141", "weight": 1.0, "_src": "test_orchestrator_weekly_run_reminded", "_tgt": "init_weeklyrun", "source": "init_weeklyrun", "target": "test_orchestrator_weekly_run_reminded" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L491", "weight": 1.0, "_src": "test_orchestrator_weekly_run_deadline_passed", "_tgt": "init_weeklyrun", "source": "init_weeklyrun", "target": "test_orchestrator_weekly_run_deadline_passed" }, { "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L5", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "enum", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "enum" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L48", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_ingredientbase", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_ingredientbase" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L58", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_ingredientresponse", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_ingredientresponse" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L279", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_config", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_config" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L66", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_ingredientcreate", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_ingredientcreate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L70", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_familymemberbase", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_familymemberbase" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L77", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_familymemberresponse", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_familymemberresponse" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L87", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_familymembercreate", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_familymembercreate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L91", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_familyprofilebase", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_familyprofilebase" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L100", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_familyprofileresponse", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_familyprofileresponse" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L110", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_familyprofilecreate", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_familyprofilecreate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L114", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_familyprofileupdate", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_familyprofileupdate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L123", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_recipeingredient", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_recipeingredient" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L133", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_normalize", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_normalize" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L142", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_recipebase", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_recipebase" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L161", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_reciperesponse", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_reciperesponse" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L173", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_recipecreate", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_recipecreate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L177", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_mealplanitembase", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_mealplanitembase" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L184", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_mealplanitemresponse", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_mealplanitemresponse" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L199", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_mealplanitemcreate", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_mealplanitemcreate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L203", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_mealplanbase", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_mealplanbase" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L210", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_mealplanresponse", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_mealplanresponse" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L222", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_mealplancreate", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_mealplancreate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L226", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_voterequest", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_voterequest" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L232", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_voteresponse", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_voteresponse" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L243", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_homepantrybase", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_homepantrybase" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L250", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_homepantryresponse", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_homepantryresponse" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L261", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_homepantrycreate", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_homepantrycreate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L265", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_feedbackbase", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_feedbackbase" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L272", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_feedbackresponse", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_feedbackresponse" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L283", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_feedbackcreate", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_feedbackcreate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L287", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_shoppinglistitem", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_shoppinglistitem" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L300", "weight": 1.0, "_src": "backend_app_schemas_init_py", "_tgt": "init_shoppinglistresponse", "confidence_score": 1.0, "source": "backend_app_schemas_init_py", "target": "init_shoppinglistresponse" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/alembic/versions/0001_initial_migration.py", "source_location": "L78", "weight": 1.0, "_src": "0001_initial_migration_upgrade", "_tgt": "enum", "source": "enum", "target": "0001_initial_migration_upgrade" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/alembic/versions/0006_recipe_engine_thin.py", "source_location": "L62", "weight": 1.0, "_src": "0006_recipe_engine_thin_upgrade", "_tgt": "enum", "source": "enum", "target": "0006_recipe_engine_thin_upgrade" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L48", "weight": 1.0, "_src": "init_ingredientbase", "_tgt": "basemodel", "confidence_score": 1.0, "source": "init_ingredientbase", "target": "basemodel" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L58", "weight": 1.0, "_src": "init_ingredientresponse", "_tgt": "init_ingredientbase", "confidence_score": 1.0, "source": "init_ingredientbase", "target": "init_ingredientresponse" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L66", "weight": 1.0, "_src": "init_ingredientcreate", "_tgt": "init_ingredientbase", "confidence_score": 1.0, "source": "init_ingredientbase", "target": "init_ingredientcreate" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L70", "weight": 1.0, "_src": "init_familymemberbase", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "init_familymemberbase" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L91", "weight": 1.0, "_src": "init_familyprofilebase", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "init_familyprofilebase" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L114", "weight": 1.0, "_src": "init_familyprofileupdate", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "init_familyprofileupdate" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L123", "weight": 1.0, "_src": "init_recipeingredient", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "init_recipeingredient" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L142", "weight": 1.0, "_src": "init_recipebase", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "init_recipebase" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L177", "weight": 1.0, "_src": "init_mealplanitembase", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "init_mealplanitembase" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L203", "weight": 1.0, "_src": "init_mealplanbase", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "init_mealplanbase" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L226", "weight": 1.0, "_src": "init_voterequest", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "init_voterequest" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L232", "weight": 1.0, "_src": "init_voteresponse", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "init_voteresponse" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L243", "weight": 1.0, "_src": "init_homepantrybase", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "init_homepantrybase" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L265", "weight": 1.0, "_src": "init_feedbackbase", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "init_feedbackbase" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L287", "weight": 1.0, "_src": "init_shoppinglistitem", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "init_shoppinglistitem" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L300", "weight": 1.0, "_src": "init_shoppinglistresponse", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "init_shoppinglistresponse" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L10", "weight": 1.0, "_src": "ingredient_ingredientbase", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "ingredient_ingredientbase" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L27", "weight": 1.0, "_src": "ingredient_ingredientupdate", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "ingredient_ingredientupdate" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L48", "weight": 1.0, "_src": "ingredient_ingredientgrocerymatchread", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "ingredient_ingredientgrocerymatchread" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/recipe.py", "source_location": "L10", "weight": 1.0, "_src": "recipe_recipeingredientref", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "recipe_recipeingredientref" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/recipe.py", "source_location": "L17", "weight": 1.0, "_src": "recipe_recipebase", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "recipe_recipebase" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/recipe.py", "source_location": "L38", "weight": 1.0, "_src": "recipe_recipeupdate", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "recipe_recipeupdate" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/recipe.py", "source_location": "L60", "weight": 1.0, "_src": "recipe_resolveingredientrequest", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "recipe_resolveingredientrequest" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/recipe.py", "source_location": "L64", "weight": 1.0, "_src": "recipe_resolveingredientcandidate", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "recipe_resolveingredientcandidate" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/recipe.py", "source_location": "L71", "weight": 1.0, "_src": "recipe_resolveingredientresponse", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "recipe_resolveingredientresponse" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L9", "weight": 1.0, "_src": "never_suggest_neversuggestcreate", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "never_suggest_neversuggestcreate" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L24", "weight": 1.0, "_src": "never_suggest_neversuggestread", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "never_suggest_neversuggestread" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L11", "weight": 1.0, "_src": "meal_plan_generation_generaterequest", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "meal_plan_generation_generaterequest" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L16", "weight": 1.0, "_src": "meal_plan_generation_regeneraterequest", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "meal_plan_generation_regeneraterequest" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L25", "weight": 1.0, "_src": "meal_plan_generation_generationitem", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "meal_plan_generation_generationitem" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L33", "weight": 1.0, "_src": "meal_plan_generation_generationdebug", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "meal_plan_generation_generationdebug" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L39", "weight": 1.0, "_src": "meal_plan_generation_generationresponse", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "meal_plan_generation_generationresponse" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L26", "weight": 1.0, "_src": "auth_loginrequest", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "auth_loginrequest" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L117", "weight": 1.0, "_src": "ingredients_pinmatchbody", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "ingredients_pinmatchbody" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L109", "weight": 1.0, "_src": "meals_votesubmission", "_tgt": "basemodel", "confidence_score": 1.0, "source": "basemodel", "target": "meals_votesubmission" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L77", "weight": 1.0, "_src": "init_familymemberresponse", "_tgt": "init_familymemberbase", "confidence_score": 1.0, "source": "init_familymemberbase", "target": "init_familymemberresponse" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L87", "weight": 1.0, "_src": "init_familymembercreate", "_tgt": "init_familymemberbase", "confidence_score": 1.0, "source": "init_familymemberbase", "target": "init_familymembercreate" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L100", "weight": 1.0, "_src": "init_familyprofileresponse", "_tgt": "init_familyprofilebase", "confidence_score": 1.0, "source": "init_familyprofilebase", "target": "init_familyprofileresponse" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L110", "weight": 1.0, "_src": "init_familyprofilecreate", "_tgt": "init_familyprofilebase", "confidence_score": 1.0, "source": "init_familyprofilebase", "target": "init_familyprofilecreate" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L161", "weight": 1.0, "_src": "init_reciperesponse", "_tgt": "init_recipebase", "confidence_score": 1.0, "source": "init_recipebase", "target": "init_reciperesponse" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L173", "weight": 1.0, "_src": "init_recipecreate", "_tgt": "init_recipebase", "confidence_score": 1.0, "source": "init_recipebase", "target": "init_recipecreate" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L184", "weight": 1.0, "_src": "init_mealplanitemresponse", "_tgt": "init_mealplanitembase", "confidence_score": 1.0, "source": "init_mealplanitembase", "target": "init_mealplanitemresponse" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L199", "weight": 1.0, "_src": "init_mealplanitemcreate", "_tgt": "init_mealplanitembase", "confidence_score": 1.0, "source": "init_mealplanitembase", "target": "init_mealplanitemcreate" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L210", "weight": 1.0, "_src": "init_mealplanresponse", "_tgt": "init_mealplanbase", "confidence_score": 1.0, "source": "init_mealplanbase", "target": "init_mealplanresponse" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L222", "weight": 1.0, "_src": "init_mealplancreate", "_tgt": "init_mealplanbase", "confidence_score": 1.0, "source": "init_mealplanbase", "target": "init_mealplancreate" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L250", "weight": 1.0, "_src": "init_homepantryresponse", "_tgt": "init_homepantrybase", "confidence_score": 1.0, "source": "init_homepantrybase", "target": "init_homepantryresponse" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L261", "weight": 1.0, "_src": "init_homepantrycreate", "_tgt": "init_homepantrybase", "confidence_score": 1.0, "source": "init_homepantrybase", "target": "init_homepantrycreate" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L272", "weight": 1.0, "_src": "init_feedbackresponse", "_tgt": "init_feedbackbase", "confidence_score": 1.0, "source": "init_feedbackbase", "target": "init_feedbackresponse" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/__init__.py", "source_location": "L283", "weight": 1.0, "_src": "init_feedbackcreate", "_tgt": "init_feedbackbase", "confidence_score": 1.0, "source": "init_feedbackbase", "target": "init_feedbackcreate" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/shopping_list.py", "source_location": "L127", "weight": 1.0, "_src": "shopping_list_get_shopping_list", "_tgt": "init_shoppinglistitem", "source": "init_shoppinglistitem", "target": "shopping_list_get_shopping_list" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/shopping_list.py", "source_location": "L44", "weight": 1.0, "_src": "shopping_list_get_shopping_list", "_tgt": "init_shoppinglistresponse", "source": "init_shoppinglistresponse", "target": "shopping_list_get_shopping_list" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L10", "weight": 1.0, "_src": "backend_app_schemas_ingredient_py", "_tgt": "ingredient_ingredientbase", "confidence_score": 1.0, "source": "backend_app_schemas_ingredient_py", "target": "ingredient_ingredientbase" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L36", "weight": 1.0, "_src": "backend_app_schemas_ingredient_py", "_tgt": "ingredient_strip_and_drop_empty", "confidence_score": 1.0, "source": "backend_app_schemas_ingredient_py", "target": "ingredient_strip_and_drop_empty" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L23", "weight": 1.0, "_src": "backend_app_schemas_ingredient_py", "_tgt": "ingredient_ingredientcreate", "confidence_score": 1.0, "source": "backend_app_schemas_ingredient_py", "target": "ingredient_ingredientcreate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L27", "weight": 1.0, "_src": "backend_app_schemas_ingredient_py", "_tgt": "ingredient_ingredientupdate", "confidence_score": 1.0, "source": "backend_app_schemas_ingredient_py", "target": "ingredient_ingredientupdate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L42", "weight": 1.0, "_src": "backend_app_schemas_ingredient_py", "_tgt": "ingredient_ingredientread", "confidence_score": 1.0, "source": "backend_app_schemas_ingredient_py", "target": "ingredient_ingredientread" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L48", "weight": 1.0, "_src": "backend_app_schemas_ingredient_py", "_tgt": "ingredient_ingredientgrocerymatchread", "confidence_score": 1.0, "source": "backend_app_schemas_ingredient_py", "target": "ingredient_ingredientgrocerymatchread" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L23", "weight": 1.0, "_src": "ingredient_ingredientcreate", "_tgt": "ingredient_ingredientbase", "confidence_score": 1.0, "source": "ingredient_ingredientbase", "target": "ingredient_ingredientcreate" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/ingredient.py", "source_location": "L42", "weight": 1.0, "_src": "ingredient_ingredientread", "_tgt": "ingredient_ingredientbase", "confidence_score": 1.0, "source": "ingredient_ingredientbase", "target": "ingredient_ingredientread" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/api/ingredients.py", "source_location": "L15", "weight": 0.8, "_src": "ingredients_pinmatchbody", "_tgt": "ingredient_ingredientcreate", "confidence_score": 0.5, "source": "ingredient_ingredientcreate", "target": "ingredients_pinmatchbody" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L8", "weight": 1.0, "_src": "test_ingredient_schema_test_ingredient_create_normalizes_aliases", "_tgt": "ingredient_ingredientcreate", "source": "ingredient_ingredientcreate", "target": "test_ingredient_schema_test_ingredient_create_normalizes_aliases" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/api/ingredients.py", "source_location": "L15", "weight": 0.8, "_src": "ingredients_pinmatchbody", "_tgt": "ingredient_ingredientupdate", "confidence_score": 0.5, "source": "ingredient_ingredientupdate", "target": "ingredients_pinmatchbody" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/api/ingredients.py", "source_location": "L15", "weight": 0.8, "_src": "ingredients_pinmatchbody", "_tgt": "ingredient_ingredientread", "confidence_score": 0.5, "source": "ingredient_ingredientread", "target": "ingredients_pinmatchbody" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/api/ingredients.py", "source_location": "L15", "weight": 0.8, "_src": "ingredients_pinmatchbody", "_tgt": "ingredient_ingredientgrocerymatchread", "confidence_score": 0.5, "source": "ingredient_ingredientgrocerymatchread", "target": "ingredients_pinmatchbody" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/recipe.py", "source_location": "L10", "weight": 1.0, "_src": "backend_app_schemas_recipe_py", "_tgt": "recipe_recipeingredientref", "confidence_score": 1.0, "source": "backend_app_schemas_recipe_py", "target": "recipe_recipeingredientref" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/recipe.py", "source_location": "L17", "weight": 1.0, "_src": "backend_app_schemas_recipe_py", "_tgt": "recipe_recipebase", "confidence_score": 1.0, "source": "backend_app_schemas_recipe_py", "target": "recipe_recipebase" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/recipe.py", "source_location": "L34", "weight": 1.0, "_src": "backend_app_schemas_recipe_py", "_tgt": "recipe_recipecreate", "confidence_score": 1.0, "source": "backend_app_schemas_recipe_py", "target": "recipe_recipecreate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/recipe.py", "source_location": "L38", "weight": 1.0, "_src": "backend_app_schemas_recipe_py", "_tgt": "recipe_recipeupdate", "confidence_score": 1.0, "source": "backend_app_schemas_recipe_py", "target": "recipe_recipeupdate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/recipe.py", "source_location": "L54", "weight": 1.0, "_src": "backend_app_schemas_recipe_py", "_tgt": "recipe_reciperead", "confidence_score": 1.0, "source": "backend_app_schemas_recipe_py", "target": "recipe_reciperead" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/recipe.py", "source_location": "L60", "weight": 1.0, "_src": "backend_app_schemas_recipe_py", "_tgt": "recipe_resolveingredientrequest", "confidence_score": 1.0, "source": "backend_app_schemas_recipe_py", "target": "recipe_resolveingredientrequest" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/recipe.py", "source_location": "L64", "weight": 1.0, "_src": "backend_app_schemas_recipe_py", "_tgt": "recipe_resolveingredientcandidate", "confidence_score": 1.0, "source": "backend_app_schemas_recipe_py", "target": "recipe_resolveingredientcandidate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/recipe.py", "source_location": "L71", "weight": 1.0, "_src": "backend_app_schemas_recipe_py", "_tgt": "recipe_resolveingredientresponse", "confidence_score": 1.0, "source": "backend_app_schemas_recipe_py", "target": "recipe_resolveingredientresponse" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L18", "weight": 1.0, "_src": "test_recipe_schema_test_recipe_create_requires_canonical_ingredient_ids", "_tgt": "recipe_recipeingredientref", "source": "recipe_recipeingredientref", "target": "test_recipe_schema_test_recipe_create_requires_canonical_ingredient_ids" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/recipe.py", "source_location": "L34", "weight": 1.0, "_src": "recipe_recipecreate", "_tgt": "recipe_recipebase", "confidence_score": 1.0, "source": "recipe_recipebase", "target": "recipe_recipecreate" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/recipe.py", "source_location": "L54", "weight": 1.0, "_src": "recipe_reciperead", "_tgt": "recipe_recipebase", "confidence_score": 1.0, "source": "recipe_recipebase", "target": "recipe_reciperead" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L11", "weight": 1.0, "_src": "test_recipe_schema_test_recipe_create_requires_canonical_ingredient_ids", "_tgt": "recipe_recipecreate", "source": "recipe_recipecreate", "target": "test_recipe_schema_test_recipe_create_requires_canonical_ingredient_ids" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L27", "weight": 1.0, "_src": "test_recipe_schema_test_recipe_create_rejects_empty_ingredients", "_tgt": "recipe_recipecreate", "source": "recipe_recipecreate", "target": "test_recipe_schema_test_recipe_create_rejects_empty_ingredients" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L40", "weight": 1.0, "_src": "test_recipe_schema_test_resolve_ingredient_request_round_trip", "_tgt": "recipe_resolveingredientrequest", "source": "recipe_resolveingredientrequest", "target": "test_recipe_schema_test_resolve_ingredient_request_round_trip" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/recipes.py", "source_location": "L205", "weight": 1.0, "_src": "recipes_resolve_ingredient", "_tgt": "recipe_resolveingredientcandidate", "source": "recipe_resolveingredientcandidate", "target": "recipes_resolve_ingredient" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/recipes.py", "source_location": "L178", "weight": 1.0, "_src": "recipes_resolve_ingredient", "_tgt": "recipe_resolveingredientresponse", "source": "recipe_resolveingredientresponse", "target": "recipes_resolve_ingredient" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L9", "weight": 1.0, "_src": "backend_app_schemas_never_suggest_py", "_tgt": "never_suggest_neversuggestcreate", "confidence_score": 1.0, "source": "backend_app_schemas_never_suggest_py", "target": "never_suggest_neversuggestcreate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L17", "weight": 1.0, "_src": "backend_app_schemas_never_suggest_py", "_tgt": "never_suggest_exactly_one_target", "confidence_score": 1.0, "source": "backend_app_schemas_never_suggest_py", "target": "never_suggest_exactly_one_target" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/never_suggest.py", "source_location": "L24", "weight": 1.0, "_src": "backend_app_schemas_never_suggest_py", "_tgt": "never_suggest_neversuggestread", "confidence_score": 1.0, "source": "backend_app_schemas_never_suggest_py", "target": "never_suggest_neversuggestread" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L11", "weight": 1.0, "_src": "backend_app_schemas_meal_plan_generation_py", "_tgt": "meal_plan_generation_generaterequest", "confidence_score": 1.0, "source": "backend_app_schemas_meal_plan_generation_py", "target": "meal_plan_generation_generaterequest" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L16", "weight": 1.0, "_src": "backend_app_schemas_meal_plan_generation_py", "_tgt": "meal_plan_generation_regeneraterequest", "confidence_score": 1.0, "source": "backend_app_schemas_meal_plan_generation_py", "target": "meal_plan_generation_regeneraterequest" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L25", "weight": 1.0, "_src": "backend_app_schemas_meal_plan_generation_py", "_tgt": "meal_plan_generation_generationitem", "confidence_score": 1.0, "source": "backend_app_schemas_meal_plan_generation_py", "target": "meal_plan_generation_generationitem" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L33", "weight": 1.0, "_src": "backend_app_schemas_meal_plan_generation_py", "_tgt": "meal_plan_generation_generationdebug", "confidence_score": 1.0, "source": "backend_app_schemas_meal_plan_generation_py", "target": "meal_plan_generation_generationdebug" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/schemas/meal_plan_generation.py", "source_location": "L39", "weight": 1.0, "_src": "backend_app_schemas_meal_plan_generation_py", "_tgt": "meal_plan_generation_generationresponse", "confidence_score": 1.0, "source": "backend_app_schemas_meal_plan_generation_py", "target": "meal_plan_generation_generationresponse" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meal_plans.py", "source_location": "L39", "weight": 1.0, "_src": "meal_plans_to_response", "_tgt": "meal_plan_generation_generationitem", "source": "meal_plan_generation_generationitem", "target": "meal_plans_to_response" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meal_plans.py", "source_location": "L136", "weight": 1.0, "_src": "meal_plans_get_plan", "_tgt": "meal_plan_generation_generationitem", "source": "meal_plan_generation_generationitem", "target": "meal_plans_get_plan" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meal_plans.py", "source_location": "L51", "weight": 1.0, "_src": "meal_plans_to_response", "_tgt": "meal_plan_generation_generationdebug", "source": "meal_plan_generation_generationdebug", "target": "meal_plans_to_response" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meal_plans.py", "source_location": "L145", "weight": 1.0, "_src": "meal_plans_get_plan", "_tgt": "meal_plan_generation_generationdebug", "source": "meal_plan_generation_generationdebug", "target": "meal_plans_get_plan" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meal_plans.py", "source_location": "L47", "weight": 1.0, "_src": "meal_plans_to_response", "_tgt": "meal_plan_generation_generationresponse", "source": "meal_plan_generation_generationresponse", "target": "meal_plans_to_response" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meal_plans.py", "source_location": "L132", "weight": 1.0, "_src": "meal_plans_get_plan", "_tgt": "meal_plan_generation_generationresponse", "source": "meal_plan_generation_generationresponse", "target": "meal_plans_get_plan" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/profile.py", "source_location": "L17", "weight": 1.0, "_src": "backend_app_api_profile_py", "_tgt": "profile_get_profile", "confidence_score": 1.0, "source": "backend_app_api_profile_py", "target": "profile_get_profile" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/profile.py", "source_location": "L25", "weight": 1.0, "_src": "backend_app_api_profile_py", "_tgt": "profile_update_profile", "confidence_score": 1.0, "source": "backend_app_api_profile_py", "target": "profile_update_profile" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/profile.py", "source_location": "L40", "weight": 1.0, "_src": "backend_app_api_profile_py", "_tgt": "profile_get_members", "confidence_score": 1.0, "source": "backend_app_api_profile_py", "target": "profile_get_members" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/profile.py", "source_location": "L48", "weight": 1.0, "_src": "backend_app_api_profile_py", "_tgt": "profile_add_member", "confidence_score": 1.0, "source": "backend_app_api_profile_py", "target": "profile_add_member" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/profile.py", "source_location": "L74", "weight": 1.0, "_src": "backend_app_api_profile_py", "_tgt": "profile_delete_member", "confidence_score": 1.0, "source": "backend_app_api_profile_py", "target": "profile_delete_member" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/pantry.py", "source_location": "L14", "weight": 1.0, "_src": "backend_app_api_pantry_py", "_tgt": "pantry_get_pantry_items", "confidence_score": 1.0, "source": "backend_app_api_pantry_py", "target": "pantry_get_pantry_items" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/pantry.py", "source_location": "L26", "weight": 1.0, "_src": "backend_app_api_pantry_py", "_tgt": "pantry_add_pantry_item", "confidence_score": 1.0, "source": "backend_app_api_pantry_py", "target": "pantry_add_pantry_item" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/pantry.py", "source_location": "L59", "weight": 1.0, "_src": "backend_app_api_pantry_py", "_tgt": "pantry_remove_pantry_item", "confidence_score": 1.0, "source": "backend_app_api_pantry_py", "target": "pantry_remove_pantry_item" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/pantry.py", "source_location": "L70", "weight": 1.0, "_src": "backend_app_api_pantry_py", "_tgt": "pantry_update_pantry_item", "confidence_score": 1.0, "source": "backend_app_api_pantry_py", "target": "pantry_update_pantry_item" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L26", "weight": 1.0, "_src": "backend_app_api_auth_py", "_tgt": "auth_loginrequest", "confidence_score": 1.0, "source": "backend_app_api_auth_py", "target": "auth_loginrequest" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L31", "weight": 1.0, "_src": "backend_app_api_auth_py", "_tgt": "auth_login", "confidence_score": 1.0, "source": "backend_app_api_auth_py", "target": "auth_login" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L64", "weight": 1.0, "_src": "backend_app_api_auth_py", "_tgt": "auth_logout", "confidence_score": 1.0, "source": "backend_app_api_auth_py", "target": "auth_logout" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/auth.py", "source_location": "L1", "weight": 1.0, "_src": "auth_rationale_1", "_tgt": "backend_app_api_auth_py", "confidence_score": 1.0, "source": "backend_app_api_auth_py", "target": "auth_rationale_1" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/shopping_list.py", "source_location": "L18", "weight": 1.0, "_src": "backend_app_api_shopping_list_py", "_tgt": "shopping_list_parse_uuid", "confidence_score": 1.0, "source": "backend_app_api_shopping_list_py", "target": "shopping_list_parse_uuid" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/shopping_list.py", "source_location": "L28", "weight": 1.0, "_src": "backend_app_api_shopping_list_py", "_tgt": "shopping_list_get_shopping_list", "confidence_score": 1.0, "source": "backend_app_api_shopping_list_py", "target": "shopping_list_get_shopping_list" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/shopping_list.py", "source_location": "L155", "weight": 1.0, "_src": "backend_app_api_shopping_list_py", "_tgt": "shopping_list_print_shopping_list", "confidence_score": 1.0, "source": "backend_app_api_shopping_list_py", "target": "shopping_list_print_shopping_list" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/api/shopping_list.py", "source_location": "L64", "weight": 1.0, "_src": "shopping_list_get_shopping_list", "_tgt": "shopping_list_parse_uuid", "confidence_score": 1.0, "source": "shopping_list_parse_uuid", "target": "shopping_list_get_shopping_list" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/recipes.py", "source_location": "L32", "weight": 1.0, "_src": "backend_app_api_recipes_py", "_tgt": "recipes_validate_ingredient_ids", "confidence_score": 1.0, "source": "backend_app_api_recipes_py", "target": "recipes_validate_ingredient_ids" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/recipes.py", "source_location": "L46", "weight": 1.0, "_src": "backend_app_api_recipes_py", "_tgt": "recipes_serialize", "confidence_score": 1.0, "source": "backend_app_api_recipes_py", "target": "recipes_serialize" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/recipes.py", "source_location": "L67", "weight": 1.0, "_src": "backend_app_api_recipes_py", "_tgt": "recipes_list_recipes", "confidence_score": 1.0, "source": "backend_app_api_recipes_py", "target": "recipes_list_recipes" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/recipes.py", "source_location": "L81", "weight": 1.0, "_src": "backend_app_api_recipes_py", "_tgt": "recipes_get_recipe", "confidence_score": 1.0, "source": "backend_app_api_recipes_py", "target": "recipes_get_recipe" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/recipes.py", "source_location": "L89", "weight": 1.0, "_src": "backend_app_api_recipes_py", "_tgt": "recipes_create_recipe", "confidence_score": 1.0, "source": "backend_app_api_recipes_py", "target": "recipes_create_recipe" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/recipes.py", "source_location": "L115", "weight": 1.0, "_src": "backend_app_api_recipes_py", "_tgt": "recipes_update_recipe", "confidence_score": 1.0, "source": "backend_app_api_recipes_py", "target": "recipes_update_recipe" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/recipes.py", "source_location": "L132", "weight": 1.0, "_src": "backend_app_api_recipes_py", "_tgt": "recipes_delete_recipe", "confidence_score": 1.0, "source": "backend_app_api_recipes_py", "target": "recipes_delete_recipe" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/recipes.py", "source_location": "L152", "weight": 1.0, "_src": "backend_app_api_recipes_py", "_tgt": "recipes_parse_qty_unit", "confidence_score": 1.0, "source": "backend_app_api_recipes_py", "target": "recipes_parse_qty_unit" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/recipes.py", "source_location": "L171", "weight": 1.0, "_src": "backend_app_api_recipes_py", "_tgt": "recipes_resolve_ingredient", "confidence_score": 1.0, "source": "backend_app_api_recipes_py", "target": "recipes_resolve_ingredient" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/api/recipes.py", "source_location": "L90", "weight": 1.0, "_src": "recipes_create_recipe", "_tgt": "recipes_validate_ingredient_ids", "confidence_score": 1.0, "source": "recipes_validate_ingredient_ids", "target": "recipes_create_recipe" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/api/recipes.py", "source_location": "L121", "weight": 1.0, "_src": "recipes_update_recipe", "_tgt": "recipes_validate_ingredient_ids", "confidence_score": 1.0, "source": "recipes_validate_ingredient_ids", "target": "recipes_update_recipe" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/api/recipes.py", "source_location": "L77", "weight": 1.0, "_src": "recipes_list_recipes", "_tgt": "recipes_serialize", "confidence_score": 1.0, "source": "recipes_serialize", "target": "recipes_list_recipes" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/api/recipes.py", "source_location": "L85", "weight": 1.0, "_src": "recipes_get_recipe", "_tgt": "recipes_serialize", "confidence_score": 1.0, "source": "recipes_serialize", "target": "recipes_get_recipe" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/api/recipes.py", "source_location": "L111", "weight": 1.0, "_src": "recipes_create_recipe", "_tgt": "recipes_serialize", "confidence_score": 1.0, "source": "recipes_serialize", "target": "recipes_create_recipe" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/api/recipes.py", "source_location": "L128", "weight": 1.0, "_src": "recipes_update_recipe", "_tgt": "recipes_serialize", "confidence_score": 1.0, "source": "recipes_serialize", "target": "recipes_update_recipe" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/api/recipes.py", "source_location": "L175", "weight": 1.0, "_src": "recipes_resolve_ingredient", "_tgt": "recipes_parse_qty_unit", "confidence_score": 1.0, "source": "recipes_parse_qty_unit", "target": "recipes_resolve_ingredient" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L33", "weight": 1.0, "_src": "backend_app_api_ingredients_py", "_tgt": "ingredients_list_ingredients", "confidence_score": 1.0, "source": "backend_app_api_ingredients_py", "target": "ingredients_list_ingredients" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L51", "weight": 1.0, "_src": "backend_app_api_ingredients_py", "_tgt": "ingredients_get_ingredient", "confidence_score": 1.0, "source": "backend_app_api_ingredients_py", "target": "ingredients_get_ingredient" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L59", "weight": 1.0, "_src": "backend_app_api_ingredients_py", "_tgt": "ingredients_create_ingredient", "confidence_score": 1.0, "source": "backend_app_api_ingredients_py", "target": "ingredients_create_ingredient" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L79", "weight": 1.0, "_src": "backend_app_api_ingredients_py", "_tgt": "ingredients_update_ingredient", "confidence_score": 1.0, "source": "backend_app_api_ingredients_py", "target": "ingredients_update_ingredient" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L108", "weight": 1.0, "_src": "backend_app_api_ingredients_py", "_tgt": "ingredients_delete_ingredient", "confidence_score": 1.0, "source": "backend_app_api_ingredients_py", "target": "ingredients_delete_ingredient" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L117", "weight": 1.0, "_src": "backend_app_api_ingredients_py", "_tgt": "ingredients_pinmatchbody", "confidence_score": 1.0, "source": "backend_app_api_ingredients_py", "target": "ingredients_pinmatchbody" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L127", "weight": 1.0, "_src": "backend_app_api_ingredients_py", "_tgt": "ingredients_pin_match", "confidence_score": 1.0, "source": "backend_app_api_ingredients_py", "target": "ingredients_pin_match" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/ingredients.py", "source_location": "L170", "weight": 1.0, "_src": "backend_app_api_ingredients_py", "_tgt": "ingredients_unpin_match", "confidence_score": 1.0, "source": "backend_app_api_ingredients_py", "target": "ingredients_unpin_match" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/never_suggest.py", "source_location": "L23", "weight": 1.0, "_src": "backend_app_api_never_suggest_py", "_tgt": "never_suggest_coerce_reason", "confidence_score": 1.0, "source": "backend_app_api_never_suggest_py", "target": "never_suggest_coerce_reason" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/never_suggest.py", "source_location": "L33", "weight": 1.0, "_src": "backend_app_api_never_suggest_py", "_tgt": "never_suggest_list_for_family", "confidence_score": 1.0, "source": "backend_app_api_never_suggest_py", "target": "never_suggest_list_for_family" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/never_suggest.py", "source_location": "L45", "weight": 1.0, "_src": "backend_app_api_never_suggest_py", "_tgt": "never_suggest_block", "confidence_score": 1.0, "source": "backend_app_api_never_suggest_py", "target": "never_suggest_block" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/never_suggest.py", "source_location": "L64", "weight": 1.0, "_src": "backend_app_api_never_suggest_py", "_tgt": "never_suggest_unblock", "confidence_score": 1.0, "source": "backend_app_api_never_suggest_py", "target": "never_suggest_unblock" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/api/never_suggest.py", "source_location": "L50", "weight": 1.0, "_src": "never_suggest_block", "_tgt": "never_suggest_coerce_reason", "confidence_score": 1.0, "source": "never_suggest_coerce_reason", "target": "never_suggest_block" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meal_plans.py", "source_location": "L33", "weight": 1.0, "_src": "backend_app_api_meal_plans_py", "_tgt": "meal_plans_to_response", "confidence_score": 1.0, "source": "backend_app_api_meal_plans_py", "target": "meal_plans_to_response" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meal_plans.py", "source_location": "L60", "weight": 1.0, "_src": "backend_app_api_meal_plans_py", "_tgt": "meal_plans_generate", "confidence_score": 1.0, "source": "backend_app_api_meal_plans_py", "target": "meal_plans_generate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meal_plans.py", "source_location": "L82", "weight": 1.0, "_src": "backend_app_api_meal_plans_py", "_tgt": "meal_plans_regenerate", "confidence_score": 1.0, "source": "backend_app_api_meal_plans_py", "target": "meal_plans_regenerate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meal_plans.py", "source_location": "L120", "weight": 1.0, "_src": "backend_app_api_meal_plans_py", "_tgt": "meal_plans_get_plan", "confidence_score": 1.0, "source": "backend_app_api_meal_plans_py", "target": "meal_plans_get_plan" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/api/meal_plans.py", "source_location": "L78", "weight": 1.0, "_src": "meal_plans_generate", "_tgt": "meal_plans_to_response", "confidence_score": 1.0, "source": "meal_plans_to_response", "target": "meal_plans_generate" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/api/meal_plans.py", "source_location": "L116", "weight": 1.0, "_src": "meal_plans_regenerate", "_tgt": "meal_plans_to_response", "confidence_score": 1.0, "source": "meal_plans_to_response", "target": "meal_plans_regenerate" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meal_plans.py", "source_location": "L65", "weight": 1.0, "_src": "meal_plans_generate", "_tgt": "generate_generate_meal_plan", "source": "meal_plans_generate", "target": "generate_generate_meal_plan" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meal_plans.py", "source_location": "L104", "weight": 1.0, "_src": "meal_plans_regenerate", "_tgt": "generate_generate_meal_plan", "source": "meal_plans_regenerate", "target": "generate_generate_meal_plan" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/admin.py", "source_location": "L14", "weight": 1.0, "_src": "backend_app_api_admin_py", "_tgt": "admin_trigger_scrape", "confidence_score": 1.0, "source": "backend_app_api_admin_py", "target": "admin_trigger_scrape" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/admin.py", "source_location": "L30", "weight": 1.0, "_src": "backend_app_api_admin_py", "_tgt": "admin_get_logs", "confidence_score": 1.0, "source": "backend_app_api_admin_py", "target": "admin_get_logs" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/admin.py", "source_location": "L60", "weight": 1.0, "_src": "backend_app_api_admin_py", "_tgt": "admin_get_log", "confidence_score": 1.0, "source": "backend_app_api_admin_py", "target": "admin_get_log" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/admin.py", "source_location": "L78", "weight": 1.0, "_src": "backend_app_api_admin_py", "_tgt": "admin_get_email_logs", "confidence_score": 1.0, "source": "backend_app_api_admin_py", "target": "admin_get_email_logs" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/admin.py", "source_location": "L107", "weight": 1.0, "_src": "backend_app_api_admin_py", "_tgt": "admin_get_all_meal_plans", "confidence_score": 1.0, "source": "backend_app_api_admin_py", "target": "admin_get_all_meal_plans" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/admin.py", "source_location": "L134", "weight": 1.0, "_src": "backend_app_api_admin_py", "_tgt": "admin_test_email", "confidence_score": 1.0, "source": "backend_app_api_admin_py", "target": "admin_test_email" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/admin.py", "source_location": "L171", "weight": 1.0, "_src": "backend_app_api_admin_py", "_tgt": "admin_get_stats", "confidence_score": 1.0, "source": "backend_app_api_admin_py", "target": "admin_get_stats" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/admin.py", "source_location": "L20", "weight": 1.0, "_src": "admin_trigger_scrape", "_tgt": "scraper_service_enqueue_scrape", "source": "admin_trigger_scrape", "target": "scraper_service_enqueue_scrape" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/admin.py", "source_location": "L141", "weight": 1.0, "_src": "admin_test_email", "_tgt": "email_get_email_backend", "source": "admin_test_email", "target": "email_get_email_backend" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/admin.py", "source_location": "L142", "weight": 1.0, "_src": "admin_test_email", "_tgt": "email_sendgridemailbackend_send", "source": "admin_test_email", "target": "email_sendgridemailbackend_send" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/feedback.py", "source_location": "L17", "weight": 1.0, "_src": "backend_app_api_feedback_py", "_tgt": "feedback_get_feedback", "confidence_score": 1.0, "source": "backend_app_api_feedback_py", "target": "feedback_get_feedback" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/feedback.py", "source_location": "L39", "weight": 1.0, "_src": "backend_app_api_feedback_py", "_tgt": "feedback_create_feedback", "confidence_score": 1.0, "source": "backend_app_api_feedback_py", "target": "feedback_create_feedback" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/feedback.py", "source_location": "L22", "weight": 1.0, "_src": "feedback_rationale_22", "_tgt": "feedback_get_feedback", "confidence_score": 1.0, "source": "feedback_get_feedback", "target": "feedback_rationale_22" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/feedback.py", "source_location": "L44", "weight": 1.0, "_src": "feedback_rationale_44", "_tgt": "feedback_create_feedback", "confidence_score": 1.0, "source": "feedback_create_feedback", "target": "feedback_rationale_44" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L30", "weight": 1.0, "_src": "backend_app_api_meals_py", "_tgt": "meals_get_planned_meals", "confidence_score": 1.0, "source": "backend_app_api_meals_py", "target": "meals_get_planned_meals" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L46", "weight": 1.0, "_src": "backend_app_api_meals_py", "_tgt": "meals_create_meal_plan", "confidence_score": 1.0, "source": "backend_app_api_meals_py", "target": "meals_create_meal_plan" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L85", "weight": 1.0, "_src": "backend_app_api_meals_py", "_tgt": "meals_get_meal_plan", "confidence_score": 1.0, "source": "backend_app_api_meals_py", "target": "meals_get_meal_plan" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L93", "weight": 1.0, "_src": "backend_app_api_meals_py", "_tgt": "meals_lock_meal_plan", "confidence_score": 1.0, "source": "backend_app_api_meals_py", "target": "meals_lock_meal_plan" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L109", "weight": 1.0, "_src": "backend_app_api_meals_py", "_tgt": "meals_votesubmission", "confidence_score": 1.0, "source": "backend_app_api_meals_py", "target": "meals_votesubmission" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L119", "weight": 1.0, "_src": "backend_app_api_meals_py", "_tgt": "meals_get_vote_page", "confidence_score": 1.0, "source": "backend_app_api_meals_py", "target": "meals_get_vote_page" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L251", "weight": 1.0, "_src": "backend_app_api_meals_py", "_tgt": "meals_submit_vote", "confidence_score": 1.0, "source": "backend_app_api_meals_py", "target": "meals_submit_vote" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L301", "weight": 1.0, "_src": "backend_app_api_meals_py", "_tgt": "meals_get_meal_item", "confidence_score": 1.0, "source": "backend_app_api_meals_py", "target": "meals_get_meal_item" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L323", "weight": 1.0, "_src": "backend_app_api_meals_py", "_tgt": "meals_swap_meal_item", "confidence_score": 1.0, "source": "backend_app_api_meals_py", "target": "meals_swap_meal_item" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L342", "weight": 1.0, "_src": "backend_app_api_meals_py", "_tgt": "meals_approve_meal_item", "confidence_score": 1.0, "source": "backend_app_api_meals_py", "target": "meals_approve_meal_item" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L353", "weight": 1.0, "_src": "backend_app_api_meals_py", "_tgt": "meals_deny_meal_item", "confidence_score": 1.0, "source": "backend_app_api_meals_py", "target": "meals_deny_meal_item" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L364", "weight": 1.0, "_src": "backend_app_api_meals_py", "_tgt": "meals_generate_single_item", "confidence_score": 1.0, "source": "backend_app_api_meals_py", "target": "meals_generate_single_item" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L413", "weight": 1.0, "_src": "backend_app_api_meals_py", "_tgt": "meals_move_meal_item", "confidence_score": 1.0, "source": "backend_app_api_meals_py", "target": "meals_move_meal_item" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L110", "weight": 1.0, "_src": "meals_rationale_110", "_tgt": "meals_votesubmission", "confidence_score": 1.0, "source": "meals_votesubmission", "target": "meals_rationale_110" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L124", "weight": 1.0, "_src": "meals_rationale_124", "_tgt": "meals_get_vote_page", "confidence_score": 1.0, "source": "meals_get_vote_page", "target": "meals_rationale_124" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meals.py", "source_location": "L129", "weight": 1.0, "_src": "meals_get_vote_page", "_tgt": "approval_verify_token", "source": "meals_get_vote_page", "target": "approval_verify_token" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L257", "weight": 1.0, "_src": "meals_rationale_257", "_tgt": "meals_submit_vote", "confidence_score": 1.0, "source": "meals_submit_vote", "target": "meals_rationale_257" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/api/meals.py", "source_location": "L263", "weight": 1.0, "_src": "meals_submit_vote", "_tgt": "approval_consume_token", "source": "meals_submit_vote", "target": "approval_consume_token" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L343", "weight": 1.0, "_src": "meals_rationale_343", "_tgt": "meals_approve_meal_item", "confidence_score": 1.0, "source": "meals_approve_meal_item", "target": "meals_rationale_343" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L354", "weight": 1.0, "_src": "meals_rationale_354", "_tgt": "meals_deny_meal_item", "confidence_score": 1.0, "source": "meals_deny_meal_item", "target": "meals_rationale_354" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L370", "weight": 1.0, "_src": "meals_rationale_370", "_tgt": "meals_generate_single_item", "confidence_score": 1.0, "source": "meals_generate_single_item", "target": "meals_rationale_370" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/api/meals.py", "source_location": "L419", "weight": 1.0, "_src": "meals_rationale_419", "_tgt": "meals_move_meal_item", "confidence_score": 1.0, "source": "meals_move_meal_item", "target": "meals_rationale_419" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/orchestrate.py", "source_location": "L15", "weight": 1.0, "_src": "backend_app_api_orchestrate_py", "_tgt": "orchestrate_orchestrate_status", "confidence_score": 1.0, "source": "backend_app_api_orchestrate_py", "target": "orchestrate_orchestrate_status" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/orchestrate.py", "source_location": "L41", "weight": 1.0, "_src": "backend_app_api_orchestrate_py", "_tgt": "orchestrate_orchestrate_run_week", "confidence_score": 1.0, "source": "backend_app_api_orchestrate_py", "target": "orchestrate_orchestrate_run_week" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/api/orchestrate.py", "source_location": "L51", "weight": 1.0, "_src": "backend_app_api_orchestrate_py", "_tgt": "orchestrate_orchestrate_step", "confidence_score": 1.0, "source": "backend_app_api_orchestrate_py", "target": "orchestrate_orchestrate_step" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L33", "weight": 1.0, "_src": "backend_app_services_approval_py", "_tgt": "approval_serializer", "confidence_score": 1.0, "source": "backend_app_services_approval_py", "target": "approval_serializer" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L37", "weight": 1.0, "_src": "backend_app_services_approval_py", "_tgt": "approval_issue_token", "confidence_score": 1.0, "source": "backend_app_services_approval_py", "target": "approval_issue_token" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L45", "weight": 1.0, "_src": "backend_app_services_approval_py", "_tgt": "approval_verify_token", "confidence_score": 1.0, "source": "backend_app_services_approval_py", "target": "approval_verify_token" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L57", "weight": 1.0, "_src": "backend_app_services_approval_py", "_tgt": "approval_consume_token", "confidence_score": 1.0, "source": "backend_app_services_approval_py", "target": "approval_consume_token" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L1", "weight": 1.0, "_src": "approval_rationale_1", "_tgt": "backend_app_services_approval_py", "confidence_score": 1.0, "source": "backend_app_services_approval_py", "target": "approval_rationale_1" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L42", "weight": 1.0, "_src": "approval_issue_token", "_tgt": "approval_serializer", "confidence_score": 1.0, "source": "approval_serializer", "target": "approval_issue_token" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L47", "weight": 1.0, "_src": "approval_verify_token", "_tgt": "approval_serializer", "confidence_score": 1.0, "source": "approval_serializer", "target": "approval_verify_token" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L198", "weight": 1.0, "_src": "steps_step_email", "_tgt": "approval_issue_token", "source": "approval_issue_token", "target": "steps_step_email" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L523", "weight": 1.0, "_src": "steps_step_reminder", "_tgt": "approval_issue_token", "source": "approval_issue_token", "target": "steps_step_reminder" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L26", "weight": 1.0, "_src": "test_approval_test_issue_and_verify_token_roundtrip", "_tgt": "approval_issue_token", "source": "approval_issue_token", "target": "test_approval_test_issue_and_verify_token_roundtrip" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L35", "weight": 1.0, "_src": "test_approval_test_verify_rejects_tampered_token", "_tgt": "approval_issue_token", "source": "approval_issue_token", "target": "test_approval_test_verify_rejects_tampered_token" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L52", "weight": 1.0, "_src": "test_approval_test_verify_rejects_expired_token", "_tgt": "approval_issue_token", "source": "approval_issue_token", "target": "test_approval_test_verify_rejects_expired_token" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L164", "weight": 1.0, "_src": "test_approval_test_consume_token_single_use", "_tgt": "approval_issue_token", "source": "approval_issue_token", "target": "test_approval_test_consume_token_single_use" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L189", "weight": 1.0, "_src": "test_approval_test_vote_get_renders_html", "_tgt": "approval_issue_token", "source": "approval_issue_token", "target": "test_approval_test_vote_get_renders_html" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L216", "weight": 1.0, "_src": "test_approval_test_vote_post_records_and_decides", "_tgt": "approval_issue_token", "source": "approval_issue_token", "target": "test_approval_test_vote_post_records_and_decides" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/send_test_approval.py", "source_location": "L134", "weight": 1.0, "_src": "send_test_approval_main", "_tgt": "approval_issue_token", "source": "approval_issue_token", "target": "send_test_approval_main" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L68", "weight": 1.0, "_src": "approval_consume_token", "_tgt": "approval_verify_token", "confidence_score": 1.0, "source": "approval_verify_token", "target": "approval_consume_token" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L27", "weight": 1.0, "_src": "test_approval_test_issue_and_verify_token_roundtrip", "_tgt": "approval_verify_token", "source": "approval_verify_token", "target": "test_approval_test_issue_and_verify_token_roundtrip" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L38", "weight": 1.0, "_src": "test_approval_test_verify_rejects_tampered_token", "_tgt": "approval_verify_token", "source": "approval_verify_token", "target": "test_approval_test_verify_rejects_tampered_token" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L66", "weight": 1.0, "_src": "test_approval_test_verify_rejects_expired_token", "_tgt": "approval_verify_token", "source": "approval_verify_token", "target": "test_approval_test_verify_rejects_expired_token" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/approval.py", "source_location": "L63", "weight": 1.0, "_src": "approval_rationale_63", "_tgt": "approval_consume_token", "confidence_score": 1.0, "source": "approval_consume_token", "target": "approval_rationale_63" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_approval.py", "source_location": "L167", "weight": 1.0, "_src": "test_approval_test_consume_token_single_use", "_tgt": "approval_consume_token", "source": "approval_consume_token", "target": "test_approval_test_consume_token_single_use" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L28", "weight": 1.0, "_src": "backend_app_services_swiftly_auth_py", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 1.0, "source": "backend_app_services_swiftly_auth_py", "target": "swiftly_auth_swiftlyauthminterror" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L51", "weight": 1.0, "_src": "backend_app_services_swiftly_auth_py", "_tgt": "swiftly_auth_reset_cache_for_tests", "confidence_score": 1.0, "source": "backend_app_services_swiftly_auth_py", "target": "swiftly_auth_reset_cache_for_tests" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L59", "weight": 1.0, "_src": "backend_app_services_swiftly_auth_py", "_tgt": "swiftly_auth_decode_jwt_payload", "confidence_score": 1.0, "source": "backend_app_services_swiftly_auth_py", "target": "swiftly_auth_decode_jwt_payload" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L72", "weight": 1.0, "_src": "backend_app_services_swiftly_auth_py", "_tgt": "swiftly_auth_fetch_firebase_api_key", "confidence_score": 1.0, "source": "backend_app_services_swiftly_auth_py", "target": "swiftly_auth_fetch_firebase_api_key" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L105", "weight": 1.0, "_src": "backend_app_services_swiftly_auth_py", "_tgt": "swiftly_auth_mint_anonymous_token", "confidence_score": 1.0, "source": "backend_app_services_swiftly_auth_py", "target": "swiftly_auth_mint_anonymous_token" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L160", "weight": 1.0, "_src": "backend_app_services_swiftly_auth_py", "_tgt": "swiftly_auth_get_token", "confidence_score": 1.0, "source": "backend_app_services_swiftly_auth_py", "target": "swiftly_auth_get_token" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L1", "weight": 1.0, "_src": "swiftly_auth_rationale_1", "_tgt": "backend_app_services_swiftly_auth_py", "confidence_score": 1.0, "source": "backend_app_services_swiftly_auth_py", "target": "swiftly_auth_rationale_1" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L28", "weight": 1.0, "_src": "swiftly_auth_swiftlyauthminterror", "_tgt": "exception", "confidence_score": 1.0, "source": "swiftly_auth_swiftlyauthminterror", "target": "exception" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L62", "weight": 1.0, "_src": "swiftly_auth_decode_jwt_payload", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 1.0, "source": "swiftly_auth_swiftlyauthminterror", "target": "swiftly_auth_decode_jwt_payload" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L83", "weight": 1.0, "_src": "swiftly_auth_fetch_firebase_api_key", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 1.0, "source": "swiftly_auth_swiftlyauthminterror", "target": "swiftly_auth_fetch_firebase_api_key" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L127", "weight": 1.0, "_src": "swiftly_auth_mint_anonymous_token", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 1.0, "source": "swiftly_auth_swiftlyauthminterror", "target": "swiftly_auth_mint_anonymous_token" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L29", "weight": 1.0, "_src": "swiftly_auth_rationale_29", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 1.0, "source": "swiftly_auth_swiftlyauthminterror", "target": "swiftly_auth_rationale_29" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L41", "weight": 0.8, "_src": "lucky_ca_scraper_swiftlyautherror", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "lucky_ca_scraper_swiftlyautherror" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L41", "weight": 0.8, "_src": "lucky_ca_scraper_luckycaliforniascraper", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "lucky_ca_scraper_luckycaliforniascraper" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L41", "weight": 0.8, "_src": "lucky_ca_scraper_rationale_1", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "lucky_ca_scraper_rationale_1" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L41", "weight": 0.8, "_src": "lucky_ca_scraper_rationale_50", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "lucky_ca_scraper_rationale_50" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L41", "weight": 0.8, "_src": "lucky_ca_scraper_rationale_68", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "lucky_ca_scraper_rationale_68" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L41", "weight": 0.8, "_src": "lucky_ca_scraper_rationale_139", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "lucky_ca_scraper_rationale_139" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L41", "weight": 0.8, "_src": "lucky_ca_scraper_rationale_158", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "lucky_ca_scraper_rationale_158" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L41", "weight": 0.8, "_src": "lucky_ca_scraper_rationale_180", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "lucky_ca_scraper_rationale_180" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L41", "weight": 0.8, "_src": "lucky_ca_scraper_rationale_192", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "lucky_ca_scraper_rationale_192" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L41", "weight": 0.8, "_src": "lucky_ca_scraper_rationale_209", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "lucky_ca_scraper_rationale_209" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L41", "weight": 0.8, "_src": "lucky_ca_scraper_rationale_227", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "lucky_ca_scraper_rationale_227" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L41", "weight": 0.8, "_src": "lucky_ca_scraper_rationale_247", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "lucky_ca_scraper_rationale_247" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L41", "weight": 0.8, "_src": "lucky_ca_scraper_rationale_298", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "lucky_ca_scraper_rationale_298" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L41", "weight": 0.8, "_src": "lucky_ca_scraper_rationale_318", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "lucky_ca_scraper_rationale_318" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L24", "weight": 0.8, "_src": "test_swiftly_auth_rationale_1", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "test_swiftly_auth_rationale_1" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L24", "weight": 0.8, "_src": "test_swiftly_auth_rationale_72", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "test_swiftly_auth_rationale_72" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L24", "weight": 0.8, "_src": "test_swiftly_auth_rationale_100", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "test_swiftly_auth_rationale_100" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L24", "weight": 0.8, "_src": "test_swiftly_auth_rationale_119", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "test_swiftly_auth_rationale_119" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L24", "weight": 0.8, "_src": "test_swiftly_auth_rationale_141", "_tgt": "swiftly_auth_swiftlyauthminterror", "confidence_score": 0.5, "source": "swiftly_auth_swiftlyauthminterror", "target": "test_swiftly_auth_rationale_141" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L49", "weight": 1.0, "_src": "lucky_ca_scraper_swiftlyautherror", "_tgt": "exception", "confidence_score": 1.0, "source": "exception", "target": "lucky_ca_scraper_swiftlyautherror" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/scraper_service.py", "source_location": "L96", "weight": 1.0, "_src": "scraper_service_run_scrape_in_background", "_tgt": "exception", "source": "exception", "target": "scraper_service_run_scrape_in_background" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/alerts.py", "source_location": "L21", "weight": 1.0, "_src": "alerts_send_admin_alert", "_tgt": "exception", "source": "exception", "target": "alerts_send_admin_alert" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L77", "weight": 1.0, "_src": "runner_run_step", "_tgt": "exception", "source": "exception", "target": "runner_run_step" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L52", "weight": 1.0, "_src": "swiftly_auth_rationale_52", "_tgt": "swiftly_auth_reset_cache_for_tests", "confidence_score": 1.0, "source": "swiftly_auth_reset_cache_for_tests", "target": "swiftly_auth_rationale_52" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L35", "weight": 1.0, "_src": "test_swiftly_auth_clear_cache", "_tgt": "swiftly_auth_reset_cache_for_tests", "source": "swiftly_auth_reset_cache_for_tests", "target": "test_swiftly_auth_clear_cache" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L144", "weight": 1.0, "_src": "swiftly_auth_mint_anonymous_token", "_tgt": "swiftly_auth_decode_jwt_payload", "confidence_score": 1.0, "source": "swiftly_auth_decode_jwt_payload", "target": "swiftly_auth_mint_anonymous_token" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L111", "weight": 1.0, "_src": "swiftly_auth_mint_anonymous_token", "_tgt": "swiftly_auth_fetch_firebase_api_key", "confidence_score": 1.0, "source": "swiftly_auth_fetch_firebase_api_key", "target": "swiftly_auth_mint_anonymous_token" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L171", "weight": 1.0, "_src": "swiftly_auth_get_token", "_tgt": "swiftly_auth_mint_anonymous_token", "confidence_score": 1.0, "source": "swiftly_auth_mint_anonymous_token", "target": "swiftly_auth_get_token" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L106", "weight": 1.0, "_src": "swiftly_auth_rationale_106", "_tgt": "swiftly_auth_mint_anonymous_token", "confidence_score": 1.0, "source": "swiftly_auth_mint_anonymous_token", "target": "swiftly_auth_rationale_106" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/swiftly_auth.py", "source_location": "L161", "weight": 1.0, "_src": "swiftly_auth_rationale_161", "_tgt": "swiftly_auth_get_token", "confidence_score": 1.0, "source": "swiftly_auth_get_token", "target": "swiftly_auth_rationale_161" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L83", "weight": 1.0, "_src": "test_swiftly_auth_test_get_token_mints_fresh_when_cache_empty", "_tgt": "swiftly_auth_get_token", "source": "swiftly_auth_get_token", "target": "test_swiftly_auth_test_get_token_mints_fresh_when_cache_empty" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L111", "weight": 1.0, "_src": "test_swiftly_auth_test_get_token_returns_cached_without_reminting", "_tgt": "swiftly_auth_get_token", "source": "swiftly_auth_get_token", "target": "test_swiftly_auth_test_get_token_returns_cached_without_reminting" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L134", "weight": 1.0, "_src": "test_swiftly_auth_test_get_token_remints_when_cached_token_near_expiry", "_tgt": "swiftly_auth_get_token", "source": "swiftly_auth_get_token", "target": "test_swiftly_auth_test_get_token_remints_when_cached_token_near_expiry" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L150", "weight": 1.0, "_src": "test_swiftly_auth_test_mint_raises_on_firebase_non_200", "_tgt": "swiftly_auth_get_token", "source": "swiftly_auth_get_token", "target": "test_swiftly_auth_test_mint_raises_on_firebase_non_200" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/email.py", "source_location": "L29", "weight": 1.0, "_src": "backend_app_services_email_py", "_tgt": "email_emailbackend", "confidence_score": 1.0, "source": "backend_app_services_email_py", "target": "email_emailbackend" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/email.py", "source_location": "L40", "weight": 1.0, "_src": "backend_app_services_email_py", "_tgt": "email_consoleemailbackend", "confidence_score": 1.0, "source": "backend_app_services_email_py", "target": "email_consoleemailbackend" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/email.py", "source_location": "L70", "weight": 1.0, "_src": "backend_app_services_email_py", "_tgt": "email_sendgridemailbackend", "confidence_score": 1.0, "source": "backend_app_services_email_py", "target": "email_sendgridemailbackend" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/email.py", "source_location": "L98", "weight": 1.0, "_src": "backend_app_services_email_py", "_tgt": "email_get_email_backend", "confidence_score": 1.0, "source": "backend_app_services_email_py", "target": "email_get_email_backend" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/email.py", "source_location": "L1", "weight": 1.0, "_src": "email_rationale_1", "_tgt": "backend_app_services_email_py", "confidence_score": 1.0, "source": "backend_app_services_email_py", "target": "email_rationale_1" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/services/email.py", "source_location": "L29", "weight": 1.0, "_src": "email_emailbackend", "_tgt": "protocol", "confidence_score": 1.0, "source": "email_emailbackend", "target": "protocol" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/services/email.py", "source_location": "L30", "weight": 1.0, "_src": "email_emailbackend", "_tgt": "email_emailbackend_send", "confidence_score": 1.0, "source": "email_emailbackend", "target": "email_emailbackend_send" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/services/email.py", "source_location": "L46", "weight": 1.0, "_src": "email_consoleemailbackend", "_tgt": "email_consoleemailbackend_send", "confidence_score": 1.0, "source": "email_consoleemailbackend", "target": "email_consoleemailbackend_send" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/email.py", "source_location": "L102", "weight": 1.0, "_src": "email_get_email_backend", "_tgt": "email_consoleemailbackend", "confidence_score": 1.0, "source": "email_consoleemailbackend", "target": "email_get_email_backend" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/email.py", "source_location": "L41", "weight": 1.0, "_src": "email_rationale_41", "_tgt": "email_consoleemailbackend", "confidence_score": 1.0, "source": "email_consoleemailbackend", "target": "email_rationale_41" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/services/email.py", "source_location": "L71", "weight": 1.0, "_src": "email_sendgridemailbackend", "_tgt": "email_sendgridemailbackend_init", "confidence_score": 1.0, "source": "email_sendgridemailbackend", "target": "email_sendgridemailbackend_init" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/services/email.py", "source_location": "L76", "weight": 1.0, "_src": "email_sendgridemailbackend", "_tgt": "email_sendgridemailbackend_send", "confidence_score": 1.0, "source": "email_sendgridemailbackend", "target": "email_sendgridemailbackend_send" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/email.py", "source_location": "L101", "weight": 1.0, "_src": "email_get_email_backend", "_tgt": "email_sendgridemailbackend", "confidence_score": 1.0, "source": "email_sendgridemailbackend", "target": "email_get_email_backend" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_email_backend.py", "source_location": "L37", "weight": 0.8, "_src": "test_email_backend_rationale_1", "_tgt": "email_sendgridemailbackend", "confidence_score": 0.5, "source": "email_sendgridemailbackend", "target": "test_email_backend_rationale_1" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_email_backend.py", "source_location": "L20", "weight": 1.0, "_src": "test_email_backend_test_sendgrid_send_calls_api", "_tgt": "email_sendgridemailbackend", "source": "email_sendgridemailbackend", "target": "test_email_backend_test_sendgrid_send_calls_api" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_email_backend.py", "source_location": "L38", "weight": 1.0, "_src": "test_email_backend_test_sendgrid_raises_on_4xx", "_tgt": "email_sendgridemailbackend", "source": "email_sendgridemailbackend", "target": "test_email_backend_test_sendgrid_raises_on_4xx" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/alerts.py", "source_location": "L14", "weight": 1.0, "_src": "alerts_send_admin_alert", "_tgt": "email_sendgridemailbackend_send", "source": "email_sendgridemailbackend_send", "target": "alerts_send_admin_alert" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L286", "weight": 1.0, "_src": "steps_step_email", "_tgt": "email_sendgridemailbackend_send", "source": "email_sendgridemailbackend_send", "target": "steps_step_email" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L447", "weight": 1.0, "_src": "steps_step_finalize", "_tgt": "email_sendgridemailbackend_send", "source": "email_sendgridemailbackend_send", "target": "steps_step_finalize" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L540", "weight": 1.0, "_src": "steps_step_reminder", "_tgt": "email_sendgridemailbackend_send", "source": "email_sendgridemailbackend_send", "target": "steps_step_reminder" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_email_backend.py", "source_location": "L21", "weight": 1.0, "_src": "test_email_backend_test_sendgrid_send_calls_api", "_tgt": "email_sendgridemailbackend_send", "source": "email_sendgridemailbackend_send", "target": "test_email_backend_test_sendgrid_send_calls_api" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_email_backend.py", "source_location": "L40", "weight": 1.0, "_src": "test_email_backend_test_sendgrid_raises_on_4xx", "_tgt": "email_sendgridemailbackend_send", "source": "email_sendgridemailbackend_send", "target": "test_email_backend_test_sendgrid_raises_on_4xx" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/send_test_approval.py", "source_location": "L146", "weight": 1.0, "_src": "send_test_approval_main", "_tgt": "email_sendgridemailbackend_send", "source": "email_sendgridemailbackend_send", "target": "send_test_approval_main" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/alerts.py", "source_location": "L14", "weight": 1.0, "_src": "alerts_send_admin_alert", "_tgt": "email_get_email_backend", "source": "email_get_email_backend", "target": "alerts_send_admin_alert" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L192", "weight": 1.0, "_src": "steps_step_email", "_tgt": "email_get_email_backend", "source": "email_get_email_backend", "target": "steps_step_email" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L445", "weight": 1.0, "_src": "steps_step_finalize", "_tgt": "email_get_email_backend", "source": "email_get_email_backend", "target": "steps_step_finalize" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L501", "weight": 1.0, "_src": "steps_step_reminder", "_tgt": "email_get_email_backend", "source": "email_get_email_backend", "target": "steps_step_reminder" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/send_test_approval.py", "source_location": "L138", "weight": 1.0, "_src": "send_test_approval_main", "_tgt": "email_get_email_backend", "source": "email_get_email_backend", "target": "send_test_approval_main" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/matcher.py", "source_location": "L42", "weight": 1.0, "_src": "backend_app_services_matcher_py", "_tgt": "matcher_singularize", "confidence_score": 1.0, "source": "backend_app_services_matcher_py", "target": "matcher_singularize" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/matcher.py", "source_location": "L87", "weight": 1.0, "_src": "backend_app_services_matcher_py", "_tgt": "matcher_matchresult", "confidence_score": 1.0, "source": "backend_app_services_matcher_py", "target": "matcher_matchresult" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/matcher.py", "source_location": "L93", "weight": 1.0, "_src": "backend_app_services_matcher_py", "_tgt": "matcher_sig_words", "confidence_score": 1.0, "source": "backend_app_services_matcher_py", "target": "matcher_sig_words" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/matcher.py", "source_location": "L103", "weight": 1.0, "_src": "backend_app_services_matcher_py", "_tgt": "matcher_run_match_job", "confidence_score": 1.0, "source": "backend_app_services_matcher_py", "target": "matcher_run_match_job" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/matcher.py", "source_location": "L1", "weight": 1.0, "_src": "matcher_rationale_1", "_tgt": "backend_app_services_matcher_py", "confidence_score": 1.0, "source": "backend_app_services_matcher_py", "target": "matcher_rationale_1" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/matcher.py", "source_location": "L97", "weight": 1.0, "_src": "matcher_sig_words", "_tgt": "matcher_singularize", "confidence_score": 1.0, "source": "matcher_singularize", "target": "matcher_sig_words" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/matcher.py", "source_location": "L43", "weight": 1.0, "_src": "matcher_rationale_43", "_tgt": "matcher_singularize", "confidence_score": 1.0, "source": "matcher_singularize", "target": "matcher_rationale_43" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/matcher.py", "source_location": "L135", "weight": 1.0, "_src": "matcher_run_match_job", "_tgt": "matcher_sig_words", "confidence_score": 1.0, "source": "matcher_sig_words", "target": "matcher_run_match_job" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/matcher.py", "source_location": "L94", "weight": 1.0, "_src": "matcher_rationale_94", "_tgt": "matcher_sig_words", "confidence_score": 1.0, "source": "matcher_sig_words", "target": "matcher_rationale_94" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/llm_matcher.py", "source_location": "L50", "weight": 1.0, "_src": "llm_matcher_get_candidates", "_tgt": "matcher_sig_words", "source": "matcher_sig_words", "target": "llm_matcher_get_candidates" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/matcher.py", "source_location": "L109", "weight": 1.0, "_src": "matcher_rationale_109", "_tgt": "matcher_run_match_job", "confidence_score": 1.0, "source": "matcher_run_match_job", "target": "matcher_rationale_109" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/scraper_service.py", "source_location": "L91", "weight": 1.0, "_src": "scraper_service_run_scrape_in_background", "_tgt": "matcher_run_match_job", "source": "matcher_run_match_job", "target": "scraper_service_run_scrape_in_background" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_match_hook.py", "source_location": "L55", "weight": 1.0, "_src": "test_match_hook_test_run_match_job_persists_top_matches", "_tgt": "matcher_run_match_job", "source": "matcher_run_match_job", "target": "test_match_hook_test_run_match_job_persists_top_matches" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L33", "weight": 1.0, "_src": "test_thin_phase4_smoke_test_match_job_runs_against_seeded_data", "_tgt": "matcher_run_match_job", "source": "matcher_run_match_job", "target": "test_thin_phase4_smoke_test_match_job_runs_against_seeded_data" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_generate.py", "source_location": "L64", "weight": 1.0, "_src": "test_planner_generate_test_generate_meal_plan_against_seeded_data", "_tgt": "matcher_run_match_job", "source": "matcher_run_match_job", "target": "test_planner_generate_test_generate_meal_plan_against_seeded_data" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L46", "weight": 1.0, "_src": "test_meal_plan_generate_api_family_with_groceries", "_tgt": "matcher_run_match_job", "source": "matcher_run_match_job", "target": "test_meal_plan_generate_api_family_with_groceries" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L36", "weight": 1.0, "_src": "backend_app_services_scraper_service_py", "_tgt": "scraper_service_enqueue_scrape", "confidence_score": 1.0, "source": "backend_app_services_scraper_service_py", "target": "scraper_service_enqueue_scrape" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L65", "weight": 1.0, "_src": "backend_app_services_scraper_service_py", "_tgt": "scraper_service_run_scrape_in_background", "confidence_score": 1.0, "source": "backend_app_services_scraper_service_py", "target": "scraper_service_run_scrape_in_background" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L123", "weight": 1.0, "_src": "backend_app_services_scraper_service_py", "_tgt": "scraper_service_scraperservice", "confidence_score": 1.0, "source": "backend_app_services_scraper_service_py", "target": "scraper_service_scraperservice" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L1", "weight": 1.0, "_src": "scraper_service_rationale_1", "_tgt": "backend_app_services_scraper_service_py", "confidence_score": 1.0, "source": "backend_app_services_scraper_service_py", "target": "scraper_service_rationale_1" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L43", "weight": 1.0, "_src": "scraper_service_rationale_43", "_tgt": "scraper_service_enqueue_scrape", "confidence_score": 1.0, "source": "scraper_service_enqueue_scrape", "target": "scraper_service_rationale_43" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L81", "weight": 1.0, "_src": "scraper_service_run_scrape_in_background", "_tgt": "scraper_service_scraperservice", "confidence_score": 1.0, "source": "scraper_service_run_scrape_in_background", "target": "scraper_service_scraperservice" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L82", "weight": 1.0, "_src": "scraper_service_run_scrape_in_background", "_tgt": "scraper_service_scraperservice_do_scrape", "confidence_score": 1.0, "source": "scraper_service_run_scrape_in_background", "target": "scraper_service_scraperservice_do_scrape" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L68", "weight": 1.0, "_src": "scraper_service_rationale_68", "_tgt": "scraper_service_run_scrape_in_background", "confidence_score": 1.0, "source": "scraper_service_run_scrape_in_background", "target": "scraper_service_rationale_68" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/scraper_service.py", "source_location": "L93", "weight": 1.0, "_src": "scraper_service_run_scrape_in_background", "_tgt": "llm_matcher_run_llm_match_job", "source": "scraper_service_run_scrape_in_background", "target": "llm_matcher_run_llm_match_job" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L209", "weight": 1.0, "_src": "test_swiftly_api_test_background_runner_writes_failed_with_token_message", "_tgt": "scraper_service_run_scrape_in_background", "source": "scraper_service_run_scrape_in_background", "target": "test_swiftly_api_test_background_runner_writes_failed_with_token_message" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L124", "weight": 1.0, "_src": "scraper_service_scraperservice", "_tgt": "scraper_service_scraperservice_init", "confidence_score": 1.0, "source": "scraper_service_scraperservice", "target": "scraper_service_scraperservice_init" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L127", "weight": 1.0, "_src": "scraper_service_scraperservice", "_tgt": "scraper_service_scraperservice_run_scrape", "confidence_score": 1.0, "source": "scraper_service_scraperservice", "target": "scraper_service_scraperservice_run_scrape" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L180", "weight": 1.0, "_src": "scraper_service_scraperservice", "_tgt": "scraper_service_scraperservice_do_scrape", "confidence_score": 1.0, "source": "scraper_service_scraperservice", "target": "scraper_service_scraperservice_do_scrape" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L200", "weight": 1.0, "_src": "scraper_service_scraperservice", "_tgt": "scraper_service_scraperservice_save_grocery_item", "confidence_score": 1.0, "source": "scraper_service_scraperservice", "target": "scraper_service_scraperservice_save_grocery_item" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L285", "weight": 1.0, "_src": "scraper_service_scraperservice", "_tgt": "scraper_service_scraperservice_get_sale_items", "confidence_score": 1.0, "source": "scraper_service_scraperservice", "target": "scraper_service_scraperservice_get_sale_items" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L25", "weight": 0.8, "_src": "steps_rationale_1", "_tgt": "scraper_service_scraperservice", "confidence_score": 0.5, "source": "scraper_service_scraperservice", "target": "steps_rationale_1" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L39", "weight": 1.0, "_src": "steps_step_scrape", "_tgt": "scraper_service_scraperservice", "source": "scraper_service_scraperservice", "target": "steps_step_scrape" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L147", "weight": 1.0, "_src": "scraper_service_scraperservice_run_scrape", "_tgt": "scraper_service_scraperservice_do_scrape", "confidence_score": 1.0, "source": "scraper_service_scraperservice_run_scrape", "target": "scraper_service_scraperservice_do_scrape" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L130", "weight": 1.0, "_src": "scraper_service_rationale_130", "_tgt": "scraper_service_scraperservice_run_scrape", "confidence_score": 1.0, "source": "scraper_service_scraperservice_run_scrape", "target": "scraper_service_rationale_130" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L42", "weight": 1.0, "_src": "steps_step_scrape", "_tgt": "scraper_service_scraperservice_run_scrape", "source": "scraper_service_scraperservice_run_scrape", "target": "steps_step_scrape" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L194", "weight": 1.0, "_src": "scraper_service_scraperservice_do_scrape", "_tgt": "scraper_service_scraperservice_save_grocery_item", "confidence_score": 1.0, "source": "scraper_service_scraperservice_do_scrape", "target": "scraper_service_scraperservice_save_grocery_item" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/scraper_service.py", "source_location": "L181", "weight": 1.0, "_src": "scraper_service_rationale_181", "_tgt": "scraper_service_scraperservice_do_scrape", "confidence_score": 1.0, "source": "scraper_service_scraperservice_do_scrape", "target": "scraper_service_rationale_181" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/scraper_service.py", "source_location": "L188", "weight": 1.0, "_src": "scraper_service_scraperservice_do_scrape", "_tgt": "lucky_ca_scraper_luckycaliforniascraper", "source": "scraper_service_scraperservice_do_scrape", "target": "lucky_ca_scraper_luckycaliforniascraper" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/scraper_service.py", "source_location": "L192", "weight": 1.0, "_src": "scraper_service_scraperservice_do_scrape", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_fetch_all", "source": "scraper_service_scraperservice_do_scrape", "target": "lucky_ca_scraper_luckycaliforniascraper_fetch_all" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/scraper_service.py", "source_location": "L197", "weight": 1.0, "_src": "scraper_service_scraperservice_do_scrape", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_cleanup", "source": "scraper_service_scraperservice_do_scrape", "target": "lucky_ca_scraper_luckycaliforniascraper_cleanup" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L38", "weight": 1.0, "_src": "backend_app_services_llm_matcher_py", "_tgt": "llm_matcher_get_candidates", "confidence_score": 1.0, "source": "backend_app_services_llm_matcher_py", "target": "llm_matcher_get_candidates" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L86", "weight": 1.0, "_src": "backend_app_services_llm_matcher_py", "_tgt": "llm_matcher_get_unmatched_ingredients", "confidence_score": 1.0, "source": "backend_app_services_llm_matcher_py", "target": "llm_matcher_get_unmatched_ingredients" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L97", "weight": 1.0, "_src": "backend_app_services_llm_matcher_py", "_tgt": "llm_matcher_ask_ollama", "confidence_score": 1.0, "source": "backend_app_services_llm_matcher_py", "target": "llm_matcher_ask_ollama" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L147", "weight": 1.0, "_src": "backend_app_services_llm_matcher_py", "_tgt": "llm_matcher_run_llm_match_job", "confidence_score": 1.0, "source": "backend_app_services_llm_matcher_py", "target": "llm_matcher_run_llm_match_job" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L1", "weight": 1.0, "_src": "llm_matcher_rationale_1", "_tgt": "backend_app_services_llm_matcher_py", "confidence_score": 1.0, "source": "backend_app_services_llm_matcher_py", "target": "llm_matcher_rationale_1" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L180", "weight": 1.0, "_src": "llm_matcher_run_llm_match_job", "_tgt": "llm_matcher_get_candidates", "confidence_score": 1.0, "source": "llm_matcher_get_candidates", "target": "llm_matcher_run_llm_match_job" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L42", "weight": 1.0, "_src": "llm_matcher_rationale_42", "_tgt": "llm_matcher_get_candidates", "confidence_score": 1.0, "source": "llm_matcher_get_candidates", "target": "llm_matcher_rationale_42" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L168", "weight": 1.0, "_src": "llm_matcher_run_llm_match_job", "_tgt": "llm_matcher_get_unmatched_ingredients", "confidence_score": 1.0, "source": "llm_matcher_get_unmatched_ingredients", "target": "llm_matcher_run_llm_match_job" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L87", "weight": 1.0, "_src": "llm_matcher_rationale_87", "_tgt": "llm_matcher_get_unmatched_ingredients", "confidence_score": 1.0, "source": "llm_matcher_get_unmatched_ingredients", "target": "llm_matcher_rationale_87" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L188", "weight": 1.0, "_src": "llm_matcher_run_llm_match_job", "_tgt": "llm_matcher_ask_ollama", "confidence_score": 1.0, "source": "llm_matcher_ask_ollama", "target": "llm_matcher_run_llm_match_job" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L98", "weight": 1.0, "_src": "llm_matcher_rationale_98", "_tgt": "llm_matcher_ask_ollama", "confidence_score": 1.0, "source": "llm_matcher_ask_ollama", "target": "llm_matcher_rationale_98" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/llm_matcher.py", "source_location": "L152", "weight": 1.0, "_src": "llm_matcher_rationale_152", "_tgt": "llm_matcher_run_llm_match_job", "confidence_score": 1.0, "source": "llm_matcher_run_llm_match_job", "target": "llm_matcher_rationale_152" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/config.py", "source_location": "L8", "weight": 1.0, "_src": "backend_app_services_planner_config_py", "_tgt": "config_plannerconfig", "confidence_score": 1.0, "source": "backend_app_services_planner_config_py", "target": "config_plannerconfig" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/config.py", "source_location": "L1", "weight": 1.0, "_src": "config_rationale_1", "_tgt": "backend_app_services_planner_config_py", "confidence_score": 1.0, "source": "backend_app_services_planner_config_py", "target": "config_rationale_1" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/config.py", "source_location": "L35", "weight": 1.0, "_src": "config_plannerconfig", "_tgt": "config_plannerconfig_validate", "confidence_score": 1.0, "source": "config_plannerconfig", "target": "config_plannerconfig_validate" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/filter.py", "source_location": "L8", "weight": 0.8, "_src": "filter_rationale_1", "_tgt": "config_plannerconfig", "confidence_score": 0.5, "source": "config_plannerconfig", "target": "filter_rationale_1" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/score.py", "source_location": "L9", "weight": 0.8, "_src": "score_rationale_1", "_tgt": "config_plannerconfig", "confidence_score": 0.5, "source": "config_plannerconfig", "target": "score_rationale_1" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/score.py", "source_location": "L9", "weight": 0.8, "_src": "score_rationale_60", "_tgt": "config_plannerconfig", "confidence_score": 0.5, "source": "config_plannerconfig", "target": "score_rationale_60" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/select.py", "source_location": "L12", "weight": 0.8, "_src": "select_rationale_1", "_tgt": "config_plannerconfig", "confidence_score": 0.5, "source": "config_plannerconfig", "target": "select_rationale_1" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L24", "weight": 0.8, "_src": "generate_rationale_1", "_tgt": "config_plannerconfig", "confidence_score": 0.5, "source": "config_plannerconfig", "target": "generate_rationale_1" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L24", "weight": 0.8, "_src": "generate_rationale_33", "_tgt": "config_plannerconfig", "confidence_score": 0.5, "source": "config_plannerconfig", "target": "generate_rationale_33" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_planner_select.py", "source_location": "L4", "weight": 0.8, "_src": "test_planner_select_rationale_50", "_tgt": "config_plannerconfig", "confidence_score": 0.5, "source": "config_plannerconfig", "target": "test_planner_select_rationale_50" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L11", "weight": 1.0, "_src": "backend_app_services_planner_types_py", "_tgt": "types_ingredientcost", "confidence_score": 1.0, "source": "backend_app_services_planner_types_py", "target": "types_ingredientcost" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L26", "weight": 1.0, "_src": "backend_app_services_planner_types_py", "_tgt": "types_recipecost", "confidence_score": 1.0, "source": "backend_app_services_planner_types_py", "target": "types_recipecost" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L37", "weight": 1.0, "_src": "backend_app_services_planner_types_py", "_tgt": "types_sale_coverage_pct", "confidence_score": 1.0, "source": "backend_app_services_planner_types_py", "target": "types_sale_coverage_pct" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L43", "weight": 1.0, "_src": "backend_app_services_planner_types_py", "_tgt": "types_pantry_hit_pct", "confidence_score": 1.0, "source": "backend_app_services_planner_types_py", "target": "types_pantry_hit_pct" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L50", "weight": 1.0, "_src": "backend_app_services_planner_types_py", "_tgt": "types_filterresult", "confidence_score": 1.0, "source": "backend_app_services_planner_types_py", "target": "types_filterresult" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L56", "weight": 1.0, "_src": "backend_app_services_planner_types_py", "_tgt": "types_scoredrecipe", "confidence_score": 1.0, "source": "backend_app_services_planner_types_py", "target": "types_scoredrecipe" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L66", "weight": 1.0, "_src": "backend_app_services_planner_types_py", "_tgt": "types_generationresult", "confidence_score": 1.0, "source": "backend_app_services_planner_types_py", "target": "types_generationresult" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/types.py", "source_location": "L1", "weight": 1.0, "_src": "types_rationale_1", "_tgt": "backend_app_services_planner_types_py", "confidence_score": 1.0, "source": "backend_app_services_planner_types_py", "target": "types_rationale_1" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/cost.py", "source_location": "L27", "weight": 0.8, "_src": "cost_rationale_1", "_tgt": "types_ingredientcost", "confidence_score": 0.5, "source": "types_ingredientcost", "target": "cost_rationale_1" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/planner/cost.py", "source_location": "L69", "weight": 1.0, "_src": "cost_compute_recipe_cost", "_tgt": "types_ingredientcost", "source": "types_ingredientcost", "target": "cost_compute_recipe_cost" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/cost.py", "source_location": "L27", "weight": 0.8, "_src": "cost_rationale_1", "_tgt": "types_recipecost", "confidence_score": 0.5, "source": "types_recipecost", "target": "cost_rationale_1" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/filter.py", "source_location": "L9", "weight": 0.8, "_src": "filter_rationale_1", "_tgt": "types_recipecost", "confidence_score": 0.5, "source": "types_recipecost", "target": "filter_rationale_1" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/score.py", "source_location": "L10", "weight": 0.8, "_src": "score_rationale_1", "_tgt": "types_recipecost", "confidence_score": 0.5, "source": "types_recipecost", "target": "score_rationale_1" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/score.py", "source_location": "L10", "weight": 0.8, "_src": "score_rationale_60", "_tgt": "types_recipecost", "confidence_score": 0.5, "source": "types_recipecost", "target": "score_rationale_60" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_planner_select.py", "source_location": "L6", "weight": 0.8, "_src": "test_planner_select_rationale_50", "_tgt": "types_recipecost", "confidence_score": 0.5, "source": "types_recipecost", "target": "test_planner_select_rationale_50" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/planner/cost.py", "source_location": "L114", "weight": 1.0, "_src": "cost_compute_recipe_cost", "_tgt": "types_recipecost", "source": "types_recipecost", "target": "cost_compute_recipe_cost" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_filter.py", "source_location": "L36", "weight": 1.0, "_src": "test_planner_filter_cost", "_tgt": "types_recipecost", "source": "types_recipecost", "target": "test_planner_filter_cost" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_score.py", "source_location": "L79", "weight": 1.0, "_src": "test_planner_score_test_score_recipes_orders_by_combined_score", "_tgt": "types_recipecost", "source": "types_recipecost", "target": "test_planner_score_test_score_recipes_orders_by_combined_score" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_select.py", "source_location": "L18", "weight": 1.0, "_src": "test_planner_select_mk", "_tgt": "types_recipecost", "source": "types_recipecost", "target": "test_planner_select_mk" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/filter.py", "source_location": "L9", "weight": 0.8, "_src": "filter_rationale_1", "_tgt": "types_filterresult", "confidence_score": 0.5, "source": "types_filterresult", "target": "filter_rationale_1" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/planner/filter.py", "source_location": "L88", "weight": 1.0, "_src": "filter_filter_recipes", "_tgt": "types_filterresult", "source": "types_filterresult", "target": "filter_filter_recipes" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/score.py", "source_location": "L10", "weight": 0.8, "_src": "score_rationale_1", "_tgt": "types_scoredrecipe", "confidence_score": 0.5, "source": "types_scoredrecipe", "target": "score_rationale_1" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/score.py", "source_location": "L10", "weight": 0.8, "_src": "score_rationale_60", "_tgt": "types_scoredrecipe", "confidence_score": 0.5, "source": "types_scoredrecipe", "target": "score_rationale_60" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/select.py", "source_location": "L13", "weight": 0.8, "_src": "select_rationale_1", "_tgt": "types_scoredrecipe", "confidence_score": 0.5, "source": "types_scoredrecipe", "target": "select_rationale_1" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_planner_select.py", "source_location": "L6", "weight": 0.8, "_src": "test_planner_select_rationale_50", "_tgt": "types_scoredrecipe", "confidence_score": 0.5, "source": "types_scoredrecipe", "target": "test_planner_select_rationale_50" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/planner/score.py", "source_location": "L99", "weight": 1.0, "_src": "score_score_recipes", "_tgt": "types_scoredrecipe", "source": "types_scoredrecipe", "target": "score_score_recipes" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_select.py", "source_location": "L14", "weight": 1.0, "_src": "test_planner_select_mk", "_tgt": "types_scoredrecipe", "source": "types_scoredrecipe", "target": "test_planner_select_mk" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L29", "weight": 0.8, "_src": "generate_rationale_1", "_tgt": "types_generationresult", "confidence_score": 0.5, "source": "types_generationresult", "target": "generate_rationale_1" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L29", "weight": 0.8, "_src": "generate_rationale_33", "_tgt": "types_generationresult", "confidence_score": 0.5, "source": "types_generationresult", "target": "generate_rationale_33" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L240", "weight": 0.8, "_src": "test_orchestrator_rationale_1", "_tgt": "types_generationresult", "confidence_score": 0.5, "source": "types_generationresult", "target": "test_orchestrator_rationale_1" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/planner/generate.py", "source_location": "L200", "weight": 1.0, "_src": "generate_generate_meal_plan", "_tgt": "types_generationresult", "source": "types_generationresult", "target": "generate_generate_meal_plan" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L244", "weight": 1.0, "_src": "test_orchestrator_test_step_generate_creates_plan", "_tgt": "types_generationresult", "source": "types_generationresult", "target": "test_orchestrator_test_step_generate_creates_plan" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/cost.py", "source_location": "L30", "weight": 1.0, "_src": "backend_app_services_planner_cost_py", "_tgt": "cost_decimal", "confidence_score": 1.0, "source": "backend_app_services_planner_cost_py", "target": "cost_decimal" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/cost.py", "source_location": "L36", "weight": 1.0, "_src": "backend_app_services_planner_cost_py", "_tgt": "cost_scale", "confidence_score": 1.0, "source": "backend_app_services_planner_cost_py", "target": "cost_scale" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/cost.py", "source_location": "L40", "weight": 1.0, "_src": "backend_app_services_planner_cost_py", "_tgt": "cost_compute_recipe_cost", "confidence_score": 1.0, "source": "backend_app_services_planner_cost_py", "target": "cost_compute_recipe_cost" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/cost.py", "source_location": "L1", "weight": 1.0, "_src": "cost_rationale_1", "_tgt": "backend_app_services_planner_cost_py", "confidence_score": 1.0, "source": "backend_app_services_planner_cost_py", "target": "cost_rationale_1" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/cost.py", "source_location": "L86", "weight": 1.0, "_src": "cost_compute_recipe_cost", "_tgt": "cost_decimal", "confidence_score": 1.0, "source": "cost_decimal", "target": "cost_compute_recipe_cost" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/cost.py", "source_location": "L89", "weight": 1.0, "_src": "cost_compute_recipe_cost", "_tgt": "cost_scale", "confidence_score": 1.0, "source": "cost_scale", "target": "cost_compute_recipe_cost" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/planner/generate.py", "source_location": "L137", "weight": 1.0, "_src": "generate_generate_meal_plan", "_tgt": "cost_compute_recipe_cost", "source": "cost_compute_recipe_cost", "target": "generate_generate_meal_plan" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_cost.py", "source_location": "L35", "weight": 1.0, "_src": "test_planner_cost_test_compute_recipe_cost_sums_ingredient_costs", "_tgt": "cost_compute_recipe_cost", "source": "cost_compute_recipe_cost", "target": "test_planner_cost_test_compute_recipe_cost_sums_ingredient_costs" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_cost.py", "source_location": "L54", "weight": 1.0, "_src": "test_planner_cost_test_unmatched_ingredient_zero_cost_and_savings", "_tgt": "cost_compute_recipe_cost", "source": "cost_compute_recipe_cost", "target": "test_planner_cost_test_unmatched_ingredient_zero_cost_and_savings" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_cost.py", "source_location": "L73", "weight": 1.0, "_src": "test_planner_cost_test_pantry_hits_counted", "_tgt": "cost_compute_recipe_cost", "source": "cost_compute_recipe_cost", "target": "test_planner_cost_test_pantry_hits_counted" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/filter.py", "source_location": "L12", "weight": 1.0, "_src": "backend_app_services_planner_filter_py", "_tgt": "filter_calorie_band", "confidence_score": 1.0, "source": "backend_app_services_planner_filter_py", "target": "filter_calorie_band" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/filter.py", "source_location": "L17", "weight": 1.0, "_src": "backend_app_services_planner_filter_py", "_tgt": "filter_filter_recipes", "confidence_score": 1.0, "source": "backend_app_services_planner_filter_py", "target": "filter_filter_recipes" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/filter.py", "source_location": "L1", "weight": 1.0, "_src": "filter_rationale_1", "_tgt": "backend_app_services_planner_filter_py", "confidence_score": 1.0, "source": "backend_app_services_planner_filter_py", "target": "filter_rationale_1" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/filter.py", "source_location": "L34", "weight": 1.0, "_src": "filter_filter_recipes", "_tgt": "filter_calorie_band", "confidence_score": 1.0, "source": "filter_calorie_band", "target": "filter_filter_recipes" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/planner/generate.py", "source_location": "L146", "weight": 1.0, "_src": "generate_generate_meal_plan", "_tgt": "filter_filter_recipes", "source": "filter_filter_recipes", "target": "generate_generate_meal_plan" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_filter.py", "source_location": "L54", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_never_suggest_ingredient", "_tgt": "filter_filter_recipes", "source": "filter_filter_recipes", "target": "test_planner_filter_test_filter_blocks_by_never_suggest_ingredient" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_filter.py", "source_location": "L72", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_never_suggest_recipe", "_tgt": "filter_filter_recipes", "source": "filter_filter_recipes", "target": "test_planner_filter_test_filter_blocks_by_never_suggest_recipe" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_filter.py", "source_location": "L90", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_recency", "_tgt": "filter_filter_recipes", "source": "filter_filter_recipes", "target": "test_planner_filter_test_filter_blocks_by_recency" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_filter.py", "source_location": "L107", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_calories", "_tgt": "filter_filter_recipes", "source": "filter_filter_recipes", "target": "test_planner_filter_test_filter_blocks_by_calories" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_filter.py", "source_location": "L125", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_time", "_tgt": "filter_filter_recipes", "source": "filter_filter_recipes", "target": "test_planner_filter_test_filter_blocks_by_time" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_filter.py", "source_location": "L143", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_cost", "_tgt": "filter_filter_recipes", "source": "filter_filter_recipes", "target": "test_planner_filter_test_filter_blocks_by_cost" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_filter.py", "source_location": "L160", "weight": 1.0, "_src": "test_planner_filter_test_filter_passes_when_calorie_target_is_none", "_tgt": "filter_filter_recipes", "source": "filter_filter_recipes", "target": "test_planner_filter_test_filter_passes_when_calorie_target_is_none" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_filter.py", "source_location": "L176", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_recipe_with_null_calories_when_target_set", "_tgt": "filter_filter_recipes", "source": "filter_filter_recipes", "target": "test_planner_filter_test_filter_blocks_recipe_with_null_calories_when_target_set" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L13", "weight": 1.0, "_src": "backend_app_services_planner_score_py", "_tgt": "score_time_bonus", "confidence_score": 1.0, "source": "backend_app_services_planner_score_py", "target": "score_time_bonus" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L23", "weight": 1.0, "_src": "backend_app_services_planner_score_py", "_tgt": "score_recency_bonus", "confidence_score": 1.0, "source": "backend_app_services_planner_score_py", "target": "score_recency_bonus" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L42", "weight": 1.0, "_src": "backend_app_services_planner_score_py", "_tgt": "score_normalize_savings", "confidence_score": 1.0, "source": "backend_app_services_planner_score_py", "target": "score_normalize_savings" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L52", "weight": 1.0, "_src": "backend_app_services_planner_score_py", "_tgt": "score_score_recipes", "confidence_score": 1.0, "source": "backend_app_services_planner_score_py", "target": "score_score_recipes" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L1", "weight": 1.0, "_src": "score_rationale_1", "_tgt": "backend_app_services_planner_score_py", "confidence_score": 1.0, "source": "backend_app_services_planner_score_py", "target": "score_rationale_1" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L75", "weight": 1.0, "_src": "score_score_recipes", "_tgt": "score_time_bonus", "confidence_score": 1.0, "source": "score_time_bonus", "target": "score_score_recipes" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_score.py", "source_location": "L19", "weight": 1.0, "_src": "test_planner_score_test_time_bonus_capped_at_ideal", "_tgt": "score_time_bonus", "source": "score_time_bonus", "target": "test_planner_score_test_time_bonus_capped_at_ideal" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_score.py", "source_location": "L24", "weight": 1.0, "_src": "test_planner_score_test_time_bonus_decays_to_zero_at_full", "_tgt": "score_time_bonus", "source": "score_time_bonus", "target": "test_planner_score_test_time_bonus_decays_to_zero_at_full" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_score.py", "source_location": "L29", "weight": 1.0, "_src": "test_planner_score_test_time_bonus_linear_midpoint", "_tgt": "score_time_bonus", "source": "score_time_bonus", "target": "test_planner_score_test_time_bonus_linear_midpoint" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L76", "weight": 1.0, "_src": "score_score_recipes", "_tgt": "score_recency_bonus", "confidence_score": 1.0, "source": "score_recency_bonus", "target": "score_score_recipes" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_score.py", "source_location": "L35", "weight": 1.0, "_src": "test_planner_score_test_recency_bonus_full_when_long_ago", "_tgt": "score_recency_bonus", "source": "score_recency_bonus", "target": "test_planner_score_test_recency_bonus_full_when_long_ago" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_score.py", "source_location": "L42", "weight": 1.0, "_src": "test_planner_score_test_recency_bonus_zero_when_just_eligible", "_tgt": "score_recency_bonus", "source": "score_recency_bonus", "target": "test_planner_score_test_recency_bonus_zero_when_just_eligible" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_score.py", "source_location": "L46", "weight": 1.0, "_src": "test_planner_score_test_recency_bonus_full_when_never_cooked", "_tgt": "score_recency_bonus", "source": "score_recency_bonus", "target": "test_planner_score_test_recency_bonus_full_when_never_cooked" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L66", "weight": 1.0, "_src": "score_score_recipes", "_tgt": "score_normalize_savings", "confidence_score": 1.0, "source": "score_normalize_savings", "target": "score_score_recipes" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_score.py", "source_location": "L50", "weight": 1.0, "_src": "test_planner_score_test_normalize_savings_minmax", "_tgt": "score_normalize_savings", "source": "score_normalize_savings", "target": "test_planner_score_test_normalize_savings_minmax" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_score.py", "source_location": "L55", "weight": 1.0, "_src": "test_planner_score_test_normalize_savings_uniform_returns_zeros", "_tgt": "score_normalize_savings", "source": "score_normalize_savings", "target": "test_planner_score_test_normalize_savings_uniform_returns_zeros" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/score.py", "source_location": "L60", "weight": 1.0, "_src": "score_rationale_60", "_tgt": "score_score_recipes", "confidence_score": 1.0, "source": "score_score_recipes", "target": "score_rationale_60" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/planner/generate.py", "source_location": "L159", "weight": 1.0, "_src": "generate_generate_meal_plan", "_tgt": "score_score_recipes", "source": "score_score_recipes", "target": "generate_generate_meal_plan" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_score.py", "source_location": "L100", "weight": 1.0, "_src": "test_planner_score_test_score_recipes_orders_by_combined_score", "_tgt": "score_score_recipes", "source": "score_score_recipes", "target": "test_planner_score_test_score_recipes_orders_by_combined_score" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/select.py", "source_location": "L16", "weight": 1.0, "_src": "backend_app_services_planner_select_py", "_tgt": "select_set_diversity_penalty", "confidence_score": 1.0, "source": "backend_app_services_planner_select_py", "target": "select_set_diversity_penalty" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/select.py", "source_location": "L29", "weight": 1.0, "_src": "backend_app_services_planner_select_py", "_tgt": "select_set_score", "confidence_score": 1.0, "source": "backend_app_services_planner_select_py", "target": "select_set_score" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/select.py", "source_location": "L33", "weight": 1.0, "_src": "backend_app_services_planner_select_py", "_tgt": "select_select_set", "confidence_score": 1.0, "source": "backend_app_services_planner_select_py", "target": "select_select_set" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/select.py", "source_location": "L1", "weight": 1.0, "_src": "select_rationale_1", "_tgt": "backend_app_services_planner_select_py", "confidence_score": 1.0, "source": "backend_app_services_planner_select_py", "target": "select_rationale_1" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/select.py", "source_location": "L30", "weight": 1.0, "_src": "select_set_score", "_tgt": "select_set_diversity_penalty", "confidence_score": 1.0, "source": "select_set_diversity_penalty", "target": "select_set_score" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_select.py", "source_location": "L37", "weight": 1.0, "_src": "test_planner_select_test_diversity_penalty_zero_when_all_unique", "_tgt": "select_set_diversity_penalty", "source": "select_set_diversity_penalty", "target": "test_planner_select_test_diversity_penalty_zero_when_all_unique" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_select.py", "source_location": "L45", "weight": 1.0, "_src": "test_planner_select_test_diversity_penalty_three_chickens", "_tgt": "select_set_diversity_penalty", "source": "select_set_diversity_penalty", "target": "test_planner_select_test_diversity_penalty_three_chickens" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/select.py", "source_location": "L41", "weight": 1.0, "_src": "select_select_set", "_tgt": "select_set_score", "confidence_score": 1.0, "source": "select_set_score", "target": "select_select_set" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/planner/generate.py", "source_location": "L166", "weight": 1.0, "_src": "generate_generate_meal_plan", "_tgt": "select_select_set", "source": "select_select_set", "target": "generate_generate_meal_plan" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_select.py", "source_location": "L63", "weight": 1.0, "_src": "test_planner_select_test_select_set_picks_diverse_over_homogeneous", "_tgt": "select_select_set", "source": "select_select_set", "target": "test_planner_select_test_select_set_picks_diverse_over_homogeneous" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_select.py", "source_location": "L71", "weight": 1.0, "_src": "test_planner_select_test_select_set_handles_too_few", "_tgt": "select_select_set", "source": "select_select_set", "target": "test_planner_select_test_select_set_handles_too_few" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_select.py", "source_location": "L76", "weight": 1.0, "_src": "test_planner_select_test_select_set_empty_input", "_tgt": "select_select_set", "source": "select_select_set", "target": "test_planner_select_test_select_set_empty_input" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L32", "weight": 1.0, "_src": "backend_app_services_planner_generate_py", "_tgt": "generate_load_match_index", "confidence_score": 1.0, "source": "backend_app_services_planner_generate_py", "target": "generate_load_match_index" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L55", "weight": 1.0, "_src": "backend_app_services_planner_generate_py", "_tgt": "generate_load_blocklists", "confidence_score": 1.0, "source": "backend_app_services_planner_generate_py", "target": "generate_load_blocklists" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L68", "weight": 1.0, "_src": "backend_app_services_planner_generate_py", "_tgt": "generate_load_pantry", "confidence_score": 1.0, "source": "backend_app_services_planner_generate_py", "target": "generate_load_pantry" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L76", "weight": 1.0, "_src": "backend_app_services_planner_generate_py", "_tgt": "generate_load_last_cooked", "confidence_score": 1.0, "source": "backend_app_services_planner_generate_py", "target": "generate_load_last_cooked" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L92", "weight": 1.0, "_src": "backend_app_services_planner_generate_py", "_tgt": "generate_generate_meal_plan", "confidence_score": 1.0, "source": "backend_app_services_planner_generate_py", "target": "generate_generate_meal_plan" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L1", "weight": 1.0, "_src": "generate_rationale_1", "_tgt": "backend_app_services_planner_generate_py", "confidence_score": 1.0, "source": "backend_app_services_planner_generate_py", "target": "generate_rationale_1" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L131", "weight": 1.0, "_src": "generate_generate_meal_plan", "_tgt": "generate_load_match_index", "confidence_score": 1.0, "source": "generate_load_match_index", "target": "generate_generate_meal_plan" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L33", "weight": 1.0, "_src": "generate_rationale_33", "_tgt": "generate_load_match_index", "confidence_score": 1.0, "source": "generate_load_match_index", "target": "generate_rationale_33" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L133", "weight": 1.0, "_src": "generate_generate_meal_plan", "_tgt": "generate_load_blocklists", "confidence_score": 1.0, "source": "generate_load_blocklists", "target": "generate_generate_meal_plan" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L132", "weight": 1.0, "_src": "generate_generate_meal_plan", "_tgt": "generate_load_pantry", "confidence_score": 1.0, "source": "generate_load_pantry", "target": "generate_generate_meal_plan" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/planner/generate.py", "source_location": "L134", "weight": 1.0, "_src": "generate_generate_meal_plan", "_tgt": "generate_load_last_cooked", "confidence_score": 1.0, "source": "generate_load_last_cooked", "target": "generate_generate_meal_plan" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L73", "weight": 1.0, "_src": "steps_step_generate", "_tgt": "generate_generate_meal_plan", "source": "generate_generate_meal_plan", "target": "steps_step_generate" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_planner_generate.py", "source_location": "L65", "weight": 1.0, "_src": "test_planner_generate_test_generate_meal_plan_against_seeded_data", "_tgt": "generate_generate_meal_plan", "source": "generate_generate_meal_plan", "target": "test_planner_generate_test_generate_meal_plan_against_seeded_data" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/alerts.py", "source_location": "L9", "weight": 1.0, "_src": "backend_app_services_orchestrator_alerts_py", "_tgt": "alerts_send_admin_alert", "confidence_score": 1.0, "source": "backend_app_services_orchestrator_alerts_py", "target": "alerts_send_admin_alert" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L57", "weight": 1.0, "_src": "steps_step_scrape", "_tgt": "alerts_send_admin_alert", "source": "alerts_send_admin_alert", "target": "steps_step_scrape" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L85", "weight": 1.0, "_src": "steps_step_generate", "_tgt": "alerts_send_admin_alert", "source": "alerts_send_admin_alert", "target": "steps_step_generate" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L165", "weight": 1.0, "_src": "test_orchestrator_test_send_admin_alert_noop_when_email_unset", "_tgt": "alerts_send_admin_alert", "source": "alerts_send_admin_alert", "target": "test_orchestrator_test_send_admin_alert_noop_when_email_unset" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L184", "weight": 1.0, "_src": "test_orchestrator_test_send_admin_alert_calls_backend", "_tgt": "alerts_send_admin_alert", "source": "alerts_send_admin_alert", "target": "test_orchestrator_test_send_admin_alert_calls_backend" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L20", "weight": 1.0, "_src": "backend_app_services_orchestrator_runner_py", "_tgt": "runner_current_week_start", "confidence_score": 1.0, "source": "backend_app_services_orchestrator_runner_py", "target": "runner_current_week_start" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L27", "weight": 1.0, "_src": "backend_app_services_orchestrator_runner_py", "_tgt": "runner_get_or_create_run", "confidence_score": 1.0, "source": "backend_app_services_orchestrator_runner_py", "target": "runner_get_or_create_run" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L50", "weight": 1.0, "_src": "backend_app_services_orchestrator_runner_py", "_tgt": "runner_run_step", "confidence_score": 1.0, "source": "backend_app_services_orchestrator_runner_py", "target": "runner_run_step" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L84", "weight": 1.0, "_src": "backend_app_services_orchestrator_runner_py", "_tgt": "runner_run_week", "confidence_score": 1.0, "source": "backend_app_services_orchestrator_runner_py", "target": "runner_run_week" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L1", "weight": 1.0, "_src": "runner_rationale_1", "_tgt": "backend_app_services_orchestrator_runner_py", "confidence_score": 1.0, "source": "backend_app_services_orchestrator_runner_py", "target": "runner_rationale_1" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L65", "weight": 1.0, "_src": "runner_run_step", "_tgt": "runner_current_week_start", "confidence_score": 1.0, "source": "runner_current_week_start", "target": "runner_run_step" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L85", "weight": 1.0, "_src": "runner_run_week", "_tgt": "runner_current_week_start", "confidence_score": 1.0, "source": "runner_current_week_start", "target": "runner_run_week" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L21", "weight": 1.0, "_src": "runner_rationale_21", "_tgt": "runner_current_week_start", "confidence_score": 1.0, "source": "runner_current_week_start", "target": "runner_rationale_21" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L73", "weight": 1.0, "_src": "runner_run_step", "_tgt": "runner_get_or_create_run", "confidence_score": 1.0, "source": "runner_get_or_create_run", "target": "runner_run_step" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/runner.py", "source_location": "L87", "weight": 1.0, "_src": "runner_run_week", "_tgt": "runner_run_step", "confidence_score": 1.0, "source": "runner_run_step", "target": "runner_run_week" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L599", "weight": 1.0, "_src": "test_orchestrator_test_run_step_upserts_weekly_run", "_tgt": "runner_run_step", "source": "runner_run_step", "target": "test_orchestrator_test_run_step_upserts_weekly_run" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L609", "weight": 1.0, "_src": "test_orchestrator_test_run_step_invalid_raises", "_tgt": "runner_run_step", "source": "runner_run_step", "target": "test_orchestrator_test_run_step_invalid_raises" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L623", "weight": 1.0, "_src": "test_orchestrator_test_run_week_calls_all_steps", "_tgt": "runner_run_week", "source": "runner_run_week", "target": "test_orchestrator_test_run_week_calls_all_steps" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L34", "weight": 1.0, "_src": "backend_app_services_orchestrator_steps_py", "_tgt": "steps_step_scrape", "confidence_score": 1.0, "source": "backend_app_services_orchestrator_steps_py", "target": "steps_step_scrape" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L67", "weight": 1.0, "_src": "backend_app_services_orchestrator_steps_py", "_tgt": "steps_step_generate", "confidence_score": 1.0, "source": "backend_app_services_orchestrator_steps_py", "target": "steps_step_generate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L92", "weight": 1.0, "_src": "backend_app_services_orchestrator_steps_py", "_tgt": "steps_step_email", "confidence_score": 1.0, "source": "backend_app_services_orchestrator_steps_py", "target": "steps_step_email" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L297", "weight": 1.0, "_src": "backend_app_services_orchestrator_steps_py", "_tgt": "steps_step_deadline", "confidence_score": 1.0, "source": "backend_app_services_orchestrator_steps_py", "target": "steps_step_deadline" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L335", "weight": 1.0, "_src": "backend_app_services_orchestrator_steps_py", "_tgt": "steps_step_finalize", "confidence_score": 1.0, "source": "backend_app_services_orchestrator_steps_py", "target": "steps_step_finalize" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L460", "weight": 1.0, "_src": "backend_app_services_orchestrator_steps_py", "_tgt": "steps_step_reminder", "confidence_score": 1.0, "source": "backend_app_services_orchestrator_steps_py", "target": "steps_step_reminder" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/services/orchestrator/steps.py", "source_location": "L1", "weight": 1.0, "_src": "steps_rationale_1", "_tgt": "backend_app_services_orchestrator_steps_py", "confidence_score": 1.0, "source": "backend_app_services_orchestrator_steps_py", "target": "steps_rationale_1" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L197", "weight": 1.0, "_src": "test_orchestrator_test_step_scrape_idempotent", "_tgt": "steps_step_scrape", "source": "steps_step_scrape", "target": "test_orchestrator_test_step_scrape_idempotent" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L207", "weight": 1.0, "_src": "test_orchestrator_test_step_scrape_success", "_tgt": "steps_step_scrape", "source": "steps_step_scrape", "target": "test_orchestrator_test_step_scrape_success" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L222", "weight": 1.0, "_src": "test_orchestrator_test_step_scrape_both_fail_marks_stale", "_tgt": "steps_step_scrape", "source": "steps_step_scrape", "target": "test_orchestrator_test_step_scrape_both_fail_marks_stale" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L234", "weight": 1.0, "_src": "test_orchestrator_test_step_generate_idempotent", "_tgt": "steps_step_generate", "source": "steps_step_generate", "target": "test_orchestrator_test_step_generate_idempotent" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L253", "weight": 1.0, "_src": "test_orchestrator_test_step_generate_creates_plan", "_tgt": "steps_step_generate", "source": "steps_step_generate", "target": "test_orchestrator_test_step_generate_creates_plan" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L268", "weight": 1.0, "_src": "test_orchestrator_test_step_generate_records_error_on_failure", "_tgt": "steps_step_generate", "source": "steps_step_generate", "target": "test_orchestrator_test_step_generate_records_error_on_failure" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L279", "weight": 1.0, "_src": "test_orchestrator_test_step_email_idempotent", "_tgt": "steps_step_email", "source": "steps_step_email", "target": "test_orchestrator_test_step_email_idempotent" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L295", "weight": 1.0, "_src": "test_orchestrator_test_step_email_sends_per_member", "_tgt": "steps_step_email", "source": "steps_step_email", "target": "test_orchestrator_test_step_email_sends_per_member" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L315", "weight": 1.0, "_src": "test_orchestrator_test_step_email_stale_banner", "_tgt": "steps_step_email", "source": "steps_step_email", "target": "test_orchestrator_test_step_email_stale_banner" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L336", "weight": 1.0, "_src": "test_orchestrator_test_step_email_escapes_recipe_name", "_tgt": "steps_step_email", "source": "steps_step_email", "target": "test_orchestrator_test_step_email_escapes_recipe_name" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L459", "weight": 1.0, "_src": "test_orchestrator_test_step_deadline_idempotent", "_tgt": "steps_step_deadline", "source": "steps_step_deadline", "target": "test_orchestrator_test_step_deadline_idempotent" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L468", "weight": 1.0, "_src": "test_orchestrator_test_step_deadline_resolves_pending_to_approved", "_tgt": "steps_step_deadline", "source": "steps_step_deadline", "target": "test_orchestrator_test_step_deadline_resolves_pending_to_approved" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L479", "weight": 1.0, "_src": "test_orchestrator_test_step_deadline_resolves_pending_to_denied", "_tgt": "steps_step_deadline", "source": "steps_step_deadline", "target": "test_orchestrator_test_step_deadline_resolves_pending_to_denied" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L535", "weight": 1.0, "_src": "test_orchestrator_test_step_finalize_idempotent", "_tgt": "steps_step_finalize", "source": "steps_step_finalize", "target": "test_orchestrator_test_step_finalize_idempotent" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L551", "weight": 1.0, "_src": "test_orchestrator_test_step_finalize_sends_shopping_list", "_tgt": "steps_step_finalize", "source": "steps_step_finalize", "target": "test_orchestrator_test_step_finalize_sends_shopping_list" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L571", "weight": 1.0, "_src": "test_orchestrator_test_step_finalize_no_approved_sends_empty_message", "_tgt": "steps_step_finalize", "source": "steps_step_finalize", "target": "test_orchestrator_test_step_finalize_no_approved_sends_empty_message" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L348", "weight": 1.0, "_src": "test_orchestrator_test_step_reminder_idempotent", "_tgt": "steps_step_reminder", "source": "steps_step_reminder", "target": "test_orchestrator_test_step_reminder_idempotent" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L364", "weight": 1.0, "_src": "test_orchestrator_test_step_reminder_skips_when_not_emailed", "_tgt": "steps_step_reminder", "source": "steps_step_reminder", "target": "test_orchestrator_test_step_reminder_skips_when_not_emailed" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L384", "weight": 1.0, "_src": "test_orchestrator_test_step_reminder_sends_to_non_voter", "_tgt": "steps_step_reminder", "source": "steps_step_reminder", "target": "test_orchestrator_test_step_reminder_sends_to_non_voter" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L414", "weight": 1.0, "_src": "test_orchestrator_test_step_reminder_skips_voter", "_tgt": "steps_step_reminder", "source": "steps_step_reminder", "target": "test_orchestrator_test_step_reminder_skips_voter" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_orchestrator.py", "source_location": "L444", "weight": 1.0, "_src": "test_orchestrator_test_step_reminder_no_sends_when_all_voted", "_tgt": "steps_step_reminder", "source": "steps_step_reminder", "target": "test_orchestrator_test_step_reminder_no_sends_when_all_voted" }, { "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L3", "weight": 1.0, "_src": "backend_app_scraper_base_py", "_tgt": "abc", "confidence_score": 1.0, "source": "backend_app_scraper_base_py", "target": "abc" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L14", "weight": 1.0, "_src": "backend_app_scraper_base_py", "_tgt": "base_basescraper", "confidence_score": 1.0, "source": "backend_app_scraper_base_py", "target": "base_basescraper" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L102", "weight": 1.0, "_src": "backend_app_scraper_base_py", "_tgt": "base_scrape", "confidence_score": 1.0, "source": "backend_app_scraper_base_py", "target": "base_scrape" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L109", "weight": 1.0, "_src": "backend_app_scraper_base_py", "_tgt": "base_seleniumscraper", "confidence_score": 1.0, "source": "backend_app_scraper_base_py", "target": "base_seleniumscraper" }, { "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/__init__.py", "source_location": "L1", "weight": 1.0, "_src": "backend_app_scraper_init_py", "_tgt": "backend_app_scraper_base_py", "confidence_score": 1.0, "source": "backend_app_scraper_base_py", "target": "backend_app_scraper_init_py" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L14", "weight": 1.0, "_src": "base_basescraper", "_tgt": "abc", "confidence_score": 1.0, "source": "base_basescraper", "target": "abc" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L15", "weight": 1.0, "_src": "base_basescraper", "_tgt": "base_basescraper_init", "confidence_score": 1.0, "source": "base_basescraper", "target": "base_basescraper_init" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L29", "weight": 1.0, "_src": "base_basescraper", "_tgt": "base_basescraper_create_session", "confidence_score": 1.0, "source": "base_basescraper", "target": "base_basescraper_create_session" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L51", "weight": 1.0, "_src": "base_basescraper", "_tgt": "base_basescraper_rate_limit", "confidence_score": 1.0, "source": "base_basescraper", "target": "base_basescraper_rate_limit" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L59", "weight": 1.0, "_src": "base_basescraper", "_tgt": "base_basescraper_get", "confidence_score": 1.0, "source": "base_basescraper", "target": "base_basescraper_get" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L80", "weight": 1.0, "_src": "base_basescraper", "_tgt": "base_basescraper_post", "confidence_score": 1.0, "source": "base_basescraper", "target": "base_basescraper_post" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L105", "weight": 1.0, "_src": "base_basescraper", "_tgt": "base_basescraper_log_scrape", "confidence_score": 1.0, "source": "base_basescraper", "target": "base_basescraper_log_scrape" }, { "relation": "inherits", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L109", "weight": 1.0, "_src": "base_seleniumscraper", "_tgt": "base_basescraper", "confidence_score": 1.0, "source": "base_basescraper", "target": "base_seleniumscraper" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L27", "weight": 1.0, "_src": "base_basescraper_init", "_tgt": "base_basescraper_create_session", "confidence_score": 1.0, "source": "base_basescraper_init", "target": "base_basescraper_create_session" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L60", "weight": 1.0, "_src": "base_basescraper_get", "_tgt": "base_basescraper_rate_limit", "confidence_score": 1.0, "source": "base_basescraper_rate_limit", "target": "base_basescraper_get" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L81", "weight": 1.0, "_src": "base_basescraper_post", "_tgt": "base_basescraper_rate_limit", "confidence_score": 1.0, "source": "base_basescraper_rate_limit", "target": "base_basescraper_post" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L110", "weight": 1.0, "_src": "base_seleniumscraper", "_tgt": "base_seleniumscraper_init", "confidence_score": 1.0, "source": "base_seleniumscraper", "target": "base_seleniumscraper_init" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L114", "weight": 1.0, "_src": "base_seleniumscraper", "_tgt": "base_seleniumscraper_init_playwright", "confidence_score": 1.0, "source": "base_seleniumscraper", "target": "base_seleniumscraper_init_playwright" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L123", "weight": 1.0, "_src": "base_seleniumscraper", "_tgt": "base_seleniumscraper_get_playwright", "confidence_score": 1.0, "source": "base_seleniumscraper", "target": "base_seleniumscraper_get_playwright" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L127", "weight": 1.0, "_src": "base_seleniumscraper", "_tgt": "base_seleniumscraper_get_browser_page", "confidence_score": 1.0, "source": "base_seleniumscraper", "target": "base_seleniumscraper_get_browser_page" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L133", "weight": 1.0, "_src": "base_seleniumscraper", "_tgt": "base_seleniumscraper_cleanup", "confidence_score": 1.0, "source": "base_seleniumscraper", "target": "base_seleniumscraper_cleanup" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L124", "weight": 1.0, "_src": "base_seleniumscraper_get_playwright", "_tgt": "base_seleniumscraper_init_playwright", "confidence_score": 1.0, "source": "base_seleniumscraper_init_playwright", "target": "base_seleniumscraper_get_playwright" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/base.py", "source_location": "L128", "weight": 1.0, "_src": "base_seleniumscraper_get_browser_page", "_tgt": "base_seleniumscraper_get_playwright", "confidence_score": 1.0, "source": "base_seleniumscraper_get_playwright", "target": "base_seleniumscraper_get_browser_page" }, { "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/__init__.py", "source_location": "L2", "weight": 1.0, "_src": "backend_app_scraper_init_py", "_tgt": "backend_app_scraper_lucky_ca_scraper_py", "confidence_score": 1.0, "source": "backend_app_scraper_init_py", "target": "backend_app_scraper_lucky_ca_scraper_py" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L49", "weight": 1.0, "_src": "backend_app_scraper_lucky_ca_scraper_py", "_tgt": "lucky_ca_scraper_swiftlyautherror", "confidence_score": 1.0, "source": "backend_app_scraper_lucky_ca_scraper_py", "target": "lucky_ca_scraper_swiftlyautherror" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L67", "weight": 1.0, "_src": "backend_app_scraper_lucky_ca_scraper_py", "_tgt": "lucky_ca_scraper_luckycaliforniascraper", "confidence_score": 1.0, "source": "backend_app_scraper_lucky_ca_scraper_py", "target": "lucky_ca_scraper_luckycaliforniascraper" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L191", "weight": 1.0, "_src": "backend_app_scraper_lucky_ca_scraper_py", "_tgt": "lucky_ca_scraper_parse_categories_html", "confidence_score": 1.0, "source": "backend_app_scraper_lucky_ca_scraper_py", "target": "lucky_ca_scraper_parse_categories_html" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L226", "weight": 1.0, "_src": "backend_app_scraper_lucky_ca_scraper_py", "_tgt": "lucky_ca_scraper_parse_category_response", "confidence_score": 1.0, "source": "backend_app_scraper_lucky_ca_scraper_py", "target": "lucky_ca_scraper_parse_category_response" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L240", "weight": 1.0, "_src": "backend_app_scraper_lucky_ca_scraper_py", "_tgt": "lucky_ca_scraper_map_product", "confidence_score": 1.0, "source": "backend_app_scraper_lucky_ca_scraper_py", "target": "lucky_ca_scraper_map_product" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L297", "weight": 1.0, "_src": "backend_app_scraper_lucky_ca_scraper_py", "_tgt": "lucky_ca_scraper_parse_price", "confidence_score": 1.0, "source": "backend_app_scraper_lucky_ca_scraper_py", "target": "lucky_ca_scraper_parse_price" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L317", "weight": 1.0, "_src": "backend_app_scraper_lucky_ca_scraper_py", "_tgt": "lucky_ca_scraper_aisle_from_slug", "confidence_score": 1.0, "source": "backend_app_scraper_lucky_ca_scraper_py", "target": "lucky_ca_scraper_aisle_from_slug" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L1", "weight": 1.0, "_src": "lucky_ca_scraper_rationale_1", "_tgt": "backend_app_scraper_lucky_ca_scraper_py", "confidence_score": 1.0, "source": "backend_app_scraper_lucky_ca_scraper_py", "target": "lucky_ca_scraper_rationale_1" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L220", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper_fetch_category", "_tgt": "lucky_ca_scraper_swiftlyautherror", "confidence_score": 1.0, "source": "lucky_ca_scraper_swiftlyautherror", "target": "lucky_ca_scraper_luckycaliforniascraper_fetch_category" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L50", "weight": 1.0, "_src": "lucky_ca_scraper_rationale_50", "_tgt": "lucky_ca_scraper_swiftlyautherror", "confidence_score": 1.0, "source": "lucky_ca_scraper_swiftlyautherror", "target": "lucky_ca_scraper_rationale_50" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L180", "weight": 0.8, "_src": "test_swiftly_api_rationale_1", "_tgt": "lucky_ca_scraper_swiftlyautherror", "confidence_score": 0.5, "source": "lucky_ca_scraper_swiftlyautherror", "target": "test_swiftly_api_rationale_1" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L180", "weight": 0.8, "_src": "test_swiftly_api_rationale_41", "_tgt": "lucky_ca_scraper_swiftlyautherror", "confidence_score": 0.5, "source": "lucky_ca_scraper_swiftlyautherror", "target": "test_swiftly_api_rationale_41" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L180", "weight": 0.8, "_src": "test_swiftly_api_rationale_58", "_tgt": "lucky_ca_scraper_swiftlyautherror", "confidence_score": 0.5, "source": "lucky_ca_scraper_swiftlyautherror", "target": "test_swiftly_api_rationale_58" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L180", "weight": 0.8, "_src": "test_swiftly_api_rationale_108", "_tgt": "lucky_ca_scraper_swiftlyautherror", "confidence_score": 0.5, "source": "lucky_ca_scraper_swiftlyautherror", "target": "test_swiftly_api_rationale_108" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L180", "weight": 0.8, "_src": "test_swiftly_api_rationale_136", "_tgt": "lucky_ca_scraper_swiftlyautherror", "confidence_score": 0.5, "source": "lucky_ca_scraper_swiftlyautherror", "target": "test_swiftly_api_rationale_136" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L180", "weight": 0.8, "_src": "test_swiftly_api_rationale_172", "_tgt": "lucky_ca_scraper_swiftlyautherror", "confidence_score": 0.5, "source": "lucky_ca_scraper_swiftlyautherror", "target": "test_swiftly_api_rationale_172" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "scripts/spike_swiftly_ingest.py", "source_location": "L30", "weight": 0.8, "_src": "spike_swiftly_ingest_rationale_1", "_tgt": "lucky_ca_scraper_swiftlyautherror", "confidence_score": 0.5, "source": "lucky_ca_scraper_swiftlyautherror", "target": "spike_swiftly_ingest_rationale_1" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L86", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_init", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "lucky_ca_scraper_luckycaliforniascraper_init" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L129", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_cleanup", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "lucky_ca_scraper_luckycaliforniascraper_cleanup" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L138", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_scrape", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "lucky_ca_scraper_luckycaliforniascraper_scrape" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L157", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_fetch_all", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "lucky_ca_scraper_luckycaliforniascraper_fetch_all" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L179", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_discover_categories", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "lucky_ca_scraper_luckycaliforniascraper_discover_categories" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L208", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_fetch_category", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "lucky_ca_scraper_luckycaliforniascraper_fetch_category" }, { "relation": "method", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L325", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_rate_limit", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "lucky_ca_scraper_luckycaliforniascraper_rate_limit" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L68", "weight": 1.0, "_src": "lucky_ca_scraper_rationale_68", "_tgt": "lucky_ca_scraper_luckycaliforniascraper", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "lucky_ca_scraper_rationale_68" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L180", "weight": 0.8, "_src": "test_swiftly_api_rationale_1", "_tgt": "lucky_ca_scraper_luckycaliforniascraper", "confidence_score": 0.5, "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "test_swiftly_api_rationale_1" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L180", "weight": 0.8, "_src": "test_swiftly_api_rationale_41", "_tgt": "lucky_ca_scraper_luckycaliforniascraper", "confidence_score": 0.5, "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "test_swiftly_api_rationale_41" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L180", "weight": 0.8, "_src": "test_swiftly_api_rationale_58", "_tgt": "lucky_ca_scraper_luckycaliforniascraper", "confidence_score": 0.5, "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "test_swiftly_api_rationale_58" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L180", "weight": 0.8, "_src": "test_swiftly_api_rationale_108", "_tgt": "lucky_ca_scraper_luckycaliforniascraper", "confidence_score": 0.5, "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "test_swiftly_api_rationale_108" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L180", "weight": 0.8, "_src": "test_swiftly_api_rationale_136", "_tgt": "lucky_ca_scraper_luckycaliforniascraper", "confidence_score": 0.5, "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "test_swiftly_api_rationale_136" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L180", "weight": 0.8, "_src": "test_swiftly_api_rationale_172", "_tgt": "lucky_ca_scraper_luckycaliforniascraper", "confidence_score": 0.5, "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "test_swiftly_api_rationale_172" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "scripts/spike_lucky_scrape.py", "source_location": "L27", "weight": 0.8, "_src": "spike_lucky_scrape_rationale_1", "_tgt": "lucky_ca_scraper_luckycaliforniascraper", "confidence_score": 0.5, "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "spike_lucky_scrape_rationale_1" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "scripts/spike_swiftly_ingest.py", "source_location": "L30", "weight": 0.8, "_src": "spike_swiftly_ingest_rationale_1", "_tgt": "lucky_ca_scraper_luckycaliforniascraper", "confidence_score": 0.5, "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "spike_swiftly_ingest_rationale_1" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L137", "weight": 1.0, "_src": "test_swiftly_api_test_swiftly_auth_error_on_401_from_api", "_tgt": "lucky_ca_scraper_luckycaliforniascraper", "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "test_swiftly_api_test_swiftly_auth_error_on_401_from_api" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L152", "weight": 1.0, "_src": "test_swiftly_api_test_fetch_category_mints_token_when_none_pinned", "_tgt": "lucky_ca_scraper_luckycaliforniascraper", "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "test_swiftly_api_test_fetch_category_mints_token_when_none_pinned" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/spike_lucky_scrape.py", "source_location": "L118", "weight": 1.0, "_src": "spike_lucky_scrape_main", "_tgt": "lucky_ca_scraper_luckycaliforniascraper", "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "spike_lucky_scrape_main" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/spike_swiftly_ingest.py", "source_location": "L61", "weight": 1.0, "_src": "spike_swiftly_ingest_main", "_tgt": "lucky_ca_scraper_luckycaliforniascraper", "source": "lucky_ca_scraper_luckycaliforniascraper", "target": "spike_swiftly_ingest_main" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/spike_swiftly_ingest.py", "source_location": "L97", "weight": 1.0, "_src": "spike_swiftly_ingest_main", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_cleanup", "source": "lucky_ca_scraper_luckycaliforniascraper_cleanup", "target": "spike_swiftly_ingest_main" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L146", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper_scrape", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_fetch_all", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper_scrape", "target": "lucky_ca_scraper_luckycaliforniascraper_fetch_all" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L139", "weight": 1.0, "_src": "lucky_ca_scraper_rationale_139", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_scrape", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper_scrape", "target": "lucky_ca_scraper_rationale_139" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L159", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper_fetch_all", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_discover_categories", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper_fetch_all", "target": "lucky_ca_scraper_luckycaliforniascraper_discover_categories" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L163", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper_fetch_all", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_fetch_category", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper_fetch_all", "target": "lucky_ca_scraper_luckycaliforniascraper_fetch_category" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L170", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper_fetch_all", "_tgt": "lucky_ca_scraper_aisle_from_slug", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper_fetch_all", "target": "lucky_ca_scraper_aisle_from_slug" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L172", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper_fetch_all", "_tgt": "lucky_ca_scraper_map_product", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper_fetch_all", "target": "lucky_ca_scraper_map_product" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L158", "weight": 1.0, "_src": "lucky_ca_scraper_rationale_158", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_fetch_all", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper_fetch_all", "target": "lucky_ca_scraper_rationale_158" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L185", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper_discover_categories", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_rate_limit", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper_discover_categories", "target": "lucky_ca_scraper_luckycaliforniascraper_rate_limit" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L188", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper_discover_categories", "_tgt": "lucky_ca_scraper_parse_categories_html", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper_discover_categories", "target": "lucky_ca_scraper_parse_categories_html" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L180", "weight": 1.0, "_src": "lucky_ca_scraper_rationale_180", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_discover_categories", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper_discover_categories", "target": "lucky_ca_scraper_rationale_180" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/spike_swiftly_ingest.py", "source_location": "L63", "weight": 1.0, "_src": "spike_swiftly_ingest_main", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_discover_categories", "source": "lucky_ca_scraper_luckycaliforniascraper_discover_categories", "target": "spike_swiftly_ingest_main" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L46", "weight": 1.0, "_src": "test_swiftly_api_test_parse_categories_fixture", "_tgt": "lucky_ca_scraper_parse_categories_html", "source": "lucky_ca_scraper_parse_categories_html", "target": "test_swiftly_api_test_parse_categories_fixture" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L212", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper_fetch_category", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_rate_limit", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper_fetch_category", "target": "lucky_ca_scraper_luckycaliforniascraper_rate_limit" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L223", "weight": 1.0, "_src": "lucky_ca_scraper_luckycaliforniascraper_fetch_category", "_tgt": "lucky_ca_scraper_parse_category_response", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper_fetch_category", "target": "lucky_ca_scraper_parse_category_response" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L209", "weight": 1.0, "_src": "lucky_ca_scraper_rationale_209", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_fetch_category", "confidence_score": 1.0, "source": "lucky_ca_scraper_luckycaliforniascraper_fetch_category", "target": "lucky_ca_scraper_rationale_209" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L141", "weight": 1.0, "_src": "test_swiftly_api_test_swiftly_auth_error_on_401_from_api", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_fetch_category", "source": "lucky_ca_scraper_luckycaliforniascraper_fetch_category", "target": "test_swiftly_api_test_swiftly_auth_error_on_401_from_api" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L163", "weight": 1.0, "_src": "test_swiftly_api_test_fetch_category_mints_token_when_none_pinned", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_fetch_category", "source": "lucky_ca_scraper_luckycaliforniascraper_fetch_category", "target": "test_swiftly_api_test_fetch_category_mints_token_when_none_pinned" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/spike_swiftly_ingest.py", "source_location": "L71", "weight": 1.0, "_src": "spike_swiftly_ingest_main", "_tgt": "lucky_ca_scraper_luckycaliforniascraper_fetch_category", "source": "lucky_ca_scraper_luckycaliforniascraper_fetch_category", "target": "spike_swiftly_ingest_main" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L63", "weight": 1.0, "_src": "test_swiftly_api_test_parse_category_response_fixture", "_tgt": "lucky_ca_scraper_parse_category_response", "source": "lucky_ca_scraper_parse_category_response", "target": "test_swiftly_api_test_parse_category_response_fixture" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/app/scraper/lucky_ca_scraper.py", "source_location": "L258", "weight": 1.0, "_src": "lucky_ca_scraper_map_product", "_tgt": "lucky_ca_scraper_parse_price", "confidence_score": 1.0, "source": "lucky_ca_scraper_map_product", "target": "lucky_ca_scraper_parse_price" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L68", "weight": 1.0, "_src": "test_swiftly_api_test_parse_category_response_fixture", "_tgt": "lucky_ca_scraper_map_product", "source": "lucky_ca_scraper_map_product", "target": "test_swiftly_api_test_parse_category_response_fixture" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L109", "weight": 1.0, "_src": "test_swiftly_api_test_map_product_returns_none_for_unparseable", "_tgt": "lucky_ca_scraper_map_product", "source": "lucky_ca_scraper_map_product", "target": "test_swiftly_api_test_map_product_returns_none_for_unparseable" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/spike_swiftly_ingest.py", "source_location": "L81", "weight": 1.0, "_src": "spike_swiftly_ingest_main", "_tgt": "lucky_ca_scraper_map_product", "source": "lucky_ca_scraper_map_product", "target": "spike_swiftly_ingest_main" }, { "relation": "calls", "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "scripts/spike_swiftly_ingest.py", "source_location": "L78", "weight": 1.0, "_src": "spike_swiftly_ingest_main", "_tgt": "lucky_ca_scraper_aisle_from_slug", "source": "lucky_ca_scraper_aisle_from_slug", "target": "spike_swiftly_ingest_main" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/app/scheduler/__main__.py", "source_location": "L1", "weight": 1.0, "_src": "main_rationale_1", "_tgt": "backend_app_scheduler_main_py", "confidence_score": 1.0, "source": "backend_app_scheduler_main_py", "target": "main_rationale_1" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/env.py", "source_location": "L22", "weight": 1.0, "_src": "backend_alembic_env_py", "_tgt": "env_run_migrations_offline", "confidence_score": 1.0, "source": "backend_alembic_env_py", "target": "env_run_migrations_offline" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/env.py", "source_location": "L35", "weight": 1.0, "_src": "backend_alembic_env_py", "_tgt": "env_run_migrations_online", "confidence_score": 1.0, "source": "backend_alembic_env_py", "target": "env_run_migrations_online" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L24", "weight": 1.0, "_src": "backend_alembic_versions_0003_grocery_item_description_py", "_tgt": "0003_grocery_item_description_upgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0003_grocery_item_description_py", "target": "0003_grocery_item_description_upgrade" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L31", "weight": 1.0, "_src": "backend_alembic_versions_0003_grocery_item_description_py", "_tgt": "0003_grocery_item_description_downgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0003_grocery_item_description_py", "target": "0003_grocery_item_description_downgrade" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0003_grocery_item_description.py", "source_location": "L1", "weight": 1.0, "_src": "0003_grocery_item_description_rationale_1", "_tgt": "backend_alembic_versions_0003_grocery_item_description_py", "confidence_score": 1.0, "source": "backend_alembic_versions_0003_grocery_item_description_py", "target": "0003_grocery_item_description_rationale_1" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L17", "weight": 1.0, "_src": "backend_alembic_versions_0002_seed_data_py", "_tgt": "0002_seed_data_upgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0002_seed_data_py", "target": "0002_seed_data_upgrade" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L112", "weight": 1.0, "_src": "backend_alembic_versions_0002_seed_data_py", "_tgt": "0002_seed_data_downgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0002_seed_data_py", "target": "0002_seed_data_downgrade" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0002_seed_data.py", "source_location": "L1", "weight": 1.0, "_src": "0002_seed_data_rationale_1", "_tgt": "backend_alembic_versions_0002_seed_data_py", "confidence_score": 1.0, "source": "backend_alembic_versions_0002_seed_data_py", "target": "0002_seed_data_rationale_1" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L22", "weight": 1.0, "_src": "backend_alembic_versions_0004_family_profile_calorie_target_py", "_tgt": "0004_family_profile_calorie_target_upgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0004_family_profile_calorie_target_py", "target": "0004_family_profile_calorie_target_upgrade" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L29", "weight": 1.0, "_src": "backend_alembic_versions_0004_family_profile_calorie_target_py", "_tgt": "0004_family_profile_calorie_target_downgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0004_family_profile_calorie_target_py", "target": "0004_family_profile_calorie_target_downgrade" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0004_family_profile_calorie_target.py", "source_location": "L1", "weight": 1.0, "_src": "0004_family_profile_calorie_target_rationale_1", "_tgt": "backend_alembic_versions_0004_family_profile_calorie_target_py", "confidence_score": 1.0, "source": "backend_alembic_versions_0004_family_profile_calorie_target_py", "target": "0004_family_profile_calorie_target_rationale_1" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0001_initial_migration.py", "source_location": "L18", "weight": 1.0, "_src": "backend_alembic_versions_0001_initial_migration_py", "_tgt": "0001_initial_migration_upgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0001_initial_migration_py", "target": "0001_initial_migration_upgrade" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0001_initial_migration.py", "source_location": "L288", "weight": 1.0, "_src": "backend_alembic_versions_0001_initial_migration_py", "_tgt": "0001_initial_migration_downgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0001_initial_migration_py", "target": "0001_initial_migration_downgrade" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0001_initial_migration.py", "source_location": "L1", "weight": 1.0, "_src": "0001_initial_migration_rationale_1", "_tgt": "backend_alembic_versions_0001_initial_migration_py", "confidence_score": 1.0, "source": "backend_alembic_versions_0001_initial_migration_py", "target": "0001_initial_migration_rationale_1" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L26", "weight": 1.0, "_src": "backend_alembic_versions_0005_grocery_item_external_id_py", "_tgt": "0005_grocery_item_external_id_upgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0005_grocery_item_external_id_py", "target": "0005_grocery_item_external_id_upgrade" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L45", "weight": 1.0, "_src": "backend_alembic_versions_0005_grocery_item_external_id_py", "_tgt": "0005_grocery_item_external_id_downgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0005_grocery_item_external_id_py", "target": "0005_grocery_item_external_id_downgrade" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0005_grocery_item_external_id.py", "source_location": "L1", "weight": 1.0, "_src": "0005_grocery_item_external_id_rationale_1", "_tgt": "backend_alembic_versions_0005_grocery_item_external_id_py", "confidence_score": 1.0, "source": "backend_alembic_versions_0005_grocery_item_external_id_py", "target": "0005_grocery_item_external_id_rationale_1" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0006_recipe_engine_thin.py", "source_location": "L19", "weight": 1.0, "_src": "backend_alembic_versions_0006_recipe_engine_thin_py", "_tgt": "0006_recipe_engine_thin_upgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0006_recipe_engine_thin_py", "target": "0006_recipe_engine_thin_upgrade" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0006_recipe_engine_thin.py", "source_location": "L88", "weight": 1.0, "_src": "backend_alembic_versions_0006_recipe_engine_thin_py", "_tgt": "0006_recipe_engine_thin_downgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0006_recipe_engine_thin_py", "target": "0006_recipe_engine_thin_downgrade" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0006_recipe_engine_thin.py", "source_location": "L1", "weight": 1.0, "_src": "0006_recipe_engine_thin_rationale_1", "_tgt": "backend_alembic_versions_0006_recipe_engine_thin_py", "confidence_score": 1.0, "source": "backend_alembic_versions_0006_recipe_engine_thin_py", "target": "0006_recipe_engine_thin_rationale_1" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L82", "weight": 1.0, "_src": "backend_alembic_versions_0007_seed_recipes_py", "_tgt": "0007_seed_recipes_upsert_ingredients", "confidence_score": 1.0, "source": "backend_alembic_versions_0007_seed_recipes_py", "target": "0007_seed_recipes_upsert_ingredients" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L767", "weight": 1.0, "_src": "backend_alembic_versions_0007_seed_recipes_py", "_tgt": "0007_seed_recipes_insert_recipes", "confidence_score": 1.0, "source": "backend_alembic_versions_0007_seed_recipes_py", "target": "0007_seed_recipes_insert_recipes" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L823", "weight": 1.0, "_src": "backend_alembic_versions_0007_seed_recipes_py", "_tgt": "0007_seed_recipes_delete_recipes", "confidence_score": 1.0, "source": "backend_alembic_versions_0007_seed_recipes_py", "target": "0007_seed_recipes_delete_recipes" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L832", "weight": 1.0, "_src": "backend_alembic_versions_0007_seed_recipes_py", "_tgt": "0007_seed_recipes_delete_ingredients", "confidence_score": 1.0, "source": "backend_alembic_versions_0007_seed_recipes_py", "target": "0007_seed_recipes_delete_ingredients" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L846", "weight": 1.0, "_src": "backend_alembic_versions_0007_seed_recipes_py", "_tgt": "0007_seed_recipes_upgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0007_seed_recipes_py", "target": "0007_seed_recipes_upgrade" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L851", "weight": 1.0, "_src": "backend_alembic_versions_0007_seed_recipes_py", "_tgt": "0007_seed_recipes_downgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0007_seed_recipes_py", "target": "0007_seed_recipes_downgrade" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L1", "weight": 1.0, "_src": "0007_seed_recipes_rationale_1", "_tgt": "backend_alembic_versions_0007_seed_recipes_py", "confidence_score": 1.0, "source": "backend_alembic_versions_0007_seed_recipes_py", "target": "0007_seed_recipes_rationale_1" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L847", "weight": 1.0, "_src": "0007_seed_recipes_upgrade", "_tgt": "0007_seed_recipes_upsert_ingredients", "confidence_score": 1.0, "source": "0007_seed_recipes_upsert_ingredients", "target": "0007_seed_recipes_upgrade" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L848", "weight": 1.0, "_src": "0007_seed_recipes_upgrade", "_tgt": "0007_seed_recipes_insert_recipes", "confidence_score": 1.0, "source": "0007_seed_recipes_insert_recipes", "target": "0007_seed_recipes_upgrade" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L852", "weight": 1.0, "_src": "0007_seed_recipes_downgrade", "_tgt": "0007_seed_recipes_delete_recipes", "confidence_score": 1.0, "source": "0007_seed_recipes_delete_recipes", "target": "0007_seed_recipes_downgrade" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L853", "weight": 1.0, "_src": "0007_seed_recipes_downgrade", "_tgt": "0007_seed_recipes_delete_ingredients", "confidence_score": 1.0, "source": "0007_seed_recipes_delete_ingredients", "target": "0007_seed_recipes_downgrade" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0007_seed_recipes.py", "source_location": "L833", "weight": 1.0, "_src": "0007_seed_recipes_rationale_833", "_tgt": "0007_seed_recipes_delete_ingredients", "confidence_score": 1.0, "source": "0007_seed_recipes_delete_ingredients", "target": "0007_seed_recipes_rationale_833" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0008_phase5_orchestration.py", "source_location": "L17", "weight": 1.0, "_src": "backend_alembic_versions_0008_phase5_orchestration_py", "_tgt": "0008_phase5_orchestration_upgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0008_phase5_orchestration_py", "target": "0008_phase5_orchestration_upgrade" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0008_phase5_orchestration.py", "source_location": "L67", "weight": 1.0, "_src": "backend_alembic_versions_0008_phase5_orchestration_py", "_tgt": "0008_phase5_orchestration_downgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0008_phase5_orchestration_py", "target": "0008_phase5_orchestration_downgrade" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0008_phase5_orchestration.py", "source_location": "L1", "weight": 1.0, "_src": "0008_phase5_orchestration_rationale_1", "_tgt": "backend_alembic_versions_0008_phase5_orchestration_py", "confidence_score": 1.0, "source": "backend_alembic_versions_0008_phase5_orchestration_py", "target": "0008_phase5_orchestration_rationale_1" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L16", "weight": 1.0, "_src": "backend_alembic_versions_0009_phase6_reminded_at_py", "_tgt": "0009_phase6_reminded_at_upgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0009_phase6_reminded_at_py", "target": "0009_phase6_reminded_at_upgrade" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L23", "weight": 1.0, "_src": "backend_alembic_versions_0009_phase6_reminded_at_py", "_tgt": "0009_phase6_reminded_at_downgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0009_phase6_reminded_at_py", "target": "0009_phase6_reminded_at_downgrade" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0009_phase6_reminded_at.py", "source_location": "L1", "weight": 1.0, "_src": "0009_phase6_reminded_at_rationale_1", "_tgt": "backend_alembic_versions_0009_phase6_reminded_at_py", "confidence_score": 1.0, "source": "backend_alembic_versions_0009_phase6_reminded_at_py", "target": "0009_phase6_reminded_at_rationale_1" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0010_auto_llm_source.py", "source_location": "L15", "weight": 1.0, "_src": "backend_alembic_versions_0010_auto_llm_source_py", "_tgt": "0010_auto_llm_source_upgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0010_auto_llm_source_py", "target": "0010_auto_llm_source_upgrade" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0010_auto_llm_source.py", "source_location": "L21", "weight": 1.0, "_src": "backend_alembic_versions_0010_auto_llm_source_py", "_tgt": "0010_auto_llm_source_downgrade", "confidence_score": 1.0, "source": "backend_alembic_versions_0010_auto_llm_source_py", "target": "0010_auto_llm_source_downgrade" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/alembic/versions/0010_auto_llm_source.py", "source_location": "L1", "weight": 1.0, "_src": "0010_auto_llm_source_rationale_1", "_tgt": "backend_alembic_versions_0010_auto_llm_source_py", "confidence_score": 1.0, "source": "backend_alembic_versions_0010_auto_llm_source_py", "target": "0010_auto_llm_source_rationale_1" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_alembic.py", "source_location": "L21", "weight": 1.0, "_src": "backend_tests_test_alembic_py", "_tgt": "test_alembic_test_alembic_upgrade_head_roundtrip", "confidence_score": 1.0, "source": "backend_tests_test_alembic_py", "target": "test_alembic_test_alembic_upgrade_head_roundtrip" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_alembic.py", "source_location": "L1", "weight": 1.0, "_src": "test_alembic_rationale_1", "_tgt": "backend_tests_test_alembic_py", "confidence_score": 1.0, "source": "backend_tests_test_alembic_py", "target": "test_alembic_rationale_1" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_smoke.py", "source_location": "L15", "weight": 1.0, "_src": "backend_tests_test_smoke_py", "_tgt": "test_smoke_test_app_imports", "confidence_score": 1.0, "source": "backend_tests_test_smoke_py", "target": "test_smoke_test_app_imports" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_smoke.py", "source_location": "L21", "weight": 1.0, "_src": "backend_tests_test_smoke_py", "_tgt": "test_smoke_test_health", "confidence_score": 1.0, "source": "backend_tests_test_smoke_py", "target": "test_smoke_test_health" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_smoke.py", "source_location": "L28", "weight": 1.0, "_src": "backend_tests_test_smoke_py", "_tgt": "test_smoke_test_health_db", "confidence_score": 1.0, "source": "backend_tests_test_smoke_py", "target": "test_smoke_test_health_db" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_smoke.py", "source_location": "L49", "weight": 1.0, "_src": "backend_tests_test_smoke_py", "_tgt": "test_smoke_test_router_list_endpoints", "confidence_score": 1.0, "source": "backend_tests_test_smoke_py", "target": "test_smoke_test_router_list_endpoints" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_smoke.py", "source_location": "L1", "weight": 1.0, "_src": "test_smoke_rationale_1", "_tgt": "backend_tests_test_smoke_py", "confidence_score": 1.0, "source": "backend_tests_test_smoke_py", "target": "test_smoke_rationale_1" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_smoke.py", "source_location": "L50", "weight": 1.0, "_src": "test_smoke_rationale_50", "_tgt": "test_smoke_test_router_list_endpoints", "confidence_score": 1.0, "source": "test_smoke_test_router_list_endpoints", "target": "test_smoke_rationale_50" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_auth.py", "source_location": "L25", "weight": 1.0, "_src": "backend_tests_test_auth_py", "_tgt": "test_auth_reload_settings", "confidence_score": 1.0, "source": "backend_tests_test_auth_py", "target": "test_auth_reload_settings" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_auth.py", "source_location": "L41", "weight": 1.0, "_src": "backend_tests_test_auth_py", "_tgt": "test_auth_test_admin_requires_token", "confidence_score": 1.0, "source": "backend_tests_test_auth_py", "target": "test_auth_test_admin_requires_token" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_auth.py", "source_location": "L55", "weight": 1.0, "_src": "backend_tests_test_auth_py", "_tgt": "test_auth_test_admin_logs_requires_token", "confidence_score": 1.0, "source": "backend_tests_test_auth_py", "target": "test_auth_test_admin_logs_requires_token" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_auth.py", "source_location": "L69", "weight": 1.0, "_src": "backend_tests_test_auth_py", "_tgt": "test_auth_test_session_required_for_mutation", "confidence_score": 1.0, "source": "backend_tests_test_auth_py", "target": "test_auth_test_session_required_for_mutation" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_auth.py", "source_location": "L79", "weight": 1.0, "_src": "backend_tests_test_auth_py", "_tgt": "test_auth_test_session_open_for_reads", "confidence_score": 1.0, "source": "backend_tests_test_auth_py", "target": "test_auth_test_session_open_for_reads" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_auth.py", "source_location": "L90", "weight": 1.0, "_src": "backend_tests_test_auth_py", "_tgt": "test_auth_test_session_login_logout", "confidence_score": 1.0, "source": "backend_tests_test_auth_py", "target": "test_auth_test_session_login_logout" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_auth.py", "source_location": "L1", "weight": 1.0, "_src": "test_auth_rationale_1", "_tgt": "backend_tests_test_auth_py", "confidence_score": 1.0, "source": "backend_tests_test_auth_py", "target": "test_auth_rationale_1" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_auth.py", "source_location": "L26", "weight": 1.0, "_src": "test_auth_rationale_26", "_tgt": "test_auth_reload_settings", "confidence_score": 1.0, "source": "test_auth_reload_settings", "target": "test_auth_rationale_26" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_auth.py", "source_location": "L42", "weight": 1.0, "_src": "test_auth_rationale_42", "_tgt": "test_auth_test_admin_requires_token", "confidence_score": 1.0, "source": "test_auth_test_admin_requires_token", "target": "test_auth_rationale_42" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_auth.py", "source_location": "L70", "weight": 1.0, "_src": "test_auth_rationale_70", "_tgt": "test_auth_test_session_required_for_mutation", "confidence_score": 1.0, "source": "test_auth_test_session_required_for_mutation", "target": "test_auth_rationale_70" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_auth.py", "source_location": "L80", "weight": 1.0, "_src": "test_auth_rationale_80", "_tgt": "test_auth_test_session_open_for_reads", "confidence_score": 1.0, "source": "test_auth_test_session_open_for_reads", "target": "test_auth_rationale_80" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L20", "weight": 1.0, "_src": "backend_tests_test_scrape_endpoint_py", "_tgt": "test_scrape_endpoint_admin_token", "confidence_score": 1.0, "source": "backend_tests_test_scrape_endpoint_py", "target": "test_scrape_endpoint_admin_token" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L26", "weight": 1.0, "_src": "backend_tests_test_scrape_endpoint_py", "_tgt": "test_scrape_endpoint_test_scrape_returns_202_and_log_id", "confidence_score": 1.0, "source": "backend_tests_test_scrape_endpoint_py", "target": "test_scrape_endpoint_test_scrape_returns_202_and_log_id" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L1", "weight": 1.0, "_src": "test_scrape_endpoint_rationale_1", "_tgt": "backend_tests_test_scrape_endpoint_py", "confidence_score": 1.0, "source": "backend_tests_test_scrape_endpoint_py", "target": "test_scrape_endpoint_rationale_1" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_scrape_endpoint.py", "source_location": "L27", "weight": 1.0, "_src": "test_scrape_endpoint_rationale_27", "_tgt": "test_scrape_endpoint_test_scrape_returns_202_and_log_id", "confidence_score": 1.0, "source": "test_scrape_endpoint_test_scrape_returns_202_and_log_id", "target": "test_scrape_endpoint_rationale_27" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_approval.py", "source_location": "L23", "weight": 1.0, "_src": "backend_tests_test_approval_py", "_tgt": "test_approval_test_issue_and_verify_token_roundtrip", "confidence_score": 1.0, "source": "backend_tests_test_approval_py", "target": "test_approval_test_issue_and_verify_token_roundtrip" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_approval.py", "source_location": "L32", "weight": 1.0, "_src": "backend_tests_test_approval_py", "_tgt": "test_approval_test_verify_rejects_tampered_token", "confidence_score": 1.0, "source": "backend_tests_test_approval_py", "target": "test_approval_test_verify_rejects_tampered_token" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_approval.py", "source_location": "L42", "weight": 1.0, "_src": "backend_tests_test_approval_py", "_tgt": "test_approval_test_verify_rejects_expired_token", "confidence_score": 1.0, "source": "backend_tests_test_approval_py", "target": "test_approval_test_verify_rejects_expired_token" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_approval.py", "source_location": "L74", "weight": 1.0, "_src": "backend_tests_test_approval_py", "_tgt": "test_approval_scenario", "confidence_score": 1.0, "source": "backend_tests_test_approval_py", "target": "test_approval_scenario" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_approval.py", "source_location": "L159", "weight": 1.0, "_src": "backend_tests_test_approval_py", "_tgt": "test_approval_test_consume_token_single_use", "confidence_score": 1.0, "source": "backend_tests_test_approval_py", "target": "test_approval_test_consume_token_single_use" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_approval.py", "source_location": "L186", "weight": 1.0, "_src": "backend_tests_test_approval_py", "_tgt": "test_approval_test_vote_get_renders_html", "confidence_score": 1.0, "source": "backend_tests_test_approval_py", "target": "test_approval_test_vote_get_renders_html" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_approval.py", "source_location": "L207", "weight": 1.0, "_src": "backend_tests_test_approval_py", "_tgt": "test_approval_test_vote_post_records_and_decides", "confidence_score": 1.0, "source": "backend_tests_test_approval_py", "target": "test_approval_test_vote_post_records_and_decides" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_approval.py", "source_location": "L1", "weight": 1.0, "_src": "test_approval_rationale_1", "_tgt": "backend_tests_test_approval_py", "confidence_score": 1.0, "source": "backend_tests_test_approval_py", "target": "test_approval_rationale_1" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_approval.py", "source_location": "L43", "weight": 1.0, "_src": "test_approval_rationale_43", "_tgt": "test_approval_test_verify_rejects_expired_token", "confidence_score": 1.0, "source": "test_approval_test_verify_rejects_expired_token", "target": "test_approval_rationale_43" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_approval.py", "source_location": "L75", "weight": 1.0, "_src": "test_approval_rationale_75", "_tgt": "test_approval_scenario", "confidence_score": 1.0, "source": "test_approval_scenario", "target": "test_approval_rationale_75" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_approval.py", "source_location": "L208", "weight": 1.0, "_src": "test_approval_rationale_208", "_tgt": "test_approval_test_vote_post_records_and_decides", "confidence_score": 1.0, "source": "test_approval_test_vote_post_records_and_decides", "target": "test_approval_rationale_208" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_config.py", "source_location": "L12", "weight": 1.0, "_src": "backend_tests_test_config_py", "_tgt": "test_config_test_database_url_required", "confidence_score": 1.0, "source": "backend_tests_test_config_py", "target": "test_config_test_database_url_required" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_config.py", "source_location": "L1", "weight": 1.0, "_src": "test_config_rationale_1", "_tgt": "backend_tests_test_config_py", "confidence_score": 1.0, "source": "backend_tests_test_config_py", "target": "test_config_rationale_1" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_config.py", "source_location": "L13", "weight": 1.0, "_src": "test_config_rationale_13", "_tgt": "test_config_test_database_url_required", "confidence_score": 1.0, "source": "test_config_test_database_url_required", "target": "test_config_rationale_13" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L7", "weight": 1.0, "_src": "backend_tests_test_ingredient_schema_py", "_tgt": "test_ingredient_schema_test_ingredient_create_normalizes_aliases", "confidence_score": 1.0, "source": "backend_tests_test_ingredient_schema_py", "target": "test_ingredient_schema_test_ingredient_create_normalizes_aliases" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_schema.py", "source_location": "L18", "weight": 1.0, "_src": "backend_tests_test_ingredient_schema_py", "_tgt": "test_ingredient_schema_test_ingredient_match_read_round_trip", "confidence_score": 1.0, "source": "backend_tests_test_ingredient_schema_py", "target": "test_ingredient_schema_test_ingredient_match_read_round_trip" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L9", "weight": 1.0, "_src": "backend_tests_test_recipe_schema_py", "_tgt": "test_recipe_schema_test_recipe_create_requires_canonical_ingredient_ids", "confidence_score": 1.0, "source": "backend_tests_test_recipe_schema_py", "target": "test_recipe_schema_test_recipe_create_requires_canonical_ingredient_ids" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L25", "weight": 1.0, "_src": "backend_tests_test_recipe_schema_py", "_tgt": "test_recipe_schema_test_recipe_create_rejects_empty_ingredients", "confidence_score": 1.0, "source": "backend_tests_test_recipe_schema_py", "target": "test_recipe_schema_test_recipe_create_rejects_empty_ingredients" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_schema.py", "source_location": "L39", "weight": 1.0, "_src": "backend_tests_test_recipe_schema_py", "_tgt": "test_recipe_schema_test_resolve_ingredient_request_round_trip", "confidence_score": 1.0, "source": "backend_tests_test_recipe_schema_py", "target": "test_recipe_schema_test_resolve_ingredient_request_round_trip" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L6", "weight": 1.0, "_src": "backend_tests_test_recipe_api_py", "_tgt": "test_recipe_api_admin_headers", "confidence_score": 1.0, "source": "backend_tests_test_recipe_api_py", "target": "test_recipe_api_admin_headers" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L10", "weight": 1.0, "_src": "backend_tests_test_recipe_api_py", "_tgt": "test_recipe_api_new_ingredient", "confidence_score": 1.0, "source": "backend_tests_test_recipe_api_py", "target": "test_recipe_api_new_ingredient" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L20", "weight": 1.0, "_src": "backend_tests_test_recipe_api_py", "_tgt": "test_recipe_api_test_create_recipe_with_canonical_ingredients", "confidence_score": 1.0, "source": "backend_tests_test_recipe_api_py", "target": "test_recipe_api_test_create_recipe_with_canonical_ingredients" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L45", "weight": 1.0, "_src": "backend_tests_test_recipe_api_py", "_tgt": "test_recipe_api_test_create_recipe_rejects_unknown_ingredient_id", "confidence_score": 1.0, "source": "backend_tests_test_recipe_api_py", "target": "test_recipe_api_test_create_recipe_rejects_unknown_ingredient_id" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L63", "weight": 1.0, "_src": "backend_tests_test_recipe_api_py", "_tgt": "test_recipe_api_test_list_recipes_returns_seeded_data", "confidence_score": 1.0, "source": "backend_tests_test_recipe_api_py", "target": "test_recipe_api_test_list_recipes_returns_seeded_data" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L14", "weight": 1.0, "_src": "test_recipe_api_new_ingredient", "_tgt": "test_recipe_api_admin_headers", "confidence_score": 1.0, "source": "test_recipe_api_admin_headers", "target": "test_recipe_api_new_ingredient" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L38", "weight": 1.0, "_src": "test_recipe_api_test_create_recipe_with_canonical_ingredients", "_tgt": "test_recipe_api_admin_headers", "confidence_score": 1.0, "source": "test_recipe_api_admin_headers", "target": "test_recipe_api_test_create_recipe_with_canonical_ingredients" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L59", "weight": 1.0, "_src": "test_recipe_api_test_create_recipe_rejects_unknown_ingredient_id", "_tgt": "test_recipe_api_admin_headers", "confidence_score": 1.0, "source": "test_recipe_api_admin_headers", "target": "test_recipe_api_test_create_recipe_rejects_unknown_ingredient_id" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L78", "weight": 1.0, "_src": "test_recipe_api_test_list_recipes_returns_seeded_data", "_tgt": "test_recipe_api_admin_headers", "confidence_score": 1.0, "source": "test_recipe_api_admin_headers", "target": "test_recipe_api_test_list_recipes_returns_seeded_data" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L21", "weight": 1.0, "_src": "test_recipe_api_test_create_recipe_with_canonical_ingredients", "_tgt": "test_recipe_api_new_ingredient", "confidence_score": 1.0, "source": "test_recipe_api_new_ingredient", "target": "test_recipe_api_test_create_recipe_with_canonical_ingredients" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_recipe_api.py", "source_location": "L64", "weight": 1.0, "_src": "test_recipe_api_test_list_recipes_returns_seeded_data", "_tgt": "test_recipe_api_new_ingredient", "confidence_score": 1.0, "source": "test_recipe_api_new_ingredient", "target": "test_recipe_api_test_list_recipes_returns_seeded_data" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L6", "weight": 1.0, "_src": "backend_tests_test_resolve_ingredient_py", "_tgt": "test_resolve_ingredient_admin", "confidence_score": 1.0, "source": "backend_tests_test_resolve_ingredient_py", "target": "test_resolve_ingredient_admin" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L10", "weight": 1.0, "_src": "backend_tests_test_resolve_ingredient_py", "_tgt": "test_resolve_ingredient_seed_ingredient", "confidence_score": 1.0, "source": "backend_tests_test_resolve_ingredient_py", "target": "test_resolve_ingredient_seed_ingredient" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L19", "weight": 1.0, "_src": "backend_tests_test_resolve_ingredient_py", "_tgt": "test_resolve_ingredient_test_resolve_ingredient_returns_top_three_candidates", "confidence_score": 1.0, "source": "backend_tests_test_resolve_ingredient_py", "target": "test_resolve_ingredient_test_resolve_ingredient_returns_top_three_candidates" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L38", "weight": 1.0, "_src": "backend_tests_test_resolve_ingredient_py", "_tgt": "test_resolve_ingredient_test_resolve_ingredient_handles_no_unit", "confidence_score": 1.0, "source": "backend_tests_test_resolve_ingredient_py", "target": "test_resolve_ingredient_test_resolve_ingredient_handles_no_unit" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L14", "weight": 1.0, "_src": "test_resolve_ingredient_seed_ingredient", "_tgt": "test_resolve_ingredient_admin", "confidence_score": 1.0, "source": "test_resolve_ingredient_admin", "target": "test_resolve_ingredient_seed_ingredient" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L27", "weight": 1.0, "_src": "test_resolve_ingredient_test_resolve_ingredient_returns_top_three_candidates", "_tgt": "test_resolve_ingredient_admin", "confidence_score": 1.0, "source": "test_resolve_ingredient_admin", "target": "test_resolve_ingredient_test_resolve_ingredient_returns_top_three_candidates" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L43", "weight": 1.0, "_src": "test_resolve_ingredient_test_resolve_ingredient_handles_no_unit", "_tgt": "test_resolve_ingredient_admin", "confidence_score": 1.0, "source": "test_resolve_ingredient_admin", "target": "test_resolve_ingredient_test_resolve_ingredient_handles_no_unit" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L20", "weight": 1.0, "_src": "test_resolve_ingredient_test_resolve_ingredient_returns_top_three_candidates", "_tgt": "test_resolve_ingredient_seed_ingredient", "confidence_score": 1.0, "source": "test_resolve_ingredient_seed_ingredient", "target": "test_resolve_ingredient_test_resolve_ingredient_returns_top_three_candidates" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_resolve_ingredient.py", "source_location": "L39", "weight": 1.0, "_src": "test_resolve_ingredient_test_resolve_ingredient_handles_no_unit", "_tgt": "test_resolve_ingredient_seed_ingredient", "confidence_score": 1.0, "source": "test_resolve_ingredient_seed_ingredient", "target": "test_resolve_ingredient_test_resolve_ingredient_handles_no_unit" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_matcher.py", "source_location": "L6", "weight": 1.0, "_src": "backend_tests_test_matcher_py", "_tgt": "test_matcher_test_build_match_pool_includes_aliases", "confidence_score": 1.0, "source": "backend_tests_test_matcher_py", "target": "test_matcher_test_build_match_pool_includes_aliases" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_matcher.py", "source_location": "L18", "weight": 1.0, "_src": "backend_tests_test_matcher_py", "_tgt": "test_matcher_test_rank_candidates_top_n_with_threshold", "confidence_score": 1.0, "source": "backend_tests_test_matcher_py", "target": "test_matcher_test_rank_candidates_top_n_with_threshold" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_matcher.py", "source_location": "L36", "weight": 1.0, "_src": "backend_tests_test_matcher_py", "_tgt": "test_matcher_test_rank_candidates_drops_below_threshold", "confidence_score": 1.0, "source": "backend_tests_test_matcher_py", "target": "test_matcher_test_rank_candidates_drops_below_threshold" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_match_hook.py", "source_location": "L6", "weight": 1.0, "_src": "backend_tests_test_match_hook_py", "_tgt": "test_match_hook_test_run_match_job_persists_top_matches", "confidence_score": 1.0, "source": "backend_tests_test_match_hook_py", "target": "test_match_hook_test_run_match_job_persists_top_matches" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_match_hook.py", "source_location": "L7", "weight": 1.0, "_src": "test_match_hook_rationale_7", "_tgt": "test_match_hook_test_run_match_job_persists_top_matches", "confidence_score": 1.0, "source": "test_match_hook_test_run_match_job_persists_top_matches", "target": "test_match_hook_rationale_7" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/conftest.py", "source_location": "L45", "weight": 1.0, "_src": "backend_tests_conftest_py", "_tgt": "conftest_resolve_test_dsn", "confidence_score": 1.0, "source": "backend_tests_conftest_py", "target": "conftest_resolve_test_dsn" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/conftest.py", "source_location": "L54", "weight": 1.0, "_src": "backend_tests_conftest_py", "_tgt": "conftest_postgres_reachable", "confidence_score": 1.0, "source": "backend_tests_conftest_py", "target": "conftest_postgres_reachable" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/conftest.py", "source_location": "L72", "weight": 1.0, "_src": "backend_tests_conftest_py", "_tgt": "conftest_pytest_collection_modifyitems", "confidence_score": 1.0, "source": "backend_tests_conftest_py", "target": "conftest_pytest_collection_modifyitems" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/conftest.py", "source_location": "L84", "weight": 1.0, "_src": "backend_tests_conftest_py", "_tgt": "conftest_pytest_configure", "confidence_score": 1.0, "source": "backend_tests_conftest_py", "target": "conftest_pytest_configure" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/conftest.py", "source_location": "L105", "weight": 1.0, "_src": "backend_tests_conftest_py", "_tgt": "conftest_schema", "confidence_score": 1.0, "source": "backend_tests_conftest_py", "target": "conftest_schema" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/conftest.py", "source_location": "L129", "weight": 1.0, "_src": "backend_tests_conftest_py", "_tgt": "conftest_engine", "confidence_score": 1.0, "source": "backend_tests_conftest_py", "target": "conftest_engine" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/conftest.py", "source_location": "L142", "weight": 1.0, "_src": "backend_tests_conftest_py", "_tgt": "conftest_db", "confidence_score": 1.0, "source": "backend_tests_conftest_py", "target": "conftest_db" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/conftest.py", "source_location": "L159", "weight": 1.0, "_src": "backend_tests_conftest_py", "_tgt": "conftest_db_session", "confidence_score": 1.0, "source": "backend_tests_conftest_py", "target": "conftest_db_session" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/conftest.py", "source_location": "L172", "weight": 1.0, "_src": "backend_tests_conftest_py", "_tgt": "conftest_client", "confidence_score": 1.0, "source": "backend_tests_conftest_py", "target": "conftest_client" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/conftest.py", "source_location": "L193", "weight": 1.0, "_src": "backend_tests_conftest_py", "_tgt": "conftest_client_no_db", "confidence_score": 1.0, "source": "backend_tests_conftest_py", "target": "conftest_client_no_db" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/conftest.py", "source_location": "L1", "weight": 1.0, "_src": "conftest_rationale_1", "_tgt": "backend_tests_conftest_py", "confidence_score": 1.0, "source": "backend_tests_conftest_py", "target": "conftest_rationale_1" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/conftest.py", "source_location": "L73", "weight": 1.0, "_src": "conftest_rationale_73", "_tgt": "conftest_pytest_collection_modifyitems", "confidence_score": 1.0, "source": "conftest_pytest_collection_modifyitems", "target": "conftest_rationale_73" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/conftest.py", "source_location": "L143", "weight": 1.0, "_src": "conftest_rationale_143", "_tgt": "conftest_db", "confidence_score": 1.0, "source": "conftest_db", "target": "conftest_rationale_143" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/conftest.py", "source_location": "L160", "weight": 1.0, "_src": "conftest_rationale_160", "_tgt": "conftest_db_session", "confidence_score": 1.0, "source": "conftest_db_session", "target": "conftest_rationale_160" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/conftest.py", "source_location": "L173", "weight": 1.0, "_src": "conftest_rationale_173", "_tgt": "conftest_client", "confidence_score": 1.0, "source": "conftest_client", "target": "conftest_rationale_173" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/conftest.py", "source_location": "L194", "weight": 1.0, "_src": "conftest_rationale_194", "_tgt": "conftest_client_no_db", "confidence_score": 1.0, "source": "conftest_client_no_db", "target": "conftest_rationale_194" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L6", "weight": 1.0, "_src": "backend_tests_test_ingredient_api_py", "_tgt": "test_ingredient_api_admin_headers", "confidence_score": 1.0, "source": "backend_tests_test_ingredient_api_py", "target": "test_ingredient_api_admin_headers" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L10", "weight": 1.0, "_src": "backend_tests_test_ingredient_api_py", "_tgt": "test_ingredient_api_test_create_ingredient_returns_201_with_id", "confidence_score": 1.0, "source": "backend_tests_test_ingredient_api_py", "target": "test_ingredient_api_test_create_ingredient_returns_201_with_id" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L24", "weight": 1.0, "_src": "backend_tests_test_ingredient_api_py", "_tgt": "test_ingredient_api_test_create_ingredient_rejects_duplicate_name", "confidence_score": 1.0, "source": "backend_tests_test_ingredient_api_py", "target": "test_ingredient_api_test_create_ingredient_rejects_duplicate_name" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L32", "weight": 1.0, "_src": "backend_tests_test_ingredient_api_py", "_tgt": "test_ingredient_api_test_list_ingredients_supports_search", "confidence_score": 1.0, "source": "backend_tests_test_ingredient_api_py", "target": "test_ingredient_api_test_list_ingredients_supports_search" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L44", "weight": 1.0, "_src": "backend_tests_test_ingredient_api_py", "_tgt": "test_ingredient_api_test_create_ingredient_requires_admin_token", "confidence_score": 1.0, "source": "backend_tests_test_ingredient_api_py", "target": "test_ingredient_api_test_create_ingredient_requires_admin_token" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L50", "weight": 1.0, "_src": "backend_tests_test_ingredient_api_py", "_tgt": "test_ingredient_api_test_update_ingredient_replaces_aliases", "confidence_score": 1.0, "source": "backend_tests_test_ingredient_api_py", "target": "test_ingredient_api_test_update_ingredient_replaces_aliases" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L66", "weight": 1.0, "_src": "backend_tests_test_ingredient_api_py", "_tgt": "test_ingredient_api_seed_grocery", "confidence_score": 1.0, "source": "backend_tests_test_ingredient_api_py", "target": "test_ingredient_api_seed_grocery" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L90", "weight": 1.0, "_src": "backend_tests_test_ingredient_api_py", "_tgt": "test_ingredient_api_test_pin_manual_match", "confidence_score": 1.0, "source": "backend_tests_test_ingredient_api_py", "target": "test_ingredient_api_test_pin_manual_match" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L110", "weight": 1.0, "_src": "backend_tests_test_ingredient_api_py", "_tgt": "test_ingredient_api_test_unpin_manual_match", "confidence_score": 1.0, "source": "backend_tests_test_ingredient_api_py", "target": "test_ingredient_api_test_unpin_manual_match" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L128", "weight": 1.0, "_src": "backend_tests_test_ingredient_api_py", "_tgt": "test_ingredient_api_test_delete_ingredient_removes_row", "confidence_score": 1.0, "source": "backend_tests_test_ingredient_api_py", "target": "test_ingredient_api_test_delete_ingredient_removes_row" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L17", "weight": 1.0, "_src": "test_ingredient_api_test_create_ingredient_returns_201_with_id", "_tgt": "test_ingredient_api_admin_headers", "confidence_score": 1.0, "source": "test_ingredient_api_admin_headers", "target": "test_ingredient_api_test_create_ingredient_returns_201_with_id" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L26", "weight": 1.0, "_src": "test_ingredient_api_test_create_ingredient_rejects_duplicate_name", "_tgt": "test_ingredient_api_admin_headers", "confidence_score": 1.0, "source": "test_ingredient_api_admin_headers", "target": "test_ingredient_api_test_create_ingredient_rejects_duplicate_name" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L36", "weight": 1.0, "_src": "test_ingredient_api_test_list_ingredients_supports_search", "_tgt": "test_ingredient_api_admin_headers", "confidence_score": 1.0, "source": "test_ingredient_api_admin_headers", "target": "test_ingredient_api_test_list_ingredients_supports_search" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L54", "weight": 1.0, "_src": "test_ingredient_api_test_update_ingredient_replaces_aliases", "_tgt": "test_ingredient_api_admin_headers", "confidence_score": 1.0, "source": "test_ingredient_api_admin_headers", "target": "test_ingredient_api_test_update_ingredient_replaces_aliases" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L94", "weight": 1.0, "_src": "test_ingredient_api_test_pin_manual_match", "_tgt": "test_ingredient_api_admin_headers", "confidence_score": 1.0, "source": "test_ingredient_api_admin_headers", "target": "test_ingredient_api_test_pin_manual_match" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L114", "weight": 1.0, "_src": "test_ingredient_api_test_unpin_manual_match", "_tgt": "test_ingredient_api_admin_headers", "confidence_score": 1.0, "source": "test_ingredient_api_admin_headers", "target": "test_ingredient_api_test_unpin_manual_match" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L132", "weight": 1.0, "_src": "test_ingredient_api_test_delete_ingredient_removes_row", "_tgt": "test_ingredient_api_admin_headers", "confidence_score": 1.0, "source": "test_ingredient_api_admin_headers", "target": "test_ingredient_api_test_delete_ingredient_removes_row" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L97", "weight": 1.0, "_src": "test_ingredient_api_test_pin_manual_match", "_tgt": "test_ingredient_api_seed_grocery", "confidence_score": 1.0, "source": "test_ingredient_api_seed_grocery", "target": "test_ingredient_api_test_pin_manual_match" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_ingredient_api.py", "source_location": "L117", "weight": 1.0, "_src": "test_ingredient_api_test_unpin_manual_match", "_tgt": "test_ingredient_api_seed_grocery", "confidence_score": 1.0, "source": "test_ingredient_api_seed_grocery", "target": "test_ingredient_api_test_unpin_manual_match" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L6", "weight": 1.0, "_src": "backend_tests_test_never_suggest_api_py", "_tgt": "test_never_suggest_api_admin", "confidence_score": 1.0, "source": "backend_tests_test_never_suggest_api_py", "target": "test_never_suggest_api_admin" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L10", "weight": 1.0, "_src": "backend_tests_test_never_suggest_api_py", "_tgt": "test_never_suggest_api_seed_family", "confidence_score": 1.0, "source": "backend_tests_test_never_suggest_api_py", "target": "test_never_suggest_api_seed_family" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L29", "weight": 1.0, "_src": "backend_tests_test_never_suggest_api_py", "_tgt": "test_never_suggest_api_test_block_ingredient", "confidence_score": 1.0, "source": "backend_tests_test_never_suggest_api_py", "target": "test_never_suggest_api_test_block_ingredient" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L46", "weight": 1.0, "_src": "backend_tests_test_never_suggest_api_py", "_tgt": "test_never_suggest_api_test_list_never_suggest_for_family", "confidence_score": 1.0, "source": "backend_tests_test_never_suggest_api_py", "target": "test_never_suggest_api_test_list_never_suggest_for_family" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L63", "weight": 1.0, "_src": "backend_tests_test_never_suggest_api_py", "_tgt": "test_never_suggest_api_test_unblock_removes_row", "confidence_score": 1.0, "source": "backend_tests_test_never_suggest_api_py", "target": "test_never_suggest_api_test_unblock_removes_row" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L34", "weight": 1.0, "_src": "test_never_suggest_api_test_block_ingredient", "_tgt": "test_never_suggest_api_admin", "confidence_score": 1.0, "source": "test_never_suggest_api_admin", "target": "test_never_suggest_api_test_block_ingredient" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L51", "weight": 1.0, "_src": "test_never_suggest_api_test_list_never_suggest_for_family", "_tgt": "test_never_suggest_api_admin", "confidence_score": 1.0, "source": "test_never_suggest_api_admin", "target": "test_never_suggest_api_test_list_never_suggest_for_family" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L68", "weight": 1.0, "_src": "test_never_suggest_api_test_unblock_removes_row", "_tgt": "test_never_suggest_api_admin", "confidence_score": 1.0, "source": "test_never_suggest_api_admin", "target": "test_never_suggest_api_test_unblock_removes_row" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L30", "weight": 1.0, "_src": "test_never_suggest_api_test_block_ingredient", "_tgt": "test_never_suggest_api_seed_family", "confidence_score": 1.0, "source": "test_never_suggest_api_seed_family", "target": "test_never_suggest_api_test_block_ingredient" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L47", "weight": 1.0, "_src": "test_never_suggest_api_test_list_never_suggest_for_family", "_tgt": "test_never_suggest_api_seed_family", "confidence_score": 1.0, "source": "test_never_suggest_api_seed_family", "target": "test_never_suggest_api_test_list_never_suggest_for_family" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_never_suggest_api.py", "source_location": "L64", "weight": 1.0, "_src": "test_never_suggest_api_test_unblock_removes_row", "_tgt": "test_never_suggest_api_seed_family", "confidence_score": 1.0, "source": "test_never_suggest_api_seed_family", "target": "test_never_suggest_api_test_unblock_removes_row" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L7", "weight": 1.0, "_src": "backend_tests_test_thin_phase4_smoke_py", "_tgt": "test_thin_phase4_smoke_admin", "confidence_score": 1.0, "source": "backend_tests_test_thin_phase4_smoke_py", "target": "test_thin_phase4_smoke_admin" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L11", "weight": 1.0, "_src": "backend_tests_test_thin_phase4_smoke_py", "_tgt": "test_thin_phase4_smoke_test_seed_data_present_and_resolvable", "confidence_score": 1.0, "source": "backend_tests_test_thin_phase4_smoke_py", "target": "test_thin_phase4_smoke_test_seed_data_present_and_resolvable" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L18", "weight": 1.0, "_src": "backend_tests_test_thin_phase4_smoke_py", "_tgt": "test_thin_phase4_smoke_test_resolve_against_seeded_ingredients", "confidence_score": 1.0, "source": "backend_tests_test_thin_phase4_smoke_py", "target": "test_thin_phase4_smoke_test_resolve_against_seeded_ingredients" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L30", "weight": 1.0, "_src": "backend_tests_test_thin_phase4_smoke_py", "_tgt": "test_thin_phase4_smoke_test_match_job_runs_against_seeded_data", "confidence_score": 1.0, "source": "backend_tests_test_thin_phase4_smoke_py", "target": "test_thin_phase4_smoke_test_match_job_runs_against_seeded_data" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L1", "weight": 1.0, "_src": "test_thin_phase4_smoke_rationale_1", "_tgt": "backend_tests_test_thin_phase4_smoke_py", "confidence_score": 1.0, "source": "backend_tests_test_thin_phase4_smoke_py", "target": "test_thin_phase4_smoke_rationale_1" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_thin_phase4_smoke.py", "source_location": "L22", "weight": 1.0, "_src": "test_thin_phase4_smoke_test_resolve_against_seeded_ingredients", "_tgt": "test_thin_phase4_smoke_admin", "confidence_score": 1.0, "source": "test_thin_phase4_smoke_admin", "target": "test_thin_phase4_smoke_test_resolve_against_seeded_ingredients" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_cost.py", "source_location": "L10", "weight": 1.0, "_src": "backend_tests_test_planner_cost_py", "_tgt": "test_planner_cost_ingredient", "confidence_score": 1.0, "source": "backend_tests_test_planner_cost_py", "target": "test_planner_cost_ingredient" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_cost.py", "source_location": "L14", "weight": 1.0, "_src": "backend_tests_test_planner_cost_py", "_tgt": "test_planner_cost_match", "confidence_score": 1.0, "source": "backend_tests_test_planner_cost_py", "target": "test_planner_cost_match" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_cost.py", "source_location": "L25", "weight": 1.0, "_src": "backend_tests_test_planner_cost_py", "_tgt": "test_planner_cost_test_compute_recipe_cost_sums_ingredient_costs", "confidence_score": 1.0, "source": "backend_tests_test_planner_cost_py", "target": "test_planner_cost_test_compute_recipe_cost_sums_ingredient_costs" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_cost.py", "source_location": "L51", "weight": 1.0, "_src": "backend_tests_test_planner_cost_py", "_tgt": "test_planner_cost_test_unmatched_ingredient_zero_cost_and_savings", "confidence_score": 1.0, "source": "backend_tests_test_planner_cost_py", "target": "test_planner_cost_test_unmatched_ingredient_zero_cost_and_savings" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_cost.py", "source_location": "L65", "weight": 1.0, "_src": "backend_tests_test_planner_cost_py", "_tgt": "test_planner_cost_test_pantry_hits_counted", "confidence_score": 1.0, "source": "backend_tests_test_planner_cost_py", "target": "test_planner_cost_test_pantry_hits_counted" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_cost.py", "source_location": "L37", "weight": 1.0, "_src": "test_planner_cost_test_compute_recipe_cost_sums_ingredient_costs", "_tgt": "test_planner_cost_ingredient", "confidence_score": 1.0, "source": "test_planner_cost_ingredient", "target": "test_planner_cost_test_compute_recipe_cost_sums_ingredient_costs" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_cost.py", "source_location": "L56", "weight": 1.0, "_src": "test_planner_cost_test_unmatched_ingredient_zero_cost_and_savings", "_tgt": "test_planner_cost_ingredient", "confidence_score": 1.0, "source": "test_planner_cost_ingredient", "target": "test_planner_cost_test_unmatched_ingredient_zero_cost_and_savings" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_cost.py", "source_location": "L75", "weight": 1.0, "_src": "test_planner_cost_test_pantry_hits_counted", "_tgt": "test_planner_cost_ingredient", "confidence_score": 1.0, "source": "test_planner_cost_ingredient", "target": "test_planner_cost_test_pantry_hits_counted" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_cost.py", "source_location": "L30", "weight": 1.0, "_src": "test_planner_cost_test_compute_recipe_cost_sums_ingredient_costs", "_tgt": "test_planner_cost_match", "confidence_score": 1.0, "source": "test_planner_cost_match", "target": "test_planner_cost_test_compute_recipe_cost_sums_ingredient_costs" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_cost.py", "source_location": "L70", "weight": 1.0, "_src": "test_planner_cost_test_pantry_hits_counted", "_tgt": "test_planner_cost_match", "confidence_score": 1.0, "source": "test_planner_cost_match", "target": "test_planner_cost_test_pantry_hits_counted" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L15", "weight": 1.0, "_src": "backend_tests_test_planner_filter_py", "_tgt": "test_planner_filter_recipe", "confidence_score": 1.0, "source": "backend_tests_test_planner_filter_py", "target": "test_planner_filter_recipe" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L35", "weight": 1.0, "_src": "backend_tests_test_planner_filter_py", "_tgt": "test_planner_filter_cost", "confidence_score": 1.0, "source": "backend_tests_test_planner_filter_py", "target": "test_planner_filter_cost" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L48", "weight": 1.0, "_src": "backend_tests_test_planner_filter_py", "_tgt": "test_planner_filter_test_filter_blocks_by_never_suggest_ingredient", "confidence_score": 1.0, "source": "backend_tests_test_planner_filter_py", "target": "test_planner_filter_test_filter_blocks_by_never_suggest_ingredient" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L70", "weight": 1.0, "_src": "backend_tests_test_planner_filter_py", "_tgt": "test_planner_filter_test_filter_blocks_by_never_suggest_recipe", "confidence_score": 1.0, "source": "backend_tests_test_planner_filter_py", "target": "test_planner_filter_test_filter_blocks_by_never_suggest_recipe" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L87", "weight": 1.0, "_src": "backend_tests_test_planner_filter_py", "_tgt": "test_planner_filter_test_filter_blocks_by_recency", "confidence_score": 1.0, "source": "backend_tests_test_planner_filter_py", "target": "test_planner_filter_test_filter_blocks_by_recency" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L104", "weight": 1.0, "_src": "backend_tests_test_planner_filter_py", "_tgt": "test_planner_filter_test_filter_blocks_by_calories", "confidence_score": 1.0, "source": "backend_tests_test_planner_filter_py", "target": "test_planner_filter_test_filter_blocks_by_calories" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L122", "weight": 1.0, "_src": "backend_tests_test_planner_filter_py", "_tgt": "test_planner_filter_test_filter_blocks_by_time", "confidence_score": 1.0, "source": "backend_tests_test_planner_filter_py", "target": "test_planner_filter_test_filter_blocks_by_time" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L140", "weight": 1.0, "_src": "backend_tests_test_planner_filter_py", "_tgt": "test_planner_filter_test_filter_blocks_by_cost", "confidence_score": 1.0, "source": "backend_tests_test_planner_filter_py", "target": "test_planner_filter_test_filter_blocks_by_cost" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L158", "weight": 1.0, "_src": "backend_tests_test_planner_filter_py", "_tgt": "test_planner_filter_test_filter_passes_when_calorie_target_is_none", "confidence_score": 1.0, "source": "backend_tests_test_planner_filter_py", "target": "test_planner_filter_test_filter_passes_when_calorie_target_is_none" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L174", "weight": 1.0, "_src": "backend_tests_test_planner_filter_py", "_tgt": "test_planner_filter_test_filter_blocks_recipe_with_null_calories_when_target_set", "confidence_score": 1.0, "source": "backend_tests_test_planner_filter_py", "target": "test_planner_filter_test_filter_blocks_recipe_with_null_calories_when_target_set" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L49", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_never_suggest_ingredient", "_tgt": "test_planner_filter_recipe", "confidence_score": 1.0, "source": "test_planner_filter_recipe", "target": "test_planner_filter_test_filter_blocks_by_never_suggest_ingredient" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L71", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_never_suggest_recipe", "_tgt": "test_planner_filter_recipe", "confidence_score": 1.0, "source": "test_planner_filter_recipe", "target": "test_planner_filter_test_filter_blocks_by_never_suggest_recipe" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L88", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_recency", "_tgt": "test_planner_filter_recipe", "confidence_score": 1.0, "source": "test_planner_filter_recipe", "target": "test_planner_filter_test_filter_blocks_by_recency" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L105", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_calories", "_tgt": "test_planner_filter_recipe", "confidence_score": 1.0, "source": "test_planner_filter_recipe", "target": "test_planner_filter_test_filter_blocks_by_calories" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L123", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_time", "_tgt": "test_planner_filter_recipe", "confidence_score": 1.0, "source": "test_planner_filter_recipe", "target": "test_planner_filter_test_filter_blocks_by_time" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L141", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_cost", "_tgt": "test_planner_filter_recipe", "confidence_score": 1.0, "source": "test_planner_filter_recipe", "target": "test_planner_filter_test_filter_blocks_by_cost" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L159", "weight": 1.0, "_src": "test_planner_filter_test_filter_passes_when_calorie_target_is_none", "_tgt": "test_planner_filter_recipe", "confidence_score": 1.0, "source": "test_planner_filter_recipe", "target": "test_planner_filter_test_filter_passes_when_calorie_target_is_none" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L175", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_recipe_with_null_calories_when_target_set", "_tgt": "test_planner_filter_recipe", "confidence_score": 1.0, "source": "test_planner_filter_recipe", "target": "test_planner_filter_test_filter_blocks_recipe_with_null_calories_when_target_set" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L57", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_never_suggest_ingredient", "_tgt": "test_planner_filter_cost", "confidence_score": 1.0, "source": "test_planner_filter_cost", "target": "test_planner_filter_test_filter_blocks_by_never_suggest_ingredient" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L75", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_never_suggest_recipe", "_tgt": "test_planner_filter_cost", "confidence_score": 1.0, "source": "test_planner_filter_cost", "target": "test_planner_filter_test_filter_blocks_by_never_suggest_recipe" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L93", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_recency", "_tgt": "test_planner_filter_cost", "confidence_score": 1.0, "source": "test_planner_filter_cost", "target": "test_planner_filter_test_filter_blocks_by_recency" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L110", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_calories", "_tgt": "test_planner_filter_cost", "confidence_score": 1.0, "source": "test_planner_filter_cost", "target": "test_planner_filter_test_filter_blocks_by_calories" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L128", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_time", "_tgt": "test_planner_filter_cost", "confidence_score": 1.0, "source": "test_planner_filter_cost", "target": "test_planner_filter_test_filter_blocks_by_time" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L146", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_by_cost", "_tgt": "test_planner_filter_cost", "confidence_score": 1.0, "source": "test_planner_filter_cost", "target": "test_planner_filter_test_filter_blocks_by_cost" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L163", "weight": 1.0, "_src": "test_planner_filter_test_filter_passes_when_calorie_target_is_none", "_tgt": "test_planner_filter_cost", "confidence_score": 1.0, "source": "test_planner_filter_cost", "target": "test_planner_filter_test_filter_passes_when_calorie_target_is_none" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_filter.py", "source_location": "L179", "weight": 1.0, "_src": "test_planner_filter_test_filter_blocks_recipe_with_null_calories_when_target_set", "_tgt": "test_planner_filter_cost", "confidence_score": 1.0, "source": "test_planner_filter_cost", "target": "test_planner_filter_test_filter_blocks_recipe_with_null_calories_when_target_set" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_score.py", "source_location": "L18", "weight": 1.0, "_src": "backend_tests_test_planner_score_py", "_tgt": "test_planner_score_test_time_bonus_capped_at_ideal", "confidence_score": 1.0, "source": "backend_tests_test_planner_score_py", "target": "test_planner_score_test_time_bonus_capped_at_ideal" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_score.py", "source_location": "L23", "weight": 1.0, "_src": "backend_tests_test_planner_score_py", "_tgt": "test_planner_score_test_time_bonus_decays_to_zero_at_full", "confidence_score": 1.0, "source": "backend_tests_test_planner_score_py", "target": "test_planner_score_test_time_bonus_decays_to_zero_at_full" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_score.py", "source_location": "L27", "weight": 1.0, "_src": "backend_tests_test_planner_score_py", "_tgt": "test_planner_score_test_time_bonus_linear_midpoint", "confidence_score": 1.0, "source": "backend_tests_test_planner_score_py", "target": "test_planner_score_test_time_bonus_linear_midpoint" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_score.py", "source_location": "L32", "weight": 1.0, "_src": "backend_tests_test_planner_score_py", "_tgt": "test_planner_score_test_recency_bonus_full_when_long_ago", "confidence_score": 1.0, "source": "backend_tests_test_planner_score_py", "target": "test_planner_score_test_recency_bonus_full_when_long_ago" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_score.py", "source_location": "L38", "weight": 1.0, "_src": "backend_tests_test_planner_score_py", "_tgt": "test_planner_score_test_recency_bonus_zero_when_just_eligible", "confidence_score": 1.0, "source": "backend_tests_test_planner_score_py", "target": "test_planner_score_test_recency_bonus_zero_when_just_eligible" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_score.py", "source_location": "L45", "weight": 1.0, "_src": "backend_tests_test_planner_score_py", "_tgt": "test_planner_score_test_recency_bonus_full_when_never_cooked", "confidence_score": 1.0, "source": "backend_tests_test_planner_score_py", "target": "test_planner_score_test_recency_bonus_full_when_never_cooked" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_score.py", "source_location": "L49", "weight": 1.0, "_src": "backend_tests_test_planner_score_py", "_tgt": "test_planner_score_test_normalize_savings_minmax", "confidence_score": 1.0, "source": "backend_tests_test_planner_score_py", "target": "test_planner_score_test_normalize_savings_minmax" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_score.py", "source_location": "L54", "weight": 1.0, "_src": "backend_tests_test_planner_score_py", "_tgt": "test_planner_score_test_normalize_savings_uniform_returns_zeros", "confidence_score": 1.0, "source": "backend_tests_test_planner_score_py", "target": "test_planner_score_test_normalize_savings_uniform_returns_zeros" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_score.py", "source_location": "L59", "weight": 1.0, "_src": "backend_tests_test_planner_score_py", "_tgt": "test_planner_score_test_score_recipes_orders_by_combined_score", "confidence_score": 1.0, "source": "backend_tests_test_planner_score_py", "target": "test_planner_score_test_score_recipes_orders_by_combined_score" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_select.py", "source_location": "L12", "weight": 1.0, "_src": "backend_tests_test_planner_select_py", "_tgt": "test_planner_select_mk", "confidence_score": 1.0, "source": "backend_tests_test_planner_select_py", "target": "test_planner_select_mk" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_select.py", "source_location": "L33", "weight": 1.0, "_src": "backend_tests_test_planner_select_py", "_tgt": "test_planner_select_test_diversity_penalty_zero_when_all_unique", "confidence_score": 1.0, "source": "backend_tests_test_planner_select_py", "target": "test_planner_select_test_diversity_penalty_zero_when_all_unique" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_select.py", "source_location": "L40", "weight": 1.0, "_src": "backend_tests_test_planner_select_py", "_tgt": "test_planner_select_test_diversity_penalty_three_chickens", "confidence_score": 1.0, "source": "backend_tests_test_planner_select_py", "target": "test_planner_select_test_diversity_penalty_three_chickens" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_select.py", "source_location": "L49", "weight": 1.0, "_src": "backend_tests_test_planner_select_py", "_tgt": "test_planner_select_test_select_set_picks_diverse_over_homogeneous", "confidence_score": 1.0, "source": "backend_tests_test_planner_select_py", "target": "test_planner_select_test_select_set_picks_diverse_over_homogeneous" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_select.py", "source_location": "L68", "weight": 1.0, "_src": "backend_tests_test_planner_select_py", "_tgt": "test_planner_select_test_select_set_handles_too_few", "confidence_score": 1.0, "source": "backend_tests_test_planner_select_py", "target": "test_planner_select_test_select_set_handles_too_few" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_select.py", "source_location": "L75", "weight": 1.0, "_src": "backend_tests_test_planner_select_py", "_tgt": "test_planner_select_test_select_set_empty_input", "confidence_score": 1.0, "source": "backend_tests_test_planner_select_py", "target": "test_planner_select_test_select_set_empty_input" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_select.py", "source_location": "L34", "weight": 1.0, "_src": "test_planner_select_test_diversity_penalty_zero_when_all_unique", "_tgt": "test_planner_select_mk", "confidence_score": 1.0, "source": "test_planner_select_mk", "target": "test_planner_select_test_diversity_penalty_zero_when_all_unique" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_select.py", "source_location": "L41", "weight": 1.0, "_src": "test_planner_select_test_diversity_penalty_three_chickens", "_tgt": "test_planner_select_mk", "confidence_score": 1.0, "source": "test_planner_select_mk", "target": "test_planner_select_test_diversity_penalty_three_chickens" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_select.py", "source_location": "L56", "weight": 1.0, "_src": "test_planner_select_test_select_set_picks_diverse_over_homogeneous", "_tgt": "test_planner_select_mk", "confidence_score": 1.0, "source": "test_planner_select_mk", "target": "test_planner_select_test_select_set_picks_diverse_over_homogeneous" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_select.py", "source_location": "L69", "weight": 1.0, "_src": "test_planner_select_test_select_set_handles_too_few", "_tgt": "test_planner_select_mk", "confidence_score": 1.0, "source": "test_planner_select_mk", "target": "test_planner_select_test_select_set_handles_too_few" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_select.py", "source_location": "L50", "weight": 1.0, "_src": "test_planner_select_rationale_50", "_tgt": "test_planner_select_test_select_set_picks_diverse_over_homogeneous", "confidence_score": 1.0, "source": "test_planner_select_test_select_set_picks_diverse_over_homogeneous", "target": "test_planner_select_rationale_50" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_generate.py", "source_location": "L10", "weight": 1.0, "_src": "backend_tests_test_planner_generate_py", "_tgt": "test_planner_generate_test_generate_meal_plan_against_seeded_data", "confidence_score": 1.0, "source": "backend_tests_test_planner_generate_py", "target": "test_planner_generate_test_generate_meal_plan_against_seeded_data" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_planner_generate.py", "source_location": "L11", "weight": 1.0, "_src": "test_planner_generate_rationale_11", "_tgt": "test_planner_generate_test_generate_meal_plan_against_seeded_data", "confidence_score": 1.0, "source": "test_planner_generate_test_generate_meal_plan_against_seeded_data", "target": "test_planner_generate_rationale_11" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L10", "weight": 1.0, "_src": "backend_tests_test_meal_plan_generate_api_py", "_tgt": "test_meal_plan_generate_api_admin", "confidence_score": 1.0, "source": "backend_tests_test_meal_plan_generate_api_py", "target": "test_meal_plan_generate_api_admin" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L15", "weight": 1.0, "_src": "backend_tests_test_meal_plan_generate_api_py", "_tgt": "test_meal_plan_generate_api_family_with_groceries", "confidence_score": 1.0, "source": "backend_tests_test_meal_plan_generate_api_py", "target": "test_meal_plan_generate_api_family_with_groceries" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L50", "weight": 1.0, "_src": "backend_tests_test_meal_plan_generate_api_py", "_tgt": "test_meal_plan_generate_api_test_generate_endpoint_returns_meal_plan", "confidence_score": 1.0, "source": "backend_tests_test_meal_plan_generate_api_py", "target": "test_meal_plan_generate_api_test_generate_endpoint_returns_meal_plan" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L64", "weight": 1.0, "_src": "backend_tests_test_meal_plan_generate_api_py", "_tgt": "test_meal_plan_generate_api_test_generate_endpoint_requires_admin_token", "confidence_score": 1.0, "source": "backend_tests_test_meal_plan_generate_api_py", "target": "test_meal_plan_generate_api_test_generate_endpoint_requires_admin_token" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L73", "weight": 1.0, "_src": "backend_tests_test_meal_plan_generate_api_py", "_tgt": "test_meal_plan_generate_api_test_generate_endpoint_returns_404_for_unknown_family", "confidence_score": 1.0, "source": "backend_tests_test_meal_plan_generate_api_py", "target": "test_meal_plan_generate_api_test_generate_endpoint_returns_404_for_unknown_family" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L55", "weight": 1.0, "_src": "test_meal_plan_generate_api_test_generate_endpoint_returns_meal_plan", "_tgt": "test_meal_plan_generate_api_admin", "confidence_score": 1.0, "source": "test_meal_plan_generate_api_admin", "target": "test_meal_plan_generate_api_test_generate_endpoint_returns_meal_plan" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_meal_plan_generate_api.py", "source_location": "L78", "weight": 1.0, "_src": "test_meal_plan_generate_api_test_generate_endpoint_returns_404_for_unknown_family", "_tgt": "test_meal_plan_generate_api_admin", "confidence_score": 1.0, "source": "test_meal_plan_generate_api_admin", "target": "test_meal_plan_generate_api_test_generate_endpoint_returns_404_for_unknown_family" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L34", "weight": 1.0, "_src": "backend_tests_test_swiftly_auth_py", "_tgt": "test_swiftly_auth_clear_cache", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_auth_py", "target": "test_swiftly_auth_clear_cache" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L40", "weight": 1.0, "_src": "backend_tests_test_swiftly_auth_py", "_tgt": "test_swiftly_auth_b64url", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_auth_py", "target": "test_swiftly_auth_b64url" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L44", "weight": 1.0, "_src": "backend_tests_test_swiftly_auth_py", "_tgt": "test_swiftly_auth_make_jwt", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_auth_py", "target": "test_swiftly_auth_make_jwt" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L53", "weight": 1.0, "_src": "backend_tests_test_swiftly_auth_py", "_tgt": "test_swiftly_auth_config_response", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_auth_py", "target": "test_swiftly_auth_config_response" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L60", "weight": 1.0, "_src": "backend_tests_test_swiftly_auth_py", "_tgt": "test_swiftly_auth_signup_response", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_auth_py", "target": "test_swiftly_auth_signup_response" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L71", "weight": 1.0, "_src": "backend_tests_test_swiftly_auth_py", "_tgt": "test_swiftly_auth_test_get_token_mints_fresh_when_cache_empty", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_auth_py", "target": "test_swiftly_auth_test_get_token_mints_fresh_when_cache_empty" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L99", "weight": 1.0, "_src": "backend_tests_test_swiftly_auth_py", "_tgt": "test_swiftly_auth_test_get_token_returns_cached_without_reminting", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_auth_py", "target": "test_swiftly_auth_test_get_token_returns_cached_without_reminting" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L118", "weight": 1.0, "_src": "backend_tests_test_swiftly_auth_py", "_tgt": "test_swiftly_auth_test_get_token_remints_when_cached_token_near_expiry", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_auth_py", "target": "test_swiftly_auth_test_get_token_remints_when_cached_token_near_expiry" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L140", "weight": 1.0, "_src": "backend_tests_test_swiftly_auth_py", "_tgt": "test_swiftly_auth_test_mint_raises_on_firebase_non_200", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_auth_py", "target": "test_swiftly_auth_test_mint_raises_on_firebase_non_200" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L1", "weight": 1.0, "_src": "test_swiftly_auth_rationale_1", "_tgt": "backend_tests_test_swiftly_auth_py", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_auth_py", "target": "test_swiftly_auth_rationale_1" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L45", "weight": 1.0, "_src": "test_swiftly_auth_make_jwt", "_tgt": "test_swiftly_auth_b64url", "confidence_score": 1.0, "source": "test_swiftly_auth_b64url", "target": "test_swiftly_auth_make_jwt" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L74", "weight": 1.0, "_src": "test_swiftly_auth_test_get_token_mints_fresh_when_cache_empty", "_tgt": "test_swiftly_auth_make_jwt", "confidence_score": 1.0, "source": "test_swiftly_auth_make_jwt", "target": "test_swiftly_auth_test_get_token_mints_fresh_when_cache_empty" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L102", "weight": 1.0, "_src": "test_swiftly_auth_test_get_token_returns_cached_without_reminting", "_tgt": "test_swiftly_auth_make_jwt", "confidence_score": 1.0, "source": "test_swiftly_auth_make_jwt", "target": "test_swiftly_auth_test_get_token_returns_cached_without_reminting" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L122", "weight": 1.0, "_src": "test_swiftly_auth_test_get_token_remints_when_cached_token_near_expiry", "_tgt": "test_swiftly_auth_make_jwt", "confidence_score": 1.0, "source": "test_swiftly_auth_make_jwt", "target": "test_swiftly_auth_test_get_token_remints_when_cached_token_near_expiry" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L77", "weight": 1.0, "_src": "test_swiftly_auth_test_get_token_mints_fresh_when_cache_empty", "_tgt": "test_swiftly_auth_config_response", "confidence_score": 1.0, "source": "test_swiftly_auth_config_response", "target": "test_swiftly_auth_test_get_token_mints_fresh_when_cache_empty" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L105", "weight": 1.0, "_src": "test_swiftly_auth_test_get_token_returns_cached_without_reminting", "_tgt": "test_swiftly_auth_config_response", "confidence_score": 1.0, "source": "test_swiftly_auth_config_response", "target": "test_swiftly_auth_test_get_token_returns_cached_without_reminting" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L143", "weight": 1.0, "_src": "test_swiftly_auth_test_mint_raises_on_firebase_non_200", "_tgt": "test_swiftly_auth_config_response", "confidence_score": 1.0, "source": "test_swiftly_auth_config_response", "target": "test_swiftly_auth_test_mint_raises_on_firebase_non_200" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L81", "weight": 1.0, "_src": "test_swiftly_auth_test_get_token_mints_fresh_when_cache_empty", "_tgt": "test_swiftly_auth_signup_response", "confidence_score": 1.0, "source": "test_swiftly_auth_signup_response", "target": "test_swiftly_auth_test_get_token_mints_fresh_when_cache_empty" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L109", "weight": 1.0, "_src": "test_swiftly_auth_test_get_token_returns_cached_without_reminting", "_tgt": "test_swiftly_auth_signup_response", "confidence_score": 1.0, "source": "test_swiftly_auth_signup_response", "target": "test_swiftly_auth_test_get_token_returns_cached_without_reminting" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L132", "weight": 1.0, "_src": "test_swiftly_auth_test_get_token_remints_when_cached_token_near_expiry", "_tgt": "test_swiftly_auth_signup_response", "confidence_score": 1.0, "source": "test_swiftly_auth_signup_response", "target": "test_swiftly_auth_test_get_token_remints_when_cached_token_near_expiry" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L147", "weight": 1.0, "_src": "test_swiftly_auth_test_mint_raises_on_firebase_non_200", "_tgt": "test_swiftly_auth_signup_response", "confidence_score": 1.0, "source": "test_swiftly_auth_signup_response", "target": "test_swiftly_auth_test_mint_raises_on_firebase_non_200" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L72", "weight": 1.0, "_src": "test_swiftly_auth_rationale_72", "_tgt": "test_swiftly_auth_test_get_token_mints_fresh_when_cache_empty", "confidence_score": 1.0, "source": "test_swiftly_auth_test_get_token_mints_fresh_when_cache_empty", "target": "test_swiftly_auth_rationale_72" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L100", "weight": 1.0, "_src": "test_swiftly_auth_rationale_100", "_tgt": "test_swiftly_auth_test_get_token_returns_cached_without_reminting", "confidence_score": 1.0, "source": "test_swiftly_auth_test_get_token_returns_cached_without_reminting", "target": "test_swiftly_auth_rationale_100" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L119", "weight": 1.0, "_src": "test_swiftly_auth_rationale_119", "_tgt": "test_swiftly_auth_test_get_token_remints_when_cached_token_near_expiry", "confidence_score": 1.0, "source": "test_swiftly_auth_test_get_token_remints_when_cached_token_near_expiry", "target": "test_swiftly_auth_rationale_119" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_auth.py", "source_location": "L141", "weight": 1.0, "_src": "test_swiftly_auth_rationale_141", "_tgt": "test_swiftly_auth_test_mint_raises_on_firebase_non_200", "confidence_score": 1.0, "source": "test_swiftly_auth_test_mint_raises_on_firebase_non_200", "target": "test_swiftly_auth_rationale_141" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L40", "weight": 1.0, "_src": "backend_tests_test_swiftly_api_py", "_tgt": "test_swiftly_api_test_parse_categories_fixture", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_api_py", "target": "test_swiftly_api_test_parse_categories_fixture" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L57", "weight": 1.0, "_src": "backend_tests_test_swiftly_api_py", "_tgt": "test_swiftly_api_test_parse_category_response_fixture", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_api_py", "target": "test_swiftly_api_test_parse_category_response_fixture" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L107", "weight": 1.0, "_src": "backend_tests_test_swiftly_api_py", "_tgt": "test_swiftly_api_test_map_product_returns_none_for_unparseable", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_api_py", "target": "test_swiftly_api_test_map_product_returns_none_for_unparseable" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L121", "weight": 1.0, "_src": "backend_tests_test_swiftly_api_py", "_tgt": "test_swiftly_api_mock_response", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_api_py", "target": "test_swiftly_api_mock_response" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L135", "weight": 1.0, "_src": "backend_tests_test_swiftly_api_py", "_tgt": "test_swiftly_api_test_swiftly_auth_error_on_401_from_api", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_api_py", "target": "test_swiftly_api_test_swiftly_auth_error_on_401_from_api" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L146", "weight": 1.0, "_src": "backend_tests_test_swiftly_api_py", "_tgt": "test_swiftly_api_test_fetch_category_mints_token_when_none_pinned", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_api_py", "target": "test_swiftly_api_test_fetch_category_mints_token_when_none_pinned" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L171", "weight": 1.0, "_src": "backend_tests_test_swiftly_api_py", "_tgt": "test_swiftly_api_test_background_runner_writes_failed_with_token_message", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_api_py", "target": "test_swiftly_api_test_background_runner_writes_failed_with_token_message" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L1", "weight": 1.0, "_src": "test_swiftly_api_rationale_1", "_tgt": "backend_tests_test_swiftly_api_py", "confidence_score": 1.0, "source": "backend_tests_test_swiftly_api_py", "target": "test_swiftly_api_rationale_1" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L41", "weight": 1.0, "_src": "test_swiftly_api_rationale_41", "_tgt": "test_swiftly_api_test_parse_categories_fixture", "confidence_score": 1.0, "source": "test_swiftly_api_test_parse_categories_fixture", "target": "test_swiftly_api_rationale_41" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L58", "weight": 1.0, "_src": "test_swiftly_api_rationale_58", "_tgt": "test_swiftly_api_test_parse_category_response_fixture", "confidence_score": 1.0, "source": "test_swiftly_api_test_parse_category_response_fixture", "target": "test_swiftly_api_rationale_58" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L108", "weight": 1.0, "_src": "test_swiftly_api_rationale_108", "_tgt": "test_swiftly_api_test_map_product_returns_none_for_unparseable", "confidence_score": 1.0, "source": "test_swiftly_api_test_map_product_returns_none_for_unparseable", "target": "test_swiftly_api_rationale_108" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L139", "weight": 1.0, "_src": "test_swiftly_api_test_swiftly_auth_error_on_401_from_api", "_tgt": "test_swiftly_api_mock_response", "confidence_score": 1.0, "source": "test_swiftly_api_mock_response", "target": "test_swiftly_api_test_swiftly_auth_error_on_401_from_api" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L159", "weight": 1.0, "_src": "test_swiftly_api_test_fetch_category_mints_token_when_none_pinned", "_tgt": "test_swiftly_api_mock_response", "confidence_score": 1.0, "source": "test_swiftly_api_mock_response", "target": "test_swiftly_api_test_fetch_category_mints_token_when_none_pinned" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L136", "weight": 1.0, "_src": "test_swiftly_api_rationale_136", "_tgt": "test_swiftly_api_test_swiftly_auth_error_on_401_from_api", "confidence_score": 1.0, "source": "test_swiftly_api_test_swiftly_auth_error_on_401_from_api", "target": "test_swiftly_api_rationale_136" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L147", "weight": 1.0, "_src": "test_swiftly_api_rationale_147", "_tgt": "test_swiftly_api_test_fetch_category_mints_token_when_none_pinned", "confidence_score": 1.0, "source": "test_swiftly_api_test_fetch_category_mints_token_when_none_pinned", "target": "test_swiftly_api_rationale_147" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_swiftly_api.py", "source_location": "L172", "weight": 1.0, "_src": "test_swiftly_api_rationale_172", "_tgt": "test_swiftly_api_test_background_runner_writes_failed_with_token_message", "confidence_score": 1.0, "source": "test_swiftly_api_test_background_runner_writes_failed_with_token_message", "target": "test_swiftly_api_rationale_172" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_email_backend.py", "source_location": "L5", "weight": 1.0, "_src": "backend_tests_test_email_backend_py", "_tgt": "test_email_backend_test_sendgrid_send_calls_api", "confidence_score": 1.0, "source": "backend_tests_test_email_backend_py", "target": "test_email_backend_test_sendgrid_send_calls_api" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_email_backend.py", "source_location": "L26", "weight": 1.0, "_src": "backend_tests_test_email_backend_py", "_tgt": "test_email_backend_test_sendgrid_raises_on_4xx", "confidence_score": 1.0, "source": "backend_tests_test_email_backend_py", "target": "test_email_backend_test_sendgrid_raises_on_4xx" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_email_backend.py", "source_location": "L1", "weight": 1.0, "_src": "test_email_backend_rationale_1", "_tgt": "backend_tests_test_email_backend_py", "confidence_score": 1.0, "source": "backend_tests_test_email_backend_py", "target": "test_email_backend_rationale_1" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L15", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_family", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_family" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L31", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_member", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_member" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L46", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_weekly_run", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_weekly_run" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L55", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_weekly_run_scraped", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_weekly_run_scraped" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L69", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_weekly_run_generated", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_weekly_run_generated" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L84", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_meal_plan", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_meal_plan" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L98", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_pending_item", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_pending_item" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L123", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_weekly_run_emailed", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_weekly_run_emailed" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L139", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_weekly_run_reminded", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_weekly_run_reminded" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L159", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_send_admin_alert_noop_when_email_unset", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_send_admin_alert_noop_when_email_unset" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L168", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_send_admin_alert_calls_backend", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_send_admin_alert_calls_backend" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L194", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_scrape_idempotent", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_scrape_idempotent" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L201", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_scrape_success", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_scrape_success" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L212", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_scrape_both_fail_marks_stale", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_scrape_both_fail_marks_stale" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L231", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_generate_idempotent", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_generate_idempotent" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L238", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_generate_creates_plan", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_generate_creates_plan" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L257", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_generate_records_error_on_failure", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_generate_records_error_on_failure" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L276", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_email_idempotent", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_email_idempotent" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L283", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_email_sends_per_member", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_email_sends_per_member" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L302", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_email_stale_banner", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_email_stale_banner" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L319", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_email_escapes_recipe_name", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_email_escapes_recipe_name" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L345", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_reminder_idempotent", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_reminder_idempotent" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L352", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_reminder_skips_when_not_emailed", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_reminder_skips_when_not_emailed" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L370", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_reminder_sends_to_non_voter", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_reminder_sends_to_non_voter" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L391", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_reminder_skips_voter", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_reminder_skips_voter" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L420", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_reminder_no_sends_when_all_voted", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_reminder_no_sends_when_all_voted" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L454", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_deadline_idempotent", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_deadline_idempotent" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L463", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_deadline_resolves_pending_to_approved", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_deadline_resolves_pending_to_approved" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L474", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_deadline_resolves_pending_to_denied", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_deadline_resolves_pending_to_denied" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L489", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_weekly_run_deadline_passed", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_weekly_run_deadline_passed" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L506", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_approved_item", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_approved_item" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L530", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_finalize_idempotent", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_finalize_idempotent" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L539", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_finalize_sends_shopping_list", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_finalize_sends_shopping_list" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L559", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_step_finalize_no_approved_sends_empty_message", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_step_finalize_no_approved_sends_empty_message" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L580", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_run_step_upserts_weekly_run", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_run_step_upserts_weekly_run" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L606", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_run_step_invalid_raises", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_run_step_invalid_raises" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L612", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_run_week_calls_all_steps", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_run_week_calls_all_steps" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L632", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_admin_client", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_admin_client" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L646", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_orchestrate_status_returns_list", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_orchestrate_status_returns_list" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L654", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_orchestrate_step_invalid_returns_400", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_orchestrate_step_invalid_returns_400" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L663", "weight": 1.0, "_src": "backend_tests_test_orchestrator_py", "_tgt": "test_orchestrator_test_orchestrate_run_week_returns_202", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_test_orchestrate_run_week_returns_202" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "backend/tests/test_orchestrator.py", "source_location": "L1", "weight": 1.0, "_src": "test_orchestrator_rationale_1", "_tgt": "backend_tests_test_orchestrator_py", "confidence_score": 1.0, "source": "backend_tests_test_orchestrator_py", "target": "test_orchestrator_rationale_1" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/App.tsx", "source_location": "L13", "weight": 1.0, "_src": "frontend_src_app_tsx", "_tgt": "app_isactive", "confidence_score": 1.0, "source": "frontend_src_app_tsx", "target": "app_isactive" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/App.tsx", "source_location": "L15", "weight": 1.0, "_src": "frontend_src_app_tsx", "_tgt": "app_linkclass", "confidence_score": 1.0, "source": "frontend_src_app_tsx", "target": "app_linkclass" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "frontend/src/App.tsx", "source_location": "L17", "weight": 1.0, "_src": "app_linkclass", "_tgt": "app_isactive", "confidence_score": 1.0, "source": "app_isactive", "target": "app_linkclass" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ErrorBoundary.tsx", "source_location": "L19", "weight": 1.0, "_src": "frontend_src_components_errorboundary_tsx", "_tgt": "errorboundary_getderivedstatefromerror", "confidence_score": 1.0, "source": "frontend_src_components_errorboundary_tsx", "target": "errorboundary_getderivedstatefromerror" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ErrorBoundary.tsx", "source_location": "L23", "weight": 1.0, "_src": "frontend_src_components_errorboundary_tsx", "_tgt": "errorboundary_componentdidcatch", "confidence_score": 1.0, "source": "frontend_src_components_errorboundary_tsx", "target": "errorboundary_componentdidcatch" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Button.tsx", "source_location": "L11", "weight": 1.0, "_src": "frontend_src_components_ui_button_tsx", "_tgt": "button_button", "confidence_score": 1.0, "source": "frontend_src_components_ui_button_tsx", "target": "button_button" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Badge.tsx", "source_location": "L9", "weight": 1.0, "_src": "frontend_src_components_ui_badge_tsx", "_tgt": "badge_badge", "confidence_score": 1.0, "source": "frontend_src_components_ui_badge_tsx", "target": "badge_badge" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L8", "weight": 1.0, "_src": "frontend_src_components_ui_card_tsx", "_tgt": "card_card", "confidence_score": 1.0, "source": "frontend_src_components_ui_card_tsx", "target": "card_card" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L17", "weight": 1.0, "_src": "frontend_src_components_ui_card_tsx", "_tgt": "card_cardheader", "confidence_score": 1.0, "source": "frontend_src_components_ui_card_tsx", "target": "card_cardheader" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L26", "weight": 1.0, "_src": "frontend_src_components_ui_card_tsx", "_tgt": "card_cardbody", "confidence_score": 1.0, "source": "frontend_src_components_ui_card_tsx", "target": "card_cardbody" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Card.tsx", "source_location": "L35", "weight": 1.0, "_src": "frontend_src_components_ui_card_tsx", "_tgt": "card_cardfooter", "confidence_score": 1.0, "source": "frontend_src_components_ui_card_tsx", "target": "card_cardfooter" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Input.tsx", "source_location": "L17", "weight": 1.0, "_src": "frontend_src_components_ui_input_tsx", "_tgt": "input_cn", "confidence_score": 1.0, "source": "frontend_src_components_ui_input_tsx", "target": "input_cn" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/LoadingSpinner.tsx", "source_location": "L10", "weight": 1.0, "_src": "frontend_src_components_ui_loadingspinner_tsx", "_tgt": "loadingspinner_loadingspinner", "confidence_score": 1.0, "source": "frontend_src_components_ui_loadingspinner_tsx", "target": "loadingspinner_loadingspinner" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/components/ui/Textarea.tsx", "source_location": "L17", "weight": 1.0, "_src": "frontend_src_components_ui_textarea_tsx", "_tgt": "textarea_cn", "confidence_score": 1.0, "source": "frontend_src_components_ui_textarea_tsx", "target": "textarea_cn" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Dashboard.tsx", "source_location": "L282", "weight": 1.0, "_src": "frontend_src_pages_dashboard_tsx", "_tgt": "dashboard_handlesend", "confidence_score": 1.0, "source": "frontend_src_pages_dashboard_tsx", "target": "dashboard_handlesend" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Pantry.tsx", "source_location": "L59", "weight": 1.0, "_src": "frontend_src_pages_pantry_tsx", "_tgt": "pantry_handleadd", "confidence_score": 1.0, "source": "frontend_src_pages_pantry_tsx", "target": "pantry_handleadd" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L12", "weight": 1.0, "_src": "frontend_src_pages_shoppinglist_tsx", "_tgt": "shoppinglist_shoppinglistskeleton", "confidence_score": 1.0, "source": "frontend_src_pages_shoppinglist_tsx", "target": "shoppinglist_shoppinglistskeleton" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L33", "weight": 1.0, "_src": "frontend_src_pages_shoppinglist_tsx", "_tgt": "shoppinglist_skeletoncard", "confidence_score": 1.0, "source": "frontend_src_pages_shoppinglist_tsx", "target": "shoppinglist_skeletoncard" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L44", "weight": 1.0, "_src": "frontend_src_pages_shoppinglist_tsx", "_tgt": "shoppinglist_storagekey", "confidence_score": 1.0, "source": "frontend_src_pages_shoppinglist_tsx", "target": "shoppinglist_storagekey" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L77", "weight": 1.0, "_src": "frontend_src_pages_shoppinglist_tsx", "_tgt": "shoppinglist_toggle", "confidence_score": 1.0, "source": "frontend_src_pages_shoppinglist_tsx", "target": "shoppinglist_toggle" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/ShoppingList.tsx", "source_location": "L86", "weight": 1.0, "_src": "frontend_src_pages_shoppinglist_tsx", "_tgt": "shoppinglist_clearall", "confidence_score": 1.0, "source": "frontend_src_pages_shoppinglist_tsx", "target": "shoppinglist_clearall" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/pages/Login.tsx", "source_location": "L8", "weight": 1.0, "_src": "frontend_src_pages_login_tsx", "_tgt": "login_login", "confidence_score": 1.0, "source": "frontend_src_pages_login_tsx", "target": "login_login" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "frontend/src/lib/utils.ts", "source_location": "L4", "weight": 1.0, "_src": "frontend_src_lib_utils_ts", "_tgt": "utils_cn", "confidence_score": 1.0, "source": "frontend_src_lib_utils_ts", "target": "utils_cn" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/spike_lucky_scrape.py", "source_location": "L38", "weight": 1.0, "_src": "scripts_spike_lucky_scrape_py", "_tgt": "spike_lucky_scrape_main", "confidence_score": 1.0, "source": "scripts_spike_lucky_scrape_py", "target": "spike_lucky_scrape_main" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/spike_lucky_scrape.py", "source_location": "L1", "weight": 1.0, "_src": "spike_lucky_scrape_rationale_1", "_tgt": "scripts_spike_lucky_scrape_py", "confidence_score": 1.0, "source": "scripts_spike_lucky_scrape_py", "target": "spike_lucky_scrape_rationale_1" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/send_test_approval.py", "source_location": "L44", "weight": 1.0, "_src": "scripts_send_test_approval_py", "_tgt": "send_test_approval_main", "confidence_score": 1.0, "source": "scripts_send_test_approval_py", "target": "send_test_approval_main" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/spike_swiftly_ingest.py", "source_location": "L33", "weight": 1.0, "_src": "scripts_spike_swiftly_ingest_py", "_tgt": "spike_swiftly_ingest_main", "confidence_score": 1.0, "source": "scripts_spike_swiftly_ingest_py", "target": "spike_swiftly_ingest_main" }, { "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "scripts/spike_swiftly_ingest.py", "source_location": "L1", "weight": 1.0, "_src": "spike_swiftly_ingest_rationale_1", "_tgt": "scripts_spike_swiftly_ingest_py", "confidence_score": 1.0, "source": "scripts_spike_swiftly_ingest_py", "target": "spike_swiftly_ingest_rationale_1" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/enrich_recipes_spoonacular.py", "source_location": "L30", "weight": 1.0, "_src": "scripts_enrich_recipes_spoonacular_py", "_tgt": "enrich_recipes_spoonacular_strip_html", "confidence_score": 1.0, "source": "scripts_enrich_recipes_spoonacular_py", "target": "enrich_recipes_spoonacular_strip_html" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/enrich_recipes_spoonacular.py", "source_location": "L34", "weight": 1.0, "_src": "scripts_enrich_recipes_spoonacular_py", "_tgt": "enrich_recipes_spoonacular_search_recipe", "confidence_score": 1.0, "source": "scripts_enrich_recipes_spoonacular_py", "target": "enrich_recipes_spoonacular_search_recipe" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/enrich_recipes_spoonacular.py", "source_location": "L53", "weight": 1.0, "_src": "scripts_enrich_recipes_spoonacular_py", "_tgt": "enrich_recipes_spoonacular_main", "confidence_score": 1.0, "source": "scripts_enrich_recipes_spoonacular_py", "target": "enrich_recipes_spoonacular_main" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "scripts/enrich_recipes_spoonacular.py", "source_location": "L95", "weight": 1.0, "_src": "enrich_recipes_spoonacular_main", "_tgt": "enrich_recipes_spoonacular_strip_html", "confidence_score": 1.0, "source": "enrich_recipes_spoonacular_strip_html", "target": "enrich_recipes_spoonacular_main" }, { "relation": "calls", "confidence": "EXTRACTED", "source_file": "scripts/enrich_recipes_spoonacular.py", "source_location": "L81", "weight": 1.0, "_src": "enrich_recipes_spoonacular_main", "_tgt": "enrich_recipes_spoonacular_search_recipe", "confidence_score": 1.0, "source": "enrich_recipes_spoonacular_search_recipe", "target": "enrich_recipes_spoonacular_main" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "meal-planner-plan.md", "source_location": "L1", "weight": 1.0, "_src": "meal_planner_plan_md", "_tgt": "meal_planner_plan_md_meal_planner_system", "confidence_score": 1.0, "source": "meal_planner_plan_md", "target": "meal_planner_plan_md_meal_planner_system" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "meal-planner-plan.md", "source_location": "L3", "weight": 1.0, "_src": "meal_planner_plan_md", "_tgt": "meal_planner_plan_md_goal", "confidence_score": 1.0, "source": "meal_planner_plan_md", "target": "meal_planner_plan_md_goal" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "meal-planner-plan.md", "source_location": "L6", "weight": 1.0, "_src": "meal_planner_plan_md", "_tgt": "meal_planner_plan_md_architecture", "confidence_score": 1.0, "source": "meal_planner_plan_md", "target": "meal_planner_plan_md_architecture" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "meal-planner-plan.md", "source_location": "L26", "weight": 1.0, "_src": "meal_planner_plan_md", "_tgt": "meal_planner_plan_md_tech_stack", "confidence_score": 1.0, "source": "meal_planner_plan_md", "target": "meal_planner_plan_md_tech_stack" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "meal-planner-plan.md", "source_location": "L35", "weight": 1.0, "_src": "meal_planner_plan_md", "_tgt": "meal_planner_plan_md_project_structure", "confidence_score": 1.0, "source": "meal_planner_plan_md", "target": "meal_planner_plan_md_project_structure" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "meal-planner-plan.md", "source_location": "L54", "weight": 1.0, "_src": "meal_planner_plan_md", "_tgt": "meal_planner_plan_md_tasks", "confidence_score": 1.0, "source": "meal_planner_plan_md", "target": "meal_planner_plan_md_tasks" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "meal-planner-plan.md", "source_location": "L56", "weight": 1.0, "_src": "meal_planner_plan_md", "_tgt": "meal_planner_plan_md_phase_1_foundation", "confidence_score": 1.0, "source": "meal_planner_plan_md", "target": "meal_planner_plan_md_phase_1_foundation" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "meal-planner-plan.md", "source_location": "L62", "weight": 1.0, "_src": "meal_planner_plan_md", "_tgt": "meal_planner_plan_md_phase_2_scraping", "confidence_score": 1.0, "source": "meal_planner_plan_md", "target": "meal_planner_plan_md_phase_2_scraping" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "meal-planner-plan.md", "source_location": "L67", "weight": 1.0, "_src": "meal_planner_plan_md", "_tgt": "meal_planner_plan_md_phase_3_recipe_meal_engine", "confidence_score": 1.0, "source": "meal_planner_plan_md", "target": "meal_planner_plan_md_phase_3_recipe_meal_engine" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "meal-planner-plan.md", "source_location": "L73", "weight": 1.0, "_src": "meal_planner_plan_md", "_tgt": "meal_planner_plan_md_phase_4_notifications_approval", "confidence_score": 1.0, "source": "meal_planner_plan_md", "target": "meal_planner_plan_md_phase_4_notifications_approval" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "meal-planner-plan.md", "source_location": "L79", "weight": 1.0, "_src": "meal_planner_plan_md", "_tgt": "meal_planner_plan_md_phase_5_shopping_list_ui", "confidence_score": 1.0, "source": "meal_planner_plan_md", "target": "meal_planner_plan_md_phase_5_shopping_list_ui" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "meal-planner-plan.md", "source_location": "L85", "weight": 1.0, "_src": "meal_planner_plan_md", "_tgt": "meal_planner_plan_md_phase_6_polish", "confidence_score": 1.0, "source": "meal_planner_plan_md", "target": "meal_planner_plan_md_phase_6_polish" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "meal-planner-plan.md", "source_location": "L90", "weight": 1.0, "_src": "meal_planner_plan_md", "_tgt": "meal_planner_plan_md_done_when", "confidence_score": 1.0, "source": "meal_planner_plan_md", "target": "meal_planner_plan_md_done_when" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L1", "weight": 1.0, "_src": "readme_md", "_tgt": "readme_md_meal_planner", "confidence_score": 1.0, "source": "readme_md", "target": "readme_md_meal_planner" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L5", "weight": 1.0, "_src": "readme_md", "_tgt": "readme_md_background", "confidence_score": 1.0, "source": "readme_md", "target": "readme_md_background" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L13", "weight": 1.0, "_src": "readme_md", "_tgt": "readme_md_features", "confidence_score": 1.0, "source": "readme_md", "target": "readme_md_features" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L23", "weight": 1.0, "_src": "readme_md", "_tgt": "readme_md_architecture", "confidence_score": 1.0, "source": "readme_md", "target": "readme_md_architecture" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L31", "weight": 1.0, "_src": "readme_md", "_tgt": "readme_md_documentation", "confidence_score": 1.0, "source": "readme_md", "target": "readme_md_documentation" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L39", "weight": 1.0, "_src": "readme_md", "_tgt": "readme_md_quick_start", "confidence_score": 1.0, "source": "readme_md", "target": "readme_md_quick_start" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L42", "weight": 1.0, "_src": "readme_md", "_tgt": "readme_md_clone_and_start", "confidence_score": 1.0, "source": "readme_md", "target": "readme_md_clone_and_start" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L45", "weight": 1.0, "_src": "readme_md", "_tgt": "readme_md_view_logs", "confidence_score": 1.0, "source": "readme_md", "target": "readme_md_view_logs" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L48", "weight": 1.0, "_src": "readme_md", "_tgt": "readme_md_stop", "confidence_score": 1.0, "source": "readme_md", "target": "readme_md_stop" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L52", "weight": 1.0, "_src": "readme_md", "_tgt": "readme_md_family_profile", "confidence_score": 1.0, "source": "readme_md", "target": "readme_md_family_profile" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L60", "weight": 1.0, "_src": "readme_md", "_tgt": "readme_md_approval_workflow", "confidence_score": 1.0, "source": "readme_md", "target": "readme_md_approval_workflow" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L67", "weight": 1.0, "_src": "readme_md", "_tgt": "readme_md_tech_stack", "confidence_score": 1.0, "source": "readme_md", "target": "readme_md_tech_stack" }, { "relation": "references", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L33", "weight": 1.0, "_src": "readme_md", "_tgt": "docs_spec_md", "confidence_score": 1.0, "source": "readme_md", "target": "docs_spec_md" }, { "relation": "references", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L34", "weight": 1.0, "_src": "readme_md", "_tgt": "docs_architecture_md", "confidence_score": 1.0, "source": "readme_md", "target": "docs_architecture_md" }, { "relation": "references", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L35", "weight": 1.0, "_src": "readme_md", "_tgt": "docs_database_schema_md", "confidence_score": 1.0, "source": "readme_md", "target": "docs_database_schema_md" }, { "relation": "references", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L36", "weight": 1.0, "_src": "readme_md", "_tgt": "docs_implementation_plan_md", "confidence_score": 1.0, "source": "readme_md", "target": "docs_implementation_plan_md" }, { "relation": "references", "confidence": "EXTRACTED", "source_file": "README.md", "source_location": "L37", "weight": 1.0, "_src": "readme_md", "_tgt": "docs_running_md", "confidence_score": 1.0, "source": "readme_md", "target": "docs_running_md" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "CLAUDE.md", "source_location": "L1", "weight": 1.0, "_src": "claude_md", "_tgt": "claude_md_context_mode_mandatory_routing_rules", "confidence_score": 1.0, "source": "claude_md", "target": "claude_md_context_mode_mandatory_routing_rules" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "CLAUDE.md", "source_location": "L5", "weight": 1.0, "_src": "claude_md", "_tgt": "claude_md_blocked_commands_do_not_attempt_these", "confidence_score": 1.0, "source": "claude_md", "target": "claude_md_blocked_commands_do_not_attempt_these" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "CLAUDE.md", "source_location": "L7", "weight": 1.0, "_src": "claude_md", "_tgt": "claude_md_curl_wget_blocked", "confidence_score": 1.0, "source": "claude_md", "target": "claude_md_curl_wget_blocked" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "CLAUDE.md", "source_location": "L13", "weight": 1.0, "_src": "claude_md", "_tgt": "claude_md_inline_http_blocked", "confidence_score": 1.0, "source": "claude_md", "target": "claude_md_inline_http_blocked" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "CLAUDE.md", "source_location": "L18", "weight": 1.0, "_src": "claude_md", "_tgt": "claude_md_webfetch_blocked", "confidence_score": 1.0, "source": "claude_md", "target": "claude_md_webfetch_blocked" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "CLAUDE.md", "source_location": "L23", "weight": 1.0, "_src": "claude_md", "_tgt": "claude_md_redirected_tools_use_sandbox_equivalents", "confidence_score": 1.0, "source": "claude_md", "target": "claude_md_redirected_tools_use_sandbox_equivalents" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "CLAUDE.md", "source_location": "L25", "weight": 1.0, "_src": "claude_md", "_tgt": "claude_md_bash_20_lines_output", "confidence_score": 1.0, "source": "claude_md", "target": "claude_md_bash_20_lines_output" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "CLAUDE.md", "source_location": "L31", "weight": 1.0, "_src": "claude_md", "_tgt": "claude_md_read_for_analysis", "confidence_score": 1.0, "source": "claude_md", "target": "claude_md_read_for_analysis" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "CLAUDE.md", "source_location": "L35", "weight": 1.0, "_src": "claude_md", "_tgt": "claude_md_grep_large_results", "confidence_score": 1.0, "source": "claude_md", "target": "claude_md_grep_large_results" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "CLAUDE.md", "source_location": "L38", "weight": 1.0, "_src": "claude_md", "_tgt": "claude_md_tool_selection_hierarchy", "confidence_score": 1.0, "source": "claude_md", "target": "claude_md_tool_selection_hierarchy" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "CLAUDE.md", "source_location": "L46", "weight": 1.0, "_src": "claude_md", "_tgt": "claude_md_subagent_routing", "confidence_score": 1.0, "source": "claude_md", "target": "claude_md_subagent_routing" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "CLAUDE.md", "source_location": "L50", "weight": 1.0, "_src": "claude_md", "_tgt": "claude_md_output_constraints", "confidence_score": 1.0, "source": "claude_md", "target": "claude_md_output_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "CLAUDE.md", "source_location": "L56", "weight": 1.0, "_src": "claude_md", "_tgt": "claude_md_ctx_commands", "confidence_score": 1.0, "source": "claude_md", "target": "claude_md_ctx_commands" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L1", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_meal_planner_project_specification", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_meal_planner_project_specification" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L3", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_1_overview", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_1_overview" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L12", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_2_problem_statement", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_2_problem_statement" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L29", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_3_goals", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_3_goals" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L31", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_primary_goals", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_primary_goals" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L40", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_secondary_goals", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_secondary_goals" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L48", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_4_non_goals_out_of_scope", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_4_non_goals_out_of_scope" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L59", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_5_user_stories", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_5_user_stories" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L61", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_as_a_family_member_i_can", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_as_a_family_member_i_can" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L69", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_as_the_system_administrator_i_can", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_as_the_system_administrator_i_can" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L77", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_6_family_profile", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_6_family_profile" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L79", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_household", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_household" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L84", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_family_members", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_family_members" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L92", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_dietary_constraints", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_dietary_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L96", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_preference_signals", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_preference_signals" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L104", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_7_approval_workflow", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_7_approval_workflow" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L106", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_weekly_flow", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_weekly_flow" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L138", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_approval_token_security", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_approval_token_security" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L146", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_8_technical_constraints", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_8_technical_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L148", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_self_hosting_requirements", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_self_hosting_requirements" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L153", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_authentication_authorization", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_authentication_authorization" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L159", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_lucky_california_integration", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_lucky_california_integration" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L191", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_email", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_email" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L172", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_external_dependencies", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_external_dependencies" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L182", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_9_accessibility_wcag_2_1_aa", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_9_accessibility_wcag_2_1_aa" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L184", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_web_ui", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_web_ui" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L199", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_10_data_retention", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_10_data_retention" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L201", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_stored_data", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_stored_data" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L208", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_retention_period", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_retention_period" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L215", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_11_success_metrics", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_11_success_metrics" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/SPEC.md", "source_location": "L225", "weight": 1.0, "_src": "docs_spec_md", "_tgt": "docs_spec_md_12_future_considerations", "confidence_score": 1.0, "source": "docs_spec_md", "target": "docs_spec_md_12_future_considerations" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L1", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_meal_planner_architecture", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_meal_planner_architecture" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L3", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_1_system_overview", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_1_system_overview" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L52", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_2_component_descriptions", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_2_component_descriptions" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L54", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_2_1_scraper_service", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_2_1_scraper_service" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L76", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_2_2_recipe_engine", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_2_2_recipe_engine" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L91", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_2_3_meal_planner_service", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_2_3_meal_planner_service" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L112", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_2_4_notification_service", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_2_4_notification_service" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L147", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_2_5_feedback_service", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_2_5_feedback_service" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L164", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_2_6_web_ui_react_tailwind", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_2_6_web_ui_react_tailwind" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L183", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_3_data_architecture", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_3_data_architecture" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L185", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_3_1_postgresql_schema_overview", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_3_1_postgresql_schema_overview" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L267", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_3_2_key_relationships", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_3_2_key_relationships" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L284", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_4_api_design", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_4_api_design" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L286", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_4_1_core_endpoints", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_4_1_core_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L306", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_4_2_email_approval_links", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_4_2_email_approval_links" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L313", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_5_deployment_architecture", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_5_deployment_architecture" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L315", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_5_1_docker_compose_services", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_5_1_docker_compose_services" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L365", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_5_2_reverse_proxy_nginx", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_5_2_reverse_proxy_nginx" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L373", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_5_3_remote_access_security", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_5_3_remote_access_security" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L380", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_6_image_strategy", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_6_image_strategy" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L382", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_6_1_primary_scraped_images", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_6_1_primary_scraped_images" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L387", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_6_2_fallback_ai_generation", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_6_2_fallback_ai_generation" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L393", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_6_3_email_image_handling", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_6_3_email_image_handling" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L400", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_7_error_handling_strategy", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_7_error_handling_strategy" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L402", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_7_1_scraper_failures", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_7_1_scraper_failures" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L409", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_7_2_email_failures", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_7_2_email_failures" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L415", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_7_3_database_failures", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_7_3_database_failures" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L422", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_8_logging_monitoring", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_8_logging_monitoring" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L424", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_8_1_log_categories", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_8_1_log_categories" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L431", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_8_2_log_storage", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_8_2_log_storage" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ARCHITECTURE.md", "source_location": "L436", "weight": 1.0, "_src": "docs_architecture_md", "_tgt": "docs_architecture_md_8_3_monitoring_future", "confidence_score": 1.0, "source": "docs_architecture_md", "target": "docs_architecture_md_8_3_monitoring_future" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L1", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_meal_planner_database_schema", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_meal_planner_database_schema" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L3", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_1_schema_overview", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_1_schema_overview" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L11", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_2_enums", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_2_enums" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L27", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_3_tables", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_3_tables" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L29", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_3_1_family_profile", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_3_1_family_profile" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L49", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_3_2_family_member", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_3_2_family_member" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L66", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_3_3_ingredient", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_3_3_ingredient" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L82", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_3_4_recipe", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_3_4_recipe" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L112", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_3_5_meal_plan", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_3_5_meal_plan" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L130", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_3_6_meal_plan_item", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_3_6_meal_plan_item" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L151", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_3_7_meal_plan_vote", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_3_7_meal_plan_vote" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L165", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_3_8_approval_token", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_3_8_approval_token" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L182", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_3_9_home_pantry", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_3_9_home_pantry" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L199", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_3_10_feedback", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_3_10_feedback" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L217", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_3_11_never_suggest", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_3_11_never_suggest" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L231", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_3_12_grocery_item", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_3_12_grocery_item" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L254", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_3_13_scrape_log", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_3_13_scrape_log" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L270", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_3_14_email_log", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_3_14_email_log" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L290", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_4_indexes", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_4_indexes" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L292", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_4_1_primary_indexes", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_4_1_primary_indexes" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L295", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_4_2_foreign_key_indexes", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_4_2_foreign_key_indexes" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L316", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_4_3_full_text_search_indexes", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_4_3_full_text_search_indexes" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L324", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_5_day_of_week_convention", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_5_day_of_week_convention" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L341", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_6_data_migration_strategy", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_6_data_migration_strategy" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L343", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_6_1_initial_schema", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_6_1_initial_schema" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L346", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_6_2_migration_policy", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_6_2_migration_policy" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L351", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_6_3_seed_data", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_6_3_seed_data" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L359", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_7_data_retention", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_7_data_retention" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/database-schema.md", "source_location": "L374", "weight": 1.0, "_src": "docs_database_schema_md", "_tgt": "docs_database_schema_md_8_row_level_security_future", "confidence_score": 1.0, "source": "docs_database_schema_md", "target": "docs_database_schema_md_8_row_level_security_future" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L1", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_meal_planner_implementation_plan", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_meal_planner_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L3", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_overview", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_overview" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L9", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_phase_1_infrastructure_foundation", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_phase_1_infrastructure_foundation" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L11", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_1_1_project_setup", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_1_1_project_setup" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L21", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_1_2_backend_skeleton", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_1_2_backend_skeleton" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L42", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_1_3_frontend_skeleton", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_1_3_frontend_skeleton" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L59", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_1_4_reverse_proxy_nginx", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_1_4_reverse_proxy_nginx" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L70", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_phase_2_database_models", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_phase_2_database_models" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L72", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_2_1_sqlalchemy_models", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_2_1_sqlalchemy_models" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L86", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_2_2_pydantic_schemas", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_2_2_pydantic_schemas" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L91", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_2_3_database_migrations", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_2_3_database_migrations" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L100", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_phase_3_api_endpoints", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_phase_3_api_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L102", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_3_1_core_crud_endpoints", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_3_1_core_crud_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L110", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_3_2_meal_plan_endpoints", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_3_2_meal_plan_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L116", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_3_3_shopping_list_endpoints", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_3_3_shopping_list_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L120", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_3_4_feedback_endpoints", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_3_4_feedback_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L124", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_3_5_admin_endpoints", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_3_5_admin_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L132", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_phase_4_lucky_california_scraper", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_phase_4_lucky_california_scraper" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L134", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_4_1_scraper_infrastructure", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_4_1_scraper_infrastructure" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L141", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_4_2_weekly_ad_scraper", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_4_2_weekly_ad_scraper" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L148", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_4_3_product_catalog_scraper_future", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_4_3_product_catalog_scraper_future" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L153", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_4_4_scrape_scheduling", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_4_4_scrape_scheduling" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L158", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_4_5_error_handling", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_4_5_error_handling" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L167", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_phase_5_recipe_engine", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_phase_5_recipe_engine" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L169", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_5_1_recipe_database", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_5_1_recipe_database" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L175", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_5_2_recipe_importing", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_5_2_recipe_importing" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L180", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_5_3_ingredient_mapping", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_5_3_ingredient_mapping" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L189", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_phase_6_meal_planner_engine", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_phase_6_meal_planner_engine" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L191", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_6_1_plan_generation_algorithm", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_6_1_plan_generation_algorithm" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L200", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_6_2_substitution_logic", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_6_2_substitution_logic" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L205", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_6_3_cost_calculation", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_6_3_cost_calculation" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L210", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_6_4_plan_persistence", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_6_4_plan_persistence" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L219", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_phase_7_sendgrid_email_integration", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_phase_7_sendgrid_email_integration" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L221", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_7_1_sendgrid_setup", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_7_1_sendgrid_setup" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L227", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_7_2_meal_proposal_email", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_7_2_meal_proposal_email" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L236", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_7_3_reminder_email", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_7_3_reminder_email" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L241", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_7_4_confirmation_email", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_7_4_confirmation_email" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L250", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_phase_8_web_ui_core_features", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_phase_8_web_ui_core_features" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L252", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_8_1_dashboard", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_8_1_dashboard" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L259", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_8_2_meal_detail_page", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_8_2_meal_detail_page" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L266", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_8_3_approval_center", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_8_3_approval_center" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L272", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_8_4_pantry_manager", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_8_4_pantry_manager" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L282", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_phase_9_web_ui_feedback_learning", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_phase_9_web_ui_feedback_learning" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L284", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_9_1_feedback_portal", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_9_1_feedback_portal" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L290", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_9_2_learning_integration", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_9_2_learning_integration" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L295", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_9_3_recipe_discovery", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_9_3_recipe_discovery" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L305", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_phase_10_shopping_list_print", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_phase_10_shopping_list_print" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L307", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_10_1_shopping_list_generation", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_10_1_shopping_list_generation" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L314", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_10_2_printable_shopping_list", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_10_2_printable_shopping_list" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L320", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_10_3_web_ui_shopping_list_view", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_10_3_web_ui_shopping_list_view" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L331", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_phase_11_image_strategy_implementation", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_phase_11_image_strategy_implementation" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L333", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_11_1_scraped_images", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_11_1_scraped_images" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L338", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_11_2_ai_image_generation_fallback", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_11_2_ai_image_generation_fallback" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L345", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_11_3_email_image_handling", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_11_3_email_image_handling" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L354", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_phase_12_polish_future_features", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_phase_12_polish_future_features" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L356", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_12_1_variety_analysis", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_12_1_variety_analysis" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L361", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_12_2_budget_tracking", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_12_2_budget_tracking" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L366", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_12_3_whatsapp_integration_future", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_12_3_whatsapp_integration_future" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L371", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_12_4_recipe_scraping_future", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_12_4_recipe_scraping_future" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L378", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_verification_commands", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_verification_commands" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L380", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_backend_tests", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_backend_tests" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L382", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_health_check", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_health_check" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L385", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_api_tests", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_api_tests" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L391", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_frontend_tests", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_frontend_tests" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L393", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_build_test", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_build_test" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L396", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_dev_server", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_dev_server" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L400", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_full_stack_tests", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_full_stack_tests" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L402", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_start_all_services", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_start_all_services" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L405", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_check_all_services_running", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_check_all_services_running" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L408", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_view_logs", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_view_logs" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L411", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_stop_all_services", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_stop_all_services" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L417", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_file_structure", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_file_structure" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L484", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_dependencies", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_dependencies" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L486", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_backend_python_3_11", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_backend_python_3_11" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L500", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_frontend_node_18", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_frontend_node_18" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L516", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_environment_variables", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_environment_variables" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L519", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_backend", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_backend" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L528", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_frontend", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_frontend" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L531", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_docker", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_docker" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/implementation-plan.md", "source_location": "L537", "weight": 1.0, "_src": "docs_implementation_plan_md", "_tgt": "docs_implementation_plan_md_notes", "confidence_score": 1.0, "source": "docs_implementation_plan_md", "target": "docs_implementation_plan_md_notes" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L1", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_running_the_meal_planner", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_running_the_meal_planner" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L3", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_prerequisites", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_prerequisites" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L10", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_environment_setup", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_environment_setup" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L12", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_1_clone_repository", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_1_clone_repository" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L19", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_2_create_environment_file", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_2_create_environment_file" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L28", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_database", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_database" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L31", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_sendgrid", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_sendgrid" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L34", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_family_emails", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_family_emails" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L38", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_lucky_california_for_scraping", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_lucky_california_for_scraping" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L41", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_ai_images_optional", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_ai_images_optional" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L47", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_3_create_ssl_certificates_for_remote_acc", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_3_create_ssl_certificates_for_remote_acc" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L51", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_option_1_let_s_encrypt_with_certbot", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_option_1_let_s_encrypt_with_certbot" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L54", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_option_2_self_signed_for_local_testing", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_option_2_self_signed_for_local_testing" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L59", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_starting_services", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_starting_services" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L61", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_local_development", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_local_development" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L64", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_start_all_services", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_start_all_services" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L67", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_view_logs", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_view_logs" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L71", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_stop_all_services", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_stop_all_services" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L75", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_production_deployment", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_production_deployment" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L78", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_start_with_production_settings", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_start_with_production_settings" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L81", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_check_service_status", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_check_service_status" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L84", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_view_resource_usage", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_view_resource_usage" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L88", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_accessing_the_application", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_accessing_the_application" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L90", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_local_access", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_local_access" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L96", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_remote_access_with_reverse_proxy", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_remote_access_with_reverse_proxy" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L102", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_database_management", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_database_management" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L104", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_initial_migration", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_initial_migration" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L333", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_run_migrations", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_run_migrations" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L110", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_check_current_migration", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_check_current_migration" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L113", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_create_new_migration_after_model_changes", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_create_new_migration_after_model_changes" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L117", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_backup_database", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_backup_database" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L120", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_backup_to_file", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_backup_to_file" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L123", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_restore_from_backup", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_restore_from_backup" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L127", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_reset_database", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_reset_database" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L130", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_danger_drops_and_recreates_all_data", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_danger_drops_and_recreates_all_data" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L136", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_scraping", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_scraping" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L138", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_manual_scrape_trigger", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_manual_scrape_trigger" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L141", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_scrape_lucky_california_weekly_ad", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_scrape_lucky_california_weekly_ad" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L147", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_check_scrape_logs", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_check_scrape_logs" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L150", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_view_recent_scrape_operations", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_view_recent_scrape_operations" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L154", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_scheduling", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_scheduling" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L160", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_email_testing", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_email_testing" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L162", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_test_email_send", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_test_email_send" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L165", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_send_test_email", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_send_test_email" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L171", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_view_email_logs", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_view_email_logs" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L177", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_troubleshooting", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_troubleshooting" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L179", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_backend_won_t_start", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_backend_won_t_start" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L182", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_check_logs", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_check_logs" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L185", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_common_issues", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_common_issues" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L186", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_database_not_ready_wait_for_db_to_be_hea", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_database_not_ready_wait_for_db_to_be_hea" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L187", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_port_conflict_check_if_port_8000_is_in_u", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_port_conflict_check_if_port_8000_is_in_u" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L188", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_missing_env_vars_verify_env_file_exists_", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_missing_env_vars_verify_env_file_exists_" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L191", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_frontend_build_fails", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_frontend_build_fails" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L194", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_check_for_node_version_issues", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_check_for_node_version_issues" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L197", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_clear_cache_and_rebuild", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_clear_cache_and_rebuild" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L203", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_database_connection_errors", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_database_connection_errors" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L206", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_verify_database_is_running", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_verify_database_is_running" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L209", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_test_connection_from_backend", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_test_connection_from_backend" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L212", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_check_credentials", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_check_credentials" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L216", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_scraping_failures", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_scraping_failures" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L219", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_check_lucky_california_is_accessible", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_check_lucky_california_is_accessible" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L222", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_verify_playwright_browser_installed", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_verify_playwright_browser_installed" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L225", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_manual_retry", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_manual_retry" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L229", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_email_not_sending", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_email_not_sending" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L232", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_verify_sendgrid_api_key", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_verify_sendgrid_api_key" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L235", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_check_sendgrid_dashboard_for_failures", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_check_sendgrid_dashboard_for_failures" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L236", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_ensure_sender_email_is_verified_in_sendg", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_ensure_sender_email_is_verified_in_sendg" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L239", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_development", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_development" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L241", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_backend_development", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_backend_development" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L244", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_enter_backend_container", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_enter_backend_container" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L247", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_run_tests", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_run_tests" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L250", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_run_with_hot_reload", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_run_with_hot_reload" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L254", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_frontend_development", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_frontend_development" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L257", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_enter_frontend_container", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_enter_frontend_container" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L260", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_run_dev_server_with_hot_reload", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_run_dev_server_with_hot_reload" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L264", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_database_migrations", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_database_migrations" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L267", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_create_migration", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_create_migration" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L270", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_upgrade", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_upgrade" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L273", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_downgrade", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_downgrade" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L276", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_show_migration_history", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_show_migration_history" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L280", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_health_checks", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_health_checks" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L283", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_check_backend_health", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_check_backend_health" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L286", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_check_database_connectivity", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_check_database_connectivity" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L289", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_check_all_services", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_check_all_services" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L293", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_logs", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_logs" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L295", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_view_all_logs", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_view_all_logs" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L301", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_view_specific_service", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_view_specific_service" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L309", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_configure_log_level", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_configure_log_level" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L316", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_security_notes", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_security_notes" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L324", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_updating", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_updating" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L327", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_pull_latest_code", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_pull_latest_code" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L330", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_rebuild_images", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_rebuild_images" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L336", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_restart_services", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_restart_services" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/RUNNING.md", "source_location": "L340", "weight": 1.0, "_src": "docs_running_md", "_tgt": "docs_running_md_stopping_completely", "confidence_score": 1.0, "source": "docs_running_md", "target": "docs_running_md_stopping_completely" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L1", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_meal_planner_orientation", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_meal_planner_orientation" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L7", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_what_this_project_is", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_what_this_project_is" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L15", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_architecture_current", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_architecture_current" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L39", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_phase_status_2026_05_08", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_phase_status_2026_05_08" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L59", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_auth_model_r1_b_d_locked_in", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_auth_model_r1_b_d_locked_in" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L69", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_database_schema_highlights", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_database_schema_highlights" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L83", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_environment_variables_verified", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_environment_variables_verified" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L86", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_database", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_database" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L90", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_auth", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_auth" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L95", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_email", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_email" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L101", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_phase_5_orchestration", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_phase_5_orchestration" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L105", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_lucky_swiftly", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_lucky_swiftly" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L109", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_no_bearer_token_env_var_minted_on_demand", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_no_bearer_token_env_var_minted_on_demand" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L111", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_other", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_other" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L121", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_verification_commands", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_verification_commands" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L124", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_full_local_stack_include_scheduler_for_p", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_full_local_stack_include_scheduler_for_p" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L129", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_verify_scheduler", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_verify_scheduler" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L131", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_expected_6_lines_scrape_generate_email_r", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_expected_6_lines_scrape_generate_email_r" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L133", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_manual_step_trigger_useful_for_testing_w", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_manual_step_trigger_useful_for_testing_w" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L137", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_frontend", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_frontend" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L140", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_ci_github_workflows_ci_yml_runs_both_job", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_ci_github_workflows_ci_yml_runs_both_job" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L147", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_conventions", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_conventions" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/ORIENTATION.md", "source_location": "L158", "weight": 1.0, "_src": "docs_orientation_md", "_tgt": "docs_orientation_md_where_to_look", "confidence_score": 1.0, "source": "docs_orientation_md", "target": "docs_orientation_md_where_to_look" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L1", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_mealplanner_agent_handoff", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_mealplanner_agent_handoff" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L14", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_tl_dr", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_tl_dr" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L26", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_infrastructure_read_this_first", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_infrastructure_read_this_first" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L28", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_access", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_access" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L33", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_stack_up", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_stack_up" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L39", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_applying_python_code_changes", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_applying_python_code_changes" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L46", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_db_connection", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_db_connection" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L52", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_admin_api_auth", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_admin_api_auth" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L58", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_key_env_vars_env_test", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_key_env_vars_env_test" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L69", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_family_data_live_seeded", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_family_data_live_seeded" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L78", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_what_changed_in_this_session", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_what_changed_in_this_session" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L80", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_mvp_login_auth_gating_committed_in_featu", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_mvp_login_auth_gating_committed_in_featu" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L86", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_nginx_committed_in_59a15a2", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_nginx_committed_in_59a15a2" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L91", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_vote_email_enrichment_aeed2a4", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_vote_email_enrichment_aeed2a4" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L99", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_shopping_list_email_improvements_aeed2a4", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_shopping_list_email_improvements_aeed2a4" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L103", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_ingredient_matcher_full_rewrite_ac2b575_", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_ingredient_matcher_full_rewrite_ac2b575_" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L145", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_scraper_fix_save_priceless_produce_23738", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_scraper_fix_save_priceless_produce_23738" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L150", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_what_is_real_verified", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_what_is_real_verified" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L154", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_lucky_ca_api_swiftly_full_catalog_access", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_lucky_ca_api_swiftly_full_catalog_access" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L162", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_matcher_runs_automatically", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_matcher_runs_automatically" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L167", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_what_is_stubbed_or_missing", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_what_is_stubbed_or_missing" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L169", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_recipe_images_phase_10_approved_not_star", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_recipe_images_phase_10_approved_not_star" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L174", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_recipe_descriptions", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_recipe_descriptions" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L178", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_olive_oil_corn_tortillas_lucky_catalog_g", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_olive_oil_corn_tortillas_lucky_catalog_g" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L183", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_phase_8_feedback_ui_done", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_phase_8_feedback_ui_done" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L189", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_known_caveats_and_traps", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_known_caveats_and_traps" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L212", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_admin_api_reference", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_admin_api_reference" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L215", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_trigger_individual_steps", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_trigger_individual_steps" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L218", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_valid_steps_scrape_generate_email_remind", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_valid_steps_scrape_generate_email_remind" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L220", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_full_week_cycle_background", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_full_week_cycle_background" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L224", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_scrape_status", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_scrape_status" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L228", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_weekly_run_status", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_weekly_run_status" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L232", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_trigger_fresh_scrape_auto_match", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_trigger_fresh_scrape_auto_match" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L239", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_suggested_next_moves", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_suggested_next_moves" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L241", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_1_spoonacular_recipe_enrichment_images_d", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_1_spoonacular_recipe_enrichment_images_d" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L251", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_2_ollama_llm_matcher_olive_oil_corn_tort", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_2_ollama_llm_matcher_olive_oil_corn_tort" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L267", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_3_natural_friday_cycle", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_3_natural_friday_cycle" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L273", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_file_map_additions_from_this_session", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_file_map_additions_from_this_session" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/HANDOFF.md", "source_location": "L285", "weight": 1.0, "_src": "docs_handoff_md", "_tgt": "docs_handoff_md_final_words", "confidence_score": 1.0, "source": "docs_handoff_md", "target": "docs_handoff_md_final_words" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L1", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_meal_planner_algorithm_design_spec", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_meal_planner_algorithm_design_spec" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L9", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_1_goal", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_1_goal" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L17", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_2_algorithm_shape", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_2_algorithm_shape" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L26", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_2_1_hard_constraints", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_2_1_hard_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L41", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_2_2_scoring_signals", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_2_2_scoring_signals" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L64", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_2_3_set_selection_diversity", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_2_3_set_selection_diversity" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L82", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_3_ingredient_grocery_item_matching_layer", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_3_ingredient_grocery_item_matching_layer" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L86", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_3_1_schema", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_3_1_schema" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L112", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_3_2_match_job", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_3_2_match_job" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L123", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_3_3_manual_override", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_3_3_manual_override" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L127", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_3_4_recipe_create_assist", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_3_4_recipe_create_assist" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L133", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_4_thin_phase_4_surface", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_4_thin_phase_4_surface" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L137", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_4_1_in_scope", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_4_1_in_scope" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L150", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_4_2_recipe_model_fields_additions_to_exi", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_4_2_recipe_model_fields_additions_to_exi" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L174", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_4_3_out_of_scope_deferred", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_4_3_out_of_scope_deferred" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L185", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_5_phase_9_api_surface", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_5_phase_9_api_surface" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L204", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_6_recipe_source_comparison_deferred_deci", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_6_recipe_source_comparison_deferred_deci" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L224", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_7_open_questions_deferred", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_7_open_questions_deferred" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L233", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_8_implementation_order", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_8_implementation_order" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/specs/2026-05-05-meal-planner-algorithm-design.md", "source_location": "L245", "weight": 1.0, "_src": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "_tgt": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_9_out_of_scope_for_this_spec", "confidence_score": 1.0, "source": "docs_specs_2026_05_05_meal_planner_algorithm_design_md", "target": "docs_specs_2026_05_05_meal_planner_algorithm_design_md_9_out_of_scope_for_this_spec" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L1", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_thin_phase_4_recipe_engine_matching_laye", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_thin_phase_4_recipe_engine_matching_laye" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L21", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_file_structure", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_file_structure" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L50", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_1_add_rapidfuzz_dependency", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_1_add_rapidfuzz_dependency" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L92", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_2_migration_0006_schema_changes", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_2_migration_0006_schema_changes" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L228", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_3_update_sqlalchemy_models", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_3_update_sqlalchemy_models" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L313", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_4_pydantic_schemas_ingredient", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_4_pydantic_schemas_ingredient" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L450", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_5_pydantic_schemas_recipe", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_5_pydantic_schemas_recipe" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L611", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_6_ingredient_crud_endpoints", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_6_ingredient_crud_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L850", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_7_recipe_crud_endpoints", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_7_recipe_crud_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L1121", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_8_resolve_ingredient_assist_endpoin", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_8_resolve_ingredient_assist_endpoin" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L1304", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_9_matcher_service_rapidfuzz_top_3", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_9_matcher_service_rapidfuzz_top_3" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L1528", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_10_wire_matcher_into_scrape_success", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_10_wire_matcher_into_scrape_success" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L1658", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_11_manual_match_override_endpoints", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_11_manual_match_override_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L1757", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_re_import_basemodel_near_the_top_of_the_", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_re_import_basemodel_near_the_top_of_the_" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L1841", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_12_neversuggest_crud_endpoints", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_12_neversuggest_crud_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L2078", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_13_migration_0007_seed_canonical_in", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_13_migration_0007_seed_canonical_in" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L2110", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_stable_uuids_so_re_running_upgrade_after", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_stable_uuids_so_re_running_upgrade_after" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L2263", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_14_migration_0007_populate_30_start", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_14_migration_0007_populate_30_start" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L2406", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_15_end_to_end_smoke_test_docs_refre", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_task_15_end_to_end_smoke_test_docs_refre" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L2504", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_verification_gate", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_verification_gate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-thin-phase-4-recipe-engine.md", "source_location": "L2519", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "_tgt": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_out_of_scope_phase_9_plan_written_separa", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md", "target": "docs_superpowers_plans_2026_05_05_thin_phase_4_recipe_engine_md_out_of_scope_phase_9_plan_written_separa" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L1", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "_tgt": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_phase_9_meal_planner_algorithm_implement", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "target": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_phase_9_meal_planner_algorithm_implement" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L22", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "_tgt": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_file_structure", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "target": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_file_structure" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L49", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "_tgt": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_1_planner_config_types", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "target": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_1_planner_config_types" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L208", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "_tgt": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_2_cost_savings_estimator", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "target": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_2_cost_savings_estimator" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L456", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "_tgt": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_3_hard_constraint_filter", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "target": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_3_hard_constraint_filter" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L778", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "_tgt": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_4_individual_scoring", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "target": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_4_individual_scoring" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L1040", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "_tgt": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_5_top_k_set_selection_with_diversit", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "target": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_5_top_k_set_selection_with_diversit" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L1212", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "_tgt": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_6_generation_orchestrator", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "target": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_6_generation_orchestrator" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L1559", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "_tgt": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_7_generate_api_endpoint", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "target": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_7_generate_api_endpoint" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L1899", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "_tgt": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_8_final_regression_sweep_docs_refre", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "target": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_task_8_final_regression_sweep_docs_refre" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L1948", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "_tgt": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_verification_gate", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "target": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_verification_gate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L1961", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "_tgt": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_open_items_deferred_tracked_here", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "target": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_open_items_deferred_tracked_here" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-05-phase-9-planner-algorithm.md", "source_location": "L1971", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "_tgt": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_out_of_scope_other_phases", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md", "target": "docs_superpowers_plans_2026_05_05_phase_9_planner_algorithm_md_out_of_scope_other_phases" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_phase_5_weekly_orchestration_implementat", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_phase_5_weekly_orchestration_implementat" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L13", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_file_map", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_file_map" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L32", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_1_alembic_migration_0008", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_1_alembic_migration_0008" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L40", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_backend_alembic_versions_0008_phase5_orc", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_backend_alembic_versions_0008_phase5_orc" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L134", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_2_weeklyrun_model_familyprofile_upd", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_2_weeklyrun_model_familyprofile_upd" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L177", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_column_after_calorie_target_line", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_column_after_calorie_target_line" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L180", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_relationship_after_the_existing_relation", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_relationship_after_the_existing_relation" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L202", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_3_settings_admin_email_app_base_url", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_3_settings_admin_email_app_base_url" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L242", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_4_alerts_py", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_4_alerts_py" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1414", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L263", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_fixtures", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_fixtures" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L393", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_alerts_py_tests", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_alerts_py_tests" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L489", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_5_step_scrape", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_5_step_scrape" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L499", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_step_scrape_tests", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_step_scrape_tests" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L631", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_6_step_generate", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_6_step_generate" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L641", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_step_generate_tests", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_step_generate_tests" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L742", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_7_step_email", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_7_step_email" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L752", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_step_email_tests", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_step_email_tests" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L900", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_8_step_deadline", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_8_step_deadline" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L910", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_step_deadline_tests", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_step_deadline_tests" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1013", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_9_step_finalize", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_9_step_finalize" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1023", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_step_finalize_tests", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_step_finalize_tests" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1208", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_10_runner_py_orchestrator_init_py", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_10_runner_py_orchestrator_init_py" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1219", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_runner_tests", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_runner_tests" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1370", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_backend_app_services_orchestrator_init_p", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_backend_app_services_orchestrator_init_p" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1403", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_11_admin_orchestrate_endpoints", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_11_admin_orchestrate_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1413", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_admin_endpoint_tests", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_admin_endpoint_tests" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1574", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_12_scheduler_entry_point", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_12_scheduler_entry_point" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1680", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_13_docker_compose_scheduler_service", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_task_13_docker_compose_scheduler_service" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1749", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_final_verification", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_final_verification" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1763", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_seed_a_family_profile_row_first_if_db_is", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_seed_a_family_profile_row_first_if_db_is" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase5-orchestration.md", "source_location": "L1783", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_environment_variables_added", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md", "target": "docs_superpowers_plans_2026_05_07_phase5_orchestration_md_environment_variables_added" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L1", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_phase_6_sendgrid_email_integration_imple", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "target": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_phase_6_sendgrid_email_integration_imple" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L13", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_file_map", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "target": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_file_map" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L30", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_task_1_migration_0009_add_reminded_at_to", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "target": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_task_1_migration_0009_add_reminded_at_to" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L679", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_context", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "target": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_context" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L102", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_expected_info_alembic_runtime_migration_", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "target": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_expected_info_alembic_runtime_migration_" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L105", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_expected_running_upgrade_0008_0009_again", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "target": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_expected_running_upgrade_0008_0009_again" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L128", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_task_2_wire_sendgridemailbackend", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "target": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_task_2_wire_sendgridemailbackend" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L302", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_task_3_step_reminder_tests", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "target": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_task_3_step_reminder_tests" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L339", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_step_reminder", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "target": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_step_reminder" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L579", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_task_4_wire_reminder_into_runner_admin_a", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "target": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_task_4_wire_reminder_into_runner_admin_a" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L674", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_task_5_html_escape_p5_a_and_getattr_clea", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "target": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_task_5_html_escape_p5_a_and_getattr_clea" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-07-phase6-sendgrid.md", "source_location": "L828", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "_tgt": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_final_verification", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md", "target": "docs_superpowers_plans_2026_05_07_phase6_sendgrid_md_final_verification" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L1", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_mvp_login_family_seed_implementation_pla", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_mvp_login_family_seed_implementation_pla" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L13", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_file_map", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_file_map" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L24", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_task_1_login_page_401_interceptor_nav_lo", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_task_1_login_page_401_interceptor_nav_lo" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L33", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_1_create_frontend_src_pages_login_t", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_1_create_frontend_src_pages_login_t" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L92", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_2_modify_frontend_src_app_tsx", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_2_modify_frontend_src_app_tsx" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L183", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_3_add_401_interceptor_to_frontend_s", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_3_add_401_interceptor_to_frontend_s" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L199", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_4_build_and_verify", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_4_build_and_verify" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L205", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_expected_no_typescript_errors_build_succ", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_expected_no_typescript_errors_build_succ" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L208", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_5_commit", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_5_commit" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L220", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_task_2_family_profile_seed_script", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_task_2_family_profile_seed_script" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L241", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_edit_these_before_running", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_edit_these_before_running" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L249", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L288", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_commit", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_step_commit" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L298", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_post_merge_steps_run_by_operator_after_m", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_post_merge_steps_run_by_operator_after_m" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L300", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_1_add_app_base_url_to_env_test", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_1_add_app_base_url_to_env_test" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L309", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_2_rebuild_frontend_container_and_restart", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_2_rebuild_frontend_container_and_restart" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L316", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_3_run_the_seed_script", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_3_run_the_seed_script" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L319", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_edit_scripts_seed_family_py_to_fill_in_r", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_edit_scripts_seed_family_py_to_fill_in_r" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/plans/2026-05-09-mvp-login.md", "source_location": "L324", "weight": 1.0, "_src": "docs_superpowers_plans_2026_05_09_mvp_login_md", "_tgt": "docs_superpowers_plans_2026_05_09_mvp_login_md_4_verify_login_works", "confidence_score": 1.0, "source": "docs_superpowers_plans_2026_05_09_mvp_login_md", "target": "docs_superpowers_plans_2026_05_09_mvp_login_md_4_verify_login_works" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L1", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_phase_6_sendgrid_email_integration_desig", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_phase_6_sendgrid_email_integration_desig" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L7", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_goal", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_goal" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L13", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_scope", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_scope" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L27", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_architecture", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_architecture" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L35", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_components", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_components" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L37", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_services_email_py_modify", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_services_email_py_modify" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L67", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_config_py_modify", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_config_py_modify" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L74", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_services_orchestrator_steps_", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_services_orchestrator_steps_" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L100", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_alembic_versions_0009_phase6_rem", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_alembic_versions_0009_phase6_rem" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L110", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_models_init_py_modify", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_models_init_py_modify" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L114", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_services_orchestrator_runner", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_services_orchestrator_runner" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L122", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_api_admin_py_modify", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_api_admin_py_modify" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L130", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_scheduler_main_py_modify", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_backend_app_scheduler_main_py_modify" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L143", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_requirements_txt_verify_add", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_requirements_txt_verify_add" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L149", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_data_flow", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_data_flow" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L162", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_error_handling", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_error_handling" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L168", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_testing", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_testing" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L182", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_environment_variables", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_environment_variables" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L185", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_required_for_email_backend_sendgrid", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_required_for_email_backend_sendgrid" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "docs/superpowers/specs/2026-05-07-phase6-sendgrid-design.md", "source_location": "L195", "weight": 1.0, "_src": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "_tgt": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_files_touched", "confidence_score": 1.0, "source": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md", "target": "docs_superpowers_specs_2026_05_07_phase6_sendgrid_design_md_files_touched" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/requirements-dev.txt", "source_location": "L1", "weight": 1.0, "_src": "backend_requirements_dev_txt", "_tgt": "backend_requirements_dev_txt_dev_test_only_dependencies_production_de", "confidence_score": 1.0, "source": "backend_requirements_dev_txt", "target": "backend_requirements_dev_txt_dev_test_only_dependencies_production_de" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/fixtures/lucky_ca/META.md", "source_location": "L1", "weight": 1.0, "_src": "backend_tests_fixtures_lucky_ca_meta_md", "_tgt": "backend_tests_fixtures_lucky_ca_meta_md_lucky_california_weekly_ad_spike_r2_a", "confidence_score": 1.0, "source": "backend_tests_fixtures_lucky_ca_meta_md", "target": "backend_tests_fixtures_lucky_ca_meta_md_lucky_california_weekly_ad_spike_r2_a" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/fixtures/lucky_ca/META.md", "source_location": "L15", "weight": 1.0, "_src": "backend_tests_fixtures_lucky_ca_meta_md", "_tgt": "backend_tests_fixtures_lucky_ca_meta_md_selectors_used_verified_against_this_fix", "confidence_score": 1.0, "source": "backend_tests_fixtures_lucky_ca_meta_md", "target": "backend_tests_fixtures_lucky_ca_meta_md_selectors_used_verified_against_this_fix" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/fixtures/lucky_ca/META.md", "source_location": "L23", "weight": 1.0, "_src": "backend_tests_fixtures_lucky_ca_meta_md", "_tgt": "backend_tests_fixtures_lucky_ca_meta_md_first_parsed_item_sample", "confidence_score": 1.0, "source": "backend_tests_fixtures_lucky_ca_meta_md", "target": "backend_tests_fixtures_lucky_ca_meta_md_first_parsed_item_sample" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "backend/tests/fixtures/lucky_ca/META.md", "source_location": "L38", "weight": 1.0, "_src": "backend_tests_fixtures_lucky_ca_meta_md", "_tgt": "backend_tests_fixtures_lucky_ca_meta_md_notes", "confidence_score": 1.0, "source": "backend_tests_fixtures_lucky_ca_meta_md", "target": "backend_tests_fixtures_lucky_ca_meta_md_notes" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L1", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_adversarial_documentation_review", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_adversarial_documentation_review" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L3", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_verdict", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_verdict" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L7", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_blocking_findings", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_blocking_findings" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L9", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_1_phase_status_docs_contradict_current_i", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_1_phase_status_docs_contradict_current_i" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L18", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_2_database_schema_is_internally_inconsis", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_2_database_schema_is_internally_inconsis" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L27", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_3_api_endpoint_definitions_conflict_acro", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_3_api_endpoint_definitions_conflict_acro" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L36", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_4_security_model_is_missing_for_external", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_4_security_model_is_missing_for_external" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L46", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_5_migration_strategy_conflicts_with_runt", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_5_migration_strategy_conflicts_with_runt" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L55", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_6_current_code_appears_incompatible_with", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_6_current_code_appears_incompatible_with" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L64", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_high_risk_gaps", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_high_risk_gaps" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L66", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_7_scraping_feasibility_is_under_specifie", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_7_scraping_feasibility_is_under_specifie" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L75", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_8_meal_planning_algorithm_lacks_determin", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_8_meal_planning_algorithm_lacks_determin" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L84", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_9_shopping_list_math_is_not_implementabl", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_9_shopping_list_math_is_not_implementabl" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L93", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_10_deployment_docs_promise_production_fe", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_10_deployment_docs_promise_production_fe" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L102", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_11_environment_variable_docs_are_inconsi", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_11_environment_variable_docs_are_inconsi" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L111", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_medium_risk_issues", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_medium_risk_issues" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L113", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_12_documentation_contains_stale_and_miss", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_12_documentation_contains_stale_and_miss" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L117", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_13_tech_stack_docs_are_already_version_s", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_13_tech_stack_docs_are_already_version_s" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L121", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_14_operational_docs_assume_endpoints_tha", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_14_operational_docs_assume_endpoints_tha" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L125", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_15_data_retention_lacks_implementation_m", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_15_data_retention_lacks_implementation_m" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L129", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_16_accessibility_is_barely_addressed_des", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_16_accessibility_is_barely_addressed_des" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L133", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_17_observability_requirements_are_aspira", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_17_observability_requirements_are_aspira" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L137", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_suggested_gate_before_implementation", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_suggested_gate_before_implementation" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-gpt5.5.md", "source_location": "L149", "weight": 1.0, "_src": "review_docs_gpt5_5_md", "_tgt": "review_docs_gpt5_5_md_implementation_readiness_rating", "confidence_score": 1.0, "source": "review_docs_gpt5_5_md", "target": "review_docs_gpt5_5_md_implementation_readiness_rating" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L1", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_repository_analysis", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_repository_analysis" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L3", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_executive_summary", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_executive_summary" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L11", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_current_repo_shape", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_current_repo_shape" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L32", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_blocking_findings", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_blocking_findings" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L34", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_1_backend_likely_fails_during_import_bec", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_1_backend_likely_fails_during_import_bec" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L44", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_2_sqlalchemy_relationships_contain_at_le", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_2_sqlalchemy_relationships_contain_at_le" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L54", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_3_frontend_build_is_blocked_by_a_missing", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_3_frontend_build_is_blocked_by_a_missing" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L63", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_4_frontend_docker_build_is_blocked_by_mi", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_4_frontend_docker_build_is_blocked_by_mi" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L72", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_5_vite_app_is_missing_required_html_entr", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_5_vite_app_is_missing_required_html_entr" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L81", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_6_alembic_is_documented_and_installed_bu", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_6_alembic_is_documented_and_installed_bu" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L92", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_important_findings", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_important_findings" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L94", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_7_api_routes_are_placeholders_with_no_sc", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_7_api_routes_are_placeholders_with_no_sc" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L104", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_8_admin_endpoints_are_unauthenticated", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_8_admin_endpoints_are_unauthenticated" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L114", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_9_email_approval_security_is_not_impleme", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_9_email_approval_security_is_not_impleme" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L125", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_10_secret_key_has_an_unsafe_default", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_10_secret_key_has_an_unsafe_default" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L135", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_11_sqlalchemy_2_health_query_may_fail", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_11_sqlalchemy_2_health_query_may_fail" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L144", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_12_docker_compose_exposes_backend_and_fr", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_12_docker_compose_exposes_backend_and_fr" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L154", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_13_nginx_ssl_and_rate_limiting_are_not_i", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_13_nginx_ssl_and_rate_limiting_are_not_i" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L164", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_maintainability_findings", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_maintainability_findings" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L166", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_14_model_file_is_too_large_for_early_ite", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_14_model_file_is_too_large_for_early_ite" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L174", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_15_schema_constraints_are_only_partially", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_15_schema_constraints_are_only_partially" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L182", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_16_api_prefix_behavior_may_produce_trail", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_16_api_prefix_behavior_may_produce_trail" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L189", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_17_no_repository_level_quality_gates_exi", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_17_no_repository_level_quality_gates_exi" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L197", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_documentation_alignment", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_documentation_alignment" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L207", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_recommended_remediation_order", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_recommended_remediation_order" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L209", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_phase_0_make_skeleton_start_and_build", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_phase_0_make_skeleton_start_and_build" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L219", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_phase_1_establish_schema_migration_basel", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_phase_1_establish_schema_migration_basel" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L227", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_phase_2_establish_api_and_security_basel", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_phase_2_establish_api_and_security_basel" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L235", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_phase_3_implement_first_vertical_slice", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_phase_3_implement_first_vertical_slice" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L242", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_verification_matrix_to_add", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_verification_matrix_to_add" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/repo-gpt5.5.md", "source_location": "L259", "weight": 1.0, "_src": "review_repo_gpt5_5_md", "_tgt": "review_repo_gpt5_5_md_final_assessment", "confidence_score": 1.0, "source": "review_repo_gpt5_5_md", "target": "review_repo_gpt5_5_md_final_assessment" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L1", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_adversarial_documentation_review_claude", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_adversarial_documentation_review_claude" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L9", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_verdict", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_verdict" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L17", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_blocking", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_blocking" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L19", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_b1_family_profile_is_internally_inconsis", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_b1_family_profile_is_internally_inconsis" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L30", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_b2_there_is_no_family_member_or_user_tab", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_b2_there_is_no_family_member_or_user_tab" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L42", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_b3_recipe_ingredient_relationship_is_doc", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_b3_recipe_ingredient_relationship_is_doc" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L51", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_b4_there_is_no_authentication_anywhere_i", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_b4_there_is_no_authentication_anywhere_i" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L63", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_b5_approval_by_email_is_fragile_and_prob", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_b5_approval_by_email_is_fragile_and_prob" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L77", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_b6_self_hosted_no_external_cloud_service", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_b6_self_hosted_no_external_cloud_service" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L90", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_major", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_major" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L92", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_m1_scraping_legality_tos_unaddressed", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_m1_scraping_legality_tos_unaddressed" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L103", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_m2_phase_ordering_buries_the_hard_proble", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_m2_phase_ordering_buries_the_hard_proble" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L109", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_m3_apscheduler_multiple_workers_will_mis", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_m3_apscheduler_multiple_workers_will_mis" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L115", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_m4_schema_has_avoidable_defects", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_m4_schema_has_avoidable_defects" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L126", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_m5_migration_story_is_muddled", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_m5_migration_story_is_muddled" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L132", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_m6_if_both_approve_or_no_response_meal_c", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_m6_if_both_approve_or_no_response_meal_c" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L136", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_m7_calorie_target_appears_in_the_schema_", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_m7_calorie_target_appears_in_the_schema_" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L140", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_m8_image_strategy_contradicts_itself", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_m8_image_strategy_contradicts_itself" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L148", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_minor", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_minor" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L150", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_m1_doc_hygiene", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_m1_doc_hygiene" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L157", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_m2_operational_gaps_not_in_any_doc", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_m2_operational_gaps_not_in_any_doc" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L165", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_m3_docker_compose_exposure", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_m3_docker_compose_exposure" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L169", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_m4_success_metrics_aren_t_measurable", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_m4_success_metrics_aren_t_measurable" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L179", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_m5_future_features_are_mixed_into_the_im", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_m5_future_features_are_mixed_into_the_im" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L183", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_m6_secret_key_ghost_variable", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_m6_secret_key_ghost_variable" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L189", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_cross_doc_contradictions_summarized", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_cross_doc_contradictions_summarized" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/docs-claude.md", "source_location": "L205", "weight": 1.0, "_src": "review_docs_claude_md", "_tgt": "review_docs_claude_md_suggested_order_of_operations_before_any", "confidence_score": 1.0, "source": "review_docs_claude_md", "target": "review_docs_claude_md_suggested_order_of_operations_before_any" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/synthesis.md", "source_location": "L1", "weight": 1.0, "_src": "review_synthesis_md", "_tgt": "review_synthesis_md_review_synthesis_three_reviewers_compare", "confidence_score": 1.0, "source": "review_synthesis_md", "target": "review_synthesis_md_review_synthesis_three_reviewers_compare" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/synthesis.md", "source_location": "L7", "weight": 1.0, "_src": "review_synthesis_md", "_tgt": "review_synthesis_md_1_strong_consensus_all_reviewers_blockin", "confidence_score": 1.0, "source": "review_synthesis_md", "target": "review_synthesis_md_1_strong_consensus_all_reviewers_blockin" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/synthesis.md", "source_location": "L24", "weight": 1.0, "_src": "review_synthesis_md", "_tgt": "review_synthesis_md_2_partial_agreement_2_of_3", "confidence_score": 1.0, "source": "review_synthesis_md", "target": "review_synthesis_md_2_partial_agreement_2_of_3" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/synthesis.md", "source_location": "L40", "weight": 1.0, "_src": "review_synthesis_md", "_tgt": "review_synthesis_md_3_unique_findings_only_one_reviewer", "confidence_score": 1.0, "source": "review_synthesis_md", "target": "review_synthesis_md_3_unique_findings_only_one_reviewer" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/synthesis.md", "source_location": "L42", "weight": 1.0, "_src": "review_synthesis_md", "_tgt": "review_synthesis_md_claude_only", "confidence_score": 1.0, "source": "review_synthesis_md", "target": "review_synthesis_md_claude_only" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/synthesis.md", "source_location": "L56", "weight": 1.0, "_src": "review_synthesis_md", "_tgt": "review_synthesis_md_gpt_5_5_docs_only", "confidence_score": 1.0, "source": "review_synthesis_md", "target": "review_synthesis_md_gpt_5_5_docs_only" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/synthesis.md", "source_location": "L61", "weight": 1.0, "_src": "review_synthesis_md", "_tgt": "review_synthesis_md_gpt_5_5_repo_only_claude_could_not_have_", "confidence_score": 1.0, "source": "review_synthesis_md", "target": "review_synthesis_md_gpt_5_5_repo_only_claude_could_not_have_" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/synthesis.md", "source_location": "L73", "weight": 1.0, "_src": "review_synthesis_md", "_tgt": "review_synthesis_md_4_where_reviewers_conflict", "confidence_score": 1.0, "source": "review_synthesis_md", "target": "review_synthesis_md_4_where_reviewers_conflict" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/synthesis.md", "source_location": "L82", "weight": 1.0, "_src": "review_synthesis_md", "_tgt": "review_synthesis_md_5_combined_blocker_list_deduplicated_ran", "confidence_score": 1.0, "source": "review_synthesis_md", "target": "review_synthesis_md_5_combined_blocker_list_deduplicated_ran" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/synthesis.md", "source_location": "L98", "weight": 1.0, "_src": "review_synthesis_md", "_tgt": "review_synthesis_md_6_additional_investigation_needed", "confidence_score": 1.0, "source": "review_synthesis_md", "target": "review_synthesis_md_6_additional_investigation_needed" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/synthesis.md", "source_location": "L114", "weight": 1.0, "_src": "review_synthesis_md", "_tgt": "review_synthesis_md_7_net_assessment", "confidence_score": 1.0, "source": "review_synthesis_md", "target": "review_synthesis_md_7_net_assessment" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L1", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_review_consensus_feedback_for_originatin", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_review_consensus_feedback_for_originatin" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L12", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_headline", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_headline" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L20", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_1_consensus_blockers_must_resolve_before", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_1_consensus_blockers_must_resolve_before" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L24", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_1_1_recipe_ingredient_relationship_is_mo", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_1_1_recipe_ingredient_relationship_is_mo" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L30", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_1_2_no_authentication_exists_anywhere_in", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_1_2_no_authentication_exists_anywhere_in" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L36", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_1_3_email_approval_flow_is_unsafe_and_pr", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_1_3_email_approval_flow_is_unsafe_and_pr" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L42", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_1_4_no_family_member_table_despite_per_p", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_1_4_no_family_member_table_despite_per_p" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L48", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_1_5_phase_status_is_contradictory_and_th", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_1_5_phase_status_is_contradictory_and_th" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L59", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_1_6_schema_has_avoidable_correctness_def", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_1_6_schema_has_avoidable_correctness_def" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L69", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_1_7_docker_compose_exposes_backend_8000_", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_1_7_docker_compose_exposes_backend_8000_" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L73", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_1_8_production_deployment_claims_exceed_", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_1_8_production_deployment_claims_exceed_" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L80", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_2_high_risk_gaps_agreed_by_2_of_3_review", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_2_high_risk_gaps_agreed_by_2_of_3_review" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L82", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_2_1_migration_tooling_is_muddled", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_2_1_migration_tooling_is_muddled" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L85", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_2_2_api_endpoint_contract_conflicts_acro", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_2_2_api_endpoint_contract_conflicts_acro" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L88", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_2_3_scraping_is_under_specified_and_risk", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_2_3_scraping_is_under_specified_and_risk" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L94", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_2_4_phase_ordering_hides_risk_behind_plu", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_2_4_phase_ordering_hides_risk_behind_plu" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L97", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_2_5_shopping_list_math_is_not_implementa", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_2_5_shopping_list_math_is_not_implementa" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L100", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_2_6_environment_variables_inconsistent_a", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_2_6_environment_variables_inconsistent_a" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L103", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_2_7_accessibility_absent_despite_family_", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_2_7_accessibility_absent_despite_family_" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L106", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_2_8_health_check_will_fail_under_sqlalch", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_2_8_health_check_will_fail_under_sqlalch" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L111", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_3_single_reviewer_findings_worth_keeping", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_3_single_reviewer_findings_worth_keeping" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L113", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_from_claude", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_from_claude" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L123", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_from_gpt_5_5_docs", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_from_gpt_5_5_docs" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L128", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_from_gpt_5_5_repo", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_from_gpt_5_5_repo" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L135", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_4_where_reviewers_disagreed", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_4_where_reviewers_disagreed" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L144", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_5_combined_remediation_order", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_5_combined_remediation_order" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L160", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_6_verification_matrix_currently_failing_", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_6_verification_matrix_currently_failing_" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L177", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_7_additional_investigation_still_needed", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_7_additional_investigation_still_needed" }, { "relation": "contains", "confidence": "EXTRACTED", "source_file": "Review/reviewconcensus.md", "source_location": "L195", "weight": 1.0, "_src": "review_reviewconcensus_md", "_tgt": "review_reviewconcensus_md_8_suggested_response_format_from_origina", "confidence_score": 1.0, "source": "review_reviewconcensus_md", "target": "review_reviewconcensus_md_8_suggested_response_format_from_origina" } ], "hyperedges": [] }