.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L469",
+ "community": 2,
+ "norm_label": "building number must appear in a
spanning row, not a standalone .",
+ "id": "tests_test_image_gen_rationale_469"
+ },
+ {
+ "label": "Post buildings render as a single flat table, not per-building group tables.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L483",
+ "community": 2,
+ "norm_label": "post buildings render as a single flat table, not per-building group tables.",
+ "id": "tests_test_image_gen_rationale_483"
+ },
+ {
+ "label": "Post flat table correctly renders reserve and disabled slots.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L517",
+ "community": 2,
+ "norm_label": "post flat table correctly renders reserve and disabled slots.",
+ "id": "tests_test_image_gen_rationale_517"
+ },
+ {
+ "label": "test_lifecycle.py",
+ "file_type": "code",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L1",
+ "community": 46,
+ "norm_label": "test_lifecycle.py",
+ "id": "backend_tests_test_lifecycle_py"
+ },
+ {
+ "label": "test_activate_planning_siege()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L43",
+ "community": 46,
+ "norm_label": "test_activate_planning_siege()",
+ "id": "tests_test_lifecycle_test_activate_planning_siege"
+ },
+ {
+ "label": "test_activate_already_active_returns_400()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L66",
+ "community": 46,
+ "norm_label": "test_activate_already_active_returns_400()",
+ "id": "tests_test_lifecycle_test_activate_already_active_returns_400"
+ },
+ {
+ "label": "test_complete_active_siege()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L85",
+ "community": 46,
+ "norm_label": "test_complete_active_siege()",
+ "id": "tests_test_lifecycle_test_complete_active_siege"
+ },
+ {
+ "label": "test_complete_planning_siege_returns_400()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L108",
+ "community": 46,
+ "norm_label": "test_complete_planning_siege_returns_400()",
+ "id": "tests_test_lifecycle_test_complete_planning_siege_returns_400"
+ },
+ {
+ "label": "test_clone_siege_returns_201()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L127",
+ "community": 46,
+ "norm_label": "test_clone_siege_returns_201()",
+ "id": "tests_test_lifecycle_test_clone_siege_returns_201"
+ },
+ {
+ "label": "_make_post_ns()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L154",
+ "community": 46,
+ "norm_label": "_make_post_ns()",
+ "id": "tests_test_lifecycle_make_post_ns"
+ },
+ {
+ "label": "_make_src_position_ns()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L166",
+ "community": 46,
+ "norm_label": "_make_src_position_ns()",
+ "id": "tests_test_lifecycle_make_src_position_ns"
+ },
+ {
+ "label": "_make_src_group_ns()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L176",
+ "community": 46,
+ "norm_label": "_make_src_group_ns()",
+ "id": "tests_test_lifecycle_make_src_group_ns"
+ },
+ {
+ "label": "_make_src_building_ns()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L184",
+ "community": 46,
+ "norm_label": "_make_src_building_ns()",
+ "id": "tests_test_lifecycle_make_src_building_ns"
+ },
+ {
+ "label": "test_clone_uses_post_priority_config_not_source_priority()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L196",
+ "community": 46,
+ "norm_label": "test_clone_uses_post_priority_config_not_source_priority()",
+ "id": "tests_test_lifecycle_test_clone_uses_post_priority_config_not_source_priority"
+ },
+ {
+ "label": "Endpoint tests for siege lifecycle transitions: activate, complete, clone.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L1",
+ "community": 46,
+ "norm_label": "endpoint tests for siege lifecycle transitions: activate, complete, clone.",
+ "id": "tests_test_lifecycle_rationale_1"
+ },
+ {
+ "label": "Cloning a siege with stale priority=0 posts must use PostPriorityConfig.priority",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L197",
+ "community": 46,
+ "norm_label": "cloning a siege with stale priority=0 posts must use postpriorityconfig.priority",
+ "id": "tests_test_lifecycle_rationale_197"
+ },
+ {
+ "label": "test_lifecycle_integration.py",
+ "file_type": "code",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L1",
+ "community": 54,
+ "norm_label": "test_lifecycle_integration.py",
+ "id": "backend_tests_test_lifecycle_integration_py"
+ },
+ {
+ "label": "_build_valid_siege_graph()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L112",
+ "community": 54,
+ "norm_label": "_build_valid_siege_graph()",
+ "id": "tests_test_lifecycle_integration_build_valid_siege_graph"
+ },
+ {
+ "label": "test_full_siege_lifecycle()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L215",
+ "community": 54,
+ "norm_label": "test_full_siege_lifecycle()",
+ "id": "tests_test_lifecycle_integration_test_full_siege_lifecycle"
+ },
+ {
+ "label": "Integration test: full siege lifecycle \u2014 create \u2192 validate \u2192 assign \u2192 activate \u2192",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L1",
+ "community": 54,
+ "norm_label": "integration test: full siege lifecycle \u2014 create \u2192 validate \u2192 assign \u2192 activate \u2192",
+ "id": "tests_test_lifecycle_integration_rationale_1"
+ },
+ {
+ "label": "Build a siege with exactly the right building counts and assigned active members",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L113",
+ "community": 54,
+ "norm_label": "build a siege with exactly the right building counts and assigned active members",
+ "id": "tests_test_lifecycle_integration_rationale_113"
+ },
+ {
+ "label": "Return a mock async session that serves the siege + configs across multiple exec",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L183",
+ "community": 54,
+ "norm_label": "return a mock async session that serves the siege + configs across multiple exec",
+ "id": "tests_test_lifecycle_integration_rationale_183"
+ },
+ {
+ "label": "Happy-path: validate (errors) \u2192 assign \u2192 validate (0 errors) \u2192 activate \u2192 comple",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L216",
+ "community": 54,
+ "norm_label": "happy-path: validate (errors) \u2192 assign \u2192 validate (0 errors) \u2192 activate \u2192 comple",
+ "id": "tests_test_lifecycle_integration_rationale_216"
+ },
+ {
+ "label": "test_members.py",
+ "file_type": "code",
+ "source_file": "backend/tests/test_members.py",
+ "source_location": "L1",
+ "community": 60,
+ "norm_label": "test_members.py",
+ "id": "backend_tests_test_members_py"
+ },
+ {
+ "label": "test_list_members_returns_empty_list()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_members.py",
+ "source_location": "L43",
+ "community": 60,
+ "norm_label": "test_list_members_returns_empty_list()",
+ "id": "tests_test_members_test_list_members_returns_empty_list"
+ },
+ {
+ "label": "test_create_member_returns_201()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_members.py",
+ "source_location": "L59",
+ "community": 60,
+ "norm_label": "test_create_member_returns_201()",
+ "id": "tests_test_members_test_create_member_returns_201"
+ },
+ {
+ "label": "test_create_member_duplicate_name_returns_409()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_members.py",
+ "source_location": "L83",
+ "community": 60,
+ "norm_label": "test_create_member_duplicate_name_returns_409()",
+ "id": "tests_test_members_test_create_member_duplicate_name_returns_409"
+ },
+ {
+ "label": "test_get_member_not_found_returns_404()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_members.py",
+ "source_location": "L106",
+ "community": 60,
+ "norm_label": "test_get_member_not_found_returns_404()",
+ "id": "tests_test_members_test_get_member_not_found_returns_404"
+ },
+ {
+ "label": "test_delete_member_returns_204()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_members.py",
+ "source_location": "L124",
+ "community": 60,
+ "norm_label": "test_delete_member_returns_204()",
+ "id": "tests_test_members_test_delete_member_returns_204"
+ },
+ {
+ "label": "test_member_changelog_column.py",
+ "file_type": "code",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L1",
+ "community": 44,
+ "norm_label": "test_member_changelog_column.py",
+ "id": "backend_tests_test_member_changelog_column_py"
+ },
+ {
+ "label": "test_last_seen_changelog_at_column_exists()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L20",
+ "community": 44,
+ "norm_label": "test_last_seen_changelog_at_column_exists()",
+ "id": "tests_test_member_changelog_column_test_last_seen_changelog_at_column_exists"
+ },
+ {
+ "label": "test_last_seen_changelog_at_column_is_nullable()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L32",
+ "community": 44,
+ "norm_label": "test_last_seen_changelog_at_column_is_nullable()",
+ "id": "tests_test_member_changelog_column_test_last_seen_changelog_at_column_is_nullable"
+ },
+ {
+ "label": "test_last_seen_changelog_at_has_no_server_default()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L50",
+ "community": 44,
+ "norm_label": "test_last_seen_changelog_at_has_no_server_default()",
+ "id": "tests_test_member_changelog_column_test_last_seen_changelog_at_has_no_server_default"
+ },
+ {
+ "label": "test_last_seen_changelog_at_column_type_is_datetime()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L68",
+ "community": 44,
+ "norm_label": "test_last_seen_changelog_at_column_type_is_datetime()",
+ "id": "tests_test_member_changelog_column_test_last_seen_changelog_at_column_type_is_datetime"
+ },
+ {
+ "label": "test_last_seen_changelog_at_accepts_none_at_python_level()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L89",
+ "community": 44,
+ "norm_label": "test_last_seen_changelog_at_accepts_none_at_python_level()",
+ "id": "tests_test_member_changelog_column_test_last_seen_changelog_at_accepts_none_at_python_level"
+ },
+ {
+ "label": "test_last_seen_changelog_at_accepts_datetime_at_python_level()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L103",
+ "community": 44,
+ "norm_label": "test_last_seen_changelog_at_accepts_datetime_at_python_level()",
+ "id": "tests_test_member_changelog_column_test_last_seen_changelog_at_accepts_datetime_at_python_level"
+ },
+ {
+ "label": "Schema-aware tests for Member.last_seen_changelog_at (issue #295, AC 1). These",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L1",
+ "community": 44,
+ "norm_label": "schema-aware tests for member.last_seen_changelog_at (issue #295, ac 1). these",
+ "id": "tests_test_member_changelog_column_rationale_1"
+ },
+ {
+ "label": "Member mapper exposes last_seen_changelog_at as a mapped attribute.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L21",
+ "community": 44,
+ "norm_label": "member mapper exposes last_seen_changelog_at as a mapped attribute.",
+ "id": "tests_test_member_changelog_column_rationale_21"
+ },
+ {
+ "label": "last_seen_changelog_at column is defined nullable=True. Null is the sentine",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L33",
+ "community": 44,
+ "norm_label": "last_seen_changelog_at column is defined nullable=true. null is the sentine",
+ "id": "tests_test_member_changelog_column_rationale_33"
+ },
+ {
+ "label": "last_seen_changelog_at has no server-side default. Null is the intentional",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L51",
+ "community": 44,
+ "norm_label": "last_seen_changelog_at has no server-side default. null is the intentional",
+ "id": "tests_test_member_changelog_column_rationale_51"
+ },
+ {
+ "label": "last_seen_changelog_at uses SQLAlchemy DateTime (no timezone). Matches the",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L69",
+ "community": 44,
+ "norm_label": "last_seen_changelog_at uses sqlalchemy datetime (no timezone). matches the",
+ "id": "tests_test_member_changelog_column_rationale_69"
+ },
+ {
+ "label": "Mapped type annotation allows None (datetime | None). Constructing a Member",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L90",
+ "community": 44,
+ "norm_label": "mapped type annotation allows none (datetime | none). constructing a member",
+ "id": "tests_test_member_changelog_column_rationale_90"
+ },
+ {
+ "label": "Mapped type annotation allows a datetime value. Assigning a real datetime m",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L104",
+ "community": 44,
+ "norm_label": "mapped type annotation allows a datetime value. assigning a real datetime m",
+ "id": "tests_test_member_changelog_column_rationale_104"
+ },
+ {
+ "label": "test_notifications.py",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L1",
+ "community": 12,
+ "norm_label": "test_notifications.py",
+ "id": "backend_tests_test_notifications_py"
+ },
+ {
+ "label": "_make_batch()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L69",
+ "community": 12,
+ "norm_label": "_make_batch()",
+ "id": "tests_test_notifications_make_batch"
+ },
+ {
+ "label": "_make_batch_result()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L82",
+ "community": 12,
+ "norm_label": "_make_batch_result()",
+ "id": "tests_test_notifications_make_batch_result"
+ },
+ {
+ "label": "_make_db_session()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L112",
+ "community": 12,
+ "norm_label": "_make_db_session()",
+ "id": "tests_test_notifications_make_db_session"
+ },
+ {
+ "label": "test_notify_returns_batch_id()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L151",
+ "community": 12,
+ "norm_label": "test_notify_returns_batch_id()",
+ "id": "tests_test_notifications_test_notify_returns_batch_id"
+ },
+ {
+ "label": "test_notify_siege_not_found()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L221",
+ "community": 12,
+ "norm_label": "test_notify_siege_not_found()",
+ "id": "tests_test_notifications_test_notify_siege_not_found"
+ },
+ {
+ "label": "test_notify_siege_complete_returns_400()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L247",
+ "community": 12,
+ "norm_label": "test_notify_siege_complete_returns_400()",
+ "id": "tests_test_notifications_test_notify_siege_complete_returns_400"
+ },
+ {
+ "label": "test_get_notification_batch_returns_results()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L272",
+ "community": 12,
+ "norm_label": "test_get_notification_batch_returns_results()",
+ "id": "tests_test_notifications_test_get_notification_batch_returns_results"
+ },
+ {
+ "label": "test_get_notification_batch_not_found()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L324",
+ "community": 12,
+ "norm_label": "test_get_notification_batch_not_found()",
+ "id": "tests_test_notifications_test_get_notification_batch_not_found"
+ },
+ {
+ "label": "test_post_to_channel_success()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L354",
+ "community": 12,
+ "norm_label": "test_post_to_channel_success()",
+ "id": "tests_test_notifications_test_post_to_channel_success"
+ },
+ {
+ "label": "test_post_to_channel_posts_images_to_images_channel_and_summary_to_text_channel()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L415",
+ "community": 12,
+ "norm_label": "test_post_to_channel_posts_images_to_images_channel_and_summary_to_text_channel()",
+ "id": "tests_test_notifications_test_post_to_channel_posts_images_to_images_channel_and_summary_to_text_channel"
+ },
+ {
+ "label": "test_post_to_channel_image_failure_returns_failed()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L497",
+ "community": 12,
+ "norm_label": "test_post_to_channel_image_failure_returns_failed()",
+ "id": "tests_test_notifications_test_post_to_channel_image_failure_returns_failed"
+ },
+ {
+ "label": "test_notify_skips_member_with_no_discord_username()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L556",
+ "community": 12,
+ "norm_label": "test_notify_skips_member_with_no_discord_username()",
+ "id": "tests_test_notifications_test_notify_skips_member_with_no_discord_username"
+ },
+ {
+ "label": "test_notify_skips_member_not_in_guild()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L620",
+ "community": 12,
+ "norm_label": "test_notify_skips_member_not_in_guild()",
+ "id": "tests_test_notifications_test_notify_skips_member_not_in_guild"
+ },
+ {
+ "label": "test_notify_eligible_member_gets_result_row_and_dm()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L679",
+ "community": 12,
+ "norm_label": "test_notify_eligible_member_gets_result_row_and_dm()",
+ "id": "tests_test_notifications_test_notify_eligible_member_gets_result_row_and_dm"
+ },
+ {
+ "label": "test_notify_skipped_count_reflects_all_skipped_members()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L745",
+ "community": 12,
+ "norm_label": "test_notify_skipped_count_reflects_all_skipped_members()",
+ "id": "tests_test_notifications_test_notify_skipped_count_reflects_all_skipped_members"
+ },
+ {
+ "label": "test_notify_blocked_when_siege_has_validation_errors()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L809",
+ "community": 12,
+ "norm_label": "test_notify_blocked_when_siege_has_validation_errors()",
+ "id": "tests_test_notifications_test_notify_blocked_when_siege_has_validation_errors"
+ },
+ {
+ "label": "test_notify_passes_validation_guard_when_no_errors()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L855",
+ "community": 12,
+ "norm_label": "test_notify_passes_validation_guard_when_no_errors()",
+ "id": "tests_test_notifications_test_notify_passes_validation_guard_when_no_errors"
+ },
+ {
+ "label": "test_notify_bot_unreachable_falls_back_to_username_filter()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L912",
+ "community": 12,
+ "norm_label": "test_notify_bot_unreachable_falls_back_to_username_filter()",
+ "id": "tests_test_notifications_test_notify_bot_unreachable_falls_back_to_username_filter"
+ },
+ {
+ "label": "test_send_dms_sets_completed_status_even_when_bot_raises()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L979",
+ "community": 12,
+ "norm_label": "test_send_dms_sets_completed_status_even_when_bot_raises()",
+ "id": "tests_test_notifications_test_send_dms_sets_completed_status_even_when_bot_raises"
+ },
+ {
+ "label": "test_notify_no_date_returns_400()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L1041",
+ "community": 12,
+ "norm_label": "test_notify_no_date_returns_400()",
+ "id": "tests_test_notifications_test_notify_no_date_returns_400"
+ },
+ {
+ "label": "test_post_to_channel_no_date_returns_400()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L1068",
+ "community": 12,
+ "norm_label": "test_post_to_channel_no_date_returns_400()",
+ "id": "tests_test_notifications_test_post_to_channel_no_date_returns_400"
+ },
+ {
+ "label": "Endpoint tests for notification and post-to-channel routes.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L1",
+ "community": 12,
+ "norm_label": "endpoint tests for notification and post-to-channel routes.",
+ "id": "tests_test_notifications_rationale_1"
+ },
+ {
+ "label": "Build a mock DB session that returns the given objects.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L113",
+ "community": 12,
+ "norm_label": "build a mock db session that returns the given objects.",
+ "id": "tests_test_notifications_rationale_113"
+ },
+ {
+ "label": "Images post to discord_siege_images_channel. Summary with CDN links posts t",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L416",
+ "community": 12,
+ "norm_label": "images post to discord_siege_images_channel. summary with cdn links posts t",
+ "id": "tests_test_notifications_rationale_416"
+ },
+ {
+ "label": "When post_image returns None (failure), the endpoint returns status='failed'.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L498",
+ "community": 12,
+ "norm_label": "when post_image returns none (failure), the endpoint returns status='failed'.",
+ "id": "tests_test_notifications_rationale_498"
+ },
+ {
+ "label": "Members without a discord_username must not get a batch result row.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L557",
+ "community": 12,
+ "norm_label": "members without a discord_username must not get a batch result row.",
+ "id": "tests_test_notifications_rationale_557"
+ },
+ {
+ "label": "Members whose discord_username is absent from the guild list must be skipped.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L621",
+ "community": 12,
+ "norm_label": "members whose discord_username is absent from the guild list must be skipped.",
+ "id": "tests_test_notifications_rationale_621"
+ },
+ {
+ "label": "A member who has a discord_username AND is in the guild must get a result row.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L680",
+ "community": 12,
+ "norm_label": "a member who has a discord_username and is in the guild must get a result row.",
+ "id": "tests_test_notifications_rationale_680"
+ },
+ {
+ "label": "skipped_count must equal the number of members excluded for any reason.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L746",
+ "community": 12,
+ "norm_label": "skipped_count must equal the number of members excluded for any reason.",
+ "id": "tests_test_notifications_rationale_746"
+ },
+ {
+ "label": "POST /notify must return 400 when validate_siege returns errors.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L810",
+ "community": 12,
+ "norm_label": "post /notify must return 400 when validate_siege returns errors.",
+ "id": "tests_test_notifications_rationale_810"
+ },
+ {
+ "label": "POST /notify must not be blocked when validate_siege returns no errors.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L856",
+ "community": 12,
+ "norm_label": "post /notify must not be blocked when validate_siege returns no errors.",
+ "id": "tests_test_notifications_rationale_856"
+ },
+ {
+ "label": "When get_members() returns [] the endpoint must not block all DMs. Members",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L913",
+ "community": 12,
+ "norm_label": "when get_members() returns [] the endpoint must not block all dms. members",
+ "id": "tests_test_notifications_rationale_913"
+ },
+ {
+ "label": "_send_dms must guarantee batch.status = completed in its finally block. Sce",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L980",
+ "community": 12,
+ "norm_label": "_send_dms must guarantee batch.status = completed in its finally block. sce",
+ "id": "tests_test_notifications_rationale_980"
+ },
+ {
+ "label": "POST /notify must return 400 with a clear message when siege.date is None.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L1042",
+ "community": 12,
+ "norm_label": "post /notify must return 400 with a clear message when siege.date is none.",
+ "id": "tests_test_notifications_rationale_1042"
+ },
+ {
+ "label": "POST /post-to-channel must return 400 with a clear message when siege.date is No",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L1069",
+ "community": 12,
+ "norm_label": "post /post-to-channel must return 400 with a clear message when siege.date is no",
+ "id": "tests_test_notifications_rationale_1069"
+ },
+ {
+ "label": "test_notification_message.py",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L1",
+ "community": 4,
+ "norm_label": "test_notification_message.py",
+ "id": "backend_tests_test_notification_message_py"
+ },
+ {
+ "label": "_stronghold_pos()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L31",
+ "community": 4,
+ "norm_label": "_stronghold_pos()",
+ "id": "tests_test_notification_message_stronghold_pos"
+ },
+ {
+ "label": "_defense_tower_pos()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L40",
+ "community": 4,
+ "norm_label": "_defense_tower_pos()",
+ "id": "tests_test_notification_message_defense_tower_pos"
+ },
+ {
+ "label": "_post_pos()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L49",
+ "community": 4,
+ "norm_label": "_post_pos()",
+ "id": "tests_test_notification_message_post_pos"
+ },
+ {
+ "label": "test_no_previous_siege_all_current_in_set_at()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L63",
+ "community": 4,
+ "norm_label": "test_no_previous_siege_all_current_in_set_at()",
+ "id": "tests_test_notification_message_test_no_previous_siege_all_current_in_set_at"
+ },
+ {
+ "label": "test_empty_sections_omitted_all_no_change()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L84",
+ "community": 4,
+ "norm_label": "test_empty_sections_omitted_all_no_change()",
+ "id": "tests_test_notification_message_test_empty_sections_omitted_all_no_change"
+ },
+ {
+ "label": "test_full_diff_three_sections()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L105",
+ "community": 4,
+ "norm_label": "test_full_diff_three_sections()",
+ "id": "tests_test_notification_message_test_full_diff_three_sections"
+ },
+ {
+ "label": "test_header_contains_siege_date_and_member_settings()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L149",
+ "community": 4,
+ "norm_label": "test_header_contains_siege_date_and_member_settings()",
+ "id": "tests_test_notification_message_test_header_contains_siege_date_and_member_settings"
+ },
+ {
+ "label": "test_none_fields_display_as_unknown()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L169",
+ "community": 4,
+ "norm_label": "test_none_fields_display_as_unknown()",
+ "id": "tests_test_notification_message_test_none_fields_display_as_unknown"
+ },
+ {
+ "label": "test_false_reserve_set_displays_no()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L183",
+ "community": 4,
+ "norm_label": "test_false_reserve_set_displays_no()",
+ "id": "tests_test_notification_message_test_false_reserve_set_displays_no"
+ },
+ {
+ "label": "test_single_building_type_omits_building_number()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L201",
+ "community": 4,
+ "norm_label": "test_single_building_type_omits_building_number()",
+ "id": "tests_test_notification_message_test_single_building_type_omits_building_number"
+ },
+ {
+ "label": "test_multiple_building_type_includes_building_number()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L222",
+ "community": 4,
+ "norm_label": "test_multiple_building_type_includes_building_number()",
+ "id": "tests_test_notification_message_test_multiple_building_type_includes_building_number"
+ },
+ {
+ "label": "test_post_always_uses_short_format()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L241",
+ "community": 4,
+ "norm_label": "test_post_always_uses_short_format()",
+ "id": "tests_test_notification_message_test_post_always_uses_short_format"
+ },
+ {
+ "label": "test_post_with_single_count_still_uses_short_format()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L257",
+ "community": 4,
+ "norm_label": "test_post_with_single_count_still_uses_short_format()",
+ "id": "tests_test_notification_message_test_post_with_single_count_still_uses_short_format"
+ },
+ {
+ "label": "test_section_order_no_change_then_remove_then_set_at()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L276",
+ "community": 4,
+ "norm_label": "test_section_order_no_change_then_remove_then_set_at()",
+ "id": "tests_test_notification_message_test_section_order_no_change_then_remove_then_set_at"
+ },
+ {
+ "label": "test_positions_sorted_within_section()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L303",
+ "community": 4,
+ "norm_label": "test_positions_sorted_within_section()",
+ "id": "tests_test_notification_message_test_positions_sorted_within_section"
+ },
+ {
+ "label": "test_no_change_section_has_header_and_plain_position_lines()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L336",
+ "community": 4,
+ "norm_label": "test_no_change_section_has_header_and_plain_position_lines()",
+ "id": "tests_test_notification_message_test_no_change_section_has_header_and_plain_position_lines"
+ },
+ {
+ "label": "test_remove_from_section_has_header_and_plain_position_lines()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L361",
+ "community": 4,
+ "norm_label": "test_remove_from_section_has_header_and_plain_position_lines()",
+ "id": "tests_test_notification_message_test_remove_from_section_has_header_and_plain_position_lines"
+ },
+ {
+ "label": "test_set_at_section_has_header_and_plain_position_lines()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L385",
+ "community": 4,
+ "norm_label": "test_set_at_section_has_header_and_plain_position_lines()",
+ "id": "tests_test_notification_message_test_set_at_section_has_header_and_plain_position_lines"
+ },
+ {
+ "label": "test_blank_line_between_no_change_and_remove_from()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L414",
+ "community": 4,
+ "norm_label": "test_blank_line_between_no_change_and_remove_from()",
+ "id": "tests_test_notification_message_test_blank_line_between_no_change_and_remove_from"
+ },
+ {
+ "label": "test_blank_line_between_remove_from_and_set_at()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L431",
+ "community": 4,
+ "norm_label": "test_blank_line_between_remove_from_and_set_at()",
+ "id": "tests_test_notification_message_test_blank_line_between_remove_from_and_set_at"
+ },
+ {
+ "label": "test_no_blank_line_when_only_one_section()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L447",
+ "community": 4,
+ "norm_label": "test_no_blank_line_when_only_one_section()",
+ "id": "tests_test_notification_message_test_no_blank_line_when_only_one_section"
+ },
+ {
+ "label": "test_blank_line_count_with_all_three_sections()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L464",
+ "community": 4,
+ "norm_label": "test_blank_line_count_with_all_three_sections()",
+ "id": "tests_test_notification_message_test_blank_line_count_with_all_three_sections"
+ },
+ {
+ "label": "test_all_three_section_headers_exact_format()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L488",
+ "community": 4,
+ "norm_label": "test_all_three_section_headers_exact_format()",
+ "id": "tests_test_notification_message_test_all_three_section_headers_exact_format"
+ },
+ {
+ "label": "test_header_line_not_a_position_line()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L508",
+ "community": 4,
+ "norm_label": "test_header_line_not_a_position_line()",
+ "id": "tests_test_notification_message_test_header_line_not_a_position_line"
+ },
+ {
+ "label": "Unit tests for build_member_notification_message in notification_message.py.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L1",
+ "community": 4,
+ "norm_label": "unit tests for build_member_notification_message in notification_message.py.",
+ "id": "tests_test_notification_message_rationale_1"
+ },
+ {
+ "label": "When previous_positions is empty every current position gets the \u2694\ufe0f icon.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L64",
+ "community": 4,
+ "norm_label": "when previous_positions is empty every current position gets the \u2694\ufe0f icon.",
+ "id": "tests_test_notification_message_rationale_64"
+ },
+ {
+ "label": "When current and previous are identical only the \ud83d\udee1\ufe0f icon appears.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L85",
+ "community": 4,
+ "norm_label": "when current and previous are identical only the \ud83d\udee1\ufe0f icon appears.",
+ "id": "tests_test_notification_message_rationale_85"
+ },
+ {
+ "label": "Positions only in current \u2192 \u2694\ufe0f, only in previous \u2192 \u274c, both \u2192 \ud83d\udee1\ufe0f.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L106",
+ "community": 4,
+ "norm_label": "positions only in current \u2192 \u2694\ufe0f, only in previous \u2192 \u274c, both \u2192 \ud83d\udee1\ufe0f.",
+ "id": "tests_test_notification_message_rationale_106"
+ },
+ {
+ "label": "The message header must include the date, reserve status and attack day.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L150",
+ "community": 4,
+ "norm_label": "the message header must include the date, reserve status and attack day.",
+ "id": "tests_test_notification_message_rationale_150"
+ },
+ {
+ "label": "None for has_reserve_set or attack_day should render as 'Unknown'.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L170",
+ "community": 4,
+ "norm_label": "none for has_reserve_set or attack_day should render as 'unknown'.",
+ "id": "tests_test_notification_message_rationale_170"
+ },
+ {
+ "label": "has_reserve_set=False should render as 'No', not 'Unknown'.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L184",
+ "community": 4,
+ "norm_label": "has_reserve_set=false should render as 'no', not 'unknown'.",
+ "id": "tests_test_notification_message_rationale_184"
+ },
+ {
+ "label": "When count == 1 the building number is omitted from the label.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L202",
+ "community": 4,
+ "norm_label": "when count == 1 the building number is omitted from the label.",
+ "id": "tests_test_notification_message_rationale_202"
+ },
+ {
+ "label": "Posts always render as ':white_circle: Post {N}' regardless of count.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L242",
+ "community": 4,
+ "norm_label": "posts always render as ':white_circle: post {n}' regardless of count.",
+ "id": "tests_test_notification_message_rationale_242"
+ },
+ {
+ "label": "Posts with count == 1 still use short format (not the number-omitting path).",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L258",
+ "community": 4,
+ "norm_label": "posts with count == 1 still use short format (not the number-omitting path).",
+ "id": "tests_test_notification_message_rationale_258"
+ },
+ {
+ "label": "Icons must appear in the order: \ud83d\udee1\ufe0f (No Change), \u274c (Remove From), \u2694\ufe0f (Set At).",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L277",
+ "community": 4,
+ "norm_label": "icons must appear in the order: \ud83d\udee1\ufe0f (no change), \u274c (remove from), \u2694\ufe0f (set at).",
+ "id": "tests_test_notification_message_rationale_277"
+ },
+ {
+ "label": "Within Set At, positions should be sorted by type order then building/group/pos.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L304",
+ "community": 4,
+ "norm_label": "within set at, positions should be sorted by type order then building/group/pos.",
+ "id": "tests_test_notification_message_rationale_304"
+ },
+ {
+ "label": "No Change section must have a ':shield: No Change :shield:' header. Posit",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L337",
+ "community": 4,
+ "norm_label": "no change section must have a ':shield: no change :shield:' header. posit",
+ "id": "tests_test_notification_message_rationale_337"
+ },
+ {
+ "label": "Remove From section must have a ':x: Remove From :x:' header. Position li",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L362",
+ "community": 4,
+ "norm_label": "remove from section must have a ':x: remove from :x:' header. position li",
+ "id": "tests_test_notification_message_rationale_362"
+ },
+ {
+ "label": "Set At section must have a ':crossed_swords: Set At :crossed_swords:' header.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L386",
+ "community": 4,
+ "norm_label": "set at section must have a ':crossed_swords: set at :crossed_swords:' header.",
+ "id": "tests_test_notification_message_rationale_386"
+ },
+ {
+ "label": "A blank line must appear between the No Change and Remove From sections.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L415",
+ "community": 4,
+ "norm_label": "a blank line must appear between the no change and remove from sections.",
+ "id": "tests_test_notification_message_rationale_415"
+ },
+ {
+ "label": "A blank line must appear between the Remove From and Set At sections.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L432",
+ "community": 4,
+ "norm_label": "a blank line must appear between the remove from and set at sections.",
+ "id": "tests_test_notification_message_rationale_432"
+ },
+ {
+ "label": "When only one section is present there should be no blank line within that secti",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L448",
+ "community": 4,
+ "norm_label": "when only one section is present there should be no blank line within that secti",
+ "id": "tests_test_notification_message_rationale_448"
+ },
+ {
+ "label": "With all three sections there should be exactly two blank lines between them",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L465",
+ "community": 4,
+ "norm_label": "with all three sections there should be exactly two blank lines between them",
+ "id": "tests_test_notification_message_rationale_465"
+ },
+ {
+ "label": "All three section headers must appear as exact lines in the message.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L489",
+ "community": 4,
+ "norm_label": "all three section headers must appear as exact lines in the message.",
+ "id": "tests_test_notification_message_rationale_489"
+ },
+ {
+ "label": "The section header line itself must not contain a building-type circle emoji.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L509",
+ "community": 4,
+ "norm_label": "the section header line itself must not contain a building-type circle emoji.",
+ "id": "tests_test_notification_message_rationale_509"
+ },
+ {
+ "label": "test_posts.py",
+ "file_type": "code",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L1",
+ "community": 6,
+ "norm_label": "test_posts.py",
+ "id": "backend_tests_test_posts_py"
+ },
+ {
+ "label": "_make_building()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L14",
+ "community": 0,
+ "norm_label": "_make_building()",
+ "id": "tests_test_posts_make_building"
+ },
+ {
+ "label": "_make_post()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L25",
+ "community": 6,
+ "norm_label": "_make_post()",
+ "id": "tests_test_posts_make_post"
+ },
+ {
+ "label": "test_list_posts_returns_list()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L55",
+ "community": 6,
+ "norm_label": "test_list_posts_returns_list()",
+ "id": "tests_test_posts_test_list_posts_returns_list"
+ },
+ {
+ "label": "test_update_post_priority()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L76",
+ "community": 6,
+ "norm_label": "test_update_post_priority()",
+ "id": "tests_test_posts_test_update_post_priority"
+ },
+ {
+ "label": "test_set_post_conditions_too_many_returns_400()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L93",
+ "community": 6,
+ "norm_label": "test_set_post_conditions_too_many_returns_400()",
+ "id": "tests_test_posts_test_set_post_conditions_too_many_returns_400"
+ },
+ {
+ "label": "test_list_posts_sorted_by_building_number()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L114",
+ "community": 6,
+ "norm_label": "test_list_posts_sorted_by_building_number()",
+ "id": "tests_test_posts_test_list_posts_sorted_by_building_number"
+ },
+ {
+ "label": "Endpoint tests for post management routes.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L1",
+ "community": 6,
+ "norm_label": "endpoint tests for post management routes.",
+ "id": "tests_test_posts_rationale_1"
+ },
+ {
+ "label": "Posts endpoint returns rows sorted by Post # (building_number) ascending. T",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L115",
+ "community": 6,
+ "norm_label": "posts endpoint returns rows sorted by post # (building_number) ascending. t",
+ "id": "tests_test_posts_rationale_115"
+ },
+ {
+ "label": "test_post_suggestions.py",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1",
+ "community": 20,
+ "norm_label": "test_post_suggestions.py",
+ "id": "backend_tests_test_post_suggestions_py"
+ },
+ {
+ "label": "_make_session()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L140",
+ "community": 54,
+ "norm_label": "_make_session()",
+ "id": "tests_test_post_suggestions_make_session"
+ },
+ {
+ "label": "_preview()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L155",
+ "community": 6,
+ "norm_label": "_preview()",
+ "id": "tests_test_post_suggestions_preview"
+ },
+ {
+ "label": "test_preview_raises_400_on_completed_siege()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L195",
+ "community": 20,
+ "norm_label": "test_preview_raises_400_on_completed_siege()",
+ "id": "tests_test_post_suggestions_test_preview_raises_400_on_completed_siege"
+ },
+ {
+ "label": "test_preview_single_post_single_member_match()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L209",
+ "community": 6,
+ "norm_label": "test_preview_single_post_single_member_match()",
+ "id": "tests_test_post_suggestions_test_preview_single_post_single_member_match"
+ },
+ {
+ "label": "test_preview_no_match_produces_skip_reason_no_match()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L237",
+ "community": 6,
+ "norm_label": "test_preview_no_match_produces_skip_reason_no_match()",
+ "id": "tests_test_post_suggestions_test_preview_no_match_produces_skip_reason_no_match"
+ },
+ {
+ "label": "test_preview_reserve_position_produces_skip_reason_reserve()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L263",
+ "community": 6,
+ "norm_label": "test_preview_reserve_position_produces_skip_reason_reserve()",
+ "id": "tests_test_post_suggestions_test_preview_reserve_position_produces_skip_reason_reserve"
+ },
+ {
+ "label": "test_preview_disabled_position_produces_skip_reason_disabled()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L282",
+ "community": 6,
+ "norm_label": "test_preview_disabled_position_produces_skip_reason_disabled()",
+ "id": "tests_test_post_suggestions_test_preview_disabled_position_produces_skip_reason_disabled"
+ },
+ {
+ "label": "test_preview_post_with_no_active_conditions_produces_skip_reason_no_conditions()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L306",
+ "community": 6,
+ "norm_label": "test_preview_post_with_no_active_conditions_produces_skip_reason_no_conditions()",
+ "id": "tests_test_post_suggestions_test_preview_post_with_no_active_conditions_produces_skip_reason_no_conditions"
+ },
+ {
+ "label": "test_preview_post_with_conditions_but_no_matching_member_still_no_match()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L332",
+ "community": 6,
+ "norm_label": "test_preview_post_with_conditions_but_no_matching_member_still_no_match()",
+ "id": "tests_test_post_suggestions_test_preview_post_with_conditions_but_no_matching_member_still_no_match"
+ },
+ {
+ "label": "test_preview_mixed_no_conditions_no_match_and_assigned_in_one_preview()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L356",
+ "community": 6,
+ "norm_label": "test_preview_mixed_no_conditions_no_match_and_assigned_in_one_preview()",
+ "id": "tests_test_post_suggestions_test_preview_mixed_no_conditions_no_match_and_assigned_in_one_preview"
+ },
+ {
+ "label": "test_preview_higher_priority_post_gets_member_first()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L400",
+ "community": 6,
+ "norm_label": "test_preview_higher_priority_post_gets_member_first()",
+ "id": "tests_test_post_suggestions_test_preview_higher_priority_post_gets_member_first"
+ },
+ {
+ "label": "test_preview_second_post_prefers_different_condition()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L444",
+ "community": 6,
+ "norm_label": "test_preview_second_post_prefers_different_condition()",
+ "id": "tests_test_post_suggestions_test_preview_second_post_prefers_different_condition"
+ },
+ {
+ "label": "test_preview_prefers_less_loaded_member()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L478",
+ "community": 6,
+ "norm_label": "test_preview_prefers_less_loaded_member()",
+ "id": "tests_test_post_suggestions_test_preview_prefers_less_loaded_member"
+ },
+ {
+ "label": "test_preview_name_tiebreak_picks_alphabetically_lower()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L506",
+ "community": 6,
+ "norm_label": "test_preview_name_tiebreak_picks_alphabetically_lower()",
+ "id": "tests_test_post_suggestions_test_preview_name_tiebreak_picks_alphabetically_lower"
+ },
+ {
+ "label": "test_preview_duplicate_penalty_beats_assignment_count()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L527",
+ "community": 6,
+ "norm_label": "test_preview_duplicate_penalty_beats_assignment_count()",
+ "id": "tests_test_post_suggestions_test_preview_duplicate_penalty_beats_assignment_count"
+ },
+ {
+ "label": "test_preview_determinism_same_output_on_repeat()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L564",
+ "community": 6,
+ "norm_label": "test_preview_determinism_same_output_on_repeat()",
+ "id": "tests_test_post_suggestions_test_preview_determinism_same_output_on_repeat"
+ },
+ {
+ "label": "test_preview_current_member_preferred_when_equally_qualified()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L591",
+ "community": 6,
+ "norm_label": "test_preview_current_member_preferred_when_equally_qualified()",
+ "id": "tests_test_post_suggestions_test_preview_current_member_preferred_when_equally_qualified"
+ },
+ {
+ "label": "test_preview_lowest_condition_id_picked_as_tiebreak()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L660",
+ "community": 6,
+ "norm_label": "test_preview_lowest_condition_id_picked_as_tiebreak()",
+ "id": "tests_test_post_suggestions_test_preview_lowest_condition_id_picked_as_tiebreak"
+ },
+ {
+ "label": "test_preview_suboptimality_invariants_hold()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L685",
+ "community": 6,
+ "norm_label": "test_preview_suboptimality_invariants_hold()",
+ "id": "tests_test_post_suggestions_test_preview_suboptimality_invariants_hold"
+ },
+ {
+ "label": "test_preview_matches_current_true_when_same_assignment()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L763",
+ "community": 6,
+ "norm_label": "test_preview_matches_current_true_when_same_assignment()",
+ "id": "tests_test_post_suggestions_test_preview_matches_current_true_when_same_assignment"
+ },
+ {
+ "label": "test_preview_matches_current_false_for_null_suggestion()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L783",
+ "community": 6,
+ "norm_label": "test_preview_matches_current_false_for_null_suggestion()",
+ "id": "tests_test_post_suggestions_test_preview_matches_current_false_for_null_suggestion"
+ },
+ {
+ "label": "test_preview_empty_siege_returns_empty_assignments()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L808",
+ "community": 20,
+ "norm_label": "test_preview_empty_siege_returns_empty_assignments()",
+ "id": "tests_test_post_suggestions_test_preview_empty_siege_returns_empty_assignments"
+ },
+ {
+ "label": "test_preview_no_members_all_skip_no_match()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L816",
+ "community": 6,
+ "norm_label": "test_preview_no_members_all_skip_no_match()",
+ "id": "tests_test_post_suggestions_test_preview_no_members_all_skip_no_match"
+ },
+ {
+ "label": "_apply()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L883",
+ "community": 20,
+ "norm_label": "_apply()",
+ "id": "tests_test_post_suggestions_apply"
+ },
+ {
+ "label": "_preview_data()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L926",
+ "community": 20,
+ "norm_label": "_preview_data()",
+ "id": "tests_test_post_suggestions_preview_data"
+ },
+ {
+ "label": "_entry_dict()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L931",
+ "community": 20,
+ "norm_label": "_entry_dict()",
+ "id": "tests_test_post_suggestions_entry_dict"
+ },
+ {
+ "label": "test_apply_expired_preview_raises_409()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L955",
+ "community": 20,
+ "norm_label": "test_apply_expired_preview_raises_409()",
+ "id": "tests_test_post_suggestions_test_apply_expired_preview_raises_409"
+ },
+ {
+ "label": "test_apply_missing_preview_raises_409()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L969",
+ "community": 20,
+ "norm_label": "test_apply_missing_preview_raises_409()",
+ "id": "tests_test_post_suggestions_test_apply_missing_preview_raises_409"
+ },
+ {
+ "label": "test_apply_empty_position_ids_is_noop()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L978",
+ "community": 20,
+ "norm_label": "test_apply_empty_position_ids_is_noop()",
+ "id": "tests_test_post_suggestions_test_apply_empty_position_ids_is_noop"
+ },
+ {
+ "label": "test_apply_unknown_position_ids_silently_ignored()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L994",
+ "community": 20,
+ "norm_label": "test_apply_unknown_position_ids_silently_ignored()",
+ "id": "tests_test_post_suggestions_test_apply_unknown_position_ids_silently_ignored"
+ },
+ {
+ "label": "test_apply_null_member_entries_are_skipped()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1011",
+ "community": 20,
+ "norm_label": "test_apply_null_member_entries_are_skipped()",
+ "id": "tests_test_post_suggestions_test_apply_null_member_entries_are_skipped"
+ },
+ {
+ "label": "test_apply_subset_only_writes_checked_positions()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1025",
+ "community": 20,
+ "norm_label": "test_apply_subset_only_writes_checked_positions()",
+ "id": "tests_test_post_suggestions_test_apply_subset_only_writes_checked_positions"
+ },
+ {
+ "label": "test_apply_stale_position_disabled_returns_409()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1054",
+ "community": 20,
+ "norm_label": "test_apply_stale_position_disabled_returns_409()",
+ "id": "tests_test_post_suggestions_test_apply_stale_position_disabled_returns_409"
+ },
+ {
+ "label": "test_apply_stale_position_reserve_returns_409()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1072",
+ "community": 20,
+ "norm_label": "test_apply_stale_position_reserve_returns_409()",
+ "id": "tests_test_post_suggestions_test_apply_stale_position_reserve_returns_409"
+ },
+ {
+ "label": "test_apply_stale_member_inactive_returns_409()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1090",
+ "community": 20,
+ "norm_label": "test_apply_stale_member_inactive_returns_409()",
+ "id": "tests_test_post_suggestions_test_apply_stale_member_inactive_returns_409"
+ },
+ {
+ "label": "test_apply_member_changed_returns_409()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1108",
+ "community": 20,
+ "norm_label": "test_apply_member_changed_returns_409()",
+ "id": "tests_test_post_suggestions_test_apply_member_changed_returns_409"
+ },
+ {
+ "label": "test_apply_multiple_stale_all_surfaced_in_single_409()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1127",
+ "community": 20,
+ "norm_label": "test_apply_multiple_stale_all_surfaced_in_single_409()",
+ "id": "tests_test_post_suggestions_test_apply_multiple_stale_all_surfaced_in_single_409"
+ },
+ {
+ "label": "test_apply_completed_siege_raises_400()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1157",
+ "community": 20,
+ "norm_label": "test_apply_completed_siege_raises_400()",
+ "id": "tests_test_post_suggestions_test_apply_completed_siege_raises_400"
+ },
+ {
+ "label": "test_preview_skips_post_when_only_candidate_has_used_condition()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1182",
+ "community": 6,
+ "norm_label": "test_preview_skips_post_when_only_candidate_has_used_condition()",
+ "id": "tests_test_post_suggestions_test_preview_skips_post_when_only_candidate_has_used_condition"
+ },
+ {
+ "label": "Unit tests for the Suggest Post Assignments service. All tests use SimpleNamesp",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1",
+ "community": 20,
+ "norm_label": "unit tests for the suggest post assignments service. all tests use simplenamesp",
+ "id": "tests_test_post_suggestions_rationale_1"
+ },
+ {
+ "label": "Return a minimal AsyncSession mock that scalar_one_or_none returns siege.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L141",
+ "community": 54,
+ "norm_label": "return a minimal asyncsession mock that scalar_one_or_none returns siege.",
+ "id": "tests_test_post_suggestions_rationale_141"
+ },
+ {
+ "label": "Invoke preview_post_suggestions with a mocked session.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L156",
+ "community": 6,
+ "norm_label": "invoke preview_post_suggestions with a mocked session.",
+ "id": "tests_test_post_suggestions_rationale_156"
+ },
+ {
+ "label": "A completed siege raises 400 so planners cannot preview.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L196",
+ "community": 20,
+ "norm_label": "a completed siege raises 400 so planners cannot preview.",
+ "id": "tests_test_post_suggestions_rationale_196"
+ },
+ {
+ "label": "AC: single post with one matching member \u2192 suggestion targets that member.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L210",
+ "community": 6,
+ "norm_label": "ac: single post with one matching member \u2192 suggestion targets that member.",
+ "id": "tests_test_post_suggestions_rationale_210"
+ },
+ {
+ "label": "AC #6: post with no matching member \u2192 skip_reason='no_match'.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L238",
+ "community": 6,
+ "norm_label": "ac #6: post with no matching member \u2192 skip_reason='no_match'.",
+ "id": "tests_test_post_suggestions_rationale_238"
+ },
+ {
+ "label": "Charge #1: is_reserve=True on the position \u2192 skip_reason='reserve'.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L264",
+ "community": 6,
+ "norm_label": "charge #1: is_reserve=true on the position \u2192 skip_reason='reserve'.",
+ "id": "tests_test_post_suggestions_rationale_264"
+ },
+ {
+ "label": "Charge #1: is_disabled=True on the position \u2192 skip_reason='disabled'.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L283",
+ "community": 6,
+ "norm_label": "charge #1: is_disabled=true on the position \u2192 skip_reason='disabled'.",
+ "id": "tests_test_post_suggestions_rationale_283"
+ },
+ {
+ "label": "Issue #366: post with empty active_conditions \u2192 skip_reason='no_conditions'.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L307",
+ "community": 6,
+ "norm_label": "issue #366: post with empty active_conditions \u2192 skip_reason='no_conditions'.",
+ "id": "tests_test_post_suggestions_rationale_307"
+ },
+ {
+ "label": "Issue #366: no_match is unchanged when conditions exist but no member qualifies.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L333",
+ "community": 6,
+ "norm_label": "issue #366: no_match is unchanged when conditions exist but no member qualifies.",
+ "id": "tests_test_post_suggestions_rationale_333"
+ },
+ {
+ "label": "Issue #366: all three outcomes coexist without conflation. One post has no",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L357",
+ "community": 6,
+ "norm_label": "issue #366: all three outcomes coexist without conflation. one post has no",
+ "id": "tests_test_post_suggestions_rationale_357"
+ },
+ {
+ "label": "AC #3: two posts compete for the same member. The higher-priority post is p",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L401",
+ "community": 6,
+ "norm_label": "ac #3: two posts compete for the same member. the higher-priority post is p",
+ "id": "tests_test_post_suggestions_rationale_401"
+ },
+ {
+ "label": "AC #4: member can be assigned to two posts; second prefers fresh cond.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L445",
+ "community": 6,
+ "norm_label": "ac #4: member can be assigned to two posts; second prefers fresh cond.",
+ "id": "tests_test_post_suggestions_rationale_445"
+ },
+ {
+ "label": "AC #5: member with fewer assignments wins over heavily loaded member.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L479",
+ "community": 6,
+ "norm_label": "ac #5: member with fewer assignments wins over heavily loaded member.",
+ "id": "tests_test_post_suggestions_rationale_479"
+ },
+ {
+ "label": "Charge #8: on equal penalty + count, member with lower name wins.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L507",
+ "community": 6,
+ "norm_label": "charge #8: on equal penalty + count, member with lower name wins.",
+ "id": "tests_test_post_suggestions_rationale_507"
+ },
+ {
+ "label": "Charge #8: member with duplicate-condition penalty loses to member with 3 ex",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L528",
+ "community": 6,
+ "norm_label": "charge #8: member with duplicate-condition penalty loses to member with 3 ex",
+ "id": "tests_test_post_suggestions_rationale_528"
+ },
+ {
+ "label": "Charge #2: two runs with identical input produce byte-identical output.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L565",
+ "community": 6,
+ "norm_label": "charge #2: two runs with identical input produce byte-identical output.",
+ "id": "tests_test_post_suggestions_rationale_565"
+ },
+ {
+ "label": "Regression test for #360: bistable flip-flop. Setup: - 1 post, conditio",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L592",
+ "community": 6,
+ "norm_label": "regression test for #360: bistable flip-flop. setup: - 1 post, conditio",
+ "id": "tests_test_post_suggestions_rationale_592"
+ },
+ {
+ "label": "Two matching conditions, neither used \u2192 lowest id is picked.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L661",
+ "community": 6,
+ "norm_label": "two matching conditions, neither used \u2192 lowest id is picked.",
+ "id": "tests_test_post_suggestions_rationale_661"
+ },
+ {
+ "label": "Charge #14: greedy invariants hold even when a condition is shared across posts.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L686",
+ "community": 6,
+ "norm_label": "charge #14: greedy invariants hold even when a condition is shared across posts.",
+ "id": "tests_test_post_suggestions_rationale_686"
+ },
+ {
+ "label": "matches_current=True when the suggestion equals the existing assignment.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L764",
+ "community": 6,
+ "norm_label": "matches_current=true when the suggestion equals the existing assignment.",
+ "id": "tests_test_post_suggestions_rationale_764"
+ },
+ {
+ "label": "matches_current is always False when suggested_member_id is None.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L784",
+ "community": 6,
+ "norm_label": "matches_current is always false when suggested_member_id is none.",
+ "id": "tests_test_post_suggestions_rationale_784"
+ },
+ {
+ "label": "Charge #9: siege with no posts \u2192 preview returns empty assignments list.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L809",
+ "community": 20,
+ "norm_label": "charge #9: siege with no posts \u2192 preview returns empty assignments list.",
+ "id": "tests_test_post_suggestions_rationale_809"
+ },
+ {
+ "label": "Charge #9: posts exist but no siege members \u2192 all skip with no_match.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L817",
+ "community": 6,
+ "norm_label": "charge #9: posts exist but no siege members \u2192 all skip with no_match.",
+ "id": "tests_test_post_suggestions_rationale_817"
+ },
+ {
+ "label": "HTTP test client bound to the FastAPI app.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L839",
+ "community": 11,
+ "norm_label": "http test client bound to the fastapi app.",
+ "id": "tests_test_post_suggestions_rationale_839"
+ },
+ {
+ "label": "POST /api/sieges/1/post-suggestions returns 200 with preview payload.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L845",
+ "community": 11,
+ "norm_label": "post /api/sieges/1/post-suggestions returns 200 with preview payload.",
+ "id": "tests_test_post_suggestions_rationale_845"
+ },
+ {
+ "label": "POST /api/sieges/1/post-suggestions/apply returns 200 with applied_count.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L861",
+ "community": 11,
+ "norm_label": "post /api/sieges/1/post-suggestions/apply returns 200 with applied_count.",
+ "id": "tests_test_post_suggestions_rationale_861"
+ },
+ {
+ "label": "Invoke apply_post_suggestions with a fully mocked session.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L889",
+ "community": 20,
+ "norm_label": "invoke apply_post_suggestions with a fully mocked session.",
+ "id": "tests_test_post_suggestions_rationale_889"
+ },
+ {
+ "label": "Build the preview dict stored in siege.post_suggest_preview.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L927",
+ "community": 20,
+ "norm_label": "build the preview dict stored in siege.post_suggest_preview.",
+ "id": "tests_test_post_suggestions_rationale_927"
+ },
+ {
+ "label": "Apply with expired TTL raises 409 with the standard message.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L956",
+ "community": 20,
+ "norm_label": "apply with expired ttl raises 409 with the standard message.",
+ "id": "tests_test_post_suggestions_rationale_956"
+ },
+ {
+ "label": "Apply with no preview at all raises 409.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L970",
+ "community": 20,
+ "norm_label": "apply with no preview at all raises 409.",
+ "id": "tests_test_post_suggestions_rationale_970"
+ },
+ {
+ "label": "Charge #9: apply_position_ids=[] \u2192 0 writes, success.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L979",
+ "community": 20,
+ "norm_label": "charge #9: apply_position_ids=[] \u2192 0 writes, success.",
+ "id": "tests_test_post_suggestions_rationale_979"
+ },
+ {
+ "label": "Charge #9: position_ids not in the preview are silently ignored.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L995",
+ "community": 20,
+ "norm_label": "charge #9: position_ids not in the preview are silently ignored.",
+ "id": "tests_test_post_suggestions_rationale_995"
+ },
+ {
+ "label": "Null suggested_member_id entries are skipped; no error raised.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1012",
+ "community": 20,
+ "norm_label": "null suggested_member_id entries are skipped; no error raised.",
+ "id": "tests_test_post_suggestions_rationale_1012"
+ },
+ {
+ "label": "Apply with a subset of position_ids \u2192 only those positions written.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1026",
+ "community": 32,
+ "norm_label": "apply with a subset of position_ids \u2192 only those positions written.",
+ "id": "tests_test_post_suggestions_rationale_1026"
+ },
+ {
+ "label": "Position disabled since preview \u2192 409 with reason position_disabled.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1055",
+ "community": 20,
+ "norm_label": "position disabled since preview \u2192 409 with reason position_disabled.",
+ "id": "tests_test_post_suggestions_rationale_1055"
+ },
+ {
+ "label": "Position set to reserve since preview \u2192 409 with reason position_reserve.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1073",
+ "community": 20,
+ "norm_label": "position set to reserve since preview \u2192 409 with reason position_reserve.",
+ "id": "tests_test_post_suggestions_rationale_1073"
+ },
+ {
+ "label": "Member became inactive since preview \u2192 409 with reason member_inactive.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1091",
+ "community": 20,
+ "norm_label": "member became inactive since preview \u2192 409 with reason member_inactive.",
+ "id": "tests_test_post_suggestions_rationale_1091"
+ },
+ {
+ "label": "Charge #15: another planner assigned a different member \u2192 reason member_changed.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1109",
+ "community": 20,
+ "norm_label": "charge #15: another planner assigned a different member \u2192 reason member_changed.",
+ "id": "tests_test_post_suggestions_rationale_1109"
+ },
+ {
+ "label": "Multiple stale entries \u2192 all returned in a single 409 (one round-trip).",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1128",
+ "community": 20,
+ "norm_label": "multiple stale entries \u2192 all returned in a single 409 (one round-trip).",
+ "id": "tests_test_post_suggestions_rationale_1128"
+ },
+ {
+ "label": "Apply on a completed siege raises 400 before checking preview.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1158",
+ "community": 20,
+ "norm_label": "apply on a completed siege raises 400 before checking preview.",
+ "id": "tests_test_post_suggestions_rationale_1158"
+ },
+ {
+ "label": "Regression for #381. Setup: one member matches a condition that is active o",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1183",
+ "community": 6,
+ "norm_label": "regression for #381. setup: one member matches a condition that is active o",
+ "id": "tests_test_post_suggestions_rationale_1183"
+ },
+ {
+ "label": "test_post_suggestions_integration.py",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L1",
+ "community": 32,
+ "norm_label": "test_post_suggestions_integration.py",
+ "id": "backend_tests_test_post_suggestions_integration_py"
+ },
+ {
+ "label": "engine()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L60",
+ "community": 32,
+ "norm_label": "engine()",
+ "id": "tests_test_post_suggestions_integration_engine"
+ },
+ {
+ "label": "session_factory()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L79",
+ "community": 32,
+ "norm_label": "session_factory()",
+ "id": "tests_test_post_suggestions_integration_session_factory"
+ },
+ {
+ "label": "test_preview_loads_m2m_relations_without_greenlet_error()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L190",
+ "community": 32,
+ "norm_label": "test_preview_loads_m2m_relations_without_greenlet_error()",
+ "id": "tests_test_post_suggestions_integration_test_preview_loads_m2m_relations_without_greenlet_error"
+ },
+ {
+ "label": "test_preview_overwrite_stores_second_preview_in_db()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L215",
+ "community": 32,
+ "norm_label": "test_preview_overwrite_stores_second_preview_in_db()",
+ "id": "tests_test_post_suggestions_integration_test_preview_overwrite_stores_second_preview_in_db"
+ },
+ {
+ "label": "test_apply_persists_matched_condition_id_to_db()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L254",
+ "community": 32,
+ "norm_label": "test_apply_persists_matched_condition_id_to_db()",
+ "id": "tests_test_post_suggestions_integration_test_apply_persists_matched_condition_id_to_db"
+ },
+ {
+ "label": "test_apply_subset_leaves_unselected_positions_unchanged()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L283",
+ "community": 32,
+ "norm_label": "test_apply_subset_leaves_unselected_positions_unchanged()",
+ "id": "tests_test_post_suggestions_integration_test_apply_subset_leaves_unselected_positions_unchanged"
+ },
+ {
+ "label": "test_member_changed_stale_reason_on_concurrent_apply()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L313",
+ "community": 32,
+ "norm_label": "test_member_changed_stale_reason_on_concurrent_apply()",
+ "id": "tests_test_post_suggestions_integration_test_member_changed_stale_reason_on_concurrent_apply"
+ },
+ {
+ "label": "Integration tests for the Suggest Post Assignments feature. These tests use a r",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L1",
+ "community": 32,
+ "norm_label": "integration tests for the suggest post assignments feature. these tests use a r",
+ "id": "tests_test_post_suggestions_integration_rationale_1"
+ },
+ {
+ "label": "Enable SQLite foreign key enforcement (no-op on PostgreSQL).",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L53",
+ "community": 30,
+ "norm_label": "enable sqlite foreign key enforcement (no-op on postgresql).",
+ "id": "tests_test_post_suggestions_integration_rationale_53"
+ },
+ {
+ "label": "Create an async engine against an in-memory SQLite DB.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L61",
+ "community": 32,
+ "norm_label": "create an async engine against an in-memory sqlite db.",
+ "id": "tests_test_post_suggestions_integration_rationale_61"
+ },
+ {
+ "label": "Yield a single AsyncSession per test.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L72",
+ "community": 5,
+ "norm_label": "yield a single asyncsession per test.",
+ "id": "tests_test_post_suggestions_integration_rationale_72"
+ },
+ {
+ "label": "Yield a session factory for tests that need multiple sessions.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L80",
+ "community": 32,
+ "norm_label": "yield a session factory for tests that need multiple sessions.",
+ "id": "tests_test_post_suggestions_integration_rationale_80"
+ },
+ {
+ "label": "Seed a siege with 2 posts, 3 members, M2M preferences and conditions. Retur",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L90",
+ "community": 32,
+ "norm_label": "seed a siege with 2 posts, 3 members, m2m preferences and conditions. retur",
+ "id": "tests_test_post_suggestions_integration_rationale_90"
+ },
+ {
+ "label": "Charge #12: selectinload chain works against real DB. Verifies that no Miss",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L191",
+ "community": 32,
+ "norm_label": "charge #12: selectinload chain works against real db. verifies that no miss",
+ "id": "tests_test_post_suggestions_integration_rationale_191"
+ },
+ {
+ "label": "Second preview within TTL overwrites first in the DB JSON column. Asserts b",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L216",
+ "community": 32,
+ "norm_label": "second preview within ttl overwrites first in the db json column. asserts b",
+ "id": "tests_test_post_suggestions_integration_rationale_216"
+ },
+ {
+ "label": "Charge #17: apply \u2192 re-read position from DB \u2192 matched_condition_id set. Wi",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L255",
+ "community": 32,
+ "norm_label": "charge #17: apply \u2192 re-read position from db \u2192 matched_condition_id set. wi",
+ "id": "tests_test_post_suggestions_integration_rationale_255"
+ },
+ {
+ "label": "Charge #22: member_changed reason fires when position written between preview an",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L314",
+ "community": 32,
+ "norm_label": "charge #22: member_changed reason fires when position written between preview an",
+ "id": "tests_test_post_suggestions_integration_rationale_314"
+ },
+ {
+ "label": "test_reference.py",
+ "file_type": "code",
+ "source_file": "backend/tests/test_reference.py",
+ "source_location": "L1",
+ "community": 65,
+ "norm_label": "test_reference.py",
+ "id": "backend_tests_test_reference_py"
+ },
+ {
+ "label": "_make_post_condition()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_reference.py",
+ "source_location": "L13",
+ "community": 65,
+ "norm_label": "_make_post_condition()",
+ "id": "tests_test_reference_make_post_condition"
+ },
+ {
+ "label": "test_get_post_conditions_returns_list()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_reference.py",
+ "source_location": "L28",
+ "community": 65,
+ "norm_label": "test_get_post_conditions_returns_list()",
+ "id": "tests_test_reference_test_get_post_conditions_returns_list"
+ },
+ {
+ "label": "test_get_building_types_returns_list()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_reference.py",
+ "source_location": "L54",
+ "community": 65,
+ "norm_label": "test_get_building_types_returns_list()",
+ "id": "tests_test_reference_test_get_building_types_returns_list"
+ },
+ {
+ "label": "test_get_member_roles_returns_four_roles()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_reference.py",
+ "source_location": "L90",
+ "community": 65,
+ "norm_label": "test_get_member_roles_returns_four_roles()",
+ "id": "tests_test_reference_test_get_member_roles_returns_four_roles"
+ },
+ {
+ "label": "Endpoint tests for /api reference data endpoints.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_reference.py",
+ "source_location": "L1",
+ "community": 65,
+ "norm_label": "endpoint tests for /api reference data endpoints.",
+ "id": "tests_test_reference_rationale_1"
+ },
+ {
+ "label": "test_schema.py",
+ "file_type": "code",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L1",
+ "community": 43,
+ "norm_label": "test_schema.py",
+ "id": "backend_tests_test_schema_py"
+ },
+ {
+ "label": "_enable_sqlite_fk()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L21",
+ "community": 30,
+ "norm_label": "_enable_sqlite_fk()",
+ "id": "tests_test_schema_enable_sqlite_fk"
+ },
+ {
+ "label": "db_session()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L29",
+ "community": 43,
+ "norm_label": "db_session()",
+ "id": "tests_test_schema_db_session"
+ },
+ {
+ "label": "test_member_name_unique()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L50",
+ "community": 43,
+ "norm_label": "test_member_name_unique()",
+ "id": "tests_test_schema_test_member_name_unique"
+ },
+ {
+ "label": "test_position_reserve_and_member_constraint_defined()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L65",
+ "community": 43,
+ "norm_label": "test_position_reserve_and_member_constraint_defined()",
+ "id": "tests_test_schema_test_position_reserve_and_member_constraint_defined"
+ },
+ {
+ "label": "test_building_group_slot_count_bounds()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L78",
+ "community": 43,
+ "norm_label": "test_building_group_slot_count_bounds()",
+ "id": "tests_test_schema_test_building_group_slot_count_bounds"
+ },
+ {
+ "label": "test_post_condition_count()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L89",
+ "community": 43,
+ "norm_label": "test_post_condition_count()",
+ "id": "tests_test_schema_test_post_condition_count"
+ },
+ {
+ "label": "test_building_type_config_count()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L104",
+ "community": 43,
+ "norm_label": "test_building_type_config_count()",
+ "id": "tests_test_schema_test_building_type_config_count"
+ },
+ {
+ "label": "test_siege_member_pk()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L119",
+ "community": 43,
+ "norm_label": "test_siege_member_pk()",
+ "id": "tests_test_schema_test_siege_member_pk"
+ },
+ {
+ "label": "Schema constraint and seed data tests using in-memory SQLite.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L1",
+ "community": 43,
+ "norm_label": "schema constraint and seed data tests using in-memory sqlite.",
+ "id": "tests_test_schema_rationale_1"
+ },
+ {
+ "label": "Enable SQLite foreign key enforcement.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L22",
+ "community": 30,
+ "norm_label": "enable sqlite foreign key enforcement.",
+ "id": "tests_test_schema_rationale_22"
+ },
+ {
+ "label": "Inserting two members with the same name must raise IntegrityError.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L51",
+ "community": 43,
+ "norm_label": "inserting two members with the same name must raise integrityerror.",
+ "id": "tests_test_schema_rationale_51"
+ },
+ {
+ "label": "The check constraint preventing is_reserve=True with a member_id is defined.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L66",
+ "community": 43,
+ "norm_label": "the check constraint preventing is_reserve=true with a member_id is defined.",
+ "id": "tests_test_schema_rationale_66"
+ },
+ {
+ "label": "slot_count check constraints (1\u20133) are declared on the table.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L79",
+ "community": 43,
+ "norm_label": "slot_count check constraints (1\u20133) are declared on the table.",
+ "id": "tests_test_schema_rationale_79"
+ },
+ {
+ "label": "seed_post_conditions populates exactly 36 rows.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L90",
+ "community": 43,
+ "norm_label": "seed_post_conditions populates exactly 36 rows.",
+ "id": "tests_test_schema_rationale_90"
+ },
+ {
+ "label": "seed_building_type_config populates exactly 5 rows.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L105",
+ "community": 43,
+ "norm_label": "seed_building_type_config populates exactly 5 rows.",
+ "id": "tests_test_schema_rationale_105"
+ },
+ {
+ "label": "Inserting a duplicate (siege_id, member_id) pair raises IntegrityError.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L120",
+ "community": 43,
+ "norm_label": "inserting a duplicate (siege_id, member_id) pair raises integrityerror.",
+ "id": "tests_test_schema_rationale_120"
+ },
+ {
+ "label": "test_seed_canonical.py",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L1",
+ "community": 5,
+ "norm_label": "test_seed_canonical.py",
+ "id": "backend_tests_test_seed_canonical_py"
+ },
+ {
+ "label": "_run_canonical_seed()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L57",
+ "community": 5,
+ "norm_label": "_run_canonical_seed()",
+ "id": "tests_test_seed_canonical_run_canonical_seed"
+ },
+ {
+ "label": "TestCanonicalSeedPostConditions",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L71",
+ "community": 16,
+ "norm_label": "testcanonicalseedpostconditions",
+ "id": "tests_test_seed_canonical_testcanonicalseedpostconditions"
+ },
+ {
+ "label": "test_seeds_36_post_conditions()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L75",
+ "community": 5,
+ "norm_label": "test_seeds_36_post_conditions()",
+ "id": "tests_test_seed_canonical_test_seeds_36_post_conditions"
+ },
+ {
+ "label": "test_idempotent_post_conditions()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L84",
+ "community": 5,
+ "norm_label": "test_idempotent_post_conditions()",
+ "id": "tests_test_seed_canonical_test_idempotent_post_conditions"
+ },
+ {
+ "label": "TestCanonicalSeedBuildingTypeConfig",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L94",
+ "community": 16,
+ "norm_label": "testcanonicalseedbuildingtypeconfig",
+ "id": "tests_test_seed_canonical_testcanonicalseedbuildingtypeconfig"
+ },
+ {
+ "label": "test_seeds_building_type_configs()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L98",
+ "community": 5,
+ "norm_label": "test_seeds_building_type_configs()",
+ "id": "tests_test_seed_canonical_test_seeds_building_type_configs"
+ },
+ {
+ "label": "test_idempotent_building_type_config()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L107",
+ "community": 5,
+ "norm_label": "test_idempotent_building_type_config()",
+ "id": "tests_test_seed_canonical_test_idempotent_building_type_config"
+ },
+ {
+ "label": "TestCanonicalSeedPostPriorityConfig",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L120",
+ "community": 16,
+ "norm_label": "testcanonicalseedpostpriorityconfig",
+ "id": "tests_test_seed_canonical_testcanonicalseedpostpriorityconfig"
+ },
+ {
+ "label": "test_seeds_18_post_priority_configs()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L128",
+ "community": 5,
+ "norm_label": "test_seeds_18_post_priority_configs()",
+ "id": "tests_test_seed_canonical_test_seeds_18_post_priority_configs"
+ },
+ {
+ "label": "test_priority_configs_cover_posts_1_through_18()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L137",
+ "community": 5,
+ "norm_label": "test_priority_configs_cover_posts_1_through_18()",
+ "id": "tests_test_seed_canonical_test_priority_configs_cover_posts_1_through_18"
+ },
+ {
+ "label": "test_priority_configs_default_priority_is_2()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L145",
+ "community": 5,
+ "norm_label": "test_priority_configs_default_priority_is_2()",
+ "id": "tests_test_seed_canonical_test_priority_configs_default_priority_is_2"
+ },
+ {
+ "label": "test_idempotent_post_priority_config()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L153",
+ "community": 5,
+ "norm_label": "test_idempotent_post_priority_config()",
+ "id": "tests_test_seed_canonical_test_idempotent_post_priority_config"
+ },
+ {
+ "label": "Regression tests for scripts/seed.py (the canonical seed entry point). These te",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L1",
+ "community": 5,
+ "norm_label": "regression tests for scripts/seed.py (the canonical seed entry point). these te",
+ "id": "tests_test_seed_canonical_rationale_1"
+ },
+ {
+ "label": "Run the three seed functions called by scripts/seed.py.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L58",
+ "community": 5,
+ "norm_label": "run the three seed functions called by scripts/seed.py.",
+ "id": "tests_test_seed_canonical_rationale_58"
+ },
+ {
+ "label": "PostCondition seeding via the canonical script.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L72",
+ "community": 16,
+ "norm_label": "postcondition seeding via the canonical script.",
+ "id": "tests_test_seed_canonical_rationale_72"
+ },
+ {
+ "label": "Canonical seed must insert all 36 PostCondition rows.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L76",
+ "community": 113,
+ "norm_label": "canonical seed must insert all 36 postcondition rows.",
+ "id": "tests_test_seed_canonical_rationale_76"
+ },
+ {
+ "label": "Running twice must not create duplicate PostCondition rows.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L85",
+ "community": 114,
+ "norm_label": "running twice must not create duplicate postcondition rows.",
+ "id": "tests_test_seed_canonical_rationale_85"
+ },
+ {
+ "label": "BuildingTypeConfig seeding via the canonical script.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L95",
+ "community": 16,
+ "norm_label": "buildingtypeconfig seeding via the canonical script.",
+ "id": "tests_test_seed_canonical_rationale_95"
+ },
+ {
+ "label": "Canonical seed must insert BuildingTypeConfig rows.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L99",
+ "community": 115,
+ "norm_label": "canonical seed must insert buildingtypeconfig rows.",
+ "id": "tests_test_seed_canonical_rationale_99"
+ },
+ {
+ "label": "Running twice must not create duplicate BuildingTypeConfig rows.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L108",
+ "community": 116,
+ "norm_label": "running twice must not create duplicate buildingtypeconfig rows.",
+ "id": "tests_test_seed_canonical_rationale_108"
+ },
+ {
+ "label": "PostPriorityConfig seeding via the canonical script. This is the seed that",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L121",
+ "community": 16,
+ "norm_label": "postpriorityconfig seeding via the canonical script. this is the seed that",
+ "id": "tests_test_seed_canonical_rationale_121"
+ },
+ {
+ "label": "Canonical seed must insert all 18 PostPriorityConfig rows.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L129",
+ "community": 117,
+ "norm_label": "canonical seed must insert all 18 postpriorityconfig rows.",
+ "id": "tests_test_seed_canonical_rationale_129"
+ },
+ {
+ "label": "PostPriorityConfig rows must cover post numbers 1 through 18.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L138",
+ "community": 118,
+ "norm_label": "postpriorityconfig rows must cover post numbers 1 through 18.",
+ "id": "tests_test_seed_canonical_rationale_138"
+ },
+ {
+ "label": "All PostPriorityConfig rows must have default priority of 2.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L146",
+ "community": 119,
+ "norm_label": "all postpriorityconfig rows must have default priority of 2.",
+ "id": "tests_test_seed_canonical_rationale_146"
+ },
+ {
+ "label": "Running twice must not create duplicate PostPriorityConfig rows.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L154",
+ "community": 120,
+ "norm_label": "running twice must not create duplicate postpriorityconfig rows.",
+ "id": "tests_test_seed_canonical_rationale_154"
+ },
+ {
+ "label": "test_seed_demo.py",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L1",
+ "community": 5,
+ "norm_label": "test_seed_demo.py",
+ "id": "backend_tests_test_seed_demo_py"
+ },
+ {
+ "label": "session()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L41",
+ "community": 5,
+ "norm_label": "session()",
+ "id": "tests_test_seed_demo_session"
+ },
+ {
+ "label": "_run_seed()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L59",
+ "community": 5,
+ "norm_label": "_run_seed()",
+ "id": "tests_test_seed_demo_run_seed"
+ },
+ {
+ "label": "TestSeedDemoMembers",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L91",
+ "community": 16,
+ "norm_label": "testseeddemomembers",
+ "id": "tests_test_seed_demo_testseeddemomembers"
+ },
+ {
+ "label": "test_creates_25_members()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L95",
+ "community": 5,
+ "norm_label": "test_creates_25_members()",
+ "id": "tests_test_seed_demo_test_creates_25_members"
+ },
+ {
+ "label": "test_members_have_demo_names()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L101",
+ "community": 5,
+ "norm_label": "test_members_have_demo_names()",
+ "id": "tests_test_seed_demo_test_members_have_demo_names"
+ },
+ {
+ "label": "test_idempotent_member_creation()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L109",
+ "community": 5,
+ "norm_label": "test_idempotent_member_creation()",
+ "id": "tests_test_seed_demo_test_idempotent_member_creation"
+ },
+ {
+ "label": "TestSeedDemoSiege",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L117",
+ "community": 16,
+ "norm_label": "testseeddemosiege",
+ "id": "tests_test_seed_demo_testseeddemosiege"
+ },
+ {
+ "label": "test_creates_one_siege()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L121",
+ "community": 5,
+ "norm_label": "test_creates_one_siege()",
+ "id": "tests_test_seed_demo_test_creates_one_siege"
+ },
+ {
+ "label": "test_siege_has_active_status()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L127",
+ "community": 5,
+ "norm_label": "test_siege_has_active_status()",
+ "id": "tests_test_seed_demo_test_siege_has_active_status"
+ },
+ {
+ "label": "test_idempotent_siege_creation()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L133",
+ "community": 5,
+ "norm_label": "test_idempotent_siege_creation()",
+ "id": "tests_test_seed_demo_test_idempotent_siege_creation"
+ },
+ {
+ "label": "TestSeedDemoBuildingsAndPositions",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L141",
+ "community": 16,
+ "norm_label": "testseeddemobuildingsandpositions",
+ "id": "tests_test_seed_demo_testseeddemobuildingsandpositions"
+ },
+ {
+ "label": "test_creates_buildings()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L145",
+ "community": 5,
+ "norm_label": "test_creates_buildings()",
+ "id": "tests_test_seed_demo_test_creates_buildings"
+ },
+ {
+ "label": "test_creates_positions()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L151",
+ "community": 5,
+ "norm_label": "test_creates_positions()",
+ "id": "tests_test_seed_demo_test_creates_positions"
+ },
+ {
+ "label": "test_some_positions_have_members()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L157",
+ "community": 5,
+ "norm_label": "test_some_positions_have_members()",
+ "id": "tests_test_seed_demo_test_some_positions_have_members"
+ },
+ {
+ "label": "test_idempotent_position_creation()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L168",
+ "community": 5,
+ "norm_label": "test_idempotent_position_creation()",
+ "id": "tests_test_seed_demo_test_idempotent_position_creation"
+ },
+ {
+ "label": "TestSeedDemosiegeMembers",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L181",
+ "community": 16,
+ "norm_label": "testseeddemosiegemembers",
+ "id": "tests_test_seed_demo_testseeddemosiegemembers"
+ },
+ {
+ "label": "test_enrolls_all_members()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L185",
+ "community": 5,
+ "norm_label": "test_enrolls_all_members()",
+ "id": "tests_test_seed_demo_test_enrolls_all_members"
+ },
+ {
+ "label": "test_members_have_attack_days()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L191",
+ "community": 5,
+ "norm_label": "test_members_have_attack_days()",
+ "id": "tests_test_seed_demo_test_members_have_attack_days"
+ },
+ {
+ "label": "test_idempotent_siege_member_enrollment()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L199",
+ "community": 5,
+ "norm_label": "test_idempotent_siege_member_enrollment()",
+ "id": "tests_test_seed_demo_test_idempotent_siege_member_enrollment"
+ },
+ {
+ "label": "Smoke tests for scripts/seed_demo.py. These tests run against an in-memory SQLi",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L1",
+ "community": 5,
+ "norm_label": "smoke tests for scripts/seed_demo.py. these tests run against an in-memory sqli",
+ "id": "tests_test_seed_demo_rationale_1"
+ },
+ {
+ "label": "Provide a fresh in-memory SQLite session for each test.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L42",
+ "community": 5,
+ "norm_label": "provide a fresh in-memory sqlite session for each test.",
+ "id": "tests_test_seed_demo_rationale_42"
+ },
+ {
+ "label": "Run the demo seed functions against the provided session.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L60",
+ "community": 5,
+ "norm_label": "run the demo seed functions against the provided session.",
+ "id": "tests_test_seed_demo_rationale_60"
+ },
+ {
+ "label": "Demo member creation.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L92",
+ "community": 16,
+ "norm_label": "demo member creation.",
+ "id": "tests_test_seed_demo_rationale_92"
+ },
+ {
+ "label": "Running twice must not create duplicate members.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L110",
+ "community": 121,
+ "norm_label": "running twice must not create duplicate members.",
+ "id": "tests_test_seed_demo_rationale_110"
+ },
+ {
+ "label": "Running twice must not create a second siege.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L134",
+ "community": 122,
+ "norm_label": "running twice must not create a second siege.",
+ "id": "tests_test_seed_demo_rationale_134"
+ },
+ {
+ "label": "Buildings and positions.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L142",
+ "community": 16,
+ "norm_label": "buildings and positions.",
+ "id": "tests_test_seed_demo_rationale_142"
+ },
+ {
+ "label": "Most positions should be filled with demo members.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L158",
+ "community": 123,
+ "norm_label": "most positions should be filled with demo members.",
+ "id": "tests_test_seed_demo_rationale_158"
+ },
+ {
+ "label": "Running twice must not double the building/position count.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L169",
+ "community": 124,
+ "norm_label": "running twice must not double the building/position count.",
+ "id": "tests_test_seed_demo_rationale_169"
+ },
+ {
+ "label": "Siege member enrollments.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L182",
+ "community": 16,
+ "norm_label": "siege member enrollments.",
+ "id": "tests_test_seed_demo_rationale_182"
+ },
+ {
+ "label": "Running twice must not double the siege_member count.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L200",
+ "community": 125,
+ "norm_label": "running twice must not double the siege_member count.",
+ "id": "tests_test_seed_demo_rationale_200"
+ },
+ {
+ "label": "test_sieges.py",
+ "file_type": "code",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L1",
+ "community": 30,
+ "norm_label": "test_sieges.py",
+ "id": "backend_tests_test_sieges_py"
+ },
+ {
+ "label": "_make_siege()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L22",
+ "community": 12,
+ "norm_label": "_make_siege()",
+ "id": "tests_test_sieges_make_siege"
+ },
+ {
+ "label": "test_list_sieges_returns_empty_list()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L48",
+ "community": 30,
+ "norm_label": "test_list_sieges_returns_empty_list()",
+ "id": "tests_test_sieges_test_list_sieges_returns_empty_list"
+ },
+ {
+ "label": "test_create_siege_returns_201()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L64",
+ "community": 30,
+ "norm_label": "test_create_siege_returns_201()",
+ "id": "tests_test_sieges_test_create_siege_returns_201"
+ },
+ {
+ "label": "test_get_siege_not_found_returns_404()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L94",
+ "community": 30,
+ "norm_label": "test_get_siege_not_found_returns_404()",
+ "id": "tests_test_sieges_test_get_siege_not_found_returns_404"
+ },
+ {
+ "label": "test_delete_planning_siege_returns_204()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L110",
+ "community": 30,
+ "norm_label": "test_delete_planning_siege_returns_204()",
+ "id": "tests_test_sieges_test_delete_planning_siege_returns_204"
+ },
+ {
+ "label": "test_delete_active_siege_returns_400()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L125",
+ "community": 30,
+ "norm_label": "test_delete_active_siege_returns_400()",
+ "id": "tests_test_sieges_test_delete_active_siege_returns_400"
+ },
+ {
+ "label": "_seed_siege()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L168",
+ "community": 32,
+ "norm_label": "_seed_siege()",
+ "id": "tests_test_sieges_seed_siege"
+ },
+ {
+ "label": "test_compute_scroll_count_sums_theoretical_capacity()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L205",
+ "community": 30,
+ "norm_label": "test_compute_scroll_count_sums_theoretical_capacity()",
+ "id": "tests_test_sieges_test_compute_scroll_count_sums_theoretical_capacity"
+ },
+ {
+ "label": "test_compute_scroll_count_broken_building_unchanged()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L229",
+ "community": 30,
+ "norm_label": "test_compute_scroll_count_broken_building_unchanged()",
+ "id": "tests_test_sieges_test_compute_scroll_count_broken_building_unchanged"
+ },
+ {
+ "label": "test_compute_scroll_count_level_change_updates_count()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L262",
+ "community": 30,
+ "norm_label": "test_compute_scroll_count_level_change_updates_count()",
+ "id": "tests_test_sieges_test_compute_scroll_count_level_change_updates_count"
+ },
+ {
+ "label": "test_compute_scroll_count_post_buildings_contribute_one()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L292",
+ "community": 30,
+ "norm_label": "test_compute_scroll_count_post_buildings_contribute_one()",
+ "id": "tests_test_sieges_test_compute_scroll_count_post_buildings_contribute_one"
+ },
+ {
+ "label": "Endpoint tests for /api/sieges \u2014 mocks the service layer directly.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L1",
+ "community": 60,
+ "norm_label": "endpoint tests for /api/sieges \u2014 mocks the service layer directly.",
+ "id": "tests_test_sieges_rationale_1"
+ },
+ {
+ "label": "Insert a siege with the given buildings and return the siege id. Each dict",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L169",
+ "community": 32,
+ "norm_label": "insert a siege with the given buildings and return the siege id. each dict",
+ "id": "tests_test_sieges_rationale_169"
+ },
+ {
+ "label": "compute_scroll_count returns the sum of _LEVEL_TEAMS capacities for all building",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L206",
+ "community": 30,
+ "norm_label": "compute_scroll_count returns the sum of _level_teams capacities for all building",
+ "id": "tests_test_sieges_rationale_206"
+ },
+ {
+ "label": "Breaking a building must NOT change the scroll count (regression guard for issue",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L230",
+ "community": 30,
+ "norm_label": "breaking a building must not change the scroll count (regression guard for issue",
+ "id": "tests_test_sieges_rationale_230"
+ },
+ {
+ "label": "A level change must update the scroll count. One defense_tower at level 1 (",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L263",
+ "community": 30,
+ "norm_label": "a level change must update the scroll count. one defense_tower at level 1 (",
+ "id": "tests_test_sieges_rationale_263"
+ },
+ {
+ "label": "Post buildings (not in _LEVEL_TEAMS) must contribute 1 position each. One s",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L293",
+ "community": 30,
+ "norm_label": "post buildings (not in _level_teams) must contribute 1 position each. one s",
+ "id": "tests_test_sieges_rationale_293"
+ },
+ {
+ "label": "TestConfigureTelemetryNoop",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L17",
+ "community": 18,
+ "norm_label": "testconfiguretelemetrynoop",
+ "id": "tests_test_telemetry_testconfiguretelemetrynoop"
+ },
+ {
+ "label": ".test_noop_when_env_var_missing()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L20",
+ "community": 18,
+ "norm_label": ".test_noop_when_env_var_missing()",
+ "id": "tests_test_telemetry_testconfiguretelemetrynoop_test_noop_when_env_var_missing"
+ },
+ {
+ "label": ".test_noop_when_env_var_empty_string()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L42",
+ "community": 18,
+ "norm_label": ".test_noop_when_env_var_empty_string()",
+ "id": "tests_test_telemetry_testconfiguretelemetrynoop_test_noop_when_env_var_empty_string"
+ },
+ {
+ "label": ".test_noop_when_env_var_whitespace_only()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L61",
+ "community": 18,
+ "norm_label": ".test_noop_when_env_var_whitespace_only()",
+ "id": "tests_test_telemetry_testconfiguretelemetrynoop_test_noop_when_env_var_whitespace_only"
+ },
+ {
+ "label": ".test_calls_configure_azure_monitor_when_env_var_set()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L92",
+ "community": 18,
+ "norm_label": ".test_calls_configure_azure_monitor_when_env_var_set()",
+ "id": "tests_test_telemetry_testconfiguretelemetryactive_test_calls_configure_azure_monitor_when_env_var_set"
+ },
+ {
+ "label": ".test_sdk_exception_does_not_propagate()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L111",
+ "community": 18,
+ "norm_label": ".test_sdk_exception_does_not_propagate()",
+ "id": "tests_test_telemetry_testconfiguretelemetryactive_test_sdk_exception_does_not_propagate"
+ },
+ {
+ "label": "TestConfigureTelemetryFastAPIInstrumentation",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L130",
+ "community": 18,
+ "norm_label": "testconfiguretelemetryfastapiinstrumentation",
+ "id": "tests_test_telemetry_testconfiguretelemetryfastapiinstrumentation"
+ },
+ {
+ "label": ".test_instrument_app_called_when_connection_string_and_service_name_set()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L143",
+ "community": 18,
+ "norm_label": ".test_instrument_app_called_when_connection_string_and_service_name_set()",
+ "id": "tests_test_telemetry_testconfiguretelemetryfastapiinstrumentation_test_instrument_app_called_when_connection_string_and_service_name_set"
+ },
+ {
+ "label": ".test_configure_azure_monitor_called_when_both_env_vars_set()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L182",
+ "community": 18,
+ "norm_label": ".test_configure_azure_monitor_called_when_both_env_vars_set()",
+ "id": "tests_test_telemetry_testconfiguretelemetryfastapiinstrumentation_test_configure_azure_monitor_called_when_both_env_vars_set"
+ },
+ {
+ "label": ".test_instrument_app_not_called_when_app_is_none()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L218",
+ "community": 18,
+ "norm_label": ".test_instrument_app_not_called_when_app_is_none()",
+ "id": "tests_test_telemetry_testconfiguretelemetryfastapiinstrumentation_test_instrument_app_not_called_when_app_is_none"
+ },
+ {
+ "label": "TestConfigureTelemetrySQLAlchemyInstrumentation",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L258",
+ "community": 18,
+ "norm_label": "testconfiguretelemetrysqlalchemyinstrumentation",
+ "id": "tests_test_telemetry_testconfiguretelemetrysqlalchemyinstrumentation"
+ },
+ {
+ "label": ".test_sqlalchemy_instrument_called_with_sync_engine()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L273",
+ "community": 18,
+ "norm_label": ".test_sqlalchemy_instrument_called_with_sync_engine()",
+ "id": "tests_test_telemetry_testconfiguretelemetrysqlalchemyinstrumentation_test_sqlalchemy_instrument_called_with_sync_engine"
+ },
+ {
+ "label": ".test_sqlalchemy_instrument_not_called_when_engine_is_none()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L315",
+ "community": 18,
+ "norm_label": ".test_sqlalchemy_instrument_not_called_when_engine_is_none()",
+ "id": "tests_test_telemetry_testconfiguretelemetrysqlalchemyinstrumentation_test_sqlalchemy_instrument_not_called_when_engine_is_none"
+ },
+ {
+ "label": ".test_sqlalchemy_instrument_not_called_when_telemetry_unconfigured()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L353",
+ "community": 18,
+ "norm_label": ".test_sqlalchemy_instrument_not_called_when_telemetry_unconfigured()",
+ "id": "tests_test_telemetry_testconfiguretelemetrysqlalchemyinstrumentation_test_sqlalchemy_instrument_not_called_when_telemetry_unconfigured"
+ },
+ {
+ "label": "TestConfigureTelemetryAsyncPGInstrumentation",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L391",
+ "community": 18,
+ "norm_label": "testconfiguretelemetryasyncpginstrumentation",
+ "id": "tests_test_telemetry_testconfiguretelemetryasyncpginstrumentation"
+ },
+ {
+ "label": ".test_asyncpg_instrument_called_when_telemetry_configured()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L405",
+ "community": 18,
+ "norm_label": ".test_asyncpg_instrument_called_when_telemetry_configured()",
+ "id": "tests_test_telemetry_testconfiguretelemetryasyncpginstrumentation_test_asyncpg_instrument_called_when_telemetry_configured"
+ },
+ {
+ "label": ".test_asyncpg_instrument_not_called_when_telemetry_unconfigured()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L443",
+ "community": 18,
+ "norm_label": ".test_asyncpg_instrument_not_called_when_telemetry_unconfigured()",
+ "id": "tests_test_telemetry_testconfiguretelemetryasyncpginstrumentation_test_asyncpg_instrument_not_called_when_telemetry_unconfigured"
+ },
+ {
+ "label": "Tests for backend/app/telemetry.py. Verifies: - configure_telemetry() is a no-o",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L1",
+ "community": 18,
+ "norm_label": "tests for backend/app/telemetry.py. verifies: - configure_telemetry() is a no-o",
+ "id": "tests_test_telemetry_rationale_1"
+ },
+ {
+ "label": "When APPLICATIONINSIGHTS_CONNECTION_STRING is absent, nothing should happen.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L18",
+ "community": 18,
+ "norm_label": "when applicationinsights_connection_string is absent, nothing should happen.",
+ "id": "tests_test_telemetry_rationale_18"
+ },
+ {
+ "label": "No exception and configure_azure_monitor is never imported or called.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L21",
+ "community": 18,
+ "norm_label": "no exception and configure_azure_monitor is never imported or called.",
+ "id": "tests_test_telemetry_rationale_21"
+ },
+ {
+ "label": "An explicitly empty string also results in a no-op.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L43",
+ "community": 18,
+ "norm_label": "an explicitly empty string also results in a no-op.",
+ "id": "tests_test_telemetry_rationale_43"
+ },
+ {
+ "label": "A whitespace-only string is treated the same as empty.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L62",
+ "community": 18,
+ "norm_label": "a whitespace-only string is treated the same as empty.",
+ "id": "tests_test_telemetry_rationale_62"
+ },
+ {
+ "label": "When env var is set, configure_azure_monitor() must be called.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L82",
+ "community": 18,
+ "norm_label": "when env var is set, configure_azure_monitor() must be called.",
+ "id": "tests_test_telemetry_rationale_82"
+ },
+ {
+ "label": "configure_azure_monitor() is called exactly once with logger_name='app'.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L93",
+ "community": 18,
+ "norm_label": "configure_azure_monitor() is called exactly once with logger_name='app'.",
+ "id": "tests_test_telemetry_rationale_93"
+ },
+ {
+ "label": "If configure_azure_monitor raises, the exception is swallowed.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L112",
+ "community": 18,
+ "norm_label": "if configure_azure_monitor raises, the exception is swallowed.",
+ "id": "tests_test_telemetry_rationale_112"
+ },
+ {
+ "label": "Regression tests: FastAPIInstrumentor.instrument_app() must be called. Issu",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L131",
+ "community": 18,
+ "norm_label": "regression tests: fastapiinstrumentor.instrument_app() must be called. issu",
+ "id": "tests_test_telemetry_rationale_131"
+ },
+ {
+ "label": "FastAPIInstrumentor.instrument_app() is called with the FastAPI app. Wh",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L144",
+ "community": 18,
+ "norm_label": "fastapiinstrumentor.instrument_app() is called with the fastapi app. wh",
+ "id": "tests_test_telemetry_rationale_144"
+ },
+ {
+ "label": "configure_azure_monitor() is called when both env vars are present. Reg",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L183",
+ "community": 18,
+ "norm_label": "configure_azure_monitor() is called when both env vars are present. reg",
+ "id": "tests_test_telemetry_rationale_183"
+ },
+ {
+ "label": "FastAPIInstrumentor.instrument_app() is NOT called when app argument is None.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L219",
+ "community": 18,
+ "norm_label": "fastapiinstrumentor.instrument_app() is not called when app argument is none.",
+ "id": "tests_test_telemetry_rationale_219"
+ },
+ {
+ "label": "SQLAlchemyInstrumentor must be called when engine is provided. Issue #257:",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L259",
+ "community": 18,
+ "norm_label": "sqlalchemyinstrumentor must be called when engine is provided. issue #257:",
+ "id": "tests_test_telemetry_rationale_259"
+ },
+ {
+ "label": "SQLAlchemyInstrumentor().instrument(engine=...) is called with the engin",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L274",
+ "community": 18,
+ "norm_label": "sqlalchemyinstrumentor().instrument(engine=...) is called with the engin",
+ "id": "tests_test_telemetry_rationale_274"
+ },
+ {
+ "label": "SQLAlchemyInstrumentor().instrument() is NOT called when no engine argum",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L316",
+ "community": 18,
+ "norm_label": "sqlalchemyinstrumentor().instrument() is not called when no engine argum",
+ "id": "tests_test_telemetry_rationale_316"
+ },
+ {
+ "label": "SQLAlchemyInstrumentor().instrument() is NOT called when APPLICATIONINSI",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L354",
+ "community": 18,
+ "norm_label": "sqlalchemyinstrumentor().instrument() is not called when applicationinsi",
+ "id": "tests_test_telemetry_rationale_354"
+ },
+ {
+ "label": "AsyncPGInstrumentor must be called whenever telemetry is active. Issue #257",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L392",
+ "community": 18,
+ "norm_label": "asyncpginstrumentor must be called whenever telemetry is active. issue #257",
+ "id": "tests_test_telemetry_rationale_392"
+ },
+ {
+ "label": "AsyncPGInstrumentor().instrument() is called when telemetry is active, r",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L406",
+ "community": 18,
+ "norm_label": "asyncpginstrumentor().instrument() is called when telemetry is active, r",
+ "id": "tests_test_telemetry_rationale_406"
+ },
+ {
+ "label": "AsyncPGInstrumentor().instrument() is NOT called when APPLICATIONINSIGHT",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L444",
+ "community": 18,
+ "norm_label": "asyncpginstrumentor().instrument() is not called when applicationinsight",
+ "id": "tests_test_telemetry_rationale_444"
+ },
+ {
+ "label": "test_validation.py",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L1",
+ "community": 0,
+ "norm_label": "test_validation.py",
+ "id": "backend_tests_test_validation_py"
+ },
+ {
+ "label": "_make_condition()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L126",
+ "community": 6,
+ "norm_label": "_make_condition()",
+ "id": "tests_test_validation_make_condition"
+ },
+ {
+ "label": "test_validate_endpoint_404()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L148",
+ "community": 0,
+ "norm_label": "test_validate_endpoint_404()",
+ "id": "tests_test_validation_test_validate_endpoint_404"
+ },
+ {
+ "label": "test_validate_endpoint_returns_result()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L172",
+ "community": 0,
+ "norm_label": "test_validate_endpoint_returns_result()",
+ "id": "tests_test_validation_test_validate_endpoint_returns_result"
+ },
+ {
+ "label": "test_rule1_inactive_member_error()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L215",
+ "community": 0,
+ "norm_label": "test_rule1_inactive_member_error()",
+ "id": "tests_test_validation_test_rule1_inactive_member_error"
+ },
+ {
+ "label": "test_rule1_active_member_no_error()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L235",
+ "community": 0,
+ "norm_label": "test_rule1_active_member_no_error()",
+ "id": "tests_test_validation_test_rule1_active_member_no_error"
+ },
+ {
+ "label": "test_rule2_broken_building_assignment_counts_toward_scroll_limit()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L255",
+ "community": 0,
+ "norm_label": "test_rule2_broken_building_assignment_counts_toward_scroll_limit()",
+ "id": "tests_test_validation_test_rule2_broken_building_assignment_counts_toward_scroll_limit"
+ },
+ {
+ "label": "test_rule2_broken_and_healthy_both_count_toward_scroll_limit()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L293",
+ "community": 0,
+ "norm_label": "test_rule2_broken_and_healthy_both_count_toward_scroll_limit()",
+ "id": "tests_test_validation_test_rule2_broken_and_healthy_both_count_toward_scroll_limit"
+ },
+ {
+ "label": "test_rule2_exceeds_scroll_count()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L340",
+ "community": 0,
+ "norm_label": "test_rule2_exceeds_scroll_count()",
+ "id": "tests_test_validation_test_rule2_exceeds_scroll_count"
+ },
+ {
+ "label": "test_rule2_within_scroll_count()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L364",
+ "community": 0,
+ "norm_label": "test_rule2_within_scroll_count()",
+ "id": "tests_test_validation_test_rule2_within_scroll_count"
+ },
+ {
+ "label": "test_rule3_valid_building_number()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L406",
+ "community": 0,
+ "norm_label": "test_rule3_valid_building_number()",
+ "id": "tests_test_validation_test_rule3_valid_building_number"
+ },
+ {
+ "label": "test_rule4_invalid_group_number()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L420",
+ "community": 0,
+ "norm_label": "test_rule4_invalid_group_number()",
+ "id": "tests_test_validation_test_rule4_invalid_group_number"
+ },
+ {
+ "label": "test_rule4_valid_group_number()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L437",
+ "community": 0,
+ "norm_label": "test_rule4_valid_group_number()",
+ "id": "tests_test_validation_test_rule4_valid_group_number"
+ },
+ {
+ "label": "test_rule5_position_number_exceeds_slot_count()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L454",
+ "community": 0,
+ "norm_label": "test_rule5_position_number_exceeds_slot_count()",
+ "id": "tests_test_validation_test_rule5_position_number_exceeds_slot_count"
+ },
+ {
+ "label": "test_rule5_valid_position_number()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L471",
+ "community": 0,
+ "norm_label": "test_rule5_valid_position_number()",
+ "id": "tests_test_validation_test_rule5_valid_position_number"
+ },
+ {
+ "label": "test_rule6_valid_attack_day()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L501",
+ "community": 12,
+ "norm_label": "test_rule6_valid_attack_day()",
+ "id": "tests_test_validation_test_rule6_valid_attack_day"
+ },
+ {
+ "label": "test_rule7_post_has_multiple_groups()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L514",
+ "community": 0,
+ "norm_label": "test_rule7_post_has_multiple_groups()",
+ "id": "tests_test_validation_test_rule7_post_has_multiple_groups"
+ },
+ {
+ "label": "test_rule7_post_has_exactly_one_group()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L536",
+ "community": 0,
+ "norm_label": "test_rule7_post_has_exactly_one_group()",
+ "id": "tests_test_validation_test_rule7_post_has_exactly_one_group"
+ },
+ {
+ "label": "test_rule8_disabled_with_member()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L552",
+ "community": 0,
+ "norm_label": "test_rule8_disabled_with_member()",
+ "id": "tests_test_validation_test_rule8_disabled_with_member"
+ },
+ {
+ "label": "test_rule8_reserve_with_member()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L570",
+ "community": 0,
+ "norm_label": "test_rule8_reserve_with_member()",
+ "id": "tests_test_validation_test_rule8_reserve_with_member"
+ },
+ {
+ "label": "test_rule8_valid_state()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L588",
+ "community": 0,
+ "norm_label": "test_rule8_valid_state()",
+ "id": "tests_test_validation_test_rule8_valid_state"
+ },
+ {
+ "label": "test_rule9_wrong_building_count()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L606",
+ "community": 0,
+ "norm_label": "test_rule9_wrong_building_count()",
+ "id": "tests_test_validation_test_rule9_wrong_building_count"
+ },
+ {
+ "label": "test_rule9_correct_building_count()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L618",
+ "community": 0,
+ "norm_label": "test_rule9_correct_building_count()",
+ "id": "tests_test_validation_test_rule9_correct_building_count"
+ },
+ {
+ "label": "test_rule10_empty_unresolved_slot()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L643",
+ "community": 0,
+ "norm_label": "test_rule10_empty_unresolved_slot()",
+ "id": "tests_test_validation_test_rule10_empty_unresolved_slot"
+ },
+ {
+ "label": "test_rule10_message_uses_position_name()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L660",
+ "community": 0,
+ "norm_label": "test_rule10_message_uses_position_name()",
+ "id": "tests_test_validation_test_rule10_message_uses_position_name"
+ },
+ {
+ "label": "test_rule10_no_warning_when_disabled()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L687",
+ "community": 0,
+ "norm_label": "test_rule10_no_warning_when_disabled()",
+ "id": "tests_test_validation_test_rule10_no_warning_when_disabled"
+ },
+ {
+ "label": "test_rule11_member_pref_no_match()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L704",
+ "community": 0,
+ "norm_label": "test_rule11_member_pref_no_match()",
+ "id": "tests_test_validation_test_rule11_member_pref_no_match"
+ },
+ {
+ "label": "test_rule11_no_warning_when_no_preferences()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L732",
+ "community": 0,
+ "norm_label": "test_rule11_no_warning_when_no_preferences()",
+ "id": "tests_test_validation_test_rule11_no_warning_when_no_preferences"
+ },
+ {
+ "label": "test_rule13_missing_attack_day_assigned_member()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L759",
+ "community": 0,
+ "norm_label": "test_rule13_missing_attack_day_assigned_member()",
+ "id": "tests_test_validation_test_rule13_missing_attack_day_assigned_member"
+ },
+ {
+ "label": "test_rule13_attack_day_set()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L795",
+ "community": 0,
+ "norm_label": "test_rule13_attack_day_set()",
+ "id": "tests_test_validation_test_rule13_attack_day_set"
+ },
+ {
+ "label": "test_rule14_fewer_than_10_day2()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L815",
+ "community": 12,
+ "norm_label": "test_rule14_fewer_than_10_day2()",
+ "id": "tests_test_validation_test_rule14_fewer_than_10_day2"
+ },
+ {
+ "label": "test_rule14_ten_or_more_day2()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L830",
+ "community": 12,
+ "norm_label": "test_rule14_ten_or_more_day2()",
+ "id": "tests_test_validation_test_rule14_ten_or_more_day2"
+ },
+ {
+ "label": "test_rule15_hh_no_reserve()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L845",
+ "community": 0,
+ "norm_label": "test_rule15_hh_no_reserve()",
+ "id": "tests_test_validation_test_rule15_hh_no_reserve"
+ },
+ {
+ "label": "test_rule15_advanced_no_reserve()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L865",
+ "community": 0,
+ "norm_label": "test_rule15_advanced_no_reserve()",
+ "id": "tests_test_validation_test_rule15_advanced_no_reserve"
+ },
+ {
+ "label": "test_rule15_hh_reserve_configured()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L885",
+ "community": 0,
+ "norm_label": "test_rule15_hh_reserve_configured()",
+ "id": "tests_test_validation_test_rule15_hh_reserve_configured"
+ },
+ {
+ "label": "test_rule15_non_hh_no_reserve_no_warning()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L905",
+ "community": 0,
+ "norm_label": "test_rule15_non_hh_no_reserve_no_warning()",
+ "id": "tests_test_validation_test_rule15_non_hh_no_reserve_no_warning"
+ },
+ {
+ "label": "test_rule16_post_fewer_than_3_conditions()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L925",
+ "community": 6,
+ "norm_label": "test_rule16_post_fewer_than_3_conditions()",
+ "id": "tests_test_validation_test_rule16_post_fewer_than_3_conditions"
+ },
+ {
+ "label": "test_rule16_post_has_3_conditions()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L952",
+ "community": 0,
+ "norm_label": "test_rule16_post_has_3_conditions()",
+ "id": "tests_test_validation_test_rule16_post_has_3_conditions"
+ },
+ {
+ "label": "_default_configs()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L977",
+ "community": 54,
+ "norm_label": "_default_configs()",
+ "id": "tests_test_validation_default_configs"
+ },
+ {
+ "label": "_session_with_siege_and_configs()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L987",
+ "community": 0,
+ "norm_label": "_session_with_siege_and_configs()",
+ "id": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "label": "Tests for the validation engine (all 16 rules) and the validate endpoint.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L1",
+ "community": 0,
+ "norm_label": "tests for the validation engine (all 16 rules) and the validate endpoint.",
+ "id": "tests_test_validation_rationale_1"
+ },
+ {
+ "label": "Rule 1: assigned member who is inactive triggers an error.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L216",
+ "community": 0,
+ "norm_label": "rule 1: assigned member who is inactive triggers an error.",
+ "id": "tests_test_validation_rationale_216"
+ },
+ {
+ "label": "Rule 1 pass: active member assigned \u2014 no rule 1 error.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L236",
+ "community": 0,
+ "norm_label": "rule 1 pass: active member assigned \u2014 no rule 1 error.",
+ "id": "tests_test_validation_rationale_236"
+ },
+ {
+ "label": "Rule 2 regression (#253): assignments on broken buildings count toward scroll bu",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L256",
+ "community": 0,
+ "norm_label": "rule 2 regression (#253): assignments on broken buildings count toward scroll bu",
+ "id": "tests_test_validation_rationale_256"
+ },
+ {
+ "label": "Rule 2: assignments on broken buildings add to healthy-building count. Memb",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L294",
+ "community": 0,
+ "norm_label": "rule 2: assignments on broken buildings add to healthy-building count. memb",
+ "id": "tests_test_validation_rationale_294"
+ },
+ {
+ "label": "Rule 2: member assigned 4 times when scrolls_per_player limit is 3 \u2192 error.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L341",
+ "community": 0,
+ "norm_label": "rule 2: member assigned 4 times when scrolls_per_player limit is 3 \u2192 error.",
+ "id": "tests_test_validation_rationale_341"
+ },
+ {
+ "label": "Rule 2 pass: member assigned once, scroll count 5 \u2192 no error.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L365",
+ "community": 0,
+ "norm_label": "rule 2 pass: member assigned once, scroll count 5 \u2192 no error.",
+ "id": "tests_test_validation_rationale_365"
+ },
+ {
+ "label": "Rule 3: building_number=0 for stronghold \u2192 friendly label, no id= leak.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L385",
+ "community": 0,
+ "norm_label": "rule 3: building_number=0 for stronghold \u2192 friendly label, no id= leak.",
+ "id": "tests_test_validation_rationale_385"
+ },
+ {
+ "label": "Rule 3 pass: building_number=1 for stronghold.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L407",
+ "community": 0,
+ "norm_label": "rule 3 pass: building_number=1 for stronghold.",
+ "id": "tests_test_validation_rationale_407"
+ },
+ {
+ "label": "Rule 4: group_number=10 \u2192 error.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L421",
+ "community": 0,
+ "norm_label": "rule 4: group_number=10 \u2192 error.",
+ "id": "tests_test_validation_rationale_421"
+ },
+ {
+ "label": "Rule 4 pass: group_number=1.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L438",
+ "community": 0,
+ "norm_label": "rule 4 pass: group_number=1.",
+ "id": "tests_test_validation_rationale_438"
+ },
+ {
+ "label": "Rule 5: position_number=4 with slot_count=3 \u2192 error.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L455",
+ "community": 0,
+ "norm_label": "rule 5: position_number=4 with slot_count=3 \u2192 error.",
+ "id": "tests_test_validation_rationale_455"
+ },
+ {
+ "label": "Rule 5 pass: position_number=2, slot_count=3.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L472",
+ "community": 0,
+ "norm_label": "rule 5 pass: position_number=2, slot_count=3.",
+ "id": "tests_test_validation_rationale_472"
+ },
+ {
+ "label": "Rule 6: attack_day=3 \u2192 error.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L489",
+ "community": 12,
+ "norm_label": "rule 6: attack_day=3 \u2192 error.",
+ "id": "tests_test_validation_rationale_489"
+ },
+ {
+ "label": "Rule 6 pass: attack_day=2.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L502",
+ "community": 12,
+ "norm_label": "rule 6 pass: attack_day=2.",
+ "id": "tests_test_validation_rationale_502"
+ },
+ {
+ "label": "Rule 7: post building with 2 groups \u2192 error with correct message.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L515",
+ "community": 0,
+ "norm_label": "rule 7: post building with 2 groups \u2192 error with correct message.",
+ "id": "tests_test_validation_rationale_515"
+ },
+ {
+ "label": "Rule 7 pass: post building with 1 group.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L537",
+ "community": 0,
+ "norm_label": "rule 7 pass: post building with 1 group.",
+ "id": "tests_test_validation_rationale_537"
+ },
+ {
+ "label": "Rule 8: disabled position with member_id \u2192 error.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L553",
+ "community": 0,
+ "norm_label": "rule 8: disabled position with member_id \u2192 error.",
+ "id": "tests_test_validation_rationale_553"
+ },
+ {
+ "label": "Rule 8: reserve position with member \u2192 error.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L571",
+ "community": 0,
+ "norm_label": "rule 8: reserve position with member \u2192 error.",
+ "id": "tests_test_validation_rationale_571"
+ },
+ {
+ "label": "Rule 8 pass: position with member, not reserve, not disabled.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L589",
+ "community": 0,
+ "norm_label": "rule 8 pass: position with member, not reserve, not disabled.",
+ "id": "tests_test_validation_rationale_589"
+ },
+ {
+ "label": "Rule 9: 0 strongholds when config expects 1 \u2192 error.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L607",
+ "community": 0,
+ "norm_label": "rule 9: 0 strongholds when config expects 1 \u2192 error.",
+ "id": "tests_test_validation_rationale_607"
+ },
+ {
+ "label": "Rule 9 pass: exactly the right number of each building type.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L619",
+ "community": 0,
+ "norm_label": "rule 9 pass: exactly the right number of each building type.",
+ "id": "tests_test_validation_rationale_619"
+ },
+ {
+ "label": "Rule 10: unassigned, non-disabled, non-reserve position \u2192 warning.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L644",
+ "community": 0,
+ "norm_label": "rule 10: unassigned, non-disabled, non-reserve position \u2192 warning.",
+ "id": "tests_test_validation_rationale_644"
+ },
+ {
+ "label": "Rule 10 message uses friendly building label, not raw enum value.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L661",
+ "community": 0,
+ "norm_label": "rule 10 message uses friendly building label, not raw enum value.",
+ "id": "tests_test_validation_rationale_661"
+ },
+ {
+ "label": "Rule 10 pass: disabled empty position \u2192 no rule 10 warning.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L688",
+ "community": 0,
+ "norm_label": "rule 10 pass: disabled empty position \u2192 no rule 10 warning.",
+ "id": "tests_test_validation_rationale_688"
+ },
+ {
+ "label": "Rule 11: member has preferences but none match active conditions \u2192 warning.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L705",
+ "community": 0,
+ "norm_label": "rule 11: member has preferences but none match active conditions \u2192 warning.",
+ "id": "tests_test_validation_rationale_705"
+ },
+ {
+ "label": "Rule 11 pass: member has no preferences \u2192 skip warning.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L733",
+ "community": 0,
+ "norm_label": "rule 11 pass: member has no preferences \u2192 skip warning.",
+ "id": "tests_test_validation_rationale_733"
+ },
+ {
+ "label": "Rule 13: assigned member with no attack_day \u2192 error.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L760",
+ "community": 0,
+ "norm_label": "rule 13: assigned member with no attack_day \u2192 error.",
+ "id": "tests_test_validation_rationale_760"
+ },
+ {
+ "label": "Rule 13: siege member not assigned to any position but has no attack_day \u2192 error",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L780",
+ "community": 0,
+ "norm_label": "rule 13: siege member not assigned to any position but has no attack_day \u2192 error",
+ "id": "tests_test_validation_rationale_780"
+ },
+ {
+ "label": "Rule 13 pass: all siege members have attack_day set \u2192 no rule 13 error.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L796",
+ "community": 0,
+ "norm_label": "rule 13 pass: all siege members have attack_day set \u2192 no rule 13 error.",
+ "id": "tests_test_validation_rationale_796"
+ },
+ {
+ "label": "Rule 14: 5 Day 2 attackers \u2192 warning.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L816",
+ "community": 12,
+ "norm_label": "rule 14: 5 day 2 attackers \u2192 warning.",
+ "id": "tests_test_validation_rationale_816"
+ },
+ {
+ "label": "Rule 14 pass: 10 Day 2 attackers \u2192 no warning.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L831",
+ "community": 12,
+ "norm_label": "rule 14 pass: 10 day 2 attackers \u2192 no warning.",
+ "id": "tests_test_validation_rationale_831"
+ },
+ {
+ "label": "Rule 15: HH member with has_reserve_set=None \u2192 warning.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L846",
+ "community": 0,
+ "norm_label": "rule 15: hh member with has_reserve_set=none \u2192 warning.",
+ "id": "tests_test_validation_rationale_846"
+ },
+ {
+ "label": "Rule 15: Advanced Role member with has_reserve_set=None \u2192 warning.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L866",
+ "community": 0,
+ "norm_label": "rule 15: advanced role member with has_reserve_set=none \u2192 warning.",
+ "id": "tests_test_validation_rationale_866"
+ },
+ {
+ "label": "Rule 15 pass: HH member with has_reserve_set=True \u2192 no warning.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L886",
+ "community": 0,
+ "norm_label": "rule 15 pass: hh member with has_reserve_set=true \u2192 no warning.",
+ "id": "tests_test_validation_rationale_886"
+ },
+ {
+ "label": "Rule 15 pass: medium/novice member with has_reserve_set=None \u2192 no warning.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L906",
+ "community": 0,
+ "norm_label": "rule 15 pass: medium/novice member with has_reserve_set=none \u2192 no warning.",
+ "id": "tests_test_validation_rationale_906"
+ },
+ {
+ "label": "Rule 16: post with 1 active condition \u2192 warning with correct message.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L926",
+ "community": 6,
+ "norm_label": "rule 16: post with 1 active condition \u2192 warning with correct message.",
+ "id": "tests_test_validation_rationale_926"
+ },
+ {
+ "label": "Rule 16 pass: post with 3 active conditions \u2192 no rule 16 warning.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L953",
+ "community": 0,
+ "norm_label": "rule 16 pass: post with 3 active conditions \u2192 no rule 16 warning.",
+ "id": "tests_test_validation_rationale_953"
+ },
+ {
+ "label": "test_version.py",
+ "file_type": "code",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L1",
+ "community": 29,
+ "norm_label": "test_version.py",
+ "id": "backend_tests_test_version_py"
+ },
+ {
+ "label": "_reload_version_module()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L16",
+ "community": 29,
+ "norm_label": "_reload_version_module()",
+ "id": "tests_test_version_reload_version_module"
+ },
+ {
+ "label": "test_read_backend_version_semver_only()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L29",
+ "community": 29,
+ "norm_label": "test_read_backend_version_semver_only()",
+ "id": "tests_test_version_test_read_backend_version_semver_only"
+ },
+ {
+ "label": "test_read_backend_version_with_build_info()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L53",
+ "community": 29,
+ "norm_label": "test_read_backend_version_with_build_info()",
+ "id": "tests_test_version_test_read_backend_version_with_build_info"
+ },
+ {
+ "label": "test_read_backend_version_missing_version_file()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L70",
+ "community": 29,
+ "norm_label": "test_read_backend_version_missing_version_file()",
+ "id": "tests_test_version_test_read_backend_version_missing_version_file"
+ },
+ {
+ "label": "test_read_backend_version_build_info_with_missing_file()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L87",
+ "community": 29,
+ "norm_label": "test_read_backend_version_build_info_with_missing_file()",
+ "id": "tests_test_version_test_read_backend_version_build_info_with_missing_file"
+ },
+ {
+ "label": "test_get_version_returns_200_with_expected_keys()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L109",
+ "community": 29,
+ "norm_label": "test_get_version_returns_200_with_expected_keys()",
+ "id": "tests_test_version_test_get_version_returns_200_with_expected_keys"
+ },
+ {
+ "label": "test_get_version_backend_version_has_build_suffix()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L128",
+ "community": 29,
+ "norm_label": "test_get_version_backend_version_has_build_suffix()",
+ "id": "tests_test_version_test_get_version_backend_version_has_build_suffix"
+ },
+ {
+ "label": "test_get_version_backend_version_clean_in_local_dev()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L144",
+ "community": 29,
+ "norm_label": "test_get_version_backend_version_clean_in_local_dev()",
+ "id": "tests_test_version_test_get_version_backend_version_clean_in_local_dev"
+ },
+ {
+ "label": "test_get_version_git_sha_field_preserved()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L159",
+ "community": 29,
+ "norm_label": "test_get_version_git_sha_field_preserved()",
+ "id": "tests_test_version_test_get_version_git_sha_field_preserved"
+ },
+ {
+ "label": "test_get_version_bot_unreachable_returns_none()",
+ "file_type": "code",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L175",
+ "community": 29,
+ "norm_label": "test_get_version_bot_unreachable_returns_none()",
+ "id": "tests_test_version_test_get_version_bot_unreachable_returns_none"
+ },
+ {
+ "label": "Tests for GET /api/version endpoint and _read_backend_version helper.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L1",
+ "community": 29,
+ "norm_label": "tests for get /api/version endpoint and _read_backend_version helper.",
+ "id": "tests_test_version_rationale_1"
+ },
+ {
+ "label": "Force re-import of version module so env-var reads pick up monkeypatches.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L17",
+ "community": 29,
+ "norm_label": "force re-import of version module so env-var reads pick up monkeypatches.",
+ "id": "tests_test_version_rationale_17"
+ },
+ {
+ "label": "When BUILD_NUMBER / GIT_SHA are absent, return bare semver.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L30",
+ "community": 29,
+ "norm_label": "when build_number / git_sha are absent, return bare semver.",
+ "id": "tests_test_version_rationale_30"
+ },
+ {
+ "label": "When env vars are explicitly 'unknown', return bare semver.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L43",
+ "community": 29,
+ "norm_label": "when env vars are explicitly 'unknown', return bare semver.",
+ "id": "tests_test_version_rationale_43"
+ },
+ {
+ "label": "When both BUILD_NUMBER and GIT_SHA are set, return combined string.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L54",
+ "community": 29,
+ "norm_label": "when both build_number and git_sha are set, return combined string.",
+ "id": "tests_test_version_rationale_54"
+ },
+ {
+ "label": "When the VERSION file is missing, semver falls back to 'unknown'.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L71",
+ "community": 29,
+ "norm_label": "when the version file is missing, semver falls back to 'unknown'.",
+ "id": "tests_test_version_rationale_71"
+ },
+ {
+ "label": "Even with a missing VERSION file, build suffix is appended if env vars are set.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L88",
+ "community": 29,
+ "norm_label": "even with a missing version file, build suffix is appended if env vars are set.",
+ "id": "tests_test_version_rationale_88"
+ },
+ {
+ "label": "GET /api/version responds 200 with all required fields.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L110",
+ "community": 29,
+ "norm_label": "get /api/version responds 200 with all required fields.",
+ "id": "tests_test_version_rationale_110"
+ },
+ {
+ "label": "backend_version includes build metadata when env vars are present.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L129",
+ "community": 29,
+ "norm_label": "backend_version includes build metadata when env vars are present.",
+ "id": "tests_test_version_rationale_129"
+ },
+ {
+ "label": "backend_version is bare semver when BUILD_NUMBER/GIT_SHA are absent.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L145",
+ "community": 29,
+ "norm_label": "backend_version is bare semver when build_number/git_sha are absent.",
+ "id": "tests_test_version_rationale_145"
+ },
+ {
+ "label": "git_sha top-level field is still returned for backward compatibility.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L160",
+ "community": 29,
+ "norm_label": "git_sha top-level field is still returned for backward compatibility.",
+ "id": "tests_test_version_rationale_160"
+ },
+ {
+ "label": "bot_version is null when the bot sidecar is unreachable.",
+ "file_type": "rationale",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L176",
+ "community": 29,
+ "norm_label": "bot_version is null when the bot sidecar is unreachable.",
+ "id": "tests_test_version_rationale_176"
+ },
+ {
+ "label": "config.py",
+ "file_type": "code",
+ "source_file": "bot/app/config.py",
+ "source_location": "L1",
+ "community": 10,
+ "norm_label": "config.py",
+ "id": "bot_app_config_py"
+ },
+ {
+ "label": "discord_client.py",
+ "file_type": "code",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L1",
+ "community": 37,
+ "norm_label": "discord_client.py",
+ "id": "bot_app_discord_client_py"
+ },
+ {
+ "label": "SiegeBot",
+ "file_type": "code",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L6",
+ "community": 37,
+ "norm_label": "siegebot",
+ "id": "app_discord_client_siegebot"
+ },
+ {
+ "label": ".on_ready()",
+ "file_type": "code",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L14",
+ "community": 37,
+ "norm_label": ".on_ready()",
+ "id": "app_discord_client_siegebot_on_ready"
+ },
+ {
+ "label": "._require_guild()",
+ "file_type": "code",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L17",
+ "community": 37,
+ "norm_label": "._require_guild()",
+ "id": "app_discord_client_siegebot_require_guild"
+ },
+ {
+ "label": "Discord client for the Siege Assignment System.",
+ "file_type": "rationale",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L7",
+ "community": 37,
+ "norm_label": "discord client for the siege assignment system.",
+ "id": "app_discord_client_rationale_7"
+ },
+ {
+ "label": "Find member by username in the guild, open DM, send message.",
+ "file_type": "rationale",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L23",
+ "community": 37,
+ "norm_label": "find member by username in the guild, open dm, send message.",
+ "id": "app_discord_client_rationale_23"
+ },
+ {
+ "label": "Find text channel by name, post message.",
+ "file_type": "rationale",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L34",
+ "community": 37,
+ "norm_label": "find text channel by name, post message.",
+ "id": "app_discord_client_rationale_34"
+ },
+ {
+ "label": "Find text channel by name, post image as Discord file attachment. Retur",
+ "file_type": "rationale",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L47",
+ "community": 37,
+ "norm_label": "find text channel by name, post image as discord file attachment. retur",
+ "id": "app_discord_client_rationale_47"
+ },
+ {
+ "label": "Return list of guild members as dicts with id, username, and display_name.",
+ "file_type": "rationale",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L62",
+ "community": 57,
+ "norm_label": "return list of guild members as dicts with id, username, and display_name.",
+ "id": "app_discord_client_rationale_62"
+ },
+ {
+ "label": "http_api.py",
+ "file_type": "code",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L1",
+ "community": 50,
+ "norm_label": "http_api.py",
+ "id": "bot_app_http_api_py"
+ },
+ {
+ "label": "set_bot()",
+ "file_type": "code",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L22",
+ "community": 50,
+ "norm_label": "set_bot()",
+ "id": "app_http_api_set_bot"
+ },
+ {
+ "label": "_get_bot()",
+ "file_type": "code",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L27",
+ "community": 37,
+ "norm_label": "_get_bot()",
+ "id": "app_http_api_get_bot"
+ },
+ {
+ "label": "verify_api_key()",
+ "file_type": "code",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L36",
+ "community": 50,
+ "norm_label": "verify_api_key()",
+ "id": "app_http_api_verify_api_key"
+ },
+ {
+ "label": "NotifyRequest",
+ "file_type": "code",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L46",
+ "community": 50,
+ "norm_label": "notifyrequest",
+ "id": "app_http_api_notifyrequest"
+ },
+ {
+ "label": "PostMessageRequest",
+ "file_type": "code",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L51",
+ "community": 50,
+ "norm_label": "postmessagerequest",
+ "id": "app_http_api_postmessagerequest"
+ },
+ {
+ "label": "version()",
+ "file_type": "code",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L57",
+ "community": 40,
+ "norm_label": "version()",
+ "id": "app_http_api_version"
+ },
+ {
+ "label": "notify()",
+ "file_type": "code",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L83",
+ "community": 61,
+ "norm_label": "notify()",
+ "id": "app_http_api_notify"
+ },
+ {
+ "label": "post_message()",
+ "file_type": "code",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L97",
+ "community": 37,
+ "norm_label": "post_message()",
+ "id": "app_http_api_post_message"
+ },
+ {
+ "label": "post_image()",
+ "file_type": "code",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L111",
+ "community": 37,
+ "norm_label": "post_image()",
+ "id": "app_http_api_post_image"
+ },
+ {
+ "label": "get_guild_member()",
+ "file_type": "code",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L136",
+ "community": 50,
+ "norm_label": "get_guild_member()",
+ "id": "app_http_api_get_guild_member"
+ },
+ {
+ "label": "Validate the Bearer token against the configured bot API key.",
+ "file_type": "rationale",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L37",
+ "community": 50,
+ "norm_label": "validate the bearer token against the configured bot api key.",
+ "id": "app_http_api_rationale_37"
+ },
+ {
+ "label": "Return the bot version \u2014 no authentication required. Returns ``1.0.1+42.abc",
+ "file_type": "rationale",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L58",
+ "community": 40,
+ "norm_label": "return the bot version \u2014 no authentication required. returns ``1.0.1+42.abc",
+ "id": "app_http_api_rationale_58"
+ },
+ {
+ "label": "Health check \u2014 no authentication required.",
+ "file_type": "rationale",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L78",
+ "community": 50,
+ "norm_label": "health check \u2014 no authentication required.",
+ "id": "app_http_api_rationale_78"
+ },
+ {
+ "label": "Send a DM notification to a guild member.",
+ "file_type": "rationale",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L87",
+ "community": 61,
+ "norm_label": "send a dm notification to a guild member.",
+ "id": "app_http_api_rationale_87"
+ },
+ {
+ "label": "Post a text message to a guild channel.",
+ "file_type": "rationale",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L101",
+ "community": 37,
+ "norm_label": "post a text message to a guild channel.",
+ "id": "app_http_api_rationale_101"
+ },
+ {
+ "label": "Post an image to a guild channel.",
+ "file_type": "rationale",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L116",
+ "community": 37,
+ "norm_label": "post an image to a guild channel.",
+ "id": "app_http_api_rationale_116"
+ },
+ {
+ "label": "Retrieve guild member list.",
+ "file_type": "rationale",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L130",
+ "community": 57,
+ "norm_label": "retrieve guild member list.",
+ "id": "app_http_api_rationale_130"
+ },
+ {
+ "label": "Look up a single guild member by Discord user ID. Returns ``{\"is_member\": f",
+ "file_type": "rationale",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L140",
+ "community": 50,
+ "norm_label": "look up a single guild member by discord user id. returns ``{\"is_member\": f",
+ "id": "app_http_api_rationale_140"
+ },
+ {
+ "label": "main.py",
+ "file_type": "code",
+ "source_file": "bot/app/main.py",
+ "source_location": "L1",
+ "community": 5,
+ "norm_label": "main.py",
+ "id": "bot_app_main_py"
+ },
+ {
+ "label": "run_http_server()",
+ "file_type": "code",
+ "source_file": "bot/app/main.py",
+ "source_location": "L18",
+ "community": 5,
+ "norm_label": "run_http_server()",
+ "id": "app_main_run_http_server"
+ },
+ {
+ "label": "run_discord_client()",
+ "file_type": "code",
+ "source_file": "bot/app/main.py",
+ "source_location": "L30",
+ "community": 5,
+ "norm_label": "run_discord_client()",
+ "id": "app_main_run_discord_client"
+ },
+ {
+ "label": "main()",
+ "file_type": "code",
+ "source_file": "bot/app/main.py",
+ "source_location": "L36",
+ "community": 5,
+ "norm_label": "main()",
+ "id": "app_main_main"
+ },
+ {
+ "label": "Run the FastAPI/uvicorn HTTP sidecar on port 8001.",
+ "file_type": "rationale",
+ "source_file": "bot/app/main.py",
+ "source_location": "L19",
+ "community": 5,
+ "norm_label": "run the fastapi/uvicorn http sidecar on port 8001.",
+ "id": "app_main_rationale_19"
+ },
+ {
+ "label": "Connect and run the Discord client.",
+ "file_type": "rationale",
+ "source_file": "bot/app/main.py",
+ "source_location": "L31",
+ "community": 5,
+ "norm_label": "connect and run the discord client.",
+ "id": "app_main_rationale_31"
+ },
+ {
+ "label": "Start both the Discord client and HTTP server concurrently.",
+ "file_type": "rationale",
+ "source_file": "bot/app/main.py",
+ "source_location": "L37",
+ "community": 5,
+ "norm_label": "start both the discord client and http server concurrently.",
+ "id": "app_main_rationale_37"
+ },
+ {
+ "label": "telemetry.py",
+ "file_type": "code",
+ "source_file": "bot/app/telemetry.py",
+ "source_location": "L1",
+ "community": 69,
+ "norm_label": "telemetry.py",
+ "id": "bot_app_telemetry_py"
+ },
+ {
+ "label": "__init__.py",
+ "file_type": "code",
+ "source_file": "bot/app/__init__.py",
+ "source_location": "L1",
+ "community": 126,
+ "norm_label": "__init__.py",
+ "id": "bot_app_init_py"
+ },
+ {
+ "label": "conftest.py",
+ "file_type": "code",
+ "source_file": "bot/tests/conftest.py",
+ "source_location": "L1",
+ "community": 51,
+ "norm_label": "conftest.py",
+ "id": "bot_tests_conftest_py"
+ },
+ {
+ "label": "_FakeClient",
+ "file_type": "code",
+ "source_file": "bot/tests/conftest.py",
+ "source_location": "L21",
+ "community": 51,
+ "norm_label": "_fakeclient",
+ "id": "tests_conftest_fakeclient"
+ },
+ {
+ "label": ".__init__()",
+ "file_type": "code",
+ "source_file": "bot/tests/conftest.py",
+ "source_location": "L22",
+ "community": 51,
+ "norm_label": ".__init__()",
+ "id": "tests_conftest_fakeclient_init"
+ },
+ {
+ "label": "_FakeTextChannel",
+ "file_type": "code",
+ "source_file": "bot/tests/conftest.py",
+ "source_location": "L26",
+ "community": 51,
+ "norm_label": "_faketextchannel",
+ "id": "tests_conftest_faketextchannel"
+ },
+ {
+ "label": "_FakeHTTPException",
+ "file_type": "code",
+ "source_file": "bot/tests/conftest.py",
+ "source_location": "L32",
+ "community": 51,
+ "norm_label": "_fakehttpexception",
+ "id": "tests_conftest_fakehttpexception"
+ },
+ {
+ "label": "Exception",
+ "file_type": "code",
+ "source_file": "",
+ "source_location": "",
+ "community": 51,
+ "norm_label": "exception",
+ "id": "exception"
+ },
+ {
+ "label": "_FakeNotFound",
+ "file_type": "code",
+ "source_file": "bot/tests/conftest.py",
+ "source_location": "L35",
+ "community": 51,
+ "norm_label": "_fakenotfound",
+ "id": "tests_conftest_fakenotfound"
+ },
+ {
+ "label": "_find()",
+ "file_type": "code",
+ "source_file": "bot/tests/conftest.py",
+ "source_location": "L45",
+ "community": 51,
+ "norm_label": "_find()",
+ "id": "tests_conftest_find"
+ },
+ {
+ "label": "test_discord_client.py",
+ "file_type": "code",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L1",
+ "community": 47,
+ "norm_label": "test_discord_client.py",
+ "id": "bot_tests_test_discord_client_py"
+ },
+ {
+ "label": "_make_bot()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L11",
+ "community": 47,
+ "norm_label": "_make_bot()",
+ "id": "tests_test_discord_client_make_bot"
+ },
+ {
+ "label": "_make_text_channel()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L35",
+ "community": 47,
+ "norm_label": "_make_text_channel()",
+ "id": "tests_test_discord_client_make_text_channel"
+ },
+ {
+ "label": "_make_guild()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L44",
+ "community": 47,
+ "norm_label": "_make_guild()",
+ "id": "tests_test_discord_client_make_guild"
+ },
+ {
+ "label": "test_send_dm_finds_member_and_sends()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L57",
+ "community": 47,
+ "norm_label": "test_send_dm_finds_member_and_sends()",
+ "id": "tests_test_discord_client_test_send_dm_finds_member_and_sends"
+ },
+ {
+ "label": "test_send_dm_case_insensitive()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L70",
+ "community": 47,
+ "norm_label": "test_send_dm_case_insensitive()",
+ "id": "tests_test_discord_client_test_send_dm_case_insensitive"
+ },
+ {
+ "label": "test_send_dm_raises_value_error_if_member_not_found()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L81",
+ "community": 47,
+ "norm_label": "test_send_dm_raises_value_error_if_member_not_found()",
+ "id": "tests_test_discord_client_test_send_dm_raises_value_error_if_member_not_found"
+ },
+ {
+ "label": "test_post_message_finds_channel_and_sends()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L95",
+ "community": 47,
+ "norm_label": "test_post_message_finds_channel_and_sends()",
+ "id": "tests_test_discord_client_test_post_message_finds_channel_and_sends"
+ },
+ {
+ "label": "test_post_message_raises_value_error_if_channel_not_found()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L106",
+ "community": 47,
+ "norm_label": "test_post_message_raises_value_error_if_channel_not_found()",
+ "id": "tests_test_discord_client_test_post_message_raises_value_error_if_channel_not_found"
+ },
+ {
+ "label": "test_post_image_returns_cdn_url()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L125",
+ "community": 47,
+ "norm_label": "test_post_image_returns_cdn_url()",
+ "id": "tests_test_discord_client_test_post_image_returns_cdn_url"
+ },
+ {
+ "label": "test_get_members_returns_correct_dict_format()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L143",
+ "community": 47,
+ "norm_label": "test_get_members_returns_correct_dict_format()",
+ "id": "tests_test_discord_client_test_get_members_returns_correct_dict_format"
+ },
+ {
+ "label": "Unit tests for SiegeBot Discord client methods using mock guild/member objects.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L1",
+ "community": 47,
+ "norm_label": "unit tests for siegebot discord client methods using mock guild/member objects.",
+ "id": "tests_test_discord_client_rationale_1"
+ },
+ {
+ "label": "Create a SiegeBot instance with a pre-loaded guild (bypasses Discord connect).",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L12",
+ "community": 47,
+ "norm_label": "create a siegebot instance with a pre-loaded guild (bypasses discord connect).",
+ "id": "tests_test_discord_client_rationale_12"
+ },
+ {
+ "label": "test_get_guild_member.py",
+ "file_type": "code",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L1",
+ "community": 9,
+ "norm_label": "test_get_guild_member.py",
+ "id": "bot_tests_test_get_guild_member_py"
+ },
+ {
+ "label": "patch_guild_id()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L30",
+ "community": 9,
+ "norm_label": "patch_guild_id()",
+ "id": "tests_test_get_guild_member_patch_guild_id"
+ },
+ {
+ "label": "_make_mock_member()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L40",
+ "community": 9,
+ "norm_label": "_make_mock_member()",
+ "id": "tests_test_get_guild_member_make_mock_member"
+ },
+ {
+ "label": "_make_mock_bot_with_guild()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L75",
+ "community": 9,
+ "norm_label": "_make_mock_bot_with_guild()",
+ "id": "tests_test_get_guild_member_make_mock_bot_with_guild"
+ },
+ {
+ "label": "test_get_guild_member_found_returns_200_with_member_data()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L89",
+ "community": 9,
+ "norm_label": "test_get_guild_member_found_returns_200_with_member_data()",
+ "id": "tests_test_get_guild_member_test_get_guild_member_found_returns_200_with_member_data"
+ },
+ {
+ "label": "test_get_guild_member_roles_exclude_everyone()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L119",
+ "community": 9,
+ "norm_label": "test_get_guild_member_roles_exclude_everyone()",
+ "id": "tests_test_get_guild_member_test_get_guild_member_roles_exclude_everyone"
+ },
+ {
+ "label": "test_get_guild_member_not_found_returns_200_is_member_false()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L144",
+ "community": 9,
+ "norm_label": "test_get_guild_member_not_found_returns_200_is_member_false()",
+ "id": "tests_test_get_guild_member_test_get_guild_member_not_found_returns_200_is_member_false"
+ },
+ {
+ "label": "test_get_guild_member_discord_http_exception_returns_503()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L166",
+ "community": 9,
+ "norm_label": "test_get_guild_member_discord_http_exception_returns_503()",
+ "id": "tests_test_get_guild_member_test_get_guild_member_discord_http_exception_returns_503"
+ },
+ {
+ "label": "test_get_guild_member_guild_none_returns_503()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L188",
+ "community": 9,
+ "norm_label": "test_get_guild_member_guild_none_returns_503()",
+ "id": "tests_test_get_guild_member_test_get_guild_member_guild_none_returns_503"
+ },
+ {
+ "label": "test_get_guild_member_bot_none_returns_503()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L202",
+ "community": 9,
+ "norm_label": "test_get_guild_member_bot_none_returns_503()",
+ "id": "tests_test_get_guild_member_test_get_guild_member_bot_none_returns_503"
+ },
+ {
+ "label": "test_get_guild_member_no_auth_returns_403()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L218",
+ "community": 9,
+ "norm_label": "test_get_guild_member_no_auth_returns_403()",
+ "id": "tests_test_get_guild_member_test_get_guild_member_no_auth_returns_403"
+ },
+ {
+ "label": "test_get_guild_member_wrong_api_key_returns_401()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L228",
+ "community": 9,
+ "norm_label": "test_get_guild_member_wrong_api_key_returns_401()",
+ "id": "tests_test_get_guild_member_test_get_guild_member_wrong_api_key_returns_401"
+ },
+ {
+ "label": "Tests for GET /api/members/{discord_user_id} \u2014 guild member lookup endpoint.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L1",
+ "community": 9,
+ "norm_label": "tests for get /api/members/{discord_user_id} \u2014 guild member lookup endpoint.",
+ "id": "tests_test_get_guild_member_rationale_1"
+ },
+ {
+ "label": "Override the discord_guild_id setting for all tests.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L31",
+ "community": 9,
+ "norm_label": "override the discord_guild_id setting for all tests.",
+ "id": "tests_test_get_guild_member_rationale_31"
+ },
+ {
+ "label": "Build a mock discord.Member with realistic attributes. ``role_ids`` default",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L46",
+ "community": 9,
+ "norm_label": "build a mock discord.member with realistic attributes. ``role_ids`` default",
+ "id": "tests_test_get_guild_member_rationale_46"
+ },
+ {
+ "label": "Build a mock bot whose get_guild() returns the given guild object.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L76",
+ "community": 9,
+ "norm_label": "build a mock bot whose get_guild() returns the given guild object.",
+ "id": "tests_test_get_guild_member_rationale_76"
+ },
+ {
+ "label": "When the member exists, respond 200 with is_member=true and full payload.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L90",
+ "community": 9,
+ "norm_label": "when the member exists, respond 200 with is_member=true and full payload.",
+ "id": "tests_test_get_guild_member_rationale_90"
+ },
+ {
+ "label": "The @everyone role must never appear in the roles list.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L120",
+ "community": 9,
+ "norm_label": "the @everyone role must never appear in the roles list.",
+ "id": "tests_test_get_guild_member_rationale_120"
+ },
+ {
+ "label": "When Discord returns NotFound, respond 200 with is_member=false.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L145",
+ "community": 9,
+ "norm_label": "when discord returns notfound, respond 200 with is_member=false.",
+ "id": "tests_test_get_guild_member_rationale_145"
+ },
+ {
+ "label": "When Discord raises an unexpected HTTPException, respond 503.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L167",
+ "community": 9,
+ "norm_label": "when discord raises an unexpected httpexception, respond 503.",
+ "id": "tests_test_get_guild_member_rationale_167"
+ },
+ {
+ "label": "When get_guild() returns None (bot not in guild), respond 503.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L189",
+ "community": 9,
+ "norm_label": "when get_guild() returns none (bot not in guild), respond 503.",
+ "id": "tests_test_get_guild_member_rationale_189"
+ },
+ {
+ "label": "When _bot is None entirely, guild lookup yields None and we get 503.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L203",
+ "community": 9,
+ "norm_label": "when _bot is none entirely, guild lookup yields none and we get 503.",
+ "id": "tests_test_get_guild_member_rationale_203"
+ },
+ {
+ "label": "Requests without a Bearer token must be rejected (403 or 401).",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L219",
+ "community": 9,
+ "norm_label": "requests without a bearer token must be rejected (403 or 401).",
+ "id": "tests_test_get_guild_member_rationale_219"
+ },
+ {
+ "label": "Requests with a wrong Bearer token must be rejected with 401.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L229",
+ "community": 9,
+ "norm_label": "requests with a wrong bearer token must be rejected with 401.",
+ "id": "tests_test_get_guild_member_rationale_229"
+ },
+ {
+ "label": "test_http_api.py",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L1",
+ "community": 9,
+ "norm_label": "test_http_api.py",
+ "id": "bot_tests_test_http_api_py"
+ },
+ {
+ "label": "patch_api_key()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L18",
+ "community": 9,
+ "norm_label": "patch_api_key()",
+ "id": "tests_test_http_api_patch_api_key"
+ },
+ {
+ "label": "_make_mock_bot()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L28",
+ "community": 9,
+ "norm_label": "_make_mock_bot()",
+ "id": "tests_test_http_api_make_mock_bot"
+ },
+ {
+ "label": "test_version_returns_200()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L44",
+ "community": 9,
+ "norm_label": "test_version_returns_200()",
+ "id": "tests_test_http_api_test_version_returns_200"
+ },
+ {
+ "label": "test_version_bare_semver_in_local_dev()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L54",
+ "community": 9,
+ "norm_label": "test_version_bare_semver_in_local_dev()",
+ "id": "tests_test_http_api_test_version_bare_semver_in_local_dev"
+ },
+ {
+ "label": "test_version_includes_build_suffix_when_env_vars_set()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L74",
+ "community": 9,
+ "norm_label": "test_version_includes_build_suffix_when_env_vars_set()",
+ "id": "tests_test_http_api_test_version_includes_build_suffix_when_env_vars_set"
+ },
+ {
+ "label": "test_version_unknown_when_version_file_missing()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L94",
+ "community": 9,
+ "norm_label": "test_version_unknown_when_version_file_missing()",
+ "id": "tests_test_http_api_test_version_unknown_when_version_file_missing"
+ },
+ {
+ "label": "test_version_bare_semver_when_env_vars_are_unknown_literal()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L112",
+ "community": 9,
+ "norm_label": "test_version_bare_semver_when_env_vars_are_unknown_literal()",
+ "id": "tests_test_http_api_test_version_bare_semver_when_env_vars_are_unknown_literal"
+ },
+ {
+ "label": "test_health_no_bot()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L137",
+ "community": 9,
+ "norm_label": "test_health_no_bot()",
+ "id": "tests_test_http_api_test_health_no_bot"
+ },
+ {
+ "label": "test_health_with_bot_connected()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L148",
+ "community": 9,
+ "norm_label": "test_health_with_bot_connected()",
+ "id": "tests_test_http_api_test_health_with_bot_connected"
+ },
+ {
+ "label": "test_notify_success()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L163",
+ "community": 9,
+ "norm_label": "test_notify_success()",
+ "id": "tests_test_http_api_test_notify_success"
+ },
+ {
+ "label": "test_notify_bot_not_ready_returns_503()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L179",
+ "community": 9,
+ "norm_label": "test_notify_bot_not_ready_returns_503()",
+ "id": "tests_test_http_api_test_notify_bot_not_ready_returns_503"
+ },
+ {
+ "label": "test_notify_member_not_found_returns_404()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L191",
+ "community": 9,
+ "norm_label": "test_notify_member_not_found_returns_404()",
+ "id": "tests_test_http_api_test_notify_member_not_found_returns_404"
+ },
+ {
+ "label": "test_post_message_success()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L212",
+ "community": 9,
+ "norm_label": "test_post_message_success()",
+ "id": "tests_test_http_api_test_post_message_success"
+ },
+ {
+ "label": "test_post_message_bot_not_ready_returns_503()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L228",
+ "community": 9,
+ "norm_label": "test_post_message_bot_not_ready_returns_503()",
+ "id": "tests_test_http_api_test_post_message_bot_not_ready_returns_503"
+ },
+ {
+ "label": "test_post_image_success()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L245",
+ "community": 9,
+ "norm_label": "test_post_image_success()",
+ "id": "tests_test_http_api_test_post_image_success"
+ },
+ {
+ "label": "test_post_image_bot_not_ready_returns_503()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L264",
+ "community": 9,
+ "norm_label": "test_post_image_bot_not_ready_returns_503()",
+ "id": "tests_test_http_api_test_post_image_bot_not_ready_returns_503"
+ },
+ {
+ "label": "test_get_members_returns_list()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L281",
+ "community": 9,
+ "norm_label": "test_get_members_returns_list()",
+ "id": "tests_test_http_api_test_get_members_returns_list"
+ },
+ {
+ "label": "test_get_members_bot_not_ready_returns_503()",
+ "file_type": "code",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L299",
+ "community": 9,
+ "norm_label": "test_get_members_bot_not_ready_returns_503()",
+ "id": "tests_test_http_api_test_get_members_bot_not_ready_returns_503"
+ },
+ {
+ "label": "Tests for the bot HTTP API endpoints.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L1",
+ "community": 9,
+ "norm_label": "tests for the bot http api endpoints.",
+ "id": "tests_test_http_api_rationale_1"
+ },
+ {
+ "label": "Override the bot_api_key setting for all tests.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L19",
+ "community": 9,
+ "norm_label": "override the bot_api_key setting for all tests.",
+ "id": "tests_test_http_api_rationale_19"
+ },
+ {
+ "label": "GET /version responds 200 with a 'version' key.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L45",
+ "community": 9,
+ "norm_label": "get /version responds 200 with a 'version' key.",
+ "id": "tests_test_http_api_rationale_45"
+ },
+ {
+ "label": "When BUILD_NUMBER / GIT_SHA are absent the version is the bare semver.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L55",
+ "community": 9,
+ "norm_label": "when build_number / git_sha are absent the version is the bare semver.",
+ "id": "tests_test_http_api_rationale_55"
+ },
+ {
+ "label": "When BUILD_NUMBER and GIT_SHA are set, version is 'semver+build.sha7'.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L75",
+ "community": 9,
+ "norm_label": "when build_number and git_sha are set, version is 'semver+build.sha7'.",
+ "id": "tests_test_http_api_rationale_75"
+ },
+ {
+ "label": "When the VERSION file is absent, semver falls back to 'unknown'.",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L95",
+ "community": 9,
+ "norm_label": "when the version file is absent, semver falls back to 'unknown'.",
+ "id": "tests_test_http_api_rationale_95"
+ },
+ {
+ "label": "Env vars explicitly set to 'unknown' should yield bare semver (no suffix).",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L113",
+ "community": 9,
+ "norm_label": "env vars explicitly set to 'unknown' should yield bare semver (no suffix).",
+ "id": "tests_test_http_api_rationale_113"
+ },
+ {
+ "label": "test_telemetry.py",
+ "file_type": "code",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L1",
+ "community": 18,
+ "norm_label": "test_telemetry.py",
+ "id": "bot_tests_test_telemetry_py"
+ },
+ {
+ "label": "When APPLICATIONINSIGHTS_CONNECTION_STRING is set, configure_azure_monitor() is",
+ "file_type": "rationale",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L91",
+ "community": 18,
+ "norm_label": "when applicationinsights_connection_string is set, configure_azure_monitor() is",
+ "id": "tests_test_telemetry_rationale_91"
+ },
+ {
+ "label": "eslint.config.js",
+ "file_type": "code",
+ "source_file": "frontend/eslint.config.js",
+ "source_location": "L1",
+ "community": 127,
+ "norm_label": "eslint.config.js",
+ "id": "frontend_eslint_config_js"
+ },
+ {
+ "label": "playwright.config.ts",
+ "file_type": "code",
+ "source_file": "frontend/playwright.config.ts",
+ "source_location": "L1",
+ "community": 128,
+ "norm_label": "playwright.config.ts",
+ "id": "frontend_playwright_config_ts"
+ },
+ {
+ "label": "postcss.config.js",
+ "file_type": "code",
+ "source_file": "frontend/postcss.config.js",
+ "source_location": "L1",
+ "community": 129,
+ "norm_label": "postcss.config.js",
+ "id": "frontend_postcss_config_js"
+ },
+ {
+ "label": "tailwind.config.ts",
+ "file_type": "code",
+ "source_file": "frontend/tailwind.config.ts",
+ "source_location": "L1",
+ "community": 22,
+ "norm_label": "tailwind.config.ts",
+ "id": "frontend_tailwind_config_ts"
+ },
+ {
+ "label": "vite.config.ts",
+ "file_type": "code",
+ "source_file": "frontend/vite.config.ts",
+ "source_location": "L1",
+ "community": 75,
+ "norm_label": "vite.config.ts",
+ "id": "frontend_vite_config_ts"
+ },
+ {
+ "label": "vitest.config.ts",
+ "file_type": "code",
+ "source_file": "frontend/vitest.config.ts",
+ "source_location": "L1",
+ "community": 75,
+ "norm_label": "vitest.config.ts",
+ "id": "frontend_vitest_config_ts"
+ },
+ {
+ "label": "board.spec.ts",
+ "file_type": "code",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L1",
+ "community": 35,
+ "norm_label": "board.spec.ts",
+ "id": "frontend_e2e_board_spec_ts"
+ },
+ {
+ "label": "apiCreateSiege()",
+ "file_type": "code",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L13",
+ "community": 35,
+ "norm_label": "apicreatesiege()",
+ "id": "e2e_board_spec_apicreatesiege"
+ },
+ {
+ "label": "apiAddBuilding()",
+ "file_type": "code",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L27",
+ "community": 35,
+ "norm_label": "apiaddbuilding()",
+ "id": "e2e_board_spec_apiaddbuilding"
+ },
+ {
+ "label": "apiCreateMember()",
+ "file_type": "code",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L52",
+ "community": 35,
+ "norm_label": "apicreatemember()",
+ "id": "e2e_board_spec_apicreatemember"
+ },
+ {
+ "label": "buildingsTab",
+ "file_type": "code",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L127",
+ "community": 35,
+ "norm_label": "buildingstab",
+ "id": "e2e_board_spec_buildingstab"
+ },
+ {
+ "label": "postsTab",
+ "file_type": "code",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L128",
+ "community": 38,
+ "norm_label": "poststab",
+ "id": "e2e_board_spec_poststab"
+ },
+ {
+ "label": "search",
+ "file_type": "code",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L179",
+ "community": 35,
+ "norm_label": "search",
+ "id": "e2e_board_spec_search"
+ },
+ {
+ "label": "roleSelect",
+ "file_type": "code",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L198",
+ "community": 35,
+ "norm_label": "roleselect",
+ "id": "e2e_board_spec_roleselect"
+ },
+ {
+ "label": "firstPositionSpan",
+ "file_type": "code",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L238",
+ "community": 35,
+ "norm_label": "firstpositionspan",
+ "id": "e2e_board_spec_firstpositionspan"
+ },
+ {
+ "label": "positionCell",
+ "file_type": "code",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L239",
+ "community": 35,
+ "norm_label": "positioncell",
+ "id": "e2e_board_spec_positioncell"
+ },
+ {
+ "label": "chevron",
+ "file_type": "code",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L244",
+ "community": 35,
+ "norm_label": "chevron",
+ "id": "e2e_board_spec_chevron"
+ },
+ {
+ "label": "autofillBtn",
+ "file_type": "code",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L367",
+ "community": 35,
+ "norm_label": "autofillbtn",
+ "id": "e2e_board_spec_autofillbtn"
+ },
+ {
+ "label": "members.spec.ts",
+ "file_type": "code",
+ "source_file": "frontend/e2e/members.spec.ts",
+ "source_location": "L1",
+ "community": 70,
+ "norm_label": "members.spec.ts",
+ "id": "frontend_e2e_members_spec_ts"
+ },
+ {
+ "label": "ensureMemberSlotsAvailable()",
+ "file_type": "code",
+ "source_file": "frontend/e2e/members.spec.ts",
+ "source_location": "L20",
+ "community": 70,
+ "norm_label": "ensurememberslotsavailable()",
+ "id": "e2e_members_spec_ensurememberslotsavailable"
+ },
+ {
+ "label": "activeCheckbox",
+ "file_type": "code",
+ "source_file": "frontend/e2e/members.spec.ts",
+ "source_location": "L125",
+ "community": 70,
+ "norm_label": "activecheckbox",
+ "id": "e2e_members_spec_activecheckbox"
+ },
+ {
+ "label": "editLinks",
+ "file_type": "code",
+ "source_file": "frontend/e2e/members.spec.ts",
+ "source_location": "L131",
+ "community": 70,
+ "norm_label": "editlinks",
+ "id": "e2e_members_spec_editlinks"
+ },
+ {
+ "label": "siege-lifecycle.spec.ts",
+ "file_type": "code",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L1",
+ "community": 35,
+ "norm_label": "siege-lifecycle.spec.ts",
+ "id": "frontend_e2e_siege_lifecycle_spec_ts"
+ },
+ {
+ "label": "dateInput",
+ "file_type": "code",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L121",
+ "community": 35,
+ "norm_label": "dateinput",
+ "id": "e2e_siege_lifecycle_spec_dateinput"
+ },
+ {
+ "label": "url",
+ "file_type": "code",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L153",
+ "community": 35,
+ "norm_label": "url",
+ "id": "e2e_siege_lifecycle_spec_url"
+ },
+ {
+ "label": "tabStrip",
+ "file_type": "code",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L181",
+ "community": 35,
+ "norm_label": "tabstrip",
+ "id": "e2e_siege_lifecycle_spec_tabstrip"
+ },
+ {
+ "label": "boardLink",
+ "file_type": "code",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L203",
+ "community": 35,
+ "norm_label": "boardlink",
+ "id": "e2e_siege_lifecycle_spec_boardlink"
+ },
+ {
+ "label": "activeBadge",
+ "file_type": "code",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L382",
+ "community": 35,
+ "norm_label": "activebadge",
+ "id": "e2e_siege_lifecycle_spec_activebadge"
+ },
+ {
+ "label": "errorBadge",
+ "file_type": "code",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L383",
+ "community": 35,
+ "norm_label": "errorbadge",
+ "id": "e2e_siege_lifecycle_spec_errorbadge"
+ },
+ {
+ "label": "smoke.spec.ts",
+ "file_type": "code",
+ "source_file": "frontend/e2e/smoke.spec.ts",
+ "source_location": "L1",
+ "community": 130,
+ "norm_label": "smoke.spec.ts",
+ "id": "frontend_e2e_smoke_spec_ts"
+ },
+ {
+ "label": "App.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L1",
+ "community": 22,
+ "norm_label": "app.tsx",
+ "id": "frontend_src_app_tsx"
+ },
+ {
+ "label": "App()",
+ "file_type": "code",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L19",
+ "community": 22,
+ "norm_label": "app()",
+ "id": "src_app_app"
+ },
+ {
+ "label": "main.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/main.tsx",
+ "source_location": "L1",
+ "community": 22,
+ "norm_label": "main.tsx",
+ "id": "frontend_src_main_tsx"
+ },
+ {
+ "label": "queryClient",
+ "file_type": "code",
+ "source_file": "frontend/src/main.tsx",
+ "source_location": "L9",
+ "community": 22,
+ "norm_label": "queryclient",
+ "id": "src_main_queryclient"
+ },
+ {
+ "label": "vite-env.d.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/vite-env.d.ts",
+ "source_location": "L1",
+ "community": 131,
+ "norm_label": "vite-env.d.ts",
+ "id": "frontend_src_vite_env_d_ts"
+ },
+ {
+ "label": "board.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/api/board.ts",
+ "source_location": "L1",
+ "community": 8,
+ "norm_label": "board.ts",
+ "id": "frontend_src_api_board_ts"
+ },
+ {
+ "label": "getBoard()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/board.ts",
+ "source_location": "L4",
+ "community": 8,
+ "norm_label": "getboard()",
+ "id": "api_board_getboard"
+ },
+ {
+ "label": "changelog.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/api/changelog.ts",
+ "source_location": "L1",
+ "community": 41,
+ "norm_label": "changelog.ts",
+ "id": "frontend_src_api_changelog_ts"
+ },
+ {
+ "label": "ChangelogStatus",
+ "file_type": "code",
+ "source_file": "frontend/src/api/changelog.ts",
+ "source_location": "L3",
+ "community": 41,
+ "norm_label": "changelogstatus",
+ "id": "api_changelog_changelogstatus"
+ },
+ {
+ "label": "fetchChangelogStatus()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/changelog.ts",
+ "source_location": "L7",
+ "community": 41,
+ "norm_label": "fetchchangelogstatus()",
+ "id": "api_changelog_fetchchangelogstatus"
+ },
+ {
+ "label": "markChangelogSeen()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/changelog.ts",
+ "source_location": "L12",
+ "community": 49,
+ "norm_label": "markchangelogseen()",
+ "id": "api_changelog_markchangelogseen"
+ },
+ {
+ "label": "client.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/api/client.ts",
+ "source_location": "L1",
+ "community": 22,
+ "norm_label": "client.ts",
+ "id": "frontend_src_api_client_ts"
+ },
+ {
+ "label": "apiClient",
+ "file_type": "code",
+ "source_file": "frontend/src/api/client.ts",
+ "source_location": "L3",
+ "community": 22,
+ "norm_label": "apiclient",
+ "id": "api_client_apiclient"
+ },
+ {
+ "label": "config.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/api/config.ts",
+ "source_location": "L1",
+ "community": 22,
+ "norm_label": "config.ts",
+ "id": "frontend_src_api_config_ts"
+ },
+ {
+ "label": "AppConfig",
+ "file_type": "code",
+ "source_file": "frontend/src/api/config.ts",
+ "source_location": "L3",
+ "community": 22,
+ "norm_label": "appconfig",
+ "id": "api_config_appconfig"
+ },
+ {
+ "label": "fetchConfig()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/config.ts",
+ "source_location": "L7",
+ "community": 22,
+ "norm_label": "fetchconfig()",
+ "id": "api_config_fetchconfig"
+ },
+ {
+ "label": "members.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L1",
+ "community": 15,
+ "norm_label": "members.ts",
+ "id": "frontend_src_api_members_ts"
+ },
+ {
+ "label": "getMember()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L17",
+ "community": 15,
+ "norm_label": "getmember()",
+ "id": "api_members_getmember"
+ },
+ {
+ "label": "createMember()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L22",
+ "community": 15,
+ "norm_label": "createmember()",
+ "id": "api_members_createmember"
+ },
+ {
+ "label": "updateMember()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L32",
+ "community": 15,
+ "norm_label": "updatemember()",
+ "id": "api_members_updatemember"
+ },
+ {
+ "label": "deleteMember()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L46",
+ "community": 15,
+ "norm_label": "deletemember()",
+ "id": "api_members_deletemember"
+ },
+ {
+ "label": "getMemberPreferences()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L50",
+ "community": 57,
+ "norm_label": "getmemberpreferences()",
+ "id": "api_members_getmemberpreferences"
+ },
+ {
+ "label": "updateMemberPreferences()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L59",
+ "community": 15,
+ "norm_label": "updatememberpreferences()",
+ "id": "api_members_updatememberpreferences"
+ },
+ {
+ "label": "getPostConditions()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L72",
+ "community": 15,
+ "norm_label": "getpostconditions()",
+ "id": "api_members_getpostconditions"
+ },
+ {
+ "label": "getMemberRoles()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L77",
+ "community": 15,
+ "norm_label": "getmemberroles()",
+ "id": "api_members_getmemberroles"
+ },
+ {
+ "label": "previewDiscordSync()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L82",
+ "community": 13,
+ "norm_label": "previewdiscordsync()",
+ "id": "api_members_previewdiscordsync"
+ },
+ {
+ "label": "applyDiscordSync()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L89",
+ "community": 13,
+ "norm_label": "applydiscordsync()",
+ "id": "api_members_applydiscordsync"
+ },
+ {
+ "label": "notifySiegeMembers()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/notifications.ts",
+ "source_location": "L8",
+ "community": 34,
+ "norm_label": "notifysiegemembers()",
+ "id": "api_notifications_notifysiegemembers"
+ },
+ {
+ "label": "getNotificationBatch()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/notifications.ts",
+ "source_location": "L17",
+ "community": 34,
+ "norm_label": "getnotificationbatch()",
+ "id": "api_notifications_getnotificationbatch"
+ },
+ {
+ "label": "postToChannel()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/notifications.ts",
+ "source_location": "L27",
+ "community": 34,
+ "norm_label": "posttochannel()",
+ "id": "api_notifications_posttochannel"
+ },
+ {
+ "label": "posts.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/api/posts.ts",
+ "source_location": "L1",
+ "community": 38,
+ "norm_label": "posts.ts",
+ "id": "frontend_src_api_posts_ts"
+ },
+ {
+ "label": "PostPriorityConfig",
+ "file_type": "code",
+ "source_file": "frontend/src/api/posts.ts",
+ "source_location": "L4",
+ "community": 16,
+ "norm_label": "postpriorityconfig",
+ "id": "api_posts_postpriorityconfig"
+ },
+ {
+ "label": "getPostPriorities()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/posts.ts",
+ "source_location": "L11",
+ "community": 38,
+ "norm_label": "getpostpriorities()",
+ "id": "api_posts_getpostpriorities"
+ },
+ {
+ "label": "updatePostPriority()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/posts.ts",
+ "source_location": "L16",
+ "community": 38,
+ "norm_label": "updatepostpriority()",
+ "id": "api_posts_updatepostpriority"
+ },
+ {
+ "label": "getPosts()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/posts.ts",
+ "source_location": "L27",
+ "community": 38,
+ "norm_label": "getposts()",
+ "id": "api_posts_getposts"
+ },
+ {
+ "label": "updatePost()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/posts.ts",
+ "source_location": "L32",
+ "community": 39,
+ "norm_label": "updatepost()",
+ "id": "api_posts_updatepost"
+ },
+ {
+ "label": "setPostConditions()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/posts.ts",
+ "source_location": "L44",
+ "community": 39,
+ "norm_label": "setpostconditions()",
+ "id": "api_posts_setpostconditions"
+ },
+ {
+ "label": "sieges.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L1",
+ "community": 3,
+ "norm_label": "sieges.ts",
+ "id": "frontend_src_api_sieges_ts"
+ },
+ {
+ "label": "getSieges()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L20",
+ "community": 7,
+ "norm_label": "getsieges()",
+ "id": "api_sieges_getsieges"
+ },
+ {
+ "label": "getSiege()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L27",
+ "community": 3,
+ "norm_label": "getsiege()",
+ "id": "api_sieges_getsiege"
+ },
+ {
+ "label": "createSiege()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L32",
+ "community": 7,
+ "norm_label": "createsiege()",
+ "id": "api_sieges_createsiege"
+ },
+ {
+ "label": "updateSiege()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L37",
+ "community": 42,
+ "norm_label": "updatesiege()",
+ "id": "api_sieges_updatesiege"
+ },
+ {
+ "label": "deleteSiege()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L45",
+ "community": 3,
+ "norm_label": "deletesiege()",
+ "id": "api_sieges_deletesiege"
+ },
+ {
+ "label": "activateSiege()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L49",
+ "community": 3,
+ "norm_label": "activatesiege()",
+ "id": "api_sieges_activatesiege"
+ },
+ {
+ "label": "completeSiege()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L54",
+ "community": 3,
+ "norm_label": "completesiege()",
+ "id": "api_sieges_completesiege"
+ },
+ {
+ "label": "cloneSiege()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L59",
+ "community": 3,
+ "norm_label": "clonesiege()",
+ "id": "api_sieges_clonesiege"
+ },
+ {
+ "label": "reopenSiege()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L64",
+ "community": 3,
+ "norm_label": "reopensiege()",
+ "id": "api_sieges_reopensiege"
+ },
+ {
+ "label": "validateSiege()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L69",
+ "community": 3,
+ "norm_label": "validatesiege()",
+ "id": "api_sieges_validatesiege"
+ },
+ {
+ "label": "getBuildings()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L76",
+ "community": 45,
+ "norm_label": "getbuildings()",
+ "id": "api_sieges_getbuildings"
+ },
+ {
+ "label": "createBuilding()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L83",
+ "community": 3,
+ "norm_label": "createbuilding()",
+ "id": "api_sieges_createbuilding"
+ },
+ {
+ "label": "updateBuilding()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L94",
+ "community": 45,
+ "norm_label": "updatebuilding()",
+ "id": "api_sieges_updatebuilding"
+ },
+ {
+ "label": "deleteBuilding()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L106",
+ "community": 45,
+ "norm_label": "deletebuilding()",
+ "id": "api_sieges_deletebuilding"
+ },
+ {
+ "label": "getSiegeMembers()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L120",
+ "community": 3,
+ "norm_label": "getsiegemembers()",
+ "id": "api_sieges_getsiegemembers"
+ },
+ {
+ "label": "getSiegeMemberPreferences()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L127",
+ "community": 38,
+ "norm_label": "getsiegememberpreferences()",
+ "id": "api_sieges_getsiegememberpreferences"
+ },
+ {
+ "label": "previewAutofill()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L165",
+ "community": 42,
+ "norm_label": "previewautofill()",
+ "id": "api_sieges_previewautofill"
+ },
+ {
+ "label": "applyAutofill()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L174",
+ "community": 24,
+ "norm_label": "applyautofill()",
+ "id": "api_sieges_applyautofill"
+ },
+ {
+ "label": "previewAttackDay()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L183",
+ "community": 24,
+ "norm_label": "previewattackday()",
+ "id": "api_sieges_previewattackday"
+ },
+ {
+ "label": "applyAttackDay()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L192",
+ "community": 3,
+ "norm_label": "applyattackday()",
+ "id": "api_sieges_applyattackday"
+ },
+ {
+ "label": "compareSieges()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L201",
+ "community": 25,
+ "norm_label": "comparesieges()",
+ "id": "api_sieges_comparesieges"
+ },
+ {
+ "label": "compareSiegesSpecific()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L210",
+ "community": 7,
+ "norm_label": "comparesiegesspecific()",
+ "id": "api_sieges_comparesiegesspecific"
+ },
+ {
+ "label": "previewPostSuggestions()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L220",
+ "community": 24,
+ "norm_label": "previewpostsuggestions()",
+ "id": "api_sieges_previewpostsuggestions"
+ },
+ {
+ "label": "applyPostSuggestions()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L229",
+ "community": 24,
+ "norm_label": "applypostsuggestions()",
+ "id": "api_sieges_applypostsuggestions"
+ },
+ {
+ "label": "types.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L1",
+ "community": 8,
+ "norm_label": "types.ts",
+ "id": "frontend_src_api_types_ts"
+ },
+ {
+ "label": "MemberRole",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L2",
+ "community": 52,
+ "norm_label": "memberrole",
+ "id": "api_types_memberrole"
+ },
+ {
+ "label": "SiegeStatus",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L3",
+ "community": 16,
+ "norm_label": "siegestatus",
+ "id": "api_types_siegestatus"
+ },
+ {
+ "label": "BuildingType",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L4",
+ "community": 8,
+ "norm_label": "buildingtype",
+ "id": "api_types_buildingtype"
+ },
+ {
+ "label": "Member",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L12",
+ "community": 16,
+ "norm_label": "member",
+ "id": "api_types_member"
+ },
+ {
+ "label": "SyncMatch",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L23",
+ "community": 52,
+ "norm_label": "syncmatch",
+ "id": "api_types_syncmatch"
+ },
+ {
+ "label": "SyncPreviewResponse",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L32",
+ "community": 52,
+ "norm_label": "syncpreviewresponse",
+ "id": "api_types_syncpreviewresponse"
+ },
+ {
+ "label": "SyncApplyItem",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L38",
+ "community": 15,
+ "norm_label": "syncapplyitem",
+ "id": "api_types_syncapplyitem"
+ },
+ {
+ "label": "PostCondition",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L44",
+ "community": 16,
+ "norm_label": "postcondition",
+ "id": "api_types_postcondition"
+ },
+ {
+ "label": "Siege",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L51",
+ "community": 16,
+ "norm_label": "siege",
+ "id": "api_types_siege"
+ },
+ {
+ "label": "Building",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L62",
+ "community": 16,
+ "norm_label": "building",
+ "id": "api_types_building"
+ },
+ {
+ "label": "MemberPreferenceSummary",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L72",
+ "community": 8,
+ "norm_label": "memberpreferencesummary",
+ "id": "api_types_memberpreferencesummary"
+ },
+ {
+ "label": "PositionResponse",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L79",
+ "community": 8,
+ "norm_label": "positionresponse",
+ "id": "api_types_positionresponse"
+ },
+ {
+ "label": "BuildingGroupResponse",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L89",
+ "community": 8,
+ "norm_label": "buildinggroupresponse",
+ "id": "api_types_buildinggroupresponse"
+ },
+ {
+ "label": "BuildingResponse",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L96",
+ "community": 8,
+ "norm_label": "buildingresponse",
+ "id": "api_types_buildingresponse"
+ },
+ {
+ "label": "BoardResponse",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L105",
+ "community": 34,
+ "norm_label": "boardresponse",
+ "id": "api_types_boardresponse"
+ },
+ {
+ "label": "SiegeMember",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L111",
+ "community": 3,
+ "norm_label": "siegemember",
+ "id": "api_types_siegemember"
+ },
+ {
+ "label": "Post",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L129",
+ "community": 16,
+ "norm_label": "post",
+ "id": "api_types_post"
+ },
+ {
+ "label": "ValidationIssue",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L140",
+ "community": 3,
+ "norm_label": "validationissue",
+ "id": "api_types_validationissue"
+ },
+ {
+ "label": "ValidationResult",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L146",
+ "community": 3,
+ "norm_label": "validationresult",
+ "id": "api_types_validationresult"
+ },
+ {
+ "label": "AutofillAssignment",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L152",
+ "community": 8,
+ "norm_label": "autofillassignment",
+ "id": "api_types_autofillassignment"
+ },
+ {
+ "label": "AutofillPreviewResult",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L158",
+ "community": 8,
+ "norm_label": "autofillpreviewresult",
+ "id": "api_types_autofillpreviewresult"
+ },
+ {
+ "label": "AutofillApplyResult",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L163",
+ "community": 8,
+ "norm_label": "autofillapplyresult",
+ "id": "api_types_autofillapplyresult"
+ },
+ {
+ "label": "AttackDayAssignment",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L168",
+ "community": 24,
+ "norm_label": "attackdayassignment",
+ "id": "api_types_attackdayassignment"
+ },
+ {
+ "label": "AttackDayPreviewResult",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L173",
+ "community": 3,
+ "norm_label": "attackdaypreviewresult",
+ "id": "api_types_attackdaypreviewresult"
+ },
+ {
+ "label": "AttackDayApplyResult",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L178",
+ "community": 24,
+ "norm_label": "attackdayapplyresult",
+ "id": "api_types_attackdayapplyresult"
+ },
+ {
+ "label": "PositionKey",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L183",
+ "community": 8,
+ "norm_label": "positionkey",
+ "id": "api_types_positionkey"
+ },
+ {
+ "label": "MemberDiff",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L190",
+ "community": 8,
+ "norm_label": "memberdiff",
+ "id": "api_types_memberdiff"
+ },
+ {
+ "label": "ComparisonResult",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L198",
+ "community": 8,
+ "norm_label": "comparisonresult",
+ "id": "api_types_comparisonresult"
+ },
+ {
+ "label": "NotificationResultItem",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L205",
+ "community": 34,
+ "norm_label": "notificationresultitem",
+ "id": "api_types_notificationresultitem"
+ },
+ {
+ "label": "NotificationBatchResponse",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L214",
+ "community": 34,
+ "norm_label": "notificationbatchresponse",
+ "id": "api_types_notificationbatchresponse"
+ },
+ {
+ "label": "NotifyResponse",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L220",
+ "community": 34,
+ "norm_label": "notifyresponse",
+ "id": "api_types_notifyresponse"
+ },
+ {
+ "label": "GenerateImagesResponse",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L227",
+ "community": 34,
+ "norm_label": "generateimagesresponse",
+ "id": "api_types_generateimagesresponse"
+ },
+ {
+ "label": "VersionInfo",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L233",
+ "community": 40,
+ "norm_label": "versioninfo",
+ "id": "api_types_versioninfo"
+ },
+ {
+ "label": "BuildingTypeInfo",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L241",
+ "community": 8,
+ "norm_label": "buildingtypeinfo",
+ "id": "api_types_buildingtypeinfo"
+ },
+ {
+ "label": "MemberRoleInfo",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L249",
+ "community": 15,
+ "norm_label": "memberroleinfo",
+ "id": "api_types_memberroleinfo"
+ },
+ {
+ "label": "PostSuggestionSkipReason",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L256",
+ "community": 8,
+ "norm_label": "postsuggestionskipreason",
+ "id": "api_types_postsuggestionskipreason"
+ },
+ {
+ "label": "PostSuggestionEntry",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L262",
+ "community": 8,
+ "norm_label": "postsuggestionentry",
+ "id": "api_types_postsuggestionentry"
+ },
+ {
+ "label": "PostSuggestionPreviewResult",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L279",
+ "community": 36,
+ "norm_label": "postsuggestionpreviewresult",
+ "id": "api_types_postsuggestionpreviewresult"
+ },
+ {
+ "label": "PostSuggestionStaleReason",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L284",
+ "community": 8,
+ "norm_label": "postsuggestionstalereason",
+ "id": "api_types_postsuggestionstalereason"
+ },
+ {
+ "label": "PostSuggestionStaleEntry",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L291",
+ "community": 14,
+ "norm_label": "postsuggestionstaleentry",
+ "id": "api_types_postsuggestionstaleentry"
+ },
+ {
+ "label": "PostSuggestionApplyResult",
+ "file_type": "code",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L298",
+ "community": 8,
+ "norm_label": "postsuggestionapplyresult",
+ "id": "api_types_postsuggestionapplyresult"
+ },
+ {
+ "label": "getVersion()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/version.ts",
+ "source_location": "L5",
+ "community": 40,
+ "norm_label": "getversion()",
+ "id": "api_version_getversion"
+ },
+ {
+ "label": "useVersion()",
+ "file_type": "code",
+ "source_file": "frontend/src/api/version.ts",
+ "source_location": "L10",
+ "community": 40,
+ "norm_label": "useversion()",
+ "id": "api_version_useversion"
+ },
+ {
+ "label": "CarouselSlide",
+ "file_type": "code",
+ "source_file": "frontend/src/components/Carousel.tsx",
+ "source_location": "L10",
+ "community": 1,
+ "norm_label": "carouselslide",
+ "id": "components_carousel_carouselslide"
+ },
+ {
+ "label": "CarouselProps",
+ "file_type": "code",
+ "source_file": "frontend/src/components/Carousel.tsx",
+ "source_location": "L22",
+ "community": 1,
+ "norm_label": "carouselprops",
+ "id": "components_carousel_carouselprops"
+ },
+ {
+ "label": "Carousel()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/Carousel.tsx",
+ "source_location": "L35",
+ "community": 1,
+ "norm_label": "carousel()",
+ "id": "components_carousel_carousel"
+ },
+ {
+ "label": "ChangelogDropdown.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ChangelogDropdown.tsx",
+ "source_location": "L1",
+ "community": 41,
+ "norm_label": "changelogdropdown.tsx",
+ "id": "frontend_src_components_changelogdropdown_tsx"
+ },
+ {
+ "label": "hasUnread()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ChangelogDropdown.tsx",
+ "source_location": "L29",
+ "community": 41,
+ "norm_label": "hasunread()",
+ "id": "components_changelogdropdown_hasunread"
+ },
+ {
+ "label": "DiscordSyncModal.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L1",
+ "community": 7,
+ "norm_label": "discordsyncmodal.tsx",
+ "id": "frontend_src_components_discordsyncmodal_tsx"
+ },
+ {
+ "label": "ConfidenceVariant",
+ "file_type": "code",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L31",
+ "community": 7,
+ "norm_label": "confidencevariant",
+ "id": "components_discordsyncmodal_confidencevariant"
+ },
+ {
+ "label": "CONFIDENCE_LABEL",
+ "file_type": "code",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L39",
+ "community": 7,
+ "norm_label": "confidence_label",
+ "id": "components_discordsyncmodal_confidence_label"
+ },
+ {
+ "label": "Props",
+ "file_type": "code",
+ "source_file": "frontend/src/components/GroupByToggle.tsx",
+ "source_location": "L11",
+ "community": 15,
+ "norm_label": "props",
+ "id": "components_groupbytoggle_props"
+ },
+ {
+ "label": "GroupByToggle()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/GroupByToggle.tsx",
+ "source_location": "L31",
+ "community": 15,
+ "norm_label": "groupbytoggle()",
+ "id": "components_groupbytoggle_groupbytoggle"
+ },
+ {
+ "label": "Layout.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/components/Layout.tsx",
+ "source_location": "L1",
+ "community": 22,
+ "norm_label": "layout.tsx",
+ "id": "frontend_src_components_layout_tsx"
+ },
+ {
+ "label": "navLinkClass()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/Layout.tsx",
+ "source_location": "L9",
+ "community": 22,
+ "norm_label": "navlinkclass()",
+ "id": "components_layout_navlinkclass"
+ },
+ {
+ "label": "Layout()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/Layout.tsx",
+ "source_location": "L17",
+ "community": 22,
+ "norm_label": "layout()",
+ "id": "components_layout_layout"
+ },
+ {
+ "label": "MemberWithMatches",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L57",
+ "community": 38,
+ "norm_label": "memberwithmatches",
+ "id": "components_poststab_memberwithmatches"
+ },
+ {
+ "label": "DuplicateConditionMap",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L64",
+ "community": 38,
+ "norm_label": "duplicateconditionmap",
+ "id": "components_poststab_duplicateconditionmap"
+ },
+ {
+ "label": "buildDuplicateConditionMap()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L68",
+ "community": 38,
+ "norm_label": "buildduplicateconditionmap()",
+ "id": "components_poststab_buildduplicateconditionmap"
+ },
+ {
+ "label": "findPostPosition()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L85",
+ "community": 15,
+ "norm_label": "findpostposition()",
+ "id": "components_poststab_findpostposition"
+ },
+ {
+ "label": "MemberAssignRow()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L100",
+ "community": 38,
+ "norm_label": "memberassignrow()",
+ "id": "components_poststab_memberassignrow"
+ },
+ {
+ "label": "PostSuggestionsModal.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L1",
+ "community": 14,
+ "norm_label": "postsuggestionsmodal.tsx",
+ "id": "frontend_src_components_postsuggestionsmodal_tsx"
+ },
+ {
+ "label": "OutcomeFilter",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L30",
+ "community": 14,
+ "norm_label": "outcomefilter",
+ "id": "components_postsuggestionsmodal_outcomefilter"
+ },
+ {
+ "label": "Classification",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L32",
+ "community": 14,
+ "norm_label": "classification",
+ "id": "components_postsuggestionsmodal_classification"
+ },
+ {
+ "label": "PRIORITY_META",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L42",
+ "community": 14,
+ "norm_label": "priority_meta",
+ "id": "components_postsuggestionsmodal_priority_meta"
+ },
+ {
+ "label": "getPriorityMeta()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L64",
+ "community": 14,
+ "norm_label": "getprioritymeta()",
+ "id": "components_postsuggestionsmodal_getprioritymeta"
+ },
+ {
+ "label": "SKIP_REASON_LABEL",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L70",
+ "community": 14,
+ "norm_label": "skip_reason_label",
+ "id": "components_postsuggestionsmodal_skip_reason_label"
+ },
+ {
+ "label": "STALE_REASON_LABEL",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L82",
+ "community": 14,
+ "norm_label": "stale_reason_label",
+ "id": "components_postsuggestionsmodal_stale_reason_label"
+ },
+ {
+ "label": "TileConfig",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L93",
+ "community": 14,
+ "norm_label": "tileconfig",
+ "id": "components_postsuggestionsmodal_tileconfig"
+ },
+ {
+ "label": "classify()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L159",
+ "community": 14,
+ "norm_label": "classify()",
+ "id": "components_postsuggestionsmodal_classify"
+ },
+ {
+ "label": "Pill()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L169",
+ "community": 14,
+ "norm_label": "pill()",
+ "id": "components_postsuggestionsmodal_pill"
+ },
+ {
+ "label": "ChangeCell()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L197",
+ "community": 14,
+ "norm_label": "changecell()",
+ "id": "components_postsuggestionsmodal_changecell"
+ },
+ {
+ "label": "SkipIcon()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L248",
+ "community": 14,
+ "norm_label": "skipicon()",
+ "id": "components_postsuggestionsmodal_skipicon"
+ },
+ {
+ "label": "ConditionCell()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L259",
+ "community": 14,
+ "norm_label": "conditioncell()",
+ "id": "components_postsuggestionsmodal_conditioncell"
+ },
+ {
+ "label": "SummaryTile()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L290",
+ "community": 14,
+ "norm_label": "summarytile()",
+ "id": "components_postsuggestionsmodal_summarytile"
+ },
+ {
+ "label": "StateLoading()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L345",
+ "community": 14,
+ "norm_label": "stateloading()",
+ "id": "components_postsuggestionsmodal_stateloading"
+ },
+ {
+ "label": "StateEmpty()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L355",
+ "community": 14,
+ "norm_label": "stateempty()",
+ "id": "components_postsuggestionsmodal_stateempty"
+ },
+ {
+ "label": "StateStaleConflict()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L379",
+ "community": 14,
+ "norm_label": "statestaleconflict()",
+ "id": "components_postsuggestionsmodal_statestaleconflict"
+ },
+ {
+ "label": "ExpiryCountdown",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L476",
+ "community": 14,
+ "norm_label": "expirycountdown",
+ "id": "components_postsuggestionsmodal_expirycountdown"
+ },
+ {
+ "label": "useExpiryCountdown()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L486",
+ "community": 14,
+ "norm_label": "useexpirycountdown()",
+ "id": "components_postsuggestionsmodal_useexpirycountdown"
+ },
+ {
+ "label": "RequireAuth.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/components/RequireAuth.tsx",
+ "source_location": "L1",
+ "community": 22,
+ "norm_label": "requireauth.tsx",
+ "id": "frontend_src_components_requireauth_tsx"
+ },
+ {
+ "label": "RequireAuth()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/RequireAuth.tsx",
+ "source_location": "L4",
+ "community": 22,
+ "norm_label": "requireauth()",
+ "id": "components_requireauth_requireauth"
+ },
+ {
+ "label": "SiegeLayout.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/components/SiegeLayout.tsx",
+ "source_location": "L1",
+ "community": 22,
+ "norm_label": "siegelayout.tsx",
+ "id": "frontend_src_components_siegelayout_tsx"
+ },
+ {
+ "label": "SiegeLayout()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/SiegeLayout.tsx",
+ "source_location": "L13",
+ "community": 22,
+ "norm_label": "siegelayout()",
+ "id": "components_siegelayout_siegelayout"
+ },
+ {
+ "label": "badge.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/badge.tsx",
+ "source_location": "L1",
+ "community": 7,
+ "norm_label": "badge.tsx",
+ "id": "frontend_src_components_ui_badge_tsx"
+ },
+ {
+ "label": "badgeVariants",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/badge.tsx",
+ "source_location": "L5",
+ "community": 7,
+ "norm_label": "badgevariants",
+ "id": "ui_badge_badgevariants"
+ },
+ {
+ "label": "BadgeProps",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/badge.tsx",
+ "source_location": "L29",
+ "community": 7,
+ "norm_label": "badgeprops",
+ "id": "ui_badge_badgeprops"
+ },
+ {
+ "label": "Badge()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/badge.tsx",
+ "source_location": "L34",
+ "community": 7,
+ "norm_label": "badge()",
+ "id": "ui_badge_badge"
+ },
+ {
+ "label": "button.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/button.tsx",
+ "source_location": "L1",
+ "community": 7,
+ "norm_label": "button.tsx",
+ "id": "frontend_src_components_ui_button_tsx"
+ },
+ {
+ "label": "buttonVariants",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/button.tsx",
+ "source_location": "L6",
+ "community": 7,
+ "norm_label": "buttonvariants",
+ "id": "ui_button_buttonvariants"
+ },
+ {
+ "label": "ButtonProps",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/button.tsx",
+ "source_location": "L36",
+ "community": 7,
+ "norm_label": "buttonprops",
+ "id": "ui_button_buttonprops"
+ },
+ {
+ "label": "Button",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/button.tsx",
+ "source_location": "L43",
+ "community": 7,
+ "norm_label": "button",
+ "id": "ui_button_button"
+ },
+ {
+ "label": "Checkbox",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/checkbox.tsx",
+ "source_location": "L6",
+ "community": 15,
+ "norm_label": "checkbox",
+ "id": "ui_checkbox_checkbox"
+ },
+ {
+ "label": "dialog.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L1",
+ "community": 3,
+ "norm_label": "dialog.tsx",
+ "id": "frontend_src_components_ui_dialog_tsx"
+ },
+ {
+ "label": "DialogOverlay",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L11",
+ "community": 3,
+ "norm_label": "dialogoverlay",
+ "id": "ui_dialog_dialogoverlay"
+ },
+ {
+ "label": "DialogContent",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L26",
+ "community": 3,
+ "norm_label": "dialogcontent",
+ "id": "ui_dialog_dialogcontent"
+ },
+ {
+ "label": "DialogHeader()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L50",
+ "community": 3,
+ "norm_label": "dialogheader()",
+ "id": "ui_dialog_dialogheader"
+ },
+ {
+ "label": "DialogFooter()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L66",
+ "community": 14,
+ "norm_label": "dialogfooter()",
+ "id": "ui_dialog_dialogfooter"
+ },
+ {
+ "label": "DialogTitle",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L82",
+ "community": 3,
+ "norm_label": "dialogtitle",
+ "id": "ui_dialog_dialogtitle"
+ },
+ {
+ "label": "DialogDescription",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L97",
+ "community": 3,
+ "norm_label": "dialogdescription",
+ "id": "ui_dialog_dialogdescription"
+ },
+ {
+ "label": "dropdown-menu.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L1",
+ "community": 41,
+ "norm_label": "dropdown-menu.tsx",
+ "id": "frontend_src_components_ui_dropdown_menu_tsx"
+ },
+ {
+ "label": "DropdownMenuSubTrigger",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L20",
+ "community": 41,
+ "norm_label": "dropdownmenusubtrigger",
+ "id": "ui_dropdown_menu_dropdownmenusubtrigger"
+ },
+ {
+ "label": "DropdownMenuSubContent",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L42",
+ "community": 41,
+ "norm_label": "dropdownmenusubcontent",
+ "id": "ui_dropdown_menu_dropdownmenusubcontent"
+ },
+ {
+ "label": "DropdownMenuContent",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L58",
+ "community": 41,
+ "norm_label": "dropdownmenucontent",
+ "id": "ui_dropdown_menu_dropdownmenucontent"
+ },
+ {
+ "label": "DropdownMenuItem",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L76",
+ "community": 41,
+ "norm_label": "dropdownmenuitem",
+ "id": "ui_dropdown_menu_dropdownmenuitem"
+ },
+ {
+ "label": "DropdownMenuCheckboxItem",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L94",
+ "community": 41,
+ "norm_label": "dropdownmenucheckboxitem",
+ "id": "ui_dropdown_menu_dropdownmenucheckboxitem"
+ },
+ {
+ "label": "DropdownMenuRadioItem",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L118",
+ "community": 41,
+ "norm_label": "dropdownmenuradioitem",
+ "id": "ui_dropdown_menu_dropdownmenuradioitem"
+ },
+ {
+ "label": "DropdownMenuLabel",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L140",
+ "community": 41,
+ "norm_label": "dropdownmenulabel",
+ "id": "ui_dropdown_menu_dropdownmenulabel"
+ },
+ {
+ "label": "DropdownMenuSeparator",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L158",
+ "community": 41,
+ "norm_label": "dropdownmenuseparator",
+ "id": "ui_dropdown_menu_dropdownmenuseparator"
+ },
+ {
+ "label": "DropdownMenuShortcut()",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L170",
+ "community": 41,
+ "norm_label": "dropdownmenushortcut()",
+ "id": "ui_dropdown_menu_dropdownmenushortcut"
+ },
+ {
+ "label": "input.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/input.tsx",
+ "source_location": "L1",
+ "community": 15,
+ "norm_label": "input.tsx",
+ "id": "frontend_src_components_ui_input_tsx"
+ },
+ {
+ "label": "InputProps",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/input.tsx",
+ "source_location": "L4",
+ "community": 15,
+ "norm_label": "inputprops",
+ "id": "ui_input_inputprops"
+ },
+ {
+ "label": "Input",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/input.tsx",
+ "source_location": "L6",
+ "community": 15,
+ "norm_label": "input",
+ "id": "ui_input_input"
+ },
+ {
+ "label": "label.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/label.tsx",
+ "source_location": "L1",
+ "community": 7,
+ "norm_label": "label.tsx",
+ "id": "frontend_src_components_ui_label_tsx"
+ },
+ {
+ "label": "Label",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/label.tsx",
+ "source_location": "L5",
+ "community": 7,
+ "norm_label": "label",
+ "id": "ui_label_label"
+ },
+ {
+ "label": "select.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L1",
+ "community": 7,
+ "norm_label": "select.tsx",
+ "id": "frontend_src_components_ui_select_tsx"
+ },
+ {
+ "label": "SelectTrigger",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L10",
+ "community": 7,
+ "norm_label": "selecttrigger",
+ "id": "ui_select_selecttrigger"
+ },
+ {
+ "label": "SelectScrollUpButton",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L30",
+ "community": 7,
+ "norm_label": "selectscrollupbutton",
+ "id": "ui_select_selectscrollupbutton"
+ },
+ {
+ "label": "SelectScrollDownButton",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L47",
+ "community": 7,
+ "norm_label": "selectscrolldownbutton",
+ "id": "ui_select_selectscrolldownbutton"
+ },
+ {
+ "label": "SelectContent",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L65",
+ "community": 7,
+ "norm_label": "selectcontent",
+ "id": "ui_select_selectcontent"
+ },
+ {
+ "label": "SelectLabel",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L97",
+ "community": 7,
+ "norm_label": "selectlabel",
+ "id": "ui_select_selectlabel"
+ },
+ {
+ "label": "SelectItem",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L109",
+ "community": 7,
+ "norm_label": "selectitem",
+ "id": "ui_select_selectitem"
+ },
+ {
+ "label": "SelectSeparator",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L131",
+ "community": 7,
+ "norm_label": "selectseparator",
+ "id": "ui_select_selectseparator"
+ },
+ {
+ "label": "table.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L1",
+ "community": 7,
+ "norm_label": "table.tsx",
+ "id": "frontend_src_components_ui_table_tsx"
+ },
+ {
+ "label": "Table",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L4",
+ "community": 7,
+ "norm_label": "table",
+ "id": "ui_table_table"
+ },
+ {
+ "label": "TableBody",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L26",
+ "community": 7,
+ "norm_label": "tablebody",
+ "id": "ui_table_tablebody"
+ },
+ {
+ "label": "TableFooter",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L38",
+ "community": 7,
+ "norm_label": "tablefooter",
+ "id": "ui_table_tablefooter"
+ },
+ {
+ "label": "TableRow",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L53",
+ "community": 7,
+ "norm_label": "tablerow",
+ "id": "ui_table_tablerow"
+ },
+ {
+ "label": "TableHead",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L68",
+ "community": 7,
+ "norm_label": "tablehead",
+ "id": "ui_table_tablehead"
+ },
+ {
+ "label": "TableCell",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L83",
+ "community": 7,
+ "norm_label": "tablecell",
+ "id": "ui_table_tablecell"
+ },
+ {
+ "label": "TableCaption",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L98",
+ "community": 7,
+ "norm_label": "tablecaption",
+ "id": "ui_table_tablecaption"
+ },
+ {
+ "label": "textarea.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/textarea.tsx",
+ "source_location": "L1",
+ "community": 14,
+ "norm_label": "textarea.tsx",
+ "id": "frontend_src_components_ui_textarea_tsx"
+ },
+ {
+ "label": "TextareaProps",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/textarea.tsx",
+ "source_location": "L4",
+ "community": 14,
+ "norm_label": "textareaprops",
+ "id": "ui_textarea_textareaprops"
+ },
+ {
+ "label": "Textarea",
+ "file_type": "code",
+ "source_file": "frontend/src/components/ui/textarea.tsx",
+ "source_location": "L6",
+ "community": 14,
+ "norm_label": "textarea",
+ "id": "ui_textarea_textarea"
+ },
+ {
+ "label": "AuthContext.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/context/AuthContext.tsx",
+ "source_location": "L1",
+ "community": 22,
+ "norm_label": "authcontext.tsx",
+ "id": "frontend_src_context_authcontext_tsx"
+ },
+ {
+ "label": "AuthUser",
+ "file_type": "code",
+ "source_file": "frontend/src/context/AuthContext.tsx",
+ "source_location": "L11",
+ "community": 22,
+ "norm_label": "authuser",
+ "id": "context_authcontext_authuser"
+ },
+ {
+ "label": "AuthContextValue",
+ "file_type": "code",
+ "source_file": "frontend/src/context/AuthContext.tsx",
+ "source_location": "L18",
+ "community": 22,
+ "norm_label": "authcontextvalue",
+ "id": "context_authcontext_authcontextvalue"
+ },
+ {
+ "label": "AuthContext",
+ "file_type": "code",
+ "source_file": "frontend/src/context/AuthContext.tsx",
+ "source_location": "L25",
+ "community": 22,
+ "norm_label": "authcontext",
+ "id": "context_authcontext_authcontext"
+ },
+ {
+ "label": "AuthProvider()",
+ "file_type": "code",
+ "source_file": "frontend/src/context/AuthContext.tsx",
+ "source_location": "L27",
+ "community": 22,
+ "norm_label": "authprovider()",
+ "id": "context_authcontext_authprovider"
+ },
+ {
+ "label": "useAuth()",
+ "file_type": "code",
+ "source_file": "frontend/src/context/AuthContext.tsx",
+ "source_location": "L63",
+ "community": 22,
+ "norm_label": "useauth()",
+ "id": "context_authcontext_useauth"
+ },
+ {
+ "label": "buildingColors.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/lib/buildingColors.ts",
+ "source_location": "L1",
+ "community": 3,
+ "norm_label": "buildingcolors.ts",
+ "id": "frontend_src_lib_buildingcolors_ts"
+ },
+ {
+ "label": "BuildingColorClass",
+ "file_type": "code",
+ "source_file": "frontend/src/lib/buildingColors.ts",
+ "source_location": "L3",
+ "community": 3,
+ "norm_label": "buildingcolorclass",
+ "id": "lib_buildingcolors_buildingcolorclass"
+ },
+ {
+ "label": "BUILDING_LABELS",
+ "file_type": "code",
+ "source_file": "frontend/src/lib/buildingColors.ts",
+ "source_location": "L49",
+ "community": 3,
+ "norm_label": "building_labels",
+ "id": "lib_buildingcolors_building_labels"
+ },
+ {
+ "label": "groupPostConditions.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/lib/groupPostConditions.ts",
+ "source_location": "L1",
+ "community": 15,
+ "norm_label": "grouppostconditions.ts",
+ "id": "frontend_src_lib_grouppostconditions_ts"
+ },
+ {
+ "label": "GroupByMode",
+ "file_type": "code",
+ "source_file": "frontend/src/lib/groupPostConditions.ts",
+ "source_location": "L17",
+ "community": 15,
+ "norm_label": "groupbymode",
+ "id": "lib_grouppostconditions_groupbymode"
+ },
+ {
+ "label": "ConditionGroup",
+ "file_type": "code",
+ "source_file": "frontend/src/lib/groupPostConditions.ts",
+ "source_location": "L20",
+ "community": 15,
+ "norm_label": "conditiongroup",
+ "id": "lib_grouppostconditions_conditiongroup"
+ },
+ {
+ "label": "groupByLevel()",
+ "file_type": "code",
+ "source_file": "frontend/src/lib/groupPostConditions.ts",
+ "source_location": "L53",
+ "community": 15,
+ "norm_label": "groupbylevel()",
+ "id": "lib_grouppostconditions_groupbylevel"
+ },
+ {
+ "label": "groupByType()",
+ "file_type": "code",
+ "source_file": "frontend/src/lib/groupPostConditions.ts",
+ "source_location": "L74",
+ "community": 15,
+ "norm_label": "groupbytype()",
+ "id": "lib_grouppostconditions_groupbytype"
+ },
+ {
+ "label": "post-priority.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/lib/post-priority.ts",
+ "source_location": "L1",
+ "community": 38,
+ "norm_label": "post-priority.ts",
+ "id": "frontend_src_lib_post_priority_ts"
+ },
+ {
+ "label": "priorityLabel()",
+ "file_type": "code",
+ "source_file": "frontend/src/lib/post-priority.ts",
+ "source_location": "L23",
+ "community": 38,
+ "norm_label": "prioritylabel()",
+ "id": "lib_post_priority_prioritylabel"
+ },
+ {
+ "label": "priorityBadgeColor()",
+ "file_type": "code",
+ "source_file": "frontend/src/lib/post-priority.ts",
+ "source_location": "L27",
+ "community": 38,
+ "norm_label": "prioritybadgecolor()",
+ "id": "lib_post_priority_prioritybadgecolor"
+ },
+ {
+ "label": "useGroupByPreference.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/lib/useGroupByPreference.ts",
+ "source_location": "L1",
+ "community": 15,
+ "norm_label": "usegroupbypreference.ts",
+ "id": "frontend_src_lib_usegroupbypreference_ts"
+ },
+ {
+ "label": "VALID_MODES",
+ "file_type": "code",
+ "source_file": "frontend/src/lib/useGroupByPreference.ts",
+ "source_location": "L14",
+ "community": 15,
+ "norm_label": "valid_modes",
+ "id": "lib_usegroupbypreference_valid_modes"
+ },
+ {
+ "label": "utils.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/lib/utils.ts",
+ "source_location": "L1",
+ "community": 1,
+ "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": 14,
+ "norm_label": "cn()",
+ "id": "lib_utils_cn"
+ },
+ {
+ "label": "ROLE_LABELS",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L58",
+ "community": 38,
+ "norm_label": "role_labels",
+ "id": "pages_boardpage_role_labels"
+ },
+ {
+ "label": "ROLE_PRIORITY",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L65",
+ "community": 38,
+ "norm_label": "role_priority",
+ "id": "pages_boardpage_role_priority"
+ },
+ {
+ "label": "ROLE_COLORS",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L72",
+ "community": 3,
+ "norm_label": "role_colors",
+ "id": "pages_boardpage_role_colors"
+ },
+ {
+ "label": "ROLE_BADGE_COLORS",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L79",
+ "community": 38,
+ "norm_label": "role_badge_colors",
+ "id": "pages_boardpage_role_badge_colors"
+ },
+ {
+ "label": "ROLE_CHIP_COLORS",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L87",
+ "community": 3,
+ "norm_label": "role_chip_colors",
+ "id": "pages_boardpage_role_chip_colors"
+ },
+ {
+ "label": "POWER_LABELS",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L94",
+ "community": 38,
+ "norm_label": "power_labels",
+ "id": "pages_boardpage_power_labels"
+ },
+ {
+ "label": "BUILDING_TYPE_ORDER",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L103",
+ "community": 3,
+ "norm_label": "building_type_order",
+ "id": "pages_boardpage_building_type_order"
+ },
+ {
+ "label": "DraggableMemberRow()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L254",
+ "community": 3,
+ "norm_label": "draggablememberrow()",
+ "id": "pages_boardpage_draggablememberrow"
+ },
+ {
+ "label": "MemberDragOverlay()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L322",
+ "community": 3,
+ "norm_label": "memberdragoverlay()",
+ "id": "pages_boardpage_memberdragoverlay"
+ },
+ {
+ "label": "RoleFilter",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L347",
+ "community": 3,
+ "norm_label": "rolefilter",
+ "id": "pages_boardpage_rolefilter"
+ },
+ {
+ "label": "ROLE_FILTER_OPTIONS",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L349",
+ "community": 3,
+ "norm_label": "role_filter_options",
+ "id": "pages_boardpage_role_filter_options"
+ },
+ {
+ "label": "MemberBucket()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L357",
+ "community": 3,
+ "norm_label": "memberbucket()",
+ "id": "pages_boardpage_memberbucket"
+ },
+ {
+ "label": "BuildingTableRow()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L457",
+ "community": 3,
+ "norm_label": "buildingtablerow()",
+ "id": "pages_boardpage_buildingtablerow"
+ },
+ {
+ "label": "BuildingTypeSection()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L553",
+ "community": 3,
+ "norm_label": "buildingtypesection()",
+ "id": "pages_boardpage_buildingtypesection"
+ },
+ {
+ "label": "ConditionalDndContext()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L679",
+ "community": 3,
+ "norm_label": "conditionaldndcontext()",
+ "id": "pages_boardpage_conditionaldndcontext"
+ },
+ {
+ "label": "ActiveTab",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L711",
+ "community": 3,
+ "norm_label": "activetab",
+ "id": "pages_boardpage_activetab"
+ },
+ {
+ "label": "BoardPage()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L713",
+ "community": 3,
+ "norm_label": "boardpage()",
+ "id": "pages_boardpage_boardpage"
+ },
+ {
+ "label": "formatPosition()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L17",
+ "community": 7,
+ "norm_label": "formatposition()",
+ "id": "pages_comparisonpage_formatposition"
+ },
+ {
+ "label": "PositionTag()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L26",
+ "community": 7,
+ "norm_label": "positiontag()",
+ "id": "pages_comparisonpage_positiontag"
+ },
+ {
+ "label": "MemberPositionsCell()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L41",
+ "community": 7,
+ "norm_label": "memberpositionscell()",
+ "id": "pages_comparisonpage_memberpositionscell"
+ },
+ {
+ "label": "ComparisonPage()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L67",
+ "community": 7,
+ "norm_label": "comparisonpage()",
+ "id": "pages_comparisonpage_comparisonpage"
+ },
+ {
+ "label": "LandingPage.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L1",
+ "community": 1,
+ "norm_label": "landingpage.tsx",
+ "id": "frontend_src_pages_landingpage_tsx"
+ },
+ {
+ "label": "LandingOrSieges()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L10",
+ "community": 22,
+ "norm_label": "landingorsieges()",
+ "id": "pages_landingpage_landingorsieges"
+ },
+ {
+ "label": "SLIDES",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L26",
+ "community": 1,
+ "norm_label": "slides",
+ "id": "pages_landingpage_slides"
+ },
+ {
+ "label": "ShieldIcon()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L68",
+ "community": 1,
+ "norm_label": "shieldicon()",
+ "id": "pages_landingpage_shieldicon"
+ },
+ {
+ "label": "GitHubIcon()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L88",
+ "community": 1,
+ "norm_label": "githubicon()",
+ "id": "pages_landingpage_githubicon"
+ },
+ {
+ "label": "CheckIcon()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L108",
+ "community": 1,
+ "norm_label": "checkicon()",
+ "id": "pages_landingpage_checkicon"
+ },
+ {
+ "label": "ExternalLinkIcon()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L128",
+ "community": 1,
+ "norm_label": "externallinkicon()",
+ "id": "pages_landingpage_externallinkicon"
+ },
+ {
+ "label": "COLORS",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L150",
+ "community": 1,
+ "norm_label": "colors",
+ "id": "pages_landingpage_colors"
+ },
+ {
+ "label": "LandingPage()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L157",
+ "community": 1,
+ "norm_label": "landingpage()",
+ "id": "pages_landingpage_landingpage"
+ },
+ {
+ "label": "ERROR_MESSAGES",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/LoginPage.tsx",
+ "source_location": "L7",
+ "community": 1,
+ "norm_label": "error_messages",
+ "id": "pages_loginpage_error_messages"
+ },
+ {
+ "label": "MEMBERSHIP_ERRORS",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/LoginPage.tsx",
+ "source_location": "L15",
+ "community": 1,
+ "norm_label": "membership_errors",
+ "id": "pages_loginpage_membership_errors"
+ },
+ {
+ "label": "MobileBanner()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/LoginPage.tsx",
+ "source_location": "L18",
+ "community": 1,
+ "norm_label": "mobilebanner()",
+ "id": "pages_loginpage_mobilebanner"
+ },
+ {
+ "label": "LoginPage()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/LoginPage.tsx",
+ "source_location": "L34",
+ "community": 1,
+ "norm_label": "loginpage()",
+ "id": "pages_loginpage_loginpage"
+ },
+ {
+ "label": "MemberDetailPage.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L1",
+ "community": 15,
+ "norm_label": "memberdetailpage.tsx",
+ "id": "frontend_src_pages_memberdetailpage_tsx"
+ },
+ {
+ "label": "ROLE_OPTIONS",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L41",
+ "community": 15,
+ "norm_label": "role_options",
+ "id": "pages_memberdetailpage_role_options"
+ },
+ {
+ "label": "RoleBadgeVariant",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L43",
+ "community": 7,
+ "norm_label": "rolebadgevariant",
+ "id": "pages_memberspage_rolebadgevariant"
+ },
+ {
+ "label": "ROLE_VARIANTS",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L45",
+ "community": 7,
+ "norm_label": "role_variants",
+ "id": "pages_memberspage_role_variants"
+ },
+ {
+ "label": "MembersPage()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L52",
+ "community": 7,
+ "norm_label": "memberspage()",
+ "id": "pages_memberspage_memberspage"
+ },
+ {
+ "label": "PostPrioritiesPage.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L1",
+ "community": 7,
+ "norm_label": "postprioritiespage.tsx",
+ "id": "frontend_src_pages_postprioritiespage_tsx"
+ },
+ {
+ "label": "DescriptionCell()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L30",
+ "community": 7,
+ "norm_label": "descriptioncell()",
+ "id": "pages_postprioritiespage_descriptioncell"
+ },
+ {
+ "label": "Tab",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L64",
+ "community": 7,
+ "norm_label": "tab",
+ "id": "pages_postprioritiespage_tab"
+ },
+ {
+ "label": "PostRow()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L30",
+ "community": 15,
+ "norm_label": "postrow()",
+ "id": "pages_postspage_postrow"
+ },
+ {
+ "label": "PostsPage()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L265",
+ "community": 15,
+ "norm_label": "postspage()",
+ "id": "pages_postspage_postspage"
+ },
+ {
+ "label": "nextTuesdayFrom()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L19",
+ "community": 7,
+ "norm_label": "nexttuesdayfrom()",
+ "id": "pages_siegecreatepage_nexttuesdayfrom"
+ },
+ {
+ "label": "formatDateLocal()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L27",
+ "community": 7,
+ "norm_label": "formatdatelocal()",
+ "id": "pages_siegecreatepage_formatdatelocal"
+ },
+ {
+ "label": "suggestNextSiegeDate()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L34",
+ "community": 7,
+ "norm_label": "suggestnextsiegedate()",
+ "id": "pages_siegecreatepage_suggestnextsiegedate"
+ },
+ {
+ "label": "SiegeCreatePage()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L46",
+ "community": 7,
+ "norm_label": "siegecreatepage()",
+ "id": "pages_siegecreatepage_siegecreatepage"
+ },
+ {
+ "label": "AttackDaySelect()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L41",
+ "community": 3,
+ "norm_label": "attackdayselect()",
+ "id": "pages_siegememberspage_attackdayselect"
+ },
+ {
+ "label": "SiegeSettingsPage.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L1",
+ "community": 3,
+ "norm_label": "siegesettingspage.tsx",
+ "id": "frontend_src_pages_siegesettingspage_tsx"
+ },
+ {
+ "label": "SiegesPage.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L1",
+ "community": 7,
+ "norm_label": "siegespage.tsx",
+ "id": "frontend_src_pages_siegespage_tsx"
+ },
+ {
+ "label": "StatusBadgeVariant",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L17",
+ "community": 7,
+ "norm_label": "statusbadgevariant",
+ "id": "pages_siegespage_statusbadgevariant"
+ },
+ {
+ "label": "STATUS_VARIANTS",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L19",
+ "community": 7,
+ "norm_label": "status_variants",
+ "id": "pages_siegespage_status_variants"
+ },
+ {
+ "label": "STATUS_LABELS",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L25",
+ "community": 7,
+ "norm_label": "status_labels",
+ "id": "pages_siegespage_status_labels"
+ },
+ {
+ "label": "SiegesPage()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L31",
+ "community": 7,
+ "norm_label": "siegespage()",
+ "id": "pages_siegespage_siegespage"
+ },
+ {
+ "label": "UI_LIBRARIES",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/SystemPage.tsx",
+ "source_location": "L6",
+ "community": 40,
+ "norm_label": "ui_libraries",
+ "id": "pages_systempage_ui_libraries"
+ },
+ {
+ "label": "SectionPanel()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/SystemPage.tsx",
+ "source_location": "L16",
+ "community": 40,
+ "norm_label": "sectionpanel()",
+ "id": "pages_systempage_sectionpanel"
+ },
+ {
+ "label": "DataRow()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/SystemPage.tsx",
+ "source_location": "L47",
+ "community": 14,
+ "norm_label": "datarow()",
+ "id": "pages_systempage_datarow"
+ },
+ {
+ "label": "LibraryRow()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/SystemPage.tsx",
+ "source_location": "L80",
+ "community": 40,
+ "norm_label": "libraryrow()",
+ "id": "pages_systempage_libraryrow"
+ },
+ {
+ "label": "SystemPage()",
+ "file_type": "code",
+ "source_file": "frontend/src/pages/SystemPage.tsx",
+ "source_location": "L100",
+ "community": 40,
+ "norm_label": "systempage()",
+ "id": "pages_systempage_systempage"
+ },
+ {
+ "label": "handlers.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/test/handlers.ts",
+ "source_location": "L1",
+ "community": 8,
+ "norm_label": "handlers.ts",
+ "id": "frontend_src_test_handlers_ts"
+ },
+ {
+ "label": "handlers",
+ "file_type": "code",
+ "source_file": "frontend/src/test/handlers.ts",
+ "source_location": "L42",
+ "community": 8,
+ "norm_label": "handlers",
+ "id": "test_handlers_handlers"
+ },
+ {
+ "label": "server.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/test/server.ts",
+ "source_location": "L1",
+ "community": 1,
+ "norm_label": "server.ts",
+ "id": "frontend_src_test_server_ts"
+ },
+ {
+ "label": "server",
+ "file_type": "code",
+ "source_file": "frontend/src/test/server.ts",
+ "source_location": "L4",
+ "community": 1,
+ "norm_label": "server",
+ "id": "test_server_server"
+ },
+ {
+ "label": "setup.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/test/setup.ts",
+ "source_location": "L1",
+ "community": 132,
+ "norm_label": "setup.ts",
+ "id": "frontend_src_test_setup_ts"
+ },
+ {
+ "label": "TestRenderOptions",
+ "file_type": "code",
+ "source_file": "frontend/src/test/utils.tsx",
+ "source_location": "L7",
+ "community": 1,
+ "norm_label": "testrenderoptions",
+ "id": "test_utils_testrenderoptions"
+ },
+ {
+ "label": "renderWithProviders()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/utils.tsx",
+ "source_location": "L11",
+ "community": 1,
+ "norm_label": "renderwithproviders()",
+ "id": "test_utils_renderwithproviders"
+ },
+ {
+ "label": "renderCarousel()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/Carousel.test.tsx",
+ "source_location": "L13",
+ "community": 1,
+ "norm_label": "rendercarousel()",
+ "id": "components_carousel_test_rendercarousel"
+ },
+ {
+ "label": "track",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/Carousel.test.tsx",
+ "source_location": "L20",
+ "community": 1,
+ "norm_label": "track",
+ "id": "components_carousel_test_track"
+ },
+ {
+ "label": "dot0",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/Carousel.test.tsx",
+ "source_location": "L40",
+ "community": 1,
+ "norm_label": "dot0",
+ "id": "components_carousel_test_dot0"
+ },
+ {
+ "label": "viewport",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/Carousel.test.tsx",
+ "source_location": "L116",
+ "community": 1,
+ "norm_label": "viewport",
+ "id": "components_carousel_test_viewport"
+ },
+ {
+ "label": "ChangelogDropdown.test.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/ChangelogDropdown.test.tsx",
+ "source_location": "L1",
+ "community": 1,
+ "norm_label": "changelogdropdown.test.tsx",
+ "id": "frontend_src_test_components_changelogdropdown_test_tsx"
+ },
+ {
+ "label": "renderDropdown()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/ChangelogDropdown.test.tsx",
+ "source_location": "L58",
+ "community": 1,
+ "norm_label": "renderdropdown()",
+ "id": "components_changelogdropdown_test_renderdropdown"
+ },
+ {
+ "label": "GroupByConditions.test.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L1",
+ "community": 1,
+ "norm_label": "groupbyconditions.test.tsx",
+ "id": "frontend_src_test_components_groupbyconditions_test_tsx"
+ },
+ {
+ "label": "setupConditions()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L100",
+ "community": 1,
+ "norm_label": "setupconditions()",
+ "id": "components_groupbyconditions_test_setupconditions"
+ },
+ {
+ "label": "setupMember()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L107",
+ "community": 1,
+ "norm_label": "setupmember()",
+ "id": "components_groupbyconditions_test_setupmember"
+ },
+ {
+ "label": "openConditionsTab()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L130",
+ "community": 1,
+ "norm_label": "openconditionstab()",
+ "id": "components_groupbyconditions_test_openconditionstab"
+ },
+ {
+ "label": "elements",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L184",
+ "community": 1,
+ "norm_label": "elements",
+ "id": "components_groupbyconditions_test_elements"
+ },
+ {
+ "label": "renderMemberDetail()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L240",
+ "community": 1,
+ "norm_label": "rendermemberdetail()",
+ "id": "components_groupbyconditions_test_rendermemberdetail"
+ },
+ {
+ "label": "waitForPreferences()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L249",
+ "community": 1,
+ "norm_label": "waitforpreferences()",
+ "id": "components_groupbyconditions_test_waitforpreferences"
+ },
+ {
+ "label": "headingTexts",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L278",
+ "community": 1,
+ "norm_label": "headingtexts",
+ "id": "components_groupbyconditions_test_headingtexts"
+ },
+ {
+ "label": "GroupByToggle.test.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/GroupByToggle.test.tsx",
+ "source_location": "L1",
+ "community": 1,
+ "norm_label": "groupbytoggle.test.tsx",
+ "id": "frontend_src_test_components_groupbytoggle_test_tsx"
+ },
+ {
+ "label": "onChange",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/GroupByToggle.test.tsx",
+ "source_location": "L59",
+ "community": 1,
+ "norm_label": "onchange",
+ "id": "components_groupbytoggle_test_onchange"
+ },
+ {
+ "label": "renderLanding()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L18",
+ "community": 1,
+ "norm_label": "renderlanding()",
+ "id": "components_landingpage_test_renderlanding"
+ },
+ {
+ "label": "signIn",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L55",
+ "community": 1,
+ "norm_label": "signin",
+ "id": "components_landingpage_test_signin"
+ },
+ {
+ "label": "list",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L71",
+ "community": 42,
+ "norm_label": "list",
+ "id": "components_landingpage_test_list"
+ },
+ {
+ "label": "bullets",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L72",
+ "community": 1,
+ "norm_label": "bullets",
+ "id": "components_landingpage_test_bullets"
+ },
+ {
+ "label": "ghLink",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L127",
+ "community": 1,
+ "norm_label": "ghlink",
+ "id": "components_landingpage_test_ghlink"
+ },
+ {
+ "label": "scrollIntoViewMock",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L192",
+ "community": 1,
+ "norm_label": "scrollintoviewmock",
+ "id": "components_landingpage_test_scrollintoviewmock"
+ },
+ {
+ "label": "renderLayout()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/Layout.test.tsx",
+ "source_location": "L13",
+ "community": 22,
+ "norm_label": "renderlayout()",
+ "id": "components_layout_test_renderlayout"
+ },
+ {
+ "label": "PostsTab.test.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L1",
+ "community": 36,
+ "norm_label": "poststab.test.tsx",
+ "id": "frontend_src_test_components_poststab_test_tsx"
+ },
+ {
+ "label": "makePostBoard()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L65",
+ "community": 36,
+ "norm_label": "makepostboard()",
+ "id": "components_poststab_test_makepostboard"
+ },
+ {
+ "label": "setupHandlers()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L133",
+ "community": 1,
+ "norm_label": "setuphandlers()",
+ "id": "components_poststab_test_setuphandlers"
+ },
+ {
+ "label": "navigateToPostsTab()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L159",
+ "community": 36,
+ "norm_label": "navigatetopoststab()",
+ "id": "components_poststab_test_navigatetopoststab"
+ },
+ {
+ "label": "makeTwoPostBoard()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L299",
+ "community": 36,
+ "norm_label": "maketwopostboard()",
+ "id": "components_poststab_test_maketwopostboard"
+ },
+ {
+ "label": "board",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L351",
+ "community": 36,
+ "norm_label": "board",
+ "id": "components_poststab_test_board"
+ },
+ {
+ "label": "post1",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L352",
+ "community": 36,
+ "norm_label": "post1",
+ "id": "components_poststab_test_post1"
+ },
+ {
+ "label": "post2",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L359",
+ "community": 36,
+ "norm_label": "post2",
+ "id": "components_poststab_test_post2"
+ },
+ {
+ "label": "postRefs",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L391",
+ "community": 36,
+ "norm_label": "postrefs",
+ "id": "components_poststab_test_postrefs"
+ },
+ {
+ "label": "labels",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L441",
+ "community": 36,
+ "norm_label": "labels",
+ "id": "components_poststab_test_labels"
+ },
+ {
+ "label": "btn",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L604",
+ "community": 36,
+ "norm_label": "btn",
+ "id": "components_poststab_test_btn"
+ },
+ {
+ "label": "makePostPreviewResult()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L611",
+ "community": 36,
+ "norm_label": "makepostpreviewresult()",
+ "id": "components_poststab_test_makepostpreviewresult"
+ },
+ {
+ "label": "makeOptimalAssignment()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L621",
+ "community": 36,
+ "norm_label": "makeoptimalassignment()",
+ "id": "components_poststab_test_makeoptimalassignment"
+ },
+ {
+ "label": "makeSuggestionAssignment()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L640",
+ "community": 36,
+ "norm_label": "makesuggestionassignment()",
+ "id": "components_poststab_test_makesuggestionassignment"
+ },
+ {
+ "label": "chip",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L684",
+ "community": 36,
+ "norm_label": "chip",
+ "id": "components_poststab_test_chip"
+ },
+ {
+ "label": "suggestBtn",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L762",
+ "community": 36,
+ "norm_label": "suggestbtn",
+ "id": "components_poststab_test_suggestbtn"
+ },
+ {
+ "label": "applyBtn",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L773",
+ "community": 36,
+ "norm_label": "applybtn",
+ "id": "components_poststab_test_applybtn"
+ },
+ {
+ "label": "renderModal()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L93",
+ "community": 14,
+ "norm_label": "rendermodal()",
+ "id": "components_postsuggestionsmodal_test_rendermodal"
+ },
+ {
+ "label": "rows",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L143",
+ "community": 14,
+ "norm_label": "rows",
+ "id": "components_postsuggestionsmodal_test_rows"
+ },
+ {
+ "label": "twoSuggestions",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L157",
+ "community": 14,
+ "norm_label": "twosuggestions",
+ "id": "components_postsuggestionsmodal_test_twosuggestions"
+ },
+ {
+ "label": "onClose",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L233",
+ "community": 14,
+ "norm_label": "onclose",
+ "id": "components_postsuggestionsmodal_test_onclose"
+ },
+ {
+ "label": "regenerateBtns",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L360",
+ "community": 14,
+ "norm_label": "regeneratebtns",
+ "id": "components_postsuggestionsmodal_test_regeneratebtns"
+ },
+ {
+ "label": "skippedTile",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L390",
+ "community": 14,
+ "norm_label": "skippedtile",
+ "id": "components_postsuggestionsmodal_test_skippedtile"
+ },
+ {
+ "label": "allTile",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L400",
+ "community": 14,
+ "norm_label": "alltile",
+ "id": "components_postsuggestionsmodal_test_alltile"
+ },
+ {
+ "label": "optimalPreview",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L411",
+ "community": 14,
+ "norm_label": "optimalpreview",
+ "id": "components_postsuggestionsmodal_test_optimalpreview"
+ },
+ {
+ "label": "twoRows",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L516",
+ "community": 14,
+ "norm_label": "tworows",
+ "id": "components_postsuggestionsmodal_test_tworows"
+ },
+ {
+ "label": "applyRemainingBtn",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L598",
+ "community": 14,
+ "norm_label": "applyremainingbtn",
+ "id": "components_postsuggestionsmodal_test_applyremainingbtn"
+ },
+ {
+ "label": "expiresAt",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L616",
+ "community": 14,
+ "norm_label": "expiresat",
+ "id": "components_postsuggestionsmodal_test_expiresat"
+ },
+ {
+ "label": "subtitle",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L631",
+ "community": 14,
+ "norm_label": "subtitle",
+ "id": "components_postsuggestionsmodal_test_subtitle"
+ },
+ {
+ "label": "slidersIcons",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L724",
+ "community": 14,
+ "norm_label": "slidersicons",
+ "id": "components_postsuggestionsmodal_test_slidersicons"
+ },
+ {
+ "label": "infoIcons",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L725",
+ "community": 14,
+ "norm_label": "infoicons",
+ "id": "components_postsuggestionsmodal_test_infoicons"
+ },
+ {
+ "label": "postsLink",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/SiegeLayout.test.tsx",
+ "source_location": "L73",
+ "community": 22,
+ "norm_label": "postslink",
+ "id": "components_siegelayout_test_postslink"
+ },
+ {
+ "label": "settingsLink",
+ "file_type": "code",
+ "source_file": "frontend/src/test/components/SiegeLayout.test.tsx",
+ "source_location": "L79",
+ "community": 22,
+ "norm_label": "settingslink",
+ "id": "components_siegelayout_test_settingslink"
+ },
+ {
+ "label": "TestConsumer()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/context/AuthContext.test.tsx",
+ "source_location": "L12",
+ "community": 22,
+ "norm_label": "testconsumer()",
+ "id": "context_authcontext_test_testconsumer"
+ },
+ {
+ "label": "makeCond()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L17",
+ "community": 15,
+ "norm_label": "makecond()",
+ "id": "lib_grouppostconditions_test_makecond"
+ },
+ {
+ "label": "MIXED",
+ "file_type": "code",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L27",
+ "community": 15,
+ "norm_label": "mixed",
+ "id": "lib_grouppostconditions_test_mixed"
+ },
+ {
+ "label": "groups",
+ "file_type": "code",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L38",
+ "community": 15,
+ "norm_label": "groups",
+ "id": "lib_grouppostconditions_test_groups"
+ },
+ {
+ "label": "levels",
+ "file_type": "code",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L39",
+ "community": 15,
+ "norm_label": "levels",
+ "id": "lib_grouppostconditions_test_levels"
+ },
+ {
+ "label": "descriptions",
+ "file_type": "code",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L53",
+ "community": 15,
+ "norm_label": "descriptions",
+ "id": "lib_grouppostconditions_test_descriptions"
+ },
+ {
+ "label": "l1Only",
+ "file_type": "code",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L59",
+ "community": 15,
+ "norm_label": "l1only",
+ "id": "lib_grouppostconditions_test_l1only"
+ },
+ {
+ "label": "types",
+ "file_type": "code",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L72",
+ "community": 15,
+ "norm_label": "types",
+ "id": "lib_grouppostconditions_test_types"
+ },
+ {
+ "label": "headings",
+ "file_type": "code",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L80",
+ "community": 1,
+ "norm_label": "headings",
+ "id": "lib_grouppostconditions_test_headings"
+ },
+ {
+ "label": "factions",
+ "file_type": "code",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L98",
+ "community": 15,
+ "norm_label": "factions",
+ "id": "lib_grouppostconditions_test_factions"
+ },
+ {
+ "label": "unknown",
+ "file_type": "code",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L111",
+ "community": 15,
+ "norm_label": "unknown",
+ "id": "lib_grouppostconditions_test_unknown"
+ },
+ {
+ "label": "ids",
+ "file_type": "code",
+ "source_file": "frontend/src/test/lib/postConditionTypes.test.ts",
+ "source_location": "L25",
+ "community": 16,
+ "norm_label": "ids",
+ "id": "lib_postconditiontypes_test_ids"
+ },
+ {
+ "label": "unique",
+ "file_type": "code",
+ "source_file": "frontend/src/test/lib/postConditionTypes.test.ts",
+ "source_location": "L45",
+ "community": 16,
+ "norm_label": "unique",
+ "id": "lib_postconditiontypes_test_unique"
+ },
+ {
+ "label": "count()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/lib/postConditionTypes.test.ts",
+ "source_location": "L51",
+ "community": 16,
+ "norm_label": "count()",
+ "id": "lib_postconditiontypes_test_count"
+ },
+ {
+ "label": "BoardPage.test.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L1",
+ "community": 1,
+ "norm_label": "boardpage.test.tsx",
+ "id": "frontend_src_test_pages_boardpage_test_tsx"
+ },
+ {
+ "label": "makeBoard()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L54",
+ "community": 2,
+ "norm_label": "makeboard()",
+ "id": "pages_boardpage_test_makeboard"
+ },
+ {
+ "label": "makeSiegeMember()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L90",
+ "community": 12,
+ "norm_label": "makesiegemember()",
+ "id": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "label": "setupDefaultHandlers()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L107",
+ "community": 1,
+ "norm_label": "setupdefaulthandlers()",
+ "id": "pages_boardpage_test_setupdefaulthandlers"
+ },
+ {
+ "label": "renderBoard()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L120",
+ "community": 1,
+ "norm_label": "renderboard()",
+ "id": "pages_boardpage_test_renderboard"
+ },
+ {
+ "label": "ones",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L174",
+ "community": 1,
+ "norm_label": "ones",
+ "id": "pages_boardpage_test_ones"
+ },
+ {
+ "label": "disabledEl",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L217",
+ "community": 1,
+ "norm_label": "disabledel",
+ "id": "pages_boardpage_test_disabledel"
+ },
+ {
+ "label": "user",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L239",
+ "community": 1,
+ "norm_label": "user",
+ "id": "pages_boardpage_test_user"
+ },
+ {
+ "label": "disabledSpan",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L341",
+ "community": 1,
+ "norm_label": "disabledspan",
+ "id": "pages_boardpage_test_disabledspan"
+ },
+ {
+ "label": "cell",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L342",
+ "community": 1,
+ "norm_label": "cell",
+ "id": "pages_boardpage_test_cell"
+ },
+ {
+ "label": "members",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L382",
+ "community": 1,
+ "norm_label": "members",
+ "id": "pages_boardpage_test_members"
+ },
+ {
+ "label": "searchInput",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L420",
+ "community": 1,
+ "norm_label": "searchinput",
+ "id": "pages_boardpage_test_searchinput"
+ },
+ {
+ "label": "memberRows",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L508",
+ "community": 35,
+ "norm_label": "memberrows",
+ "id": "pages_boardpage_test_memberrows"
+ },
+ {
+ "label": "bucketRow",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L510",
+ "community": 1,
+ "norm_label": "bucketrow",
+ "id": "pages_boardpage_test_bucketrow"
+ },
+ {
+ "label": "link",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/LoginPage.test.tsx",
+ "source_location": "L147",
+ "community": 1,
+ "norm_label": "link",
+ "id": "pages_loginpage_test_link"
+ },
+ {
+ "label": "PostsPage.groupBy.test.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L1",
+ "community": 1,
+ "norm_label": "postspage.groupby.test.tsx",
+ "id": "frontend_src_test_pages_postspage_groupby_test_tsx"
+ },
+ {
+ "label": "SAMPLE_CONDITIONS",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L52",
+ "community": 1,
+ "norm_label": "sample_conditions",
+ "id": "pages_postspage_groupby_test_sample_conditions"
+ },
+ {
+ "label": "TWO_POSTS",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L111",
+ "community": 1,
+ "norm_label": "two_posts",
+ "id": "pages_postspage_groupby_test_two_posts"
+ },
+ {
+ "label": "expandFirstPost()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L150",
+ "community": 1,
+ "norm_label": "expandfirstpost()",
+ "id": "pages_postspage_groupby_test_expandfirstpost"
+ },
+ {
+ "label": "expandAllPosts()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L167",
+ "community": 1,
+ "norm_label": "expandallposts()",
+ "id": "pages_postspage_groupby_test_expandallposts"
+ },
+ {
+ "label": "rowToggle",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L204",
+ "community": 1,
+ "norm_label": "rowtoggle",
+ "id": "pages_postspage_groupby_test_rowtoggle"
+ },
+ {
+ "label": "masterGroup",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L274",
+ "community": 1,
+ "norm_label": "mastergroup",
+ "id": "pages_postspage_groupby_test_mastergroup"
+ },
+ {
+ "label": "rowGroups",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L299",
+ "community": 1,
+ "norm_label": "rowgroups",
+ "id": "pages_postspage_groupby_test_rowgroups"
+ },
+ {
+ "label": "renderPostsPage()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/PostsPage.test.tsx",
+ "source_location": "L41",
+ "community": 1,
+ "norm_label": "renderpostspage()",
+ "id": "pages_postspage_test_renderpostspage"
+ },
+ {
+ "label": "posts",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/PostsPage.test.tsx",
+ "source_location": "L63",
+ "community": 15,
+ "norm_label": "posts",
+ "id": "pages_postspage_test_posts"
+ },
+ {
+ "label": "postHeadings",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/PostsPage.test.tsx",
+ "source_location": "L93",
+ "community": 15,
+ "norm_label": "postheadings",
+ "id": "pages_postspage_test_postheadings"
+ },
+ {
+ "label": "makePreview()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L61",
+ "community": 3,
+ "norm_label": "makepreview()",
+ "id": "pages_siegememberspage_test_makepreview"
+ },
+ {
+ "label": "registerHandlers()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L75",
+ "community": 3,
+ "norm_label": "registerhandlers()",
+ "id": "pages_siegememberspage_test_registerhandlers"
+ },
+ {
+ "label": "renderPage()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L93",
+ "community": 3,
+ "norm_label": "renderpage()",
+ "id": "pages_siegememberspage_test_renderpage"
+ },
+ {
+ "label": "openPreviewDialog()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L104",
+ "community": 3,
+ "norm_label": "openpreviewdialog()",
+ "id": "pages_siegememberspage_test_openpreviewdialog"
+ },
+ {
+ "label": "allCells",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L139",
+ "community": 3,
+ "norm_label": "allcells",
+ "id": "pages_siegememberspage_test_allcells"
+ },
+ {
+ "label": "nameCells",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L158",
+ "community": 3,
+ "norm_label": "namecells",
+ "id": "pages_siegememberspage_test_namecells"
+ },
+ {
+ "label": "day2Header",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L164",
+ "community": 3,
+ "norm_label": "day2header",
+ "id": "pages_siegememberspage_test_day2header"
+ },
+ {
+ "label": "day1Names",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L184",
+ "community": 3,
+ "norm_label": "day1names",
+ "id": "pages_siegememberspage_test_day1names"
+ },
+ {
+ "label": "makeNotifyResponse()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L71",
+ "community": 3,
+ "norm_label": "makenotifyresponse()",
+ "id": "pages_siegesettingspage_test_makenotifyresponse"
+ },
+ {
+ "label": "makeResult()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L82",
+ "community": 3,
+ "norm_label": "makeresult()",
+ "id": "pages_siegesettingspage_test_makeresult"
+ },
+ {
+ "label": "makeBatchResponse()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L96",
+ "community": 3,
+ "norm_label": "makebatchresponse()",
+ "id": "pages_siegesettingspage_test_makebatchresponse"
+ },
+ {
+ "label": "emptyValidation",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L115",
+ "community": 3,
+ "norm_label": "emptyvalidation",
+ "id": "pages_siegesettingspage_test_emptyvalidation"
+ },
+ {
+ "label": "waitForPageLoad()",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L151",
+ "community": 3,
+ "norm_label": "waitforpageload()",
+ "id": "pages_siegesettingspage_test_waitforpageload"
+ },
+ {
+ "label": "dialog",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L182",
+ "community": 3,
+ "norm_label": "dialog",
+ "id": "pages_siegesettingspage_test_dialog"
+ },
+ {
+ "label": "notifyBtn",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L223",
+ "community": 3,
+ "norm_label": "notifybtn",
+ "id": "pages_siegesettingspage_test_notifybtn"
+ },
+ {
+ "label": "statusEl",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L277",
+ "community": 3,
+ "norm_label": "statusel",
+ "id": "pages_siegesettingspage_test_statusel"
+ },
+ {
+ "label": "SiegesPage.test.tsx",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegesPage.test.tsx",
+ "source_location": "L1",
+ "community": 1,
+ "norm_label": "siegespage.test.tsx",
+ "id": "frontend_src_test_pages_siegespage_test_tsx"
+ },
+ {
+ "label": "sieges",
+ "file_type": "code",
+ "source_file": "frontend/src/test/pages/SiegesPage.test.tsx",
+ "source_location": "L51",
+ "community": 1,
+ "norm_label": "sieges",
+ "id": "pages_siegespage_test_sieges"
+ },
+ {
+ "label": "changelog.d.ts",
+ "file_type": "code",
+ "source_file": "frontend/src/types/changelog.d.ts",
+ "source_location": "L1",
+ "community": 98,
+ "norm_label": "changelog.d.ts",
+ "id": "frontend_src_types_changelog_d_ts"
+ },
+ {
+ "label": "ChangelogEntry",
+ "file_type": "code",
+ "source_file": "frontend/src/types/changelog.d.ts",
+ "source_location": "L13",
+ "community": 98,
+ "norm_label": "changelogentry",
+ "id": "types_changelog_d_changelogentry"
+ },
+ {
+ "label": "bootstrap-db.ps1",
+ "file_type": "code",
+ "source_file": "scripts/bootstrap-db.ps1",
+ "source_location": "L1",
+ "community": 133,
+ "norm_label": "bootstrap-db.ps1",
+ "id": "scripts_bootstrap_db_ps1"
+ },
+ {
+ "label": "bootstrap-excel-import.ps1",
+ "file_type": "code",
+ "source_file": "scripts/bootstrap-excel-import.ps1",
+ "source_location": "L1",
+ "community": 134,
+ "norm_label": "bootstrap-excel-import.ps1",
+ "id": "scripts_bootstrap_excel_import_ps1"
+ },
+ {
+ "label": "bootstrap-images.ps1",
+ "file_type": "code",
+ "source_file": "scripts/bootstrap-images.ps1",
+ "source_location": "L1",
+ "community": 135,
+ "norm_label": "bootstrap-images.ps1",
+ "id": "scripts_bootstrap_images_ps1"
+ },
+ {
+ "label": "bootstrap-keyvault.ps1",
+ "file_type": "code",
+ "source_file": "scripts/bootstrap-keyvault.ps1",
+ "source_location": "L1",
+ "community": 136,
+ "norm_label": "bootstrap-keyvault.ps1",
+ "id": "scripts_bootstrap_keyvault_ps1"
+ },
+ {
+ "label": "bootstrap-reimport.ps1",
+ "file_type": "code",
+ "source_file": "scripts/bootstrap-reimport.ps1",
+ "source_location": "L1",
+ "community": 137,
+ "norm_label": "bootstrap-reimport.ps1",
+ "id": "scripts_bootstrap_reimport_ps1"
+ },
+ {
+ "label": "generate-origin-pfx.ps1",
+ "file_type": "code",
+ "source_file": "scripts/generate-origin-pfx.ps1",
+ "source_location": "L1",
+ "community": 138,
+ "norm_label": "generate-origin-pfx.ps1",
+ "id": "scripts_generate_origin_pfx_ps1"
+ },
+ {
+ "label": "rebuild.ps1",
+ "file_type": "code",
+ "source_file": "scripts/rebuild.ps1",
+ "source_location": "L1",
+ "community": 139,
+ "norm_label": "rebuild.ps1",
+ "id": "scripts_rebuild_ps1"
+ },
+ {
+ "label": "import_excel.py",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L1",
+ "community": 21,
+ "norm_label": "import_excel.py",
+ "id": "scripts_excel_import_import_excel_py"
+ },
+ {
+ "label": "ParsedMember",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L160",
+ "community": 16,
+ "norm_label": "parsedmember",
+ "id": "excel_import_import_excel_parsedmember"
+ },
+ {
+ "label": "ParsedAssignment",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L169",
+ "community": 16,
+ "norm_label": "parsedassignment",
+ "id": "excel_import_import_excel_parsedassignment"
+ },
+ {
+ "label": "ParsedReserve",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L178",
+ "community": 16,
+ "norm_label": "parsedreserve",
+ "id": "excel_import_import_excel_parsedreserve"
+ },
+ {
+ "label": "ParsedPostConfig",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L185",
+ "community": 16,
+ "norm_label": "parsedpostconfig",
+ "id": "excel_import_import_excel_parsedpostconfig"
+ },
+ {
+ "label": "ParsedPostConditions",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L192",
+ "community": 16,
+ "norm_label": "parsedpostconditions",
+ "id": "excel_import_import_excel_parsedpostconditions"
+ },
+ {
+ "label": "ImportStats",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L198",
+ "community": 16,
+ "norm_label": "importstats",
+ "id": "excel_import_import_excel_importstats"
+ },
+ {
+ "label": "parse_filename_date()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L224",
+ "community": 21,
+ "norm_label": "parse_filename_date()",
+ "id": "excel_import_import_excel_parse_filename_date"
+ },
+ {
+ "label": "map_role()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L236",
+ "community": 21,
+ "norm_label": "map_role()",
+ "id": "excel_import_import_excel_map_role"
+ },
+ {
+ "label": "map_building_alias()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L241",
+ "community": 21,
+ "norm_label": "map_building_alias()",
+ "id": "excel_import_import_excel_map_building_alias"
+ },
+ {
+ "label": "parse_members_sheet()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L265",
+ "community": 21,
+ "norm_label": "parse_members_sheet()",
+ "id": "excel_import_import_excel_parse_members_sheet"
+ },
+ {
+ "label": "parse_assignments_sheet()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L337",
+ "community": 21,
+ "norm_label": "parse_assignments_sheet()",
+ "id": "excel_import_import_excel_parse_assignments_sheet"
+ },
+ {
+ "label": "parse_reserves_sheet()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L445",
+ "community": 21,
+ "norm_label": "parse_reserves_sheet()",
+ "id": "excel_import_import_excel_parse_reserves_sheet"
+ },
+ {
+ "label": "parse_posts_sheet_config()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L489",
+ "community": 21,
+ "norm_label": "parse_posts_sheet_config()",
+ "id": "excel_import_import_excel_parse_posts_sheet_config"
+ },
+ {
+ "label": "parse_posts_sheet_conditions()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L534",
+ "community": 21,
+ "norm_label": "parse_posts_sheet_conditions()",
+ "id": "excel_import_import_excel_parse_posts_sheet_conditions"
+ },
+ {
+ "label": "build_group_structure()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L570",
+ "community": 21,
+ "norm_label": "build_group_structure()",
+ "id": "excel_import_import_excel_build_group_structure"
+ },
+ {
+ "label": "compute_building_group_structure()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L592",
+ "community": 21,
+ "norm_label": "compute_building_group_structure()",
+ "id": "excel_import_import_excel_compute_building_group_structure"
+ },
+ {
+ "label": "infer_building_level()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L677",
+ "community": 21,
+ "norm_label": "infer_building_level()",
+ "id": "excel_import_import_excel_infer_building_level"
+ },
+ {
+ "label": "create_building_with_groups_and_positions()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L719",
+ "community": 21,
+ "norm_label": "create_building_with_groups_and_positions()",
+ "id": "excel_import_import_excel_create_building_with_groups_and_positions"
+ },
+ {
+ "label": "import_file()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L776",
+ "community": 21,
+ "norm_label": "import_file()",
+ "id": "excel_import_import_excel_import_file"
+ },
+ {
+ "label": "collect_xlsm_files()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L1146",
+ "community": 42,
+ "norm_label": "collect_xlsm_files()",
+ "id": "excel_import_import_excel_collect_xlsm_files"
+ },
+ {
+ "label": "Excel import script for Raid Shadow Legends Siege Assignment Web App. Imports h",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L1",
+ "community": 21,
+ "norm_label": "excel import script for raid shadow legends siege assignment web app. imports h",
+ "id": "excel_import_import_excel_rationale_1"
+ },
+ {
+ "label": "Extract the siege date from a filename like clan_siege_MM_DD_YYYY.xlsm.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L225",
+ "community": 21,
+ "norm_label": "extract the siege date from a filename like clan_siege_mm_dd_yyyy.xlsm.",
+ "id": "excel_import_import_excel_rationale_225"
+ },
+ {
+ "label": "Map a display role string to its enum value.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L237",
+ "community": 21,
+ "norm_label": "map a display role string to its enum value.",
+ "id": "excel_import_import_excel_rationale_237"
+ },
+ {
+ "label": "Map a raw building type string to its canonical enum value and optional building",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L242",
+ "community": 21,
+ "norm_label": "map a raw building type string to its canonical enum value and optional building",
+ "id": "excel_import_import_excel_rationale_242"
+ },
+ {
+ "label": "Parse the 'Members' worksheet. Expected columns: A: name, B: level (i",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L266",
+ "community": 21,
+ "norm_label": "parse the 'members' worksheet. expected columns: a: name, b: level (i",
+ "id": "excel_import_import_excel_rationale_266"
+ },
+ {
+ "label": "Parse the 'Assignments' worksheet in its visual grid format. Layout:",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L338",
+ "community": 21,
+ "norm_label": "parse the 'assignments' worksheet in its visual grid format. layout:",
+ "id": "excel_import_import_excel_rationale_338"
+ },
+ {
+ "label": "Parse the 'Reserves' worksheet. Expected columns: A: member_name, B:",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L446",
+ "community": 21,
+ "norm_label": "parse the 'reserves' worksheet. expected columns: a: member_name, b:",
+ "id": "excel_import_import_excel_rationale_446"
+ },
+ {
+ "label": "Parse post priority and descriptions from the Posts sheet, rows 2\u201317, columns B\u2013",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L490",
+ "community": 21,
+ "norm_label": "parse post priority and descriptions from the posts sheet, rows 2\u201317, columns b\u2013",
+ "id": "excel_import_import_excel_rationale_490"
+ },
+ {
+ "label": "Parse post active conditions from the Posts sheet, rows 34\u201351, columns D\u2013F.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L535",
+ "community": 21,
+ "norm_label": "parse post active conditions from the posts sheet, rows 34\u201351, columns d\u2013f.",
+ "id": "excel_import_import_excel_rationale_535"
+ },
+ {
+ "label": "Return a list of slot_counts for each group of the given building type. e.g",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L571",
+ "community": 21,
+ "norm_label": "return a list of slot_counts for each group of the given building type. e.g",
+ "id": "excel_import_import_excel_rationale_571"
+ },
+ {
+ "label": "Scan the given list of ParsedAssignments and return {group_number: slot_count}",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L597",
+ "community": 21,
+ "norm_label": "scan the given list of parsedassignments and return {group_number: slot_count}",
+ "id": "excel_import_import_excel_rationale_597"
+ },
+ {
+ "label": "Sum all slot counts in group_structure and look up the level for that building t",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L678",
+ "community": 21,
+ "norm_label": "sum all slot counts in group_structure and look up the level for that building t",
+ "id": "excel_import_import_excel_rationale_678"
+ },
+ {
+ "label": "Return (member, created). Looks up by name (case-insensitive). Creates if no",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L691",
+ "community": 21,
+ "norm_label": "return (member, created). looks up by name (case-insensitive). creates if no",
+ "id": "excel_import_import_excel_rationale_691"
+ },
+ {
+ "label": "Create a Building, its BuildingGroups, and their Positions. Uses the provid",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L727",
+ "community": 21,
+ "norm_label": "create a building, its buildinggroups, and their positions. uses the provid",
+ "id": "excel_import_import_excel_rationale_727"
+ },
+ {
+ "label": "Import a single .xlsm file. Returns ImportStats.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L781",
+ "community": 21,
+ "norm_label": "import a single .xlsm file. returns importstats.",
+ "id": "excel_import_import_excel_rationale_781"
+ },
+ {
+ "label": "Import a list of .xlsm files into the database.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L1073",
+ "community": 21,
+ "norm_label": "import a list of .xlsm files into the database.",
+ "id": "excel_import_import_excel_rationale_1073"
+ },
+ {
+ "label": "Return a sorted list of .xlsm files from a file path or directory.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L1147",
+ "community": 42,
+ "norm_label": "return a sorted list of .xlsm files from a file path or directory.",
+ "id": "excel_import_import_excel_rationale_1147"
+ },
+ {
+ "label": "test_import_excel.py",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L1",
+ "community": 28,
+ "norm_label": "test_import_excel.py",
+ "id": "scripts_excel_import_tests_test_import_excel_py"
+ },
+ {
+ "label": "test_parse_filename()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L28",
+ "community": 85,
+ "norm_label": "test_parse_filename()",
+ "id": "tests_test_import_excel_test_parse_filename"
+ },
+ {
+ "label": "test_parse_filename_with_path_prefix()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L34",
+ "community": 86,
+ "norm_label": "test_parse_filename_with_path_prefix()",
+ "id": "tests_test_import_excel_test_parse_filename_with_path_prefix"
+ },
+ {
+ "label": "test_parse_filename_invalid_random()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L51",
+ "community": 73,
+ "norm_label": "test_parse_filename_invalid_random()",
+ "id": "tests_test_import_excel_test_parse_filename_invalid_random"
+ },
+ {
+ "label": "test_parse_filename_invalid_impossible_date()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L57",
+ "community": 28,
+ "norm_label": "test_parse_filename_invalid_impossible_date()",
+ "id": "tests_test_import_excel_test_parse_filename_invalid_impossible_date"
+ },
+ {
+ "label": "test_role_mapping_heavy_hitter()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L68",
+ "community": 28,
+ "norm_label": "test_role_mapping_heavy_hitter()",
+ "id": "tests_test_import_excel_test_role_mapping_heavy_hitter"
+ },
+ {
+ "label": "test_role_mapping_advanced()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L72",
+ "community": 28,
+ "norm_label": "test_role_mapping_advanced()",
+ "id": "tests_test_import_excel_test_role_mapping_advanced"
+ },
+ {
+ "label": "test_role_mapping_medium()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L76",
+ "community": 28,
+ "norm_label": "test_role_mapping_medium()",
+ "id": "tests_test_import_excel_test_role_mapping_medium"
+ },
+ {
+ "label": "test_role_mapping_novice()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L80",
+ "community": 28,
+ "norm_label": "test_role_mapping_novice()",
+ "id": "tests_test_import_excel_test_role_mapping_novice"
+ },
+ {
+ "label": "test_role_mapping_unknown_returns_none()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L84",
+ "community": 28,
+ "norm_label": "test_role_mapping_unknown_returns_none()",
+ "id": "tests_test_import_excel_test_role_mapping_unknown_returns_none"
+ },
+ {
+ "label": "test_building_alias_stronghold()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L93",
+ "community": 28,
+ "norm_label": "test_building_alias_stronghold()",
+ "id": "tests_test_import_excel_test_building_alias_stronghold"
+ },
+ {
+ "label": "test_building_alias_mana_shrine_full()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L97",
+ "community": 28,
+ "norm_label": "test_building_alias_mana_shrine_full()",
+ "id": "tests_test_import_excel_test_building_alias_mana_shrine_full"
+ },
+ {
+ "label": "test_building_alias_mana_short()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L101",
+ "community": 28,
+ "norm_label": "test_building_alias_mana_short()",
+ "id": "tests_test_import_excel_test_building_alias_mana_short"
+ },
+ {
+ "label": "test_building_alias_magic_short()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L109",
+ "community": 28,
+ "norm_label": "test_building_alias_magic_short()",
+ "id": "tests_test_import_excel_test_building_alias_magic_short"
+ },
+ {
+ "label": "test_building_alias_defense_tower_full()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L113",
+ "community": 28,
+ "norm_label": "test_building_alias_defense_tower_full()",
+ "id": "tests_test_import_excel_test_building_alias_defense_tower_full"
+ },
+ {
+ "label": "test_building_alias_defense_short()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L117",
+ "community": 28,
+ "norm_label": "test_building_alias_defense_short()",
+ "id": "tests_test_import_excel_test_building_alias_defense_short"
+ },
+ {
+ "label": "test_building_alias_post()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L121",
+ "community": 28,
+ "norm_label": "test_building_alias_post()",
+ "id": "tests_test_import_excel_test_building_alias_post"
+ },
+ {
+ "label": "test_building_alias_unknown_returns_none()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L125",
+ "community": 28,
+ "norm_label": "test_building_alias_unknown_returns_none()",
+ "id": "tests_test_import_excel_test_building_alias_unknown_returns_none"
+ },
+ {
+ "label": "_make_worksheet()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L134",
+ "community": 48,
+ "norm_label": "_make_worksheet()",
+ "id": "tests_test_import_excel_make_worksheet"
+ },
+ {
+ "label": "test_parse_members_sheet_basic()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L141",
+ "community": 48,
+ "norm_label": "test_parse_members_sheet_basic()",
+ "id": "tests_test_import_excel_test_parse_members_sheet_basic"
+ },
+ {
+ "label": "test_parse_members_sheet_skips_empty_rows()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L169",
+ "community": 48,
+ "norm_label": "test_parse_members_sheet_skips_empty_rows()",
+ "id": "tests_test_import_excel_test_parse_members_sheet_skips_empty_rows"
+ },
+ {
+ "label": "test_parse_members_sheet_strips_whitespace()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L183",
+ "community": 48,
+ "norm_label": "test_parse_members_sheet_strips_whitespace()",
+ "id": "tests_test_import_excel_test_parse_members_sheet_strips_whitespace"
+ },
+ {
+ "label": "test_parse_members_sheet_post_preferences()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L198",
+ "community": 48,
+ "norm_label": "test_parse_members_sheet_post_preferences()",
+ "id": "tests_test_import_excel_test_parse_members_sheet_post_preferences"
+ },
+ {
+ "label": "_make_assignments_worksheet()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L237",
+ "community": 58,
+ "norm_label": "_make_assignments_worksheet()",
+ "id": "tests_test_import_excel_make_assignments_worksheet"
+ },
+ {
+ "label": "test_parse_assignments_sheet_member_assignment()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L252",
+ "community": 58,
+ "norm_label": "test_parse_assignments_sheet_member_assignment()",
+ "id": "tests_test_import_excel_test_parse_assignments_sheet_member_assignment"
+ },
+ {
+ "label": "test_parse_assignments_sheet_skips_unknown_building_type()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L288",
+ "community": 58,
+ "norm_label": "test_parse_assignments_sheet_skips_unknown_building_type()",
+ "id": "tests_test_import_excel_test_parse_assignments_sheet_skips_unknown_building_type"
+ },
+ {
+ "label": "test_parse_assignments_sheet_skips_incomplete_rows()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L303",
+ "community": 58,
+ "norm_label": "test_parse_assignments_sheet_skips_incomplete_rows()",
+ "id": "tests_test_import_excel_test_parse_assignments_sheet_skips_incomplete_rows"
+ },
+ {
+ "label": "test_parse_assignments_sheet_empty_value_is_none()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L315",
+ "community": 58,
+ "norm_label": "test_parse_assignments_sheet_empty_value_is_none()",
+ "id": "tests_test_import_excel_test_parse_assignments_sheet_empty_value_is_none"
+ },
+ {
+ "label": "test_parse_reserves_sheet_basic()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L331",
+ "community": 48,
+ "norm_label": "test_parse_reserves_sheet_basic()",
+ "id": "tests_test_import_excel_test_parse_reserves_sheet_basic"
+ },
+ {
+ "label": "test_parse_reserves_sheet_skips_empty_rows()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L354",
+ "community": 48,
+ "norm_label": "test_parse_reserves_sheet_skips_empty_rows()",
+ "id": "tests_test_import_excel_test_parse_reserves_sheet_skips_empty_rows"
+ },
+ {
+ "label": "test_parse_reserves_sheet_invalid_attack_day_ignored()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L366",
+ "community": 48,
+ "norm_label": "test_parse_reserves_sheet_invalid_attack_day_ignored()",
+ "id": "tests_test_import_excel_test_parse_reserves_sheet_invalid_attack_day_ignored"
+ },
+ {
+ "label": "test_parse_reserves_sheet_case_insensitive_yes_no()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L372",
+ "community": 48,
+ "norm_label": "test_parse_reserves_sheet_case_insensitive_yes_no()",
+ "id": "tests_test_import_excel_test_parse_reserves_sheet_case_insensitive_yes_no"
+ },
+ {
+ "label": "test_build_group_structure_stronghold()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L389",
+ "community": 28,
+ "norm_label": "test_build_group_structure_stronghold()",
+ "id": "tests_test_import_excel_test_build_group_structure_stronghold"
+ },
+ {
+ "label": "test_build_group_structure_mana_shrine()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L395",
+ "community": 87,
+ "norm_label": "test_build_group_structure_mana_shrine()",
+ "id": "tests_test_import_excel_test_build_group_structure_mana_shrine"
+ },
+ {
+ "label": "test_build_group_structure_magic_tower()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L401",
+ "community": 94,
+ "norm_label": "test_build_group_structure_magic_tower()",
+ "id": "tests_test_import_excel_test_build_group_structure_magic_tower"
+ },
+ {
+ "label": "test_build_group_structure_defense_tower()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L407",
+ "community": 88,
+ "norm_label": "test_build_group_structure_defense_tower()",
+ "id": "tests_test_import_excel_test_build_group_structure_defense_tower"
+ },
+ {
+ "label": "test_build_group_structure_post()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L413",
+ "community": 95,
+ "norm_label": "test_build_group_structure_post()",
+ "id": "tests_test_import_excel_test_build_group_structure_post"
+ },
+ {
+ "label": "test_compute_building_group_structure_basic()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L424",
+ "community": 67,
+ "norm_label": "test_compute_building_group_structure_basic()",
+ "id": "tests_test_import_excel_test_compute_building_group_structure_basic"
+ },
+ {
+ "label": "test_compute_building_group_structure_post_no_inflation()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L472",
+ "community": 89,
+ "norm_label": "test_compute_building_group_structure_post_no_inflation()",
+ "id": "tests_test_import_excel_test_compute_building_group_structure_post_no_inflation"
+ },
+ {
+ "label": "test_compute_building_group_structure_filters_by_building_number()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L485",
+ "community": 28,
+ "norm_label": "test_compute_building_group_structure_filters_by_building_number()",
+ "id": "tests_test_import_excel_test_compute_building_group_structure_filters_by_building_number"
+ },
+ {
+ "label": "test_compute_building_group_structure_mana_shrine_level2()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L540",
+ "community": 72,
+ "norm_label": "test_compute_building_group_structure_mana_shrine_level2()",
+ "id": "tests_test_import_excel_test_compute_building_group_structure_mana_shrine_level2"
+ },
+ {
+ "label": "test_compute_building_group_structure_magic_tower_level3()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L575",
+ "community": 71,
+ "norm_label": "test_compute_building_group_structure_magic_tower_level3()",
+ "id": "tests_test_import_excel_test_compute_building_group_structure_magic_tower_level3"
+ },
+ {
+ "label": "test_infer_building_level_stronghold_level1()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L615",
+ "community": 97,
+ "norm_label": "test_infer_building_level_stronghold_level1()",
+ "id": "tests_test_import_excel_test_infer_building_level_stronghold_level1"
+ },
+ {
+ "label": "test_infer_building_level_mana_shrine_level2()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L635",
+ "community": 90,
+ "norm_label": "test_infer_building_level_mana_shrine_level2()",
+ "id": "tests_test_import_excel_test_infer_building_level_mana_shrine_level2"
+ },
+ {
+ "label": "test_infer_building_level_magic_tower_level1()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L641",
+ "community": 91,
+ "norm_label": "test_infer_building_level_magic_tower_level1()",
+ "id": "tests_test_import_excel_test_infer_building_level_magic_tower_level1"
+ },
+ {
+ "label": "test_infer_building_level_defense_tower_level4()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L647",
+ "community": 92,
+ "norm_label": "test_infer_building_level_defense_tower_level4()",
+ "id": "tests_test_import_excel_test_infer_building_level_defense_tower_level4"
+ },
+ {
+ "label": "test_infer_building_level_post()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L653",
+ "community": 28,
+ "norm_label": "test_infer_building_level_post()",
+ "id": "tests_test_import_excel_test_infer_building_level_post"
+ },
+ {
+ "label": "test_infer_building_level_fallback()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L659",
+ "community": 96,
+ "norm_label": "test_infer_building_level_fallback()",
+ "id": "tests_test_import_excel_test_infer_building_level_fallback"
+ },
+ {
+ "label": "test_infer_building_level_unknown_building_type_fallback()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L665",
+ "community": 93,
+ "norm_label": "test_infer_building_level_unknown_building_type_fallback()",
+ "id": "tests_test_import_excel_test_infer_building_level_unknown_building_type_fallback"
+ },
+ {
+ "label": "_make_posts_config_worksheet()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L676",
+ "community": 59,
+ "norm_label": "_make_posts_config_worksheet()",
+ "id": "tests_test_import_excel_make_posts_config_worksheet"
+ },
+ {
+ "label": "test_parse_posts_sheet_config_basic()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L689",
+ "community": 59,
+ "norm_label": "test_parse_posts_sheet_config_basic()",
+ "id": "tests_test_import_excel_test_parse_posts_sheet_config_basic"
+ },
+ {
+ "label": "test_parse_posts_sheet_config_default_priority()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L708",
+ "community": 59,
+ "norm_label": "test_parse_posts_sheet_config_default_priority()",
+ "id": "tests_test_import_excel_test_parse_posts_sheet_config_default_priority"
+ },
+ {
+ "label": "test_parse_posts_sheet_config_multiple_sections()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L720",
+ "community": 59,
+ "norm_label": "test_parse_posts_sheet_config_multiple_sections()",
+ "id": "tests_test_import_excel_test_parse_posts_sheet_config_multiple_sections"
+ },
+ {
+ "label": "_make_posts_conditions_worksheet()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L745",
+ "community": 64,
+ "norm_label": "_make_posts_conditions_worksheet()",
+ "id": "tests_test_import_excel_make_posts_conditions_worksheet"
+ },
+ {
+ "label": "test_parse_posts_sheet_conditions_basic()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L757",
+ "community": 64,
+ "norm_label": "test_parse_posts_sheet_conditions_basic()",
+ "id": "tests_test_import_excel_test_parse_posts_sheet_conditions_basic"
+ },
+ {
+ "label": "test_parse_posts_sheet_conditions_skips_empty()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L777",
+ "community": 64,
+ "norm_label": "test_parse_posts_sheet_conditions_skips_empty()",
+ "id": "tests_test_import_excel_test_parse_posts_sheet_conditions_skips_empty"
+ },
+ {
+ "label": "_make_empty_worksheet()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L796",
+ "community": 56,
+ "norm_label": "_make_empty_worksheet()",
+ "id": "tests_test_import_excel_make_empty_worksheet"
+ },
+ {
+ "label": "_make_workbook_mock()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L803",
+ "community": 56,
+ "norm_label": "_make_workbook_mock()",
+ "id": "tests_test_import_excel_make_workbook_mock"
+ },
+ {
+ "label": "_make_session_mock()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L839",
+ "community": 56,
+ "norm_label": "_make_session_mock()",
+ "id": "tests_test_import_excel_make_session_mock"
+ },
+ {
+ "label": "test_import_file_section3c_skipped_when_not_most_recent()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L861",
+ "community": 56,
+ "norm_label": "test_import_file_section3c_skipped_when_not_most_recent()",
+ "id": "tests_test_import_excel_test_import_file_section3c_skipped_when_not_most_recent"
+ },
+ {
+ "label": "test_import_file_section3c_runs_when_most_recent_but_finds_nothing()",
+ "file_type": "code",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L880",
+ "community": 56,
+ "norm_label": "test_import_file_section3c_runs_when_most_recent_but_finds_nothing()",
+ "id": "tests_test_import_excel_test_import_file_section3c_runs_when_most_recent_but_finds_nothing"
+ },
+ {
+ "label": "Tests for scripts/import_excel.py parsing logic. All tests are pure-function te",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L1",
+ "community": 28,
+ "norm_label": "tests for scripts/import_excel.py parsing logic. all tests are pure-function te",
+ "id": "tests_test_import_excel_rationale_1"
+ },
+ {
+ "label": "Extracts a valid date from a canonical MM_DD_YYYY filename.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L29",
+ "community": 85,
+ "norm_label": "extracts a valid date from a canonical mm_dd_yyyy filename.",
+ "id": "tests_test_import_excel_rationale_29"
+ },
+ {
+ "label": "Extracts date even when the filename has a path prefix passed as string.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L35",
+ "community": 86,
+ "norm_label": "extracts date even when the filename has a path prefix passed as string.",
+ "id": "tests_test_import_excel_rationale_35"
+ },
+ {
+ "label": "Returns None for a filename that does not match the pattern.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L46",
+ "community": 73,
+ "norm_label": "returns none for a filename that does not match the pattern.",
+ "id": "tests_test_import_excel_rationale_46"
+ },
+ {
+ "label": "Returns None for a completely unrelated filename.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L52",
+ "community": 73,
+ "norm_label": "returns none for a completely unrelated filename.",
+ "id": "tests_test_import_excel_rationale_52"
+ },
+ {
+ "label": "Returns None when the extracted date components don't form a valid date.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L58",
+ "community": 28,
+ "norm_label": "returns none when the extracted date components don't form a valid date.",
+ "id": "tests_test_import_excel_rationale_58"
+ },
+ {
+ "label": "Create a mock openpyxl worksheet that yields the given rows.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L135",
+ "community": 48,
+ "norm_label": "create a mock openpyxl worksheet that yields the given rows.",
+ "id": "tests_test_import_excel_rationale_135"
+ },
+ {
+ "label": "Parses name, power_level bucket, and role from correct column positions.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L142",
+ "community": 48,
+ "norm_label": "parses name, power_level bucket, and role from correct column positions.",
+ "id": "tests_test_import_excel_rationale_142"
+ },
+ {
+ "label": "Column E is parsed as a slash-separated list of keyword strings.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L199",
+ "community": 48,
+ "norm_label": "column e is parsed as a slash-separated list of keyword strings.",
+ "id": "tests_test_import_excel_rationale_199"
+ },
+ {
+ "label": "Empty or None column E results in an empty list.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L212",
+ "community": 48,
+ "norm_label": "empty or none column e results in an empty list.",
+ "id": "tests_test_import_excel_rationale_212"
+ },
+ {
+ "label": "Build a mock assignments worksheet with the proper two header rows prepended.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L238",
+ "community": 58,
+ "norm_label": "build a mock assignments worksheet with the proper two header rows prepended.",
+ "id": "tests_test_import_excel_rationale_238"
+ },
+ {
+ "label": "Rows with a None group cell are skipped.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L304",
+ "community": 58,
+ "norm_label": "rows with a none group cell are skipped.",
+ "id": "tests_test_import_excel_rationale_304"
+ },
+ {
+ "label": "Whitespace-only cell values normalise to None.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L316",
+ "community": 58,
+ "norm_label": "whitespace-only cell values normalise to none.",
+ "id": "tests_test_import_excel_rationale_316"
+ },
+ {
+ "label": "Stronghold: 4 groups all with 3 slots.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L390",
+ "community": 28,
+ "norm_label": "stronghold: 4 groups all with 3 slots.",
+ "id": "tests_test_import_excel_rationale_390"
+ },
+ {
+ "label": "Mana shrine: 2 groups both with 3 slots.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L396",
+ "community": 87,
+ "norm_label": "mana shrine: 2 groups both with 3 slots.",
+ "id": "tests_test_import_excel_rationale_396"
+ },
+ {
+ "label": "Magic tower: 1 group with 2 slots.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L402",
+ "community": 94,
+ "norm_label": "magic tower: 1 group with 2 slots.",
+ "id": "tests_test_import_excel_rationale_402"
+ },
+ {
+ "label": "Defense tower: 1 group with 2 slots.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L408",
+ "community": 88,
+ "norm_label": "defense tower: 1 group with 2 slots.",
+ "id": "tests_test_import_excel_rationale_408"
+ },
+ {
+ "label": "Post: 1 group with 1 slot.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L414",
+ "community": 95,
+ "norm_label": "post: 1 group with 1 slot.",
+ "id": "tests_test_import_excel_rationale_414"
+ },
+ {
+ "label": "Mana shrine with 2 groups: position 3 is an empty trailing sheet column for grou",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L425",
+ "community": 67,
+ "norm_label": "mana shrine with 2 groups: position 3 is an empty trailing sheet column for grou",
+ "id": "tests_test_import_excel_rationale_425"
+ },
+ {
+ "label": "Magic tower (base_last_slots=2): position 3 is a trailing empty sheet column and",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L445",
+ "community": 71,
+ "norm_label": "magic tower (base_last_slots=2): position 3 is a trailing empty sheet column and",
+ "id": "tests_test_import_excel_rationale_445"
+ },
+ {
+ "label": "Magic tower at a higher level where position 3 is genuinely filled: slot_cou",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L459",
+ "community": 71,
+ "norm_label": "magic tower at a higher level where position 3 is genuinely filled: slot_cou",
+ "id": "tests_test_import_excel_rationale_459"
+ },
+ {
+ "label": "Post (base_last_slots=1): positions 2 and 3 are always empty trailing columns.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L473",
+ "community": 89,
+ "norm_label": "post (base_last_slots=1): positions 2 and 3 are always empty trailing columns.",
+ "id": "tests_test_import_excel_rationale_473"
+ },
+ {
+ "label": "Only assignments for the specified (type, number) pair are counted.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L486",
+ "community": 28,
+ "norm_label": "only assignments for the specified (type, number) pair are counted.",
+ "id": "tests_test_import_excel_rationale_486"
+ },
+ {
+ "label": "Stronghold level 2 = 16 total slots = 5 full groups (3 slots each) + 1 last grou",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L503",
+ "community": 67,
+ "norm_label": "stronghold level 2 = 16 total slots = 5 full groups (3 slots each) + 1 last grou",
+ "id": "tests_test_import_excel_rationale_503"
+ },
+ {
+ "label": "Stronghold level 4 = 22 total slots = 7 full groups + 1 last group with 1 slot.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L524",
+ "community": 67,
+ "norm_label": "stronghold level 4 = 22 total slots = 7 full groups + 1 last group with 1 slot.",
+ "id": "tests_test_import_excel_rationale_524"
+ },
+ {
+ "label": "Mana Shrine level 2 = 7 total slots = 2 full groups + 1 last group with 1 slot.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L541",
+ "community": 72,
+ "norm_label": "mana shrine level 2 = 7 total slots = 2 full groups + 1 last group with 1 slot.",
+ "id": "tests_test_import_excel_rationale_541"
+ },
+ {
+ "label": "Mana Shrine level 4 = 11 total slots = 3 full groups + 1 last group with 2 slots",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L558",
+ "community": 72,
+ "norm_label": "mana shrine level 4 = 11 total slots = 3 full groups + 1 last group with 2 slots",
+ "id": "tests_test_import_excel_rationale_558"
+ },
+ {
+ "label": "Magic Tower level 3 = 4 total slots = 1 full group (3 slots) + 1 last group with",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L576",
+ "community": 71,
+ "norm_label": "magic tower level 3 = 4 total slots = 1 full group (3 slots) + 1 last group with",
+ "id": "tests_test_import_excel_rationale_576"
+ },
+ {
+ "label": "Defense Tower level 4 = 6 total slots = 2 full groups \u00d7 3 slots each. At lev",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L593",
+ "community": 67,
+ "norm_label": "defense tower level 4 = 6 total slots = 2 full groups \u00d7 3 slots each. at lev",
+ "id": "tests_test_import_excel_rationale_593"
+ },
+ {
+ "label": "12 total positions in a stronghold -> level 1.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L616",
+ "community": 97,
+ "norm_label": "12 total positions in a stronghold -> level 1.",
+ "id": "tests_test_import_excel_rationale_616"
+ },
+ {
+ "label": "7 total positions in a mana shrine -> level 2.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L636",
+ "community": 90,
+ "norm_label": "7 total positions in a mana shrine -> level 2.",
+ "id": "tests_test_import_excel_rationale_636"
+ },
+ {
+ "label": "2 total positions in a magic tower -> level 1.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L642",
+ "community": 91,
+ "norm_label": "2 total positions in a magic tower -> level 1.",
+ "id": "tests_test_import_excel_rationale_642"
+ },
+ {
+ "label": "6 total positions in a defense tower -> level 4.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L648",
+ "community": 92,
+ "norm_label": "6 total positions in a defense tower -> level 4.",
+ "id": "tests_test_import_excel_rationale_648"
+ },
+ {
+ "label": "1 total position in a post -> level 1.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L654",
+ "community": 28,
+ "norm_label": "1 total position in a post -> level 1.",
+ "id": "tests_test_import_excel_rationale_654"
+ },
+ {
+ "label": "An unknown total position count falls back to level 1.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L660",
+ "community": 96,
+ "norm_label": "an unknown total position count falls back to level 1.",
+ "id": "tests_test_import_excel_rationale_660"
+ },
+ {
+ "label": "An unknown building type falls back to level 1.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L666",
+ "community": 93,
+ "norm_label": "an unknown building type falls back to level 1.",
+ "id": "tests_test_import_excel_rationale_666"
+ },
+ {
+ "label": "Create a mock worksheet for parse_posts_sheet_config. The function calls ws",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L677",
+ "community": 59,
+ "norm_label": "create a mock worksheet for parse_posts_sheet_config. the function calls ws",
+ "id": "tests_test_import_excel_rationale_677"
+ },
+ {
+ "label": "One high-priority section with two posts: both get priority=3 and correct descri",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L690",
+ "community": 59,
+ "norm_label": "one high-priority section with two posts: both get priority=3 and correct descri",
+ "id": "tests_test_import_excel_rationale_690"
+ },
+ {
+ "label": "Rows before any priority header default to priority=1 (Low).",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L709",
+ "community": 59,
+ "norm_label": "rows before any priority header default to priority=1 (low).",
+ "id": "tests_test_import_excel_rationale_709"
+ },
+ {
+ "label": "Posts fall into the correct priority section based on their position.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L721",
+ "community": 59,
+ "norm_label": "posts fall into the correct priority section based on their position.",
+ "id": "tests_test_import_excel_rationale_721"
+ },
+ {
+ "label": "Create a mock worksheet for parse_posts_sheet_conditions. The function enum",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L746",
+ "community": 64,
+ "norm_label": "create a mock worksheet for parse_posts_sheet_conditions. the function enum",
+ "id": "tests_test_import_excel_rationale_746"
+ },
+ {
+ "label": "Three post rows with 1\u20133 keywords each are parsed correctly.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L758",
+ "community": 64,
+ "norm_label": "three post rows with 1\u20133 keywords each are parsed correctly.",
+ "id": "tests_test_import_excel_rationale_758"
+ },
+ {
+ "label": "A row with all-None cells is not included in the result.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L778",
+ "community": 64,
+ "norm_label": "a row with all-none cells is not included in the result.",
+ "id": "tests_test_import_excel_rationale_778"
+ },
+ {
+ "label": "Worksheet that yields no rows.",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L797",
+ "community": 56,
+ "norm_label": "worksheet that yields no rows.",
+ "id": "tests_test_import_excel_rationale_797"
+ },
+ {
+ "label": "Minimal openpyxl workbook mock. Members / Assignments / Reserves are empty",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L804",
+ "community": 56,
+ "norm_label": "minimal openpyxl workbook mock. members / assignments / reserves are empty",
+ "id": "tests_test_import_excel_rationale_804"
+ },
+ {
+ "label": "AsyncMock session whose execute() returns a result whose scalars().all() is [].",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L840",
+ "community": 56,
+ "norm_label": "asyncmock session whose execute() returns a result whose scalars().all() is [].",
+ "id": "tests_test_import_excel_rationale_840"
+ },
+ {
+ "label": "When is_most_recent=False, section 3c must not run even if the Posts sheet p",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L862",
+ "community": 56,
+ "norm_label": "when is_most_recent=false, section 3c must not run even if the posts sheet p",
+ "id": "tests_test_import_excel_rationale_862"
+ },
+ {
+ "label": "When is_most_recent=True and the DB has no PostPriorityConfig rows yet, sect",
+ "file_type": "rationale",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L881",
+ "community": 56,
+ "norm_label": "when is_most_recent=true and the db has no postpriorityconfig rows yet, sect",
+ "id": "tests_test_import_excel_rationale_881"
+ },
+ {
+ "label": "run-graphify-dry-run.ps1",
+ "file_type": "code",
+ "source_file": "scripts/experiments/run-graphify-dry-run.ps1",
+ "source_location": "L1",
+ "community": 140,
+ "norm_label": "run-graphify-dry-run.ps1",
+ "id": "scripts_experiments_run_graphify_dry_run_ps1"
+ }
+ ],
+ "links": [
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/env.py",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_env_py",
+ "target": "alembic_env_run_migrations_offline"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/env.py",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_env_py",
+ "target": "alembic_env_do_run_migrations"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/env.py",
+ "source_location": "L42",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_env_py",
+ "target": "alembic_env_run_async_migrations"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/env.py",
+ "source_location": "L53",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_env_py",
+ "target": "alembic_env_run_migrations_online"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/env.py",
+ "source_location": "L54",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "alembic_env_run_migrations_online",
+ "target": "alembic_env_run_async_migrations"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0001_initial_schema.py",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0001_initial_schema_py",
+ "target": "versions_0001_initial_schema_upgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0001_initial_schema.py",
+ "source_location": "L273",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0001_initial_schema_py",
+ "target": "versions_0001_initial_schema_downgrade"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0001_initial_schema.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "versions_0001_initial_schema_rationale_1",
+ "target": "backend_alembic_versions_0001_initial_schema_py"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0002_add_preview_columns.py",
+ "source_location": "L18",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0002_add_preview_columns_py",
+ "target": "versions_0001_initial_schema_upgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0003_make_siege_date_nullable.py",
+ "source_location": "L18",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0003_make_siege_date_nullable_py",
+ "target": "versions_0001_initial_schema_upgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0004_add_post_priority_config.py",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0004_add_post_priority_config_py",
+ "target": "versions_0001_initial_schema_upgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0005_add_description_to_post_priority_config.py",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0005_add_description_to_post_priority_config_py",
+ "target": "versions_0001_initial_schema_upgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0006_power_level_and_drop_sort_value.py",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0006_power_level_and_drop_sort_value_py",
+ "target": "versions_0001_initial_schema_upgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0007_fix_group_number_max.py",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0007_fix_group_number_max_py",
+ "target": "versions_0001_initial_schema_upgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0008_add_matched_condition_id_to_position.py",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0008_add_matched_condition_id_to_position_py",
+ "target": "versions_0001_initial_schema_upgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0009_add_discord_id_to_member.py",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0009_add_discord_id_to_member_py",
+ "target": "versions_0001_initial_schema_upgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0010_add_last_seen_changelog_at_to_member.py",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0010_add_last_seen_changelog_at_to_member_py",
+ "target": "versions_0001_initial_schema_upgrade"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0010_add_last_seen_changelog_at_to_member.py",
+ "source_location": "L25",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "versions_0010_add_last_seen_changelog_at_to_member_rationale_25",
+ "target": "versions_0001_initial_schema_upgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0011_add_post_suggest_preview.py",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0011_add_post_suggest_preview_py",
+ "target": "versions_0001_initial_schema_upgrade"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0011_add_post_suggest_preview.py",
+ "source_location": "L23",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "versions_0011_add_post_suggest_preview_rationale_23",
+ "target": "versions_0001_initial_schema_upgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0002_add_preview_columns.py",
+ "source_location": "L25",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0002_add_preview_columns_py",
+ "target": "versions_0001_initial_schema_downgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0003_make_siege_date_nullable.py",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0003_make_siege_date_nullable_py",
+ "target": "versions_0001_initial_schema_downgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0004_add_post_priority_config.py",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0004_add_post_priority_config_py",
+ "target": "versions_0001_initial_schema_downgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0005_add_description_to_post_priority_config.py",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0005_add_description_to_post_priority_config_py",
+ "target": "versions_0001_initial_schema_downgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0006_power_level_and_drop_sort_value.py",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0006_power_level_and_drop_sort_value_py",
+ "target": "versions_0001_initial_schema_downgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0007_fix_group_number_max.py",
+ "source_location": "L29",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0007_fix_group_number_max_py",
+ "target": "versions_0001_initial_schema_downgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0008_add_matched_condition_id_to_position.py",
+ "source_location": "L32",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0008_add_matched_condition_id_to_position_py",
+ "target": "versions_0001_initial_schema_downgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0009_add_discord_id_to_member.py",
+ "source_location": "L29",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0009_add_discord_id_to_member_py",
+ "target": "versions_0001_initial_schema_downgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0010_add_last_seen_changelog_at_to_member.py",
+ "source_location": "L32",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0010_add_last_seen_changelog_at_to_member_py",
+ "target": "versions_0001_initial_schema_downgrade"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0010_add_last_seen_changelog_at_to_member.py",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "versions_0010_add_last_seen_changelog_at_to_member_rationale_33",
+ "target": "versions_0001_initial_schema_downgrade"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0011_add_post_suggest_preview.py",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_alembic_versions_0011_add_post_suggest_preview_py",
+ "target": "versions_0001_initial_schema_downgrade"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0011_add_post_suggest_preview.py",
+ "source_location": "L34",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "versions_0011_add_post_suggest_preview_rationale_34",
+ "target": "versions_0001_initial_schema_downgrade"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0002_add_preview_columns.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "versions_0002_add_preview_columns_rationale_1",
+ "target": "backend_alembic_versions_0002_add_preview_columns_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0003_make_siege_date_nullable.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "versions_0003_make_siege_date_nullable_rationale_1",
+ "target": "backend_alembic_versions_0003_make_siege_date_nullable_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0004_add_post_priority_config.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "versions_0004_add_post_priority_config_rationale_1",
+ "target": "backend_alembic_versions_0004_add_post_priority_config_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0005_add_description_to_post_priority_config.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "versions_0005_add_description_to_post_priority_config_rationale_1",
+ "target": "backend_alembic_versions_0005_add_description_to_post_priority_config_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0006_power_level_and_drop_sort_value.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "versions_0006_power_level_and_drop_sort_value_rationale_1",
+ "target": "backend_alembic_versions_0006_power_level_and_drop_sort_value_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0007_fix_group_number_max.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "versions_0007_fix_group_number_max_rationale_1",
+ "target": "backend_alembic_versions_0007_fix_group_number_max_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0008_add_matched_condition_id_to_position.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "versions_0008_add_matched_condition_id_to_position_rationale_1",
+ "target": "backend_alembic_versions_0008_add_matched_condition_id_to_position_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0009_add_discord_id_to_member.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "versions_0009_add_discord_id_to_member_rationale_1",
+ "target": "backend_alembic_versions_0009_add_discord_id_to_member_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0010_add_last_seen_changelog_at_to_member.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "versions_0010_add_last_seen_changelog_at_to_member_rationale_1",
+ "target": "backend_alembic_versions_0010_add_last_seen_changelog_at_to_member_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/alembic/versions/0011_add_post_suggest_preview.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "versions_0011_add_post_suggest_preview_rationale_1",
+ "target": "backend_alembic_versions_0011_add_post_suggest_preview_py"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/config.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_config_py",
+ "target": "app_config_settings"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/config.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_config_settings",
+ "target": "basesettings"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L212",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_config_testsettingsdefaults",
+ "target": "app_config_settings"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L212",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_config_testenvironmentrequired",
+ "target": "app_config_settings"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L212",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_config_testlifespanauthguard",
+ "target": "app_config_settings"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_config_endpoint.py",
+ "source_location": "L14",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "backend_tests_test_config_endpoint_py",
+ "target": "app_config_settings"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_config_endpoint.py",
+ "source_location": "L14",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_config_endpoint_teststartupsessionsecretguard",
+ "target": "app_config_settings"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/main.py",
+ "source_location": "L47",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_main_py",
+ "target": "app_main_lifespan"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/main.py",
+ "source_location": "L48",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_main_rationale_48",
+ "target": "app_main_lifespan"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/main.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_main_rationale_1",
+ "target": "bot_app_main_py"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/middleware.py",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_middleware_py",
+ "target": "app_middleware_requestloggingmiddleware"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/middleware.py",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_middleware_requestloggingmiddleware",
+ "target": "basehttpmiddleware"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/middleware.py",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_middleware_requestloggingmiddleware",
+ "target": "app_middleware_requestloggingmiddleware_dispatch"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/rate_limit.py",
+ "source_location": "L52",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_rate_limit_py",
+ "target": "app_rate_limit_get_client_ip"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/rate_limit.py",
+ "source_location": "L154",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_rate_limit_py",
+ "target": "app_rate_limit_rate_limit_key"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/rate_limit.py",
+ "source_location": "L179",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_rate_limit_py",
+ "target": "app_rate_limit_parse_retry_after_seconds"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/rate_limit.py",
+ "source_location": "L217",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_rate_limit_py",
+ "target": "app_rate_limit_rate_limit_exceeded_handler"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/rate_limit.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_rate_limit_rationale_1",
+ "target": "backend_app_rate_limit_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/rate_limit.py",
+ "source_location": "L176",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_rate_limit_rate_limit_key",
+ "target": "app_rate_limit_get_client_ip"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/rate_limit.py",
+ "source_location": "L53",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_rate_limit_rationale_53",
+ "target": "app_rate_limit_get_client_ip"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/rate_limit.py",
+ "source_location": "L155",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_rate_limit_rationale_155",
+ "target": "app_rate_limit_rate_limit_key"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/rate_limit.py",
+ "source_location": "L267",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_rate_limit_rate_limit_exceeded_handler",
+ "target": "app_rate_limit_parse_retry_after_seconds"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/rate_limit.py",
+ "source_location": "L180",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_rate_limit_rationale_180",
+ "target": "app_rate_limit_parse_retry_after_seconds"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/rate_limit.py",
+ "source_location": "L218",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_rate_limit_rationale_218",
+ "target": "app_rate_limit_rate_limit_exceeded_handler"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/telemetry.py",
+ "source_location": "L25",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_telemetry_py",
+ "target": "app_telemetry_configure_telemetry"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/telemetry.py",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_telemetry_rationale_32",
+ "target": "app_telemetry_configure_telemetry"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/telemetry.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_telemetry_rationale_1",
+ "target": "bot_app_telemetry_py"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/attack_day.py",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_attack_day_py",
+ "target": "api_sieges_previewattackday"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/attack_day.py",
+ "source_location": "L130",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_attack_day_py",
+ "target": "api_sieges_applyattackday"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/attack_day.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_attack_day_py",
+ "target": "api_types_attackdayassignment"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/attack_day.py",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_attack_day_py",
+ "target": "api_types_attackdaypreviewresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/attack_day.py",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_attack_day_py",
+ "target": "api_types_attackdayapplyresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/attack_day.py",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_attack_day_py",
+ "target": "services_autofill_now_utc"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/attack_day.py",
+ "source_location": "L114",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_attack_day_py",
+ "target": "services_attack_day_build_preview"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_auth_py",
+ "target": "api_auth_autherror"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L41",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_auth_py",
+ "target": "api_auth_exchange_code_for_token"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L59",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_auth_py",
+ "target": "api_auth_get_discord_user"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L70",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_auth_py",
+ "target": "api_auth_check_guild_membership"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L77",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_auth_py",
+ "target": "api_auth_login"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L112",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_auth_py",
+ "target": "api_auth_callback"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L203",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_auth_py",
+ "target": "api_auth_logout"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L210",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_auth_py",
+ "target": "api_auth_me"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L222",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_auth_py",
+ "target": "api_auth_error_redirect"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_auth_rationale_1",
+ "target": "backend_app_api_auth_py"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/dependencies/auth.py",
+ "source_location": "L23",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_auth_py",
+ "target": "dependencies_auth_authenticateduser"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/dependencies/auth.py",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_auth_py",
+ "target": "dependencies_auth_get_current_user"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/dependencies/auth.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "dependencies_auth_rationale_1",
+ "target": "backend_app_api_auth_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L28",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_auth_rationale_28",
+ "target": "api_auth_autherror"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L17",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_auth_autherror",
+ "target": "dependencies_auth_authenticateduser"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L18",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_auth_autherror",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L137",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_auth_callback",
+ "target": "api_auth_exchange_code_for_token"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L42",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_auth_rationale_42",
+ "target": "api_auth_exchange_code_for_token"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L144",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_auth_callback",
+ "target": "api_auth_get_discord_user"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L60",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_auth_rationale_60",
+ "target": "api_auth_get_discord_user"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L153",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_auth_callback",
+ "target": "api_auth_check_guild_membership"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L71",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_auth_rationale_71",
+ "target": "api_auth_check_guild_membership"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L78",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_auth_rationale_78",
+ "target": "api_auth_login"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L133",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_auth_callback",
+ "target": "api_auth_error_redirect"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L118",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_auth_rationale_118",
+ "target": "api_auth_callback"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L204",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_auth_rationale_204",
+ "target": "api_auth_logout"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L213",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_auth_rationale_213",
+ "target": "api_auth_me"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/auth.py",
+ "source_location": "L223",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_auth_rationale_223",
+ "target": "api_auth_error_redirect"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/autofill.py",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_autofill_py",
+ "target": "api_sieges_previewautofill"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/autofill.py",
+ "source_location": "L122",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_autofill_py",
+ "target": "api_sieges_applyautofill"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/autofill.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_autofill_py",
+ "target": "api_types_autofillassignment"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/autofill.py",
+ "source_location": "L10",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_autofill_py",
+ "target": "api_types_autofillpreviewresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/autofill.py",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_autofill_py",
+ "target": "api_types_autofillapplyresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/autofill.py",
+ "source_location": "L23",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_autofill_py",
+ "target": "services_autofill_now_utc"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/board.py",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_board_py",
+ "target": "api_board_getboard"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/board.py",
+ "source_location": "L120",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_board_py",
+ "target": "api_posts_updatepost"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/board.py",
+ "source_location": "L169",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_board_py",
+ "target": "api_board_bulk_update_positions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_board_py",
+ "target": "schemas_board_positionboardresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_board_py",
+ "target": "schemas_board_groupboardresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L25",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_board_py",
+ "target": "schemas_board_buildingboardresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_board_py",
+ "target": "api_types_boardresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L40",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_board_py",
+ "target": "schemas_board_positionupdate"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L47",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_board_py",
+ "target": "schemas_board_bulkpositionupdate"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/board.py",
+ "source_location": "L89",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_board_py",
+ "target": "services_board_get_siege_for_position"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/board.py",
+ "source_location": "L97",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_board_py",
+ "target": "services_board_validate_position_state"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/board.py",
+ "source_location": "L112",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_board_py",
+ "target": "services_board_validate_member_active"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/board.py",
+ "source_location": "L227",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_board_bulk_update_positions",
+ "target": "services_board_validate_position_state"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/board.py",
+ "source_location": "L172",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_board_rationale_172",
+ "target": "api_board_bulk_update_positions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L176",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_buildings_py",
+ "target": "api_buildings_list_buildings"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L181",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_buildings_py",
+ "target": "api_buildings_add_building"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L270",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_buildings_py",
+ "target": "api_sieges_updatebuilding"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L334",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_buildings_py",
+ "target": "api_sieges_deletebuilding"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L346",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_buildings_py",
+ "target": "api_buildings_add_group"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L397",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_buildings_py",
+ "target": "api_buildings_delete_group"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_buildings_py",
+ "target": "services_buildings_rebuild_groups_for_level"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L114",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_buildings_py",
+ "target": "services_buildings_get_building_type_config"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L128",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_buildings_py",
+ "target": "api_sieges_getbuildings"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L141",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_buildings_py",
+ "target": "services_buildings_require_planning_or_not_locked"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L150",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_buildings_py",
+ "target": "services_buildings_create_groups_and_positions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L178",
+ "weight": 1.0,
+ "source": "api_buildings_list_buildings",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L189",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_buildings_add_building",
+ "target": "services_buildings_get_building_type_config"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L242",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_buildings_add_building",
+ "target": "services_buildings_create_groups_and_positions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L356",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_buildings_add_group",
+ "target": "api_sieges_getbuildings"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L376",
+ "weight": 1.0,
+ "source": "api_buildings_add_group",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L407",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_buildings_delete_group",
+ "target": "api_sieges_getbuildings"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/changelog.py",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_changelog_py",
+ "target": "api_changelog_require_member_session"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/changelog.py",
+ "source_location": "L43",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_changelog_py",
+ "target": "api_changelog_get_changelog_status"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/changelog.py",
+ "source_location": "L69",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_changelog_py",
+ "target": "api_changelog_markchangelogseen"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/changelog.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_changelog_rationale_1",
+ "target": "backend_app_api_changelog_py"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/changelog.py",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_changelog_py",
+ "target": "schemas_changelog_changelogstatusresponse"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/changelog.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_changelog_rationale_1",
+ "target": "backend_app_api_changelog_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/changelog.py",
+ "source_location": "L61",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_changelog_get_changelog_status",
+ "target": "api_changelog_require_member_session"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/changelog.py",
+ "source_location": "L89",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_changelog_markchangelogseen",
+ "target": "api_changelog_require_member_session"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/changelog.py",
+ "source_location": "L25",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_changelog_rationale_25",
+ "target": "api_changelog_require_member_session"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/changelog.py",
+ "source_location": "L47",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_changelog_rationale_47",
+ "target": "api_changelog_get_changelog_status"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/api/changelog.py",
+ "source_location": "L65",
+ "weight": 1.0,
+ "source": "api_changelog_get_changelog_status",
+ "target": "schemas_changelog_changelogstatusresponse"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/changelog.py",
+ "source_location": "L73",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_changelog_rationale_73",
+ "target": "api_changelog_markchangelogseen"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/comparison.py",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_comparison_py",
+ "target": "api_comparison_compare_with_most_recent"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/comparison.py",
+ "source_location": "L31",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_comparison_py",
+ "target": "api_comparison_compare_with_specific"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/comparison.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_comparison_py",
+ "target": "api_types_positionkey"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/comparison.py",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_comparison_py",
+ "target": "api_types_memberdiff"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/comparison.py",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_comparison_py",
+ "target": "api_types_comparisonresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/comparison.py",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_comparison_py",
+ "target": "services_comparison_load_assignments"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/comparison.py",
+ "source_location": "L45",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_comparison_py",
+ "target": "services_comparison_load_member_names"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/comparison.py",
+ "source_location": "L52",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_comparison_py",
+ "target": "services_comparison_get_most_recent_completed"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/comparison.py",
+ "source_location": "L63",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_comparison_py",
+ "target": "api_sieges_comparesieges"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/config.py",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_config_py",
+ "target": "api_config_get_config"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/config.py",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_config_rationale_12",
+ "target": "api_config_get_config"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/config.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_config_rationale_1",
+ "target": "bot_app_config_py"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/discord_sync.py",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_discord_sync_py",
+ "target": "api_members_previewdiscordsync"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/discord_sync.py",
+ "source_location": "L152",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_discord_sync_py",
+ "target": "api_members_applydiscordsync"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/discord_sync.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_discord_sync_rationale_1",
+ "target": "backend_app_api_discord_sync_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/discord_sync.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_discord_sync_rationale_1",
+ "target": "backend_app_api_discord_sync_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/discord_sync.py",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_discord_sync_rationale_17",
+ "target": "api_members_previewdiscordsync"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/discord_sync.py",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_discord_sync_rationale_26",
+ "target": "api_members_applydiscordsync"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/health.py",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_health_py",
+ "target": "api_health_health"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L77",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_http_api_py",
+ "target": "api_health_health"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L78",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_rationale_78",
+ "target": "api_health_health"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/images.py",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_images_py",
+ "target": "api_types_generateimagesresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/images.py",
+ "source_location": "L31",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_images_py",
+ "target": "api_images_generate_images"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/images.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_images_rationale_1",
+ "target": "backend_app_api_images_py"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/images.py",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_generateimagesresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L37",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_notifyresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L44",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_notificationresultitem",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L53",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_notificationbatchresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/post_priority_config.py",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_post_priority_config_postpriorityresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/post_priority_config.py",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_post_priority_config_postpriorityupdate",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/siege_members.py",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_siege_members_siegemembercreate",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/attack_day.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_attackdayassignment",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/attack_day.py",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_attackdaypreviewresult",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/attack_day.py",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_attackdayapplyresult",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/autofill.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_autofillassignment",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/autofill.py",
+ "source_location": "L10",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_autofillpreviewresult",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/autofill.py",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_autofillapplyresult",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_board_positionboardresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_board_groupboardresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L25",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_board_buildingboardresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_boardresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L40",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_board_positionupdate",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L47",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_board_bulkpositionupdate",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_building_buildingcreate",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_building_buildingupdate",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_positionresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_buildinggroupresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_buildingresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L43",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_building_groupcreate",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/changelog.py",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_changelog_changelogstatusresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/common.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_common_errorresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/comparison.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_positionkey",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/comparison.py",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_memberdiff",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/comparison.py",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_comparisonresult",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_member_memberbase",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_member_memberupdate",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_member_memberpreferencesupdate",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L44",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_syncmatch",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L53",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_syncpreviewresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L59",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_member_syncapply",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_member_syncapplyresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post.py",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_post_postresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post.py",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_post_postupdate",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post.py",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_post_postconditionsupdate",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_condition.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_post_condition_postconditionresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_suggestions.py",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_postsuggestionentry",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_suggestions.py",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_postsuggestionpreviewresult",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_suggestions.py",
+ "source_location": "L79",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_post_suggestions_postsuggestionapplyrequest",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_suggestions.py",
+ "source_location": "L91",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_post_suggestions_staleentry",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_suggestions.py",
+ "source_location": "L116",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_postsuggestionapplyresult",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/siege.py",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_siege_siegecreate",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/siege.py",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_siege_siegeupdate",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/siege.py",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_siege_siegeresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/siege_member.py",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_siege_member_siegememberresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/siege_member.py",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_siege_member_siegememberupdate",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/siege_member.py",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_memberpreferencesummary",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/validation.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_validationissue",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/validation.py",
+ "source_location": "L10",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_validationresult",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/version.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_version_versionresponse",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L46",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_notifyrequest",
+ "target": "basemodel"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L51",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_postmessagerequest",
+ "target": "basemodel"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/images.py",
+ "source_location": "L73",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_images_generate_images",
+ "target": "api_types_generateimagesresponse"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/images.py",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_images_rationale_35",
+ "target": "api_images_generate_images"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/notifications.ts",
+ "source_location": "L34",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_notifications_py",
+ "target": "api_images_generate_images"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_images_generate_images"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/api/images.py",
+ "source_location": "L58",
+ "weight": 1.0,
+ "source": "api_images_generate_images",
+ "target": "services_image_gen_siegememberwithname"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/lifecycle.py",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_lifecycle_py",
+ "target": "api_sieges_activatesiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/lifecycle.py",
+ "source_location": "L61",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_lifecycle_py",
+ "target": "api_sieges_completesiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/lifecycle.py",
+ "source_location": "L85",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_lifecycle_py",
+ "target": "api_sieges_reopensiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/lifecycle.py",
+ "source_location": "L109",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_lifecycle_py",
+ "target": "api_sieges_clonesiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/members.py",
+ "source_location": "L18",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_members_py",
+ "target": "api_members_list_members"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/members.py",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_members_py",
+ "target": "api_members_createmember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/members.py",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_members_py",
+ "target": "api_members_get_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/members.py",
+ "source_location": "L62",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_members_py",
+ "target": "api_members_updatemember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/members.py",
+ "source_location": "L51",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_members_py",
+ "target": "api_members_delete_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/members.py",
+ "source_location": "L113",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_members_py",
+ "target": "api_members_getmemberpreferences"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/members.py",
+ "source_location": "L81",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_members_py",
+ "target": "services_members_deactivate_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/members.py",
+ "source_location": "L24",
+ "weight": 1.0,
+ "source": "api_members_list_members",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/bot_client.py",
+ "source_location": "L71",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_bot_client_botclient",
+ "target": "api_members_get_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/bot_client.py",
+ "source_location": "L78",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_members_get_member",
+ "target": "services_bot_client_botclient_make_client"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/bot_client.py",
+ "source_location": "L62",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_get_guild_member",
+ "target": "api_members_get_member"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/bot_client.py",
+ "source_location": "L72",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_bot_client_rationale_72",
+ "target": "api_members_get_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/members.py",
+ "source_location": "L63",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_members_updatemember",
+ "target": "api_members_get_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/members.py",
+ "source_location": "L82",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_members_deactivate_member",
+ "target": "api_members_get_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/members.py",
+ "source_location": "L116",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_members_getmemberpreferences",
+ "target": "api_members_get_member"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L61",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_discord_client_siegebot",
+ "target": "api_members_get_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L63",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_members_get_member",
+ "target": "app_discord_client_siegebot_require_guild"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L62",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_discord_client_rationale_62",
+ "target": "api_members_get_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L127",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_http_api_py",
+ "target": "api_members_get_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L131",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_members_get_member",
+ "target": "app_http_api_get_bot"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L130",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_rationale_130",
+ "target": "api_members_get_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L10",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "api_members_get_member"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "api_members_get_member"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "api_members_get_member"
+ },
+ {
+ "relation": "imports",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/notifications.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "context": "import",
+ "confidence_score": 1.0,
+ "source": "backend_app_api_notifications_py",
+ "target": "api_types_notifyresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L44",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_notifications_py",
+ "target": "api_types_notificationresultitem"
+ },
+ {
+ "relation": "imports",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/notifications.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "context": "import",
+ "confidence_score": 1.0,
+ "source": "backend_app_api_notifications_py",
+ "target": "api_types_notificationbatchresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L64",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_notifications_py",
+ "target": "api_notifications_send_dms"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/notifications.ts",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_notifications_py",
+ "target": "api_notifications_notifysiegemembers"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/notifications.ts",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_notifications_py",
+ "target": "api_notifications_getnotificationbatch"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/notifications.ts",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_notifications_py",
+ "target": "api_notifications_posttochannel"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_notifications_rationale_1",
+ "target": "backend_app_api_notifications_py"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/notifications.ts",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_notifications_py",
+ "target": "frontend_src_api_client_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/notifications.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_notifications_py",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/notifications.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_notifications_py",
+ "target": "api_types_generateimagesresponse"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "backend_app_api_notifications_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_notifications_rationale_65",
+ "target": "api_notifications_send_dms"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_discord_client_siegebot",
+ "target": "api_notifications_send_dms"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_notifications_send_dms",
+ "target": "app_discord_client_siegebot_require_guild"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L23",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_discord_client_rationale_23",
+ "target": "api_notifications_send_dms"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L1028",
+ "weight": 1.0,
+ "source": "tests_test_notifications_test_send_dms_sets_completed_status_even_when_bot_raises",
+ "target": "api_notifications_send_dms"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L142",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_notifications_rationale_142",
+ "target": "api_notifications_notifysiegemembers"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L310",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_notifications_rationale_310",
+ "target": "api_notifications_getnotificationbatch"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L371",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_notifications_rationale_371",
+ "target": "api_notifications_posttochannel"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/posts.py",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_posts_py",
+ "target": "api_posts_serialize_post"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/posts.py",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_posts_py",
+ "target": "api_posts_list_posts"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/posts.py",
+ "source_location": "L54",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_posts_py",
+ "target": "api_posts_updatepost"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/posts.py",
+ "source_location": "L76",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_posts_py",
+ "target": "api_posts_setpostconditions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/posts.py",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_posts_py",
+ "target": "services_posts_get_siege_or_404"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/posts.py",
+ "source_location": "L23",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_posts_py",
+ "target": "services_posts_get_post_for_siege_or_404"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/posts.py",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_posts_list_posts",
+ "target": "api_posts_serialize_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/posts.py",
+ "source_location": "L46",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_posts_updatepost",
+ "target": "api_posts_serialize_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/posts.py",
+ "source_location": "L60",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_posts_setpostconditions",
+ "target": "api_posts_serialize_post"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/posts.py",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_posts_rationale_13",
+ "target": "api_posts_serialize_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/posts.py",
+ "source_location": "L42",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_posts_list_posts",
+ "target": "services_posts_get_siege_or_404"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/posts.py",
+ "source_location": "L37",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_posts_rationale_37",
+ "target": "api_posts_list_posts"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/posts.py",
+ "source_location": "L51",
+ "weight": 1.0,
+ "source": "api_posts_list_posts",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/post_priority_config.py",
+ "source_location": "L7",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_post_priority_config_postpriorityresponse",
+ "target": "api_posts_postpriorityconfig"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/post_priority_config.py",
+ "source_location": "L7",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_post_priority_config_postpriorityupdate",
+ "target": "api_posts_postpriorityconfig"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/post_priority_config.py",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_posts_postpriorityconfig",
+ "target": "api_post_priority_config_list_post_priorities"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/api/post_priority_config.py",
+ "source_location": "L28",
+ "weight": 1.0,
+ "source": "api_post_priority_config_list_post_priorities",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L75",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_post_suggestions_py",
+ "target": "api_sieges_previewpostsuggestions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L335",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_post_suggestions_py",
+ "target": "api_sieges_applypostsuggestions"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/post_suggestions.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_post_suggestions_rationale_1",
+ "target": "backend_app_api_post_suggestions_py"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_suggestions.py",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_post_suggestions_py",
+ "target": "api_types_postsuggestionentry"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_suggestions.py",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_post_suggestions_py",
+ "target": "api_types_postsuggestionpreviewresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_suggestions.py",
+ "source_location": "L79",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_post_suggestions_py",
+ "target": "schemas_post_suggestions_postsuggestionapplyrequest"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_suggestions.py",
+ "source_location": "L91",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_post_suggestions_py",
+ "target": "schemas_post_suggestions_staleentry"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_suggestions.py",
+ "source_location": "L116",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_post_suggestions_py",
+ "target": "api_types_postsuggestionapplyresult"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_suggestions.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_post_suggestions_rationale_1",
+ "target": "backend_app_api_post_suggestions_py"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L70",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_post_suggestions_py",
+ "target": "services_autofill_now_utc"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L517",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_post_suggestions_py",
+ "target": "services_post_suggestions_get_target_position"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L537",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_post_suggestions_py",
+ "target": "services_post_suggestions_null_entry"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_post_suggestions_rationale_1",
+ "target": "backend_app_api_post_suggestions_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L418",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_post_suggestions_rationale_418",
+ "target": "backend_app_api_post_suggestions_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L489",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_post_suggestions_rationale_489",
+ "target": "backend_app_api_post_suggestions_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/post_suggestions.py",
+ "source_location": "L37",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_post_suggestions_rationale_37",
+ "target": "api_sieges_previewpostsuggestions"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/post_suggestions.py",
+ "source_location": "L62",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_post_suggestions_rationale_62",
+ "target": "api_sieges_applypostsuggestions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/reference.py",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_reference_py",
+ "target": "api_members_getpostconditions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/reference.py",
+ "source_location": "L18",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_reference_py",
+ "target": "api_sieges_getbuildings"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/reference.py",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_reference_py",
+ "target": "api_members_getmemberroles"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/sieges.py",
+ "source_location": "L49",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_sieges_py",
+ "target": "api_sieges_list_sieges"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/sieges.py",
+ "source_location": "L66",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_sieges_py",
+ "target": "api_sieges_createsiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/sieges.py",
+ "source_location": "L58",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_sieges_py",
+ "target": "api_sieges_get_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/sieges.py",
+ "source_location": "L144",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_sieges_py",
+ "target": "api_sieges_updatesiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/sieges.py",
+ "source_location": "L156",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_sieges_py",
+ "target": "api_sieges_delete_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/sieges.py",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_sieges_py",
+ "target": "services_sieges_scrolls_per_player"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/sieges.py",
+ "source_location": "L28",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_sieges_py",
+ "target": "services_sieges_compute_scroll_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/sieges.py",
+ "source_location": "L55",
+ "weight": 1.0,
+ "source": "api_sieges_list_sieges",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/sieges.py",
+ "source_location": "L145",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_sieges_updatesiege",
+ "target": "api_sieges_get_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/sieges.py",
+ "source_location": "L157",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_sieges_delete_siege",
+ "target": "api_sieges_get_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/siege_members.py",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "api_siege_members_siegemembercreate"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/siege_members.py",
+ "source_location": "L6",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_siege_members_siegemembercreate",
+ "target": "api_types_memberpreferencesummary"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/siege_members.py",
+ "source_location": "L6",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_siege_members_siegemembercreate",
+ "target": "schemas_siege_member_siegememberresponse"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/siege_members.py",
+ "source_location": "L6",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_siege_members_siegemembercreate",
+ "target": "schemas_siege_member_siegememberupdate"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/siege_members.py",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "api_siege_members_list_siege_members"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/siege_members.py",
+ "source_location": "L39",
+ "weight": 1.0,
+ "source": "api_siege_members_list_siege_members",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/validation.py",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_validation_py",
+ "target": "api_sieges_validatesiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/validation.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_validation_py",
+ "target": "api_types_validationissue"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/validation.py",
+ "source_location": "L10",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_api_validation_py",
+ "target": "api_types_validationresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/version.py",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_version",
+ "target": "api_version_read_backend_version"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/version.py",
+ "source_location": "L58",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_version_getversion",
+ "target": "api_version_read_backend_version"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/version.py",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_version_rationale_20",
+ "target": "api_version_read_backend_version"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/version.py",
+ "source_location": "L42",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_version",
+ "target": "api_version_fetch_bot_version"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/version.py",
+ "source_location": "L59",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_version_getversion",
+ "target": "api_version_fetch_bot_version"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/version.py",
+ "source_location": "L43",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_version_rationale_43",
+ "target": "api_version_fetch_bot_version"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/version.py",
+ "source_location": "L57",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_version_rationale_57",
+ "target": "api_version_getversion"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/db/base.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_db_base_py",
+ "target": "base"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/db/base.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "base",
+ "target": "declarativebase"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/db/seeds.py",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_db_seeds_py",
+ "target": "db_seeds_seed_post_conditions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/db/seeds.py",
+ "source_location": "L63",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_db_seeds_py",
+ "target": "db_seeds_seed_building_type_config"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/db/seeds.py",
+ "source_location": "L91",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_db_seeds_py",
+ "target": "db_seeds_seed_post_priority_config"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/db/seeds.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "db_seeds_rationale_1",
+ "target": "backend_app_db_seeds_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/db/seeds.py",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "db_seeds_rationale_8",
+ "target": "db_seeds_seed_post_conditions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L249",
+ "weight": 1.0,
+ "source": "app_main_main",
+ "target": "db_seeds_seed_post_conditions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L91",
+ "weight": 1.0,
+ "source": "tests_test_schema_test_post_condition_count",
+ "target": "db_seeds_seed_post_conditions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L65",
+ "weight": 1.0,
+ "source": "tests_test_seed_canonical_run_canonical_seed",
+ "target": "db_seeds_seed_post_conditions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L73",
+ "weight": 1.0,
+ "source": "tests_test_seed_demo_run_seed",
+ "target": "db_seeds_seed_post_conditions"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/db/seeds.py",
+ "source_location": "L64",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "db_seeds_rationale_64",
+ "target": "db_seeds_seed_building_type_config"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L250",
+ "weight": 1.0,
+ "source": "app_main_main",
+ "target": "db_seeds_seed_building_type_config"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L106",
+ "weight": 1.0,
+ "source": "tests_test_schema_test_building_type_config_count",
+ "target": "db_seeds_seed_building_type_config"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L66",
+ "weight": 1.0,
+ "source": "tests_test_seed_canonical_run_canonical_seed",
+ "target": "db_seeds_seed_building_type_config"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L74",
+ "weight": 1.0,
+ "source": "tests_test_seed_demo_run_seed",
+ "target": "db_seeds_seed_building_type_config"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/db/seeds.py",
+ "source_location": "L92",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "db_seeds_rationale_92",
+ "target": "db_seeds_seed_post_priority_config"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L251",
+ "weight": 1.0,
+ "source": "app_main_main",
+ "target": "db_seeds_seed_post_priority_config"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L67",
+ "weight": 1.0,
+ "source": "tests_test_seed_canonical_run_canonical_seed",
+ "target": "db_seeds_seed_post_priority_config"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L75",
+ "weight": 1.0,
+ "source": "tests_test_seed_demo_run_seed",
+ "target": "db_seeds_seed_post_priority_config"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L1085",
+ "weight": 1.0,
+ "source": "excel_import_import_excel_import_file",
+ "target": "db_seeds_seed_post_priority_config"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/db/session.py",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_db_session_py",
+ "target": "db_session_get_db"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/dependencies/auth.py",
+ "source_location": "L45",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "dependencies_auth_get_current_user",
+ "target": "dependencies_auth_authenticateduser"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/dependencies/auth.py",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "dependencies_auth_rationale_24",
+ "target": "dependencies_auth_authenticateduser"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/dependencies/auth.py",
+ "source_location": "L19",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "dependencies_auth_authenticateduser",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/dependencies/auth.py",
+ "source_location": "L37",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "dependencies_auth_rationale_37",
+ "target": "dependencies_auth_get_current_user"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/building.py",
+ "source_location": "L6",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_building",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/building_group.py",
+ "source_location": "L6",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "models_building_group_buildinggroup",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/building_type_config.py",
+ "source_location": "L4",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "backend_app_models_building_type_config_py",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/member.py",
+ "source_location": "L7",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_member",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/notification_batch.py",
+ "source_location": "L7",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationbatchresponse",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/notification_batch_result.py",
+ "source_location": "L7",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "backend_app_models_notification_batch_result_py",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/position.py",
+ "source_location": "L6",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "models_position_position",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/post.py",
+ "source_location": "L6",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_post",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/post_condition.py",
+ "source_location": "L6",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_postcondition",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/post_priority_config.py",
+ "source_location": "L4",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_posts_postpriorityconfig",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/siege.py",
+ "source_location": "L7",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_siege",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/siege_member.py",
+ "source_location": "L6",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_siegemember",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L26",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_canonical_testcanonicalseedpostconditions",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L26",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_canonical_testcanonicalseedbuildingtypeconfig",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L26",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_canonical_testcanonicalseedpostpriorityconfig",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L25",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemomembers",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L25",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemosiege",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L25",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemobuildingsandpositions",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L25",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemosiegemembers",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L35",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedmember",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L35",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedassignment",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L35",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedreserve",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L35",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconfig",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L35",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconditions",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L35",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_importstats",
+ "target": "base"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L14",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notifyresponse",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L14",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationresultitem",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L14",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationbatchresponse",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/building_group.py",
+ "source_location": "L9",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "models_building_group_buildinggroup",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/position.py",
+ "source_location": "L9",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "models_position_position",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L38",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedmember",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L38",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedassignment",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L38",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedreserve",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L38",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconfig",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L38",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconditions",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L38",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_importstats",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L66",
+ "weight": 1.0,
+ "source": "services_buildings_rebuild_groups_for_level",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L160",
+ "weight": 1.0,
+ "source": "services_buildings_create_groups_and_positions",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/lifecycle.py",
+ "source_location": "L164",
+ "weight": 1.0,
+ "source": "api_sieges_clonesiege",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/sieges.py",
+ "source_location": "L109",
+ "weight": 1.0,
+ "source": "api_sieges_createsiege",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L164",
+ "weight": 1.0,
+ "source": "scripts_seed_demo_seed_buildings_and_positions",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L405",
+ "weight": 1.0,
+ "source": "tests_test_autofill_test_apply_autofill_skips_broken_building_positions",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L126",
+ "weight": 1.0,
+ "source": "tests_test_sieges_seed_siege",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L751",
+ "weight": 1.0,
+ "source": "excel_import_import_excel_create_building_with_groups_and_positions",
+ "target": "models_building_group_buildinggroup"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/building_type_config.py",
+ "source_location": "L5",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "backend_app_models_building_type_config_py",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L27",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_canonical_testcanonicalseedpostconditions",
+ "target": "backend_app_models_building_type_config_py"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L27",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_canonical_testcanonicalseedbuildingtypeconfig",
+ "target": "backend_app_models_building_type_config_py"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L27",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_canonical_testcanonicalseedpostpriorityconfig",
+ "target": "backend_app_models_building_type_config_py"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/models/enums.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_enums_py",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/models/enums.py",
+ "source_location": "L10",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_enums_py",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/models/enums.py",
+ "source_location": "L18",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_enums_py",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/models/enums.py",
+ "source_location": "L25",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_enums_py",
+ "target": "models_enums_powerlevel"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/models/enums.py",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_enums_py",
+ "target": "models_enums_notificationbatchstatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L15",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notifyresponse",
+ "target": "models_enums_notificationbatchstatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L15",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationresultitem",
+ "target": "models_enums_notificationbatchstatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/notification_batch.py",
+ "source_location": "L8",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationbatchresponse",
+ "target": "models_enums_notificationbatchstatus"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/models/member.py",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_member_py",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_member_py",
+ "target": "schemas_member_memberbase"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_member_py",
+ "target": "schemas_member_membercreate"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_member_py",
+ "target": "schemas_member_memberupdate"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_member_py",
+ "target": "schemas_member_memberresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_member_py",
+ "target": "schemas_member_memberpreferencesupdate"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L44",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_member_py",
+ "target": "api_types_syncmatch"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L53",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_member_py",
+ "target": "api_types_syncpreviewresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L59",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_member_py",
+ "target": "schemas_member_syncapply"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_member_py",
+ "target": "schemas_member_syncapplyresponse"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L17",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notifyresponse",
+ "target": "backend_app_models_notification_batch_result_py"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L17",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationresultitem",
+ "target": "backend_app_models_notification_batch_result_py"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/notification_batch_result.py",
+ "source_location": "L10",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "backend_app_models_notification_batch_result_py",
+ "target": "api_types_notificationbatchresponse"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L270",
+ "weight": 1.0,
+ "source": "api_notifications_notifysiegemembers",
+ "target": "backend_app_models_notification_batch_result_py"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/models/position.py",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_position_py",
+ "target": "models_position_position"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L787",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "models_position_position"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L657",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "models_position_position"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L18",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notifyresponse",
+ "target": "models_position_position"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L18",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationresultitem",
+ "target": "models_position_position"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L18",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationbatchresponse",
+ "target": "models_position_position"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/position.py",
+ "source_location": "L10",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "models_position_position",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/position.py",
+ "source_location": "L11",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "models_position_position",
+ "target": "api_types_postcondition"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L29",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemomembers",
+ "target": "models_position_position"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L29",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemosiege",
+ "target": "models_position_position"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L29",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemobuildingsandpositions",
+ "target": "models_position_position"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L29",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemosiegemembers",
+ "target": "models_position_position"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L41",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedmember",
+ "target": "models_position_position"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L41",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedassignment",
+ "target": "models_position_position"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L41",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedreserve",
+ "target": "models_position_position"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L41",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconfig",
+ "target": "models_position_position"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L41",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconditions",
+ "target": "models_position_position"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L41",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_importstats",
+ "target": "models_position_position"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/models/post.py",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_post_py",
+ "target": "api_types_post"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post.py",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_post_py",
+ "target": "schemas_post_postresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post.py",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_post_py",
+ "target": "schemas_post_postupdate"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post.py",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_post_py",
+ "target": "schemas_post_postconditionsupdate"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/models/siege.py",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_siege_py",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/siege.py",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_siege_py",
+ "target": "schemas_siege_siegecreate"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/siege.py",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_siege_py",
+ "target": "schemas_siege_siegeupdate"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/siege.py",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_models_siege_py",
+ "target": "schemas_siege_siegeresponse"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_board_positionboardresponse",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_board_groupboardresponse",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_board_buildingboardresponse",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_board_positionupdate",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_board_bulkpositionupdate",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_building",
+ "target": "schemas_building_buildingcreate"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_building_buildingcreate",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L451",
+ "weight": 1.0,
+ "source": "tests_test_buildings_test_add_building_post_uses_priority_config",
+ "target": "schemas_building_buildingcreate"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_building",
+ "target": "schemas_building_buildingupdate"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_building_buildingupdate",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L151",
+ "weight": 1.0,
+ "source": "tests_test_buildings_test_update_building_unbreak_restores_groups",
+ "target": "schemas_building_buildingupdate"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L223",
+ "weight": 1.0,
+ "source": "tests_test_buildings_test_update_building_unbreak_restores_last_slot_count",
+ "target": "schemas_building_buildingupdate"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L307",
+ "weight": 1.0,
+ "source": "tests_test_buildings_test_update_building_break_then_unbreak_roundtrip",
+ "target": "schemas_building_buildingupdate"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L43",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_building",
+ "target": "schemas_building_groupcreate"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_building_groupcreate",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/changelog.py",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_changelog_rationale_9",
+ "target": "schemas_changelog_changelogstatusresponse"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/api/changelog.py",
+ "source_location": "L95",
+ "weight": 1.0,
+ "source": "api_changelog_markchangelogseen",
+ "target": "schemas_changelog_changelogstatusresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/common.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_schemas_common_py",
+ "target": "schemas_common_errorresponse"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_member_membercreate",
+ "target": "schemas_member_memberbase"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_member_memberresponse",
+ "target": "schemas_member_memberbase"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L5",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_member_memberbase",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L5",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_member_membercreate",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L5",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_member_memberupdate",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L5",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_member_memberresponse",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L5",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_member_memberpreferencesupdate",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L5",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_member_syncapply",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L464",
+ "weight": 1.0,
+ "source": "tests_test_discord_sync_test_service_apply_updates_discord_fields",
+ "target": "schemas_member_syncapply"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L490",
+ "weight": 1.0,
+ "source": "tests_test_discord_sync_test_service_apply_unknown_member_id_skipped",
+ "target": "schemas_member_syncapply"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L5",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_member_syncapplyresponse",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/discord_sync.py",
+ "source_location": "L158",
+ "weight": 1.0,
+ "source": "api_members_applydiscordsync",
+ "target": "schemas_member_syncapplyresponse"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L166",
+ "weight": 1.0,
+ "source": "tests_test_discord_sync_test_apply_updates_matched_members",
+ "target": "schemas_member_syncapplyresponse"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L187",
+ "weight": 1.0,
+ "source": "tests_test_discord_sync_test_apply_with_empty_list_returns_zero",
+ "target": "schemas_member_syncapplyresponse"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L203",
+ "weight": 1.0,
+ "source": "tests_test_discord_sync_test_apply_with_unknown_member_id_skips_gracefully",
+ "target": "schemas_member_syncapplyresponse"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/post.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_post_postresponse",
+ "target": "schemas_post_condition_postconditionresponse"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/post.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_post_postupdate",
+ "target": "schemas_post_condition_postconditionresponse"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/post.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_post_postconditionsupdate",
+ "target": "schemas_post_condition_postconditionresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_condition.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_postcondition",
+ "target": "schemas_post_condition_postconditionresponse"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/siege_member.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_siege_member_siegememberresponse",
+ "target": "schemas_post_condition_postconditionresponse"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/siege_member.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_siege_member_siegememberupdate",
+ "target": "schemas_post_condition_postconditionresponse"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/siege_member.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_memberpreferencesummary",
+ "target": "schemas_post_condition_postconditionresponse"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_suggestions.py",
+ "source_location": "L80",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_post_suggestions_rationale_80",
+ "target": "schemas_post_suggestions_postsuggestionapplyrequest"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L921",
+ "weight": 1.0,
+ "source": "tests_test_post_suggestions_apply",
+ "target": "schemas_post_suggestions_postsuggestionapplyrequest"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1170",
+ "weight": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_completed_siege_raises_400",
+ "target": "schemas_post_suggestions_postsuggestionapplyrequest"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L265",
+ "weight": 1.0,
+ "source": "tests_test_post_suggestions_integration_test_apply_persists_matched_condition_id_to_db",
+ "target": "schemas_post_suggestions_postsuggestionapplyrequest"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L294",
+ "weight": 1.0,
+ "source": "tests_test_post_suggestions_integration_test_apply_subset_leaves_unselected_positions_unchanged",
+ "target": "schemas_post_suggestions_postsuggestionapplyrequest"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L358",
+ "weight": 1.0,
+ "source": "tests_test_post_suggestions_integration_test_member_changed_stale_reason_on_concurrent_apply",
+ "target": "schemas_post_suggestions_postsuggestionapplyrequest"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_suggestions.py",
+ "source_location": "L92",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_post_suggestions_rationale_92",
+ "target": "schemas_post_suggestions_staleentry"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L454",
+ "weight": 1.0,
+ "source": "api_sieges_applypostsuggestions",
+ "target": "schemas_post_suggestions_staleentry"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_suggestions.py",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_post_suggestions_rationale_13",
+ "target": "api_types_postsuggestionentry"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_suggestions.py",
+ "source_location": "L66",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_post_suggestions_rationale_66",
+ "target": "api_types_postsuggestionpreviewresult"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/post_suggestions.py",
+ "source_location": "L117",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "schemas_post_suggestions_rationale_117",
+ "target": "api_types_postsuggestionapplyresult"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/siege.py",
+ "source_location": "L5",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_siege_siegecreate",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/siege.py",
+ "source_location": "L5",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_siege_siegeupdate",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/siege.py",
+ "source_location": "L5",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "schemas_siege_siegeresponse",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/siege_member.py",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "schemas_siege_member_siegememberresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/siege_member.py",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "schemas_siege_member_resolve_member_fields"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/siege_member.py",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "schemas_siege_member_siegememberupdate"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/version.py",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_version",
+ "target": "schemas_version_versionresponse"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/api/version.py",
+ "source_location": "L63",
+ "weight": 1.0,
+ "source": "api_version_getversion",
+ "target": "schemas_version_versionresponse"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/attack_day.py",
+ "source_location": "L72",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_sieges_previewattackday",
+ "target": "services_attack_day_build_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/attack_day.py",
+ "source_location": "L120",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_attack_day_build_preview",
+ "target": "services_autofill_now_utc"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/attack_day.py",
+ "source_location": "L145",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_sieges_applyattackday",
+ "target": "services_autofill_now_utc"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/autofill.py",
+ "source_location": "L111",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_sieges_previewautofill",
+ "target": "services_autofill_now_utc"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/autofill.py",
+ "source_location": "L136",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_sieges_applyautofill",
+ "target": "services_autofill_now_utc"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L324",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_sieges_previewpostsuggestions",
+ "target": "services_autofill_now_utc"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L385",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_sieges_applypostsuggestions",
+ "target": "services_autofill_now_utc"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L71",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_post_suggestions_rationale_71",
+ "target": "services_autofill_now_utc"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/board.py",
+ "source_location": "L151",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_posts_updatepost",
+ "target": "services_board_validate_position_state"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/board.py",
+ "source_location": "L98",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_board_rationale_98",
+ "target": "services_board_validate_position_state"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/board.py",
+ "source_location": "L154",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_posts_updatepost",
+ "target": "services_board_validate_member_active"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/board.py",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_board_rationale_16",
+ "target": "api_board_getboard"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/board.py",
+ "source_location": "L123",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_board_rationale_123",
+ "target": "api_posts_updatepost"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/bot_client.py",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_bot_client_botclient",
+ "target": "services_bot_client_botclient_make_client"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/bot_client.py",
+ "source_location": "L18",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_bot_client_botclient",
+ "target": "app_http_api_notify"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/bot_client.py",
+ "source_location": "L31",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_bot_client_botclient",
+ "target": "app_http_api_post_message"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/bot_client.py",
+ "source_location": "L44",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_bot_client_botclient",
+ "target": "app_http_api_post_image"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/bot_client.py",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_bot_client_rationale_1",
+ "target": "services_bot_client_botclient"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L54",
+ "weight": 1.0,
+ "source": "tests_test_bot_client_test_notify_returns_false_on_http_error",
+ "target": "services_bot_client_botclient"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L63",
+ "weight": 1.0,
+ "source": "tests_test_bot_client_test_post_message_returns_false_on_http_error",
+ "target": "services_bot_client_botclient"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L72",
+ "weight": 1.0,
+ "source": "tests_test_bot_client_test_post_image_returns_none_on_http_error",
+ "target": "services_bot_client_botclient"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L81",
+ "weight": 1.0,
+ "source": "tests_test_bot_client_test_get_members_returns_empty_on_http_error",
+ "target": "services_bot_client_botclient"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L91",
+ "weight": 1.0,
+ "source": "tests_test_bot_client_test_notify_returns_true_on_success",
+ "target": "services_bot_client_botclient"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L118",
+ "weight": 1.0,
+ "source": "tests_test_bot_client_test_get_member_returns_not_member",
+ "target": "services_bot_client_botclient"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L128",
+ "weight": 1.0,
+ "source": "tests_test_bot_client_test_get_member_raises_on_connection_error",
+ "target": "services_bot_client_botclient"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L146",
+ "weight": 1.0,
+ "source": "tests_test_bot_client_test_get_member_raises_on_503",
+ "target": "services_bot_client_botclient"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/bot_client.py",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_notify",
+ "target": "services_bot_client_botclient_make_client"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/bot_client.py",
+ "source_location": "L34",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_post_message",
+ "target": "services_bot_client_botclient_make_client"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/bot_client.py",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_bot_client_rationale_19",
+ "target": "app_http_api_notify"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/bot_client.py",
+ "source_location": "L32",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_bot_client_rationale_32",
+ "target": "app_http_api_post_message"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/bot_client.py",
+ "source_location": "L45",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_bot_client_rationale_45",
+ "target": "app_http_api_post_image"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L321",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_sieges_updatebuilding",
+ "target": "services_buildings_rebuild_groups_for_level"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L23",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_buildings_rationale_23",
+ "target": "services_buildings_rebuild_groups_for_level"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L31",
+ "weight": 1.0,
+ "source": "services_buildings_rebuild_groups_for_level",
+ "target": "services_building_capacity_get_team_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L45",
+ "weight": 1.0,
+ "source": "services_buildings_rebuild_groups_for_level",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L290",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_sieges_updatebuilding",
+ "target": "services_buildings_get_building_type_config"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L91",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_integration_py",
+ "target": "services_buildings_get_building_type_config"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L102",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_default_configs",
+ "target": "services_buildings_get_building_type_config"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L142",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_buildings_rationale_142",
+ "target": "services_buildings_require_planning_or_not_locked"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L156",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_buildings_rationale_156",
+ "target": "services_buildings_create_groups_and_positions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/building_capacity.py",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_services_building_capacity_py",
+ "target": "services_building_capacity_get_team_count"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/building_capacity.py",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_building_capacity_rationale_14",
+ "target": "services_building_capacity_get_team_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/sieges.py",
+ "source_location": "L46",
+ "weight": 1.0,
+ "source": "services_sieges_compute_scroll_count",
+ "target": "services_building_capacity_get_team_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/comparison.py",
+ "source_location": "L66",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_sieges_comparesieges",
+ "target": "services_comparison_load_assignments"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/comparison.py",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_comparison_rationale_14",
+ "target": "services_comparison_load_assignments"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L297",
+ "weight": 1.0,
+ "source": "tests_test_comparison_test_inactive_member_excluded_from_comparison",
+ "target": "services_comparison_load_assignments"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/comparison.py",
+ "source_location": "L70",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_sieges_comparesieges",
+ "target": "services_comparison_load_member_names"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L376",
+ "weight": 1.0,
+ "source": "tests_test_comparison_test_get_most_recent_completed_returns_none",
+ "target": "services_comparison_get_most_recent_completed"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/discord_sync.py",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_discord_sync_rationale_12",
+ "target": "api_members_previewdiscordsync"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/discord_sync.py",
+ "source_location": "L153",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_discord_sync_rationale_153",
+ "target": "api_members_applydiscordsync"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_services_image_gen_py",
+ "target": "services_image_gen_siegememberwithname"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L61",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_services_image_gen_py",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L233",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_services_image_gen_py",
+ "target": "services_image_gen_build_reserves_html"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L331",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_services_image_gen_py",
+ "target": "services_image_gen_render_html_to_png"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L350",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_services_image_gen_py",
+ "target": "services_image_gen_generate_assignments_image"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L360",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_services_image_gen_py",
+ "target": "services_image_gen_generate_reserves_image"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_image_gen_rationale_1",
+ "target": "backend_app_services_image_gen_py"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/images.py",
+ "source_location": "L16",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_generateimagesresponse",
+ "target": "services_image_gen_siegememberwithname"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L24",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notifyresponse",
+ "target": "services_image_gen_siegememberwithname"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L24",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationresultitem",
+ "target": "services_image_gen_siegememberwithname"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L24",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationbatchresponse",
+ "target": "services_image_gen_siegememberwithname"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L5",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "services_image_gen_siegememberwithname",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L5",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "services_image_gen_siegememberwithname",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L6",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "services_image_gen_siegememberwithname",
+ "target": "api_types_boardresponse"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L399",
+ "weight": 1.0,
+ "source": "api_notifications_posttochannel",
+ "target": "services_image_gen_siegememberwithname"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L75",
+ "weight": 1.0,
+ "source": "tests_test_auth_make_member",
+ "target": "services_image_gen_siegememberwithname"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L356",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_image_gen_generate_assignments_image",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L66",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_image_gen_rationale_66",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L90",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_contains_title",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L100",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_contains_building_type",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L110",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_reserve_cell",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L119",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_disabled_cell",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L125",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_empty_board",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L136",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_all_building_types_colored",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L237",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_group_header_present",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L248",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_group_header_before_members",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L265",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_single_row_per_group",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L297",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_buildings_side_by_side",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L321",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_heavy_hitter_color",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L334",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_no_role_map_fallback",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L345",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_role_color_on_span_not_background",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L416",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_role_colors_match_ui",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L450",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_no_level_in_header",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L463",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_broken_building_no_level",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L473",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_building_number_in_thead",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L505",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_post_flat_table",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L535",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_post_reserve_and_disabled",
+ "target": "services_image_gen_build_assignments_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L365",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_image_gen_generate_reserves_image",
+ "target": "services_image_gen_build_reserves_html"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L237",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_image_gen_rationale_237",
+ "target": "services_image_gen_build_reserves_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L151",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_reserves_html_contains_title",
+ "target": "services_image_gen_build_reserves_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L158",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_reserves_html_contains_member",
+ "target": "services_image_gen_build_reserves_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L358",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_reserves_html_day1_color",
+ "target": "services_image_gen_build_reserves_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L180",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_reserves_html_no_role_column",
+ "target": "services_image_gen_build_reserves_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L366",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_reserves_html_novice_color",
+ "target": "services_image_gen_build_reserves_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L383",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_reserves_html_fallback_color",
+ "target": "services_image_gen_build_reserves_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L433",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_build_reserves_html_role_colors_match_ui",
+ "target": "services_image_gen_build_reserves_html"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L357",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_image_gen_generate_assignments_image",
+ "target": "services_image_gen_render_html_to_png"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L366",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_image_gen_generate_reserves_image",
+ "target": "services_image_gen_render_html_to_png"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L332",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_image_gen_rationale_332",
+ "target": "services_image_gen_render_html_to_png"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L355",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_image_gen_rationale_355",
+ "target": "services_image_gen_generate_assignments_image"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L201",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_generate_assignments_image_calls_render",
+ "target": "services_image_gen_generate_assignments_image"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/image_gen.py",
+ "source_location": "L364",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_image_gen_rationale_364",
+ "target": "services_image_gen_generate_reserves_image"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L218",
+ "weight": 1.0,
+ "source": "tests_test_image_gen_test_generate_reserves_image_calls_render",
+ "target": "services_image_gen_generate_reserves_image"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/lifecycle.py",
+ "source_location": "L18",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_lifecycle_rationale_18",
+ "target": "api_sieges_activatesiege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/lifecycle.py",
+ "source_location": "L62",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_lifecycle_rationale_62",
+ "target": "api_sieges_completesiege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/lifecycle.py",
+ "source_location": "L86",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_lifecycle_rationale_86",
+ "target": "api_sieges_reopensiege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/lifecycle.py",
+ "source_location": "L110",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_lifecycle_rationale_110",
+ "target": "api_sieges_clonesiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L60",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_services_notification_message_py",
+ "target": "services_notification_message_positioninfo"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L74",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_services_notification_message_py",
+ "target": "services_notification_message_position_sort_key"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L84",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_services_notification_message_py",
+ "target": "services_notification_message_position_label"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L110",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_services_notification_message_py",
+ "target": "services_notification_message_positions_to_key_set"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L117",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_services_notification_message_py",
+ "target": "services_notification_message_positions_from_keys"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L126",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_services_notification_message_py",
+ "target": "services_notification_message_build_section"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L153",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_app_services_notification_message_py",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_notification_message_rationale_1",
+ "target": "backend_app_services_notification_message_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L61",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_notification_message_rationale_61",
+ "target": "services_notification_message_positioninfo"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L25",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notifyresponse",
+ "target": "services_notification_message_positioninfo"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L25",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationresultitem",
+ "target": "services_notification_message_positioninfo"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L25",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationbatchresponse",
+ "target": "services_notification_message_positioninfo"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L5",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "services_notification_message_positioninfo",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L214",
+ "weight": 1.0,
+ "source": "api_notifications_notifysiegemembers",
+ "target": "services_notification_message_positioninfo"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L32",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_stronghold_pos",
+ "target": "services_notification_message_positioninfo"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L41",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_defense_tower_pos",
+ "target": "services_notification_message_positioninfo"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L50",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_post_pos",
+ "target": "services_notification_message_positioninfo"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L75",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_notification_message_rationale_75",
+ "target": "services_notification_message_position_sort_key"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L142",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_notification_message_build_section",
+ "target": "services_notification_message_position_label"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L85",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_notification_message_rationale_85",
+ "target": "services_notification_message_position_label"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L196",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_notification_message_build_member_notification_message",
+ "target": "services_notification_message_positions_to_key_set"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L111",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_notification_message_rationale_111",
+ "target": "services_notification_message_positions_to_key_set"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L205",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_notification_message_build_member_notification_message",
+ "target": "services_notification_message_positions_from_keys"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L118",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_notification_message_rationale_118",
+ "target": "services_notification_message_positions_from_keys"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L213",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_notification_message_build_member_notification_message",
+ "target": "services_notification_message_build_section"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L131",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_notification_message_rationale_131",
+ "target": "services_notification_message_build_section"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/notification_message.py",
+ "source_location": "L161",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_notification_message_rationale_161",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L262",
+ "weight": 1.0,
+ "source": "api_notifications_notifysiegemembers",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L66",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_no_previous_siege_all_current_in_set_at",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L87",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_empty_sections_omitted_all_no_change",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L111",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_full_diff_three_sections",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L151",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_header_contains_siege_date_and_member_settings",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L171",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_none_fields_display_as_unknown",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L185",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_false_reserve_set_displays_no",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L204",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_single_building_type_omits_building_number",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L225",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_multiple_building_type_includes_building_number",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L245",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_post_always_uses_short_format",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L260",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_post_with_single_count_still_uses_short_format",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L282",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_section_order_no_change_then_remove_then_set_at",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L309",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_positions_sorted_within_section",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L343",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_no_change_section_has_header_and_plain_position_lines",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L367",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_remove_from_section_has_header_and_plain_position_lines",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L391",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_set_at_section_has_header_and_plain_position_lines",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L419",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_blank_line_between_no_change_and_remove_from",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L436",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_blank_line_between_remove_from_and_set_at",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L449",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_no_blank_line_when_only_one_section",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L471",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_blank_line_count_with_all_three_sections",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L494",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_all_three_section_headers_exact_format",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L510",
+ "weight": 1.0,
+ "source": "tests_test_notification_message_test_header_line_not_a_position_line",
+ "target": "services_notification_message_build_member_notification_message"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/posts.py",
+ "source_location": "L61",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_posts_updatepost",
+ "target": "services_posts_get_siege_or_404"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/posts.py",
+ "source_location": "L93",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_posts_setpostconditions",
+ "target": "services_posts_get_siege_or_404"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/posts.py",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_posts_updatepost",
+ "target": "services_posts_get_post_for_siege_or_404"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/posts.py",
+ "source_location": "L97",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_posts_setpostconditions",
+ "target": "services_posts_get_post_for_siege_or_404"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/posts.py",
+ "source_location": "L55",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_posts_rationale_55",
+ "target": "api_posts_updatepost"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/posts.py",
+ "source_location": "L79",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_posts_rationale_79",
+ "target": "api_posts_setpostconditions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L167",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_sieges_previewpostsuggestions",
+ "target": "services_post_suggestions_get_target_position"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L518",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_post_suggestions_rationale_518",
+ "target": "services_post_suggestions_get_target_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L170",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_sieges_previewpostsuggestions",
+ "target": "services_post_suggestions_null_entry"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L546",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_post_suggestions_rationale_546",
+ "target": "services_post_suggestions_null_entry"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L79",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_post_suggestions_rationale_79",
+ "target": "api_sieges_previewpostsuggestions"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L340",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_post_suggestions_rationale_340",
+ "target": "api_sieges_applypostsuggestions"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/sieges.py",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_sieges_rationale_20",
+ "target": "services_sieges_scrolls_per_player"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/autofill.py",
+ "source_location": "L77",
+ "weight": 1.0,
+ "source": "api_sieges_previewautofill",
+ "target": "services_sieges_scrolls_per_player"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/validation.py",
+ "source_location": "L43",
+ "weight": 1.0,
+ "source": "api_sieges_validatesiege",
+ "target": "services_sieges_scrolls_per_player"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/sieges.py",
+ "source_location": "L29",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "services_sieges_rationale_29",
+ "target": "services_sieges_compute_scroll_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/autofill.py",
+ "source_location": "L76",
+ "weight": 1.0,
+ "source": "api_sieges_previewautofill",
+ "target": "services_sieges_compute_scroll_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/validation.py",
+ "source_location": "L42",
+ "weight": 1.0,
+ "source": "api_sieges_validatesiege",
+ "target": "services_sieges_compute_scroll_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L225",
+ "weight": 1.0,
+ "source": "tests_test_sieges_test_compute_scroll_count_sums_theoretical_capacity",
+ "target": "services_sieges_compute_scroll_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L255",
+ "weight": 1.0,
+ "source": "tests_test_sieges_test_compute_scroll_count_broken_building_unchanged",
+ "target": "services_sieges_compute_scroll_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L275",
+ "weight": 1.0,
+ "source": "tests_test_sieges_test_compute_scroll_count_level_change_updates_count",
+ "target": "services_sieges_compute_scroll_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L305",
+ "weight": 1.0,
+ "source": "tests_test_sieges_test_compute_scroll_count_post_buildings_contribute_one",
+ "target": "services_sieges_compute_scroll_count"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed.py",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_scripts_seed_py",
+ "target": "app_main_main"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L95",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_scripts_seed_demo_py",
+ "target": "scripts_seed_demo_get_or_create_members"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L114",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_scripts_seed_demo_py",
+ "target": "scripts_seed_demo_get_or_create_demo_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L133",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_scripts_seed_demo_py",
+ "target": "scripts_seed_demo_seed_buildings_and_positions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L203",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_scripts_seed_demo_py",
+ "target": "scripts_seed_demo_get_or_create_second_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L220",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_scripts_seed_demo_py",
+ "target": "scripts_seed_demo_seed_siege_members"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L242",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_scripts_seed_demo_py",
+ "target": "app_main_main"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L256",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_main_main",
+ "target": "scripts_seed_demo_get_or_create_members"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L96",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_seed_demo_rationale_96",
+ "target": "scripts_seed_demo_get_or_create_members"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L687",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "scripts_seed_demo_get_or_create_members"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L702",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_seed_demo_get_or_create_members",
+ "target": "excel_import_import_excel_map_role"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L835",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_import_file",
+ "target": "scripts_seed_demo_get_or_create_members"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L691",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_691",
+ "target": "scripts_seed_demo_get_or_create_members"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L78",
+ "weight": 1.0,
+ "source": "tests_test_seed_demo_run_seed",
+ "target": "scripts_seed_demo_get_or_create_members"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L261",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_main_main",
+ "target": "scripts_seed_demo_get_or_create_demo_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L115",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_seed_demo_rationale_115",
+ "target": "scripts_seed_demo_get_or_create_demo_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L81",
+ "weight": 1.0,
+ "source": "tests_test_seed_demo_run_seed",
+ "target": "scripts_seed_demo_get_or_create_demo_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L266",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_main_main",
+ "target": "scripts_seed_demo_seed_buildings_and_positions"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L139",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_seed_demo_rationale_139",
+ "target": "scripts_seed_demo_seed_buildings_and_positions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L84",
+ "weight": 1.0,
+ "source": "tests_test_seed_demo_run_seed",
+ "target": "scripts_seed_demo_seed_buildings_and_positions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L276",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_main_main",
+ "target": "scripts_seed_demo_get_or_create_second_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L204",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_seed_demo_rationale_204",
+ "target": "scripts_seed_demo_get_or_create_second_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L271",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_main_main",
+ "target": "scripts_seed_demo_seed_siege_members"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/scripts/seed_demo.py",
+ "source_location": "L225",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_seed_demo_rationale_225",
+ "target": "scripts_seed_demo_seed_siege_members"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L87",
+ "weight": 1.0,
+ "source": "tests_test_seed_demo_run_seed",
+ "target": "scripts_seed_demo_seed_siege_members"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/conftest.py",
+ "source_location": "L30",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_conftest_py",
+ "target": "tests_conftest_disable_auth_for_tests"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/conftest.py",
+ "source_location": "L31",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_conftest_rationale_31",
+ "target": "tests_conftest_disable_auth_for_tests"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/conftest.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_conftest_rationale_1",
+ "target": "bot_tests_conftest_py"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_attack_day_py",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_attack_day_py",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L40",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_attack_day_py",
+ "target": "tests_test_autofill_make_sm"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L52",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_attack_day_py",
+ "target": "tests_test_board_client"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L62",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_attack_day_py",
+ "target": "tests_test_attack_day_test_preview_attack_day_endpoint_200"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L80",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_attack_day_py",
+ "target": "tests_test_attack_day_test_apply_attack_day_endpoint_200"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L100",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_attack_day_py",
+ "target": "tests_test_attack_day_session_for_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L113",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_attack_day_py",
+ "target": "tests_test_attack_day_test_heavy_hitters_and_advanced_always_day2"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L129",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_attack_day_py",
+ "target": "tests_test_attack_day_test_medium_promoted_when_under_10"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L152",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_attack_day_py",
+ "target": "tests_test_attack_day_test_novice_promoted_when_still_under_10"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L182",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_attack_day_py",
+ "target": "tests_test_attack_day_test_pinned_members_count_toward_threshold"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L211",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_attack_day_py",
+ "target": "tests_test_attack_day_test_overridden_members_not_changed"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L227",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_attack_day_py",
+ "target": "tests_test_attack_day_test_boundary_at_exactly_10"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L245",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_attack_day_py",
+ "target": "tests_test_attack_day_test_apply_attack_day_commits"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L276",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_attack_day_py",
+ "target": "tests_test_attack_day_test_apply_attack_day_409_no_preview"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L299",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_attack_day_py",
+ "target": "tests_test_attack_day_test_apply_attack_day_409_expired"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_rationale_1",
+ "target": "backend_tests_test_attack_day_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L120",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_heavy_hitters_and_advanced_always_day2",
+ "target": "tests_test_attack_day_session_for_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L141",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_medium_promoted_when_under_10",
+ "target": "tests_test_attack_day_session_for_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L167",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_novice_promoted_when_still_under_10",
+ "target": "tests_test_attack_day_session_for_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L197",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_pinned_members_count_toward_threshold",
+ "target": "tests_test_attack_day_session_for_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L218",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_overridden_members_not_changed",
+ "target": "tests_test_attack_day_session_for_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L234",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_boundary_at_exactly_10",
+ "target": "tests_test_attack_day_session_for_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L115",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_heavy_hitters_and_advanced_always_day2",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L116",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_heavy_hitters_and_advanced_always_day2",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L118",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_heavy_hitters_and_advanced_always_day2",
+ "target": "tests_test_autofill_make_sm"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L114",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_rationale_114",
+ "target": "tests_test_attack_day_test_heavy_hitters_and_advanced_always_day2"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L131",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_medium_promoted_when_under_10",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L133",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_medium_promoted_when_under_10",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L139",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_medium_promoted_when_under_10",
+ "target": "tests_test_autofill_make_sm"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L130",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_rationale_130",
+ "target": "tests_test_attack_day_test_medium_promoted_when_under_10"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L154",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_novice_promoted_when_still_under_10",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L156",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_novice_promoted_when_still_under_10",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L165",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_novice_promoted_when_still_under_10",
+ "target": "tests_test_autofill_make_sm"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L153",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_rationale_153",
+ "target": "tests_test_attack_day_test_novice_promoted_when_still_under_10"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L184",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_pinned_members_count_toward_threshold",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L187",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_pinned_members_count_toward_threshold",
+ "target": "tests_test_autofill_make_sm"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L190",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_pinned_members_count_toward_threshold",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L183",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_rationale_183",
+ "target": "tests_test_attack_day_test_pinned_members_count_toward_threshold"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L213",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_overridden_members_not_changed",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L214",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_overridden_members_not_changed",
+ "target": "tests_test_autofill_make_sm"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L212",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_rationale_212",
+ "target": "tests_test_attack_day_test_overridden_members_not_changed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L229",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_boundary_at_exactly_10",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L230",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_boundary_at_exactly_10",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L232",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_boundary_at_exactly_10",
+ "target": "tests_test_autofill_make_sm"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L228",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_rationale_228",
+ "target": "tests_test_attack_day_test_boundary_at_exactly_10"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L250",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_apply_attack_day_commits",
+ "target": "tests_test_autofill_make_sm"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L252",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_apply_attack_day_commits",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L246",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_rationale_246",
+ "target": "tests_test_attack_day_test_apply_attack_day_commits"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L280",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_apply_attack_day_409_no_preview",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L277",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_rationale_277",
+ "target": "tests_test_attack_day_test_apply_attack_day_409_no_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L307",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_test_apply_attack_day_409_expired",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_attack_day.py",
+ "source_location": "L300",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_attack_day_rationale_300",
+ "target": "tests_test_attack_day_test_apply_attack_day_409_expired"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_make_jwt"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L38",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_make_expired_jwt"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L53",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L70",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_make_mock_db"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L92",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_auth_disabled_allows_access"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L117",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_valid_service_token_allows_access"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L145",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_invalid_service_token_returns_401"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L167",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_valid_jwt_cookie_allows_access"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L196",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_expired_jwt_returns_401"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L218",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_jwt_with_wrong_secret_returns_401"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L241",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_jwt_with_deleted_member_returns_401"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L266",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_no_auth_returns_401"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L286",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_health_no_auth_required"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L305",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_version_no_auth_required"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L323",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_login_returns_discord_url_and_state_cookie"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L343",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_callback_invalid_state_redirects"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L361",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_callback_happy_path"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L412",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_callback_not_in_guild_redirects"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L445",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_callback_insufficient_role_redirects"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L481",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_callback_insufficient_role_missing_role_names_key_redirects"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L516",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_callback_with_required_role_proceeds_to_member_lookup"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L567",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_callback_bot_unreachable_redirects_service_unavailable"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L600",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_callback_no_member_record_redirects"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L647",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_logout_clears_session_cookie"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L660",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_me_with_valid_session"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L692",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_me_without_auth_returns_401"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L716",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_teststartupvalidation"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L719",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_startup_rejects_empty_session_secret"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L730",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_startup_rejects_missing_bot_service_token_in_production"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L742",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_py",
+ "target": "tests_test_auth_test_startup_allows_empty_bot_service_token_in_development"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_1",
+ "target": "backend_tests_test_auth_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L180",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_test_valid_jwt_cookie_allows_access",
+ "target": "tests_test_auth_make_jwt"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L229",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_test_jwt_with_wrong_secret_returns_401",
+ "target": "tests_test_auth_make_jwt"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L254",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_test_jwt_with_deleted_member_returns_401",
+ "target": "tests_test_auth_make_jwt"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L675",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_test_me_with_valid_session",
+ "target": "tests_test_auth_make_jwt"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L29",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_changelog_py",
+ "target": "tests_test_auth_make_jwt"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L94",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_test_get_status_fresh_user_returns_null",
+ "target": "tests_test_auth_make_jwt"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L127",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_test_mark_seen_then_get_status_returns_timestamp",
+ "target": "tests_test_auth_make_jwt"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L167",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_test_mark_seen_twice_is_idempotent",
+ "target": "tests_test_auth_make_jwt"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L30",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_rationale_30",
+ "target": "tests_test_auth_make_jwt"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L206",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_test_expired_jwt_returns_401",
+ "target": "tests_test_auth_make_expired_jwt"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L173",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_test_valid_jwt_cookie_allows_access",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L366",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_test_callback_happy_path",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L522",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_test_callback_with_required_role_proceeds_to_member_lookup",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L666",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_test_me_with_valid_session",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L45",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L157",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_respects_scroll_count",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L188",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_marks_leftover_as_reserve",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L306",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_skips_broken_building_positions",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L49",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_changelog_py",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L87",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_test_get_status_fresh_user_returns_null",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L120",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_test_mark_seen_then_get_status_returns_timestamp",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L160",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_test_mark_seen_twice_is_idempotent",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L54",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_rationale_54",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L69",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L157",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_reserves_html_contains_member",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L357",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_reserves_html_day1_color",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L177",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_reserves_html_no_role_column",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L212",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_generate_reserves_image_calls_render",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L365",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_reserves_html_novice_color",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L375",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_reserves_html_fallback_color",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L432",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_reserves_html_role_colors_match_ui",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_integration_py",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L114",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_integration_build_valid_siege_graph",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_members.py",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_members_py",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_members.py",
+ "source_location": "L60",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_members_test_create_member_returns_201",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_members.py",
+ "source_location": "L125",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_members_test_delete_member_returns_204",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L34",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L62",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_test_makesiegemember",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L275",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_get_notification_batch_returns_results",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L560",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_skips_member_with_no_discord_username",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L624",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_skips_member_not_in_guild",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L683",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_eligible_member_gets_result_row_and_dm",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L749",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_skipped_count_reflects_all_skipped_members",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L920",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_bot_unreachable_falls_back_to_username_filter",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L46",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L212",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_single_post_single_member_match",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L241",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_no_match_produces_skip_reason_no_match",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L266",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_reserve_position_produces_skip_reason_reserve",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L285",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_disabled_position_produces_skip_reason_disabled",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L314",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_no_active_conditions_produces_skip_reason_no_conditions",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L340",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_conditions_but_no_matching_member_still_no_match",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L366",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_mixed_no_conditions_no_match_and_assigned_in_one_preview",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L412",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_higher_priority_post_gets_member_first",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L449",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_second_post_prefers_different_condition",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L481",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_prefers_less_loaded_member",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L509",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_name_tiebreak_picks_alphabetically_lower",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L533",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_duplicate_penalty_beats_assignment_count",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L567",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_determinism_same_output_on_repeat",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L612",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_current_member_preferred_when_equally_qualified",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L664",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_lowest_condition_id_picked_as_tiebreak",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L710",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_suboptimality_invariants_hold",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L766",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_true_when_same_assignment",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L787",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_false_for_null_suggestion",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L987",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_empty_position_ids_is_noop",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1003",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_unknown_position_ids_silently_ignored",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1037",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_subset_only_writes_checked_positions",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1062",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_position_disabled_returns_409",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1080",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_position_reserve_returns_409",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1098",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_member_inactive_returns_409",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1117",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_member_changed_returns_409",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1139",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_multiple_stale_all_surfaced_in_single_409",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1191",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_skips_post_when_only_candidate_has_used_condition",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L39",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L217",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule1_inactive_member_error",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L237",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule1_active_member_no_error",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L263",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_broken_building_assignment_counts_toward_scroll_limit",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L300",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_broken_and_healthy_both_count_toward_scroll_limit",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L342",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_exceeds_scroll_count",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L366",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_within_scroll_count",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L554",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_disabled_with_member",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L572",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_reserve_with_member",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L590",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_valid_state",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L708",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_member_pref_no_match",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L735",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_no_warning_when_no_preferences",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L781",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule13_missing_attack_day_assigned_member",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L797",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule13_attack_day_set",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L847",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_hh_no_reserve",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L867",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_advanced_no_reserve",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L887",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_hh_reserve_configured",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L907",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_non_hh_no_reserve_no_warning",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_discord_client_py",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L58",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_send_dm_finds_member_and_sends",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L71",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_send_dm_case_insensitive",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L145",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_get_members_returns_correct_dict_format",
+ "target": "tests_test_auth_make_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L97",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_test_auth_disabled_allows_access",
+ "target": "tests_test_auth_make_mock_db"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L123",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_test_valid_service_token_allows_access",
+ "target": "tests_test_auth_make_mock_db"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L174",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_test_valid_jwt_cookie_allows_access",
+ "target": "tests_test_auth_make_mock_db"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L248",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_test_jwt_with_deleted_member_returns_401",
+ "target": "tests_test_auth_make_mock_db"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L367",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_test_callback_happy_path",
+ "target": "tests_test_auth_make_mock_db"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L523",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_test_callback_with_required_role_proceeds_to_member_lookup",
+ "target": "tests_test_auth_make_mock_db"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L669",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_test_me_with_valid_session",
+ "target": "tests_test_auth_make_mock_db"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L67",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_71",
+ "target": "tests_test_auth_make_mock_db"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L66",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_changelog_py",
+ "target": "tests_test_auth_make_mock_db"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L88",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_test_get_status_fresh_user_returns_null",
+ "target": "tests_test_auth_make_mock_db"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L121",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_test_mark_seen_then_get_status_returns_timestamp",
+ "target": "tests_test_auth_make_mock_db"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L161",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_test_mark_seen_twice_is_idempotent",
+ "target": "tests_test_auth_make_mock_db"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L250",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_test_get_status_service_token_returns_400",
+ "target": "tests_test_auth_make_mock_db"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L93",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_93",
+ "target": "tests_test_auth_test_auth_disabled_allows_access"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L118",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_118",
+ "target": "tests_test_auth_test_valid_service_token_allows_access"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L146",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_146",
+ "target": "tests_test_auth_test_invalid_service_token_returns_401"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L168",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_168",
+ "target": "tests_test_auth_test_valid_jwt_cookie_allows_access"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L197",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_197",
+ "target": "tests_test_auth_test_expired_jwt_returns_401"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L219",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_219",
+ "target": "tests_test_auth_test_jwt_with_wrong_secret_returns_401"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L242",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_242",
+ "target": "tests_test_auth_test_jwt_with_deleted_member_returns_401"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L267",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_267",
+ "target": "tests_test_auth_test_no_auth_returns_401"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L287",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_287",
+ "target": "tests_test_auth_test_health_no_auth_required"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L306",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_306",
+ "target": "tests_test_auth_test_version_no_auth_required"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L324",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_324",
+ "target": "tests_test_auth_test_login_returns_discord_url_and_state_cookie"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L344",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_344",
+ "target": "tests_test_auth_test_callback_invalid_state_redirects"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L362",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_362",
+ "target": "tests_test_auth_test_callback_happy_path"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L413",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_413",
+ "target": "tests_test_auth_test_callback_not_in_guild_redirects"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L446",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_446",
+ "target": "tests_test_auth_test_callback_insufficient_role_redirects"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L482",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_482",
+ "target": "tests_test_auth_test_callback_insufficient_role_missing_role_names_key_redirects"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L517",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_517",
+ "target": "tests_test_auth_test_callback_with_required_role_proceeds_to_member_lookup"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L568",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_568",
+ "target": "tests_test_auth_test_callback_bot_unreachable_redirects_service_unavailable"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L601",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_601",
+ "target": "tests_test_auth_test_callback_no_member_record_redirects"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L648",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_648",
+ "target": "tests_test_auth_test_logout_clears_session_cookie"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L661",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_661",
+ "target": "tests_test_auth_test_me_with_valid_session"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L693",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rationale_693",
+ "target": "tests_test_auth_test_me_without_auth_returns_401"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_auth.py",
+ "source_location": "L15",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_auth_teststartupvalidation",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L49",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_reset_rate_limit_state"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L89",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_get"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L100",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_test_login_rate_limit_triggers_429"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L124",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_test_login_rate_limit_independent_per_ip"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L150",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_test_callback_rate_limit_triggers_429"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L194",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_test_login_no_429_when_auth_disabled"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L209",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_test_callback_no_429_when_auth_disabled"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L236",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_test_xff_pathological_header_parses_to_leftmost_ip"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L271",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_test_garbage_xff_falls_back_to_remote_address_bucket"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L301",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_test_different_garbage_xff_values_share_remote_address_bucket"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L331",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_test_valid_xff_still_buckets_by_ip"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L361",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_test_429_response_includes_retry_after_header"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L405",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_test_missing_xff_in_production_logs_warning"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L434",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_test_missing_xff_in_development_does_not_log_warning"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L464",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_test_concurrent_absent_xff_in_production_warns_exactly_once"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L534",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_test_invalid_xff_in_production_logs_warning"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L566",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_test_invalid_xff_in_development_does_not_log_warning"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L597",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_auth_rate_limit_py",
+ "target": "tests_test_auth_rate_limit_test_invalid_xff_warning_is_throttled_to_once_per_window"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_1",
+ "target": "backend_tests_test_auth_rate_limit_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L50",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_50",
+ "target": "tests_test_auth_rate_limit_reset_rate_limit_state"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L115",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_test_login_rate_limit_triggers_429",
+ "target": "tests_test_auth_rate_limit_get"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L135",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_test_login_rate_limit_independent_per_ip",
+ "target": "tests_test_auth_rate_limit_get"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L204",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_test_login_no_429_when_auth_disabled",
+ "target": "tests_test_auth_rate_limit_get"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L259",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_test_xff_pathological_header_parses_to_leftmost_ip",
+ "target": "tests_test_auth_rate_limit_get"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L288",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_test_garbage_xff_falls_back_to_remote_address_bucket",
+ "target": "tests_test_auth_rate_limit_get"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L318",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_test_different_garbage_xff_values_share_remote_address_bucket",
+ "target": "tests_test_auth_rate_limit_get"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L346",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_test_valid_xff_still_buckets_by_ip",
+ "target": "tests_test_auth_rate_limit_get"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L376",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_test_429_response_includes_retry_after_header",
+ "target": "tests_test_auth_rate_limit_get"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L425",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_test_missing_xff_in_production_logs_warning",
+ "target": "tests_test_auth_rate_limit_get"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L448",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_test_missing_xff_in_development_does_not_log_warning",
+ "target": "tests_test_auth_rate_limit_get"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L553",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_test_invalid_xff_in_production_logs_warning",
+ "target": "tests_test_auth_rate_limit_get"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L580",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_test_invalid_xff_in_development_does_not_log_warning",
+ "target": "tests_test_auth_rate_limit_get"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L618",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_test_invalid_xff_warning_is_throttled_to_once_per_window",
+ "target": "tests_test_auth_rate_limit_get"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L90",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_90",
+ "target": "tests_test_auth_rate_limit_get"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L101",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_101",
+ "target": "tests_test_auth_rate_limit_test_login_rate_limit_triggers_429"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L125",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_125",
+ "target": "tests_test_auth_rate_limit_test_login_rate_limit_independent_per_ip"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L151",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_151",
+ "target": "tests_test_auth_rate_limit_test_callback_rate_limit_triggers_429"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L195",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_195",
+ "target": "tests_test_auth_rate_limit_test_login_no_429_when_auth_disabled"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L210",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_195",
+ "target": "tests_test_auth_rate_limit_test_callback_no_429_when_auth_disabled"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L237",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_237",
+ "target": "tests_test_auth_rate_limit_test_xff_pathological_header_parses_to_leftmost_ip"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L272",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_272",
+ "target": "tests_test_auth_rate_limit_test_garbage_xff_falls_back_to_remote_address_bucket"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L302",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_302",
+ "target": "tests_test_auth_rate_limit_test_different_garbage_xff_values_share_remote_address_bucket"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L332",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_332",
+ "target": "tests_test_auth_rate_limit_test_valid_xff_still_buckets_by_ip"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L362",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_362",
+ "target": "tests_test_auth_rate_limit_test_429_response_includes_retry_after_header"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L406",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_406",
+ "target": "tests_test_auth_rate_limit_test_missing_xff_in_production_logs_warning"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L435",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_435",
+ "target": "tests_test_auth_rate_limit_test_missing_xff_in_development_does_not_log_warning"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L465",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_465",
+ "target": "tests_test_auth_rate_limit_test_concurrent_absent_xff_in_production_warns_exactly_once"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L535",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_535",
+ "target": "tests_test_auth_rate_limit_test_invalid_xff_in_production_logs_warning"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L567",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_567",
+ "target": "tests_test_auth_rate_limit_test_invalid_xff_in_development_does_not_log_warning"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_auth_rate_limit.py",
+ "source_location": "L598",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_auth_rate_limit_rationale_598",
+ "target": "tests_test_auth_rate_limit_test_invalid_xff_warning_is_throttled_to_once_per_window"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L28",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L51",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L63",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L69",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L81",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_autofill_make_sm"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L98",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_board_client"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L108",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_autofill_test_preview_endpoint_returns_200"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L127",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_autofill_test_apply_endpoint_returns_200"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L148",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_autofill_test_preview_respects_scroll_count"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L182",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_autofill_test_preview_marks_leftover_as_reserve"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L212",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_autofill_test_apply_commits_preview"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L251",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_autofill_test_apply_returns_409_when_no_preview"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L273",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_autofill_test_apply_returns_409_when_preview_expired"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L299",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_autofill_test_preview_skips_broken_building_positions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L349",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_autofill_enable_sqlite_fk_autofill"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L356",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_schema_db_session"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L367",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_autofill_test_apply_autofill_skips_broken_building_positions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L466",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_autofill_py",
+ "target": "tests_test_autofill_make_session_for_preview"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_rationale_1",
+ "target": "backend_tests_test_autofill_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L159",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_respects_scroll_count",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L190",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_marks_leftover_as_reserve",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L313",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_skips_broken_building_positions",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L37",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_buildings_py",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L107",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_test_update_building_unbreak_restores_groups",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L187",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_test_update_building_unbreak_restores_last_slot_count",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L263",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_test_update_building_break_then_unbreak_roundtrip",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L61",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_integration_py",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L124",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_integration_build_valid_siege_graph",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L84",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L215",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_single_post_single_member_match",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L244",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_no_match_produces_skip_reason_no_match",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L269",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_reserve_position_produces_skip_reason_reserve",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L288",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_disabled_position_produces_skip_reason_disabled",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L317",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_no_active_conditions_produces_skip_reason_no_conditions",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L343",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_conditions_but_no_matching_member_still_no_match",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L371",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_mixed_no_conditions_no_match_and_assigned_in_one_preview",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L418",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_higher_priority_post_gets_member_first",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L453",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_second_post_prefers_different_condition",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L487",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_prefers_less_loaded_member",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L515",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_name_tiebreak_picks_alphabetically_lower",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L539",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_duplicate_penalty_beats_assignment_count",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L571",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_determinism_same_output_on_repeat",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L620",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_current_member_preferred_when_equally_qualified",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L668",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_lowest_condition_id_picked_as_tiebreak",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L717",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_suboptimality_invariants_hold",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L770",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_true_when_same_assignment",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L790",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_false_for_null_suggestion",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L820",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_no_members_all_skip_no_match",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1195",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_skips_post_when_only_candidate_has_used_condition",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L58",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L219",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule1_inactive_member_error",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L239",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule1_active_member_no_error",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L268",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_broken_building_assignment_counts_toward_scroll_limit",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L306",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_broken_and_healthy_both_count_toward_scroll_limit",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L346",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_exceeds_scroll_count",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L368",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_within_scroll_count",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L423",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule4_invalid_group_number",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L440",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule4_valid_group_number",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L457",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule5_position_number_exceeds_slot_count",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L474",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule5_valid_position_number",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L517",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule7_post_has_multiple_groups",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L539",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule7_post_has_exactly_one_group",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L556",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_disabled_with_member",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L574",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_reserve_with_member",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L592",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_valid_state",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L646",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule10_empty_unresolved_slot",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L665",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule10_message_uses_position_name",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L690",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule10_no_warning_when_disabled",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L714",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_member_pref_no_match",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L741",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_no_warning_when_no_preferences",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L763",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule13_missing_attack_day_assigned_member",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L799",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule13_attack_day_set",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L849",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_hh_no_reserve",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L869",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_advanced_no_reserve",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L889",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_hh_reserve_configured",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L909",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_non_hh_no_reserve_no_warning",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L931",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule16_post_fewer_than_3_conditions",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L958",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule16_post_has_3_conditions",
+ "target": "tests_test_autofill_make_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L166",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_respects_scroll_count",
+ "target": "tests_test_autofill_make_sm"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L197",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_marks_leftover_as_reserve",
+ "target": "tests_test_autofill_make_sm"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L331",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_skips_broken_building_positions",
+ "target": "tests_test_autofill_make_sm"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L844",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_autofill_test_preview_endpoint_returns_200"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L845",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_845",
+ "target": "tests_test_autofill_test_preview_endpoint_returns_200"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L860",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_autofill_test_apply_endpoint_returns_200"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L861",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_861",
+ "target": "tests_test_autofill_test_apply_endpoint_returns_200"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L158",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_respects_scroll_count",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L161",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_respects_scroll_count",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L164",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_respects_scroll_count",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L169",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_respects_scroll_count",
+ "target": "tests_test_autofill_make_session_for_preview"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L149",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_rationale_149",
+ "target": "tests_test_autofill_test_preview_respects_scroll_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L189",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_marks_leftover_as_reserve",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L192",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_marks_leftover_as_reserve",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L195",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_marks_leftover_as_reserve",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L200",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_marks_leftover_as_reserve",
+ "target": "tests_test_autofill_make_session_for_preview"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L183",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_rationale_183",
+ "target": "tests_test_autofill_test_preview_marks_leftover_as_reserve"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L217",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_apply_commits_preview",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L219",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_apply_commits_preview",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L213",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_rationale_213",
+ "target": "tests_test_autofill_test_apply_commits_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L255",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_apply_returns_409_when_no_preview",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L252",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_rationale_252",
+ "target": "tests_test_autofill_test_apply_returns_409_when_no_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L281",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_apply_returns_409_when_preview_expired",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L274",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_rationale_274",
+ "target": "tests_test_autofill_test_apply_returns_409_when_preview_expired"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L310",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_skips_broken_building_positions",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L315",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_skips_broken_building_positions",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L329",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_skips_broken_building_positions",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L334",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_test_preview_skips_broken_building_positions",
+ "target": "tests_test_autofill_make_session_for_preview"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L300",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_rationale_300",
+ "target": "tests_test_autofill_test_preview_skips_broken_building_positions"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L368",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_rationale_368",
+ "target": "tests_test_autofill_test_apply_autofill_skips_broken_building_positions"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_autofill.py",
+ "source_location": "L467",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_autofill_rationale_467",
+ "target": "tests_test_autofill_make_session_for_preview"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_board.py",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_board_py",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_board.py",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_board_py",
+ "target": "tests_test_board_client"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_board.py",
+ "source_location": "L43",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_board_py",
+ "target": "tests_test_board_test_get_board_returns_nested_structure"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_board.py",
+ "source_location": "L75",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_board_py",
+ "target": "tests_test_board_test_update_position_assign_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_board.py",
+ "source_location": "L97",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_board_py",
+ "target": "tests_test_board_test_update_position_invalid_state_reserve_with_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_board.py",
+ "source_location": "L119",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_board_py",
+ "target": "tests_test_board_test_update_position_not_found"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_board.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_board_rationale_1",
+ "target": "backend_tests_test_board_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_board.py",
+ "source_location": "L76",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_board_test_update_position_assign_member",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L52",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L96",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_contains_building_type",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L106",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_reserve_cell",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L115",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_disabled_cell",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L233",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_group_header_present",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L244",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_group_header_before_members",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L261",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_single_row_per_group",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L288",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_buildings_side_by_side",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L317",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_heavy_hitter_color",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L330",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_no_role_map_fallback",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L341",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_role_color_on_span_not_background",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L412",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_role_colors_match_ui",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L445",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_no_level_in_header",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L458",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_broken_building_no_level",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L470",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_building_number_in_thead",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L490",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_post_flat_table",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L522",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_post_reserve_and_disabled",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L47",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_integration_py",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L237",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_integration_test_full_siege_lifecycle",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L214",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_single_post_single_member_match",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L243",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_no_match_produces_skip_reason_no_match",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L268",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_reserve_position_produces_skip_reason_reserve",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L287",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_disabled_position_produces_skip_reason_disabled",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L316",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_no_active_conditions_produces_skip_reason_no_conditions",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L342",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_conditions_but_no_matching_member_still_no_match",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L370",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_mixed_no_conditions_no_match_and_assigned_in_one_preview",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L417",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_higher_priority_post_gets_member_first",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L452",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_second_post_prefers_different_condition",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L486",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_prefers_less_loaded_member",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L514",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_name_tiebreak_picks_alphabetically_lower",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L538",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_duplicate_penalty_beats_assignment_count",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L570",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_determinism_same_output_on_repeat",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L619",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_current_member_preferred_when_equally_qualified",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L667",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_lowest_condition_id_picked_as_tiebreak",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L716",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_suboptimality_invariants_hold",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L769",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_true_when_same_assignment",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L789",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_false_for_null_suggestion",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L819",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_no_members_all_skip_no_match",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L986",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_empty_position_ids_is_noop",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1002",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_unknown_position_ids_silently_ignored",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1035",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_subset_only_writes_checked_positions",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1061",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_position_disabled_returns_409",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1079",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_position_reserve_returns_409",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1097",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_member_inactive_returns_409",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1116",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_member_changed_returns_409",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1137",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_multiple_stale_all_surfaced_in_single_409",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1194",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_skips_post_when_only_candidate_has_used_condition",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L68",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L218",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule1_inactive_member_error",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L238",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule1_active_member_no_error",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L266",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_broken_building_assignment_counts_toward_scroll_limit",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L304",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_broken_and_healthy_both_count_toward_scroll_limit",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L344",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_exceeds_scroll_count",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L367",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_within_scroll_count",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L422",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule4_invalid_group_number",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L439",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule4_valid_group_number",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L456",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule5_position_number_exceeds_slot_count",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L473",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule5_valid_position_number",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L555",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_disabled_with_member",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L573",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_reserve_with_member",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L591",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_valid_state",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L645",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule10_empty_unresolved_slot",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L662",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule10_message_uses_position_name",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L689",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule10_no_warning_when_disabled",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L715",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_member_pref_no_match",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L742",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_no_warning_when_no_preferences",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L762",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule13_missing_attack_day_assigned_member",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L798",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule13_attack_day_set",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L848",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_hh_no_reserve",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L868",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_advanced_no_reserve",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L888",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_hh_reserve_configured",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L908",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_non_hh_no_reserve_no_warning",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L46",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L80",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_poststab_test_makepostboard",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L314",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_poststab_test_maketwopostboard",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L39",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L69",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_test_makeboard",
+ "target": "tests_test_board_make_position"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L37",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_comparison_py",
+ "target": "tests_test_board_client"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L40",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_discord_sync_py",
+ "target": "tests_test_board_client"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_py",
+ "target": "tests_test_board_client"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_members.py",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_members_py",
+ "target": "tests_test_board_client"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L103",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_board_client"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L45",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_posts_py",
+ "target": "tests_test_board_client"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L838",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_board_client"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L839",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_839",
+ "target": "tests_test_board_client"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_reference.py",
+ "source_location": "L18",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_reference_py",
+ "target": "tests_test_board_client"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L38",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_sieges_py",
+ "target": "tests_test_board_client"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L138",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_board_client"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_get_guild_member_py",
+ "target": "tests_test_board_client"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_board_client"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_bot_client_py",
+ "target": "tests_test_bot_client_make_ok_response"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_bot_client_py",
+ "target": "tests_test_bot_client_async_client_that_raises"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L34",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_bot_client_py",
+ "target": "tests_test_bot_client_async_client_that_returns"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L50",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_bot_client_py",
+ "target": "tests_test_bot_client_test_notify_returns_false_on_http_error"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L59",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_bot_client_py",
+ "target": "tests_test_bot_client_test_post_message_returns_false_on_http_error"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L68",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_bot_client_py",
+ "target": "tests_test_bot_client_test_post_image_returns_none_on_http_error"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L77",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_bot_client_py",
+ "target": "tests_test_bot_client_test_get_members_returns_empty_on_http_error"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L86",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_bot_client_py",
+ "target": "tests_test_bot_client_test_notify_returns_true_on_success"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L112",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_bot_client_py",
+ "target": "tests_test_bot_client_test_get_member_returns_not_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L123",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_bot_client_py",
+ "target": "tests_test_bot_client_test_get_member_raises_on_connection_error"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L132",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_bot_client_py",
+ "target": "tests_test_bot_client_test_get_member_raises_on_503"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_rationale_1",
+ "target": "backend_tests_test_bot_client_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L88",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_test_notify_returns_true_on_success",
+ "target": "tests_test_bot_client_make_ok_response"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L115",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_test_get_member_returns_not_member",
+ "target": "tests_test_bot_client_make_ok_response"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L52",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_test_notify_returns_false_on_http_error",
+ "target": "tests_test_bot_client_async_client_that_raises"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L61",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_test_post_message_returns_false_on_http_error",
+ "target": "tests_test_bot_client_async_client_that_raises"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L70",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_test_post_image_returns_none_on_http_error",
+ "target": "tests_test_bot_client_async_client_that_raises"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L79",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_test_get_members_returns_empty_on_http_error",
+ "target": "tests_test_bot_client_async_client_that_raises"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L125",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_test_get_member_raises_on_connection_error",
+ "target": "tests_test_bot_client_async_client_that_raises"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L25",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_rationale_25",
+ "target": "tests_test_bot_client_async_client_that_raises"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L89",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_test_notify_returns_true_on_success",
+ "target": "tests_test_bot_client_async_client_that_returns"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L116",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_test_get_member_returns_not_member",
+ "target": "tests_test_bot_client_async_client_that_returns"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L143",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_test_get_member_raises_on_503",
+ "target": "tests_test_bot_client_async_client_that_returns"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_rationale_25",
+ "target": "tests_test_bot_client_async_client_that_returns"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L51",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_rationale_51",
+ "target": "tests_test_bot_client_test_notify_returns_false_on_http_error"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L60",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_rationale_60",
+ "target": "tests_test_bot_client_test_post_message_returns_false_on_http_error"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L69",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_rationale_69",
+ "target": "tests_test_bot_client_test_post_image_returns_none_on_http_error"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L78",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_rationale_78",
+ "target": "tests_test_bot_client_test_get_members_returns_empty_on_http_error"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L87",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_rationale_87",
+ "target": "tests_test_bot_client_test_notify_returns_true_on_success"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L102",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_rationale_102",
+ "target": "tests_test_bot_client_test_get_member_returns_not_member"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L113",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_rationale_113",
+ "target": "tests_test_bot_client_test_get_member_returns_not_member"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L124",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_rationale_124",
+ "target": "tests_test_bot_client_test_get_member_raises_on_connection_error"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_bot_client.py",
+ "source_location": "L133",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_bot_client_rationale_133",
+ "target": "tests_test_bot_client_test_get_member_raises_on_503"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_buildings_py",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_buildings_py",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L46",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_buildings_py",
+ "target": "tests_test_buildings_make_config"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L55",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_buildings_py",
+ "target": "tests_test_buildings_make_post_priority_config"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L63",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_buildings_py",
+ "target": "tests_test_buildings_scalars_all"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L70",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_buildings_py",
+ "target": "tests_test_buildings_scalars_first"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L77",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_buildings_py",
+ "target": "tests_test_buildings_scalar_one_or_none"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L94",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_buildings_py",
+ "target": "tests_test_buildings_test_update_building_unbreak_restores_groups"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L172",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_buildings_py",
+ "target": "tests_test_buildings_test_update_building_unbreak_restores_last_slot_count"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L247",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_buildings_py",
+ "target": "tests_test_buildings_test_update_building_break_then_unbreak_roundtrip"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L392",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_buildings_py",
+ "target": "tests_test_buildings_test_add_building_post_uses_priority_config"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_rationale_1",
+ "target": "backend_tests_test_buildings_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L266",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_test_update_building_break_then_unbreak_roundtrip",
+ "target": "tests_test_buildings_make_config"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L404",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_test_add_building_post_uses_priority_config",
+ "target": "tests_test_buildings_make_config"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L106",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_buildings_make_config"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L979",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_default_configs",
+ "target": "tests_test_buildings_make_config"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L401",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_test_add_building_post_uses_priority_config",
+ "target": "tests_test_buildings_make_post_priority_config"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L162",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_py",
+ "target": "tests_test_buildings_make_post_priority_config"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L227",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_test_clone_uses_post_priority_config_not_source_priority",
+ "target": "tests_test_buildings_make_post_priority_config"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L64",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_rationale_64",
+ "target": "tests_test_buildings_scalars_all"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L71",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_rationale_71",
+ "target": "tests_test_buildings_scalars_first"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L78",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_rationale_78",
+ "target": "tests_test_buildings_scalar_one_or_none"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L100",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_test_update_building_unbreak_restores_groups",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L102",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_test_update_building_unbreak_restores_groups",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L95",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_rationale_95",
+ "target": "tests_test_buildings_test_update_building_unbreak_restores_groups"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L161",
+ "weight": 1.0,
+ "source": "tests_test_buildings_test_update_building_unbreak_restores_groups",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L182",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_test_update_building_unbreak_restores_last_slot_count",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L183",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_test_update_building_unbreak_restores_last_slot_count",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L173",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_rationale_173",
+ "target": "tests_test_buildings_test_update_building_unbreak_restores_last_slot_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L257",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_test_update_building_break_then_unbreak_roundtrip",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L258",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_test_update_building_break_then_unbreak_roundtrip",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L248",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_rationale_248",
+ "target": "tests_test_buildings_test_update_building_break_then_unbreak_roundtrip"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L313",
+ "weight": 1.0,
+ "source": "tests_test_buildings_test_update_building_break_then_unbreak_roundtrip",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L399",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_test_add_building_post_uses_priority_config",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_buildings.py",
+ "source_location": "L393",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_buildings_rationale_393",
+ "target": "tests_test_buildings_test_add_building_post_uses_priority_config"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L81",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_changelog_py",
+ "target": "tests_test_changelog_test_get_status_fresh_user_returns_null"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L113",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_changelog_py",
+ "target": "tests_test_changelog_test_mark_seen_then_get_status_returns_timestamp"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L154",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_changelog_py",
+ "target": "tests_test_changelog_test_mark_seen_twice_is_idempotent"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L193",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_changelog_py",
+ "target": "tests_test_changelog_test_get_status_no_auth_returns_401"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L218",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_changelog_py",
+ "target": "tests_test_changelog_test_post_mark_seen_no_auth_returns_401"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L243",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_changelog_py",
+ "target": "tests_test_changelog_test_get_status_service_token_returns_400"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_rationale_1",
+ "target": "backend_tests_test_changelog_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L82",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_rationale_82",
+ "target": "tests_test_changelog_test_get_status_fresh_user_returns_null"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L114",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_rationale_114",
+ "target": "tests_test_changelog_test_mark_seen_then_get_status_returns_timestamp"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L155",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_rationale_155",
+ "target": "tests_test_changelog_test_mark_seen_twice_is_idempotent"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L194",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_rationale_194",
+ "target": "tests_test_changelog_test_get_status_no_auth_returns_401"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L219",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_rationale_219",
+ "target": "tests_test_changelog_test_post_mark_seen_no_auth_returns_401"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_changelog.py",
+ "source_location": "L244",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_changelog_rationale_244",
+ "target": "tests_test_changelog_test_get_status_service_token_returns_400"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_comparison_py",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L47",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_comparison_py",
+ "target": "tests_test_comparison_test_compare_returns_404_when_no_completed_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L75",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_comparison_py",
+ "target": "tests_test_comparison_test_compare_with_specific_endpoint_200"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L124",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_comparison_py",
+ "target": "tests_test_comparison_build_siege_assignments"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L142",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_comparison_py",
+ "target": "tests_test_comparison_test_compare_added_positions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L185",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_comparison_py",
+ "target": "tests_test_comparison_test_compare_removed_positions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L221",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_comparison_py",
+ "target": "tests_test_comparison_test_compare_unchanged_positions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L251",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_comparison_py",
+ "target": "tests_test_comparison_test_compare_reserve_positions_excluded"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L276",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_comparison_py",
+ "target": "tests_test_comparison_test_inactive_member_excluded_from_comparison"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L307",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_comparison_py",
+ "target": "tests_test_comparison_test_inactive_member_rows_absent_from_comparison_result"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L364",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_comparison_py",
+ "target": "tests_test_comparison_test_get_most_recent_completed_returns_none"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_comparison_rationale_1",
+ "target": "backend_tests_test_comparison_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L50",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_comparison_test_compare_returns_404_when_no_completed_siege",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L146",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_comparison_test_compare_added_positions",
+ "target": "tests_test_comparison_build_siege_assignments"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L187",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_comparison_test_compare_removed_positions",
+ "target": "tests_test_comparison_build_siege_assignments"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L223",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_comparison_test_compare_unchanged_positions",
+ "target": "tests_test_comparison_build_siege_assignments"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L314",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_comparison_test_inactive_member_rows_absent_from_comparison_result",
+ "target": "tests_test_comparison_build_siege_assignments"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L125",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_comparison_rationale_125",
+ "target": "tests_test_comparison_build_siege_assignments"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L143",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_comparison_rationale_143",
+ "target": "tests_test_comparison_test_compare_added_positions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L176",
+ "weight": 1.0,
+ "source": "tests_test_comparison_test_compare_added_positions",
+ "target": "api_sieges_comparesieges"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L186",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_comparison_rationale_186",
+ "target": "tests_test_comparison_test_compare_removed_positions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L214",
+ "weight": 1.0,
+ "source": "tests_test_comparison_test_compare_removed_positions",
+ "target": "api_sieges_comparesieges"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L222",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_comparison_rationale_222",
+ "target": "tests_test_comparison_test_compare_unchanged_positions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L243",
+ "weight": 1.0,
+ "source": "tests_test_comparison_test_compare_unchanged_positions",
+ "target": "api_sieges_comparesieges"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L252",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_comparison_rationale_252",
+ "target": "tests_test_comparison_test_compare_reserve_positions_excluded"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L271",
+ "weight": 1.0,
+ "source": "tests_test_comparison_test_compare_reserve_positions_excluded",
+ "target": "api_sieges_comparesieges"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L277",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_comparison_rationale_277",
+ "target": "tests_test_comparison_test_inactive_member_excluded_from_comparison"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L308",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_comparison_rationale_308",
+ "target": "tests_test_comparison_test_inactive_member_rows_absent_from_comparison_result"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L340",
+ "weight": 1.0,
+ "source": "tests_test_comparison_test_inactive_member_rows_absent_from_comparison_result",
+ "target": "api_sieges_comparesieges"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L366",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_comparison_test_get_most_recent_completed_returns_none",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L349",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_comparison_rationale_349",
+ "target": "tests_test_comparison_test_get_most_recent_completed_returns_none"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_comparison.py",
+ "source_location": "L365",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_comparison_rationale_365",
+ "target": "tests_test_comparison_test_get_most_recent_completed_returns_none"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L23",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_config_py",
+ "target": "tests_test_config_testsettingsdefaults"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L99",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_config_py",
+ "target": "tests_test_config_testenvironmentrequired"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L126",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_config_py",
+ "target": "tests_test_config_testlifespanauthguard"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L130",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_config_py",
+ "target": "tests_test_config_test_auth_disabled_allowed_in_development"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L162",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_config_py",
+ "target": "tests_test_config_test_auth_disabled_rejected_in_production"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L186",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_config_py",
+ "target": "tests_test_config_test_auth_disabled_rejected_in_test_environment"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L208",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_config_py",
+ "target": "tests_test_config_test_auth_not_disabled_allowed_in_any_environment"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_rationale_1",
+ "target": "backend_tests_test_config_py"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults",
+ "target": "tests_test_config_testsettingsdefaults_make_settings"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L38",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults",
+ "target": "tests_test_config_testsettingsdefaults_test_discord_client_id_defaults_to_empty"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L42",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults",
+ "target": "tests_test_config_testsettingsdefaults_test_discord_client_secret_defaults_to_empty"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L46",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults",
+ "target": "tests_test_config_testsettingsdefaults_test_discord_redirect_uri_defaults_to_empty"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L50",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults",
+ "target": "tests_test_config_testsettingsdefaults_test_session_secret_defaults_to_empty"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L54",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults",
+ "target": "tests_test_config_testsettingsdefaults_test_bot_service_token_defaults_to_empty"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L58",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults",
+ "target": "tests_test_config_testsettingsdefaults_test_auth_disabled_defaults_to_false"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L62",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults",
+ "target": "tests_test_config_testsettingsdefaults_test_discord_required_role_defaults_to_clan_deputies"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L66",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults",
+ "target": "tests_test_config_testsettingsdefaults_test_discord_required_role_accepts_override"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L70",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults",
+ "target": "tests_test_config_testsettingsdefaults_test_allowed_origins_defaults_to_localhost"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L74",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults",
+ "target": "tests_test_config_testsettingsdefaults_test_allowed_origins_accepts_override"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L78",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults",
+ "target": "tests_test_config_testsettingsdefaults_test_allowed_origins_accepts_comma_separated_values"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L82",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults",
+ "target": "tests_test_config_testsettingsdefaults_test_new_fields_accept_provided_values"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_rationale_24",
+ "target": "tests_test_config_testsettingsdefaults"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L39",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults_test_discord_client_id_defaults_to_empty",
+ "target": "tests_test_config_testsettingsdefaults_make_settings"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L43",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults_test_discord_client_secret_defaults_to_empty",
+ "target": "tests_test_config_testsettingsdefaults_make_settings"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L47",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults_test_discord_redirect_uri_defaults_to_empty",
+ "target": "tests_test_config_testsettingsdefaults_make_settings"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L51",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults_test_session_secret_defaults_to_empty",
+ "target": "tests_test_config_testsettingsdefaults_make_settings"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L55",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults_test_bot_service_token_defaults_to_empty",
+ "target": "tests_test_config_testsettingsdefaults_make_settings"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L59",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults_test_auth_disabled_defaults_to_false",
+ "target": "tests_test_config_testsettingsdefaults_make_settings"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L63",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults_test_discord_required_role_defaults_to_clan_deputies",
+ "target": "tests_test_config_testsettingsdefaults_make_settings"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L67",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults_test_discord_required_role_accepts_override",
+ "target": "tests_test_config_testsettingsdefaults_make_settings"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L71",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults_test_allowed_origins_defaults_to_localhost",
+ "target": "tests_test_config_testsettingsdefaults_make_settings"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L75",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults_test_allowed_origins_accepts_override",
+ "target": "tests_test_config_testsettingsdefaults_make_settings"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L79",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults_test_allowed_origins_accepts_comma_separated_values",
+ "target": "tests_test_config_testsettingsdefaults_make_settings"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L83",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testsettingsdefaults_test_new_fields_accept_provided_values",
+ "target": "tests_test_config_testsettingsdefaults_make_settings"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_rationale_27",
+ "target": "tests_test_config_testsettingsdefaults_make_settings"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L102",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_testenvironmentrequired",
+ "target": "tests_test_config_testenvironmentrequired_test_missing_environment_raises_validation_error"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L100",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_rationale_100",
+ "target": "tests_test_config_testenvironmentrequired"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config.py",
+ "source_location": "L127",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_rationale_127",
+ "target": "tests_test_config_testlifespanauthguard"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config_endpoint.py",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_config_endpoint_py",
+ "target": "tests_test_health_mock_db"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config_endpoint.py",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_config_endpoint_py",
+ "target": "tests_test_config_endpoint_override_db"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config_endpoint.py",
+ "source_location": "L67",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_config_endpoint_py",
+ "target": "tests_test_config_endpoint_test_config_returns_auth_disabled_true"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config_endpoint.py",
+ "source_location": "L94",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_config_endpoint_py",
+ "target": "tests_test_config_endpoint_test_config_endpoint_is_public"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config_endpoint.py",
+ "source_location": "L123",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_config_endpoint_py",
+ "target": "tests_test_config_endpoint_teststartupsessionsecretguard"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config_endpoint.py",
+ "source_location": "L127",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_config_endpoint_py",
+ "target": "tests_test_config_endpoint_test_missing_session_secret_raises_at_startup"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config_endpoint.py",
+ "source_location": "L149",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_config_endpoint_py",
+ "target": "tests_test_config_endpoint_test_changeme_placeholder_raises_at_startup"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config_endpoint.py",
+ "source_location": "L173",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_config_endpoint_py",
+ "target": "tests_test_config_endpoint_test_changeme_uppercase_raises_at_startup"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config_endpoint.py",
+ "source_location": "L197",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_config_endpoint_py",
+ "target": "tests_test_config_endpoint_test_present_session_secret_does_not_raise"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config_endpoint.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_endpoint_rationale_1",
+ "target": "backend_tests_test_config_endpoint_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config_endpoint.py",
+ "source_location": "L37",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_endpoint_rationale_37",
+ "target": "backend_tests_test_config_endpoint_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_config_endpoint.py",
+ "source_location": "L124",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_config_endpoint_rationale_124",
+ "target": "tests_test_config_endpoint_teststartupsessionsecretguard"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_cors_py",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L52",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_cors_py",
+ "target": "tests_test_cors_cors_headers"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L64",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_cors_py",
+ "target": "tests_test_cors_testallowedoriginsparsingintegration"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L112",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_cors_py",
+ "target": "tests_test_cors_testallowedoriginreceivescorsheaders"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L144",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_cors_py",
+ "target": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L176",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_cors_py",
+ "target": "tests_test_cors_testpreflightrequest"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_1",
+ "target": "backend_tests_test_cors_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L68",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration_test_single_origin_is_allowed",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L73",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration_test_first_of_two_origins_is_allowed",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L78",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration_test_second_of_two_origins_is_allowed",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L84",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration_test_whitespace_around_origins_is_stripped",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L90",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration_test_trailing_comma_is_ignored",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L96",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration_test_leading_comma_is_ignored",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L102",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration_test_whitespace_only_entries_are_excluded",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L128",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginreceivescorsheaders",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L122",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginreceivescorsheaders_test_allowed_origin_acao_matches_request_origin",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L134",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginreceivescorsheaders_test_localhost_dev_origin_allowed_by_default_config",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L148",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders_test_disallowed_origin_has_no_acao_header",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L154",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders_test_subdomain_not_allowed_when_only_apex_configured",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L160",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders_test_http_disallowed_when_only_https_configured",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L166",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders_test_wrong_port_disallowed",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L180",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testpreflightrequest_test_preflight_allowed_origin_returns_200",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L192",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testpreflightrequest_test_preflight_disallowed_origin_has_no_acao",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_27",
+ "target": "tests_test_cors_make_app"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L69",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration_test_single_origin_is_allowed",
+ "target": "tests_test_cors_cors_headers"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L74",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration_test_first_of_two_origins_is_allowed",
+ "target": "tests_test_cors_cors_headers"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L79",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration_test_second_of_two_origins_is_allowed",
+ "target": "tests_test_cors_cors_headers"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L85",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration_test_whitespace_around_origins_is_stripped",
+ "target": "tests_test_cors_cors_headers"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L91",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration_test_trailing_comma_is_ignored",
+ "target": "tests_test_cors_cors_headers"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L97",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration_test_leading_comma_is_ignored",
+ "target": "tests_test_cors_cors_headers"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L103",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration_test_whitespace_only_entries_are_excluded",
+ "target": "tests_test_cors_cors_headers"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L129",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginreceivescorsheaders",
+ "target": "tests_test_cors_cors_headers"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L123",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginreceivescorsheaders_test_allowed_origin_acao_matches_request_origin",
+ "target": "tests_test_cors_cors_headers"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L135",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginreceivescorsheaders_test_localhost_dev_origin_allowed_by_default_config",
+ "target": "tests_test_cors_cors_headers"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L149",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders_test_disallowed_origin_has_no_acao_header",
+ "target": "tests_test_cors_cors_headers"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L155",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders_test_subdomain_not_allowed_when_only_apex_configured",
+ "target": "tests_test_cors_cors_headers"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L161",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders_test_http_disallowed_when_only_https_configured",
+ "target": "tests_test_cors_cors_headers"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L167",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders_test_wrong_port_disallowed",
+ "target": "tests_test_cors_cors_headers"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L53",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_53",
+ "target": "tests_test_cors_cors_headers"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L67",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration",
+ "target": "tests_test_cors_testallowedoriginsparsingintegration_test_single_origin_is_allowed"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L72",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration",
+ "target": "tests_test_cors_testallowedoriginsparsingintegration_test_first_of_two_origins_is_allowed"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L77",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration",
+ "target": "tests_test_cors_testallowedoriginsparsingintegration_test_second_of_two_origins_is_allowed"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L82",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration",
+ "target": "tests_test_cors_testallowedoriginsparsingintegration_test_whitespace_around_origins_is_stripped"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L88",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration",
+ "target": "tests_test_cors_testallowedoriginsparsingintegration_test_trailing_comma_is_ignored"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L94",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration",
+ "target": "tests_test_cors_testallowedoriginsparsingintegration_test_leading_comma_is_ignored"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L100",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginsparsingintegration",
+ "target": "tests_test_cors_testallowedoriginsparsingintegration_test_whitespace_only_entries_are_excluded"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_65",
+ "target": "tests_test_cors_testallowedoriginsparsingintegration"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L83",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_83",
+ "target": "tests_test_cors_testallowedoriginsparsingintegration_test_whitespace_around_origins_is_stripped"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L89",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_89",
+ "target": "tests_test_cors_testallowedoriginsparsingintegration_test_trailing_comma_is_ignored"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L95",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_95",
+ "target": "tests_test_cors_testallowedoriginsparsingintegration_test_leading_comma_is_ignored"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L101",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_101",
+ "target": "tests_test_cors_testallowedoriginsparsingintegration_test_whitespace_only_entries_are_excluded"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L120",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginreceivescorsheaders",
+ "target": "tests_test_cors_testallowedoriginreceivescorsheaders_test_allowed_origin_acao_matches_request_origin"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L132",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testallowedoriginreceivescorsheaders",
+ "target": "tests_test_cors_testallowedoriginreceivescorsheaders_test_localhost_dev_origin_allowed_by_default_config"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L113",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_113",
+ "target": "tests_test_cors_testallowedoriginreceivescorsheaders"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L127",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_127",
+ "target": "tests_test_cors_testallowedoriginreceivescorsheaders"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L121",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_121",
+ "target": "tests_test_cors_testallowedoriginreceivescorsheaders_test_allowed_origin_acao_matches_request_origin"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L133",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_133",
+ "target": "tests_test_cors_testallowedoriginreceivescorsheaders_test_localhost_dev_origin_allowed_by_default_config"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L147",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders",
+ "target": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders_test_disallowed_origin_has_no_acao_header"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L152",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders",
+ "target": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders_test_subdomain_not_allowed_when_only_apex_configured"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L158",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders",
+ "target": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders_test_http_disallowed_when_only_https_configured"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L164",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders",
+ "target": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders_test_wrong_port_disallowed"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L145",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_145",
+ "target": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L153",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_153",
+ "target": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders_test_subdomain_not_allowed_when_only_apex_configured"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L159",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_159",
+ "target": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders_test_http_disallowed_when_only_https_configured"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L165",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_165",
+ "target": "tests_test_cors_testdisallowedoriginreceivesnocorsheaders_test_wrong_port_disallowed"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L179",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testpreflightrequest",
+ "target": "tests_test_cors_testpreflightrequest_test_preflight_allowed_origin_returns_200"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L191",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_testpreflightrequest",
+ "target": "tests_test_cors_testpreflightrequest_test_preflight_disallowed_origin_has_no_acao"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_cors.py",
+ "source_location": "L177",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_cors_rationale_177",
+ "target": "tests_test_cors_testpreflightrequest"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_discord_sync_py",
+ "target": "tests_test_discord_sync_make_sync_match"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L50",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_discord_sync_py",
+ "target": "tests_test_discord_sync_test_preview_returns_exact_match"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L75",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_discord_sync_py",
+ "target": "tests_test_discord_sync_test_preview_returns_suggested_match"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L95",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_discord_sync_py",
+ "target": "tests_test_discord_sync_test_preview_returns_ambiguous_match"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L135",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_discord_sync_py",
+ "target": "tests_test_discord_sync_test_preview_reports_unmatched_clan_members"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L160",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_discord_sync_py",
+ "target": "tests_test_discord_sync_test_apply_updates_matched_members"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L181",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_discord_sync_py",
+ "target": "tests_test_discord_sync_test_apply_with_empty_list_returns_zero"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L196",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_discord_sync_py",
+ "target": "tests_test_discord_sync_test_apply_with_unknown_member_id_skips_gracefully"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L262",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_discord_sync_py",
+ "target": "tests_test_discord_sync_test_service_preview_exact_discord_id_match"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L332",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_discord_sync_py",
+ "target": "tests_test_discord_sync_test_service_preview_suggested_name_username_match"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L368",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_discord_sync_py",
+ "target": "tests_test_discord_sync_test_service_preview_ambiguous_multiple_guild_matches"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L406",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_discord_sync_py",
+ "target": "tests_test_discord_sync_test_service_preview_unmatched_guild_and_clan"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L442",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_discord_sync_py",
+ "target": "tests_test_discord_sync_test_service_apply_updates_discord_fields"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L474",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_discord_sync_py",
+ "target": "tests_test_discord_sync_test_service_apply_unknown_member_id_skipped"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L498",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_discord_sync_py",
+ "target": "tests_test_discord_sync_test_service_apply_empty_list_returns_zero"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_1",
+ "target": "backend_tests_test_discord_sync_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L53",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_test_preview_returns_exact_match",
+ "target": "tests_test_discord_sync_make_sync_match"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L78",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_test_preview_returns_suggested_match",
+ "target": "tests_test_discord_sync_make_sync_match"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L98",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_test_preview_returns_ambiguous_match",
+ "target": "tests_test_discord_sync_make_sync_match"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L51",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_51",
+ "target": "tests_test_discord_sync_test_preview_returns_exact_match"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L76",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_76",
+ "target": "tests_test_discord_sync_test_preview_returns_suggested_match"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L96",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_96",
+ "target": "tests_test_discord_sync_test_preview_returns_ambiguous_match"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L116",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_116",
+ "target": "tests_test_discord_sync_test_preview_reports_unmatched_clan_members"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L136",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_136",
+ "target": "tests_test_discord_sync_test_preview_reports_unmatched_clan_members"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L161",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_161",
+ "target": "tests_test_discord_sync_test_apply_updates_matched_members"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L182",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_182",
+ "target": "tests_test_discord_sync_test_apply_with_empty_list_returns_zero"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L197",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_197",
+ "target": "tests_test_discord_sync_test_apply_with_unknown_member_id_skips_gracefully"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L224",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_224",
+ "target": "tests_test_discord_sync_test_service_preview_exact_discord_id_match"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L263",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_263",
+ "target": "tests_test_discord_sync_test_service_preview_exact_discord_id_match"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L298",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_298",
+ "target": "tests_test_discord_sync_test_service_preview_suggested_name_username_match"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L333",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_333",
+ "target": "tests_test_discord_sync_test_service_preview_suggested_name_username_match"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L369",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_369",
+ "target": "tests_test_discord_sync_test_service_preview_ambiguous_multiple_guild_matches"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L407",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_407",
+ "target": "tests_test_discord_sync_test_service_preview_unmatched_guild_and_clan"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L443",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_443",
+ "target": "tests_test_discord_sync_test_service_apply_updates_discord_fields"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L475",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_475",
+ "target": "tests_test_discord_sync_test_service_apply_unknown_member_id_skipped"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_discord_sync.py",
+ "source_location": "L499",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_sync_rationale_499",
+ "target": "tests_test_discord_sync_test_service_apply_empty_list_returns_zero"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_enums.py",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_enums_py",
+ "target": "tests_test_enums_test_building_type_labels_covers_all_values"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_enums.py",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_enums_py",
+ "target": "tests_test_enums_test_building_type_labels_are_friendly_strings"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_enums.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_enums_rationale_1",
+ "target": "backend_tests_test_enums_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_enums.py",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_enums_rationale_7",
+ "target": "tests_test_enums_test_building_type_labels_covers_all_values"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_enums.py",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_enums_rationale_17",
+ "target": "tests_test_enums_test_building_type_labels_are_friendly_strings"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_health.py",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_health_py",
+ "target": "tests_test_health_mock_db"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_health.py",
+ "source_location": "L18",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_health_py",
+ "target": "tests_test_health_test_health_returns_healthy"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_health.py",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_health_rationale_19",
+ "target": "tests_test_health_test_health_returns_healthy"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "pages_boardpage_test_makeboard"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L43",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L88",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_contains_title"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L95",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_contains_building_type"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L105",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_reserve_cell"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L114",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_disabled_cell"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L123",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_empty_board"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L130",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_all_building_types_colored"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L150",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_reserves_html_contains_title"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L156",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_reserves_html_contains_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L355",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_reserves_html_day1_color"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L174",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_reserves_html_no_role_column"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L194",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_generate_assignments_image_calls_render"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L211",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_generate_reserves_image_calls_render"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L231",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_group_header_present"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L242",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_group_header_before_members"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L254",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_single_row_per_group"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L281",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_buildings_side_by_side"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L315",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_heavy_hitter_color"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L328",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_no_role_map_fallback"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L339",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_role_color_on_span_not_background"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L363",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_reserves_html_novice_color"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L371",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_reserves_html_fallback_color"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L405",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_role_colors_match_ui"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L430",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_reserves_html_role_colors_match_ui"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L443",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_no_level_in_header"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L456",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_broken_building_no_level"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L468",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_building_number_in_thead"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L482",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_post_flat_table"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L516",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_image_gen_py",
+ "target": "tests_test_image_gen_test_build_assignments_html_post_reserve_and_disabled"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_1",
+ "target": "backend_tests_test_image_gen_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L98",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_contains_building_type",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L108",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_reserve_cell",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L117",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_disabled_cell",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L132",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_all_building_types_colored",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L235",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_group_header_present",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L246",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_group_header_before_members",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L263",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_single_row_per_group",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L290",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_buildings_side_by_side",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L319",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_heavy_hitter_color",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L332",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_no_role_map_fallback",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L343",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_role_color_on_span_not_background",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L414",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_role_colors_match_ui",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L446",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_no_level_in_header",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L459",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_broken_building_no_level",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L471",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_building_number_in_thead",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L484",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_post_flat_table",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L518",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_post_reserve_and_disabled",
+ "target": "tests_test_image_gen_make_building_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L97",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_contains_building_type",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L107",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_reserve_cell",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L116",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_disabled_cell",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L233",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_group_header_present",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L244",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_group_header_before_members",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L262",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_single_row_per_group",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L288",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_buildings_side_by_side",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L318",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_heavy_hitter_color",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L331",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_no_role_map_fallback",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L342",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_role_color_on_span_not_background",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L413",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_role_colors_match_ui",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L445",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_no_level_in_header",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L458",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_broken_building_no_level",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L470",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_building_number_in_thead",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L488",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_post_flat_table",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L522",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_post_reserve_and_disabled",
+ "target": "tests_test_image_gen_make_group_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L89",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_contains_title",
+ "target": "pages_boardpage_test_makeboard"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L124",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_build_assignments_html_empty_board",
+ "target": "pages_boardpage_test_makeboard"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L356",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_356",
+ "target": "tests_test_image_gen_test_build_reserves_html_day1_color"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L175",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_175",
+ "target": "tests_test_image_gen_test_build_reserves_html_no_role_column"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L195",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_test_generate_assignments_image_calls_render",
+ "target": "pages_boardpage_test_makeboard"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L232",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_232",
+ "target": "tests_test_image_gen_test_build_assignments_html_group_header_present"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L243",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_243",
+ "target": "tests_test_image_gen_test_build_assignments_html_group_header_before_members"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L255",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_255",
+ "target": "tests_test_image_gen_test_build_assignments_html_single_row_per_group"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L282",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_282",
+ "target": "tests_test_image_gen_test_build_assignments_html_buildings_side_by_side"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L316",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_316",
+ "target": "tests_test_image_gen_test_build_assignments_html_heavy_hitter_color"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L329",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_329",
+ "target": "tests_test_image_gen_test_build_assignments_html_no_role_map_fallback"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L340",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_340",
+ "target": "tests_test_image_gen_test_build_assignments_html_role_color_on_span_not_background"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L364",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_364",
+ "target": "tests_test_image_gen_test_build_reserves_html_novice_color"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L372",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_372",
+ "target": "tests_test_image_gen_test_build_reserves_html_fallback_color"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L406",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_406",
+ "target": "tests_test_image_gen_test_build_assignments_html_role_colors_match_ui"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L431",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_431",
+ "target": "tests_test_image_gen_test_build_reserves_html_role_colors_match_ui"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L444",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_444",
+ "target": "tests_test_image_gen_test_build_assignments_html_no_level_in_header"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L457",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_457",
+ "target": "tests_test_image_gen_test_build_assignments_html_broken_building_no_level"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L469",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_469",
+ "target": "tests_test_image_gen_test_build_assignments_html_building_number_in_thead"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L483",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_483",
+ "target": "tests_test_image_gen_test_build_assignments_html_post_flat_table"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_image_gen.py",
+ "source_location": "L517",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_image_gen_rationale_517",
+ "target": "tests_test_image_gen_test_build_assignments_html_post_reserve_and_disabled"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_py",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L43",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_py",
+ "target": "tests_test_lifecycle_test_activate_planning_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L66",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_py",
+ "target": "tests_test_lifecycle_test_activate_already_active_returns_400"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L85",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_py",
+ "target": "tests_test_lifecycle_test_complete_active_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L108",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_py",
+ "target": "tests_test_lifecycle_test_complete_planning_siege_returns_400"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L127",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_py",
+ "target": "tests_test_lifecycle_test_clone_siege_returns_201"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L154",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_py",
+ "target": "tests_test_lifecycle_make_post_ns"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L166",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_py",
+ "target": "tests_test_lifecycle_make_src_position_ns"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L176",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_py",
+ "target": "tests_test_lifecycle_make_src_group_ns"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L184",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_py",
+ "target": "tests_test_lifecycle_make_src_building_ns"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L196",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_py",
+ "target": "tests_test_lifecycle_test_clone_uses_post_priority_config_not_source_priority"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_rationale_1",
+ "target": "backend_tests_test_lifecycle_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L44",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_test_activate_planning_siege",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L86",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_test_complete_active_siege",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L128",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_test_clone_siege_returns_201",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L205",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_test_clone_uses_post_priority_config_not_source_priority",
+ "target": "tests_test_lifecycle_make_post_ns"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L209",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_test_clone_uses_post_priority_config_not_source_priority",
+ "target": "tests_test_lifecycle_make_src_position_ns"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L206",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_test_clone_uses_post_priority_config_not_source_priority",
+ "target": "tests_test_lifecycle_make_src_group_ns"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L211",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_test_clone_uses_post_priority_config_not_source_priority",
+ "target": "tests_test_lifecycle_make_src_building_ns"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle.py",
+ "source_location": "L197",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_rationale_197",
+ "target": "tests_test_lifecycle_test_clone_uses_post_priority_config_not_source_priority"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L18",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_integration_py",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L67",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_integration_py",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L80",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_integration_py",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L100",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_integration_py",
+ "target": "tests_test_validation_default_configs"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L112",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_integration_py",
+ "target": "tests_test_lifecycle_integration_build_valid_siege_graph"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L182",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_integration_py",
+ "target": "tests_test_post_suggestions_make_session"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L215",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_lifecycle_integration_py",
+ "target": "tests_test_lifecycle_integration_test_full_siege_lifecycle"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_integration_rationale_1",
+ "target": "backend_tests_test_lifecycle_integration_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L121",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_integration_build_valid_siege_graph",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L171",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_integration_build_valid_siege_graph",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L230",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_integration_test_full_siege_lifecycle",
+ "target": "tests_test_lifecycle_integration_build_valid_siege_graph"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L113",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_integration_rationale_113",
+ "target": "tests_test_lifecycle_integration_build_valid_siege_graph"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L219",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_integration_test_full_siege_lifecycle",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L221",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_integration_test_full_siege_lifecycle",
+ "target": "tests_test_post_suggestions_make_session"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L216",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_integration_rationale_216",
+ "target": "tests_test_lifecycle_integration_test_full_siege_lifecycle"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_lifecycle_integration.py",
+ "source_location": "L183",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_lifecycle_integration_rationale_183",
+ "target": "tests_test_post_suggestions_make_session"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_members.py",
+ "source_location": "L43",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_members_py",
+ "target": "tests_test_members_test_list_members_returns_empty_list"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_members.py",
+ "source_location": "L59",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_members_py",
+ "target": "tests_test_members_test_create_member_returns_201"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_members.py",
+ "source_location": "L83",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_members_py",
+ "target": "tests_test_members_test_create_member_duplicate_name_returns_409"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_members.py",
+ "source_location": "L106",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_members_py",
+ "target": "tests_test_members_test_get_member_not_found_returns_404"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_members.py",
+ "source_location": "L124",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_members_py",
+ "target": "tests_test_members_test_delete_member_returns_204"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_members.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_sieges_rationale_1",
+ "target": "backend_tests_test_members_py"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_member_changelog_column_py",
+ "target": "tests_test_member_changelog_column_test_last_seen_changelog_at_column_exists"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L32",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_member_changelog_column_py",
+ "target": "tests_test_member_changelog_column_test_last_seen_changelog_at_column_is_nullable"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L50",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_member_changelog_column_py",
+ "target": "tests_test_member_changelog_column_test_last_seen_changelog_at_has_no_server_default"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L68",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_member_changelog_column_py",
+ "target": "tests_test_member_changelog_column_test_last_seen_changelog_at_column_type_is_datetime"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L89",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_member_changelog_column_py",
+ "target": "tests_test_member_changelog_column_test_last_seen_changelog_at_accepts_none_at_python_level"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L103",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_member_changelog_column_py",
+ "target": "tests_test_member_changelog_column_test_last_seen_changelog_at_accepts_datetime_at_python_level"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_member_changelog_column_rationale_1",
+ "target": "backend_tests_test_member_changelog_column_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_member_changelog_column_rationale_21",
+ "target": "tests_test_member_changelog_column_test_last_seen_changelog_at_column_exists"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_member_changelog_column_rationale_33",
+ "target": "tests_test_member_changelog_column_test_last_seen_changelog_at_column_is_nullable"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L51",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_member_changelog_column_rationale_51",
+ "target": "tests_test_member_changelog_column_test_last_seen_changelog_at_has_no_server_default"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L69",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_member_changelog_column_rationale_69",
+ "target": "tests_test_member_changelog_column_test_last_seen_changelog_at_column_type_is_datetime"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L90",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_member_changelog_column_rationale_90",
+ "target": "tests_test_member_changelog_column_test_last_seen_changelog_at_accepts_none_at_python_level"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_member_changelog_column.py",
+ "source_location": "L104",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_member_changelog_column_rationale_104",
+ "target": "tests_test_member_changelog_column_test_last_seen_changelog_at_accepts_datetime_at_python_level"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L52",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L69",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_make_batch"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L82",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_make_batch_result"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L112",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_make_db_session"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L151",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_notify_returns_batch_id"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L221",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_notify_siege_not_found"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L247",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_notify_siege_complete_returns_400"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L272",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_get_notification_batch_returns_results"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L324",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_get_notification_batch_not_found"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L354",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_post_to_channel_success"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L415",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_post_to_channel_posts_images_to_images_channel_and_summary_to_text_channel"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L497",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_post_to_channel_image_failure_returns_failed"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L556",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_notify_skips_member_with_no_discord_username"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L620",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_notify_skips_member_not_in_guild"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L679",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_notify_eligible_member_gets_result_row_and_dm"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L745",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_notify_skipped_count_reflects_all_skipped_members"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L809",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_notify_blocked_when_siege_has_validation_errors"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L855",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_notify_passes_validation_guard_when_no_errors"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L912",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_notify_bot_unreachable_falls_back_to_username_filter"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L979",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_send_dms_sets_completed_status_even_when_bot_raises"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L1041",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_notify_no_date_returns_400"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L1068",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notifications_py",
+ "target": "tests_test_notifications_test_post_to_channel_no_date_returns_400"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_rationale_1",
+ "target": "backend_tests_test_notifications_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L154",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_returns_batch_id",
+ "target": "tests_test_notifications_make_batch"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L273",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_get_notification_batch_returns_results",
+ "target": "tests_test_notifications_make_batch"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L987",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_send_dms_sets_completed_status_even_when_bot_raises",
+ "target": "tests_test_notifications_make_batch"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L274",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_get_notification_batch_returns_results",
+ "target": "tests_test_notifications_make_batch_result"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L988",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_send_dms_sets_completed_status_even_when_bot_raises",
+ "target": "tests_test_notifications_make_batch_result"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L113",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_rationale_113",
+ "target": "tests_test_notifications_make_db_session"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L152",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_returns_batch_id",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L153",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_returns_batch_id",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L248",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_siege_complete_returns_400",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L355",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_post_to_channel_success",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L356",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_post_to_channel_success",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L420",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_post_to_channel_posts_images_to_images_channel_and_summary_to_text_channel",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L421",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_post_to_channel_posts_images_to_images_channel_and_summary_to_text_channel",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L416",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_rationale_416",
+ "target": "tests_test_notifications_test_post_to_channel_posts_images_to_images_channel_and_summary_to_text_channel"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L499",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_post_to_channel_image_failure_returns_failed",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L500",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_post_to_channel_image_failure_returns_failed",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L498",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_rationale_498",
+ "target": "tests_test_notifications_test_post_to_channel_image_failure_returns_failed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L558",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_skips_member_with_no_discord_username",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L559",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_skips_member_with_no_discord_username",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L557",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_rationale_557",
+ "target": "tests_test_notifications_test_notify_skips_member_with_no_discord_username"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L622",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_skips_member_not_in_guild",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L623",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_skips_member_not_in_guild",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L621",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_rationale_621",
+ "target": "tests_test_notifications_test_notify_skips_member_not_in_guild"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L681",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_eligible_member_gets_result_row_and_dm",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L682",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_eligible_member_gets_result_row_and_dm",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L680",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_rationale_680",
+ "target": "tests_test_notifications_test_notify_eligible_member_gets_result_row_and_dm"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L747",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_skipped_count_reflects_all_skipped_members",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L748",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_skipped_count_reflects_all_skipped_members",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L746",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_rationale_746",
+ "target": "tests_test_notifications_test_notify_skipped_count_reflects_all_skipped_members"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L813",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_blocked_when_siege_has_validation_errors",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L810",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_rationale_810",
+ "target": "tests_test_notifications_test_notify_blocked_when_siege_has_validation_errors"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L859",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_passes_validation_guard_when_no_errors",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L860",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_passes_validation_guard_when_no_errors",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L856",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_rationale_856",
+ "target": "tests_test_notifications_test_notify_passes_validation_guard_when_no_errors"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L918",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_bot_unreachable_falls_back_to_username_filter",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L919",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_bot_unreachable_falls_back_to_username_filter",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L913",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_rationale_913",
+ "target": "tests_test_notifications_test_notify_bot_unreachable_falls_back_to_username_filter"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L980",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_rationale_980",
+ "target": "tests_test_notifications_test_send_dms_sets_completed_status_even_when_bot_raises"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L1043",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_notify_no_date_returns_400",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L1042",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_rationale_1042",
+ "target": "tests_test_notifications_test_notify_no_date_returns_400"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L1070",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_test_post_to_channel_no_date_returns_400",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notifications.py",
+ "source_location": "L1069",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notifications_rationale_1069",
+ "target": "tests_test_notifications_test_post_to_channel_no_date_returns_400"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L31",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_stronghold_pos"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L40",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_defense_tower_pos"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L49",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L63",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_no_previous_siege_all_current_in_set_at"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L84",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_empty_sections_omitted_all_no_change"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L105",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_full_diff_three_sections"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L149",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_header_contains_siege_date_and_member_settings"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L169",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_none_fields_display_as_unknown"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L183",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_false_reserve_set_displays_no"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L201",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_single_building_type_omits_building_number"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L222",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_multiple_building_type_includes_building_number"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L241",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_post_always_uses_short_format"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L257",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_post_with_single_count_still_uses_short_format"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L276",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_section_order_no_change_then_remove_then_set_at"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L303",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_positions_sorted_within_section"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L336",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_no_change_section_has_header_and_plain_position_lines"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L361",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_remove_from_section_has_header_and_plain_position_lines"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L385",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_set_at_section_has_header_and_plain_position_lines"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L414",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_blank_line_between_no_change_and_remove_from"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L431",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_blank_line_between_remove_from_and_set_at"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L447",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_no_blank_line_when_only_one_section"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L464",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_blank_line_count_with_all_three_sections"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L488",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_all_three_section_headers_exact_format"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L508",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_notification_message_py",
+ "target": "tests_test_notification_message_test_header_line_not_a_position_line"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_1",
+ "target": "backend_tests_test_notification_message_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_no_previous_siege_all_current_in_set_at",
+ "target": "tests_test_notification_message_stronghold_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L86",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_empty_sections_omitted_all_no_change",
+ "target": "tests_test_notification_message_stronghold_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L107",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_full_diff_three_sections",
+ "target": "tests_test_notification_message_stronghold_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L203",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_single_building_type_omits_building_number",
+ "target": "tests_test_notification_message_stronghold_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L278",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_section_order_no_change_then_remove_then_set_at",
+ "target": "tests_test_notification_message_stronghold_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L306",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_positions_sorted_within_section",
+ "target": "tests_test_notification_message_stronghold_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L342",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_no_change_section_has_header_and_plain_position_lines",
+ "target": "tests_test_notification_message_stronghold_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L416",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_blank_line_between_no_change_and_remove_from",
+ "target": "tests_test_notification_message_stronghold_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L467",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_blank_line_count_with_all_three_sections",
+ "target": "tests_test_notification_message_stronghold_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L490",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_all_three_section_headers_exact_format",
+ "target": "tests_test_notification_message_stronghold_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L224",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_multiple_building_type_includes_building_number",
+ "target": "tests_test_notification_message_defense_tower_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L279",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_section_order_no_change_then_remove_then_set_at",
+ "target": "tests_test_notification_message_defense_tower_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_no_previous_siege_all_current_in_set_at",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L86",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_empty_sections_omitted_all_no_change",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L108",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_full_diff_three_sections",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L243",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_post_always_uses_short_format",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L259",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_post_with_single_count_still_uses_short_format",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L280",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_section_order_no_change_then_remove_then_set_at",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L307",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_positions_sorted_within_section",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L342",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_no_change_section_has_header_and_plain_position_lines",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L372",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_remove_from_section_has_header_and_plain_position_lines",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L395",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_set_at_section_has_header_and_plain_position_lines",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L417",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_blank_line_between_no_change_and_remove_from",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L433",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_blank_line_between_remove_from_and_set_at",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L453",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_no_blank_line_when_only_one_section",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L468",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_blank_line_count_with_all_three_sections",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L491",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_all_three_section_headers_exact_format",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L514",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_test_header_line_not_a_position_line",
+ "target": "tests_test_notification_message_post_pos"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L64",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_64",
+ "target": "tests_test_notification_message_test_no_previous_siege_all_current_in_set_at"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L85",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_85",
+ "target": "tests_test_notification_message_test_empty_sections_omitted_all_no_change"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L106",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_106",
+ "target": "tests_test_notification_message_test_full_diff_three_sections"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L150",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_150",
+ "target": "tests_test_notification_message_test_header_contains_siege_date_and_member_settings"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L170",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_170",
+ "target": "tests_test_notification_message_test_none_fields_display_as_unknown"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L184",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_184",
+ "target": "tests_test_notification_message_test_false_reserve_set_displays_no"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L202",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_202",
+ "target": "tests_test_notification_message_test_single_building_type_omits_building_number"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L223",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_202",
+ "target": "tests_test_notification_message_test_multiple_building_type_includes_building_number"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L242",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_242",
+ "target": "tests_test_notification_message_test_post_always_uses_short_format"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L258",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_258",
+ "target": "tests_test_notification_message_test_post_with_single_count_still_uses_short_format"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L277",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_277",
+ "target": "tests_test_notification_message_test_section_order_no_change_then_remove_then_set_at"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L304",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_304",
+ "target": "tests_test_notification_message_test_positions_sorted_within_section"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L337",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_337",
+ "target": "tests_test_notification_message_test_no_change_section_has_header_and_plain_position_lines"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L362",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_362",
+ "target": "tests_test_notification_message_test_remove_from_section_has_header_and_plain_position_lines"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L386",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_386",
+ "target": "tests_test_notification_message_test_set_at_section_has_header_and_plain_position_lines"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L415",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_415",
+ "target": "tests_test_notification_message_test_blank_line_between_no_change_and_remove_from"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L432",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_432",
+ "target": "tests_test_notification_message_test_blank_line_between_remove_from_and_set_at"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L448",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_448",
+ "target": "tests_test_notification_message_test_no_blank_line_when_only_one_section"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L465",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_465",
+ "target": "tests_test_notification_message_test_blank_line_count_with_all_three_sections"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L489",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_489",
+ "target": "tests_test_notification_message_test_all_three_section_headers_exact_format"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_notification_message.py",
+ "source_location": "L509",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_notification_message_rationale_509",
+ "target": "tests_test_notification_message_test_header_line_not_a_position_line"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_posts_py",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L25",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_posts_py",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L55",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_posts_py",
+ "target": "tests_test_posts_test_list_posts_returns_list"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L76",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_posts_py",
+ "target": "tests_test_posts_test_update_post_priority"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L93",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_posts_py",
+ "target": "tests_test_posts_test_set_post_conditions_too_many_returns_400"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L114",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_posts_py",
+ "target": "tests_test_posts_test_list_posts_sorted_by_building_number"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_posts_rationale_1",
+ "target": "backend_tests_test_posts_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L40",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_posts_make_post",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L88",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L216",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_single_post_single_member_match",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L245",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_no_match_produces_skip_reason_no_match",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L270",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_reserve_position_produces_skip_reason_reserve",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L289",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_disabled_position_produces_skip_reason_disabled",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L318",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_no_active_conditions_produces_skip_reason_no_conditions",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L344",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_conditions_but_no_matching_member_still_no_match",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L371",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_mixed_no_conditions_no_match_and_assigned_in_one_preview",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L419",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_higher_priority_post_gets_member_first",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L454",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_second_post_prefers_different_condition",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L488",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_prefers_less_loaded_member",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L516",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_name_tiebreak_picks_alphabetically_lower",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L540",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_duplicate_penalty_beats_assignment_count",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L572",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_determinism_same_output_on_repeat",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L621",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_current_member_preferred_when_equally_qualified",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L669",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_lowest_condition_id_picked_as_tiebreak",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L718",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_suboptimality_invariants_hold",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L771",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_true_when_same_assignment",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L791",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_false_for_null_suggestion",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L821",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_no_members_all_skip_no_match",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1196",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_skips_post_when_only_candidate_has_used_condition",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L45",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L221",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule1_inactive_member_error",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L241",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule1_active_member_no_error",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L270",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_broken_building_assignment_counts_toward_scroll_limit",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L308",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_broken_and_healthy_both_count_toward_scroll_limit",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L348",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_exceeds_scroll_count",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L370",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_within_scroll_count",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L408",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule3_valid_building_number",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L425",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule4_invalid_group_number",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L442",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule4_valid_group_number",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L459",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule5_position_number_exceeds_slot_count",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L476",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule5_valid_position_number",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L516",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule7_post_has_multiple_groups",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L538",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule7_post_has_exactly_one_group",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L558",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_disabled_with_member",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L576",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_reserve_with_member",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L594",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_valid_state",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L631",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule9_correct_building_count",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L648",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule10_empty_unresolved_slot",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L667",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule10_message_uses_position_name",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L692",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule10_no_warning_when_disabled",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L713",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_member_pref_no_match",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L740",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_no_warning_when_no_preferences",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L765",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule13_missing_attack_day_assigned_member",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L801",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule13_attack_day_set",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L851",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_hh_no_reserve",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L871",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_advanced_no_reserve",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L891",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_hh_reserve_configured",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L911",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_non_hh_no_reserve_no_warning",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L930",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule16_post_fewer_than_3_conditions",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L957",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule16_post_has_3_conditions",
+ "target": "tests_test_posts_make_building"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L56",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_posts_test_list_posts_returns_list",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L77",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_posts_test_update_post_priority",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L123",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_posts_test_list_posts_sorted_by_building_number",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L102",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L217",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_single_post_single_member_match",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L246",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_no_match_produces_skip_reason_no_match",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L271",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_reserve_position_produces_skip_reason_reserve",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L290",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_disabled_position_produces_skip_reason_disabled",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L320",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_no_active_conditions_produces_skip_reason_no_conditions",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L345",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_conditions_but_no_matching_member_still_no_match",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L372",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_mixed_no_conditions_no_match_and_assigned_in_one_preview",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L420",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_higher_priority_post_gets_member_first",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L456",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_second_post_prefers_different_condition",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L489",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_prefers_less_loaded_member",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L517",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_name_tiebreak_picks_alphabetically_lower",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L541",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_duplicate_penalty_beats_assignment_count",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L573",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_determinism_same_output_on_repeat",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L622",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_current_member_preferred_when_equally_qualified",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L670",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_lowest_condition_id_picked_as_tiebreak",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L720",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_suboptimality_invariants_hold",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L772",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_true_when_same_assignment",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L792",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_false_for_null_suggestion",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L822",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_no_members_all_skip_no_match",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1197",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_skips_post_when_only_candidate_has_used_condition",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L115",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L711",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_member_pref_no_match",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L738",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_no_warning_when_no_preferences",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L928",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule16_post_fewer_than_3_conditions",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L955",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule16_post_has_3_conditions",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L115",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L97",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.test.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "tests_test_posts_make_post"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_posts.py",
+ "source_location": "L115",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_posts_rationale_115",
+ "target": "tests_test_posts_test_list_posts_sorted_by_building_number"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L42",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L61",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L117",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L140",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_make_session"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L155",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L195",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_raises_400_on_completed_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L209",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_single_post_single_member_match"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L237",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_no_match_produces_skip_reason_no_match"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L263",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_reserve_position_produces_skip_reason_reserve"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L282",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_disabled_position_produces_skip_reason_disabled"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L306",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_post_with_no_active_conditions_produces_skip_reason_no_conditions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L332",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_post_with_conditions_but_no_matching_member_still_no_match"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L356",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_mixed_no_conditions_no_match_and_assigned_in_one_preview"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L400",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_higher_priority_post_gets_member_first"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L444",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_second_post_prefers_different_condition"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L478",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_prefers_less_loaded_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L506",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_name_tiebreak_picks_alphabetically_lower"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L527",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_duplicate_penalty_beats_assignment_count"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L564",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_determinism_same_output_on_repeat"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L591",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_current_member_preferred_when_equally_qualified"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L660",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_lowest_condition_id_picked_as_tiebreak"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L685",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_suboptimality_invariants_hold"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L763",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_matches_current_true_when_same_assignment"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L783",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_matches_current_false_for_null_suggestion"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L808",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_empty_siege_returns_empty_assignments"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L816",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_no_members_all_skip_no_match"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L883",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_apply"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L926",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_preview_data"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L931",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_entry_dict"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L955",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_apply_expired_preview_raises_409"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L969",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_apply_missing_preview_raises_409"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L978",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_apply_empty_position_ids_is_noop"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L994",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_apply_unknown_position_ids_silently_ignored"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1011",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_apply_null_member_entries_are_skipped"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1025",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_apply_subset_only_writes_checked_positions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1054",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_apply_stale_position_disabled_returns_409"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1072",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_apply_stale_position_reserve_returns_409"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1090",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_apply_stale_member_inactive_returns_409"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1108",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_apply_member_changed_returns_409"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1127",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_apply_multiple_stale_all_surfaced_in_single_409"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1157",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_apply_completed_siege_raises_400"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1182",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_py",
+ "target": "tests_test_post_suggestions_test_preview_skips_post_when_only_candidate_has_used_condition"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_1",
+ "target": "backend_tests_test_post_suggestions_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L157",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_preview",
+ "target": "tests_test_post_suggestions_make_session"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L141",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_141",
+ "target": "tests_test_post_suggestions_make_session"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L199",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_raises_400_on_completed_siege",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L220",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_single_post_single_member_match",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L249",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_no_match_produces_skip_reason_no_match",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L274",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_reserve_position_produces_skip_reason_reserve",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L293",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_disabled_position_produces_skip_reason_disabled",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L323",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_no_active_conditions_produces_skip_reason_no_conditions",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L348",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_conditions_but_no_matching_member_still_no_match",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L385",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_mixed_no_conditions_no_match_and_assigned_in_one_preview",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L429",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_higher_priority_post_gets_member_first",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L465",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_second_post_prefers_different_condition",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L493",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_prefers_less_loaded_member",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L520",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_name_tiebreak_picks_alphabetically_lower",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L554",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_duplicate_penalty_beats_assignment_count",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L580",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_determinism_same_output_on_repeat",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L626",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_current_member_preferred_when_equally_qualified",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L673",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_lowest_condition_id_picked_as_tiebreak",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L728",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_suboptimality_invariants_hold",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L775",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_true_when_same_assignment",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L795",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_false_for_null_suggestion",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L811",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_empty_siege_returns_empty_assignments",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L825",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_no_members_all_skip_no_match",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1206",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_skips_post_when_only_candidate_has_used_condition",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L156",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_156",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L665",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L200",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "tests_test_post_suggestions_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L163",
+ "weight": 1.0,
+ "source": "tests_test_post_suggestions_preview",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L197",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_raises_400_on_completed_siege",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L196",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_196",
+ "target": "tests_test_post_suggestions_test_preview_raises_400_on_completed_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L211",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_single_post_single_member_match",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L213",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_single_post_single_member_match",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L218",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_single_post_single_member_match",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L210",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_210",
+ "target": "tests_test_post_suggestions_test_preview_single_post_single_member_match"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L239",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_no_match_produces_skip_reason_no_match",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L242",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_no_match_produces_skip_reason_no_match",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L247",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_no_match_produces_skip_reason_no_match",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L238",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_238",
+ "target": "tests_test_post_suggestions_test_preview_no_match_produces_skip_reason_no_match"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L265",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_reserve_position_produces_skip_reason_reserve",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L267",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_reserve_position_produces_skip_reason_reserve",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L272",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_reserve_position_produces_skip_reason_reserve",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L264",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_264",
+ "target": "tests_test_post_suggestions_test_preview_reserve_position_produces_skip_reason_reserve"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L284",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_disabled_position_produces_skip_reason_disabled",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L286",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_disabled_position_produces_skip_reason_disabled",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L291",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_disabled_position_produces_skip_reason_disabled",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L283",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_283",
+ "target": "tests_test_post_suggestions_test_preview_disabled_position_produces_skip_reason_disabled"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L314",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_no_active_conditions_produces_skip_reason_no_conditions",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L315",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_no_active_conditions_produces_skip_reason_no_conditions",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L321",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_no_active_conditions_produces_skip_reason_no_conditions",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L307",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_307",
+ "target": "tests_test_post_suggestions_test_preview_post_with_no_active_conditions_produces_skip_reason_no_conditions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L338",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_conditions_but_no_matching_member_still_no_match",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L341",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_conditions_but_no_matching_member_still_no_match",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L346",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_post_with_conditions_but_no_matching_member_still_no_match",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L333",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_333",
+ "target": "tests_test_post_suggestions_test_preview_post_with_conditions_but_no_matching_member_still_no_match"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L364",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_mixed_no_conditions_no_match_and_assigned_in_one_preview",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L367",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_mixed_no_conditions_no_match_and_assigned_in_one_preview",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L384",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_mixed_no_conditions_no_match_and_assigned_in_one_preview",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L357",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_357",
+ "target": "tests_test_post_suggestions_test_preview_mixed_no_conditions_no_match_and_assigned_in_one_preview"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L411",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_higher_priority_post_gets_member_first",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L414",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_higher_priority_post_gets_member_first",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L427",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_higher_priority_post_gets_member_first",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L401",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_401",
+ "target": "tests_test_post_suggestions_test_preview_higher_priority_post_gets_member_first"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L446",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_second_post_prefers_different_condition",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L450",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_second_post_prefers_different_condition",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L464",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_second_post_prefers_different_condition",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L445",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_445",
+ "target": "tests_test_post_suggestions_test_preview_second_post_prefers_different_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L480",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_prefers_less_loaded_member",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L483",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_prefers_less_loaded_member",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L491",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_prefers_less_loaded_member",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L479",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_479",
+ "target": "tests_test_post_suggestions_test_preview_prefers_less_loaded_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L508",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_name_tiebreak_picks_alphabetically_lower",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L511",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_name_tiebreak_picks_alphabetically_lower",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L519",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_name_tiebreak_picks_alphabetically_lower",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L507",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_507",
+ "target": "tests_test_post_suggestions_test_preview_name_tiebreak_picks_alphabetically_lower"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L530",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_duplicate_penalty_beats_assignment_count",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L535",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_duplicate_penalty_beats_assignment_count",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L553",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_duplicate_penalty_beats_assignment_count",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L528",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_528",
+ "target": "tests_test_post_suggestions_test_preview_duplicate_penalty_beats_assignment_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L566",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_determinism_same_output_on_repeat",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L575",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_determinism_same_output_on_repeat",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L577",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_determinism_same_output_on_repeat",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L565",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_565",
+ "target": "tests_test_post_suggestions_test_preview_determinism_same_output_on_repeat"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L611",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_current_member_preferred_when_equally_qualified",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L614",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_current_member_preferred_when_equally_qualified",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L623",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_current_member_preferred_when_equally_qualified",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L592",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_592",
+ "target": "tests_test_post_suggestions_test_preview_current_member_preferred_when_equally_qualified"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L662",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_lowest_condition_id_picked_as_tiebreak",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L665",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_lowest_condition_id_picked_as_tiebreak",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L671",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_lowest_condition_id_picked_as_tiebreak",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L661",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_661",
+ "target": "tests_test_post_suggestions_test_preview_lowest_condition_id_picked_as_tiebreak"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L706",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_suboptimality_invariants_hold",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L713",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_suboptimality_invariants_hold",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L727",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_suboptimality_invariants_hold",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L686",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_686",
+ "target": "tests_test_post_suggestions_test_preview_suboptimality_invariants_hold"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L765",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_true_when_same_assignment",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L767",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_true_when_same_assignment",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L773",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_true_when_same_assignment",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L764",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_764",
+ "target": "tests_test_post_suggestions_test_preview_matches_current_true_when_same_assignment"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L785",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_false_for_null_suggestion",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L788",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_false_for_null_suggestion",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L793",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_matches_current_false_for_null_suggestion",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L784",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_784",
+ "target": "tests_test_post_suggestions_test_preview_matches_current_false_for_null_suggestion"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L810",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_empty_siege_returns_empty_assignments",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L809",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_809",
+ "target": "tests_test_post_suggestions_test_preview_empty_siege_returns_empty_assignments"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L818",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_no_members_all_skip_no_match",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L823",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_no_members_all_skip_no_match",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L817",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_817",
+ "target": "tests_test_post_suggestions_test_preview_no_members_all_skip_no_match"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L963",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_expired_preview_raises_409",
+ "target": "tests_test_post_suggestions_apply"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L973",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_missing_preview_raises_409",
+ "target": "tests_test_post_suggestions_apply"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L989",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_empty_position_ids_is_noop",
+ "target": "tests_test_post_suggestions_apply"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1006",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_unknown_position_ids_silently_ignored",
+ "target": "tests_test_post_suggestions_apply"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1020",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_null_member_entries_are_skipped",
+ "target": "tests_test_post_suggestions_apply"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1041",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_subset_only_writes_checked_positions",
+ "target": "tests_test_post_suggestions_apply"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1065",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_position_disabled_returns_409",
+ "target": "tests_test_post_suggestions_apply"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1083",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_position_reserve_returns_409",
+ "target": "tests_test_post_suggestions_apply"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1101",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_member_inactive_returns_409",
+ "target": "tests_test_post_suggestions_apply"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1120",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_member_changed_returns_409",
+ "target": "tests_test_post_suggestions_apply"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1143",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_multiple_stale_all_surfaced_in_single_409",
+ "target": "tests_test_post_suggestions_apply"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L889",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_889",
+ "target": "tests_test_post_suggestions_apply"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L959",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_expired_preview_raises_409",
+ "target": "tests_test_post_suggestions_preview_data"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L981",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_empty_position_ids_is_noop",
+ "target": "tests_test_post_suggestions_preview_data"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L997",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_unknown_position_ids_silently_ignored",
+ "target": "tests_test_post_suggestions_preview_data"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1014",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_null_member_entries_are_skipped",
+ "target": "tests_test_post_suggestions_preview_data"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1032",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_subset_only_writes_checked_positions",
+ "target": "tests_test_post_suggestions_preview_data"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1058",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_position_disabled_returns_409",
+ "target": "tests_test_post_suggestions_preview_data"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1076",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_position_reserve_returns_409",
+ "target": "tests_test_post_suggestions_preview_data"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1094",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_member_inactive_returns_409",
+ "target": "tests_test_post_suggestions_preview_data"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1113",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_member_changed_returns_409",
+ "target": "tests_test_post_suggestions_preview_data"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1134",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_multiple_stale_all_surfaced_in_single_409",
+ "target": "tests_test_post_suggestions_preview_data"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1161",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_completed_siege_raises_400",
+ "target": "tests_test_post_suggestions_preview_data"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L927",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_927",
+ "target": "tests_test_post_suggestions_preview_data"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L982",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_empty_position_ids_is_noop",
+ "target": "tests_test_post_suggestions_entry_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L998",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_unknown_position_ids_silently_ignored",
+ "target": "tests_test_post_suggestions_entry_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1015",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_null_member_entries_are_skipped",
+ "target": "tests_test_post_suggestions_entry_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1028",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_subset_only_writes_checked_positions",
+ "target": "tests_test_post_suggestions_entry_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1056",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_position_disabled_returns_409",
+ "target": "tests_test_post_suggestions_entry_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1074",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_position_reserve_returns_409",
+ "target": "tests_test_post_suggestions_entry_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1092",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_member_inactive_returns_409",
+ "target": "tests_test_post_suggestions_entry_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1111",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_member_changed_returns_409",
+ "target": "tests_test_post_suggestions_entry_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1130",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_multiple_stale_all_surfaced_in_single_409",
+ "target": "tests_test_post_suggestions_entry_dict"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L958",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_expired_preview_raises_409",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L956",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_956",
+ "target": "tests_test_post_suggestions_test_apply_expired_preview_raises_409"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L971",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_missing_preview_raises_409",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L970",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_970",
+ "target": "tests_test_post_suggestions_test_apply_missing_preview_raises_409"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L980",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_empty_position_ids_is_noop",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L979",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_979",
+ "target": "tests_test_post_suggestions_test_apply_empty_position_ids_is_noop"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L996",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_unknown_position_ids_silently_ignored",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L995",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_995",
+ "target": "tests_test_post_suggestions_test_apply_unknown_position_ids_silently_ignored"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1013",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_null_member_entries_are_skipped",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1012",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_1012",
+ "target": "tests_test_post_suggestions_test_apply_null_member_entries_are_skipped"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1031",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_subset_only_writes_checked_positions",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1026",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_1026",
+ "target": "tests_test_post_suggestions_test_apply_subset_only_writes_checked_positions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1057",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_position_disabled_returns_409",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1055",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_1055",
+ "target": "tests_test_post_suggestions_test_apply_stale_position_disabled_returns_409"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1075",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_position_reserve_returns_409",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1073",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_1073",
+ "target": "tests_test_post_suggestions_test_apply_stale_position_reserve_returns_409"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1093",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_stale_member_inactive_returns_409",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1091",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_1091",
+ "target": "tests_test_post_suggestions_test_apply_stale_member_inactive_returns_409"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1112",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_member_changed_returns_409",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1109",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_1109",
+ "target": "tests_test_post_suggestions_test_apply_member_changed_returns_409"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1133",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_multiple_stale_all_surfaced_in_single_409",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1128",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_1128",
+ "target": "tests_test_post_suggestions_test_apply_multiple_stale_all_surfaced_in_single_409"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1159",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_apply_completed_siege_raises_400",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1158",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_1158",
+ "target": "tests_test_post_suggestions_test_apply_completed_siege_raises_400"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1190",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_skips_post_when_only_candidate_has_used_condition",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1192",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_skips_post_when_only_candidate_has_used_condition",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1205",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_test_preview_skips_post_when_only_candidate_has_used_condition",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions.py",
+ "source_location": "L1183",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_1183",
+ "target": "tests_test_post_suggestions_test_preview_skips_post_when_only_candidate_has_used_condition"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L284",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_rationale_1026",
+ "target": "tests_test_post_suggestions_integration_test_apply_subset_leaves_unselected_positions_unchanged"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L52",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_integration_py",
+ "target": "tests_test_schema_enable_sqlite_fk"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L60",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_integration_py",
+ "target": "tests_test_post_suggestions_integration_engine"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L71",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_integration_py",
+ "target": "tests_test_seed_demo_session"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L79",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_integration_py",
+ "target": "tests_test_post_suggestions_integration_session_factory"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L89",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_integration_py",
+ "target": "tests_test_sieges_seed_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L190",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_integration_py",
+ "target": "tests_test_post_suggestions_integration_test_preview_loads_m2m_relations_without_greenlet_error"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L215",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_integration_py",
+ "target": "tests_test_post_suggestions_integration_test_preview_overwrite_stores_second_preview_in_db"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L254",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_integration_py",
+ "target": "tests_test_post_suggestions_integration_test_apply_persists_matched_condition_id_to_db"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L283",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_integration_py",
+ "target": "tests_test_post_suggestions_integration_test_apply_subset_leaves_unselected_positions_unchanged"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L313",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_post_suggestions_integration_py",
+ "target": "tests_test_post_suggestions_integration_test_member_changed_stale_reason_on_concurrent_apply"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_rationale_1",
+ "target": "backend_tests_test_post_suggestions_integration_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L61",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_rationale_61",
+ "target": "tests_test_post_suggestions_integration_engine"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L228",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_test_preview_overwrite_stores_second_preview_in_db",
+ "target": "tests_test_post_suggestions_integration_session_factory"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L271",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_test_apply_persists_matched_condition_id_to_db",
+ "target": "tests_test_post_suggestions_integration_session_factory"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L299",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_test_apply_subset_leaves_unselected_positions_unchanged",
+ "target": "tests_test_post_suggestions_integration_session_factory"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L327",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_test_member_changed_stale_reason_on_concurrent_apply",
+ "target": "tests_test_post_suggestions_integration_session_factory"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L80",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_rationale_80",
+ "target": "tests_test_post_suggestions_integration_session_factory"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L196",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_test_preview_loads_m2m_relations_without_greenlet_error",
+ "target": "tests_test_sieges_seed_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L191",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_rationale_191",
+ "target": "tests_test_post_suggestions_integration_test_preview_loads_m2m_relations_without_greenlet_error"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L222",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_test_preview_overwrite_stores_second_preview_in_db",
+ "target": "tests_test_sieges_seed_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L216",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_rationale_216",
+ "target": "tests_test_post_suggestions_integration_test_preview_overwrite_stores_second_preview_in_db"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L260",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_test_apply_persists_matched_condition_id_to_db",
+ "target": "tests_test_sieges_seed_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L255",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_rationale_255",
+ "target": "tests_test_post_suggestions_integration_test_apply_persists_matched_condition_id_to_db"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L285",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_test_apply_subset_leaves_unselected_positions_unchanged",
+ "target": "tests_test_sieges_seed_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L328",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_test_member_changed_stale_reason_on_concurrent_apply",
+ "target": "tests_test_sieges_seed_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L314",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_rationale_314",
+ "target": "tests_test_post_suggestions_integration_test_member_changed_stale_reason_on_concurrent_apply"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L53",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_rationale_53",
+ "target": "tests_test_schema_enable_sqlite_fk"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L72",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_rationale_72",
+ "target": "tests_test_seed_demo_session"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_post_suggestions_integration.py",
+ "source_location": "L90",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_post_suggestions_integration_rationale_90",
+ "target": "tests_test_sieges_seed_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_reference.py",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_reference_py",
+ "target": "tests_test_reference_make_post_condition"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_reference.py",
+ "source_location": "L28",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_reference_py",
+ "target": "tests_test_reference_test_get_post_conditions_returns_list"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_reference.py",
+ "source_location": "L54",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_reference_py",
+ "target": "tests_test_reference_test_get_building_types_returns_list"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_reference.py",
+ "source_location": "L90",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_reference_py",
+ "target": "tests_test_reference_test_get_member_roles_returns_four_roles"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_reference.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_reference_rationale_1",
+ "target": "backend_tests_test_reference_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_reference.py",
+ "source_location": "L30",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_reference_test_get_post_conditions_returns_list",
+ "target": "tests_test_reference_make_post_condition"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_schema_py",
+ "target": "tests_test_schema_enable_sqlite_fk"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L29",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_schema_py",
+ "target": "tests_test_schema_db_session"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L50",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_schema_py",
+ "target": "tests_test_schema_test_member_name_unique"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_schema_py",
+ "target": "tests_test_schema_test_position_reserve_and_member_constraint_defined"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L78",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_schema_py",
+ "target": "tests_test_schema_test_building_group_slot_count_bounds"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L89",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_schema_py",
+ "target": "tests_test_schema_test_post_condition_count"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L104",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_schema_py",
+ "target": "tests_test_schema_test_building_type_config_count"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L119",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_schema_py",
+ "target": "tests_test_schema_test_siege_member_pk"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_schema_rationale_1",
+ "target": "backend_tests_test_schema_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_schema_rationale_22",
+ "target": "tests_test_schema_enable_sqlite_fk"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L150",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_sieges_py",
+ "target": "tests_test_schema_enable_sqlite_fk"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L157",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_sieges_py",
+ "target": "tests_test_schema_db_session"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L51",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_schema_rationale_51",
+ "target": "tests_test_schema_test_member_name_unique"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L66",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_schema_rationale_66",
+ "target": "tests_test_schema_test_position_reserve_and_member_constraint_defined"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L79",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_schema_rationale_79",
+ "target": "tests_test_schema_test_building_group_slot_count_bounds"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L90",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_schema_rationale_90",
+ "target": "tests_test_schema_test_post_condition_count"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L105",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_schema_rationale_105",
+ "target": "tests_test_schema_test_building_type_config_count"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_schema.py",
+ "source_location": "L120",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_schema_rationale_120",
+ "target": "tests_test_schema_test_siege_member_pk"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L39",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_canonical_py",
+ "target": "tests_test_seed_demo_session"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L57",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_canonical_py",
+ "target": "tests_test_seed_canonical_run_canonical_seed"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L71",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_canonical_py",
+ "target": "tests_test_seed_canonical_testcanonicalseedpostconditions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L75",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_canonical_py",
+ "target": "tests_test_seed_canonical_test_seeds_36_post_conditions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L84",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_canonical_py",
+ "target": "tests_test_seed_canonical_test_idempotent_post_conditions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L94",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_canonical_py",
+ "target": "tests_test_seed_canonical_testcanonicalseedbuildingtypeconfig"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L98",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_canonical_py",
+ "target": "tests_test_seed_canonical_test_seeds_building_type_configs"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L107",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_canonical_py",
+ "target": "tests_test_seed_canonical_test_idempotent_building_type_config"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L120",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_canonical_py",
+ "target": "tests_test_seed_canonical_testcanonicalseedpostpriorityconfig"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L128",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_canonical_py",
+ "target": "tests_test_seed_canonical_test_seeds_18_post_priority_configs"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L137",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_canonical_py",
+ "target": "tests_test_seed_canonical_test_priority_configs_cover_posts_1_through_18"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L145",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_canonical_py",
+ "target": "tests_test_seed_canonical_test_priority_configs_default_priority_is_2"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L153",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_canonical_py",
+ "target": "tests_test_seed_canonical_test_idempotent_post_priority_config"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_canonical_rationale_1",
+ "target": "backend_tests_test_seed_canonical_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L77",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_canonical_test_seeds_36_post_conditions",
+ "target": "tests_test_seed_canonical_run_canonical_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L86",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_canonical_test_idempotent_post_conditions",
+ "target": "tests_test_seed_canonical_run_canonical_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L100",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_canonical_test_seeds_building_type_configs",
+ "target": "tests_test_seed_canonical_run_canonical_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L109",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_canonical_test_idempotent_building_type_config",
+ "target": "tests_test_seed_canonical_run_canonical_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L130",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_canonical_test_seeds_18_post_priority_configs",
+ "target": "tests_test_seed_canonical_run_canonical_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L139",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_canonical_test_priority_configs_cover_posts_1_through_18",
+ "target": "tests_test_seed_canonical_run_canonical_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L147",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_canonical_test_priority_configs_default_priority_is_2",
+ "target": "tests_test_seed_canonical_run_canonical_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L155",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_canonical_test_idempotent_post_priority_config",
+ "target": "tests_test_seed_canonical_run_canonical_seed"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L58",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_canonical_rationale_58",
+ "target": "tests_test_seed_canonical_run_canonical_seed"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L72",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_canonical_rationale_72",
+ "target": "tests_test_seed_canonical_testcanonicalseedpostconditions"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L28",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_canonical_testcanonicalseedpostconditions",
+ "target": "api_types_postcondition"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L29",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_canonical_testcanonicalseedpostconditions",
+ "target": "api_posts_postpriorityconfig"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L95",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_canonical_rationale_95",
+ "target": "tests_test_seed_canonical_testcanonicalseedbuildingtypeconfig"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L28",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_canonical_testcanonicalseedbuildingtypeconfig",
+ "target": "api_types_postcondition"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L29",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_canonical_testcanonicalseedbuildingtypeconfig",
+ "target": "api_posts_postpriorityconfig"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L121",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_canonical_rationale_121",
+ "target": "tests_test_seed_canonical_testcanonicalseedpostpriorityconfig"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L28",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_canonical_testcanonicalseedpostpriorityconfig",
+ "target": "api_types_postcondition"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L29",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_canonical_testcanonicalseedpostpriorityconfig",
+ "target": "api_posts_postpriorityconfig"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/tests/test_seed_canonical.py",
+ "source_location": "L142",
+ "weight": 1.0,
+ "source": "tests_test_seed_canonical_test_priority_configs_cover_posts_1_through_18",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L41",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_session"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L59",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_run_seed"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L91",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_testseeddemomembers"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L95",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_test_creates_25_members"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L101",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_test_members_have_demo_names"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L109",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_test_idempotent_member_creation"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L117",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_testseeddemosiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L121",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_test_creates_one_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L127",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_test_siege_has_active_status"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L133",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_test_idempotent_siege_creation"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L141",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_testseeddemobuildingsandpositions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L145",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_test_creates_buildings"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L151",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_test_creates_positions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L157",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_test_some_positions_have_members"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L168",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_test_idempotent_position_creation"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L181",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_testseeddemosiegemembers"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L185",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_test_enrolls_all_members"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L191",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_test_members_have_attack_days"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L199",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_seed_demo_py",
+ "target": "tests_test_seed_demo_test_idempotent_siege_member_enrollment"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_rationale_1",
+ "target": "backend_tests_test_seed_demo_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L42",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_rationale_42",
+ "target": "tests_test_seed_demo_session"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L96",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_test_creates_25_members",
+ "target": "tests_test_seed_demo_run_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L102",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_test_members_have_demo_names",
+ "target": "tests_test_seed_demo_run_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L111",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_test_idempotent_member_creation",
+ "target": "tests_test_seed_demo_run_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L122",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_test_creates_one_siege",
+ "target": "tests_test_seed_demo_run_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L128",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_test_siege_has_active_status",
+ "target": "tests_test_seed_demo_run_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L135",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_test_idempotent_siege_creation",
+ "target": "tests_test_seed_demo_run_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L146",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_test_creates_buildings",
+ "target": "tests_test_seed_demo_run_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L152",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_test_creates_positions",
+ "target": "tests_test_seed_demo_run_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L159",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_test_some_positions_have_members",
+ "target": "tests_test_seed_demo_run_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L170",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_test_idempotent_position_creation",
+ "target": "tests_test_seed_demo_run_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L186",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_test_enrolls_all_members",
+ "target": "tests_test_seed_demo_run_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L192",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_test_members_have_attack_days",
+ "target": "tests_test_seed_demo_run_seed"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L201",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_test_idempotent_siege_member_enrollment",
+ "target": "tests_test_seed_demo_run_seed"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L60",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_rationale_60",
+ "target": "tests_test_seed_demo_run_seed"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L92",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_rationale_92",
+ "target": "tests_test_seed_demo_testseeddemomembers"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L26",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemomembers",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L27",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemomembers",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L28",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemomembers",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L30",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemomembers",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L31",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemomembers",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L26",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemosiege",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L27",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemosiege",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L28",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemosiege",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L30",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemosiege",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L31",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemosiege",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L142",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_rationale_142",
+ "target": "tests_test_seed_demo_testseeddemobuildingsandpositions"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L26",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemobuildingsandpositions",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L27",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemobuildingsandpositions",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L28",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemobuildingsandpositions",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L30",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemobuildingsandpositions",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L31",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemobuildingsandpositions",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L182",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_seed_demo_rationale_182",
+ "target": "tests_test_seed_demo_testseeddemosiegemembers"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L26",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemosiegemembers",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L27",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemosiegemembers",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L28",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemosiegemembers",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L30",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemosiegemembers",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/tests/test_seed_demo.py",
+ "source_location": "L31",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "tests_test_seed_demo_testseeddemosiegemembers",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_sieges_py",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L48",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_sieges_py",
+ "target": "tests_test_sieges_test_list_sieges_returns_empty_list"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L64",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_sieges_py",
+ "target": "tests_test_sieges_test_create_siege_returns_201"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L94",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_sieges_py",
+ "target": "tests_test_sieges_test_get_siege_not_found_returns_404"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L110",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_sieges_py",
+ "target": "tests_test_sieges_test_delete_planning_siege_returns_204"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L125",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_sieges_py",
+ "target": "tests_test_sieges_test_delete_active_siege_returns_400"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L168",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_sieges_py",
+ "target": "tests_test_sieges_seed_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L205",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_sieges_py",
+ "target": "tests_test_sieges_test_compute_scroll_count_sums_theoretical_capacity"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L229",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_sieges_py",
+ "target": "tests_test_sieges_test_compute_scroll_count_broken_building_unchanged"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L262",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_sieges_py",
+ "target": "tests_test_sieges_test_compute_scroll_count_level_change_updates_count"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L292",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_sieges_py",
+ "target": "tests_test_sieges_test_compute_scroll_count_post_buildings_contribute_one"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_sieges_rationale_1",
+ "target": "backend_tests_test_sieges_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_sieges_test_create_siege_returns_201",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L181",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_validate_endpoint_returns_result",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L223",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule1_inactive_member_error",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L243",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule1_active_member_no_error",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L274",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_broken_building_assignment_counts_toward_scroll_limit",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L322",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_broken_and_healthy_both_count_toward_scroll_limit",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L350",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_exceeds_scroll_count",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L372",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_within_scroll_count",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L410",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule3_valid_building_number",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L427",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule4_invalid_group_number",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L444",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule4_valid_group_number",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L461",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule5_position_number_exceeds_slot_count",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L478",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule5_valid_position_number",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L504",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule6_valid_attack_day",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L522",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule7_post_has_multiple_groups",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L542",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule7_post_has_exactly_one_group",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L560",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_disabled_with_member",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L578",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_reserve_with_member",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L596",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_valid_state",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L608",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule9_wrong_building_count",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L620",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule9_correct_building_count",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L650",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule10_empty_unresolved_slot",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L669",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule10_message_uses_position_name",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L694",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule10_no_warning_when_disabled",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L720",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_member_pref_no_match",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L747",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_no_warning_when_no_preferences",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L783",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule13_missing_attack_day_assigned_member",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L803",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule13_attack_day_set",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L817",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule14_fewer_than_10_day2",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L832",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule14_ten_or_more_day2",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L853",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_hh_no_reserve",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L873",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_advanced_no_reserve",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L893",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_hh_reserve_configured",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L913",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_non_hh_no_reserve_no_warning",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L936",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule16_post_fewer_than_3_conditions",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L963",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule16_post_has_3_conditions",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L88",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/SiegeLayout.test.tsx",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_siegelayout_tsx",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L77",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L32",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L58",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "tests_test_sieges_make_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L212",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_sieges_test_compute_scroll_count_sums_theoretical_capacity",
+ "target": "tests_test_sieges_seed_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L237",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_sieges_test_compute_scroll_count_broken_building_unchanged",
+ "target": "tests_test_sieges_seed_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L269",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_sieges_test_compute_scroll_count_level_change_updates_count",
+ "target": "tests_test_sieges_seed_siege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L297",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_sieges_test_compute_scroll_count_post_buildings_contribute_one",
+ "target": "tests_test_sieges_seed_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L169",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_sieges_rationale_169",
+ "target": "tests_test_sieges_seed_siege"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L206",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_sieges_rationale_206",
+ "target": "tests_test_sieges_test_compute_scroll_count_sums_theoretical_capacity"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L230",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_sieges_rationale_230",
+ "target": "tests_test_sieges_test_compute_scroll_count_broken_building_unchanged"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L263",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_sieges_rationale_263",
+ "target": "tests_test_sieges_test_compute_scroll_count_level_change_updates_count"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_sieges.py",
+ "source_location": "L293",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_sieges_rationale_293",
+ "target": "tests_test_sieges_test_compute_scroll_count_post_buildings_contribute_one"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L90",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_telemetry_py",
+ "target": "tests_test_telemetry_testconfiguretelemetrynoop"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_testconfiguretelemetrynoop",
+ "target": "tests_test_telemetry_testconfiguretelemetrynoop_test_noop_when_env_var_missing"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L43",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_testconfiguretelemetrynoop",
+ "target": "tests_test_telemetry_testconfiguretelemetrynoop_test_noop_when_env_var_empty_string"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L66",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_testconfiguretelemetrynoop",
+ "target": "tests_test_telemetry_testconfiguretelemetrynoop_test_noop_when_env_var_whitespace_only"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L101",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_testconfiguretelemetrynoop",
+ "target": "tests_test_telemetry_testconfiguretelemetryactive_test_calls_configure_azure_monitor_when_env_var_set"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L122",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_testconfiguretelemetrynoop",
+ "target": "tests_test_telemetry_testconfiguretelemetryactive_test_sdk_exception_does_not_propagate"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L18",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_18",
+ "target": "tests_test_telemetry_testconfiguretelemetrynoop"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L82",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_82",
+ "target": "tests_test_telemetry_testconfiguretelemetrynoop"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L91",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_91",
+ "target": "tests_test_telemetry_testconfiguretelemetrynoop"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_21",
+ "target": "tests_test_telemetry_testconfiguretelemetrynoop_test_noop_when_env_var_missing"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L44",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_43",
+ "target": "tests_test_telemetry_testconfiguretelemetrynoop_test_noop_when_env_var_empty_string"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L67",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_62",
+ "target": "tests_test_telemetry_testconfiguretelemetrynoop_test_noop_when_env_var_whitespace_only"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L102",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_93",
+ "target": "tests_test_telemetry_testconfiguretelemetryactive_test_calls_configure_azure_monitor_when_env_var_set"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L123",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_112",
+ "target": "tests_test_telemetry_testconfiguretelemetryactive_test_sdk_exception_does_not_propagate"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L143",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_telemetry_py",
+ "target": "tests_test_telemetry_testconfiguretelemetryfastapiinstrumentation"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L156",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_testconfiguretelemetryfastapiinstrumentation",
+ "target": "tests_test_telemetry_testconfiguretelemetryfastapiinstrumentation_test_instrument_app_called_when_connection_string_and_service_name_set"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L199",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_testconfiguretelemetryfastapiinstrumentation",
+ "target": "tests_test_telemetry_testconfiguretelemetryfastapiinstrumentation_test_configure_azure_monitor_called_when_both_env_vars_set"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L237",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_testconfiguretelemetryfastapiinstrumentation",
+ "target": "tests_test_telemetry_testconfiguretelemetryfastapiinstrumentation_test_instrument_app_not_called_when_app_is_none"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L131",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_131",
+ "target": "tests_test_telemetry_testconfiguretelemetryfastapiinstrumentation"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L144",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_144",
+ "target": "tests_test_telemetry_testconfiguretelemetryfastapiinstrumentation"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L159",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_144",
+ "target": "tests_test_telemetry_testconfiguretelemetryfastapiinstrumentation_test_instrument_app_called_when_connection_string_and_service_name_set"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L200",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_183",
+ "target": "tests_test_telemetry_testconfiguretelemetryfastapiinstrumentation_test_configure_azure_monitor_called_when_both_env_vars_set"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L238",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_219",
+ "target": "tests_test_telemetry_testconfiguretelemetryfastapiinstrumentation_test_instrument_app_not_called_when_app_is_none"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L258",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_telemetry_py",
+ "target": "tests_test_telemetry_testconfiguretelemetrysqlalchemyinstrumentation"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L273",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_testconfiguretelemetrysqlalchemyinstrumentation",
+ "target": "tests_test_telemetry_testconfiguretelemetrysqlalchemyinstrumentation_test_sqlalchemy_instrument_called_with_sync_engine"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L315",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_testconfiguretelemetrysqlalchemyinstrumentation",
+ "target": "tests_test_telemetry_testconfiguretelemetrysqlalchemyinstrumentation_test_sqlalchemy_instrument_not_called_when_engine_is_none"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L353",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_testconfiguretelemetrysqlalchemyinstrumentation",
+ "target": "tests_test_telemetry_testconfiguretelemetrysqlalchemyinstrumentation_test_sqlalchemy_instrument_not_called_when_telemetry_unconfigured"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L259",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_259",
+ "target": "tests_test_telemetry_testconfiguretelemetrysqlalchemyinstrumentation"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L274",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_274",
+ "target": "tests_test_telemetry_testconfiguretelemetrysqlalchemyinstrumentation_test_sqlalchemy_instrument_called_with_sync_engine"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L316",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_316",
+ "target": "tests_test_telemetry_testconfiguretelemetrysqlalchemyinstrumentation_test_sqlalchemy_instrument_not_called_when_engine_is_none"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L354",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_354",
+ "target": "tests_test_telemetry_testconfiguretelemetrysqlalchemyinstrumentation_test_sqlalchemy_instrument_not_called_when_telemetry_unconfigured"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L391",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_telemetry_py",
+ "target": "tests_test_telemetry_testconfiguretelemetryasyncpginstrumentation"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L405",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_testconfiguretelemetryasyncpginstrumentation",
+ "target": "tests_test_telemetry_testconfiguretelemetryasyncpginstrumentation_test_asyncpg_instrument_called_when_telemetry_configured"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L443",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_testconfiguretelemetryasyncpginstrumentation",
+ "target": "tests_test_telemetry_testconfiguretelemetryasyncpginstrumentation_test_asyncpg_instrument_not_called_when_telemetry_unconfigured"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L392",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_392",
+ "target": "tests_test_telemetry_testconfiguretelemetryasyncpginstrumentation"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L406",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_406",
+ "target": "tests_test_telemetry_testconfiguretelemetryasyncpginstrumentation_test_asyncpg_instrument_called_when_telemetry_configured"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_telemetry.py",
+ "source_location": "L444",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_444",
+ "target": "tests_test_telemetry_testconfiguretelemetryasyncpginstrumentation_test_asyncpg_instrument_not_called_when_telemetry_unconfigured"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_telemetry.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_telemetry_rationale_1",
+ "target": "bot_tests_test_telemetry_py"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L88",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L126",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L148",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_validate_endpoint_404"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L172",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_validate_endpoint_returns_result"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L215",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule1_inactive_member_error"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L235",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule1_active_member_no_error"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L255",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule2_broken_building_assignment_counts_toward_scroll_limit"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L293",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule2_broken_and_healthy_both_count_toward_scroll_limit"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L340",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule2_exceeds_scroll_count"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L364",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule2_within_scroll_count"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L406",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule3_valid_building_number"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L420",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule4_invalid_group_number"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L437",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule4_valid_group_number"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L454",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule5_position_number_exceeds_slot_count"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L471",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule5_valid_position_number"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L501",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule6_valid_attack_day"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L514",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule7_post_has_multiple_groups"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L536",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule7_post_has_exactly_one_group"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L552",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule8_disabled_with_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L570",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule8_reserve_with_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L588",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule8_valid_state"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L606",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule9_wrong_building_count"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L618",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule9_correct_building_count"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L643",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule10_empty_unresolved_slot"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L660",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule10_message_uses_position_name"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L687",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule10_no_warning_when_disabled"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L704",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule11_member_pref_no_match"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L732",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule11_no_warning_when_no_preferences"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L779",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule13_missing_attack_day_assigned_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L795",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule13_attack_day_set"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L815",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule14_fewer_than_10_day2"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L830",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule14_ten_or_more_day2"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L845",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule15_hh_no_reserve"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L865",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule15_advanced_no_reserve"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L885",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule15_hh_reserve_configured"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L905",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule15_non_hh_no_reserve_no_warning"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L925",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule16_post_fewer_than_3_conditions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L952",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_test_rule16_post_has_3_conditions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L977",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_default_configs"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L987",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_validation_py",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_1",
+ "target": "backend_tests_test_validation_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L706",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_member_pref_no_match",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L734",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_no_warning_when_no_preferences",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L927",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule16_post_fewer_than_3_conditions",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L954",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule16_post_has_3_conditions",
+ "target": "tests_test_validation_make_condition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L225",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule1_inactive_member_error",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L228",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule1_inactive_member_error",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L216",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_216",
+ "target": "tests_test_validation_test_rule1_inactive_member_error"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L245",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule1_active_member_no_error",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L248",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule1_active_member_no_error",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L236",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_236",
+ "target": "tests_test_validation_test_rule1_active_member_no_error"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L276",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_broken_building_assignment_counts_toward_scroll_limit",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L281",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_broken_building_assignment_counts_toward_scroll_limit",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L256",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_256",
+ "target": "tests_test_validation_test_rule2_broken_building_assignment_counts_toward_scroll_limit"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L324",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_broken_and_healthy_both_count_toward_scroll_limit",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L329",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_broken_and_healthy_both_count_toward_scroll_limit",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L294",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_294",
+ "target": "tests_test_validation_test_rule2_broken_and_healthy_both_count_toward_scroll_limit"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L352",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_exceeds_scroll_count",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L357",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_exceeds_scroll_count",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L341",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_341",
+ "target": "tests_test_validation_test_rule2_exceeds_scroll_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L374",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_within_scroll_count",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L377",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule2_within_scroll_count",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L365",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_365",
+ "target": "tests_test_validation_test_rule2_within_scroll_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L413",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule3_valid_building_number",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L385",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_385",
+ "target": "tests_test_validation_test_rule3_valid_building_number"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L407",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_407",
+ "target": "tests_test_validation_test_rule3_valid_building_number"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L430",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule4_invalid_group_number",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L421",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_421",
+ "target": "tests_test_validation_test_rule4_invalid_group_number"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L447",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule4_valid_group_number",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L438",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_438",
+ "target": "tests_test_validation_test_rule4_valid_group_number"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L464",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule5_position_number_exceeds_slot_count",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L455",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_455",
+ "target": "tests_test_validation_test_rule5_position_number_exceeds_slot_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L481",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule5_valid_position_number",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L472",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_472",
+ "target": "tests_test_validation_test_rule5_valid_position_number"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L503",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule6_valid_attack_day",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L507",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule6_valid_attack_day",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L489",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_489",
+ "target": "tests_test_validation_test_rule6_valid_attack_day"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L502",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_502",
+ "target": "tests_test_validation_test_rule6_valid_attack_day"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L525",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule7_post_has_multiple_groups",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L515",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_515",
+ "target": "tests_test_validation_test_rule7_post_has_multiple_groups"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L545",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule7_post_has_exactly_one_group",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L537",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_537",
+ "target": "tests_test_validation_test_rule7_post_has_exactly_one_group"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L563",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_disabled_with_member",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L553",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_553",
+ "target": "tests_test_validation_test_rule8_disabled_with_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L581",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_reserve_with_member",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L571",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_571",
+ "target": "tests_test_validation_test_rule8_reserve_with_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L599",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule8_valid_state",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L589",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_589",
+ "target": "tests_test_validation_test_rule8_valid_state"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L611",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule9_wrong_building_count",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L607",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_607",
+ "target": "tests_test_validation_test_rule9_wrong_building_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L636",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule9_correct_building_count",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L619",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_619",
+ "target": "tests_test_validation_test_rule9_correct_building_count"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L653",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule10_empty_unresolved_slot",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L644",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_644",
+ "target": "tests_test_validation_test_rule10_empty_unresolved_slot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L672",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule10_message_uses_position_name",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L661",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_661",
+ "target": "tests_test_validation_test_rule10_message_uses_position_name"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L697",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule10_no_warning_when_disabled",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L688",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_688",
+ "target": "tests_test_validation_test_rule10_no_warning_when_disabled"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L722",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_member_pref_no_match",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L725",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_member_pref_no_match",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L705",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_705",
+ "target": "tests_test_validation_test_rule11_member_pref_no_match"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L749",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_no_warning_when_no_preferences",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L752",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule11_no_warning_when_no_preferences",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L733",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_733",
+ "target": "tests_test_validation_test_rule11_no_warning_when_no_preferences"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L785",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule13_missing_attack_day_assigned_member",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L788",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule13_missing_attack_day_assigned_member",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L760",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_760",
+ "target": "tests_test_validation_test_rule13_missing_attack_day_assigned_member"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L780",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_780",
+ "target": "tests_test_validation_test_rule13_missing_attack_day_assigned_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L805",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule13_attack_day_set",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L808",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule13_attack_day_set",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L796",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_796",
+ "target": "tests_test_validation_test_rule13_attack_day_set"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L820",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule14_fewer_than_10_day2",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L823",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule14_fewer_than_10_day2",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L816",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_816",
+ "target": "tests_test_validation_test_rule14_fewer_than_10_day2"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L835",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule14_ten_or_more_day2",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L838",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule14_ten_or_more_day2",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L831",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_831",
+ "target": "tests_test_validation_test_rule14_ten_or_more_day2"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L855",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_hh_no_reserve",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L858",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_hh_no_reserve",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L846",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_846",
+ "target": "tests_test_validation_test_rule15_hh_no_reserve"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L875",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_advanced_no_reserve",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L878",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_advanced_no_reserve",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L866",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_866",
+ "target": "tests_test_validation_test_rule15_advanced_no_reserve"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L895",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_hh_reserve_configured",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L898",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_hh_reserve_configured",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L886",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_886",
+ "target": "tests_test_validation_test_rule15_hh_reserve_configured"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L915",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_non_hh_no_reserve_no_warning",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L918",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule15_non_hh_no_reserve_no_warning",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L906",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_906",
+ "target": "tests_test_validation_test_rule15_non_hh_no_reserve_no_warning"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L939",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule16_post_fewer_than_3_conditions",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L926",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_926",
+ "target": "tests_test_validation_test_rule16_post_fewer_than_3_conditions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L966",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_test_rule16_post_has_3_conditions",
+ "target": "tests_test_validation_session_with_siege_and_configs"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_validation.py",
+ "source_location": "L953",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_validation_rationale_953",
+ "target": "tests_test_validation_test_rule16_post_has_3_conditions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_version_py",
+ "target": "tests_test_version_reload_version_module"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L42",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_version_py",
+ "target": "tests_test_version_test_read_backend_version_semver_only"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L53",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_version_py",
+ "target": "tests_test_version_test_read_backend_version_with_build_info"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L70",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_version_py",
+ "target": "tests_test_version_test_read_backend_version_missing_version_file"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L87",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_version_py",
+ "target": "tests_test_version_test_read_backend_version_build_info_with_missing_file"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L109",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_version_py",
+ "target": "tests_test_version_test_get_version_returns_200_with_expected_keys"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L128",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_version_py",
+ "target": "tests_test_version_test_get_version_backend_version_has_build_suffix"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L144",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_version_py",
+ "target": "tests_test_version_test_get_version_backend_version_clean_in_local_dev"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L159",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_version_py",
+ "target": "tests_test_version_test_get_version_git_sha_field_preserved"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L175",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "backend_tests_test_version_py",
+ "target": "tests_test_version_test_get_version_bot_unreachable_returns_none"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_version_rationale_1",
+ "target": "backend_tests_test_version_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_version_rationale_17",
+ "target": "tests_test_version_reload_version_module"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L30",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_version_rationale_30",
+ "target": "tests_test_version_test_read_backend_version_semver_only"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L43",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_version_rationale_43",
+ "target": "tests_test_version_test_read_backend_version_semver_only"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L54",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_version_rationale_54",
+ "target": "tests_test_version_test_read_backend_version_with_build_info"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L71",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_version_rationale_71",
+ "target": "tests_test_version_test_read_backend_version_missing_version_file"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L88",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_version_rationale_88",
+ "target": "tests_test_version_test_read_backend_version_build_info_with_missing_file"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L110",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_version_rationale_110",
+ "target": "tests_test_version_test_get_version_returns_200_with_expected_keys"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L129",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_version_rationale_129",
+ "target": "tests_test_version_test_get_version_backend_version_has_build_suffix"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L145",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_version_rationale_145",
+ "target": "tests_test_version_test_get_version_backend_version_clean_in_local_dev"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L160",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_version_rationale_160",
+ "target": "tests_test_version_test_get_version_git_sha_field_preserved"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/tests/test_version.py",
+ "source_location": "L176",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_version_rationale_176",
+ "target": "tests_test_version_test_get_version_bot_unreachable_returns_none"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_discord_client_py",
+ "target": "app_discord_client_siegebot"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_discord_client_siegebot",
+ "target": "tests_conftest_fakeclient_init"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_discord_client_siegebot",
+ "target": "app_discord_client_siegebot_on_ready"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_discord_client_siegebot",
+ "target": "app_discord_client_siegebot_require_guild"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_discord_client_siegebot",
+ "target": "app_http_api_post_message"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L44",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_discord_client_siegebot",
+ "target": "app_http_api_post_image"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_discord_client_rationale_7",
+ "target": "app_discord_client_siegebot"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L11",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "app_http_api_notifyrequest",
+ "target": "app_discord_client_siegebot"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L11",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "app_http_api_postmessagerequest",
+ "target": "app_discord_client_siegebot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "bot/app/main.py",
+ "source_location": "L40",
+ "weight": 1.0,
+ "source": "app_main_main",
+ "target": "app_discord_client_siegebot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_post_message",
+ "target": "app_discord_client_siegebot_require_guild"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L51",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_post_image",
+ "target": "app_discord_client_siegebot_require_guild"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L34",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_discord_client_rationale_34",
+ "target": "app_http_api_post_message"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/discord_client.py",
+ "source_location": "L47",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_discord_client_rationale_47",
+ "target": "app_http_api_post_image"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_http_api_py",
+ "target": "app_http_api_set_bot"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_http_api_py",
+ "target": "app_http_api_get_bot"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_http_api_py",
+ "target": "app_http_api_verify_api_key"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L46",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_http_api_py",
+ "target": "app_http_api_notifyrequest"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L51",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_http_api_py",
+ "target": "app_http_api_postmessagerequest"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L57",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_http_api_py",
+ "target": "app_http_api_version"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L83",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_http_api_py",
+ "target": "app_http_api_notify"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L97",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_http_api_py",
+ "target": "app_http_api_post_message"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L111",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_http_api_py",
+ "target": "app_http_api_post_image"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L136",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_http_api_py",
+ "target": "app_http_api_get_guild_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "bot/app/main.py",
+ "source_location": "L41",
+ "weight": 1.0,
+ "source": "app_main_main",
+ "target": "app_http_api_set_bot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L88",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_notify",
+ "target": "app_http_api_get_bot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L102",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_post_message",
+ "target": "app_http_api_get_bot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L117",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_post_image",
+ "target": "app_http_api_get_bot"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L37",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_rationale_37",
+ "target": "app_http_api_verify_api_key"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/version.ts",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_version",
+ "target": "api_version_getversion"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L58",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_rationale_58",
+ "target": "app_http_api_version"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/version.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_version",
+ "target": "frontend_src_api_client_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/version.ts",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_version",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/version.ts",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_version",
+ "target": "api_types_versioninfo"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/version.ts",
+ "source_location": "L10",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_version",
+ "target": "api_version_useversion"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SystemPage.tsx",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_systempage_systempage",
+ "target": "app_http_api_version"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L87",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_rationale_87",
+ "target": "app_http_api_notify"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L101",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_rationale_101",
+ "target": "app_http_api_post_message"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L116",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_rationale_116",
+ "target": "app_http_api_post_image"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/http_api.py",
+ "source_location": "L140",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_http_api_rationale_140",
+ "target": "app_http_api_get_guild_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/main.py",
+ "source_location": "L18",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_main_py",
+ "target": "app_main_run_http_server"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/main.py",
+ "source_location": "L30",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_main_py",
+ "target": "app_main_run_discord_client"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/main.py",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_app_main_py",
+ "target": "app_main_main"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/main.py",
+ "source_location": "L45",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_main_main",
+ "target": "app_main_run_http_server"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/main.py",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_main_rationale_19",
+ "target": "app_main_run_http_server"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/main.py",
+ "source_location": "L44",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_main_main",
+ "target": "app_main_run_discord_client"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/main.py",
+ "source_location": "L31",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_main_rationale_31",
+ "target": "app_main_run_discord_client"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/app/main.py",
+ "source_location": "L37",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_main_rationale_37",
+ "target": "app_main_main"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L144",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_board_spec_ts",
+ "target": "app_main_main"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L1162",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "app_main_main"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L1196",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_main_main",
+ "target": "excel_import_import_excel_collect_xlsm_files"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L1200",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "app_main_main",
+ "target": "excel_import_import_excel_import_file"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/conftest.py",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_conftest_py",
+ "target": "tests_conftest_fakeclient"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/conftest.py",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_conftest_py",
+ "target": "tests_conftest_faketextchannel"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/conftest.py",
+ "source_location": "L32",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_conftest_py",
+ "target": "tests_conftest_fakehttpexception"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/conftest.py",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_conftest_py",
+ "target": "tests_conftest_fakenotfound"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/conftest.py",
+ "source_location": "L45",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_conftest_py",
+ "target": "tests_conftest_find"
+ },
+ {
+ "relation": "method",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/conftest.py",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_conftest_fakeclient",
+ "target": "tests_conftest_fakeclient_init"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/conftest.py",
+ "source_location": "L32",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_conftest_fakehttpexception",
+ "target": "exception"
+ },
+ {
+ "relation": "inherits",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/conftest.py",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_conftest_fakenotfound",
+ "target": "tests_conftest_fakehttpexception"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_discord_client_py",
+ "target": "tests_test_discord_client_make_bot"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_discord_client_py",
+ "target": "tests_test_discord_client_make_text_channel"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L44",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_discord_client_py",
+ "target": "tests_test_discord_client_make_guild"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L57",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_discord_client_py",
+ "target": "tests_test_discord_client_test_send_dm_finds_member_and_sends"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L70",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_discord_client_py",
+ "target": "tests_test_discord_client_test_send_dm_case_insensitive"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L81",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_discord_client_py",
+ "target": "tests_test_discord_client_test_send_dm_raises_value_error_if_member_not_found"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L95",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_discord_client_py",
+ "target": "tests_test_discord_client_test_post_message_finds_channel_and_sends"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L106",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_discord_client_py",
+ "target": "tests_test_discord_client_test_post_message_raises_value_error_if_channel_not_found"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L125",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_discord_client_py",
+ "target": "tests_test_discord_client_test_post_image_returns_cdn_url"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L143",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_discord_client_py",
+ "target": "tests_test_discord_client_test_get_members_returns_correct_dict_format"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_rationale_1",
+ "target": "bot_tests_test_discord_client_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L60",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_send_dm_finds_member_and_sends",
+ "target": "tests_test_discord_client_make_bot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L73",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_send_dm_case_insensitive",
+ "target": "tests_test_discord_client_make_bot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L83",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_send_dm_raises_value_error_if_member_not_found",
+ "target": "tests_test_discord_client_make_bot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L98",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_post_message_finds_channel_and_sends",
+ "target": "tests_test_discord_client_make_bot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L108",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_post_message_raises_value_error_if_channel_not_found",
+ "target": "tests_test_discord_client_make_bot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L132",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_post_image_returns_cdn_url",
+ "target": "tests_test_discord_client_make_bot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L149",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_get_members_returns_correct_dict_format",
+ "target": "tests_test_discord_client_make_bot"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_rationale_12",
+ "target": "tests_test_discord_client_make_bot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L96",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_post_message_finds_channel_and_sends",
+ "target": "tests_test_discord_client_make_text_channel"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L126",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_post_image_returns_cdn_url",
+ "target": "tests_test_discord_client_make_text_channel"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L59",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_send_dm_finds_member_and_sends",
+ "target": "tests_test_discord_client_make_guild"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L72",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_send_dm_case_insensitive",
+ "target": "tests_test_discord_client_make_guild"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L82",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_send_dm_raises_value_error_if_member_not_found",
+ "target": "tests_test_discord_client_make_guild"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L97",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_post_message_finds_channel_and_sends",
+ "target": "tests_test_discord_client_make_guild"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L107",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_post_message_raises_value_error_if_channel_not_found",
+ "target": "tests_test_discord_client_make_guild"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L131",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_post_image_returns_cdn_url",
+ "target": "tests_test_discord_client_make_guild"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_discord_client.py",
+ "source_location": "L148",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_discord_client_test_get_members_returns_correct_dict_format",
+ "target": "tests_test_discord_client_make_guild"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_get_guild_member_py",
+ "target": "tests_test_http_api_patch_api_key"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L30",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_get_guild_member_py",
+ "target": "tests_test_get_guild_member_patch_guild_id"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L40",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_get_guild_member_py",
+ "target": "tests_test_get_guild_member_make_mock_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L75",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_get_guild_member_py",
+ "target": "tests_test_get_guild_member_make_mock_bot_with_guild"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L89",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_get_guild_member_py",
+ "target": "tests_test_get_guild_member_test_get_guild_member_found_returns_200_with_member_data"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L119",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_get_guild_member_py",
+ "target": "tests_test_get_guild_member_test_get_guild_member_roles_exclude_everyone"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L144",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_get_guild_member_py",
+ "target": "tests_test_get_guild_member_test_get_guild_member_not_found_returns_200_is_member_false"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L166",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_get_guild_member_py",
+ "target": "tests_test_get_guild_member_test_get_guild_member_discord_http_exception_returns_503"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L188",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_get_guild_member_py",
+ "target": "tests_test_get_guild_member_test_get_guild_member_guild_none_returns_503"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L202",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_get_guild_member_py",
+ "target": "tests_test_get_guild_member_test_get_guild_member_bot_none_returns_503"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L218",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_get_guild_member_py",
+ "target": "tests_test_get_guild_member_test_get_guild_member_no_auth_returns_403"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L228",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_get_guild_member_py",
+ "target": "tests_test_get_guild_member_test_get_guild_member_wrong_api_key_returns_401"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_rationale_1",
+ "target": "bot_tests_test_get_guild_member_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L31",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_rationale_31",
+ "target": "tests_test_get_guild_member_patch_guild_id"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L91",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_test_get_guild_member_found_returns_200_with_member_data",
+ "target": "tests_test_get_guild_member_make_mock_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L121",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_test_get_guild_member_roles_exclude_everyone",
+ "target": "tests_test_get_guild_member_make_mock_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L230",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_test_get_guild_member_wrong_api_key_returns_401",
+ "target": "tests_test_get_guild_member_make_mock_member"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L46",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_rationale_46",
+ "target": "tests_test_get_guild_member_make_mock_member"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L95",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_test_get_guild_member_found_returns_200_with_member_data",
+ "target": "tests_test_get_guild_member_make_mock_bot_with_guild"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L125",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_test_get_guild_member_roles_exclude_everyone",
+ "target": "tests_test_get_guild_member_make_mock_bot_with_guild"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L149",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_test_get_guild_member_not_found_returns_200_is_member_false",
+ "target": "tests_test_get_guild_member_make_mock_bot_with_guild"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L171",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_test_get_guild_member_discord_http_exception_returns_503",
+ "target": "tests_test_get_guild_member_make_mock_bot_with_guild"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L190",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_test_get_guild_member_guild_none_returns_503",
+ "target": "tests_test_get_guild_member_make_mock_bot_with_guild"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L233",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_test_get_guild_member_wrong_api_key_returns_401",
+ "target": "tests_test_get_guild_member_make_mock_bot_with_guild"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L76",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_rationale_76",
+ "target": "tests_test_get_guild_member_make_mock_bot_with_guild"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L90",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_rationale_90",
+ "target": "tests_test_get_guild_member_test_get_guild_member_found_returns_200_with_member_data"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L120",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_rationale_120",
+ "target": "tests_test_get_guild_member_test_get_guild_member_roles_exclude_everyone"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L145",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_rationale_145",
+ "target": "tests_test_get_guild_member_test_get_guild_member_not_found_returns_200_is_member_false"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L167",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_rationale_167",
+ "target": "tests_test_get_guild_member_test_get_guild_member_discord_http_exception_returns_503"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L189",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_rationale_189",
+ "target": "tests_test_get_guild_member_test_get_guild_member_guild_none_returns_503"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L203",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_rationale_203",
+ "target": "tests_test_get_guild_member_test_get_guild_member_bot_none_returns_503"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L219",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_rationale_219",
+ "target": "tests_test_get_guild_member_test_get_guild_member_no_auth_returns_403"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_get_guild_member.py",
+ "source_location": "L229",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_get_guild_member_rationale_229",
+ "target": "tests_test_get_guild_member_test_get_guild_member_wrong_api_key_returns_401"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L18",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_patch_api_key"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L28",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_make_mock_bot"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L44",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_test_version_returns_200"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L54",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_test_version_bare_semver_in_local_dev"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L74",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_test_version_includes_build_suffix_when_env_vars_set"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L94",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_test_version_unknown_when_version_file_missing"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L112",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_test_version_bare_semver_when_env_vars_are_unknown_literal"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L137",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_test_health_no_bot"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L148",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_test_health_with_bot_connected"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L163",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_test_notify_success"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L179",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_test_notify_bot_not_ready_returns_503"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L191",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_test_notify_member_not_found_returns_404"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L212",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_test_post_message_success"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L228",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_test_post_message_bot_not_ready_returns_503"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L245",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_test_post_image_success"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L264",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_test_post_image_bot_not_ready_returns_503"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L281",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_test_get_members_returns_list"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L299",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "bot_tests_test_http_api_py",
+ "target": "tests_test_http_api_test_get_members_bot_not_ready_returns_503"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_http_api_rationale_1",
+ "target": "bot_tests_test_http_api_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_http_api_rationale_19",
+ "target": "tests_test_http_api_patch_api_key"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L149",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_http_api_test_health_with_bot_connected",
+ "target": "tests_test_http_api_make_mock_bot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L164",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_http_api_test_notify_success",
+ "target": "tests_test_http_api_make_mock_bot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L192",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_http_api_test_notify_member_not_found_returns_404",
+ "target": "tests_test_http_api_make_mock_bot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L213",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_http_api_test_post_message_success",
+ "target": "tests_test_http_api_make_mock_bot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L246",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_http_api_test_post_image_success",
+ "target": "tests_test_http_api_make_mock_bot"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L286",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_http_api_test_get_members_returns_list",
+ "target": "tests_test_http_api_make_mock_bot"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L45",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_http_api_rationale_45",
+ "target": "tests_test_http_api_test_version_returns_200"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L55",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_http_api_rationale_55",
+ "target": "tests_test_http_api_test_version_bare_semver_in_local_dev"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L75",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_http_api_rationale_75",
+ "target": "tests_test_http_api_test_version_includes_build_suffix_when_env_vars_set"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L95",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_http_api_rationale_95",
+ "target": "tests_test_http_api_test_version_unknown_when_version_file_missing"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "bot/tests/test_http_api.py",
+ "source_location": "L113",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_http_api_rationale_113",
+ "target": "tests_test_http_api_test_version_bare_semver_when_env_vars_are_unknown_literal"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/tailwind.config.ts",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_tailwind_config_ts",
+ "target": "frontend_src_api_config_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/vitest.config.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_vitest_config_ts",
+ "target": "frontend_vite_config_ts"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_board_spec_ts",
+ "target": "e2e_board_spec_apicreatesiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_board_spec_ts",
+ "target": "e2e_board_spec_apiaddbuilding"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L52",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_board_spec_ts",
+ "target": "e2e_board_spec_apicreatemember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L84",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_board_spec_ts",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L127",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_board_spec_ts",
+ "target": "e2e_board_spec_buildingstab"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L128",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_board_spec_ts",
+ "target": "e2e_board_spec_poststab"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L179",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_board_spec_ts",
+ "target": "e2e_board_spec_search"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L198",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_board_spec_ts",
+ "target": "e2e_board_spec_roleselect"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L273",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_board_spec_ts",
+ "target": "e2e_board_spec_firstpositionspan"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L274",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_board_spec_ts",
+ "target": "e2e_board_spec_positioncell"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L276",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_board_spec_ts",
+ "target": "e2e_board_spec_chevron"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/board.spec.ts",
+ "source_location": "L367",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_board_spec_ts",
+ "target": "e2e_board_spec_autofillbtn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L48",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_siege_lifecycle_spec_ts",
+ "target": "e2e_board_spec_apicreatesiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L63",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_siege_lifecycle_spec_ts",
+ "target": "e2e_board_spec_apiaddbuilding"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_siege_lifecycle_spec_ts",
+ "target": "e2e_board_spec_apicreatemember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L613",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "e2e_board_spec_buildingstab"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "frontend_src_api_posts_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "api_posts_getposts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "frontend_src_api_sieges_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "api_sieges_getsiegememberpreferences"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "api_sieges_previewpostsuggestions"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "frontend_src_api_board_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "api_posts_updatepost"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "api_types_buildingresponse"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "api_types_postcondition"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "frontend_src_components_ui_button_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "ui_button_button"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "frontend_src_components_postsuggestionsmodal_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "frontend_src_lib_post_priority_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "lib_post_priority_prioritylabel"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "lib_post_priority_prioritybadgecolor"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "pages_boardpage_role_labels"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "pages_boardpage_role_priority"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L40",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "pages_boardpage_role_badge_colors"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L47",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "pages_boardpage_power_labels"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L57",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "components_poststab_memberwithmatches"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L64",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "components_poststab_duplicateconditionmap"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L68",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "components_poststab_buildduplicateconditionmap"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L85",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "components_poststab_findpostposition"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L100",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "components_poststab_memberassignrow"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L302",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "e2e_board_spec_poststab",
+ "target": "pages_postspage_postrow"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L25",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "e2e_board_spec_poststab"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L112",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "e2e_board_spec_positioncell"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L251",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "e2e_board_spec_chevron"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/members.spec.ts",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_members_spec_ts",
+ "target": "e2e_members_spec_ensurememberslotsavailable"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/members.spec.ts",
+ "source_location": "L68",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_members_spec_ts",
+ "target": "ui_checkbox_checkbox"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/members.spec.ts",
+ "source_location": "L125",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_members_spec_ts",
+ "target": "e2e_members_spec_activecheckbox"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/members.spec.ts",
+ "source_location": "L131",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_members_spec_ts",
+ "target": "e2e_members_spec_editlinks"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L93",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_siege_lifecycle_spec_ts",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L212",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_siege_lifecycle_spec_ts",
+ "target": "e2e_siege_lifecycle_spec_dateinput"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L153",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_siege_lifecycle_spec_ts",
+ "target": "e2e_siege_lifecycle_spec_url"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L181",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_siege_lifecycle_spec_ts",
+ "target": "e2e_siege_lifecycle_spec_tabstrip"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L203",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_siege_lifecycle_spec_ts",
+ "target": "e2e_siege_lifecycle_spec_boardlink"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L369",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_siege_lifecycle_spec_ts",
+ "target": "pages_boardpage_test_memberrows"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L382",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_siege_lifecycle_spec_ts",
+ "target": "e2e_siege_lifecycle_spec_activebadge"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/e2e/siege-lifecycle.spec.ts",
+ "source_location": "L383",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_e2e_siege_lifecycle_spec_ts",
+ "target": "e2e_siege_lifecycle_spec_errorbadge"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/SiegeLayout.test.tsx",
+ "source_location": "L66",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_siegelayout_tsx",
+ "target": "e2e_siege_lifecycle_spec_boardlink"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "frontend_src_components_layout_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "frontend_src_components_requireauth_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "frontend_src_components_siegelayout_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "pages_loginpage_loginpage"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "frontend_src_pages_landingpage_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "pages_landingpage_landingorsieges"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "pages_memberspage_memberspage"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "frontend_src_pages_memberdetailpage_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "frontend_src_pages_siegespage_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L10",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "pages_siegecreatepage_siegecreatepage"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "frontend_src_pages_siegesettingspage_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "pages_boardpage_boardpage"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "pages_postspage_postspage"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "pages_comparisonpage_comparisonpage"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "frontend_src_pages_postprioritiespage_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "pages_systempage_systempage"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/App.tsx",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_app_tsx",
+ "target": "src_app_app"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/main.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_main_tsx",
+ "target": "frontend_src_app_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/main.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_main_tsx",
+ "target": "frontend_src_context_authcontext_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/main.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_main_tsx",
+ "target": "context_authcontext_authprovider"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/main.tsx",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_main_tsx",
+ "target": "src_main_queryclient"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/board.ts",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_board_ts",
+ "target": "frontend_src_api_client_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/board.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_board_ts",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/board.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_board_ts",
+ "target": "api_types_boardresponse"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/board.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_board_ts",
+ "target": "api_types_positionresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/board.ts",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_board_ts",
+ "target": "api_board_getboard"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/board.ts",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_board_ts",
+ "target": "api_posts_updatepost"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "frontend_src_api_board_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "frontend_src_api_board_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "api_board_getboard"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "api_board_getboard"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/changelog.ts",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_changelog_ts",
+ "target": "frontend_src_api_client_ts"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/changelog.ts",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_changelog_ts",
+ "target": "api_changelog_changelogstatus"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/changelog.ts",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_changelog_ts",
+ "target": "api_changelog_fetchchangelogstatus"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/changelog.ts",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_changelog_ts",
+ "target": "api_changelog_markchangelogseen"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ChangelogDropdown.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_changelogdropdown_tsx",
+ "target": "frontend_src_api_changelog_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ChangelogDropdown.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_changelogdropdown_tsx",
+ "target": "api_changelog_fetchchangelogstatus"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ChangelogDropdown.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_changelogdropdown_tsx",
+ "target": "api_changelog_markchangelogseen"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/client.ts",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_client_ts",
+ "target": "api_client_apiclient"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/config.ts",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_config_ts",
+ "target": "frontend_src_api_client_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "frontend_src_api_client_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/posts.ts",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_posts_ts",
+ "target": "frontend_src_api_client_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "frontend_src_api_client_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/context/AuthContext.tsx",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_context_authcontext_tsx",
+ "target": "frontend_src_api_client_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/LoginPage.tsx",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_loginpage_loginpage",
+ "target": "frontend_src_api_client_ts"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/config.ts",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_config_ts",
+ "target": "api_config_appconfig"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/config.ts",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_config_ts",
+ "target": "api_config_fetchconfig"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/Layout.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_layout_tsx",
+ "target": "frontend_src_api_config_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/Layout.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_layout_tsx",
+ "target": "api_config_fetchconfig"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "api_types_postcondition"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "api_types_memberroleinfo"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "api_types_syncpreviewresponse"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "api_types_syncapplyitem"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "api_members_getmember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "api_members_createmember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L32",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "api_members_updatemember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L46",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "api_members_deletemember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L50",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "api_members_getmemberpreferences"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L59",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "api_members_updatememberpreferences"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L72",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "api_members_getpostconditions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L77",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "api_members_getmemberroles"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L82",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "api_members_previewdiscordsync"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/members.ts",
+ "source_location": "L89",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_members_ts",
+ "target": "api_members_applydiscordsync"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "frontend_src_api_members_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "frontend_src_api_members_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "frontend_src_api_members_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "frontend_src_api_members_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "frontend_src_api_members_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "frontend_src_api_members_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "api_members_getmember"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "api_members_createmember"
+ },
+ {
+ "relation": "imports",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "context": "import",
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "api_members_updatemember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L149",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_members_updatemember"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "api_members_updatemember"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "api_members_getmemberpreferences"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/members.py",
+ "source_location": "L148",
+ "weight": 1.0,
+ "source": "api_members_getmemberpreferences",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "api_members_updatememberpreferences"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "api_members_getpostconditions"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "api_members_getpostconditions"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "api_members_getpostconditions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/reference.py",
+ "source_location": "L15",
+ "weight": 1.0,
+ "source": "api_members_getpostconditions",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "api_members_previewdiscordsync"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/discord_sync.py",
+ "source_location": "L27",
+ "weight": 1.0,
+ "source": "api_members_previewdiscordsync",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "api_members_applydiscordsync"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L288",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_notifications_notifysiegemembers",
+ "target": "api_types_notifyresponse"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_notifications_notifysiegemembers"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L255",
+ "weight": 1.0,
+ "source": "api_notifications_notifysiegemembers",
+ "target": "api_types_notificationbatchresponse"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L341",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_notifications_getnotificationbatch",
+ "target": "api_types_notificationresultitem"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L354",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_notifications_getnotificationbatch",
+ "target": "api_types_notificationbatchresponse"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_notifications_getnotificationbatch"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_notifications_posttochannel"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/posts.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_posts_ts",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/posts.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_posts_ts",
+ "target": "api_types_post"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/posts.ts",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_posts_ts",
+ "target": "api_posts_postpriorityconfig"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/posts.ts",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_posts_ts",
+ "target": "api_posts_getpostpriorities"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/posts.ts",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_posts_ts",
+ "target": "api_posts_updatepostpriority"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/posts.ts",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_posts_ts",
+ "target": "api_posts_getposts"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/posts.ts",
+ "source_location": "L32",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_posts_ts",
+ "target": "api_posts_updatepost"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/posts.ts",
+ "source_location": "L44",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_posts_ts",
+ "target": "api_posts_setpostconditions"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "frontend_src_api_posts_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "frontend_src_api_posts_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "frontend_src_api_posts_ts"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/api/post_priority_config.py",
+ "source_location": "L32",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_posts_postpriorityconfig",
+ "target": "api_posts_updatepostpriority"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L44",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedmember",
+ "target": "api_posts_postpriorityconfig"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L44",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedassignment",
+ "target": "api_posts_postpriorityconfig"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L44",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedreserve",
+ "target": "api_posts_postpriorityconfig"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L44",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconfig",
+ "target": "api_posts_postpriorityconfig"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L44",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconditions",
+ "target": "api_posts_postpriorityconfig"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L44",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_importstats",
+ "target": "api_posts_postpriorityconfig"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "api_posts_getpostpriorities"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "api_posts_getpostpriorities"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "api_posts_updatepostpriority"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "api_posts_getposts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "api_posts_updatepost"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "api_posts_setpostconditions"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_types_buildingtypeinfo"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_types_memberpreferencesummary"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "frontend_src_api_sieges_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_types_validationresult"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_types_autofillpreviewresult"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_types_autofillapplyresult"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_types_attackdaypreviewresult"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_types_attackdayapplyresult"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_types_comparisonresult"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_types_postsuggestionpreviewresult"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_types_postsuggestionapplyresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_getsieges"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_getsiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L32",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_createsiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L37",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_updatesiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L45",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_deletesiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L49",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_activatesiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L54",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_completesiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L59",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_clonesiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L64",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_reopensiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L69",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_validatesiege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L113",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_getbuildings"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L83",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_createbuilding"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L94",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_updatebuilding"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L106",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_deletebuilding"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L120",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_getsiegemembers"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L127",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_getsiegememberpreferences"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L165",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_previewautofill"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L174",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_applyautofill"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L183",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_previewattackday"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L192",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_applyattackday"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L201",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_comparesieges"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L210",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_comparesiegesspecific"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L220",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_previewpostsuggestions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/sieges.ts",
+ "source_location": "L229",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_sieges_ts",
+ "target": "api_sieges_applypostsuggestions"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "frontend_src_api_sieges_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/SiegeLayout.tsx",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_siegelayout_tsx",
+ "target": "frontend_src_api_sieges_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "frontend_src_api_sieges_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "frontend_src_api_sieges_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "frontend_src_api_sieges_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "frontend_src_api_sieges_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "frontend_src_api_sieges_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "frontend_src_api_sieges_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "api_sieges_getsieges"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "api_sieges_getsieges"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "api_sieges_getsieges"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/SiegeLayout.tsx",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_siegelayout_tsx",
+ "target": "api_sieges_getsiege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "api_sieges_getsiege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "api_sieges_getsiege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "api_sieges_getsiege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_sieges_getsiege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "api_sieges_createsiege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_sieges_updatesiege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_sieges_deletesiege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_sieges_activatesiege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_sieges_completesiege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "api_sieges_clonesiege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_sieges_clonesiege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_sieges_reopensiege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "api_sieges_validatesiege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_sieges_validatesiege"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L284",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_sieges_updatebuilding",
+ "target": "api_sieges_getbuildings"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L341",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_sieges_deletebuilding",
+ "target": "api_sieges_getbuildings"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_sieges_getbuildings"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_sieges_updatebuilding"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/buildings.py",
+ "source_location": "L298",
+ "weight": 1.0,
+ "source": "api_sieges_updatebuilding",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "api_sieges_getsiegemembers"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "api_sieges_getsiegemembers"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_sieges_getsiegemembers"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/services/siege_members.py",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "api_sieges_getsiegememberpreferences"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/siege_members.py",
+ "source_location": "L22",
+ "weight": 1.0,
+ "source": "api_sieges_getsiegememberpreferences",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "api_sieges_previewautofill"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/autofill.py",
+ "source_location": "L70",
+ "weight": 1.0,
+ "source": "api_sieges_previewautofill",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "api_sieges_applyautofill"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "api_sieges_previewattackday"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "api_sieges_applyattackday"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "api_sieges_comparesieges"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "api_sieges_comparesiegesspecific"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "api_sieges_previewpostsuggestions"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "api_sieges_applypostsuggestions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "backend/app/services/post_suggestions.py",
+ "source_location": "L411",
+ "weight": 1.0,
+ "source": "api_sieges_applypostsuggestions",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L23",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_syncmatch"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L32",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_syncpreviewresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L38",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_syncapplyitem"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L123",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_postcondition"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L51",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L62",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L72",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_memberpreferencesummary"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L79",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_positionresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L89",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_buildinggroupresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L96",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_buildingresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L105",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_boardresponse"
+ },
+ {
+ "relation": "imports_from",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L22",
+ "weight": 1.0,
+ "context": "import",
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L129",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_post"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L140",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_validationissue"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L146",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_validationresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L152",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_autofillassignment"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L158",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_autofillpreviewresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L163",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_autofillapplyresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L168",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_attackdayassignment"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L173",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_attackdaypreviewresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L178",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_attackdayapplyresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L183",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_positionkey"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L190",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_memberdiff"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L198",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_comparisonresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L205",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_notificationresultitem"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L214",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_notificationbatchresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L220",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_notifyresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L227",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_generateimagesresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L233",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_versioninfo"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L241",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_buildingtypeinfo"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L249",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_memberroleinfo"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L256",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_postsuggestionskipreason"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L262",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_postsuggestionentry"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L279",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_postsuggestionpreviewresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L284",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_postsuggestionstalereason"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L291",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_postsuggestionstaleentry"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/api/types.ts",
+ "source_location": "L298",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_api_types_ts",
+ "target": "api_types_postsuggestionapplyresult"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L38",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/lib/buildingColors.ts",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_buildingcolors_ts",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_grouppostconditions_ts",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/MembersPage.test.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.test.tsx",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L39",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/handlers.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_handlers_ts",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L43",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L29",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/SiegeLayout.test.tsx",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_siegelayout_tsx",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L38",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegesPage.test.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_siegespage_test_tsx",
+ "target": "frontend_src_api_types_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/images.py",
+ "source_location": "L12",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_generateimagesresponse",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L15",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notifyresponse",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L15",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationresultitem",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L15",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationbatchresponse",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/member.py",
+ "source_location": "L8",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_member",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L5",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_syncmatch",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/member.py",
+ "source_location": "L5",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_syncpreviewresponse",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedmember",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedassignment",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedreserve",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconfig",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconditions",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_importstats",
+ "target": "api_types_memberrole"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L15",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notifyresponse",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L15",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationresultitem",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L15",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationbatchresponse",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/siege.py",
+ "source_location": "L8",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_siege",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedmember",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedassignment",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedreserve",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconfig",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconditions",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_importstats",
+ "target": "api_types_siegestatus"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/lib/buildingColors.ts",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_buildingcolors_ts",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/handlers.ts",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_handlers_ts",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/building.py",
+ "source_location": "L7",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_building",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/board.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_boardresponse",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_positionresponse",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_buildinggroupresponse",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L3",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_buildingresponse",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedmember",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedassignment",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedreserve",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconfig",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconditions",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L39",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_importstats",
+ "target": "api_types_buildingtype"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L540",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/MembersPage.test.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L334",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notifyresponse",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L334",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationresultitem",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L334",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationbatchresponse",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/post_condition.py",
+ "source_location": "L9",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_postcondition",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/siege_member.py",
+ "source_location": "L9",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_siegemember",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L40",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedmember",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L40",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedassignment",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L40",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedreserve",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L40",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconfig",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L40",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconditions",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L40",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_importstats",
+ "target": "api_types_member"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "api_types_syncmatch"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "api_types_syncapplyitem"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_grouppostconditions_ts",
+ "target": "api_types_postcondition"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L43",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "api_types_postcondition"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/lib/postConditionTypes.test.ts",
+ "source_location": "L25",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_postcondition",
+ "target": "lib_postconditiontypes_test_ids"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/lib/postConditionTypes.test.ts",
+ "source_location": "L93",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_postcondition",
+ "target": "lib_postconditiontypes_test_unique"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/lib/postConditionTypes.test.ts",
+ "source_location": "L51",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_postcondition",
+ "target": "lib_postconditiontypes_test_count"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L38",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "api_types_postcondition"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/post_condition.py",
+ "source_location": "L10",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_postcondition",
+ "target": "api_types_post"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L43",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedmember",
+ "target": "api_types_postcondition"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L43",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedassignment",
+ "target": "api_types_postcondition"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L43",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedreserve",
+ "target": "api_types_postcondition"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L43",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconfig",
+ "target": "api_types_postcondition"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L43",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconditions",
+ "target": "api_types_postcondition"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L43",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_importstats",
+ "target": "api_types_postcondition"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L29",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/SiegeLayout.test.tsx",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_siegelayout_tsx",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "uses",
+ "context": "import",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/siege_member.py",
+ "source_location": "L10",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_siegemember",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L39",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegesPage.test.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_siegespage_test_tsx",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L19",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notifyresponse",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L19",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationresultitem",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/siege.py",
+ "source_location": "L12",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_siege",
+ "target": "api_types_notificationbatchresponse"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/siege.py",
+ "source_location": "L11",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_siege",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/siege.py",
+ "source_location": "L13",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_siege",
+ "target": "api_types_post"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L45",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedmember",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L45",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedassignment",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L45",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedreserve",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L45",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconfig",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L45",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconditions",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L45",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_importstats",
+ "target": "api_types_siege"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_building",
+ "target": "api_types_positionresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_building",
+ "target": "api_types_buildinggroupresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/building.py",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_building",
+ "target": "api_types_buildingresponse"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L13",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notifyresponse",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L13",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationresultitem",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L13",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationbatchresponse",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/models/post.py",
+ "source_location": "L9",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_post",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L37",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedmember",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L37",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedassignment",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L37",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedreserve",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L37",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconfig",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L37",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconditions",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L37",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_importstats",
+ "target": "api_types_building"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "backend/app/schemas/siege_member.py",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "api_types_memberpreferencesummary"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "api_types_positionresponse"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L29",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "api_types_positionresponse"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "api_types_positionresponse"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "api_types_buildinggroupresponse"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "api_types_buildingresponse"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "api_types_buildingresponse"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L29",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "api_types_boardresponse"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "api_types_boardresponse"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/images.py",
+ "source_location": "L41",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_generateimagesresponse",
+ "target": "api_types_boardresponse"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L382",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notifyresponse",
+ "target": "api_types_boardresponse"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L382",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationresultitem",
+ "target": "api_types_boardresponse"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L382",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationbatchresponse",
+ "target": "api_types_boardresponse"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "api_types_attackdaypreviewresult"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "frontend_src_components_ui_table_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "ui_table_table"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "ui_table_tablebody"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "ui_table_tablecell"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "ui_table_tablehead"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "ui_table_tablerow"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "frontend_src_components_ui_button_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "ui_button_button"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L23",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "ui_checkbox_checkbox"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "frontend_src_components_ui_select_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "ui_select_selectcontent"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "ui_select_selectitem"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "ui_select_selecttrigger"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L31",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "frontend_src_components_ui_dialog_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L31",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "ui_dialog_dialogcontent"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L31",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "ui_dialog_dialogheader"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L31",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "ui_dialog_dialogtitle"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L31",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "ui_dialog_dialogfooter"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L31",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "ui_dialog_dialogdescription"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeMembersPage.tsx",
+ "source_location": "L41",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "pages_siegememberspage_attackdayselect"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L29",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "frontend_src_test_server_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L45",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L61",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "pages_siegememberspage_test_makepreview"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L75",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "pages_siegememberspage_test_registerhandlers"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L93",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "pages_siegememberspage_test_renderpage"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L104",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "pages_siegememberspage_test_openpreviewdialog"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L195",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "pages_boardpage_test_members"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L139",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "pages_siegememberspage_test_allcells"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L158",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "pages_siegememberspage_test_namecells"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L188",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "pages_siegememberspage_test_day2header"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L190",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "pages_systempage_datarow"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L184",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "api_types_siegemember",
+ "target": "pages_siegememberspage_test_day1names"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/images.py",
+ "source_location": "L13",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_generateimagesresponse",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L20",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notifyresponse",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L20",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationresultitem",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L20",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationbatchresponse",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L46",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedmember",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L46",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedassignment",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L46",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedreserve",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L46",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconfig",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L46",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconditions",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L46",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_importstats",
+ "target": "api_types_siegemember"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.test.tsx",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "api_types_post"
+ },
+ {
+ "relation": "contains",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L793",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "api_types_post"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L38",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "api_types_post"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L42",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedmember",
+ "target": "api_types_post"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L42",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedassignment",
+ "target": "api_types_post"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L42",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedreserve",
+ "target": "api_types_post"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L42",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconfig",
+ "target": "api_types_post"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L42",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_parsedpostconditions",
+ "target": "api_types_post"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L42",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "excel_import_import_excel_importstats",
+ "target": "api_types_post"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L23",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_types_validationissue"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "api_types_validationresult"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L39",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_types_validationresult"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "api_types_autofillpreviewresult"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "api_types_positionkey"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "api_types_memberdiff"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L39",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_types_notificationresultitem"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L16",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notificationresultitem",
+ "target": "api_types_notificationbatchresponse"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L39",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_types_notificationbatchresponse"
+ },
+ {
+ "relation": "uses",
+ "confidence": "INFERRED",
+ "source_file": "backend/app/api/notifications.py",
+ "source_location": "L16",
+ "weight": 0.8,
+ "confidence_score": 0.5,
+ "source": "api_types_notifyresponse",
+ "target": "api_types_notificationbatchresponse"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L39",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "api_types_notifyresponse"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/handlers.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_handlers_ts",
+ "target": "api_types_buildingtypeinfo"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "api_types_postsuggestionentry"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L38",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "api_types_postsuggestionpreviewresult"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L29",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "api_types_postsuggestionpreviewresult"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "api_types_postsuggestionstaleentry"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SystemPage.tsx",
+ "source_location": "L101",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_systempage_systempage",
+ "target": "api_version_useversion"
+ },
+ {
+ "relation": "imports",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/Carousel.test.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "context": "import",
+ "confidence_score": 1.0,
+ "source": "components_carousel_carousel",
+ "target": "components_carousel_carouselslide"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "components_carousel_carouselslide"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/Carousel.tsx",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_carousel_carousel",
+ "target": "components_carousel_carouselprops"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/Carousel.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_carousel_carousel",
+ "target": "pages_landingpage_colors"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "components_carousel_carousel"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/Carousel.test.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_carousel_carousel",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/Carousel.test.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_carousel_carousel",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/Carousel.test.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_carousel_carousel",
+ "target": "pages_landingpage_slides"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/Carousel.test.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_carousel_carousel",
+ "target": "components_carousel_test_rendercarousel"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/Carousel.test.tsx",
+ "source_location": "L48",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_carousel_carousel",
+ "target": "components_carousel_test_track"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/Carousel.test.tsx",
+ "source_location": "L40",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_carousel_carousel",
+ "target": "components_carousel_test_dot0"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/Carousel.test.tsx",
+ "source_location": "L100",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_carousel_carousel",
+ "target": "pages_boardpage_test_user"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/Carousel.test.tsx",
+ "source_location": "L116",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_carousel_carousel",
+ "target": "components_carousel_test_viewport"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ChangelogDropdown.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_changelogdropdown_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ChangelogDropdown.tsx",
+ "source_location": "L131",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_changelogdropdown_tsx",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ChangelogDropdown.tsx",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_changelogdropdown_tsx",
+ "target": "frontend_src_components_ui_dropdown_menu_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ChangelogDropdown.tsx",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_changelogdropdown_tsx",
+ "target": "ui_dropdown_menu_dropdownmenucontent"
+ },
+ {
+ "relation": "calls",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ChangelogDropdown.tsx",
+ "source_location": "L103",
+ "weight": 1.0,
+ "context": "call",
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_changelogdropdown_tsx",
+ "target": "components_changelogdropdown_hasunread"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/Layout.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_layout_tsx",
+ "target": "frontend_src_components_changelogdropdown_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/ChangelogDropdown.test.tsx",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_changelogdropdown_test_tsx",
+ "target": "frontend_src_components_changelogdropdown_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "frontend_src_components_ui_dialog_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "ui_dialog_dialogcontent"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "ui_dialog_dialogheader"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "ui_dialog_dialogtitle"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "ui_dialog_dialogfooter"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "frontend_src_components_ui_table_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "ui_table_table"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "ui_table_tablebody"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "ui_table_tablecell"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "ui_table_tablehead"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "ui_table_tablerow"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "frontend_src_components_ui_button_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "ui_button_button"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "frontend_src_components_ui_badge_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "ui_badge_badge"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L23",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "ui_checkbox_checkbox"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L25",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "components_groupbytoggle_props"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "components_discordsyncmodal_confidencevariant"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/DiscordSyncModal.tsx",
+ "source_location": "L39",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_discordsyncmodal_tsx",
+ "target": "components_discordsyncmodal_confidence_label"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "frontend_src_components_discordsyncmodal_tsx"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/GroupByToggle.tsx",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_groupbytoggle_groupbytoggle",
+ "target": "components_groupbytoggle_props"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L34",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_groupbytoggle_props"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/GroupByToggle.tsx",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_groupbytoggle_groupbytoggle",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/GroupByToggle.tsx",
+ "source_location": "L39",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_groupbytoggle_groupbytoggle",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/GroupByToggle.tsx",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_groupbytoggle_groupbytoggle",
+ "target": "frontend_src_lib_grouppostconditions_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/GroupByToggle.tsx",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_groupbytoggle_groupbytoggle",
+ "target": "lib_grouppostconditions_groupbymode"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L34",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "components_groupbytoggle_groupbytoggle"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L23",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "components_groupbytoggle_groupbytoggle"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "components_groupbytoggle_groupbytoggle"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByToggle.test.tsx",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbytoggle_test_tsx",
+ "target": "components_groupbytoggle_groupbytoggle"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/Layout.test.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_layout_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/Layout.tsx",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_layout_tsx",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/Layout.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_layout_tsx",
+ "target": "frontend_src_context_authcontext_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/Layout.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_layout_tsx",
+ "target": "context_authcontext_useauth"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/Layout.tsx",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_layout_tsx",
+ "target": "components_layout_navlinkclass"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/Layout.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_layout_tsx",
+ "target": "components_layout_layout"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/Layout.test.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_layout_tsx",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/Layout.test.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_layout_tsx",
+ "target": "frontend_src_test_server_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/Layout.test.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_layout_tsx",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/Layout.test.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_layout_tsx",
+ "target": "components_layout_test_renderlayout"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/components/Layout.tsx",
+ "source_location": "L10",
+ "weight": 1.0,
+ "source": "components_layout_navlinkclass",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/components/Layout.tsx",
+ "source_location": "L18",
+ "weight": 1.0,
+ "source": "components_layout_layout",
+ "target": "context_authcontext_useauth"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostsTab.tsx",
+ "source_location": "L329",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postrow",
+ "target": "components_poststab_findpostposition"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "frontend_src_components_ui_dialog_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "ui_dialog_dialogcontent"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "ui_dialog_dialogheader"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "ui_dialog_dialogtitle"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L25",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "frontend_src_components_ui_button_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L25",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "ui_button_button"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L755",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L30",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_outcomefilter"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L32",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_classification"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L42",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_priority_meta"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L64",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_getprioritymeta"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L70",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_skip_reason_label"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L82",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_stale_reason_label"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L104",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_tileconfig"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L159",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_classify"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L169",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_pill"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L197",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_changecell"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L248",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_skipicon"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L259",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_conditioncell"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L290",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_summarytile"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L345",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_stateloading"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L355",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_stateempty"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L379",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_statestaleconflict"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L476",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_expirycountdown"
+ },
+ {
+ "relation": "calls",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L554",
+ "weight": 1.0,
+ "context": "call",
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_useexpirycountdown"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "frontend_src_test_server_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L48",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "pages_siegememberspage_test_makepreview"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L93",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_test_rendermodal"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L442",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_test_rows"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L145",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "pages_systempage_datarow"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L445",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "ui_checkbox_checkbox"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L157",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_test_twosuggestions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L581",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "pages_boardpage_test_user"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L654",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_poststab_test_applybtn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L493",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_test_onclose"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L360",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_test_regeneratebtns"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L390",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_test_skippedtile"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L400",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_test_alltile"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L411",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_test_optimalpreview"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L516",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_test_tworows"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L598",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_test_applyremainingbtn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L639",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_test_expiresat"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L631",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_test_subtitle"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L724",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_test_slidersicons"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L725",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_postsuggestionsmodal_tsx",
+ "target": "components_postsuggestionsmodal_test_infoicons"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L198",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "components_postsuggestionsmodal_changecell",
+ "target": "components_postsuggestionsmodal_classify"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L185",
+ "weight": 1.0,
+ "source": "components_postsuggestionsmodal_pill",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/components/PostSuggestionsModal.tsx",
+ "source_location": "L308",
+ "weight": 1.0,
+ "source": "components_postsuggestionsmodal_summarytile",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/RequireAuth.tsx",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_requireauth_tsx",
+ "target": "frontend_src_context_authcontext_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/RequireAuth.tsx",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_requireauth_tsx",
+ "target": "context_authcontext_useauth"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/RequireAuth.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_requireauth_tsx",
+ "target": "components_requireauth_requireauth"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/components/RequireAuth.tsx",
+ "source_location": "L9",
+ "weight": 1.0,
+ "source": "components_requireauth_requireauth",
+ "target": "context_authcontext_useauth"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/SiegeLayout.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_siegelayout_tsx",
+ "target": "components_siegelayout_siegelayout"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/SiegeLayout.test.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_siegelayout_tsx",
+ "target": "frontend_src_test_server_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/SiegeLayout.test.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_siegelayout_tsx",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/SiegeLayout.test.tsx",
+ "source_location": "L28",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_siegelayout_tsx",
+ "target": "components_layout_test_renderlayout"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/SiegeLayout.test.tsx",
+ "source_location": "L85",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_siegelayout_tsx",
+ "target": "components_siegelayout_test_postslink"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/SiegeLayout.test.tsx",
+ "source_location": "L79",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_siegelayout_tsx",
+ "target": "components_siegelayout_test_settingslink"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/badge.tsx",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_badge_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/badge.tsx",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_badge_tsx",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/badge.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_badge_tsx",
+ "target": "ui_badge_badgevariants"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/badge.tsx",
+ "source_location": "L29",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_badge_tsx",
+ "target": "ui_badge_badgeprops"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/badge.tsx",
+ "source_location": "L34",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_badge_tsx",
+ "target": "ui_badge_badge"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "frontend_src_components_ui_badge_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "frontend_src_components_ui_badge_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "frontend_src_components_ui_badge_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "frontend_src_components_ui_badge_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L41",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "frontend_src_components_ui_badge_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "frontend_src_components_ui_badge_tsx"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/badge.tsx",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "ui_badge_badge",
+ "target": "ui_badge_badgevariants"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "ui_badge_badge"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "ui_badge_badge"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "ui_badge_badge"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "ui_badge_badge"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L41",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "ui_badge_badge"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "ui_badge_badge"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/components/ui/badge.tsx",
+ "source_location": "L36",
+ "weight": 1.0,
+ "source": "ui_badge_badge",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/button.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_button_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/button.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_button_tsx",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/button.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_button_tsx",
+ "target": "ui_button_buttonvariants"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/button.tsx",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_button_tsx",
+ "target": "ui_button_buttonprops"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/button.tsx",
+ "source_location": "L43",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_button_tsx",
+ "target": "ui_button_button"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "frontend_src_components_ui_button_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "frontend_src_components_ui_button_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "frontend_src_components_ui_button_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "frontend_src_components_ui_button_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "frontend_src_components_ui_button_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L29",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "frontend_src_components_ui_button_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "frontend_src_components_ui_button_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "ui_button_button"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "ui_button_button"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "ui_button_button"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "ui_button_button"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "ui_button_button"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L29",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "ui_button_button"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "ui_button_button"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/checkbox.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "ui_checkbox_checkbox",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/checkbox.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "ui_checkbox_checkbox",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "ui_checkbox_checkbox"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L23",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "ui_checkbox_checkbox"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "ui_checkbox_checkbox"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L32",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "ui_checkbox_checkbox"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dialog_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dialog_tsx",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dialog_tsx",
+ "target": "ui_dialog_dialogoverlay"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dialog_tsx",
+ "target": "ui_dialog_dialogcontent"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L50",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dialog_tsx",
+ "target": "ui_dialog_dialogheader"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L66",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dialog_tsx",
+ "target": "ui_dialog_dialogfooter"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L82",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dialog_tsx",
+ "target": "ui_dialog_dialogtitle"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L97",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dialog_tsx",
+ "target": "ui_dialog_dialogdescription"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L38",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "frontend_src_components_ui_dialog_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "frontend_src_components_ui_dialog_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "frontend_src_components_ui_dialog_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L38",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "ui_dialog_dialogcontent"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "ui_dialog_dialogcontent"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "ui_dialog_dialogcontent"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L38",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "ui_dialog_dialogheader"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "ui_dialog_dialogheader"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "ui_dialog_dialogheader"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L56",
+ "weight": 1.0,
+ "source": "ui_dialog_dialogheader",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L38",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "ui_dialog_dialogfooter"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "ui_dialog_dialogfooter"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "ui_dialog_dialogfooter"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/components/ui/dialog.tsx",
+ "source_location": "L72",
+ "weight": 1.0,
+ "source": "ui_dialog_dialogfooter",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L38",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "ui_dialog_dialogtitle"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "ui_dialog_dialogtitle"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "ui_dialog_dialogtitle"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L38",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "ui_dialog_dialogdescription"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "ui_dialog_dialogdescription"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L33",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "ui_dialog_dialogdescription"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dropdown_menu_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dropdown_menu_tsx",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dropdown_menu_tsx",
+ "target": "ui_dropdown_menu_dropdownmenusubtrigger"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L42",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dropdown_menu_tsx",
+ "target": "ui_dropdown_menu_dropdownmenusubcontent"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L58",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dropdown_menu_tsx",
+ "target": "ui_dropdown_menu_dropdownmenucontent"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L76",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dropdown_menu_tsx",
+ "target": "ui_dropdown_menu_dropdownmenuitem"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L94",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dropdown_menu_tsx",
+ "target": "ui_dropdown_menu_dropdownmenucheckboxitem"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L118",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dropdown_menu_tsx",
+ "target": "ui_dropdown_menu_dropdownmenuradioitem"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L140",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dropdown_menu_tsx",
+ "target": "ui_dropdown_menu_dropdownmenulabel"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L158",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dropdown_menu_tsx",
+ "target": "ui_dropdown_menu_dropdownmenuseparator"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L170",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_dropdown_menu_tsx",
+ "target": "ui_dropdown_menu_dropdownmenushortcut"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/components/ui/dropdown-menu.tsx",
+ "source_location": "L176",
+ "weight": 1.0,
+ "source": "ui_dropdown_menu_dropdownmenushortcut",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/input.tsx",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_input_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/input.tsx",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_input_tsx",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/input.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_input_tsx",
+ "target": "ui_input_inputprops"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/input.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_input_tsx",
+ "target": "ui_input_input"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L37",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "frontend_src_components_ui_input_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "frontend_src_components_ui_input_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "frontend_src_components_ui_input_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L10",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "frontend_src_components_ui_input_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "frontend_src_components_ui_input_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L30",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "frontend_src_components_ui_input_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L37",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "ui_input_input"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "ui_input_input"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "ui_input_input"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L10",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "ui_input_input"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "ui_input_input"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L30",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "ui_input_input"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/label.tsx",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_label_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/label.tsx",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_label_tsx",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/label.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_label_tsx",
+ "target": "ui_label_label"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "frontend_src_components_ui_label_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "frontend_src_components_ui_label_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "frontend_src_components_ui_label_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "frontend_src_components_ui_label_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "frontend_src_components_ui_label_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L31",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "frontend_src_components_ui_label_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "ui_label_label"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "ui_label_label"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L24",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "ui_label_label"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "ui_label_label"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "ui_label_label"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L31",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "ui_label_label"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_select_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_select_tsx",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L10",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_select_tsx",
+ "target": "ui_select_selecttrigger"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L30",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_select_tsx",
+ "target": "ui_select_selectscrollupbutton"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L47",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_select_tsx",
+ "target": "ui_select_selectscrolldownbutton"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_select_tsx",
+ "target": "ui_select_selectcontent"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L97",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_select_tsx",
+ "target": "ui_select_selectlabel"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L109",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_select_tsx",
+ "target": "ui_select_selectitem"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/select.tsx",
+ "source_location": "L131",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_select_tsx",
+ "target": "ui_select_selectseparator"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "frontend_src_components_ui_select_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "frontend_src_components_ui_select_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "frontend_src_components_ui_select_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "frontend_src_components_ui_select_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "frontend_src_components_ui_select_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "ui_select_selecttrigger"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "ui_select_selecttrigger"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "ui_select_selecttrigger"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "ui_select_selecttrigger"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "ui_select_selecttrigger"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "ui_select_selectcontent"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "ui_select_selectcontent"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "ui_select_selectcontent"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "ui_select_selectcontent"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "ui_select_selectcontent"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "ui_select_selectitem"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "ui_select_selectitem"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "ui_select_selectitem"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "ui_select_selectitem"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L8",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "ui_select_selectitem"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_table_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_table_tsx",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_table_tsx",
+ "target": "ui_table_table"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L68",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_table_tsx",
+ "target": "ui_table_tablehead"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_table_tsx",
+ "target": "ui_table_tablebody"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L38",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_table_tsx",
+ "target": "ui_table_tablefooter"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L53",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_table_tsx",
+ "target": "ui_table_tablerow"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L83",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_table_tsx",
+ "target": "ui_table_tablecell"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/table.tsx",
+ "source_location": "L98",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_table_tsx",
+ "target": "ui_table_tablecaption"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "frontend_src_components_ui_table_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "frontend_src_components_ui_table_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "frontend_src_components_ui_table_tsx"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "ui_table_table"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "ui_table_table"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "ui_table_table"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "ui_table_tablebody"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "ui_table_tablebody"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "ui_table_tablebody"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "ui_table_tablerow"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "ui_table_tablerow"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "ui_table_tablerow"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "ui_table_tablehead"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "ui_table_tablehead"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "ui_table_tablehead"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "ui_table_tablecell"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "ui_table_tablecell"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "ui_table_tablecell"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/textarea.tsx",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_textarea_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/textarea.tsx",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_textarea_tsx",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/textarea.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_textarea_tsx",
+ "target": "ui_textarea_textareaprops"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/components/ui/textarea.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_components_ui_textarea_tsx",
+ "target": "ui_textarea_textarea"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/context/AuthContext.tsx",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_context_authcontext_tsx",
+ "target": "context_authcontext_authuser"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/context/AuthContext.tsx",
+ "source_location": "L18",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_context_authcontext_tsx",
+ "target": "context_authcontext_authcontextvalue"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/context/AuthContext.tsx",
+ "source_location": "L25",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_context_authcontext_tsx",
+ "target": "context_authcontext_authcontext"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/context/AuthContext.tsx",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_context_authcontext_tsx",
+ "target": "context_authcontext_authprovider"
+ },
+ {
+ "relation": "imports",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/context/AuthContext.test.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "context": "import",
+ "confidence_score": 1.0,
+ "source": "frontend_src_context_authcontext_tsx",
+ "target": "context_authcontext_useauth"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "frontend_src_context_authcontext_tsx"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/context/AuthContext.test.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_context_authcontext_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/context/AuthContext.test.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_context_authcontext_tsx",
+ "target": "frontend_src_test_server_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/context/AuthContext.test.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_context_authcontext_tsx",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/context/AuthContext.test.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_context_authcontext_tsx",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/context/AuthContext.test.tsx",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_context_authcontext_tsx",
+ "target": "context_authcontext_test_testconsumer"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/utils.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_utils_ts",
+ "target": "context_authcontext_authprovider"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "context_authcontext_useauth"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L11",
+ "weight": 1.0,
+ "source": "pages_landingpage_landingorsieges",
+ "target": "context_authcontext_useauth"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/test/context/AuthContext.test.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "source": "context_authcontext_test_testconsumer",
+ "target": "context_authcontext_useauth"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/lib/buildingColors.ts",
+ "source_location": "L3",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_buildingcolors_ts",
+ "target": "lib_buildingcolors_buildingcolorclass"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/lib/buildingColors.ts",
+ "source_location": "L49",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_buildingcolors_ts",
+ "target": "lib_buildingcolors_building_labels"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L54",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "frontend_src_lib_buildingcolors_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L55",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "frontend_src_lib_buildingcolors_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L54",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "lib_buildingcolors_building_labels"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L55",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "lib_buildingcolors_building_labels"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/lib/groupPostConditions.ts",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_grouppostconditions_ts",
+ "target": "lib_grouppostconditions_groupbymode"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/lib/groupPostConditions.ts",
+ "source_location": "L20",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_grouppostconditions_ts",
+ "target": "lib_grouppostconditions_conditiongroup"
+ },
+ {
+ "relation": "calls",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/lib/groupPostConditions.ts",
+ "source_location": "L46",
+ "weight": 1.0,
+ "context": "call",
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_grouppostconditions_ts",
+ "target": "lib_grouppostconditions_groupbylevel"
+ },
+ {
+ "relation": "calls",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/lib/groupPostConditions.ts",
+ "source_location": "L48",
+ "weight": 1.0,
+ "context": "call",
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_grouppostconditions_ts",
+ "target": "lib_grouppostconditions_groupbytype"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/lib/useGroupByPreference.ts",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_usegroupbypreference_ts",
+ "target": "frontend_src_lib_grouppostconditions_ts"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L304",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "frontend_src_lib_grouppostconditions_ts"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L196",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "frontend_src_lib_grouppostconditions_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "frontend_src_lib_grouppostconditions_ts"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_grouppostconditions_ts",
+ "target": "lib_grouppostconditions_test_makecond"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_grouppostconditions_ts",
+ "target": "lib_grouppostconditions_test_mixed"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L112",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_grouppostconditions_ts",
+ "target": "lib_grouppostconditions_test_groups"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L39",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_grouppostconditions_ts",
+ "target": "lib_grouppostconditions_test_levels"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L105",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_grouppostconditions_ts",
+ "target": "lib_grouppostconditions_test_descriptions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L59",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_grouppostconditions_ts",
+ "target": "lib_grouppostconditions_test_l1only"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L113",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_grouppostconditions_ts",
+ "target": "lib_grouppostconditions_test_types"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L80",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_grouppostconditions_ts",
+ "target": "lib_grouppostconditions_test_headings"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L98",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_grouppostconditions_ts",
+ "target": "lib_grouppostconditions_test_factions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/lib/groupPostConditions.test.ts",
+ "source_location": "L111",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_grouppostconditions_ts",
+ "target": "lib_grouppostconditions_test_unknown"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L103",
+ "weight": 1.0,
+ "source": "pages_postspage_postrow",
+ "target": "frontend_src_lib_grouppostconditions_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/lib/useGroupByPreference.ts",
+ "source_location": "L9",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_usegroupbypreference_ts",
+ "target": "lib_grouppostconditions_groupbymode"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "lib_grouppostconditions_groupbymode"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/lib/post-priority.ts",
+ "source_location": "L23",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_post_priority_ts",
+ "target": "lib_post_priority_prioritylabel"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/lib/post-priority.ts",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_post_priority_ts",
+ "target": "lib_post_priority_prioritybadgecolor"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L23",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "lib_post_priority_prioritylabel"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/lib/useGroupByPreference.ts",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_usegroupbypreference_ts",
+ "target": "lib_usegroupbypreference_valid_modes"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "frontend_src_lib_usegroupbypreference_ts"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L70",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "frontend_src_lib_usegroupbypreference_ts"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L278",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "frontend_src_lib_usegroupbypreference_ts"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L57",
+ "weight": 1.0,
+ "source": "pages_postspage_postrow",
+ "target": "frontend_src_lib_usegroupbypreference_ts"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/lib/utils.ts",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_utils_ts",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L54",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SystemPage.tsx",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_systempage_systempage",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/utils.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_utils_ts",
+ "target": "test_utils_testrenderoptions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/utils.tsx",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_lib_utils_ts",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/ChangelogDropdown.test.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_changelogdropdown_test_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L40",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/LoginPage.test.tsx",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_loginpage_loginpage",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/MembersPage.test.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.test.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegesPage.test.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_siegespage_test_tsx",
+ "target": "frontend_src_lib_utils_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L102",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeSettingsPage.tsx",
+ "source_location": "L501",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SystemPage.tsx",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_systempage_systempage",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L29",
+ "weight": 1.0,
+ "source": "pages_comparisonpage_positiontag",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/pages/SystemPage.tsx",
+ "source_location": "L27",
+ "weight": 1.0,
+ "source": "pages_systempage_sectionpanel",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/pages/SystemPage.tsx",
+ "source_location": "L67",
+ "weight": 1.0,
+ "source": "pages_systempage_datarow",
+ "target": "lib_utils_cn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L58",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "pages_boardpage_role_labels"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "pages_boardpage_role_labels"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "pages_boardpage_role_priority"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L72",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "pages_boardpage_role_colors"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L79",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "pages_boardpage_role_badge_colors"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L87",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "pages_boardpage_role_chip_colors"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L94",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "pages_boardpage_power_labels"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L28",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "pages_boardpage_power_labels"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L103",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "pages_boardpage_building_type_order"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L254",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "pages_boardpage_draggablememberrow"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L322",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "pages_boardpage_memberdragoverlay"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L347",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "pages_boardpage_rolefilter"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L349",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "pages_boardpage_role_filter_options"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L357",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "pages_boardpage_memberbucket"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L457",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "pages_boardpage_buildingtablerow"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L553",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "pages_boardpage_buildingtypesection"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L679",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "pages_boardpage_conditionaldndcontext"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/BoardPage.tsx",
+ "source_location": "L711",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_boardpage_boardpage",
+ "target": "pages_boardpage_activetab"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L28",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "pages_boardpage_boardpage"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L23",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "pages_boardpage_boardpage"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "pages_comparisonpage_formatposition"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_positiontag",
+ "target": "pages_comparisonpage_formatposition"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "pages_comparisonpage_positiontag"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/ComparisonPage.tsx",
+ "source_location": "L54",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_comparisonpage_comparisonpage",
+ "target": "pages_comparisonpage_memberpositionscell"
+ },
+ {
+ "relation": "imports",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L8",
+ "weight": 1.0,
+ "context": "import",
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "pages_landingpage_landingorsieges"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "pages_landingpage_slides"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L68",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "pages_landingpage_shieldicon"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L88",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "pages_landingpage_githubicon"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L108",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "pages_landingpage_checkicon"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L128",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "pages_landingpage_externallinkicon"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L150",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "pages_landingpage_colors"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/LandingPage.tsx",
+ "source_location": "L157",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "pages_landingpage_landingpage"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "frontend_src_test_server_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L18",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "components_landingpage_test_renderlanding"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L55",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "components_landingpage_test_signin"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L71",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L72",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "components_landingpage_test_bullets"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L127",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "components_landingpage_test_ghlink"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L191",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "pages_boardpage_test_user"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L192",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_landingpage_tsx",
+ "target": "components_landingpage_test_scrollintoviewmock"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/LoginPage.tsx",
+ "source_location": "L7",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_loginpage_loginpage",
+ "target": "pages_loginpage_error_messages"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/LoginPage.tsx",
+ "source_location": "L15",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_loginpage_loginpage",
+ "target": "pages_loginpage_membership_errors"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/LoginPage.tsx",
+ "source_location": "L18",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_loginpage_loginpage",
+ "target": "pages_loginpage_mobilebanner"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/LoginPage.test.tsx",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_loginpage_loginpage",
+ "target": "frontend_src_test_server_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/LoginPage.test.tsx",
+ "source_location": "L11",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_loginpage_loginpage",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/LoginPage.test.tsx",
+ "source_location": "L12",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_loginpage_loginpage",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/LoginPage.test.tsx",
+ "source_location": "L155",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_loginpage_loginpage",
+ "target": "pages_loginpage_test_link"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MemberDetailPage.tsx",
+ "source_location": "L41",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_memberdetailpage_tsx",
+ "target": "pages_memberdetailpage_role_options"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L42",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "frontend_src_pages_memberdetailpage_tsx"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L43",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "pages_memberspage_rolebadgevariant"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/MembersPage.tsx",
+ "source_location": "L45",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "pages_memberspage_role_variants"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/MembersPage.test.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "frontend_src_test_server_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/MembersPage.test.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/MembersPage.test.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/MembersPage.test.tsx",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_memberspage_memberspage",
+ "target": "pages_boardpage_test_members"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L30",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "pages_postprioritiespage_descriptioncell"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostPrioritiesPage.tsx",
+ "source_location": "L64",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_postprioritiespage_tsx",
+ "target": "pages_postprioritiespage_tab"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L41",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "frontend_src_pages_postprioritiespage_tsx"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/PostsPage.tsx",
+ "source_location": "L30",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "pages_postspage_postrow"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L37",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "pages_postspage_postspage"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.test.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "frontend_src_test_server_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.test.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.test.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.test.tsx",
+ "source_location": "L41",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "pages_postspage_test_renderpostspage"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.test.tsx",
+ "source_location": "L63",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "pages_postspage_test_posts"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.test.tsx",
+ "source_location": "L93",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_postspage_postspage",
+ "target": "pages_postspage_test_postheadings"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "pages_siegecreatepage_nexttuesdayfrom"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L43",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_suggestnextsiegedate",
+ "target": "pages_siegecreatepage_nexttuesdayfrom"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "pages_siegecreatepage_formatdatelocal"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L41",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_suggestnextsiegedate",
+ "target": "pages_siegecreatepage_formatdatelocal"
+ },
+ {
+ "relation": "calls",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegeCreatePage.tsx",
+ "source_location": "L60",
+ "weight": 1.0,
+ "context": "call",
+ "confidence_score": 1.0,
+ "source": "pages_siegecreatepage_siegecreatepage",
+ "target": "pages_siegecreatepage_suggestnextsiegedate"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L37",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "frontend_src_test_server_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L37",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L71",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "pages_siegesettingspage_test_makenotifyresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L82",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "pages_siegesettingspage_test_makeresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L96",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "pages_siegesettingspage_test_makebatchresponse"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L115",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "pages_siegesettingspage_test_emptyvalidation"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L117",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "pages_siegememberspage_test_renderpage"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L151",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "pages_siegesettingspage_test_waitforpageload"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L720",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "pages_boardpage_test_user"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L731",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "pages_siegesettingspage_test_dialog"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L284",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "pages_siegesettingspage_test_notifybtn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegeSettingsPage.test.tsx",
+ "source_location": "L630",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegesettingspage_tsx",
+ "target": "pages_siegesettingspage_test_statusel"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L17",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "pages_siegespage_statusbadgevariant"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L19",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "pages_siegespage_status_variants"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L25",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "pages_siegespage_status_labels"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SiegesPage.tsx",
+ "source_location": "L31",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_pages_siegespage_tsx",
+ "target": "pages_siegespage_siegespage"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegesPage.test.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_siegespage_test_tsx",
+ "target": "frontend_src_pages_siegespage_tsx"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SystemPage.tsx",
+ "source_location": "L6",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_systempage_systempage",
+ "target": "pages_systempage_ui_libraries"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SystemPage.tsx",
+ "source_location": "L16",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_systempage_systempage",
+ "target": "pages_systempage_sectionpanel"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SystemPage.tsx",
+ "source_location": "L47",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_systempage_systempage",
+ "target": "pages_systempage_datarow"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/pages/SystemPage.tsx",
+ "source_location": "L80",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "pages_systempage_systempage",
+ "target": "pages_systempage_libraryrow"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/handlers.ts",
+ "source_location": "L42",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_handlers_ts",
+ "target": "test_handlers_handlers"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/server.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_server_ts",
+ "target": "frontend_src_test_handlers_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/server.ts",
+ "source_location": "L2",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_server_ts",
+ "target": "test_handlers_handlers"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/server.ts",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_server_ts",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/ChangelogDropdown.test.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_changelogdropdown_test_tsx",
+ "target": "frontend_src_test_server_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L39",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "frontend_src_test_server_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "frontend_src_test_server_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "frontend_src_test_server_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "frontend_src_test_server_ts"
+ },
+ {
+ "relation": "imports_from",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegesPage.test.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_siegespage_test_tsx",
+ "target": "frontend_src_test_server_ts"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/ChangelogDropdown.test.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_changelogdropdown_test_tsx",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L39",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L26",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L21",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegesPage.test.tsx",
+ "source_location": "L4",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_siegespage_test_tsx",
+ "target": "test_server_server"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/ChangelogDropdown.test.tsx",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_changelogdropdown_test_tsx",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L40",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L27",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L22",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L36",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "imports",
+ "context": "import",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegesPage.test.tsx",
+ "source_location": "L5",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_siegespage_test_tsx",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/test/components/Carousel.test.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "source": "components_carousel_test_rendercarousel",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/test/components/ChangelogDropdown.test.tsx",
+ "source_location": "L59",
+ "weight": 1.0,
+ "source": "components_changelogdropdown_test_renderdropdown",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L131",
+ "weight": 1.0,
+ "source": "components_groupbyconditions_test_openconditionstab",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L241",
+ "weight": 1.0,
+ "source": "components_groupbyconditions_test_rendermemberdetail",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/test/components/LandingPage.test.tsx",
+ "source_location": "L19",
+ "weight": 1.0,
+ "source": "components_landingpage_test_renderlanding",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/test/components/Layout.test.tsx",
+ "source_location": "L14",
+ "weight": 1.0,
+ "source": "components_layout_test_renderlayout",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L121",
+ "weight": 1.0,
+ "source": "pages_boardpage_test_renderboard",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/test/components/PostSuggestionsModal.test.tsx",
+ "source_location": "L96",
+ "weight": 1.0,
+ "source": "components_postsuggestionsmodal_test_rendermodal",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/test/pages/PostsPage.test.tsx",
+ "source_location": "L42",
+ "weight": 1.0,
+ "source": "pages_postspage_test_renderpostspage",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "confidence_score": 1.0,
+ "source_file": "frontend/src/test/pages/SiegeMembersPage.test.tsx",
+ "source_location": "L94",
+ "weight": 1.0,
+ "source": "pages_siegememberspage_test_renderpage",
+ "target": "test_utils_renderwithproviders"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/ChangelogDropdown.test.tsx",
+ "source_location": "L58",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_changelogdropdown_test_tsx",
+ "target": "components_changelogdropdown_test_renderdropdown"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/ChangelogDropdown.test.tsx",
+ "source_location": "L320",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_changelogdropdown_test_tsx",
+ "target": "pages_boardpage_test_user"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L57",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "pages_postspage_groupby_test_sample_conditions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L100",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "components_groupbyconditions_test_setupconditions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L107",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "components_groupbyconditions_test_setupmember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L130",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "components_groupbyconditions_test_openconditionstab"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L285",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "pages_boardpage_test_user"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L303",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "lib_grouppostconditions_test_headings"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L184",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "components_groupbyconditions_test_elements"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L240",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "components_groupbyconditions_test_rendermemberdetail"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L249",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "components_groupbyconditions_test_waitforpreferences"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByConditions.test.tsx",
+ "source_location": "L304",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbyconditions_test_tsx",
+ "target": "components_groupbyconditions_test_headingtexts"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByToggle.test.tsx",
+ "source_location": "L66",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbytoggle_test_tsx",
+ "target": "pages_boardpage_test_user"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/GroupByToggle.test.tsx",
+ "source_location": "L67",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_groupbytoggle_test_tsx",
+ "target": "components_groupbytoggle_test_onchange"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L358",
+ "weight": 1.0,
+ "source": "excel_import_import_excel_parse_assignments_sheet",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L1157",
+ "weight": 1.0,
+ "source": "excel_import_import_excel_collect_xlsm_files",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L246",
+ "weight": 1.0,
+ "source": "tests_test_import_excel_make_assignments_worksheet",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "INFERRED",
+ "confidence_score": 0.8,
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L833",
+ "weight": 1.0,
+ "source": "tests_test_import_excel_make_workbook_mock",
+ "target": "components_landingpage_test_list"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L65",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "components_poststab_test_makepostboard"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L101",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L133",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "components_poststab_test_setuphandlers"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L149",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "pages_boardpage_test_renderboard"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L159",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "components_poststab_test_navigatetopoststab"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L783",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "pages_boardpage_test_user"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L299",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "components_poststab_test_maketwopostboard"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L524",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "components_poststab_test_board"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L525",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "components_poststab_test_post1"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L532",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "components_poststab_test_post2"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L391",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "components_poststab_test_postrefs"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L512",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "components_poststab_test_labels"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L604",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "components_poststab_test_btn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L611",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "components_poststab_test_makepostpreviewresult"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L621",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "components_poststab_test_makeoptimalassignment"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L640",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "components_poststab_test_makesuggestionassignment"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L715",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "components_poststab_test_chip"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L762",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "components_poststab_test_suggestbtn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/components/PostsTab.test.tsx",
+ "source_location": "L773",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_components_poststab_test_tsx",
+ "target": "components_poststab_test_applybtn"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L118",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "components_poststab_test_setuphandlers"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L54",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "pages_boardpage_test_makeboard"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L90",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "pages_boardpage_test_makesiegemember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L107",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "pages_boardpage_test_setupdefaulthandlers"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L120",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "pages_boardpage_test_renderboard"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L174",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "pages_boardpage_test_ones"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L217",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "pages_boardpage_test_disabledel"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L656",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "pages_boardpage_test_user"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L341",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "pages_boardpage_test_disabledspan"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L362",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "pages_boardpage_test_cell"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L382",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "pages_boardpage_test_members"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L436",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "pages_boardpage_test_searchinput"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L508",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "pages_boardpage_test_memberrows"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/BoardPage.test.tsx",
+ "source_location": "L510",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_boardpage_test_tsx",
+ "target": "pages_boardpage_test_bucketrow"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L350",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "pages_boardpage_test_user"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L52",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "pages_postspage_groupby_test_sample_conditions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L111",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "pages_postspage_groupby_test_two_posts"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L140",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "pages_postspage_test_renderpostspage"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L150",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "pages_postspage_groupby_test_expandfirstpost"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L167",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "pages_postspage_groupby_test_expandallposts"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L226",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "pages_postspage_groupby_test_rowtoggle"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L339",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "pages_postspage_groupby_test_mastergroup"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/PostsPage.groupBy.test.tsx",
+ "source_location": "L299",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_postspage_groupby_test_tsx",
+ "target": "pages_postspage_groupby_test_rowgroups"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/test/pages/SiegesPage.test.tsx",
+ "source_location": "L51",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_test_pages_siegespage_test_tsx",
+ "target": "pages_siegespage_test_sieges"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "frontend/src/types/changelog.d.ts",
+ "source_location": "L13",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "frontend_src_types_changelog_d_ts",
+ "target": "types_changelog_d_changelogentry"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L160",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_parsedmember"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L169",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_parsedassignment"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L178",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_parsedreserve"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L185",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_parsedpostconfig"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L192",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_parsedpostconditions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L198",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_importstats"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L224",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_parse_filename_date"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L236",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_map_role"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L241",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_map_building_alias"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L265",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_parse_members_sheet"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L337",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_parse_assignments_sheet"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L445",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_parse_reserves_sheet"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L489",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_parse_posts_sheet_config"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L534",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_parse_posts_sheet_conditions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L570",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_build_group_structure"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L592",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_compute_building_group_structure"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L677",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_infer_building_level"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L719",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_create_building_with_groups_and_positions"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L1069",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_import_file"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L1146",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_import_excel_py",
+ "target": "excel_import_import_excel_collect_xlsm_files"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_1",
+ "target": "scripts_excel_import_import_excel_py"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L326",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_parse_members_sheet",
+ "target": "excel_import_import_excel_parsedmember"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L433",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_parse_assignments_sheet",
+ "target": "excel_import_import_excel_parsedassignment"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L480",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_parse_reserves_sheet",
+ "target": "excel_import_import_excel_parsedreserve"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L525",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_parse_posts_sheet_config",
+ "target": "excel_import_import_excel_parsedpostconfig"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L557",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_parse_posts_sheet_conditions",
+ "target": "excel_import_import_excel_parsedpostconditions"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L784",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_import_file",
+ "target": "excel_import_import_excel_importstats"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L787",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_import_file",
+ "target": "excel_import_import_excel_parse_filename_date"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L225",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_225",
+ "target": "excel_import_import_excel_parse_filename_date"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L843",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_import_file",
+ "target": "excel_import_import_excel_map_role"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L237",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_237",
+ "target": "excel_import_import_excel_map_role"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L402",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_parse_assignments_sheet",
+ "target": "excel_import_import_excel_map_building_alias"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L242",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_242",
+ "target": "excel_import_import_excel_map_building_alias"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L814",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_import_file",
+ "target": "excel_import_import_excel_parse_members_sheet"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L266",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_266",
+ "target": "excel_import_import_excel_parse_members_sheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L815",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_import_file",
+ "target": "excel_import_import_excel_parse_assignments_sheet"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L338",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_338",
+ "target": "excel_import_import_excel_parse_assignments_sheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L816",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_import_file",
+ "target": "excel_import_import_excel_parse_reserves_sheet"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L446",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_446",
+ "target": "excel_import_import_excel_parse_reserves_sheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L823",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_import_file",
+ "target": "excel_import_import_excel_parse_posts_sheet_config"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L490",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_490",
+ "target": "excel_import_import_excel_parse_posts_sheet_config"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L824",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_import_file",
+ "target": "excel_import_import_excel_parse_posts_sheet_conditions"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L535",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_535",
+ "target": "excel_import_import_excel_parse_posts_sheet_conditions"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L571",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_571",
+ "target": "excel_import_import_excel_build_group_structure"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L929",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_import_file",
+ "target": "excel_import_import_excel_compute_building_group_structure"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L597",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_597",
+ "target": "excel_import_import_excel_compute_building_group_structure"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L934",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_import_file",
+ "target": "excel_import_import_excel_infer_building_level"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L678",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_678",
+ "target": "excel_import_import_excel_infer_building_level"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L935",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_import_file",
+ "target": "excel_import_import_excel_create_building_with_groups_and_positions"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L727",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_727",
+ "target": "excel_import_import_excel_create_building_with_groups_and_positions"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L781",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_781",
+ "target": "excel_import_import_excel_import_file"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L1073",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_1073",
+ "target": "excel_import_import_excel_import_file"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/import_excel.py",
+ "source_location": "L1147",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "excel_import_import_excel_rationale_1147",
+ "target": "excel_import_import_excel_collect_xlsm_files"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L28",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_filename"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L34",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_filename_with_path_prefix"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L51",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_filename_invalid_random"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L57",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_filename_invalid_impossible_date"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L68",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_role_mapping_heavy_hitter"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L72",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_role_mapping_advanced"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L76",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_role_mapping_medium"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L80",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_role_mapping_novice"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L84",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_role_mapping_unknown_returns_none"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L93",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_building_alias_stronghold"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L97",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_building_alias_mana_shrine_full"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L101",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_building_alias_mana_short"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L109",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_building_alias_magic_short"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L113",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_building_alias_defense_tower_full"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L117",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_building_alias_defense_short"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L121",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_building_alias_post"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L125",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_building_alias_unknown_returns_none"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L134",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_make_worksheet"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L141",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_members_sheet_basic"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L169",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_members_sheet_skips_empty_rows"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L183",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_members_sheet_strips_whitespace"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L211",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_members_sheet_post_preferences"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L237",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_make_assignments_worksheet"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L252",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_assignments_sheet_member_assignment"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L288",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_assignments_sheet_skips_unknown_building_type"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L303",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_assignments_sheet_skips_incomplete_rows"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L315",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_assignments_sheet_empty_value_is_none"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L331",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_reserves_sheet_basic"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L354",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_reserves_sheet_skips_empty_rows"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L366",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_reserves_sheet_invalid_attack_day_ignored"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L372",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_reserves_sheet_case_insensitive_yes_no"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L389",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_build_group_structure_stronghold"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L395",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_build_group_structure_mana_shrine"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L401",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_build_group_structure_magic_tower"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L407",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_build_group_structure_defense_tower"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L413",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_build_group_structure_post"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L592",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_compute_building_group_structure_basic"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L575",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_compute_building_group_structure_magic_tower_level3"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L472",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_compute_building_group_structure_post_no_inflation"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L485",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_compute_building_group_structure_filters_by_building_number"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L557",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_compute_building_group_structure_mana_shrine_level2"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L629",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_infer_building_level_stronghold_level1"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L635",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_infer_building_level_mana_shrine_level2"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L641",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_infer_building_level_magic_tower_level1"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L647",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_infer_building_level_defense_tower_level4"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L653",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_infer_building_level_post"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L659",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_infer_building_level_fallback"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L665",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_infer_building_level_unknown_building_type_fallback"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L676",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_make_posts_config_worksheet"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L689",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_posts_sheet_config_basic"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L708",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_posts_sheet_config_default_priority"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L720",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_posts_sheet_config_multiple_sections"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L745",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_make_posts_conditions_worksheet"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L757",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_posts_sheet_conditions_basic"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L777",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_parse_posts_sheet_conditions_skips_empty"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L796",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_make_empty_worksheet"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L803",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_make_workbook_mock"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L839",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_make_session_mock"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L861",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_import_file_section3c_skipped_when_not_most_recent"
+ },
+ {
+ "relation": "contains",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L880",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "scripts_excel_import_tests_test_import_excel_py",
+ "target": "tests_test_import_excel_test_import_file_section3c_runs_when_most_recent_but_finds_nothing"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L1",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_1",
+ "target": "scripts_excel_import_tests_test_import_excel_py"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L29",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_29",
+ "target": "tests_test_import_excel_test_parse_filename"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L35",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_35",
+ "target": "tests_test_import_excel_test_parse_filename_with_path_prefix"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L46",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_46",
+ "target": "tests_test_import_excel_test_parse_filename_invalid_random"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L52",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_52",
+ "target": "tests_test_import_excel_test_parse_filename_invalid_random"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L58",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_58",
+ "target": "tests_test_import_excel_test_parse_filename_invalid_impossible_date"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L143",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_members_sheet_basic",
+ "target": "tests_test_import_excel_make_worksheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L170",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_members_sheet_skips_empty_rows",
+ "target": "tests_test_import_excel_make_worksheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L184",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_members_sheet_strips_whitespace",
+ "target": "tests_test_import_excel_make_worksheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L213",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_members_sheet_post_preferences",
+ "target": "tests_test_import_excel_make_worksheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L332",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_reserves_sheet_basic",
+ "target": "tests_test_import_excel_make_worksheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L355",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_reserves_sheet_skips_empty_rows",
+ "target": "tests_test_import_excel_make_worksheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L367",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_reserves_sheet_invalid_attack_day_ignored",
+ "target": "tests_test_import_excel_make_worksheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L373",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_reserves_sheet_case_insensitive_yes_no",
+ "target": "tests_test_import_excel_make_worksheet"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L135",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_135",
+ "target": "tests_test_import_excel_make_worksheet"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L142",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_142",
+ "target": "tests_test_import_excel_test_parse_members_sheet_basic"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L199",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_199",
+ "target": "tests_test_import_excel_test_parse_members_sheet_post_preferences"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L212",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_212",
+ "target": "tests_test_import_excel_test_parse_members_sheet_post_preferences"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L253",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_assignments_sheet_member_assignment",
+ "target": "tests_test_import_excel_make_assignments_worksheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L289",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_assignments_sheet_skips_unknown_building_type",
+ "target": "tests_test_import_excel_make_assignments_worksheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L305",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_assignments_sheet_skips_incomplete_rows",
+ "target": "tests_test_import_excel_make_assignments_worksheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L317",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_assignments_sheet_empty_value_is_none",
+ "target": "tests_test_import_excel_make_assignments_worksheet"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L238",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_238",
+ "target": "tests_test_import_excel_make_assignments_worksheet"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L304",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_304",
+ "target": "tests_test_import_excel_test_parse_assignments_sheet_skips_incomplete_rows"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L316",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_316",
+ "target": "tests_test_import_excel_test_parse_assignments_sheet_empty_value_is_none"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L390",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_390",
+ "target": "tests_test_import_excel_test_build_group_structure_stronghold"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L396",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_396",
+ "target": "tests_test_import_excel_test_build_group_structure_mana_shrine"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L402",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_402",
+ "target": "tests_test_import_excel_test_build_group_structure_magic_tower"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L408",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_408",
+ "target": "tests_test_import_excel_test_build_group_structure_defense_tower"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L414",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_414",
+ "target": "tests_test_import_excel_test_build_group_structure_post"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L425",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_425",
+ "target": "tests_test_import_excel_test_compute_building_group_structure_basic"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L503",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_503",
+ "target": "tests_test_import_excel_test_compute_building_group_structure_basic"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L524",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_524",
+ "target": "tests_test_import_excel_test_compute_building_group_structure_basic"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L593",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_593",
+ "target": "tests_test_import_excel_test_compute_building_group_structure_basic"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L473",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_473",
+ "target": "tests_test_import_excel_test_compute_building_group_structure_post_no_inflation"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L486",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_486",
+ "target": "tests_test_import_excel_test_compute_building_group_structure_filters_by_building_number"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L541",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_541",
+ "target": "tests_test_import_excel_test_compute_building_group_structure_mana_shrine_level2"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L558",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_558",
+ "target": "tests_test_import_excel_test_compute_building_group_structure_mana_shrine_level2"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L445",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_445",
+ "target": "tests_test_import_excel_test_compute_building_group_structure_magic_tower_level3"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L459",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_459",
+ "target": "tests_test_import_excel_test_compute_building_group_structure_magic_tower_level3"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L576",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_576",
+ "target": "tests_test_import_excel_test_compute_building_group_structure_magic_tower_level3"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L630",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_616",
+ "target": "tests_test_import_excel_test_infer_building_level_stronghold_level1"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L636",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_636",
+ "target": "tests_test_import_excel_test_infer_building_level_mana_shrine_level2"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L642",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_642",
+ "target": "tests_test_import_excel_test_infer_building_level_magic_tower_level1"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L648",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_648",
+ "target": "tests_test_import_excel_test_infer_building_level_defense_tower_level4"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L654",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_654",
+ "target": "tests_test_import_excel_test_infer_building_level_post"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L660",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_660",
+ "target": "tests_test_import_excel_test_infer_building_level_fallback"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L666",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_666",
+ "target": "tests_test_import_excel_test_infer_building_level_unknown_building_type_fallback"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L691",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_posts_sheet_config_basic",
+ "target": "tests_test_import_excel_make_posts_config_worksheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L710",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_posts_sheet_config_default_priority",
+ "target": "tests_test_import_excel_make_posts_config_worksheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L722",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_posts_sheet_config_multiple_sections",
+ "target": "tests_test_import_excel_make_posts_config_worksheet"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L677",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_677",
+ "target": "tests_test_import_excel_make_posts_config_worksheet"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L690",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_690",
+ "target": "tests_test_import_excel_test_parse_posts_sheet_config_basic"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L709",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_709",
+ "target": "tests_test_import_excel_test_parse_posts_sheet_config_default_priority"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L721",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_721",
+ "target": "tests_test_import_excel_test_parse_posts_sheet_config_multiple_sections"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L759",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_posts_sheet_conditions_basic",
+ "target": "tests_test_import_excel_make_posts_conditions_worksheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L779",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_parse_posts_sheet_conditions_skips_empty",
+ "target": "tests_test_import_excel_make_posts_conditions_worksheet"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L746",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_746",
+ "target": "tests_test_import_excel_make_posts_conditions_worksheet"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L758",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_758",
+ "target": "tests_test_import_excel_test_parse_posts_sheet_conditions_basic"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L778",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_778",
+ "target": "tests_test_import_excel_test_parse_posts_sheet_conditions_skips_empty"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L811",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_make_workbook_mock",
+ "target": "tests_test_import_excel_make_empty_worksheet"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L797",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_797",
+ "target": "tests_test_import_excel_make_empty_worksheet"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L866",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_import_file_section3c_skipped_when_not_most_recent",
+ "target": "tests_test_import_excel_make_workbook_mock"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L886",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_import_file_section3c_runs_when_most_recent_but_finds_nothing",
+ "target": "tests_test_import_excel_make_workbook_mock"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L804",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_804",
+ "target": "tests_test_import_excel_make_workbook_mock"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L867",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_import_file_section3c_skipped_when_not_most_recent",
+ "target": "tests_test_import_excel_make_session_mock"
+ },
+ {
+ "relation": "calls",
+ "context": "call",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L887",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_test_import_file_section3c_runs_when_most_recent_but_finds_nothing",
+ "target": "tests_test_import_excel_make_session_mock"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L840",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_840",
+ "target": "tests_test_import_excel_make_session_mock"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L862",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_862",
+ "target": "tests_test_import_excel_test_import_file_section3c_skipped_when_not_most_recent"
+ },
+ {
+ "relation": "rationale_for",
+ "confidence": "EXTRACTED",
+ "source_file": "scripts/excel-import/tests/test_import_excel.py",
+ "source_location": "L881",
+ "weight": 1.0,
+ "confidence_score": 1.0,
+ "source": "tests_test_import_excel_rationale_881",
+ "target": "tests_test_import_excel_test_import_file_section3c_runs_when_most_recent_but_finds_nothing"
+ }
+ ],
+ "hyperedges": [],
+ "built_at_commit": "6085fd660692d0eade02696128e186f03f2c8f5e"
+}
\ No newline at end of file
diff --git a/worked/rsl-siege-manager/manifest.json b/worked/rsl-siege-manager/manifest.json
new file mode 100644
index 00000000..11d3b3d9
--- /dev/null
+++ b/worked/rsl-siege-manager/manifest.json
@@ -0,0 +1,1174 @@
+{
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\env.py": {
+ "mtime": 1778710280.615952,
+ "hash": "731374a0c60b7a3d7ab4fe969af77cdc"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0001_initial_schema.py": {
+ "mtime": 1778710280.6174564,
+ "hash": "89da22558cc25f69a85fdb95c5226094"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0002_add_preview_columns.py": {
+ "mtime": 1778710280.6174564,
+ "hash": "7272088a42b67a8e4808eb3c9b7dd696"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0003_make_siege_date_nullable.py": {
+ "mtime": 1778710280.6174564,
+ "hash": "2e9c3427061e4be701fe13af654dff62"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0004_add_post_priority_config.py": {
+ "mtime": 1778710280.6174564,
+ "hash": "6dfb516e649bc98b4af75c6d72217b55"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0005_add_description_to_post_priority_config.py": {
+ "mtime": 1778710280.6184616,
+ "hash": "610068cb10304ae4dbcc7bc71a32e78c"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0006_power_level_and_drop_sort_value.py": {
+ "mtime": 1778710280.6184616,
+ "hash": "8182ba42f31e35ef28f5c4d9dabfde1c"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0007_fix_group_number_max.py": {
+ "mtime": 1778710280.6184616,
+ "hash": "4b47bdeebb46156e514a5b067df94235"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0008_add_matched_condition_id_to_position.py": {
+ "mtime": 1778710280.6184616,
+ "hash": "c954ca95fdadd4a7ef20ffa633d12fed"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0009_add_discord_id_to_member.py": {
+ "mtime": 1778710280.6194618,
+ "hash": "dcf300cf8ed80c1b8b3825bcca67e245"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0010_add_last_seen_changelog_at_to_member.py": {
+ "mtime": 1778710280.6194618,
+ "hash": "611bcc51cacb45fa38a397483251978e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0011_add_post_suggest_preview.py": {
+ "mtime": 1778710280.6194618,
+ "hash": "c2911c522068032d232ebdda418ae402"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\config.py": {
+ "mtime": 1778710280.6260061,
+ "hash": "af7166f36bc6603c51a31821b4169166"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\main.py": {
+ "mtime": 1778710280.6275196,
+ "hash": "ef3a111d022f595379cdfc5e4949daf0"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\middleware.py": {
+ "mtime": 1778710280.6275196,
+ "hash": "4f8742627daa35dd41d30076e24f6215"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\rate_limit.py": {
+ "mtime": 1778710280.631044,
+ "hash": "d19e5a629177df85c43e3c14f4dc0d46"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\telemetry.py": {
+ "mtime": 1778710280.639125,
+ "hash": "0c58ed46b46a65c553da095108b27bfd"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\__init__.py": {
+ "mtime": 1778710280.6194618,
+ "hash": "d41d8cd98f00b204e9800998ecf8427e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\attack_day.py": {
+ "mtime": 1778710280.6204622,
+ "hash": "03d01cbf514354d406ed91fbc65b35a1"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\auth.py": {
+ "mtime": 1778710280.6204622,
+ "hash": "a5f33d846d98152318daec3a46d0d248"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\autofill.py": {
+ "mtime": 1778710280.6204622,
+ "hash": "a09d58b4a1d3c5af8f5c8a3ba6a7029e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\board.py": {
+ "mtime": 1778710280.621461,
+ "hash": "aaeb8712e563ba3dec103df4a3fc04ac"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\buildings.py": {
+ "mtime": 1778710280.621461,
+ "hash": "ffdd155eb162bceae062773746e4a736"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\changelog.py": {
+ "mtime": 1778710280.621461,
+ "hash": "46c813936a455f15a7b9c81d21193278"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\comparison.py": {
+ "mtime": 1778710280.621461,
+ "hash": "ddca1ab6be65dc3372ad48159b99f019"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\config.py": {
+ "mtime": 1778710280.6224627,
+ "hash": "4cfef35cbf17cda161b15128a218884a"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\discord_sync.py": {
+ "mtime": 1778710280.6224627,
+ "hash": "4af25fe7f78cdd7ed0a19b43a6c0d944"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\health.py": {
+ "mtime": 1778710280.6224627,
+ "hash": "7e3eb64485f05fe2e50e5681ca1f0932"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\images.py": {
+ "mtime": 1778710280.6224627,
+ "hash": "bdbf492718a5d11dd6b98c1d639931ac"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\lifecycle.py": {
+ "mtime": 1778710280.6234608,
+ "hash": "224fbb28b68c1d85ac358d96f4d8d307"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\members.py": {
+ "mtime": 1778710280.6234608,
+ "hash": "fade885c4c9b9ac20cccbc9b1022ea02"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\notifications.py": {
+ "mtime": 1778710280.6234608,
+ "hash": "ff2badd250e6e4abd60f76c17bf197a9"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\posts.py": {
+ "mtime": 1778710280.6234608,
+ "hash": "8f342e23f193f2ba528ee0f2ea924710"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\post_priority_config.py": {
+ "mtime": 1778710280.6234608,
+ "hash": "6cbb8addbb8fbbf729b2938cd64e4077"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\post_suggestions.py": {
+ "mtime": 1778710280.6234608,
+ "hash": "57ba4074cf0d1413e5604e6c20c458ba"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\reference.py": {
+ "mtime": 1778710280.6249774,
+ "hash": "e723050f84384dc9adcdb7796fd5a105"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\sieges.py": {
+ "mtime": 1778710280.6249774,
+ "hash": "e2f544c55968478ef4b80943fcda6ccc"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\siege_members.py": {
+ "mtime": 1778710280.6249774,
+ "hash": "f2eb1fd29b959b826008f6a627da9c0d"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\validation.py": {
+ "mtime": 1778710280.6249774,
+ "hash": "05d95e278dfb5f2da15598253b2ec32e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\version.py": {
+ "mtime": 1778710280.6249774,
+ "hash": "72b877fef624fbab48f6170475e4482b"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\__init__.py": {
+ "mtime": 1778710280.6204622,
+ "hash": "d41d8cd98f00b204e9800998ecf8427e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\db\\base.py": {
+ "mtime": 1778710280.6260061,
+ "hash": "16deb2759f7de2cf86f328dce6b2d38b"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\db\\seeds.py": {
+ "mtime": 1778710280.6260061,
+ "hash": "c1238d95afe54852c9f8e4946bcd1184"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\db\\session.py": {
+ "mtime": 1778710280.6260061,
+ "hash": "d83e8d560833942da095e4e77ef715a0"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\db\\__init__.py": {
+ "mtime": 1778710280.6260061,
+ "hash": "d41d8cd98f00b204e9800998ecf8427e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\dependencies\\auth.py": {
+ "mtime": 1778710280.6260061,
+ "hash": "1e13ad83f41440240858e379bc350e32"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\dependencies\\__init__.py": {
+ "mtime": 1778710280.6260061,
+ "hash": "d41d8cd98f00b204e9800998ecf8427e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\building.py": {
+ "mtime": 1778710280.6275196,
+ "hash": "264dd9c1b5b9af8261e39ef40bb56d0d"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\building_group.py": {
+ "mtime": 1778710280.6285377,
+ "hash": "9e4fe949454ac06e8919c54d17cd053f"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\building_type_config.py": {
+ "mtime": 1778710280.6285377,
+ "hash": "8d46f6dce4eefc61342e1a5084563f76"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\enums.py": {
+ "mtime": 1778710280.6285377,
+ "hash": "bbcd730b23b6ae966f00a7b209dfa1ba"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\member.py": {
+ "mtime": 1778710280.6285377,
+ "hash": "00c8c2af6e5087bcdf9b485d8f32afab"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\member_post_preference.py": {
+ "mtime": 1778710280.6295295,
+ "hash": "9b9b1f5de349977ad8897398d6698ef8"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\notification_batch.py": {
+ "mtime": 1778710280.6295295,
+ "hash": "3ad5726f0ca19a456eb02ac12dbb4f89"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\notification_batch_result.py": {
+ "mtime": 1778710280.6295295,
+ "hash": "c4fd788d9d88b1b994a35cf770b7d875"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\position.py": {
+ "mtime": 1778710280.6300344,
+ "hash": "d1bafc8772229db93351d7e179c15ea3"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\post.py": {
+ "mtime": 1778710280.6300344,
+ "hash": "6d62df6899ba21737f61bb917210dad0"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\post_active_condition.py": {
+ "mtime": 1778710280.6300344,
+ "hash": "ab9b5ba959ad8c87635a5565cc7a6857"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\post_condition.py": {
+ "mtime": 1778710280.6300344,
+ "hash": "9fc05e2a8819db37bc7bd224f8c2db67"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\post_priority_config.py": {
+ "mtime": 1778710280.6300344,
+ "hash": "21b1c5860d8e42fef07463b5bf52ceab"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\siege.py": {
+ "mtime": 1778710280.631044,
+ "hash": "ac548c74c451dca2c84d9d039de46b6a"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\siege_member.py": {
+ "mtime": 1778710280.631044,
+ "hash": "24f74c67df2a8375175a818e2ef592be"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\__init__.py": {
+ "mtime": 1778710280.6275196,
+ "hash": "002c14a2213747661b77b5a30b8d3110"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\attack_day.py": {
+ "mtime": 1778710280.631044,
+ "hash": "6636af44aa1f3f3079f864b3c8bb9cac"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\autofill.py": {
+ "mtime": 1778710280.6320436,
+ "hash": "261012c1a7cdae9c401576016a1e0535"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\board.py": {
+ "mtime": 1778710280.6320436,
+ "hash": "c69579e0609dceba1fafa087eda2405e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\building.py": {
+ "mtime": 1778710280.6320436,
+ "hash": "17a76e00a22acfa311063cf3bf0aceb1"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\changelog.py": {
+ "mtime": 1778710280.6320436,
+ "hash": "f86a9e09fe755643a15a7f7b06a4f7e7"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\common.py": {
+ "mtime": 1778710280.6320436,
+ "hash": "011d46dc2203c3ed97184cec370ac179"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\comparison.py": {
+ "mtime": 1778710280.6320436,
+ "hash": "48ffa2ab0f4f95040236b6611ed375d0"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\member.py": {
+ "mtime": 1778710280.6320436,
+ "hash": "726dad9ff8c7a8bffd365ddcfd543645"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\post.py": {
+ "mtime": 1778710280.6335557,
+ "hash": "ff0149eb24572e4ba21fa191a73c762f"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\post_condition.py": {
+ "mtime": 1778710280.6335557,
+ "hash": "6fec8cfb3b2eea536953026b0116b4af"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\post_suggestions.py": {
+ "mtime": 1778710280.6335557,
+ "hash": "7db30a2f2f5a9232d8a783a85ee2df6a"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\siege.py": {
+ "mtime": 1778710280.6335557,
+ "hash": "1178a2cb1bc13ec3defa148e36991683"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\siege_member.py": {
+ "mtime": 1778710280.6335557,
+ "hash": "45b79b07f1d489b2daef9b719a0a0929"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\validation.py": {
+ "mtime": 1778710280.6335557,
+ "hash": "0221b358c7f777442cde715c227ac6ca"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\version.py": {
+ "mtime": 1778710280.6335557,
+ "hash": "b2fbcf0d416ddb9f1997acd6cb62bcf3"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\__init__.py": {
+ "mtime": 1778710280.631044,
+ "hash": "d41d8cd98f00b204e9800998ecf8427e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\attack_day.py": {
+ "mtime": 1778710280.6350994,
+ "hash": "997ffc05e8c23b0a544979ae0ed8dc7a"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\autofill.py": {
+ "mtime": 1778710280.6350994,
+ "hash": "e9ce9ddf48273c0d9932f75ea8e8b0be"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\board.py": {
+ "mtime": 1778710280.6350994,
+ "hash": "7222c72b83f1091828c689f490ebcfe6"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\bot_client.py": {
+ "mtime": 1778710280.6350994,
+ "hash": "b699c8adf0b08521c02f3e6a4072c1ef"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\buildings.py": {
+ "mtime": 1778710280.6361103,
+ "hash": "22d3b48b747d63585084db712f7526ff"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\building_capacity.py": {
+ "mtime": 1778710280.6361103,
+ "hash": "5b463b5af305f54cd34e75e568756db9"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\comparison.py": {
+ "mtime": 1778710280.6361103,
+ "hash": "17d8b0f29ef13d8a469dcbe79e5e0b18"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\discord_sync.py": {
+ "mtime": 1778710280.6361103,
+ "hash": "0fdbe1441877c11241501e6f37e6874a"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\image_gen.py": {
+ "mtime": 1778710280.6361103,
+ "hash": "42d66ff5cc72422b6cffdce18e7b88e9"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\lifecycle.py": {
+ "mtime": 1778710280.6376143,
+ "hash": "c6850f4b0ee921550d23553aa50db9ac"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\members.py": {
+ "mtime": 1778710280.6376143,
+ "hash": "1586e16427694996d81ce4d54812c5f0"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\notification_message.py": {
+ "mtime": 1778710280.6376143,
+ "hash": "514ad0558f51c114a96e8316cd4392bf"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\posts.py": {
+ "mtime": 1778710280.63862,
+ "hash": "56792826d430eaa6cdd86796ddb43c10"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\post_suggestions.py": {
+ "mtime": 1778710280.63862,
+ "hash": "4a62a36d881bf55a4f73b623b95738bf"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\reference.py": {
+ "mtime": 1778710280.639125,
+ "hash": "e86f9864edb3e0eaa1a5e00cd2b903a9"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\sieges.py": {
+ "mtime": 1778710280.639125,
+ "hash": "4f43c0760d92d03cc1062ba4b7610dba"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\siege_members.py": {
+ "mtime": 1778710280.639125,
+ "hash": "444d8aba42f567d23a8b1a5a12e51200"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\validation.py": {
+ "mtime": 1778710280.639125,
+ "hash": "bf8431f5d8b0c8dc793ed927f6de075f"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\__init__.py": {
+ "mtime": 1778710280.6335557,
+ "hash": "d41d8cd98f00b204e9800998ecf8427e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\scripts\\seed.py": {
+ "mtime": 1778710280.640529,
+ "hash": "08609621e397256df55a763eb98530c3"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\scripts\\seed_demo.py": {
+ "mtime": 1778710280.6415303,
+ "hash": "ef5c21e671c3184b5cbb2240979c0690"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\conftest.py": {
+ "mtime": 1778710280.6415303,
+ "hash": "f554d4679bb3e3dfb254292c14208f95"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_attack_day.py": {
+ "mtime": 1778710280.6415303,
+ "hash": "0977e2c92215d438097727789b5fcabe"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_auth.py": {
+ "mtime": 1778710280.642529,
+ "hash": "e7977b5f5003d94228fde1a79f93f538"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_auth_rate_limit.py": {
+ "mtime": 1778710280.642529,
+ "hash": "fc3c01fc3933c4256bd2766086c14b77"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_autofill.py": {
+ "mtime": 1778710280.642529,
+ "hash": "b3d820ab0a12548a132248c15dfed9fd"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_board.py": {
+ "mtime": 1778710280.6435287,
+ "hash": "9f22d0b8e9e80221bde4732c7ffa6d9c"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_bot_client.py": {
+ "mtime": 1778710280.6435287,
+ "hash": "c488817462a865f424d203c5763303c4"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_buildings.py": {
+ "mtime": 1778710280.6435287,
+ "hash": "0c3b166757efe22f6c6d1cdc6ca49b3f"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_changelog.py": {
+ "mtime": 1778710280.6435287,
+ "hash": "3312abb2cde111c3f7213c915d7d599d"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_comparison.py": {
+ "mtime": 1778710280.6435287,
+ "hash": "afd7a89a6c4be122e1872bddacfd9109"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_config.py": {
+ "mtime": 1778710280.6435287,
+ "hash": "507a31b2e18b33afd0765a1ad402cfdb"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_config_endpoint.py": {
+ "mtime": 1778710280.6435287,
+ "hash": "ac1338657f7dde5172a8175cceb1fa7b"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_cors.py": {
+ "mtime": 1778710280.6450343,
+ "hash": "daf9c3edb71d1b6ad13bd0f8db04be01"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_discord_sync.py": {
+ "mtime": 1778710280.6450343,
+ "hash": "ce0682700593adee9ed2ed864da5e013"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_enums.py": {
+ "mtime": 1778710280.6450343,
+ "hash": "20c403a02992b2d378fb4ae18f721e9c"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_health.py": {
+ "mtime": 1778710280.6450343,
+ "hash": "4ed39ff6a50be298eef1a9802d977439"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_image_gen.py": {
+ "mtime": 1778710280.6460407,
+ "hash": "9791fcb55b4af13cc334389a61559a99"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_lifecycle.py": {
+ "mtime": 1778710280.6460407,
+ "hash": "fd05826746be292aed3292dbe90445ab"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_lifecycle_integration.py": {
+ "mtime": 1778710280.6460407,
+ "hash": "2e1b940b00e9f311b97a22efb99f4122"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_members.py": {
+ "mtime": 1778710280.6460407,
+ "hash": "b20dc80db77e6525f5a29be8b11f7a59"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_member_changelog_column.py": {
+ "mtime": 1778710280.6460407,
+ "hash": "f954c9533daeea082379c61835f892ab"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_notifications.py": {
+ "mtime": 1778710280.6470416,
+ "hash": "7fe4ae6c6aa8507660739b2a6b310e4f"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_notification_message.py": {
+ "mtime": 1778710280.6470416,
+ "hash": "6a5503b79277ae98d36178ff8e708e15"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_posts.py": {
+ "mtime": 1778710280.6470416,
+ "hash": "81d1e413b611bc937cd7543cdc4b800d"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_post_suggestions.py": {
+ "mtime": 1778710280.6470416,
+ "hash": "e376b0c4f37573431cb0e9d8280f949a"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_post_suggestions_integration.py": {
+ "mtime": 1778710280.6470416,
+ "hash": "04b488d8def3668e0014304c1b8f147e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_reference.py": {
+ "mtime": 1778710280.6470416,
+ "hash": "940e02363b5ff046de3153a797f4faf5"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_schema.py": {
+ "mtime": 1778710280.6485467,
+ "hash": "636ad7d430b456534e8ac7289d42db20"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_seed_canonical.py": {
+ "mtime": 1778710280.6485467,
+ "hash": "8ed890f220e06153703da2aec3c9cece"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_seed_demo.py": {
+ "mtime": 1778710280.6491084,
+ "hash": "8c2e7a81046b0216979f21daac69b17c"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_sieges.py": {
+ "mtime": 1778710280.6491084,
+ "hash": "05b7fe8eba119695e8d8b2ad51299642"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_telemetry.py": {
+ "mtime": 1778710280.6491084,
+ "hash": "24e9bdc43f3b5a2bf63cad36a2671295"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_validation.py": {
+ "mtime": 1778710280.649632,
+ "hash": "d6e213c1e29301b6adc8a129295c4c17"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_version.py": {
+ "mtime": 1778710280.650155,
+ "hash": "ec29042c155d2dfe090ae87d79d9f54e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\__init__.py": {
+ "mtime": 1778710280.6415303,
+ "hash": "d41d8cd98f00b204e9800998ecf8427e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\config.py": {
+ "mtime": 1778710280.65144,
+ "hash": "b80130299a391da986cfd02386e5dea7"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\discord_client.py": {
+ "mtime": 1778710280.65144,
+ "hash": "99db4ab6cf0ecc3d30602e2b8db66a70"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\http_api.py": {
+ "mtime": 1778710280.65144,
+ "hash": "936ed9c6f1e4443f5035d0de3340329e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\main.py": {
+ "mtime": 1778710280.6519608,
+ "hash": "e05678b35f14c576d1cd2ee7f0ee86b0"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\telemetry.py": {
+ "mtime": 1778710280.6519608,
+ "hash": "a42e02bf2fddd81cca77baa570cdc1ac"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\__init__.py": {
+ "mtime": 1778710280.650921,
+ "hash": "d41d8cd98f00b204e9800998ecf8427e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\conftest.py": {
+ "mtime": 1778710280.6535122,
+ "hash": "53970b9a543ea0e4b170b7e31f5e022c"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\test_discord_client.py": {
+ "mtime": 1778710280.6535122,
+ "hash": "9e6d6a163d5dc0dbca534bd14269b408"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\test_get_guild_member.py": {
+ "mtime": 1778710280.6540315,
+ "hash": "44b5b3bb1ad92953f9d39972a779ddb7"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\test_http_api.py": {
+ "mtime": 1778710280.6540315,
+ "hash": "6f5d0c7f52ce8e017dc50b4bab6b3d62"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\test_telemetry.py": {
+ "mtime": 1778710280.6545522,
+ "hash": "938f4338b7342c0d1c39f468c3c31e0a"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\__init__.py": {
+ "mtime": 1778710280.6530018,
+ "hash": "d41d8cd98f00b204e9800998ecf8427e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\eslint.config.js": {
+ "mtime": 1778710280.6638145,
+ "hash": "820d67ddf4af94ab7a60b247ef568493"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\playwright.config.ts": {
+ "mtime": 1778710280.6663249,
+ "hash": "c0c6f46da1f83e4dad062bf96a1645ce"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\postcss.config.js": {
+ "mtime": 1778710280.6663249,
+ "hash": "33fad9c02cb0ec6d6030369ef6347d57"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\tailwind.config.ts": {
+ "mtime": 1778710280.6950474,
+ "hash": "ab2458852a94f3918fc4dc8eec8ee34a"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\vite.config.ts": {
+ "mtime": 1778710280.6955535,
+ "hash": "f0b8bf87fac76c40d6423f702e2a122d"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\vitest.config.ts": {
+ "mtime": 1778710280.6955535,
+ "hash": "e102be79d7bf6fd8b83320963d3d4d00"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\e2e\\board.spec.ts": {
+ "mtime": 1778710280.6618135,
+ "hash": "2e1ab122df18ca111301f5244c1b4903"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\e2e\\members.spec.ts": {
+ "mtime": 1778710280.6618135,
+ "hash": "012b10ee19afe7952752bdb34d947596"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\e2e\\siege-lifecycle.spec.ts": {
+ "mtime": 1778710280.6638145,
+ "hash": "d3c27ac7e90b3bb5f190694f8d692f6c"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\e2e\\smoke.spec.ts": {
+ "mtime": 1778710280.6638145,
+ "hash": "7ffc073a7b7ce29603e7b1dda85b101b"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\App.tsx": {
+ "mtime": 1778710280.6731784,
+ "hash": "dc94be0210c5307affde3c5e0e5412b7"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\main.tsx": {
+ "mtime": 1778710280.6834679,
+ "hash": "5310a6bf9e3bdf98dc615af3ceff1537"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\vite-env.d.ts": {
+ "mtime": 1778710280.6950474,
+ "hash": "0352474ba2918efe13895edbc3780d94"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\board.ts": {
+ "mtime": 1778710280.6731784,
+ "hash": "997fae78645cd70b5c2fc3476313e4c1"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\changelog.ts": {
+ "mtime": 1778710280.6731784,
+ "hash": "9baa9e3d2be3e4bb566ba86923829a17"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\client.ts": {
+ "mtime": 1778710280.6746829,
+ "hash": "10a76391bc7690246d448e867cf7af57"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\config.ts": {
+ "mtime": 1778710280.6746829,
+ "hash": "3715d4f6dd51e505949f4b0f7ec9b309"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\members.ts": {
+ "mtime": 1778710280.6752062,
+ "hash": "385a652bab3624eb1a556666b369c7be"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\notifications.ts": {
+ "mtime": 1778710280.6752062,
+ "hash": "b202ca64e4f5445d309fa8cede22ff0c"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\posts.ts": {
+ "mtime": 1778710280.6752062,
+ "hash": "42847a5a2b91ef16e25b1be64c9c5955"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\sieges.ts": {
+ "mtime": 1778710280.6752062,
+ "hash": "f1014577b76ed9125141f290e8fb7578"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\types.ts": {
+ "mtime": 1778710280.6752062,
+ "hash": "f83637e41fcfc597e14c140b81e74a63"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\version.ts": {
+ "mtime": 1778710280.6762116,
+ "hash": "3c320e1ae650ccfaf0fcc58db6f0ad8c"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\Carousel.tsx": {
+ "mtime": 1778710280.6772118,
+ "hash": "9c1e5964f8b5e400f963606ee0cd4eb9"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\ChangelogDropdown.tsx": {
+ "mtime": 1778710280.6772118,
+ "hash": "32af80944e867e66ec8cf25f6391e233"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\DiscordSyncModal.tsx": {
+ "mtime": 1778710280.6772118,
+ "hash": "52ea2cf5bf019ad4e9c376a447e87eaa"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\GroupByToggle.tsx": {
+ "mtime": 1778710280.6772118,
+ "hash": "78856592b8aaeb706087c4ef1e6c843b"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\Layout.tsx": {
+ "mtime": 1778710280.6772118,
+ "hash": "e813042f31449a0de61f906090164004"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\PostsTab.tsx": {
+ "mtime": 1778710280.678212,
+ "hash": "3f11fa6d290cff08dffcc9262a092b3a"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\PostSuggestionsModal.tsx": {
+ "mtime": 1778710280.678212,
+ "hash": "9c16b7f40b7352b2f423f7ce46a68b11"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\RequireAuth.tsx": {
+ "mtime": 1778710280.678212,
+ "hash": "cd2b2e1cd2d319fc3f3977f7589f291e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\SiegeLayout.tsx": {
+ "mtime": 1778710280.679212,
+ "hash": "5dc89034188b6823763f9c6852f5f03a"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\ui\\badge.tsx": {
+ "mtime": 1778710280.679212,
+ "hash": "639942830535b4f2bb8e21e8d3a674e4"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\ui\\button.tsx": {
+ "mtime": 1778710280.679212,
+ "hash": "99376e90207bb72645519879a6ad87aa"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\ui\\checkbox.tsx": {
+ "mtime": 1778710280.679212,
+ "hash": "596afb4c85e5b432c24e2606e9623bf8"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\ui\\dialog.tsx": {
+ "mtime": 1778710280.679212,
+ "hash": "b917e9be88d5dc6b1b6d2660df3be9a0"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\ui\\dropdown-menu.tsx": {
+ "mtime": 1778710280.6804683,
+ "hash": "8f8f3621f203e9d7d566ed3827ddb95c"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\ui\\input.tsx": {
+ "mtime": 1778710280.6804683,
+ "hash": "4f418a1677a7fa837b7a5f16b05eabea"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\ui\\label.tsx": {
+ "mtime": 1778710280.6804683,
+ "hash": "ede7445a0bd4c9380bff1fb664d21763"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\ui\\select.tsx": {
+ "mtime": 1778710280.6804683,
+ "hash": "594f45397eb2ac6bd77df7b7e37d5644"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\ui\\table.tsx": {
+ "mtime": 1778710280.681468,
+ "hash": "0e1676ab2a771ea388b5fa63036cd502"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\components\\ui\\textarea.tsx": {
+ "mtime": 1778710280.681468,
+ "hash": "4118508b3f819ceaee3b0d5f16bbb649"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\context\\AuthContext.tsx": {
+ "mtime": 1778710280.681468,
+ "hash": "44ab8c9079dffb96a8f0826540377cb3"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\lib\\buildingColors.ts": {
+ "mtime": 1778710280.6824672,
+ "hash": "b348eff15681381b572787a373b909ce"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\lib\\groupPostConditions.ts": {
+ "mtime": 1778710280.6824672,
+ "hash": "788b0f8427b263370cdab41d8850cf41"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\lib\\post-priority.ts": {
+ "mtime": 1778710280.6824672,
+ "hash": "94e7a97549b23802f43bb3f6ac6c28cc"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\lib\\postConditionTypes.ts": {
+ "mtime": 1778710280.6834679,
+ "hash": "3b06353374f1df46ea8de1cfd4afd788"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\lib\\useGroupByPreference.ts": {
+ "mtime": 1778710280.6834679,
+ "hash": "bb6b5032d31d41e56bfa0c1462240482"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\lib\\utils.ts": {
+ "mtime": 1778710280.6834679,
+ "hash": "d9837f38cc05303254571985e3164050"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\pages\\BoardPage.tsx": {
+ "mtime": 1778710280.6834679,
+ "hash": "ca60bdc402bf7fc73d45bf4a9786efa2"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\pages\\ComparisonPage.tsx": {
+ "mtime": 1778710280.6849875,
+ "hash": "5f40cf11f1c285fcc713c66f6b70cc7e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\pages\\LandingPage.tsx": {
+ "mtime": 1778710280.6849875,
+ "hash": "0592d360b4d150e643f2ed7d853cec37"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\pages\\LoginPage.tsx": {
+ "mtime": 1778710280.6849875,
+ "hash": "a7f86666a5e860fa06370cd44d5b2009"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\pages\\MemberDetailPage.tsx": {
+ "mtime": 1778710280.6849875,
+ "hash": "91d2961273fc9f2065dd82b95a4dd2e6"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\pages\\MembersPage.tsx": {
+ "mtime": 1778710280.6860092,
+ "hash": "0e20169e021eddba33936ff03cb09ed6"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\pages\\PostPrioritiesPage.tsx": {
+ "mtime": 1778710280.6860092,
+ "hash": "44ba6c946c49e4491f401a05ada7b0ce"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\pages\\PostsPage.tsx": {
+ "mtime": 1778710280.6860092,
+ "hash": "6299292c6d99e49321c62ebd458b5a3f"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\pages\\SiegeCreatePage.tsx": {
+ "mtime": 1778710280.6860092,
+ "hash": "2889e8903df72e1ab56a1a1a13ef0519"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\pages\\SiegeMembersPage.tsx": {
+ "mtime": 1778710280.687007,
+ "hash": "864268a2bc137e9b39782eb85260adff"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\pages\\SiegeSettingsPage.tsx": {
+ "mtime": 1778710280.687007,
+ "hash": "f594078ade4735208a55056c7cf4dd5f"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\pages\\SiegesPage.tsx": {
+ "mtime": 1778710280.687007,
+ "hash": "f93156052c5124138148122147b74acb"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\pages\\SystemPage.tsx": {
+ "mtime": 1778710280.687007,
+ "hash": "9332c96da0f1502dbb14d6f1d7164aaa"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\handlers.ts": {
+ "mtime": 1778710280.691031,
+ "hash": "d0c5acbf5a8354801f75ff4caac5c5da"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\server.ts": {
+ "mtime": 1778710280.6940484,
+ "hash": "3feed449d732643517e6a64bdf673434"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\setup.ts": {
+ "mtime": 1778710280.6940484,
+ "hash": "3709e3aa95abf0544678f0f2d9b46702"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\utils.tsx": {
+ "mtime": 1778710280.6940484,
+ "hash": "e25ee1f900621ffc9bf8dfd2fb6b406f"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\components\\Carousel.test.tsx": {
+ "mtime": 1778710280.6880064,
+ "hash": "ed7af8eb32a9c3f4917d488280458771"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\components\\ChangelogDropdown.test.tsx": {
+ "mtime": 1778710280.6890073,
+ "hash": "ca8589dc33b4a76b60f5734ce2c9912a"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\components\\GroupByConditions.test.tsx": {
+ "mtime": 1778710280.6890073,
+ "hash": "59ef06186d9d5c373c145cb620480dc6"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\components\\GroupByToggle.test.tsx": {
+ "mtime": 1778710280.6895123,
+ "hash": "8076603b108a6a9556290d3ca12842d0"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\components\\LandingPage.test.tsx": {
+ "mtime": 1778710280.6895123,
+ "hash": "6443aef7d8d30a4bae294ee781cd54f2"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\components\\Layout.test.tsx": {
+ "mtime": 1778710280.6895123,
+ "hash": "24143f8703e668987d9ffd297905e133"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\components\\PostsTab.test.tsx": {
+ "mtime": 1778710280.6895123,
+ "hash": "a7924bc94e83d9e2d39cee817ee29eee"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\components\\PostSuggestionsModal.test.tsx": {
+ "mtime": 1778710280.6895123,
+ "hash": "5fb779e8a5fc671e8998e4fd6d17300d"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\components\\SiegeLayout.test.tsx": {
+ "mtime": 1778710280.6895123,
+ "hash": "132fbee1c6d3922eaf395460a7088214"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\context\\AuthContext.test.tsx": {
+ "mtime": 1778710280.691031,
+ "hash": "41be23493241923ee1e7bc2611f91e5f"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\lib\\groupPostConditions.test.ts": {
+ "mtime": 1778710280.691031,
+ "hash": "8ee1bcf272b560a8bcbdcddfc70ffb10"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\lib\\postConditionTypes.test.ts": {
+ "mtime": 1778710280.691031,
+ "hash": "652ab758a5a1f6ff8f6a578446a2b9f7"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\pages\\BoardPage.test.tsx": {
+ "mtime": 1778710280.692048,
+ "hash": "507ead176edb84f62dc6e010dbe2bec0"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\pages\\LoginPage.test.tsx": {
+ "mtime": 1778710280.692048,
+ "hash": "9bef6b0eba107f34e9ad52539c2efe46"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\pages\\MembersPage.test.tsx": {
+ "mtime": 1778710280.692048,
+ "hash": "3f2ee2ccb6b854f90800deb228e7e151"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\pages\\PostsPage.groupBy.test.tsx": {
+ "mtime": 1778710280.692048,
+ "hash": "97bd6fcb6db233af92d7f3d033030a20"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\pages\\PostsPage.test.tsx": {
+ "mtime": 1778710280.6930473,
+ "hash": "21430b2fd1e9da0ed69bf51ecb38ca8a"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\pages\\SiegeMembersPage.test.tsx": {
+ "mtime": 1778710280.6930473,
+ "hash": "2c9b39064fdfb13508b2a837e7f65831"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\pages\\SiegeSettingsPage.test.tsx": {
+ "mtime": 1778710280.6930473,
+ "hash": "8c34c10c18ff7a32ffeccd9630ed451b"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\test\\pages\\SiegesPage.test.tsx": {
+ "mtime": 1778710280.6930473,
+ "hash": "f07ff3cf0ed4bb0696ecd6e2d5b5b821"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\types\\changelog.d.ts": {
+ "mtime": 1778710280.6940484,
+ "hash": "29f6e6e4d1a48ca3686c20d21c03dc3c"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\scripts\\bootstrap-db.ps1": {
+ "mtime": 1778710280.7000616,
+ "hash": "2963ef492dbaa1e8aed3c7d0b42cb2bf"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\scripts\\bootstrap-excel-import.ps1": {
+ "mtime": 1778710280.7010694,
+ "hash": "833c292e832a70a4d642e969418cec01"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\scripts\\bootstrap-images.ps1": {
+ "mtime": 1778710280.701412,
+ "hash": "770e3450dec21a6498dd9380f2070049"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\scripts\\bootstrap-keyvault.ps1": {
+ "mtime": 1778710280.701412,
+ "hash": "571c851084af0db873bdc82226b59797"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\scripts\\bootstrap-reimport.ps1": {
+ "mtime": 1778710280.701412,
+ "hash": "39d7a16633e94d6cefeb8aca40862cff"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\scripts\\generate-origin-pfx.ps1": {
+ "mtime": 1778710280.7034204,
+ "hash": "b0900217644486cdf9adf852befa4fde"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\scripts\\rebuild.ps1": {
+ "mtime": 1778710280.7034204,
+ "hash": "1b5123763516e1ee3dbc308f2638eb4f"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\scripts\\excel-import\\import_excel.py": {
+ "mtime": 1778710280.70243,
+ "hash": "4151fee1079d2b495340976e008542dd"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\scripts\\excel-import\\tests\\test_import_excel.py": {
+ "mtime": 1778710280.70243,
+ "hash": "8fe8befd8dbcdc09c53f053fbb57ffc2"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\scripts\\excel-import\\tests\\__init__.py": {
+ "mtime": 1778710280.70243,
+ "hash": "d41d8cd98f00b204e9800998ecf8427e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\scripts\\experiments\\run-graphify-dry-run.ps1": {
+ "mtime": 1778715097.451517,
+ "hash": "8a66f56768d8c9b2b04c9d03452a8285"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\CHANGELOG.md": {
+ "mtime": 1778710280.6144302,
+ "hash": "0c5a48d5f48933acad20d931797847b0"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\CLAUDE.md": {
+ "mtime": 1778710280.614946,
+ "hash": "efb936d1d3711ed3ca65b394f9d6b9b2"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\CODE_OF_CONDUCT.md": {
+ "mtime": 1778710280.614946,
+ "hash": "9b2d51a163a531cb2f62e72697b0ccc1"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\CONTRIBUTING.md": {
+ "mtime": 1778710280.614946,
+ "hash": "f1099f1c0582333df2fabef4dccad223"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docker-compose.prod.yml": {
+ "mtime": 1778710280.6545522,
+ "hash": "e55ffd8443f4dd9cf1acb386a7956bfb"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docker-compose.yml": {
+ "mtime": 1778710280.6550682,
+ "hash": "376b6eb4a3cfab39144103477cea42cf"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\README.md": {
+ "mtime": 1778710280.615952,
+ "hash": "8b4ba27465aa3d5dfd16ed64c6cbf45f"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\SUPPORT.md": {
+ "mtime": 1778710280.615952,
+ "hash": "64c8848cde6a11b59d25bcc9b621e546"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\requirements-dev.txt": {
+ "mtime": 1778710280.640529,
+ "hash": "61ce4838a8959c3c183db9bab83b737d"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\requirements.txt": {
+ "mtime": 1778710280.640529,
+ "hash": "b06051b552c2ea4732940c0dbc2b9db0"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\requirements-dev.txt": {
+ "mtime": 1778710280.6524813,
+ "hash": "cf6fc69a9af8b95f5758cac0a94bb9e6"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\requirements.txt": {
+ "mtime": 1778710280.6524813,
+ "hash": "fbf3dc8cb3581931efa8dc526f44f7ef"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\IMPLEMENTATION_PLAN.md": {
+ "mtime": 1778710280.6550682,
+ "hash": "5e4f9f914ca2ce9d67d6705a5933b7ba"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\RUNBOOK.md": {
+ "mtime": 1778710280.6555874,
+ "hash": "50fc656921246e9004108c9b114a09e5"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\siege_levels.md": {
+ "mtime": 1778710280.6587057,
+ "hash": "07d9f028f42a8b94ce3365a6f72bafc4"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\WEB_DESIGN_DOCUMENT.md": {
+ "mtime": 1778710280.656117,
+ "hash": "83b709cc8ac4aa14b027eda0a0c562b8"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\design-refs\\post-suggestions\\README.md": {
+ "mtime": 1778710280.6566384,
+ "hash": "de10b175d0df9256e5daeca315f7b252"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\experiments\\graphify-dry-run.md": {
+ "mtime": 1778711028.4433894,
+ "hash": "496df0deb7da1e88640f0a8bcdcb7e3b"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\mockups\\mockup-landing.html": {
+ "mtime": 1778710280.6571586,
+ "hash": "0548e8204463ddf92a09c5ce6f97fe34"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\mockups\\mockup-login.html": {
+ "mtime": 1778710280.6571586,
+ "hash": "7e1759c2d6a5fa6a3c4e5ed58777c289"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\mockups\\README.md": {
+ "mtime": 1778710280.6566384,
+ "hash": "fe28480a5cc9c486f4dc5d6be6c5f368"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\plans\\public-launch-self-hostable-and-landing-page.md": {
+ "mtime": 1778710280.657677,
+ "hash": "afed648bab4d1590d9b833607a4f7502"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\self-host\\anywhere.md": {
+ "mtime": 1778710280.6581955,
+ "hash": "2efab5a64706d9964b8fa13de3037449"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\self-host\\azure.md": {
+ "mtime": 1778710280.6587057,
+ "hash": "c9ee5c5fc8721e7c0ca2bb54da0782c9"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\superpowers\\plans\\2026-04-08-discord-auth-implementation.md": {
+ "mtime": 1778710280.6592517,
+ "hash": "01ee8f99120035b952a2699b8a01eb6b"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\superpowers\\plans\\2026-05-08-component-versioning.md": {
+ "mtime": 1778710280.6597755,
+ "hash": "4eea9e7828ef6f2c88737f1f2feb1ee2"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\superpowers\\plans\\2026-05-09-post-suggestions.md": {
+ "mtime": 1778710280.6597755,
+ "hash": "3c89d2df41aebf5c5bc5add19cbd6281"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\superpowers\\plans\\discord-auth-plan.md": {
+ "mtime": 1778710280.6597755,
+ "hash": "bab1c00cda76f8ccaf26079a049ecf40"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\docs\\superpowers\\plans\\v1-release-plan.md": {
+ "mtime": 1778710280.6607814,
+ "hash": "f7ebc80091b9fc6eb0a5bf8661c0300e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\index.html": {
+ "mtime": 1778710280.6638145,
+ "hash": "dde055b245027a69a68049238ed823b3"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\infra\\README.md": {
+ "mtime": 1778710280.696556,
+ "hash": "3e76fbd727bcceeb02eb75d416c64aff"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\scripts\\excel-import\\README.md": {
+ "mtime": 1778710280.701412,
+ "hash": "4a0e8a05091bd257fe417671858923a2"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\scripts\\excel-import\\requirements.txt": {
+ "mtime": 1778710280.70243,
+ "hash": "5e740ca3e2b112ec37fea64eae859ae0"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\wiki\\FAQ.md": {
+ "mtime": 1778710280.7034204,
+ "hash": "5e52ba23a226df064a14d75b1fd0d715"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\wiki\\Getting-Started.md": {
+ "mtime": 1778710280.7034204,
+ "hash": "f9dea57e10cfeada6f10255144249741"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\wiki\\Home.md": {
+ "mtime": 1778710280.7034204,
+ "hash": "32652bdc5aadfc11288cc5a4df5fe4a3"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\wiki\\Self-Host-on-Any-VPS.md": {
+ "mtime": 1778710280.7034204,
+ "hash": "178c7e9323276c57b1ce23786431f634"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\wiki\\Self-Host-on-Azure.md": {
+ "mtime": 1778710280.7049341,
+ "hash": "170d3ef1fbc3b5d52c18a8b6470951f5"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\wiki\\_Sidebar.md": {
+ "mtime": 1778710280.7049341,
+ "hash": "d92afc34965b5e470b581ce61e53b6ca"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\public\\favicon.svg": {
+ "mtime": 1778710280.6663249,
+ "hash": "1544a9686a82728b10dd2d54a4c539b4"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\public\\landing\\carousel-assignment-board.png": {
+ "mtime": 1778710280.6673253,
+ "hash": "138b785969e45c8eeec46b97c86dbfec"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\public\\landing\\carousel-discord-image.png": {
+ "mtime": 1778710280.6673253,
+ "hash": "490ecc84ff80e40ca12651e2626bc424"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\public\\landing\\carousel-member-management.png": {
+ "mtime": 1778710280.6688316,
+ "hash": "e87aa520a2aaecf3e9a1eea306182d0d"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\public\\landing\\carousel-post-assignments.png": {
+ "mtime": 1778710280.6698372,
+ "hash": "79bdc954a2b7803d178cc4b3f2d7fbd8"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\public\\landing\\carousel-siege-comparison.png": {
+ "mtime": 1778710280.6711512,
+ "hash": "913d494ae2e7465514441dec70f864c9"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\public\\landing\\carousel-validation-errors.png": {
+ "mtime": 1778710280.6721778,
+ "hash": "a6f43ec1ae7d66d5580b8b8d9d8c154e"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\public\\landing\\hero-board.png": {
+ "mtime": 1778710280.6721778,
+ "hash": "4640413678efc867d27bceed64b60ea9"
+ },
+ "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\public\\landing\\og-image.png": {
+ "mtime": 1778710280.6731784,
+ "hash": "4640413678efc867d27bceed64b60ea9"
+ }
+}
\ No newline at end of file
diff --git a/worked/rsl-siege-manager/review.md b/worked/rsl-siege-manager/review.md
new file mode 100644
index 00000000..f0072b41
--- /dev/null
+++ b/worked/rsl-siege-manager/review.md
@@ -0,0 +1,154 @@
+# Review: rsl-siege-manager
+
+**Corpus:** [`glitchwerks/rsl-siege-manager`](https://github.com/glitchwerks/rsl-siege-manager) @ `6085fd66`
+**Date:** 2026-05-15
+**Run:** tests included, no `.graphifyignore`
+**Counts:** 1886 nodes · 3876 edges · 141 communities · 90% EXTRACTED / 10% INFERRED (avg INFERRED confidence 0.62)
+**Cost:** $0 (tree-sitter only; this corpus's natural file mix surfaced no non-code files in meaningful quantity)
+**Setup:** ~10 minutes of CLI time end-to-end
+
+This review evaluates the **headline outputs** in `GRAPH_REPORT.md` — god nodes, surprising connections, communities, isolated nodes, suggested questions — against a single criterion: do they reflect things a developer familiar with this codebase would themselves nominate as core, surprising, or worth investigating? Each finding quotes the report directly so it is verifiable against the committed artifacts.
+
+---
+
+## Finding 1 — Test fixtures dominate "core abstractions" when tests are included
+
+Top god nodes, verbatim from `GRAPH_REPORT.md` (lines 141–150):
+
+```
+1. `_make_siege()` - 124 edges
+2. `_make_member()` - 92 edges
+3. `_make_position()` - 85 edges
+4. `SiegeMember` - 78 edges
+5. `_make_building()` - 64 edges
+6. `_make_group()` - 60 edges
+7. `BoardPage()` - 55 edges
+8. `makeSiegeMember()` - 55 edges
+9. `PostsPage()` - 37 edges
+10. `_session_with_siege_and_configs()` - 35 edges
+```
+
+Six of the top ten — positions 1, 2, 3, 5, 6, and 8 — are test factory functions (`_make_siege`, `_make_member`, `_make_position`, `_make_building`, `_make_group`, `makeSiegeMember`). Position 10 is a test session fixture. These are the highest-connectivity nodes in the graph, and they are infrastructure for verifying the codebase, not the codebase itself.
+
+The god-node list is labeled "your core abstractions" in the report. On this corpus, no developer would nominate `_make_siege()` as a core abstraction of a siege-assignment web app. Degree centrality on a well-tested codebase will tend to surface test factories: by design, factories create the primary domain objects that every test then exercises, so they accumulate edges from every part of the suite. The pattern is structural — the better the test coverage, the more saturated the factory's degree count.
+
+For users running graphify on a codebase with substantial test coverage, the documented mitigation (a `.graphifyignore` excluding `tests/`, `__tests__/`, etc.) is effective at removing this class of false-positive. See Finding 2 for what the same corpus surfaces without tests.
+
+## Finding 2 — Without tests, god nodes mix domain types with entry points and utilities
+
+For comparison, an earlier run of the same corpus with `.graphifyignore` excluding `backend/tests/` and `frontend/src/**/__tests__/` produced this god-node list:
+
+```
+1. `SiegeMember` - 55 edges
+2. `BoardPage()` - 53 edges
+3. `Post Suggestions Modal Handoff` - 40 edges
+4. `postsTab` - 29 edges
+5. `cn()` - 29 edges
+6. `PostsPage()` - 28 edges
+7. `BuildingType` - 27 edges
+8. `MembersPage()` - 27 edges
+9. `MemberRole` - 25 edges
+10. `Self-Host on Azure Wiki Page` - 23 edges
+```
+
+(That run's artifacts are not committed here — only the tests-included artifacts are kept — but the list is reproducible by re-running with the same `.graphifyignore`.)
+
+Three of ten — `SiegeMember`, `BuildingType`, `MemberRole` (positions 1, 7, 9) — are legitimate domain models a developer would identify.
+
+The other seven illustrate a second pattern worth knowing about:
+
+- **React top-level page components** (`BoardPage`, `PostsPage`, `MembersPage` at 2, 6, 8) — these import many things because they are entry points, not because they encode domain logic.
+- **Class-merge utilities** — `cn()` (position 5) is a one-line Tailwind class-merging utility (`src/lib/utils.ts`). It scores 29 edges because every component that conditionally combines classes imports it. The connection count reflects a structural pattern (the React+Tailwind idiom), not semantic importance.
+- **Document/wiki entities** — `Post Suggestions Modal Handoff` (position 3) is a planning document under `docs/design-refs/`; `Self-Host on Azure Wiki Page` (position 10) is a wiki article. Both are extracted as nodes alongside code entities and sort by edge count the same way.
+
+This is informative for users tuning expectations: degree centrality on a React frontend with a shared `cn()` utility will surface that utility regardless of how aggressive the ignore filter is, because the connections are real even though the semantic importance is low.
+
+## Finding 3 — Surprising connections cross language boundaries
+
+Both runs surface INFERRED edges between Python backend types and TypeScript frontend types under "Surprising Connections (you probably didn't know these)." Examples:
+
+```
+- `AuthError` --uses--> `Member` [INFERRED]
+ backend/app/api/auth.py → frontend/src/api/types.ts
+```
+
+```
+- `TestStartupValidation` --uses--> `MemberRole` [INFERRED]
+ backend/tests/test_auth.py → frontend/src/api/types.ts
+```
+
+A Python class does not "use" a TypeScript type at runtime. These are name-based similarity matches between identically-named constructs in two languages, surfaced as semantic relationships. The confidence values are flagged as INFERRED (avg 0.62 on this run), but the section header presents them as insights worth investigating.
+
+The one cross-language INFERRED edge in this run that maps to a real design contract is:
+
+```
+- `PostPriorityResponse` --uses--> `PostPriorityConfig` [INFERRED]
+ backend/app/api/post_priority_config.py → frontend/src/api/posts.ts
+```
+
+The backend Pydantic schema and the frontend TypeScript type do mirror each other intentionally — this is the API contract. That relationship is real, but a developer who wrote either side already knows about it; INFERRED detection here recovers a fact rather than discovering one.
+
+For corpora that mix Python and TypeScript with overlapping type names (common in monorepos with shared domain vocabulary), users should expect a high false-positive rate in this section and read it with the INFERRED confidence in mind.
+
+## Finding 4 — Community cohesion is uniformly low on this corpus
+
+Most of rsl-siege-manager's 141 communities (tests-included run) score between 0.05 and 0.17 on cohesion. The report itself flags 0.05 as "weakly interconnected" in the Suggested Questions section:
+
+> "Should `Community 0` be split into smaller, more focused modules? — Cohesion score 0.05 - nodes in this community are weakly interconnected."
+
+Community 0 has 112 nodes on this corpus.
+
+rsl-siege-manager has a clean three-service architecture (backend / frontend / bot). The community-detection pass does not recover that structure as three large cohesive communities; it produces many small communities with low internal cohesion. Possible interpretations: the underlying graph has many INFERRED cross-language edges diluting the cluster signal, the chosen algorithm parameters favor over-segmentation on graphs of this density, or this corpus genuinely lacks tight intra-cluster topology that community detection can exploit.
+
+A neutral framing for users: community cohesion is informative on this corpus mainly as a signal that the graph topology does not match the obvious three-tier mental model — which itself may be useful (it surfaces that the cross-language edges are doing the work). The "split this community" prompts the report generates from low cohesion scores are less actionable as direct architectural advice on this corpus.
+
+## Finding 5 — Alembic migration docstrings surface as isolated nodes
+
+The tests-included run reports 752 isolated nodes; the without-tests run reports 259. The leading examples are identical in both:
+
+```
+`initial schema Revision ID: 0001 Revises: Create Date: 2026-03-16`,
+`add autofill and attack day preview columns to siege Revision ID: 0002 Revises:`,
+`make siege date nullable Revision ID: 0003 Revises: 0002 Create Date: 2026-03-1`,
+`Add post_priority_config table`, ...
+```
+
+These are Alembic migration revision docstrings parsed as standalone graph nodes. There are 17 migration files in this corpus. The isolated-node count growing from 259 to 752 when tests are added is dominated by test docstrings parsed the same way.
+
+The report labels these as "possible documentation gaps or missing edges." For users with corpora that contain Alembic migrations, pytest docstrings, or other docstring-heavy auto-generated files, this label can be misleading — these are change annotations or test descriptions, not architectural entities with missing connections.
+
+A `.graphifyignore` rule for `**/alembic/versions/*.py` reduces the isolated-node count materially on this corpus; users with similar setups may want a default recipe.
+
+## Finding 6 — Suggested questions skew toward graph-property prompts
+
+The Suggested Questions section consists primarily of two kinds of questions:
+
+1. **Betweenness centrality prompts:** "Why does `_make_siege()` connect Community 12 to Community 0, Community 1, Community 3...?" The answer on this corpus is direct: `_make_siege()` creates the primary domain object, every test that touches a siege uses it, and the test suite spans the codebase — so the fixture is a betweenness bridge by construction.
+
+2. **Inferred-edge audits:** "Are the 17 inferred relationships involving `SiegeMember` (e.g. with `Base` and `TestSeedDemoMembers`) actually correct?" These ask the developer to validate the tool's own low-confidence connections.
+
+A genuinely concrete question in this section — "What is the exact relationship between `bootstrap-images.ps1` and `scripts/bootstrap-images.ps1`?" — is tagged AMBIGUOUS by the report. The answer is concrete (they are the same script referenced by two slightly different paths), but it is a file-naming observation, not an architectural insight.
+
+For users hoping the Suggested Questions section will surface domain-level prompts ("how does authentication flow?", "what enforces the siege-day invariant?"), this corpus's section is dominated by graph-property meta-questions.
+
+---
+
+## What worked well on this corpus
+
+- **Throughput:** 1886 nodes extracted in a few minutes at $0 cost. tree-sitter handles all 29 supported languages locally; LLM calls fire only for non-code files.
+- **Genuine domain extractions are present:** `SiegeMember`, `BuildingType`, and `MemberRole` in the god-node list are correct. `PostPriorityResponse --uses--> PostPriorityConfig` is a real API contract that INFERRED detection picked up across the Python/TypeScript boundary.
+- **`graph.html` visualization:** clear, navigable, easy to filter and search. Useful for browsing communities even when the labelled cohesion scores are low.
+
+The underlying graph build is solid. The findings above are about how the report layer summarizes that graph into headline metrics — specifically, what those metrics surface on a well-tested cross-language full-stack web app.
+
+---
+
+## Suggested follow-ups
+
+Patterns from this review that may be worth tracking upstream:
+
+1. **Test-fixture suppression** — degree centrality on covered codebases consistently surfaces test factories; documenting the ignore-pattern recipe in a "first run on a codebase with tests" section would shorten the iteration loop for users.
+2. **Cross-language INFERRED edges in monorepos** — name-based matches between Python and TypeScript types in mixed-language repos may warrant a higher confidence threshold or a "potential contract" label rather than the current "surprising connection" framing.
+3. **Docstring-heavy files (Alembic, pytest)** — defaulting to skip migration `versions/` directories, or detecting and grouping docstring nodes that share a structural pattern, would reduce the isolated-node noise materially.
+
+These are observations, not change requests — users running graphify on similar corpora may find the same patterns useful to know about.