From 3d99603e8d2d4c620d0b4ac6a98856bd955f3db1 Mon Sep 17 00:00:00 2001 From: Christopher Beaulieu Date: Fri, 15 May 2026 13:22:04 -0400 Subject: [PATCH] refactor(eval): restructure as worked/ case study for upstream alignment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Restructures the rsl-siege-manager evaluation to match upstream's worked/karpathy-repos/ convention before opening against safishamsi/graphify: - Move evaluations/rsl-siege-manager/ -> worked/rsl-siege-manager/ - Flatten graphify-out-with-tests/ artifacts to the case directory root (matches karpathy-repos layout: README.md, review.md, GRAPH_REPORT.md, graph.html, graph.json, manifest.json at top level). - Drop the codebase-only artifact set; keep only the tests-included run as the more realistic default (most users won't pre-configure .graphifyignore). - Rename runbook.md -> README.md (corpus description + reproduction steps). - Rename results.md -> review.md (matches karpathy-repos), and reframe from "do not adopt" verdict to neutral findings + suggested follow-ups. - Drop evaluations/README.md fork-only index. - Revert .gitignore evaluations/ exception block โ€” no longer needed now that artifacts live at worked/rsl-siege-manager/ (no graphify-out/ in path). Co-Authored-By: Claude Opus 4.7 --- .gitignore | 5 - evaluations/README.md | 17 - .../graphify-out/GRAPH_REPORT.md | 233 - .../rsl-siege-manager/graphify-out/graph.html | 305 - .../rsl-siege-manager/graphify-out/graph.json | 26177 ---------------- .../graphify-out/manifest.json | 918 - evaluations/rsl-siege-manager/results.md | 194 - evaluations/rsl-siege-manager/runbook.md | 160 - .../rsl-siege-manager}/GRAPH_REPORT.md | 0 worked/rsl-siege-manager/README.md | 88 + .../rsl-siege-manager}/graph.html | 0 .../rsl-siege-manager}/graph.json | 0 .../rsl-siege-manager}/manifest.json | 0 worked/rsl-siege-manager/review.md | 154 + 14 files changed, 242 insertions(+), 28009 deletions(-) delete mode 100644 evaluations/README.md delete mode 100644 evaluations/rsl-siege-manager/graphify-out/GRAPH_REPORT.md delete mode 100644 evaluations/rsl-siege-manager/graphify-out/graph.html delete mode 100644 evaluations/rsl-siege-manager/graphify-out/graph.json delete mode 100644 evaluations/rsl-siege-manager/graphify-out/manifest.json delete mode 100644 evaluations/rsl-siege-manager/results.md delete mode 100644 evaluations/rsl-siege-manager/runbook.md rename {evaluations/rsl-siege-manager/graphify-out-with-tests => worked/rsl-siege-manager}/GRAPH_REPORT.md (100%) create mode 100644 worked/rsl-siege-manager/README.md rename {evaluations/rsl-siege-manager/graphify-out-with-tests => worked/rsl-siege-manager}/graph.html (100%) rename {evaluations/rsl-siege-manager/graphify-out-with-tests => worked/rsl-siege-manager}/graph.json (100%) rename {evaluations/rsl-siege-manager/graphify-out-with-tests => worked/rsl-siege-manager}/manifest.json (100%) create mode 100644 worked/rsl-siege-manager/review.md diff --git a/.gitignore b/.gitignore index 79df4222..0e6fc586 100644 --- a/.gitignore +++ b/.gitignore @@ -14,11 +14,6 @@ build/ *.egg .graphify/ graphify-out/ -# Committed evaluation artifacts under evaluations/ are intentional evidence โ€” keep them -!evaluations/**/graphify-out/ -!evaluations/**/graphify-out-with-tests/ -!evaluations/**/graphify-out/** -!evaluations/**/graphify-out-with-tests/** .graphify_*.json .graphify_python .claude/ diff --git a/evaluations/README.md b/evaluations/README.md deleted file mode 100644 index 68dc1f9a..00000000 --- a/evaluations/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Graphify Evaluations - -Per-codebase evaluations of [graphify](https://github.com/safishamsi/graphify) โ€” runbook + captured artifacts + a written verdict. - -Each subdirectory is one evaluation: - -- A `runbook.md` capturing the methodology used at the time. -- A `results.md` documenting the run output, the acid-test scoring, and the adopt / don't-adopt decision. -- The raw `graphify-out/` directories (often two: one with tests excluded, one with tests included) so quoted findings remain auditable. - -## Evaluations - -| Codebase | Verdict | Date | -|---|---|---| -| [`rsl-siege-manager/`](./rsl-siege-manager/) | Do not adopt | 2026-05-15 | - -๐Ÿค– _Generated by Claude Code on behalf of @cbeaulieu-gt_ diff --git a/evaluations/rsl-siege-manager/graphify-out/GRAPH_REPORT.md b/evaluations/rsl-siege-manager/graphify-out/GRAPH_REPORT.md deleted file mode 100644 index bbf1c312..00000000 --- a/evaluations/rsl-siege-manager/graphify-out/GRAPH_REPORT.md +++ /dev/null @@ -1,233 +0,0 @@ -# Graph Report - . (2026-05-13) - -## Corpus Check -- cluster-only mode โ€” file stats not available - -## Summary -- 833 nodes ยท 1758 edges ยท 52 communities (48 shown, 4 thin omitted) -- Extraction: 85% EXTRACTED ยท 15% INFERRED ยท 0% AMBIGUOUS ยท INFERRED: 266 edges (avg confidence: 0.59) -- Token cost: 0 input ยท 0 output - -## Graph Freshness -- Built from commit: `6085fd66` -- Run `git rev-parse HEAD` and compare to check if the graph is stale. -- Run `graphify update .` after code changes (no API cost). - -## Community Hubs (Navigation) -- [[_COMMUNITY_Community 0|Community 0]] -- [[_COMMUNITY_Community 1|Community 1]] -- [[_COMMUNITY_Community 2|Community 2]] -- [[_COMMUNITY_Community 3|Community 3]] -- [[_COMMUNITY_Community 4|Community 4]] -- [[_COMMUNITY_Community 5|Community 5]] -- [[_COMMUNITY_Community 6|Community 6]] -- [[_COMMUNITY_Community 7|Community 7]] -- [[_COMMUNITY_Community 8|Community 8]] -- [[_COMMUNITY_Community 9|Community 9]] -- [[_COMMUNITY_Community 10|Community 10]] -- [[_COMMUNITY_Community 11|Community 11]] -- [[_COMMUNITY_Community 12|Community 12]] -- [[_COMMUNITY_Community 13|Community 13]] -- [[_COMMUNITY_Community 14|Community 14]] -- [[_COMMUNITY_Community 15|Community 15]] -- [[_COMMUNITY_Community 16|Community 16]] -- [[_COMMUNITY_Community 17|Community 17]] -- [[_COMMUNITY_Community 18|Community 18]] -- [[_COMMUNITY_Community 19|Community 19]] -- [[_COMMUNITY_Community 20|Community 20]] -- [[_COMMUNITY_Community 21|Community 21]] -- [[_COMMUNITY_Community 22|Community 22]] -- [[_COMMUNITY_Community 23|Community 23]] -- [[_COMMUNITY_Community 24|Community 24]] -- [[_COMMUNITY_Community 25|Community 25]] -- [[_COMMUNITY_Community 26|Community 26]] -- [[_COMMUNITY_Community 27|Community 27]] -- [[_COMMUNITY_Community 28|Community 28]] -- [[_COMMUNITY_Community 29|Community 29]] -- [[_COMMUNITY_Community 30|Community 30]] -- [[_COMMUNITY_Community 31|Community 31]] -- [[_COMMUNITY_Community 32|Community 32]] -- [[_COMMUNITY_Community 33|Community 33]] -- [[_COMMUNITY_Community 34|Community 34]] -- [[_COMMUNITY_Community 37|Community 37]] - -## God Nodes (most connected - your core abstractions) -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 - -## Surprising Connections (you probably didn't know these) -- `A single post assignment suggestion produced by the greedy algorithm. Attri` --rationale_for--> `PostSuggestionEntry Schema` [EXTRACTED] - backend/app/schemas/post_suggestions.py โ†’ docs/superpowers/plans/2026-05-09-post-suggestions.md -- `Post Suggestions Modal Handoff` --calls--> `cn()` [EXTRACTED] - docs/design-refs/post-suggestions/README.md โ†’ frontend/src/lib/utils.ts -- `Discord OAuth2 Authentication Spec` --semantically_similar_to--> `Discord OAuth2 Auth Flow` [INFERRED] [semantically similar] - docs/WEB_DESIGN_DOCUMENT.md โ†’ CLAUDE.md -- `AuthError` --uses--> `Member` [INFERRED] - backend/app/api/auth.py โ†’ frontend/src/api/types.ts -- `PostPriorityResponse` --uses--> `PostPriorityConfig` [INFERRED] - backend/app/api/post_priority_config.py โ†’ frontend/src/api/posts.ts - -## Communities (52 total, 4 thin omitted) - -### Community 0 - "Community 0" -Cohesion: 0.05 -Nodes (112): getBoard(), add_group(), generate_images(), Image generation endpoints., Generate PNG images for siege assignments and members list., getNotificationBatch(), notifySiegeMembers(), postToChannel() (+104 more) - -### Community 1 - "Community 1" -Cohesion: 0.06 -Nodes (67): getMember(), getMemberRoles(), getPostConditions(), updateMemberPreferences(), getSiege(), getSiegeMembers(), getSieges(), MemberRoleInfo (+59 more) - -### Community 2 - "Community 2" -Cohesion: 0.05 -Nodes (55): API router for the Suggest Post Assignments feature. Routes: POST /sieges/{, Generate a greedy post-assignment suggestion preview. Args: siege_i, Apply a caller-filtered subset of the stored preview atomically. Uses SELEC, activateSiege(), applyAttackDay(), applyAutofill(), applyPostSuggestions(), compareSiegesSpecific() (+47 more) - -### Community 3 - "Community 3" -Cohesion: 0.05 -Nodes (52): asyncpg, FastAPI, OpenTelemetry / Azure Monitor, Playwright (backend dep), PyJWT, Backend Requirements, slowapi, SQLAlchemy (+44 more) - -### Community 4 - "Community 4" -Cohesion: 0.06 -Nodes (41): PostSuggestionStaleEntry, ChangeCell(), Classification, classify(), ExpiryCountdown, OutcomeFilter, Pill(), PRIORITY_META (+33 more) - -### Community 5 - "Community 5" -Cohesion: 0.09 -Nodes (45): Application Insights, scripts/bootstrap-images.ps1, Caddy Reverse Proxy, .github/workflows/deploy.yml, Discord OAuth2, GitHub Actions CI/CD, .github/workflows/infra-deploy.yml, Azure Managed Identity (+37 more) - -### Community 6 - "Community 6" -Cohesion: 0.06 -Nodes (36): health(), createMember(), get_member(), getMemberPreferences(), updateMember(), Send DMs for each member and record results in a fresh DB session., _send_dms(), Find member by username in the guild, open DM, send message. (+28 more) - -### Community 7 - "Community 7" -Cohesion: 0.08 -Nodes (27): lifespan(), main(), FastAPI application factory and middleware wiring., Run the FastAPI/uvicorn HTTP sidecar on port 8001., Connect and run the Discord client., Start both the Discord client and HTTP server concurrently., Application lifespan โ€” runs startup guards before serving requests., run_discord_client() (+19 more) - -### Community 8 - "Community 8" -Cohesion: 0.1 -Nodes (17): downgrade(), initial schema Revision ID: 0001 Revises: Create Date: 2026-03-16, upgrade(), 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, Add description to post_priority_config, Replace power with power_level, drop sort_value (+9 more) - -### Community 9 - "Community 9" -Cohesion: 0.1 -Nodes (24): AuthError, callback(), _check_guild_membership(), _error_redirect(), _exchange_code_for_token(), _get_discord_user(), login(), logout() (+16 more) - -### Community 10 - "Community 10" -Cohesion: 0.12 -Nodes (17): apiAddBuilding(), apiCreateMember(), apiCreateSiege(), autofillBtn, buildingsTab, chevron, firstPositionSpan, positionCell (+9 more) - -### Community 11 - "Community 11" -Cohesion: 0.17 -Nodes (14): add_building(), delete_group(), deleteBuilding(), getBuildings(), updateBuilding(), get_team_count(), Return the theoretical total team slots for a building type at a given level., _create_groups_and_positions() (+6 more) - -### Community 12 - "Community 12" -Cohesion: 0.16 -Nodes (15): VersionInfo, _fetch_bot_version(), getVersion(), Return a version string for the backend. When both BUILD_NUMBER and GIT_SHA, Call the bot sidecar's /version endpoint. Returns None if unreachable., Return version information for all components., _read_backend_version(), useVersion() (+7 more) - -### Community 13 - "Community 13" -Cohesion: 0.13 -Nodes (9): BUILDING_LABELS, BuildingColorClass, ActiveTab, BoardPage(), BUILDING_TYPE_ORDER, ROLE_CHIP_COLORS, ROLE_COLORS, ROLE_FILTER_OPTIONS (+1 more) - -### Community 14 - "Community 14" -Cohesion: 0.16 -Nodes (11): getSiegeMemberPreferences(), DuplicateConditionMap, findPostPosition(), MemberWithMatches, postsTab, priorityBadgeColor(), priorityLabel(), POWER_LABELS (+3 more) - -### Community 15 - "Community 15" -Cohesion: 0.19 -Nodes (13): build_member_notification_message(), _build_section(), _position_label(), _position_sort_key(), _positions_from_keys(), _positions_to_key_set(), Build rich per-member Discord DM messages for siege assignment notifications., Convert a list of PositionInfo objects to a set of comparable tuples. (+5 more) - -### Community 16 - "Community 16" -Cohesion: 0.26 -Nodes (12): list_posts(), Build a PostResponse-compatible dict, denormalizing building_number from the rel, _serialize_post(), setPostConditions(), updatePost(), Update a single position's assignment. Raises: 404 if position not, _validate_member_active(), _get_post_for_siege_or_404() (+4 more) - -### Community 17 - "Community 17" -Cohesion: 0.23 -Nodes (11): _build_assignments_html(), _build_reserves_html(), generate_assignments_image(), generate_reserves_image(), Image generation service โ€” renders HTML/CSS to PNG via Playwright., Build the reserves/members list HTML string. Args: members: Siege m, Render an HTML string to PNG bytes using headless Chromium., Render the assignments board as a PNG. Returns raw PNG bytes. (+3 more) - -### Community 18 - "Community 18" -Cohesion: 0.25 -Nodes (10): get_changelog_status(), markChangelogSeen(), Changelog status and mark-seen endpoints. These endpoints let the frontend trac, Raise HTTP 400 if the caller is a service principal. Args: current_, Return the authenticated user's last-seen changelog timestamp. Args:, Set the authenticated user's last-seen changelog timestamp to now. Idempote, _require_member_session(), ChangelogStatusResponse (+2 more) - -### Community 19 - "Community 19" -Cohesion: 0.22 -Nodes (5): Carousel(), CarouselProps, CarouselSlide, COLORS, SLIDES - -### Community 20 - "Community 20" -Cohesion: 0.24 -Nodes (7): AppConfig, fetchConfig(), Layout(), navLinkClass(), RequireAuth(), useAuth(), LandingOrSieges() - -### Community 21 - "Community 21" -Cohesion: 0.22 -Nodes (7): compareSieges(), ComparisonResult, MemberDiff, PositionKey, _load_assignments(), _load_member_names(), Return {member_id: [PositionKey, ...]} for non-reserve, non-disabled assigned po - -### Community 22 - "Community 22" -Cohesion: 0.24 -Nodes (9): _get_client_ip(), _parse_retry_after_seconds(), rate_limit_exceeded_handler(), _rate_limit_key(), Rate-limiting utilities shared across the application. This module owns the sin, Composite key function that honours the AUTH_DISABLED bypass. When ``AUTH_D, Parse a slowapi rate-limit detail string into a window size in seconds. slo, Return a JSON 429 response with a ``Retry-After`` header. Replaces slowapi' (+1 more) - -### Community 23 - "Community 23" -Cohesion: 0.22 -Nodes (8): DropdownMenuCheckboxItem, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut(), DropdownMenuSubContent, DropdownMenuSubTrigger - -### Community 24 - "Community 24" -Cohesion: 0.22 -Nodes (8): Endpoints for Discord guild member โ†” clan member sync., Return proposed Discord โ†” clan member matches without writing to the DB., Apply accepted sync matches, updating discord_username and discord_id., applyDiscordSync(), previewDiscordSync(), Service logic for Discord guild member โ†’ clan member matching., Return proposed matches between Discord guild members and clan members. Mat, Apply accepted sync matches, writing discord_username and discord_id. Unkno - -### Community 25 - "Community 25" -Cohesion: 0.33 -Nodes (5): AuthContext, AuthContextValue, AuthProvider(), AuthUser, queryClient - -### Community 26 - "Community 26" -Cohesion: 0.4 -Nodes (3): ChangelogStatus, fetchChangelogStatus(), DropdownMenuContent - -### Community 27 - "Community 27" -Cohesion: 0.33 -Nodes (4): apiClient, ERROR_MESSAGES, LoginPage(), MEMBERSHIP_ERRORS - -### Community 28 - "Community 28" -Cohesion: 0.33 -Nodes (5): get_config(), Public config endpoint โ€” exposes non-sensitive runtime flags to the frontend., Return public runtime configuration flags. This endpoint is intentionally u, Settings, BaseSettings - -### Community 31 - "Community 31" -Cohesion: 0.5 -Nodes (3): configure_telemetry(), Application Insights / OpenTelemetry initialisation for the backend. Call ``con, Initialise Azure Monitor OpenTelemetry and instrument the app. The ``azure- - -### Community 33 - "Community 33" -Cohesion: 0.5 -Nodes (3): getPostPriorities(), getPosts(), updatePostPriority() - -### Community 34 - "Community 34" -Cohesion: 0.5 -Nodes (4): bulk_update_positions(), Apply multiple position updates in a single transaction. Each update dict m, Validate the logical consistency of position flag combinations., _validate_position_state() - -## Ambiguous Edges - Review These -- `bootstrap-images.ps1` โ†’ `scripts/bootstrap-images.ps1` [AMBIGUOUS] - wiki/Self-Host-on-Azure.md ยท relation: semantically_similar_to - -## Knowledge Gaps -- **259 isolated node(s):** `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`, `Add description to post_priority_config` (+254 more) - These have โ‰ค1 connection - possible missing edges or undocumented components. -- **4 thin communities (<3 nodes) omitted from report** โ€” run `graphify query` to explore isolated nodes. - -## Suggested Questions -_Questions this graph is uniquely positioned to answer:_ - -- **What is the exact relationship between `bootstrap-images.ps1` and `scripts/bootstrap-images.ps1`?** - _Edge tagged AMBIGUOUS (relation: semantically_similar_to) - confidence is low._ -- **Why does `Post Suggestions Modal Handoff` connect `Community 4` to `Community 0`, `Community 1`, `Community 2`, `Community 3`, `Community 14`?** - _High betweenness centrality (0.257) - this node is a cross-community bridge._ -- **Why does `Web Design Document` connect `Community 4` to `Community 3`?** - _High betweenness centrality (0.131) - this node is a cross-community bridge._ -- **Are the 13 inferred relationships involving `SiegeMember` (e.g. with `Base` and `Member`) actually correct?** - _`SiegeMember` has 13 INFERRED edges - model-reasoned connections that need verification._ -- **Are the 3 inferred relationships involving `Post Suggestions Modal Handoff` (e.g. with `Suggest Post Assignments Feature` and `Post Data Model`) actually correct?** - _`Post Suggestions Modal Handoff` has 3 INFERRED edges - model-reasoned connections that need verification._ -- **What connects `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` to the rest of the system?** - _259 weakly-connected nodes found - possible documentation gaps or missing edges._ -- **Should `Community 0` be split into smaller, more focused modules?** - _Cohesion score 0.05 - nodes in this community are weakly interconnected._ \ No newline at end of file diff --git a/evaluations/rsl-siege-manager/graphify-out/graph.html b/evaluations/rsl-siege-manager/graphify-out/graph.html deleted file mode 100644 index 5c00b42e..00000000 --- a/evaluations/rsl-siege-manager/graphify-out/graph.html +++ /dev/null @@ -1,305 +0,0 @@ - - - - -graphify - graphify-out\graph.html - - - - -
- - - - - \ No newline at end of file diff --git a/evaluations/rsl-siege-manager/graphify-out/graph.json b/evaluations/rsl-siege-manager/graphify-out/graph.json deleted file mode 100644 index 68208834..00000000 --- a/evaluations/rsl-siege-manager/graphify-out/graph.json +++ /dev/null @@ -1,26177 +0,0 @@ -{ - "directed": false, - "multigraph": false, - "graph": {}, - "nodes": [ - { - "label": "env.py", - "file_type": "code", - "source_file": "backend/alembic/env.py", - "source_location": "L1", - "community": 29, - "norm_label": "env.py", - "id": "backend_alembic_env_py" - }, - { - "label": "run_migrations_offline()", - "file_type": "code", - "source_file": "backend/alembic/env.py", - "source_location": "L24", - "community": 29, - "norm_label": "run_migrations_offline()", - "id": "alembic_env_run_migrations_offline" - }, - { - "label": "do_run_migrations()", - "file_type": "code", - "source_file": "backend/alembic/env.py", - "source_location": "L36", - "community": 29, - "norm_label": "do_run_migrations()", - "id": "alembic_env_do_run_migrations" - }, - { - "label": "run_async_migrations()", - "file_type": "code", - "source_file": "backend/alembic/env.py", - "source_location": "L42", - "community": 29, - "norm_label": "run_async_migrations()", - "id": "alembic_env_run_async_migrations" - }, - { - "label": "run_migrations_online()", - "file_type": "code", - "source_file": "backend/alembic/env.py", - "source_location": "L53", - "community": 29, - "norm_label": "run_migrations_online()", - "id": "alembic_env_run_migrations_online" - }, - { - "label": "0001_initial_schema.py", - "file_type": "code", - "source_file": "backend/alembic/versions/0001_initial_schema.py", - "source_location": "L1", - "community": 8, - "norm_label": "0001_initial_schema.py", - "id": "backend_alembic_versions_0001_initial_schema_py" - }, - { - "label": "upgrade()", - "file_type": "code", - "source_file": "backend/alembic/versions/0001_initial_schema.py", - "source_location": "L19", - "community": 8, - "norm_label": "upgrade()", - "id": "versions_0001_initial_schema_upgrade" - }, - { - "label": "downgrade()", - "file_type": "code", - "source_file": "backend/alembic/versions/0001_initial_schema.py", - "source_location": "L273", - "community": 8, - "norm_label": "downgrade()", - "id": "versions_0001_initial_schema_downgrade" - }, - { - "label": "initial schema Revision ID: 0001 Revises: Create Date: 2026-03-16", - "file_type": "rationale", - "source_file": "backend/alembic/versions/0001_initial_schema.py", - "source_location": "L1", - "community": 8, - "norm_label": "initial schema revision id: 0001 revises: create date: 2026-03-16", - "id": "versions_0001_initial_schema_rationale_1" - }, - { - "label": "0002_add_preview_columns.py", - "file_type": "code", - "source_file": "backend/alembic/versions/0002_add_preview_columns.py", - "source_location": "L1", - "community": 8, - "norm_label": "0002_add_preview_columns.py", - "id": "backend_alembic_versions_0002_add_preview_columns_py" - }, - { - "label": "add autofill and attack day preview columns to siege Revision ID: 0002 Revises:", - "file_type": "rationale", - "source_file": "backend/alembic/versions/0002_add_preview_columns.py", - "source_location": "L1", - "community": 8, - "norm_label": "add autofill and attack day preview columns to siege revision id: 0002 revises:", - "id": "versions_0002_add_preview_columns_rationale_1" - }, - { - "label": "0003_make_siege_date_nullable.py", - "file_type": "code", - "source_file": "backend/alembic/versions/0003_make_siege_date_nullable.py", - "source_location": "L1", - "community": 8, - "norm_label": "0003_make_siege_date_nullable.py", - "id": "backend_alembic_versions_0003_make_siege_date_nullable_py" - }, - { - "label": "make siege date nullable Revision ID: 0003 Revises: 0002 Create Date: 2026-03-1", - "file_type": "rationale", - "source_file": "backend/alembic/versions/0003_make_siege_date_nullable.py", - "source_location": "L1", - "community": 8, - "norm_label": "make siege date nullable revision id: 0003 revises: 0002 create date: 2026-03-1", - "id": "versions_0003_make_siege_date_nullable_rationale_1" - }, - { - "label": "0004_add_post_priority_config.py", - "file_type": "code", - "source_file": "backend/alembic/versions/0004_add_post_priority_config.py", - "source_location": "L1", - "community": 8, - "norm_label": "0004_add_post_priority_config.py", - "id": "backend_alembic_versions_0004_add_post_priority_config_py" - }, - { - "label": "Add post_priority_config table", - "file_type": "rationale", - "source_file": "backend/alembic/versions/0004_add_post_priority_config.py", - "source_location": "L1", - "community": 8, - "norm_label": "add post_priority_config table", - "id": "versions_0004_add_post_priority_config_rationale_1" - }, - { - "label": "0005_add_description_to_post_priority_config.py", - "file_type": "code", - "source_file": "backend/alembic/versions/0005_add_description_to_post_priority_config.py", - "source_location": "L1", - "community": 8, - "norm_label": "0005_add_description_to_post_priority_config.py", - "id": "backend_alembic_versions_0005_add_description_to_post_priority_config_py" - }, - { - "label": "Add description to post_priority_config", - "file_type": "rationale", - "source_file": "backend/alembic/versions/0005_add_description_to_post_priority_config.py", - "source_location": "L1", - "community": 8, - "norm_label": "add description to post_priority_config", - "id": "versions_0005_add_description_to_post_priority_config_rationale_1" - }, - { - "label": "0006_power_level_and_drop_sort_value.py", - "file_type": "code", - "source_file": "backend/alembic/versions/0006_power_level_and_drop_sort_value.py", - "source_location": "L1", - "community": 8, - "norm_label": "0006_power_level_and_drop_sort_value.py", - "id": "backend_alembic_versions_0006_power_level_and_drop_sort_value_py" - }, - { - "label": "Replace power with power_level, drop sort_value", - "file_type": "rationale", - "source_file": "backend/alembic/versions/0006_power_level_and_drop_sort_value.py", - "source_location": "L1", - "community": 8, - "norm_label": "replace power with power_level, drop sort_value", - "id": "versions_0006_power_level_and_drop_sort_value_rationale_1" - }, - { - "label": "0007_fix_group_number_max.py", - "file_type": "code", - "source_file": "backend/alembic/versions/0007_fix_group_number_max.py", - "source_location": "L1", - "community": 8, - "norm_label": "0007_fix_group_number_max.py", - "id": "backend_alembic_versions_0007_fix_group_number_max_py" - }, - { - "label": "Raise group_number_range constraint max from 9 to 10 Stronghold at level 6 requ", - "file_type": "rationale", - "source_file": "backend/alembic/versions/0007_fix_group_number_max.py", - "source_location": "L1", - "community": 8, - "norm_label": "raise group_number_range constraint max from 9 to 10 stronghold at level 6 requ", - "id": "versions_0007_fix_group_number_max_rationale_1" - }, - { - "label": "0008_add_matched_condition_id_to_position.py", - "file_type": "code", - "source_file": "backend/alembic/versions/0008_add_matched_condition_id_to_position.py", - "source_location": "L1", - "community": 8, - "norm_label": "0008_add_matched_condition_id_to_position.py", - "id": "backend_alembic_versions_0008_add_matched_condition_id_to_position_py" - }, - { - "label": "Add matched_condition_id to position Tracks which PostCondition a member was ma", - "file_type": "rationale", - "source_file": "backend/alembic/versions/0008_add_matched_condition_id_to_position.py", - "source_location": "L1", - "community": 8, - "norm_label": "add matched_condition_id to position tracks which postcondition a member was ma", - "id": "versions_0008_add_matched_condition_id_to_position_rationale_1" - }, - { - "label": "0009_add_discord_id_to_member.py", - "file_type": "code", - "source_file": "backend/alembic/versions/0009_add_discord_id_to_member.py", - "source_location": "L1", - "community": 8, - "norm_label": "0009_add_discord_id_to_member.py", - "id": "backend_alembic_versions_0009_add_discord_id_to_member_py" - }, - { - "label": "Add discord_id to member Stores the Discord snowflake ID for each clan member,", - "file_type": "rationale", - "source_file": "backend/alembic/versions/0009_add_discord_id_to_member.py", - "source_location": "L1", - "community": 8, - "norm_label": "add discord_id to member stores the discord snowflake id for each clan member,", - "id": "versions_0009_add_discord_id_to_member_rationale_1" - }, - { - "label": "0010_add_last_seen_changelog_at_to_member.py", - "file_type": "code", - "source_file": "backend/alembic/versions/0010_add_last_seen_changelog_at_to_member.py", - "source_location": "L1", - "community": 8, - "norm_label": "0010_add_last_seen_changelog_at_to_member.py", - "id": "backend_alembic_versions_0010_add_last_seen_changelog_at_to_member_py" - }, - { - "label": "Add last_seen_changelog_at to member Tracks the timestamp of the last changelog", - "file_type": "rationale", - "source_file": "backend/alembic/versions/0010_add_last_seen_changelog_at_to_member.py", - "source_location": "L1", - "community": 8, - "norm_label": "add last_seen_changelog_at to member tracks the timestamp of the last changelog", - "id": "versions_0010_add_last_seen_changelog_at_to_member_rationale_1" - }, - { - "label": "Add nullable last_seen_changelog_at column to the member table.", - "file_type": "rationale", - "source_file": "backend/alembic/versions/0010_add_last_seen_changelog_at_to_member.py", - "source_location": "L25", - "community": 8, - "norm_label": "add nullable last_seen_changelog_at column to the member table.", - "id": "versions_0010_add_last_seen_changelog_at_to_member_rationale_25" - }, - { - "label": "Remove last_seen_changelog_at column from the member table.", - "file_type": "rationale", - "source_file": "backend/alembic/versions/0010_add_last_seen_changelog_at_to_member.py", - "source_location": "L33", - "community": 8, - "norm_label": "remove last_seen_changelog_at column from the member table.", - "id": "versions_0010_add_last_seen_changelog_at_to_member_rationale_33" - }, - { - "label": "0011_add_post_suggest_preview.py", - "file_type": "code", - "source_file": "backend/alembic/versions/0011_add_post_suggest_preview.py", - "source_location": "L1", - "community": 8, - "norm_label": "0011_add_post_suggest_preview.py", - "id": "backend_alembic_versions_0011_add_post_suggest_preview_py" - }, - { - "label": "Add post_suggest_preview columns to siege table. Mirrors the autofill_preview /", - "file_type": "rationale", - "source_file": "backend/alembic/versions/0011_add_post_suggest_preview.py", - "source_location": "L1", - "community": 8, - "norm_label": "add post_suggest_preview columns to siege table. mirrors the autofill_preview /", - "id": "versions_0011_add_post_suggest_preview_rationale_1" - }, - { - "label": "Add post_suggest_preview and post_suggest_preview_expires_at columns.", - "file_type": "rationale", - "source_file": "backend/alembic/versions/0011_add_post_suggest_preview.py", - "source_location": "L23", - "community": 8, - "norm_label": "add post_suggest_preview and post_suggest_preview_expires_at columns.", - "id": "versions_0011_add_post_suggest_preview_rationale_23" - }, - { - "label": "Drop post_suggest_preview and post_suggest_preview_expires_at columns.", - "file_type": "rationale", - "source_file": "backend/alembic/versions/0011_add_post_suggest_preview.py", - "source_location": "L34", - "community": 8, - "norm_label": "drop post_suggest_preview and post_suggest_preview_expires_at columns.", - "id": "versions_0011_add_post_suggest_preview_rationale_34" - }, - { - "label": "Settings", - "file_type": "code", - "source_file": "backend/app/config.py", - "source_location": "L4", - "community": 28, - "norm_label": "settings", - "id": "app_config_settings" - }, - { - "label": "BaseSettings", - "file_type": "code", - "source_file": "", - "source_location": "", - "community": 28, - "norm_label": "basesettings", - "id": "basesettings" - }, - { - "label": "lifespan()", - "file_type": "code", - "source_file": "backend/app/main.py", - "source_location": "L47", - "community": 7, - "norm_label": "lifespan()", - "id": "app_main_lifespan" - }, - { - "label": "FastAPI application factory and middleware wiring.", - "file_type": "rationale", - "source_file": "backend/app/main.py", - "source_location": "L1", - "community": 7, - "norm_label": "fastapi application factory and middleware wiring.", - "id": "app_main_rationale_1" - }, - { - "label": "Application lifespan \u2014 runs startup guards before serving requests.", - "file_type": "rationale", - "source_file": "backend/app/main.py", - "source_location": "L48", - "community": 7, - "norm_label": "application lifespan \u2014 runs startup guards before serving requests.", - "id": "app_main_rationale_48" - }, - { - "label": "middleware.py", - "file_type": "code", - "source_file": "backend/app/middleware.py", - "source_location": "L1", - "community": 30, - "norm_label": "middleware.py", - "id": "backend_app_middleware_py" - }, - { - "label": "RequestLoggingMiddleware", - "file_type": "code", - "source_file": "backend/app/middleware.py", - "source_location": "L12", - "community": 30, - "norm_label": "requestloggingmiddleware", - "id": "app_middleware_requestloggingmiddleware" - }, - { - "label": "BaseHTTPMiddleware", - "file_type": "code", - "source_file": "", - "source_location": "", - "community": 30, - "norm_label": "basehttpmiddleware", - "id": "basehttpmiddleware" - }, - { - "label": ".dispatch()", - "file_type": "code", - "source_file": "backend/app/middleware.py", - "source_location": "L13", - "community": 30, - "norm_label": ".dispatch()", - "id": "app_middleware_requestloggingmiddleware_dispatch" - }, - { - "label": "rate_limit.py", - "file_type": "code", - "source_file": "backend/app/rate_limit.py", - "source_location": "L1", - "community": 22, - "norm_label": "rate_limit.py", - "id": "backend_app_rate_limit_py" - }, - { - "label": "_get_client_ip()", - "file_type": "code", - "source_file": "backend/app/rate_limit.py", - "source_location": "L52", - "community": 22, - "norm_label": "_get_client_ip()", - "id": "app_rate_limit_get_client_ip" - }, - { - "label": "_rate_limit_key()", - "file_type": "code", - "source_file": "backend/app/rate_limit.py", - "source_location": "L154", - "community": 22, - "norm_label": "_rate_limit_key()", - "id": "app_rate_limit_rate_limit_key" - }, - { - "label": "_parse_retry_after_seconds()", - "file_type": "code", - "source_file": "backend/app/rate_limit.py", - "source_location": "L179", - "community": 22, - "norm_label": "_parse_retry_after_seconds()", - "id": "app_rate_limit_parse_retry_after_seconds" - }, - { - "label": "rate_limit_exceeded_handler()", - "file_type": "code", - "source_file": "backend/app/rate_limit.py", - "source_location": "L217", - "community": 22, - "norm_label": "rate_limit_exceeded_handler()", - "id": "app_rate_limit_rate_limit_exceeded_handler" - }, - { - "label": "Rate-limiting utilities shared across the application. This module owns the sin", - "file_type": "rationale", - "source_file": "backend/app/rate_limit.py", - "source_location": "L1", - "community": 22, - "norm_label": "rate-limiting utilities shared across the application. this module owns the sin", - "id": "app_rate_limit_rationale_1" - }, - { - "label": "Extract the real client IP from X-Forwarded-For for rate bucketing. Reads t", - "file_type": "rationale", - "source_file": "backend/app/rate_limit.py", - "source_location": "L53", - "community": 22, - "norm_label": "extract the real client ip from x-forwarded-for for rate bucketing. reads t", - "id": "app_rate_limit_rationale_53" - }, - { - "label": "Composite key function that honours the AUTH_DISABLED bypass. When ``AUTH_D", - "file_type": "rationale", - "source_file": "backend/app/rate_limit.py", - "source_location": "L155", - "community": 22, - "norm_label": "composite key function that honours the auth_disabled bypass. when ``auth_d", - "id": "app_rate_limit_rationale_155" - }, - { - "label": "Parse a slowapi rate-limit detail string into a window size in seconds. slo", - "file_type": "rationale", - "source_file": "backend/app/rate_limit.py", - "source_location": "L180", - "community": 22, - "norm_label": "parse a slowapi rate-limit detail string into a window size in seconds. slo", - "id": "app_rate_limit_rationale_180" - }, - { - "label": "Return a JSON 429 response with a ``Retry-After`` header. Replaces slowapi'", - "file_type": "rationale", - "source_file": "backend/app/rate_limit.py", - "source_location": "L218", - "community": 22, - "norm_label": "return a json 429 response with a ``retry-after`` header. replaces slowapi'", - "id": "app_rate_limit_rationale_218" - }, - { - "label": "configure_telemetry()", - "file_type": "code", - "source_file": "backend/app/telemetry.py", - "source_location": "L28", - "community": 31, - "norm_label": "configure_telemetry()", - "id": "app_telemetry_configure_telemetry" - }, - { - "label": "Application Insights / OpenTelemetry initialisation for the backend. Call ``con", - "file_type": "rationale", - "source_file": "backend/app/telemetry.py", - "source_location": "L1", - "community": 31, - "norm_label": "application insights / opentelemetry initialisation for the backend. call ``con", - "id": "app_telemetry_rationale_1" - }, - { - "label": "Initialise Azure Monitor OpenTelemetry and instrument the app. The ``azure-", - "file_type": "rationale", - "source_file": "backend/app/telemetry.py", - "source_location": "L32", - "community": 31, - "norm_label": "initialise azure monitor opentelemetry and instrument the app. the ``azure-", - "id": "app_telemetry_rationale_32" - }, - { - "label": "attack_day.py", - "file_type": "code", - "source_file": "backend/app/api/attack_day.py", - "source_location": "L1", - "community": 2, - "norm_label": "attack_day.py", - "id": "backend_app_api_attack_day_py" - }, - { - "label": "auth.py", - "file_type": "code", - "source_file": "backend/app/api/auth.py", - "source_location": "L1", - "community": 9, - "norm_label": "auth.py", - "id": "backend_app_api_auth_py" - }, - { - "label": "AuthError", - "file_type": "code", - "source_file": "backend/app/api/auth.py", - "source_location": "L27", - "community": 9, - "norm_label": "autherror", - "id": "api_auth_autherror" - }, - { - "label": "_exchange_code_for_token()", - "file_type": "code", - "source_file": "backend/app/api/auth.py", - "source_location": "L41", - "community": 9, - "norm_label": "_exchange_code_for_token()", - "id": "api_auth_exchange_code_for_token" - }, - { - "label": "_get_discord_user()", - "file_type": "code", - "source_file": "backend/app/api/auth.py", - "source_location": "L59", - "community": 9, - "norm_label": "_get_discord_user()", - "id": "api_auth_get_discord_user" - }, - { - "label": "_check_guild_membership()", - "file_type": "code", - "source_file": "backend/app/api/auth.py", - "source_location": "L70", - "community": 9, - "norm_label": "_check_guild_membership()", - "id": "api_auth_check_guild_membership" - }, - { - "label": "login()", - "file_type": "code", - "source_file": "backend/app/api/auth.py", - "source_location": "L77", - "community": 9, - "norm_label": "login()", - "id": "api_auth_login" - }, - { - "label": "callback()", - "file_type": "code", - "source_file": "backend/app/api/auth.py", - "source_location": "L112", - "community": 9, - "norm_label": "callback()", - "id": "api_auth_callback" - }, - { - "label": "logout()", - "file_type": "code", - "source_file": "backend/app/api/auth.py", - "source_location": "L203", - "community": 9, - "norm_label": "logout()", - "id": "api_auth_logout" - }, - { - "label": "me()", - "file_type": "code", - "source_file": "backend/app/api/auth.py", - "source_location": "L210", - "community": 9, - "norm_label": "me()", - "id": "api_auth_me" - }, - { - "label": "_error_redirect()", - "file_type": "code", - "source_file": "backend/app/api/auth.py", - "source_location": "L222", - "community": 9, - "norm_label": "_error_redirect()", - "id": "api_auth_error_redirect" - }, - { - "label": "Discord OAuth2 authentication endpoints.", - "file_type": "rationale", - "source_file": "backend/app/api/auth.py", - "source_location": "L1", - "community": 9, - "norm_label": "discord oauth2 authentication endpoints.", - "id": "api_auth_rationale_1" - }, - { - "label": "Error codes returned in login redirect query parameters.", - "file_type": "rationale", - "source_file": "backend/app/api/auth.py", - "source_location": "L28", - "community": 9, - "norm_label": "error codes returned in login redirect query parameters.", - "id": "api_auth_rationale_28" - }, - { - "label": "Exchange an authorization code for a Discord access token.", - "file_type": "rationale", - "source_file": "backend/app/api/auth.py", - "source_location": "L42", - "community": 9, - "norm_label": "exchange an authorization code for a discord access token.", - "id": "api_auth_rationale_42" - }, - { - "label": "Fetch the authenticated Discord user's profile (identify scope).", - "file_type": "rationale", - "source_file": "backend/app/api/auth.py", - "source_location": "L60", - "community": 9, - "norm_label": "fetch the authenticated discord user's profile (identify scope).", - "id": "api_auth_rationale_60" - }, - { - "label": "Check guild membership via the bot sidecar. Raises on connection failure.", - "file_type": "rationale", - "source_file": "backend/app/api/auth.py", - "source_location": "L71", - "community": 9, - "norm_label": "check guild membership via the bot sidecar. raises on connection failure.", - "id": "api_auth_rationale_71" - }, - { - "label": "Initiate Discord OAuth2 flow. Generates a CSRF state token, stores it in a", - "file_type": "rationale", - "source_file": "backend/app/api/auth.py", - "source_location": "L78", - "community": 9, - "norm_label": "initiate discord oauth2 flow. generates a csrf state token, stores it in a", - "id": "api_auth_rationale_78" - }, - { - "label": "Handle Discord OAuth2 callback. Validates CSRF state, exchanges the authori", - "file_type": "rationale", - "source_file": "backend/app/api/auth.py", - "source_location": "L118", - "community": 9, - "norm_label": "handle discord oauth2 callback. validates csrf state, exchanges the authori", - "id": "api_auth_rationale_118" - }, - { - "label": "Clear the session cookie, ending the user's session.", - "file_type": "rationale", - "source_file": "backend/app/api/auth.py", - "source_location": "L204", - "community": 9, - "norm_label": "clear the session cookie, ending the user's session.", - "id": "api_auth_rationale_204" - }, - { - "label": "Return identity information for the currently authenticated caller.", - "file_type": "rationale", - "source_file": "backend/app/api/auth.py", - "source_location": "L213", - "community": 9, - "norm_label": "return identity information for the currently authenticated caller.", - "id": "api_auth_rationale_213" - }, - { - "label": "Return a redirect to the login page with an error query parameter.", - "file_type": "rationale", - "source_file": "backend/app/api/auth.py", - "source_location": "L223", - "community": 9, - "norm_label": "return a redirect to the login page with an error query parameter.", - "id": "api_auth_rationale_223" - }, - { - "label": "autofill.py", - "file_type": "code", - "source_file": "backend/app/api/autofill.py", - "source_location": "L1", - "community": 2, - "norm_label": "autofill.py", - "id": "backend_app_api_autofill_py" - }, - { - "label": "board.py", - "file_type": "code", - "source_file": "backend/app/api/board.py", - "source_location": "L1", - "community": 0, - "norm_label": "board.py", - "id": "backend_app_api_board_py" - }, - { - "label": "bulk_update_positions()", - "file_type": "code", - "source_file": "backend/app/api/board.py", - "source_location": "L38", - "community": 34, - "norm_label": "bulk_update_positions()", - "id": "api_board_bulk_update_positions" - }, - { - "label": "buildings.py", - "file_type": "code", - "source_file": "backend/app/api/buildings.py", - "source_location": "L1", - "community": 11, - "norm_label": "buildings.py", - "id": "backend_app_api_buildings_py" - }, - { - "label": "list_buildings()", - "file_type": "code", - "source_file": "backend/app/api/buildings.py", - "source_location": "L18", - "community": 11, - "norm_label": "list_buildings()", - "id": "api_buildings_list_buildings" - }, - { - "label": "add_building()", - "file_type": "code", - "source_file": "backend/app/api/buildings.py", - "source_location": "L26", - "community": 11, - "norm_label": "add_building()", - "id": "api_buildings_add_building" - }, - { - "label": "add_group()", - "file_type": "code", - "source_file": "backend/app/api/buildings.py", - "source_location": "L59", - "community": 0, - "norm_label": "add_group()", - "id": "api_buildings_add_group" - }, - { - "label": "delete_group()", - "file_type": "code", - "source_file": "backend/app/api/buildings.py", - "source_location": "L69", - "community": 11, - "norm_label": "delete_group()", - "id": "api_buildings_delete_group" - }, - { - "label": "changelog.py", - "file_type": "code", - "source_file": "backend/app/api/changelog.py", - "source_location": "L1", - "community": 18, - "norm_label": "changelog.py", - "id": "backend_app_api_changelog_py" - }, - { - "label": "_require_member_session()", - "file_type": "code", - "source_file": "backend/app/api/changelog.py", - "source_location": "L24", - "community": 18, - "norm_label": "_require_member_session()", - "id": "api_changelog_require_member_session" - }, - { - "label": "get_changelog_status()", - "file_type": "code", - "source_file": "backend/app/api/changelog.py", - "source_location": "L43", - "community": 18, - "norm_label": "get_changelog_status()", - "id": "api_changelog_get_changelog_status" - }, - { - "label": "Changelog status and mark-seen endpoints. These endpoints let the frontend trac", - "file_type": "rationale", - "source_file": "backend/app/api/changelog.py", - "source_location": "L1", - "community": 18, - "norm_label": "changelog status and mark-seen endpoints. these endpoints let the frontend trac", - "id": "api_changelog_rationale_1" - }, - { - "label": "Raise HTTP 400 if the caller is a service principal. Args: current_", - "file_type": "rationale", - "source_file": "backend/app/api/changelog.py", - "source_location": "L25", - "community": 18, - "norm_label": "raise http 400 if the caller is a service principal. args: current_", - "id": "api_changelog_rationale_25" - }, - { - "label": "Return the authenticated user's last-seen changelog timestamp. Args:", - "file_type": "rationale", - "source_file": "backend/app/api/changelog.py", - "source_location": "L47", - "community": 18, - "norm_label": "return the authenticated user's last-seen changelog timestamp. args:", - "id": "api_changelog_rationale_47" - }, - { - "label": "Set the authenticated user's last-seen changelog timestamp to now. Idempote", - "file_type": "rationale", - "source_file": "backend/app/api/changelog.py", - "source_location": "L73", - "community": 18, - "norm_label": "set the authenticated user's last-seen changelog timestamp to now. idempote", - "id": "api_changelog_rationale_73" - }, - { - "label": "comparison.py", - "file_type": "code", - "source_file": "backend/app/api/comparison.py", - "source_location": "L1", - "community": 21, - "norm_label": "comparison.py", - "id": "backend_app_api_comparison_py" - }, - { - "label": "compare_with_most_recent()", - "file_type": "code", - "source_file": "backend/app/api/comparison.py", - "source_location": "L14", - "community": 21, - "norm_label": "compare_with_most_recent()", - "id": "api_comparison_compare_with_most_recent" - }, - { - "label": "compare_with_specific()", - "file_type": "code", - "source_file": "backend/app/api/comparison.py", - "source_location": "L31", - "community": 21, - "norm_label": "compare_with_specific()", - "id": "api_comparison_compare_with_specific" - }, - { - "label": "get_config()", - "file_type": "code", - "source_file": "backend/app/api/config.py", - "source_location": "L11", - "community": 28, - "norm_label": "get_config()", - "id": "api_config_get_config" - }, - { - "label": "Public config endpoint \u2014 exposes non-sensitive runtime flags to the frontend.", - "file_type": "rationale", - "source_file": "backend/app/api/config.py", - "source_location": "L1", - "community": 28, - "norm_label": "public config endpoint \u2014 exposes non-sensitive runtime flags to the frontend.", - "id": "api_config_rationale_1" - }, - { - "label": "Return public runtime configuration flags. This endpoint is intentionally u", - "file_type": "rationale", - "source_file": "backend/app/api/config.py", - "source_location": "L12", - "community": 28, - "norm_label": "return public runtime configuration flags. this endpoint is intentionally u", - "id": "api_config_rationale_12" - }, - { - "label": "discord_sync.py", - "file_type": "code", - "source_file": "backend/app/api/discord_sync.py", - "source_location": "L1", - "community": 24, - "norm_label": "discord_sync.py", - "id": "backend_app_api_discord_sync_py" - }, - { - "label": "Endpoints for Discord guild member \u2194 clan member sync.", - "file_type": "rationale", - "source_file": "backend/app/api/discord_sync.py", - "source_location": "L1", - "community": 24, - "norm_label": "endpoints for discord guild member \u2194 clan member sync.", - "id": "api_discord_sync_rationale_1" - }, - { - "label": "Return proposed Discord \u2194 clan member matches without writing to the DB.", - "file_type": "rationale", - "source_file": "backend/app/api/discord_sync.py", - "source_location": "L17", - "community": 24, - "norm_label": "return proposed discord \u2194 clan member matches without writing to the db.", - "id": "api_discord_sync_rationale_17" - }, - { - "label": "Apply accepted sync matches, updating discord_username and discord_id.", - "file_type": "rationale", - "source_file": "backend/app/api/discord_sync.py", - "source_location": "L26", - "community": 24, - "norm_label": "apply accepted sync matches, updating discord_username and discord_id.", - "id": "api_discord_sync_rationale_26" - }, - { - "label": "health.py", - "file_type": "code", - "source_file": "backend/app/api/health.py", - "source_location": "L1", - "community": 6, - "norm_label": "health.py", - "id": "backend_app_api_health_py" - }, - { - "label": "health()", - "file_type": "code", - "source_file": "backend/app/api/health.py", - "source_location": "L11", - "community": 6, - "norm_label": "health()", - "id": "api_health_health" - }, - { - "label": "images.py", - "file_type": "code", - "source_file": "backend/app/api/images.py", - "source_location": "L1", - "community": 0, - "norm_label": "images.py", - "id": "backend_app_api_images_py" - }, - { - "label": "BaseModel", - "file_type": "code", - "source_file": "", - "source_location": "", - "community": 0, - "norm_label": "basemodel", - "id": "basemodel" - }, - { - "label": "generate_images()", - "file_type": "code", - "source_file": "backend/app/api/images.py", - "source_location": "L31", - "community": 0, - "norm_label": "generate_images()", - "id": "api_images_generate_images" - }, - { - "label": "Image generation endpoints.", - "file_type": "rationale", - "source_file": "backend/app/api/images.py", - "source_location": "L1", - "community": 0, - "norm_label": "image generation endpoints.", - "id": "api_images_rationale_1" - }, - { - "label": "Generate PNG images for siege assignments and members list.", - "file_type": "rationale", - "source_file": "backend/app/api/images.py", - "source_location": "L35", - "community": 0, - "norm_label": "generate png images for siege assignments and members list.", - "id": "api_images_rationale_35" - }, - { - "label": "lifecycle.py", - "file_type": "code", - "source_file": "backend/app/api/lifecycle.py", - "source_location": "L1", - "community": 2, - "norm_label": "lifecycle.py", - "id": "backend_app_api_lifecycle_py" - }, - { - "label": "members.py", - "file_type": "code", - "source_file": "backend/app/api/members.py", - "source_location": "L1", - "community": 6, - "norm_label": "members.py", - "id": "backend_app_api_members_py" - }, - { - "label": "list_members()", - "file_type": "code", - "source_file": "backend/app/api/members.py", - "source_location": "L18", - "community": 6, - "norm_label": "list_members()", - "id": "api_members_list_members" - }, - { - "label": "get_member()", - "file_type": "code", - "source_file": "backend/app/api/members.py", - "source_location": "L34", - "community": 6, - "norm_label": "get_member()", - "id": "api_members_get_member" - }, - { - "label": "delete_member()", - "file_type": "code", - "source_file": "backend/app/api/members.py", - "source_location": "L51", - "community": 6, - "norm_label": "delete_member()", - "id": "api_members_delete_member" - }, - { - "label": "notifications.py", - "file_type": "code", - "source_file": "backend/app/api/notifications.py", - "source_location": "L1", - "community": 0, - "norm_label": "notifications.py", - "id": "backend_app_api_notifications_py" - }, - { - "label": "_send_dms()", - "file_type": "code", - "source_file": "backend/app/api/notifications.py", - "source_location": "L64", - "community": 6, - "norm_label": "_send_dms()", - "id": "api_notifications_send_dms" - }, - { - "label": "Notification endpoints \u2014 send DMs and post images to Discord.", - "file_type": "rationale", - "source_file": "backend/app/api/notifications.py", - "source_location": "L1", - "community": 0, - "norm_label": "notification endpoints \u2014 send dms and post images to discord.", - "id": "api_notifications_rationale_1" - }, - { - "label": "Send DMs for each member and record results in a fresh DB session.", - "file_type": "rationale", - "source_file": "backend/app/api/notifications.py", - "source_location": "L65", - "community": 6, - "norm_label": "send dms for each member and record results in a fresh db session.", - "id": "api_notifications_rationale_65" - }, - { - "label": "Send DM notifications to all siege members asynchronously.", - "file_type": "rationale", - "source_file": "backend/app/api/notifications.py", - "source_location": "L142", - "community": 0, - "norm_label": "send dm notifications to all siege members asynchronously.", - "id": "api_notifications_rationale_142" - }, - { - "label": "Get the status and results of a notification batch.", - "file_type": "rationale", - "source_file": "backend/app/api/notifications.py", - "source_location": "L310", - "community": 0, - "norm_label": "get the status and results of a notification batch.", - "id": "api_notifications_rationale_310" - }, - { - "label": "Generate images and post them + a summary message to Discord channels.", - "file_type": "rationale", - "source_file": "backend/app/api/notifications.py", - "source_location": "L371", - "community": 0, - "norm_label": "generate images and post them + a summary message to discord channels.", - "id": "api_notifications_rationale_371" - }, - { - "label": "posts.py", - "file_type": "code", - "source_file": "backend/app/api/posts.py", - "source_location": "L1", - "community": 16, - "norm_label": "posts.py", - "id": "backend_app_api_posts_py" - }, - { - "label": "_serialize_post()", - "file_type": "code", - "source_file": "backend/app/api/posts.py", - "source_location": "L12", - "community": 16, - "norm_label": "_serialize_post()", - "id": "api_posts_serialize_post" - }, - { - "label": "list_posts()", - "file_type": "code", - "source_file": "backend/app/api/posts.py", - "source_location": "L29", - "community": 16, - "norm_label": "list_posts()", - "id": "api_posts_list_posts" - }, - { - "label": "Build a PostResponse-compatible dict, denormalizing building_number from the rel", - "file_type": "rationale", - "source_file": "backend/app/api/posts.py", - "source_location": "L13", - "community": 16, - "norm_label": "build a postresponse-compatible dict, denormalizing building_number from the rel", - "id": "api_posts_rationale_13" - }, - { - "label": "PostPriorityResponse", - "file_type": "code", - "source_file": "backend/app/api/post_priority_config.py", - "source_location": "L12", - "community": 0, - "norm_label": "postpriorityresponse", - "id": "api_post_priority_config_postpriorityresponse" - }, - { - "label": "PostPriorityUpdate", - "file_type": "code", - "source_file": "backend/app/api/post_priority_config.py", - "source_location": "L20", - "community": 0, - "norm_label": "postpriorityupdate", - "id": "api_post_priority_config_postpriorityupdate" - }, - { - "label": "list_post_priorities()", - "file_type": "code", - "source_file": "backend/app/api/post_priority_config.py", - "source_location": "L26", - "community": 0, - "norm_label": "list_post_priorities()", - "id": "api_post_priority_config_list_post_priorities" - }, - { - "label": "post_suggestions.py", - "file_type": "code", - "source_file": "backend/app/api/post_suggestions.py", - "source_location": "L1", - "community": 2, - "norm_label": "post_suggestions.py", - "id": "backend_app_api_post_suggestions_py" - }, - { - "label": "API router for the Suggest Post Assignments feature. Routes: POST /sieges/{", - "file_type": "rationale", - "source_file": "backend/app/api/post_suggestions.py", - "source_location": "L1", - "community": 2, - "norm_label": "api router for the suggest post assignments feature. routes: post /sieges/{", - "id": "api_post_suggestions_rationale_1" - }, - { - "label": "Generate a greedy post-assignment suggestion preview. Args: siege_i", - "file_type": "rationale", - "source_file": "backend/app/api/post_suggestions.py", - "source_location": "L37", - "community": 2, - "norm_label": "generate a greedy post-assignment suggestion preview. args: siege_i", - "id": "api_post_suggestions_rationale_37" - }, - { - "label": "Apply a caller-filtered subset of the stored preview atomically. Uses SELEC", - "file_type": "rationale", - "source_file": "backend/app/api/post_suggestions.py", - "source_location": "L62", - "community": 2, - "norm_label": "apply a caller-filtered subset of the stored preview atomically. uses selec", - "id": "api_post_suggestions_rationale_62" - }, - { - "label": "reference.py", - "file_type": "code", - "source_file": "backend/app/api/reference.py", - "source_location": "L1", - "community": 1, - "norm_label": "reference.py", - "id": "backend_app_api_reference_py" - }, - { - "label": "sieges.py", - "file_type": "code", - "source_file": "backend/app/api/sieges.py", - "source_location": "L1", - "community": 2, - "norm_label": "sieges.py", - "id": "backend_app_api_sieges_py" - }, - { - "label": "list_sieges()", - "file_type": "code", - "source_file": "backend/app/api/sieges.py", - "source_location": "L13", - "community": 2, - "norm_label": "list_sieges()", - "id": "api_sieges_list_sieges" - }, - { - "label": "get_siege()", - "file_type": "code", - "source_file": "backend/app/api/sieges.py", - "source_location": "L40", - "community": 2, - "norm_label": "get_siege()", - "id": "api_sieges_get_siege" - }, - { - "label": "delete_siege()", - "file_type": "code", - "source_file": "backend/app/api/sieges.py", - "source_location": "L65", - "community": 2, - "norm_label": "delete_siege()", - "id": "api_sieges_delete_siege" - }, - { - "label": "SiegeMemberCreate", - "file_type": "code", - "source_file": "backend/app/api/siege_members.py", - "source_location": "L12", - "community": 0, - "norm_label": "siegemembercreate", - "id": "api_siege_members_siegemembercreate" - }, - { - "label": "list_siege_members()", - "file_type": "code", - "source_file": "backend/app/api/siege_members.py", - "source_location": "L28", - "community": 1, - "norm_label": "list_siege_members()", - "id": "api_siege_members_list_siege_members" - }, - { - "label": "validation.py", - "file_type": "code", - "source_file": "backend/app/api/validation.py", - "source_location": "L1", - "community": 2, - "norm_label": "validation.py", - "id": "backend_app_api_validation_py" - }, - { - "label": "_read_backend_version()", - "file_type": "code", - "source_file": "backend/app/api/version.py", - "source_location": "L19", - "community": 12, - "norm_label": "_read_backend_version()", - "id": "api_version_read_backend_version" - }, - { - "label": "_fetch_bot_version()", - "file_type": "code", - "source_file": "backend/app/api/version.py", - "source_location": "L42", - "community": 12, - "norm_label": "_fetch_bot_version()", - "id": "api_version_fetch_bot_version" - }, - { - "label": "Return a version string for the backend. When both BUILD_NUMBER and GIT_SHA", - "file_type": "rationale", - "source_file": "backend/app/api/version.py", - "source_location": "L20", - "community": 12, - "norm_label": "return a version string for the backend. when both build_number and git_sha", - "id": "api_version_rationale_20" - }, - { - "label": "Call the bot sidecar's /version endpoint. Returns None if unreachable.", - "file_type": "rationale", - "source_file": "backend/app/api/version.py", - "source_location": "L43", - "community": 12, - "norm_label": "call the bot sidecar's /version endpoint. returns none if unreachable.", - "id": "api_version_rationale_43" - }, - { - "label": "Return version information for all components.", - "file_type": "rationale", - "source_file": "backend/app/api/version.py", - "source_location": "L57", - "community": 12, - "norm_label": "return version information for all components.", - "id": "api_version_rationale_57" - }, - { - "label": "base.py", - "file_type": "code", - "source_file": "backend/app/db/base.py", - "source_location": "L1", - "community": 0, - "norm_label": "base.py", - "id": "backend_app_db_base_py" - }, - { - "label": "DeclarativeBase", - "file_type": "code", - "source_file": "", - "source_location": "", - "community": 0, - "norm_label": "declarativebase", - "id": "declarativebase" - }, - { - "label": "seeds.py", - "file_type": "code", - "source_file": "backend/app/db/seeds.py", - "source_location": "L1", - "community": 7, - "norm_label": "seeds.py", - "id": "backend_app_db_seeds_py" - }, - { - "label": "seed_post_conditions()", - "file_type": "code", - "source_file": "backend/app/db/seeds.py", - "source_location": "L7", - "community": 7, - "norm_label": "seed_post_conditions()", - "id": "db_seeds_seed_post_conditions" - }, - { - "label": "seed_building_type_config()", - "file_type": "code", - "source_file": "backend/app/db/seeds.py", - "source_location": "L63", - "community": 7, - "norm_label": "seed_building_type_config()", - "id": "db_seeds_seed_building_type_config" - }, - { - "label": "seed_post_priority_config()", - "file_type": "code", - "source_file": "backend/app/db/seeds.py", - "source_location": "L91", - "community": 7, - "norm_label": "seed_post_priority_config()", - "id": "db_seeds_seed_post_priority_config" - }, - { - "label": "Seed functions for reference/static data tables.", - "file_type": "rationale", - "source_file": "backend/app/db/seeds.py", - "source_location": "L1", - "community": 7, - "norm_label": "seed functions for reference/static data tables.", - "id": "db_seeds_rationale_1" - }, - { - "label": "Insert all 36 PostCondition rows. Safe to re-run (ON CONFLICT DO NOTHING).", - "file_type": "rationale", - "source_file": "backend/app/db/seeds.py", - "source_location": "L8", - "community": 7, - "norm_label": "insert all 36 postcondition rows. safe to re-run (on conflict do nothing).", - "id": "db_seeds_rationale_8" - }, - { - "label": "Insert all 5 BuildingTypeConfig rows. Safe to re-run (ON CONFLICT DO NOTHING).", - "file_type": "rationale", - "source_file": "backend/app/db/seeds.py", - "source_location": "L64", - "community": 7, - "norm_label": "insert all 5 buildingtypeconfig rows. safe to re-run (on conflict do nothing).", - "id": "db_seeds_rationale_64" - }, - { - "label": "Insert all 18 PostPriorityConfig rows with default priority=2. Safe to re-r", - "file_type": "rationale", - "source_file": "backend/app/db/seeds.py", - "source_location": "L92", - "community": 7, - "norm_label": "insert all 18 postpriorityconfig rows with default priority=2. safe to re-r", - "id": "db_seeds_rationale_92" - }, - { - "label": "session.py", - "file_type": "code", - "source_file": "backend/app/db/session.py", - "source_location": "L1", - "community": 35, - "norm_label": "session.py", - "id": "backend_app_db_session_py" - }, - { - "label": "get_db()", - "file_type": "code", - "source_file": "backend/app/db/session.py", - "source_location": "L12", - "community": 35, - "norm_label": "get_db()", - "id": "db_session_get_db" - }, - { - "label": "AuthenticatedUser", - "file_type": "code", - "source_file": "backend/app/dependencies/auth.py", - "source_location": "L23", - "community": 9, - "norm_label": "authenticateduser", - "id": "dependencies_auth_authenticateduser" - }, - { - "label": "get_current_user()", - "file_type": "code", - "source_file": "backend/app/dependencies/auth.py", - "source_location": "L33", - "community": 9, - "norm_label": "get_current_user()", - "id": "dependencies_auth_get_current_user" - }, - { - "label": "FastAPI dependency for request authentication. Checks three paths in order: 1.", - "file_type": "rationale", - "source_file": "backend/app/dependencies/auth.py", - "source_location": "L1", - "community": 9, - "norm_label": "fastapi dependency for request authentication. checks three paths in order: 1.", - "id": "dependencies_auth_rationale_1" - }, - { - "label": "Represents the currently authenticated user or service principal.", - "file_type": "rationale", - "source_file": "backend/app/dependencies/auth.py", - "source_location": "L24", - "community": 9, - "norm_label": "represents the currently authenticated user or service principal.", - "id": "dependencies_auth_rationale_24" - }, - { - "label": "Resolve the caller's identity from the incoming request. Tries three mechan", - "file_type": "rationale", - "source_file": "backend/app/dependencies/auth.py", - "source_location": "L37", - "community": 9, - "norm_label": "resolve the caller's identity from the incoming request. tries three mechan", - "id": "dependencies_auth_rationale_37" - }, - { - "label": "Base", - "file_type": "code", - "source_file": "", - "source_location": "", - "community": 0, - "norm_label": "base", - "id": "base" - }, - { - "label": "BuildingGroup", - "file_type": "code", - "source_file": "backend/app/models/building_group.py", - "source_location": "L13", - "community": 0, - "norm_label": "buildinggroup", - "id": "models_building_group_buildinggroup" - }, - { - "label": "building_type_config.py", - "file_type": "code", - "source_file": "backend/app/models/building_type_config.py", - "source_location": "L1", - "community": 0, - "norm_label": "building_type_config.py", - "id": "backend_app_models_building_type_config_py" - }, - { - "label": "enums.py", - "file_type": "code", - "source_file": "backend/app/models/enums.py", - "source_location": "L1", - "community": 0, - "norm_label": "enums.py", - "id": "backend_app_models_enums_py" - }, - { - "label": "PowerLevel", - "file_type": "code", - "source_file": "backend/app/models/enums.py", - "source_location": "L25", - "community": 0, - "norm_label": "powerlevel", - "id": "models_enums_powerlevel" - }, - { - "label": "NotificationBatchStatus", - "file_type": "code", - "source_file": "backend/app/models/enums.py", - "source_location": "L33", - "community": 0, - "norm_label": "notificationbatchstatus", - "id": "models_enums_notificationbatchstatus" - }, - { - "label": "member.py", - "file_type": "code", - "source_file": "backend/app/models/member.py", - "source_location": "L1", - "community": 0, - "norm_label": "member.py", - "id": "backend_app_models_member_py" - }, - { - "label": "member_post_preference.py", - "file_type": "code", - "source_file": "backend/app/models/member_post_preference.py", - "source_location": "L1", - "community": 38, - "norm_label": "member_post_preference.py", - "id": "backend_app_models_member_post_preference_py" - }, - { - "label": "notification_batch_result.py", - "file_type": "code", - "source_file": "backend/app/models/notification_batch_result.py", - "source_location": "L1", - "community": 0, - "norm_label": "notification_batch_result.py", - "id": "backend_app_models_notification_batch_result_py" - }, - { - "label": "position.py", - "file_type": "code", - "source_file": "backend/app/models/position.py", - "source_location": "L1", - "community": 0, - "norm_label": "position.py", - "id": "backend_app_models_position_py" - }, - { - "label": "Position", - "file_type": "code", - "source_file": "backend/app/models/position.py", - "source_location": "L14", - "community": 0, - "norm_label": "position", - "id": "models_position_position" - }, - { - "label": "post.py", - "file_type": "code", - "source_file": "backend/app/models/post.py", - "source_location": "L1", - "community": 0, - "norm_label": "post.py", - "id": "backend_app_models_post_py" - }, - { - "label": "post_active_condition.py", - "file_type": "code", - "source_file": "backend/app/models/post_active_condition.py", - "source_location": "L1", - "community": 39, - "norm_label": "post_active_condition.py", - "id": "backend_app_models_post_active_condition_py" - }, - { - "label": "siege.py", - "file_type": "code", - "source_file": "backend/app/models/siege.py", - "source_location": "L1", - "community": 0, - "norm_label": "siege.py", - "id": "backend_app_models_siege_py" - }, - { - "label": "PositionBoardResponse", - "file_type": "code", - "source_file": "backend/app/schemas/board.py", - "source_location": "L6", - "community": 0, - "norm_label": "positionboardresponse", - "id": "schemas_board_positionboardresponse" - }, - { - "label": "GroupBoardResponse", - "file_type": "code", - "source_file": "backend/app/schemas/board.py", - "source_location": "L17", - "community": 0, - "norm_label": "groupboardresponse", - "id": "schemas_board_groupboardresponse" - }, - { - "label": "BuildingBoardResponse", - "file_type": "code", - "source_file": "backend/app/schemas/board.py", - "source_location": "L25", - "community": 0, - "norm_label": "buildingboardresponse", - "id": "schemas_board_buildingboardresponse" - }, - { - "label": "PositionUpdate", - "file_type": "code", - "source_file": "backend/app/schemas/board.py", - "source_location": "L40", - "community": 0, - "norm_label": "positionupdate", - "id": "schemas_board_positionupdate" - }, - { - "label": "BulkPositionUpdate", - "file_type": "code", - "source_file": "backend/app/schemas/board.py", - "source_location": "L47", - "community": 0, - "norm_label": "bulkpositionupdate", - "id": "schemas_board_bulkpositionupdate" - }, - { - "label": "BuildingCreate", - "file_type": "code", - "source_file": "backend/app/schemas/building.py", - "source_location": "L6", - "community": 0, - "norm_label": "buildingcreate", - "id": "schemas_building_buildingcreate" - }, - { - "label": "BuildingUpdate", - "file_type": "code", - "source_file": "backend/app/schemas/building.py", - "source_location": "L12", - "community": 0, - "norm_label": "buildingupdate", - "id": "schemas_building_buildingupdate" - }, - { - "label": "GroupCreate", - "file_type": "code", - "source_file": "backend/app/schemas/building.py", - "source_location": "L43", - "community": 0, - "norm_label": "groupcreate", - "id": "schemas_building_groupcreate" - }, - { - "label": "ChangelogStatusResponse", - "file_type": "code", - "source_file": "backend/app/schemas/changelog.py", - "source_location": "L8", - "community": 18, - "norm_label": "changelogstatusresponse", - "id": "schemas_changelog_changelogstatusresponse" - }, - { - "label": "Response schemas for the changelog endpoints.", - "file_type": "rationale", - "source_file": "backend/app/schemas/changelog.py", - "source_location": "L1", - "community": 18, - "norm_label": "response schemas for the changelog endpoints.", - "id": "schemas_changelog_rationale_1" - }, - { - "label": "Response shape for both GET /changelog/status and POST /changelog/mark-seen.", - "file_type": "rationale", - "source_file": "backend/app/schemas/changelog.py", - "source_location": "L9", - "community": 18, - "norm_label": "response shape for both get /changelog/status and post /changelog/mark-seen.", - "id": "schemas_changelog_rationale_9" - }, - { - "label": "common.py", - "file_type": "code", - "source_file": "backend/app/schemas/common.py", - "source_location": "L1", - "community": 0, - "norm_label": "common.py", - "id": "backend_app_schemas_common_py" - }, - { - "label": "ErrorResponse", - "file_type": "code", - "source_file": "backend/app/schemas/common.py", - "source_location": "L4", - "community": 0, - "norm_label": "errorresponse", - "id": "schemas_common_errorresponse" - }, - { - "label": "MemberBase", - "file_type": "code", - "source_file": "backend/app/schemas/member.py", - "source_location": "L8", - "community": 0, - "norm_label": "memberbase", - "id": "schemas_member_memberbase" - }, - { - "label": "MemberCreate", - "file_type": "code", - "source_file": "backend/app/schemas/member.py", - "source_location": "L15", - "community": 0, - "norm_label": "membercreate", - "id": "schemas_member_membercreate" - }, - { - "label": "MemberUpdate", - "file_type": "code", - "source_file": "backend/app/schemas/member.py", - "source_location": "L19", - "community": 0, - "norm_label": "memberupdate", - "id": "schemas_member_memberupdate" - }, - { - "label": "MemberResponse", - "file_type": "code", - "source_file": "backend/app/schemas/member.py", - "source_location": "L27", - "community": 0, - "norm_label": "memberresponse", - "id": "schemas_member_memberresponse" - }, - { - "label": "MemberPreferencesUpdate", - "file_type": "code", - "source_file": "backend/app/schemas/member.py", - "source_location": "L35", - "community": 0, - "norm_label": "memberpreferencesupdate", - "id": "schemas_member_memberpreferencesupdate" - }, - { - "label": "SyncApply", - "file_type": "code", - "source_file": "backend/app/schemas/member.py", - "source_location": "L59", - "community": 0, - "norm_label": "syncapply", - "id": "schemas_member_syncapply" - }, - { - "label": "SyncApplyResponse", - "file_type": "code", - "source_file": "backend/app/schemas/member.py", - "source_location": "L65", - "community": 0, - "norm_label": "syncapplyresponse", - "id": "schemas_member_syncapplyresponse" - }, - { - "label": "PostResponse", - "file_type": "code", - "source_file": "backend/app/schemas/post.py", - "source_location": "L6", - "community": 0, - "norm_label": "postresponse", - "id": "schemas_post_postresponse" - }, - { - "label": "PostUpdate", - "file_type": "code", - "source_file": "backend/app/schemas/post.py", - "source_location": "L17", - "community": 0, - "norm_label": "postupdate", - "id": "schemas_post_postupdate" - }, - { - "label": "PostConditionsUpdate", - "file_type": "code", - "source_file": "backend/app/schemas/post.py", - "source_location": "L22", - "community": 0, - "norm_label": "postconditionsupdate", - "id": "schemas_post_postconditionsupdate" - }, - { - "label": "PostConditionResponse", - "file_type": "code", - "source_file": "backend/app/schemas/post_condition.py", - "source_location": "L4", - "community": 0, - "norm_label": "postconditionresponse", - "id": "schemas_post_condition_postconditionresponse" - }, - { - "label": "PostSuggestionApplyRequest", - "file_type": "code", - "source_file": "backend/app/schemas/post_suggestions.py", - "source_location": "L79", - "community": 2, - "norm_label": "postsuggestionapplyrequest", - "id": "schemas_post_suggestions_postsuggestionapplyrequest" - }, - { - "label": "StaleEntry", - "file_type": "code", - "source_file": "backend/app/schemas/post_suggestions.py", - "source_location": "L91", - "community": 2, - "norm_label": "staleentry", - "id": "schemas_post_suggestions_staleentry" - }, - { - "label": "Pydantic schemas for the Suggest Post Assignments feature. These schemas define", - "file_type": "rationale", - "source_file": "backend/app/schemas/post_suggestions.py", - "source_location": "L1", - "community": 2, - "norm_label": "pydantic schemas for the suggest post assignments feature. these schemas define", - "id": "schemas_post_suggestions_rationale_1" - }, - { - "label": "A single post assignment suggestion produced by the greedy algorithm. Attri", - "file_type": "rationale", - "source_file": "backend/app/schemas/post_suggestions.py", - "source_location": "L13", - "community": 4, - "norm_label": "a single post assignment suggestion produced by the greedy algorithm. attri", - "id": "schemas_post_suggestions_rationale_13" - }, - { - "label": "The full preview result returned by POST /post-suggestions. Attributes:", - "file_type": "rationale", - "source_file": "backend/app/schemas/post_suggestions.py", - "source_location": "L66", - "community": 2, - "norm_label": "the full preview result returned by post /post-suggestions. attributes:", - "id": "schemas_post_suggestions_rationale_66" - }, - { - "label": "Request body for POST /post-suggestions/apply. Attributes: apply_po", - "file_type": "rationale", - "source_file": "backend/app/schemas/post_suggestions.py", - "source_location": "L80", - "community": 2, - "norm_label": "request body for post /post-suggestions/apply. attributes: apply_po", - "id": "schemas_post_suggestions_rationale_80" - }, - { - "label": "A single stale-state violation detected during apply revalidation. Attribut", - "file_type": "rationale", - "source_file": "backend/app/schemas/post_suggestions.py", - "source_location": "L92", - "community": 2, - "norm_label": "a single stale-state violation detected during apply revalidation. attribut", - "id": "schemas_post_suggestions_rationale_92" - }, - { - "label": "Response body for a successful POST /post-suggestions/apply. Attributes:", - "file_type": "rationale", - "source_file": "backend/app/schemas/post_suggestions.py", - "source_location": "L117", - "community": 2, - "norm_label": "response body for a successful post /post-suggestions/apply. attributes:", - "id": "schemas_post_suggestions_rationale_117" - }, - { - "label": "SiegeCreate", - "file_type": "code", - "source_file": "backend/app/schemas/siege.py", - "source_location": "L8", - "community": 0, - "norm_label": "siegecreate", - "id": "schemas_siege_siegecreate" - }, - { - "label": "SiegeUpdate", - "file_type": "code", - "source_file": "backend/app/schemas/siege.py", - "source_location": "L12", - "community": 0, - "norm_label": "siegeupdate", - "id": "schemas_siege_siegeupdate" - }, - { - "label": "SiegeResponse", - "file_type": "code", - "source_file": "backend/app/schemas/siege.py", - "source_location": "L16", - "community": 0, - "norm_label": "siegeresponse", - "id": "schemas_siege_siegeresponse" - }, - { - "label": "SiegeMemberResponse", - "file_type": "code", - "source_file": "backend/app/schemas/siege_member.py", - "source_location": "L6", - "community": 0, - "norm_label": "siegememberresponse", - "id": "schemas_siege_member_siegememberresponse" - }, - { - "label": "resolve_member_fields()", - "file_type": "code", - "source_file": "backend/app/schemas/siege_member.py", - "source_location": "L19", - "community": 1, - "norm_label": "resolve_member_fields()", - "id": "schemas_siege_member_resolve_member_fields" - }, - { - "label": "SiegeMemberUpdate", - "file_type": "code", - "source_file": "backend/app/schemas/siege_member.py", - "source_location": "L27", - "community": 0, - "norm_label": "siegememberupdate", - "id": "schemas_siege_member_siegememberupdate" - }, - { - "label": "VersionResponse", - "file_type": "code", - "source_file": "backend/app/schemas/version.py", - "source_location": "L4", - "community": 12, - "norm_label": "versionresponse", - "id": "schemas_version_versionresponse" - }, - { - "label": "_build_preview()", - "file_type": "code", - "source_file": "backend/app/services/attack_day.py", - "source_location": "L114", - "community": 2, - "norm_label": "_build_preview()", - "id": "services_attack_day_build_preview" - }, - { - "label": "_now_utc()", - "file_type": "code", - "source_file": "backend/app/services/autofill.py", - "source_location": "L23", - "community": 2, - "norm_label": "_now_utc()", - "id": "services_autofill_now_utc" - }, - { - "label": "_get_siege_for_position()", - "file_type": "code", - "source_file": "backend/app/services/board.py", - "source_location": "L89", - "community": 0, - "norm_label": "_get_siege_for_position()", - "id": "services_board_get_siege_for_position" - }, - { - "label": "_validate_position_state()", - "file_type": "code", - "source_file": "backend/app/services/board.py", - "source_location": "L97", - "community": 34, - "norm_label": "_validate_position_state()", - "id": "services_board_validate_position_state" - }, - { - "label": "_validate_member_active()", - "file_type": "code", - "source_file": "backend/app/services/board.py", - "source_location": "L112", - "community": 16, - "norm_label": "_validate_member_active()", - "id": "services_board_validate_member_active" - }, - { - "label": "Return the full nested board structure for a siege. Raises 404 if the siege", - "file_type": "rationale", - "source_file": "backend/app/services/board.py", - "source_location": "L16", - "community": 0, - "norm_label": "return the full nested board structure for a siege. raises 404 if the siege", - "id": "services_board_rationale_16" - }, - { - "label": "Validate the logical consistency of position flag combinations.", - "file_type": "rationale", - "source_file": "backend/app/services/board.py", - "source_location": "L98", - "community": 34, - "norm_label": "validate the logical consistency of position flag combinations.", - "id": "services_board_rationale_98" - }, - { - "label": "Update a single position's assignment. Raises: 404 if position not", - "file_type": "rationale", - "source_file": "backend/app/services/board.py", - "source_location": "L123", - "community": 16, - "norm_label": "update a single position's assignment. raises: 404 if position not", - "id": "services_board_rationale_123" - }, - { - "label": "Apply multiple position updates in a single transaction. Each update dict m", - "file_type": "rationale", - "source_file": "backend/app/services/board.py", - "source_location": "L172", - "community": 34, - "norm_label": "apply multiple position updates in a single transaction. each update dict m", - "id": "services_board_rationale_172" - }, - { - "label": "BotClient", - "file_type": "code", - "source_file": "backend/app/services/bot_client.py", - "source_location": "L8", - "community": 6, - "norm_label": "botclient", - "id": "services_bot_client_botclient" - }, - { - "label": "._make_client()", - "file_type": "code", - "source_file": "backend/app/services/bot_client.py", - "source_location": "L11", - "community": 6, - "norm_label": "._make_client()", - "id": "services_bot_client_botclient_make_client" - }, - { - "label": "HTTP client for the Discord bot sidecar API.", - "file_type": "rationale", - "source_file": "backend/app/services/bot_client.py", - "source_location": "L1", - "community": 6, - "norm_label": "http client for the discord bot sidecar api.", - "id": "services_bot_client_rationale_1" - }, - { - "label": "Send DM via bot. Returns True on success, False on error.", - "file_type": "rationale", - "source_file": "backend/app/services/bot_client.py", - "source_location": "L19", - "community": 6, - "norm_label": "send dm via bot. returns true on success, false on error.", - "id": "services_bot_client_rationale_19" - }, - { - "label": "Post text to channel. Returns True on success, False on error.", - "file_type": "rationale", - "source_file": "backend/app/services/bot_client.py", - "source_location": "L32", - "community": 6, - "norm_label": "post text to channel. returns true on success, false on error.", - "id": "services_bot_client_rationale_32" - }, - { - "label": "Post image to channel. Returns the CDN URL on success, None on error.", - "file_type": "rationale", - "source_file": "backend/app/services/bot_client.py", - "source_location": "L45", - "community": 6, - "norm_label": "post image to channel. returns the cdn url on success, none on error.", - "id": "services_bot_client_rationale_45" - }, - { - "label": "Check guild membership via bot sidecar. Returns the member dict (includi", - "file_type": "rationale", - "source_file": "backend/app/services/bot_client.py", - "source_location": "L72", - "community": 6, - "norm_label": "check guild membership via bot sidecar. returns the member dict (includi", - "id": "services_bot_client_rationale_72" - }, - { - "label": "_rebuild_groups_for_level()", - "file_type": "code", - "source_file": "backend/app/services/buildings.py", - "source_location": "L17", - "community": 11, - "norm_label": "_rebuild_groups_for_level()", - "id": "services_buildings_rebuild_groups_for_level" - }, - { - "label": "_get_building_type_config()", - "file_type": "code", - "source_file": "backend/app/services/buildings.py", - "source_location": "L114", - "community": 11, - "norm_label": "_get_building_type_config()", - "id": "services_buildings_get_building_type_config" - }, - { - "label": "_require_planning_or_not_locked()", - "file_type": "code", - "source_file": "backend/app/services/buildings.py", - "source_location": "L141", - "community": 11, - "norm_label": "_require_planning_or_not_locked()", - "id": "services_buildings_require_planning_or_not_locked" - }, - { - "label": "_create_groups_and_positions()", - "file_type": "code", - "source_file": "backend/app/services/buildings.py", - "source_location": "L150", - "community": 11, - "norm_label": "_create_groups_and_positions()", - "id": "services_buildings_create_groups_and_positions" - }, - { - "label": "Rebuild groups and positions so they match the level-appropriate configuration.", - "file_type": "rationale", - "source_file": "backend/app/services/buildings.py", - "source_location": "L23", - "community": 11, - "norm_label": "rebuild groups and positions so they match the level-appropriate configuration.", - "id": "services_buildings_rationale_23" - }, - { - "label": "Raise 400 if the siege is locked for layout changes.", - "file_type": "rationale", - "source_file": "backend/app/services/buildings.py", - "source_location": "L142", - "community": 11, - "norm_label": "raise 400 if the siege is locked for layout changes.", - "id": "services_buildings_rationale_142" - }, - { - "label": "Auto-create BuildingGroups and Positions from config.", - "file_type": "rationale", - "source_file": "backend/app/services/buildings.py", - "source_location": "L156", - "community": 11, - "norm_label": "auto-create buildinggroups and positions from config.", - "id": "services_buildings_rationale_156" - }, - { - "label": "building_capacity.py", - "file_type": "code", - "source_file": "backend/app/services/building_capacity.py", - "source_location": "L1", - "community": 11, - "norm_label": "building_capacity.py", - "id": "backend_app_services_building_capacity_py" - }, - { - "label": "get_team_count()", - "file_type": "code", - "source_file": "backend/app/services/building_capacity.py", - "source_location": "L13", - "community": 11, - "norm_label": "get_team_count()", - "id": "services_building_capacity_get_team_count" - }, - { - "label": "Return the theoretical total team slots for a building type at a given level.", - "file_type": "rationale", - "source_file": "backend/app/services/building_capacity.py", - "source_location": "L14", - "community": 11, - "norm_label": "return the theoretical total team slots for a building type at a given level.", - "id": "services_building_capacity_rationale_14" - }, - { - "label": "_load_assignments()", - "file_type": "code", - "source_file": "backend/app/services/comparison.py", - "source_location": "L13", - "community": 21, - "norm_label": "_load_assignments()", - "id": "services_comparison_load_assignments" - }, - { - "label": "_load_member_names()", - "file_type": "code", - "source_file": "backend/app/services/comparison.py", - "source_location": "L45", - "community": 21, - "norm_label": "_load_member_names()", - "id": "services_comparison_load_member_names" - }, - { - "label": "get_most_recent_completed()", - "file_type": "code", - "source_file": "backend/app/services/comparison.py", - "source_location": "L52", - "community": 21, - "norm_label": "get_most_recent_completed()", - "id": "services_comparison_get_most_recent_completed" - }, - { - "label": "Return {member_id: [PositionKey, ...]} for non-reserve, non-disabled assigned po", - "file_type": "rationale", - "source_file": "backend/app/services/comparison.py", - "source_location": "L14", - "community": 21, - "norm_label": "return {member_id: [positionkey, ...]} for non-reserve, non-disabled assigned po", - "id": "services_comparison_rationale_14" - }, - { - "label": "Service logic for Discord guild member \u2192 clan member matching.", - "file_type": "rationale", - "source_file": "backend/app/services/discord_sync.py", - "source_location": "L1", - "community": 24, - "norm_label": "service logic for discord guild member \u2192 clan member matching.", - "id": "services_discord_sync_rationale_1" - }, - { - "label": "Return proposed matches between Discord guild members and clan members. Mat", - "file_type": "rationale", - "source_file": "backend/app/services/discord_sync.py", - "source_location": "L12", - "community": 24, - "norm_label": "return proposed matches between discord guild members and clan members. mat", - "id": "services_discord_sync_rationale_12" - }, - { - "label": "Apply accepted sync matches, writing discord_username and discord_id. Unkno", - "file_type": "rationale", - "source_file": "backend/app/services/discord_sync.py", - "source_location": "L153", - "community": 24, - "norm_label": "apply accepted sync matches, writing discord_username and discord_id. unkno", - "id": "services_discord_sync_rationale_153" - }, - { - "label": "image_gen.py", - "file_type": "code", - "source_file": "backend/app/services/image_gen.py", - "source_location": "L1", - "community": 17, - "norm_label": "image_gen.py", - "id": "backend_app_services_image_gen_py" - }, - { - "label": "SiegeMemberWithName", - "file_type": "code", - "source_file": "backend/app/services/image_gen.py", - "source_location": "L14", - "community": 0, - "norm_label": "siegememberwithname", - "id": "services_image_gen_siegememberwithname" - }, - { - "label": "_build_assignments_html()", - "file_type": "code", - "source_file": "backend/app/services/image_gen.py", - "source_location": "L61", - "community": 17, - "norm_label": "_build_assignments_html()", - "id": "services_image_gen_build_assignments_html" - }, - { - "label": "_build_reserves_html()", - "file_type": "code", - "source_file": "backend/app/services/image_gen.py", - "source_location": "L233", - "community": 17, - "norm_label": "_build_reserves_html()", - "id": "services_image_gen_build_reserves_html" - }, - { - "label": "_render_html_to_png()", - "file_type": "code", - "source_file": "backend/app/services/image_gen.py", - "source_location": "L331", - "community": 17, - "norm_label": "_render_html_to_png()", - "id": "services_image_gen_render_html_to_png" - }, - { - "label": "generate_assignments_image()", - "file_type": "code", - "source_file": "backend/app/services/image_gen.py", - "source_location": "L350", - "community": 17, - "norm_label": "generate_assignments_image()", - "id": "services_image_gen_generate_assignments_image" - }, - { - "label": "generate_reserves_image()", - "file_type": "code", - "source_file": "backend/app/services/image_gen.py", - "source_location": "L360", - "community": 17, - "norm_label": "generate_reserves_image()", - "id": "services_image_gen_generate_reserves_image" - }, - { - "label": "Image generation service \u2014 renders HTML/CSS to PNG via Playwright.", - "file_type": "rationale", - "source_file": "backend/app/services/image_gen.py", - "source_location": "L1", - "community": 17, - "norm_label": "image generation service \u2014 renders html/css to png via playwright.", - "id": "services_image_gen_rationale_1" - }, - { - "label": "Build the full assignments board HTML string. Args: board: Validate", - "file_type": "rationale", - "source_file": "backend/app/services/image_gen.py", - "source_location": "L66", - "community": 17, - "norm_label": "build the full assignments board html string. args: board: validate", - "id": "services_image_gen_rationale_66" - }, - { - "label": "Build the reserves/members list HTML string. Args: members: Siege m", - "file_type": "rationale", - "source_file": "backend/app/services/image_gen.py", - "source_location": "L237", - "community": 17, - "norm_label": "build the reserves/members list html string. args: members: siege m", - "id": "services_image_gen_rationale_237" - }, - { - "label": "Render an HTML string to PNG bytes using headless Chromium.", - "file_type": "rationale", - "source_file": "backend/app/services/image_gen.py", - "source_location": "L332", - "community": 17, - "norm_label": "render an html string to png bytes using headless chromium.", - "id": "services_image_gen_rationale_332" - }, - { - "label": "Render the assignments board as a PNG. Returns raw PNG bytes.", - "file_type": "rationale", - "source_file": "backend/app/services/image_gen.py", - "source_location": "L355", - "community": 17, - "norm_label": "render the assignments board as a png. returns raw png bytes.", - "id": "services_image_gen_rationale_355" - }, - { - "label": "Render the members/reserves list as a PNG. Returns raw PNG bytes.", - "file_type": "rationale", - "source_file": "backend/app/services/image_gen.py", - "source_location": "L364", - "community": 17, - "norm_label": "render the members/reserves list as a png. returns raw png bytes.", - "id": "services_image_gen_rationale_364" - }, - { - "label": "Transition a planning siege to active status. Raises: 404 if siege", - "file_type": "rationale", - "source_file": "backend/app/services/lifecycle.py", - "source_location": "L18", - "community": 2, - "norm_label": "transition a planning siege to active status. raises: 404 if siege", - "id": "services_lifecycle_rationale_18" - }, - { - "label": "Transition an active siege to complete status. Raises: 404 if siege", - "file_type": "rationale", - "source_file": "backend/app/services/lifecycle.py", - "source_location": "L62", - "community": 2, - "norm_label": "transition an active siege to complete status. raises: 404 if siege", - "id": "services_lifecycle_rationale_62" - }, - { - "label": "Transition a completed siege back to planning status. Raises: 404 i", - "file_type": "rationale", - "source_file": "backend/app/services/lifecycle.py", - "source_location": "L86", - "community": 2, - "norm_label": "transition a completed siege back to planning status. raises: 404 i", - "id": "services_lifecycle_rationale_86" - }, - { - "label": "Deep-copy a siege into a new planning siege. Rules: - New siege: same d", - "file_type": "rationale", - "source_file": "backend/app/services/lifecycle.py", - "source_location": "L110", - "community": 0, - "norm_label": "deep-copy a siege into a new planning siege. rules: - new siege: same d", - "id": "services_lifecycle_rationale_110" - }, - { - "label": "deactivate_member()", - "file_type": "code", - "source_file": "backend/app/services/members.py", - "source_location": "L81", - "community": 6, - "norm_label": "deactivate_member()", - "id": "services_members_deactivate_member" - }, - { - "label": "notification_message.py", - "file_type": "code", - "source_file": "backend/app/services/notification_message.py", - "source_location": "L1", - "community": 15, - "norm_label": "notification_message.py", - "id": "backend_app_services_notification_message_py" - }, - { - "label": "PositionInfo", - "file_type": "code", - "source_file": "backend/app/services/notification_message.py", - "source_location": "L60", - "community": 0, - "norm_label": "positioninfo", - "id": "services_notification_message_positioninfo" - }, - { - "label": "_position_sort_key()", - "file_type": "code", - "source_file": "backend/app/services/notification_message.py", - "source_location": "L74", - "community": 15, - "norm_label": "_position_sort_key()", - "id": "services_notification_message_position_sort_key" - }, - { - "label": "_position_label()", - "file_type": "code", - "source_file": "backend/app/services/notification_message.py", - "source_location": "L84", - "community": 15, - "norm_label": "_position_label()", - "id": "services_notification_message_position_label" - }, - { - "label": "_positions_to_key_set()", - "file_type": "code", - "source_file": "backend/app/services/notification_message.py", - "source_location": "L110", - "community": 15, - "norm_label": "_positions_to_key_set()", - "id": "services_notification_message_positions_to_key_set" - }, - { - "label": "_positions_from_keys()", - "file_type": "code", - "source_file": "backend/app/services/notification_message.py", - "source_location": "L117", - "community": 15, - "norm_label": "_positions_from_keys()", - "id": "services_notification_message_positions_from_keys" - }, - { - "label": "_build_section()", - "file_type": "code", - "source_file": "backend/app/services/notification_message.py", - "source_location": "L126", - "community": 15, - "norm_label": "_build_section()", - "id": "services_notification_message_build_section" - }, - { - "label": "build_member_notification_message()", - "file_type": "code", - "source_file": "backend/app/services/notification_message.py", - "source_location": "L153", - "community": 15, - "norm_label": "build_member_notification_message()", - "id": "services_notification_message_build_member_notification_message" - }, - { - "label": "Build rich per-member Discord DM messages for siege assignment notifications.", - "file_type": "rationale", - "source_file": "backend/app/services/notification_message.py", - "source_location": "L1", - "community": 15, - "norm_label": "build rich per-member discord dm messages for siege assignment notifications.", - "id": "services_notification_message_rationale_1" - }, - { - "label": "Minimal description of a single assigned position.", - "file_type": "rationale", - "source_file": "backend/app/services/notification_message.py", - "source_location": "L61", - "community": 0, - "norm_label": "minimal description of a single assigned position.", - "id": "services_notification_message_rationale_61" - }, - { - "label": "Return a sortable tuple for consistent ordering within a section. Sorts by:", - "file_type": "rationale", - "source_file": "backend/app/services/notification_message.py", - "source_location": "L75", - "community": 15, - "norm_label": "return a sortable tuple for consistent ordering within a section. sorts by:", - "id": "services_notification_message_rationale_75" - }, - { - "label": "Format a human-readable label for a position. Posts always use the short ``", - "file_type": "rationale", - "source_file": "backend/app/services/notification_message.py", - "source_location": "L85", - "community": 15, - "norm_label": "format a human-readable label for a position. posts always use the short ``", - "id": "services_notification_message_rationale_85" - }, - { - "label": "Convert a list of PositionInfo objects to a set of comparable tuples.", - "file_type": "rationale", - "source_file": "backend/app/services/notification_message.py", - "source_location": "L111", - "community": 15, - "norm_label": "convert a list of positioninfo objects to a set of comparable tuples.", - "id": "services_notification_message_rationale_111" - }, - { - "label": "Filter ``positions`` to those whose key is in ``keys``, preserving PositionInfo", - "file_type": "rationale", - "source_file": "backend/app/services/notification_message.py", - "source_location": "L118", - "community": 15, - "norm_label": "filter ``positions`` to those whose key is in ``keys``, preserving positioninfo", - "id": "services_notification_message_rationale_118" - }, - { - "label": "Render one diff section as a header line followed by plain position lines.", - "file_type": "rationale", - "source_file": "backend/app/services/notification_message.py", - "source_location": "L131", - "community": 15, - "norm_label": "render one diff section as a header line followed by plain position lines.", - "id": "services_notification_message_rationale_131" - }, - { - "label": "Build a rich Discord DM message for a single siege member. Args: si", - "file_type": "rationale", - "source_file": "backend/app/services/notification_message.py", - "source_location": "L161", - "community": 15, - "norm_label": "build a rich discord dm message for a single siege member. args: si", - "id": "services_notification_message_rationale_161" - }, - { - "label": "_get_siege_or_404()", - "file_type": "code", - "source_file": "backend/app/services/posts.py", - "source_location": "L15", - "community": 16, - "norm_label": "_get_siege_or_404()", - "id": "services_posts_get_siege_or_404" - }, - { - "label": "_get_post_for_siege_or_404()", - "file_type": "code", - "source_file": "backend/app/services/posts.py", - "source_location": "L23", - "community": 16, - "norm_label": "_get_post_for_siege_or_404()", - "id": "services_posts_get_post_for_siege_or_404" - }, - { - "label": "Return all Post records for a siege with active_conditions loaded. Raises:", - "file_type": "rationale", - "source_file": "backend/app/services/posts.py", - "source_location": "L37", - "community": 16, - "norm_label": "return all post records for a siege with active_conditions loaded. raises:", - "id": "services_posts_rationale_37" - }, - { - "label": "Update a post's priority and/or description. Raises: 404 if post no", - "file_type": "rationale", - "source_file": "backend/app/services/posts.py", - "source_location": "L55", - "community": 16, - "norm_label": "update a post's priority and/or description. raises: 404 if post no", - "id": "services_posts_rationale_55" - }, - { - "label": "Replace all active conditions on a post. Raises: 404 if post not fo", - "file_type": "rationale", - "source_file": "backend/app/services/posts.py", - "source_location": "L79", - "community": 16, - "norm_label": "replace all active conditions on a post. raises: 404 if post not fo", - "id": "services_posts_rationale_79" - }, - { - "label": "_get_target_position()", - "file_type": "code", - "source_file": "backend/app/services/post_suggestions.py", - "source_location": "L517", - "community": 2, - "norm_label": "_get_target_position()", - "id": "services_post_suggestions_get_target_position" - }, - { - "label": "_null_entry()", - "file_type": "code", - "source_file": "backend/app/services/post_suggestions.py", - "source_location": "L537", - "community": 2, - "norm_label": "_null_entry()", - "id": "services_post_suggestions_null_entry" - }, - { - "label": "Service implementing the Suggest Post Assignments feature. Public API: prev", - "file_type": "rationale", - "source_file": "backend/app/services/post_suggestions.py", - "source_location": "L1", - "community": 2, - "norm_label": "service implementing the suggest post assignments feature. public api: prev", - "id": "services_post_suggestions_rationale_1" - }, - { - "label": "Return the current UTC datetime (naive, matching DB TIMESTAMP columns).", - "file_type": "rationale", - "source_file": "backend/app/services/post_suggestions.py", - "source_location": "L71", - "community": 2, - "norm_label": "return the current utc datetime (naive, matching db timestamp columns).", - "id": "services_post_suggestions_rationale_71" - }, - { - "label": "Generate a greedy post assignment suggestion and persist it as a preview. T", - "file_type": "rationale", - "source_file": "backend/app/services/post_suggestions.py", - "source_location": "L79", - "community": 2, - "norm_label": "generate a greedy post assignment suggestion and persist it as a preview. t", - "id": "services_post_suggestions_rationale_79" - }, - { - "label": "Apply a subset of a stored post-suggestion preview atomically. The whole se", - "file_type": "rationale", - "source_file": "backend/app/services/post_suggestions.py", - "source_location": "L340", - "community": 2, - "norm_label": "apply a subset of a stored post-suggestion preview atomically. the whole se", - "id": "services_post_suggestions_rationale_340" - }, - { - "label": "Return the single target position from a post building, or None. Posts have", - "file_type": "rationale", - "source_file": "backend/app/services/post_suggestions.py", - "source_location": "L518", - "community": 2, - "norm_label": "return the single target position from a post building, or none. posts have", - "id": "services_post_suggestions_rationale_518" - }, - { - "label": "Build a PostSuggestionEntry with no suggestion (skipped post). Args:", - "file_type": "rationale", - "source_file": "backend/app/services/post_suggestions.py", - "source_location": "L546", - "community": 2, - "norm_label": "build a postsuggestionentry with no suggestion (skipped post). args:", - "id": "services_post_suggestions_rationale_546" - }, - { - "label": "# NOTE: _validate_position_state() from bulk_update_positions is NOT", - "file_type": "rationale", - "source_file": "backend/app/services/post_suggestions.py", - "source_location": "L418", - "community": 2, - "norm_label": "# note: _validate_position_state() from bulk_update_positions is not", - "id": "services_post_suggestions_rationale_418" - }, - { - "label": "# NOTE: session.refresh(pos) is not called post-write because the apply", - "file_type": "rationale", - "source_file": "backend/app/services/post_suggestions.py", - "source_location": "L489", - "community": 2, - "norm_label": "# note: session.refresh(pos) is not called post-write because the apply", - "id": "services_post_suggestions_rationale_489" - }, - { - "label": "scrolls_per_player()", - "file_type": "code", - "source_file": "backend/app/services/sieges.py", - "source_location": "L19", - "community": 2, - "norm_label": "scrolls_per_player()", - "id": "services_sieges_scrolls_per_player" - }, - { - "label": "compute_scroll_count()", - "file_type": "code", - "source_file": "backend/app/services/sieges.py", - "source_location": "L28", - "community": 2, - "norm_label": "compute_scroll_count()", - "id": "services_sieges_compute_scroll_count" - }, - { - "label": "Return the per-player scroll limit for a siege. Matches the UI formula: 4 s", - "file_type": "rationale", - "source_file": "backend/app/services/sieges.py", - "source_location": "L20", - "community": 2, - "norm_label": "return the per-player scroll limit for a siege. matches the ui formula: 4 s", - "id": "services_sieges_rationale_20" - }, - { - "label": "Compute total scroll count from the theoretical capacity of every building.", - "file_type": "rationale", - "source_file": "backend/app/services/sieges.py", - "source_location": "L29", - "community": 2, - "norm_label": "compute total scroll count from the theoretical capacity of every building.", - "id": "services_sieges_rationale_29" - }, - { - "label": "seed.py", - "file_type": "code", - "source_file": "backend/scripts/seed.py", - "source_location": "L1", - "community": 7, - "norm_label": "seed.py", - "id": "backend_scripts_seed_py" - }, - { - "label": "seed_demo.py", - "file_type": "code", - "source_file": "backend/scripts/seed_demo.py", - "source_location": "L1", - "community": 7, - "norm_label": "seed_demo.py", - "id": "backend_scripts_seed_demo_py" - }, - { - "label": "get_or_create_members()", - "file_type": "code", - "source_file": "backend/scripts/seed_demo.py", - "source_location": "L95", - "community": 7, - "norm_label": "get_or_create_members()", - "id": "scripts_seed_demo_get_or_create_members" - }, - { - "label": "get_or_create_demo_siege()", - "file_type": "code", - "source_file": "backend/scripts/seed_demo.py", - "source_location": "L114", - "community": 7, - "norm_label": "get_or_create_demo_siege()", - "id": "scripts_seed_demo_get_or_create_demo_siege" - }, - { - "label": "seed_buildings_and_positions()", - "file_type": "code", - "source_file": "backend/scripts/seed_demo.py", - "source_location": "L133", - "community": 0, - "norm_label": "seed_buildings_and_positions()", - "id": "scripts_seed_demo_seed_buildings_and_positions" - }, - { - "label": "get_or_create_second_siege()", - "file_type": "code", - "source_file": "backend/scripts/seed_demo.py", - "source_location": "L203", - "community": 7, - "norm_label": "get_or_create_second_siege()", - "id": "scripts_seed_demo_get_or_create_second_siege" - }, - { - "label": "seed_siege_members()", - "file_type": "code", - "source_file": "backend/scripts/seed_demo.py", - "source_location": "L220", - "community": 7, - "norm_label": "seed_siege_members()", - "id": "scripts_seed_demo_seed_siege_members" - }, - { - "label": "Return existing demo members or create them.", - "file_type": "rationale", - "source_file": "backend/scripts/seed_demo.py", - "source_location": "L96", - "community": 7, - "norm_label": "return existing demo members or create them.", - "id": "scripts_seed_demo_rationale_96" - }, - { - "label": "Return the existing demo siege or create a new one.", - "file_type": "rationale", - "source_file": "backend/scripts/seed_demo.py", - "source_location": "L115", - "community": 7, - "norm_label": "return the existing demo siege or create a new one.", - "id": "scripts_seed_demo_rationale_115" - }, - { - "label": "Create buildings, groups, and positions; assign members round-robin. member", - "file_type": "rationale", - "source_file": "backend/scripts/seed_demo.py", - "source_location": "L139", - "community": 0, - "norm_label": "create buildings, groups, and positions; assign members round-robin. member", - "id": "scripts_seed_demo_rationale_139" - }, - { - "label": "Return the existing planning siege or create one one week after the first.", - "file_type": "rationale", - "source_file": "backend/scripts/seed_demo.py", - "source_location": "L204", - "community": 7, - "norm_label": "return the existing planning siege or create one one week after the first.", - "id": "scripts_seed_demo_rationale_204" - }, - { - "label": "Enrol members in the siege with attack day assignments.", - "file_type": "rationale", - "source_file": "backend/scripts/seed_demo.py", - "source_location": "L225", - "community": 7, - "norm_label": "enrol members in the siege with attack day assignments.", - "id": "scripts_seed_demo_rationale_225" - }, - { - "label": "config.py", - "file_type": "code", - "source_file": "bot/app/config.py", - "source_location": "L1", - "community": 28, - "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": 6, - "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": 6, - "norm_label": "siegebot", - "id": "app_discord_client_siegebot" - }, - { - "label": ".__init__()", - "file_type": "code", - "source_file": "bot/app/discord_client.py", - "source_location": "L9", - "community": 6, - "norm_label": ".__init__()", - "id": "app_discord_client_siegebot_init" - }, - { - "label": ".on_ready()", - "file_type": "code", - "source_file": "bot/app/discord_client.py", - "source_location": "L14", - "community": 6, - "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": 6, - "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": 6, - "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": 6, - "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": 6, - "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": 6, - "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": 6, - "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": 6, - "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": 6, - "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": 6, - "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": 6, - "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": 6, - "norm_label": "notifyrequest", - "id": "app_http_api_notifyrequest" - }, - { - "label": "PostMessageRequest", - "file_type": "code", - "source_file": "bot/app/http_api.py", - "source_location": "L51", - "community": 6, - "norm_label": "postmessagerequest", - "id": "app_http_api_postmessagerequest" - }, - { - "label": "version()", - "file_type": "code", - "source_file": "bot/app/http_api.py", - "source_location": "L57", - "community": 12, - "norm_label": "version()", - "id": "app_http_api_version" - }, - { - "label": "notify()", - "file_type": "code", - "source_file": "bot/app/http_api.py", - "source_location": "L83", - "community": 6, - "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": 6, - "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": 6, - "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": 6, - "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": 6, - "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": 12, - "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": 6, - "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": 6, - "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": 6, - "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": 6, - "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": 6, - "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": 6, - "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": 7, - "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": 7, - "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": 7, - "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": 7, - "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": 7, - "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": 7, - "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": 7, - "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": 31, - "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": 40, - "norm_label": "__init__.py", - "id": "bot_app_init_py" - }, - { - "label": "eslint.config.js", - "file_type": "code", - "source_file": "frontend/eslint.config.js", - "source_location": "L1", - "community": 41, - "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": 42, - "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": 43, - "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": 20, - "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": 36, - "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": 36, - "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": 10, - "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": 10, - "norm_label": "apicreatesiege()", - "id": "e2e_board_spec_apicreatesiege" - }, - { - "label": "apiAddBuilding()", - "file_type": "code", - "source_file": "frontend/e2e/board.spec.ts", - "source_location": "L27", - "community": 10, - "norm_label": "apiaddbuilding()", - "id": "e2e_board_spec_apiaddbuilding" - }, - { - "label": "apiCreateMember()", - "file_type": "code", - "source_file": "frontend/e2e/board.spec.ts", - "source_location": "L52", - "community": 10, - "norm_label": "apicreatemember()", - "id": "e2e_board_spec_apicreatemember" - }, - { - "label": "buildingsTab", - "file_type": "code", - "source_file": "frontend/e2e/board.spec.ts", - "source_location": "L127", - "community": 10, - "norm_label": "buildingstab", - "id": "e2e_board_spec_buildingstab" - }, - { - "label": "postsTab", - "file_type": "code", - "source_file": "frontend/e2e/board.spec.ts", - "source_location": "L128", - "community": 14, - "norm_label": "poststab", - "id": "e2e_board_spec_poststab" - }, - { - "label": "search", - "file_type": "code", - "source_file": "frontend/e2e/board.spec.ts", - "source_location": "L179", - "community": 10, - "norm_label": "search", - "id": "e2e_board_spec_search" - }, - { - "label": "roleSelect", - "file_type": "code", - "source_file": "frontend/e2e/board.spec.ts", - "source_location": "L198", - "community": 10, - "norm_label": "roleselect", - "id": "e2e_board_spec_roleselect" - }, - { - "label": "firstPositionSpan", - "file_type": "code", - "source_file": "frontend/e2e/board.spec.ts", - "source_location": "L238", - "community": 10, - "norm_label": "firstpositionspan", - "id": "e2e_board_spec_firstpositionspan" - }, - { - "label": "positionCell", - "file_type": "code", - "source_file": "frontend/e2e/board.spec.ts", - "source_location": "L239", - "community": 10, - "norm_label": "positioncell", - "id": "e2e_board_spec_positioncell" - }, - { - "label": "chevron", - "file_type": "code", - "source_file": "frontend/e2e/board.spec.ts", - "source_location": "L244", - "community": 10, - "norm_label": "chevron", - "id": "e2e_board_spec_chevron" - }, - { - "label": "autofillBtn", - "file_type": "code", - "source_file": "frontend/e2e/board.spec.ts", - "source_location": "L367", - "community": 10, - "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": 32, - "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": 32, - "norm_label": "ensurememberslotsavailable()", - "id": "e2e_members_spec_ensurememberslotsavailable" - }, - { - "label": "activeCheckbox", - "file_type": "code", - "source_file": "frontend/e2e/members.spec.ts", - "source_location": "L125", - "community": 32, - "norm_label": "activecheckbox", - "id": "e2e_members_spec_activecheckbox" - }, - { - "label": "editLinks", - "file_type": "code", - "source_file": "frontend/e2e/members.spec.ts", - "source_location": "L131", - "community": 32, - "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": 10, - "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": 10, - "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": 10, - "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": 10, - "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": 10, - "norm_label": "boardlink", - "id": "e2e_siege_lifecycle_spec_boardlink" - }, - { - "label": "memberRow", - "file_type": "code", - "source_file": "frontend/e2e/siege-lifecycle.spec.ts", - "source_location": "L369", - "community": 10, - "norm_label": "memberrow", - "id": "e2e_siege_lifecycle_spec_memberrow" - }, - { - "label": "activeBadge", - "file_type": "code", - "source_file": "frontend/e2e/siege-lifecycle.spec.ts", - "source_location": "L382", - "community": 10, - "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": 10, - "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": 44, - "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": 1, - "norm_label": "app.tsx", - "id": "frontend_src_app_tsx" - }, - { - "label": "App()", - "file_type": "code", - "source_file": "frontend/src/App.tsx", - "source_location": "L19", - "community": 1, - "norm_label": "app()", - "id": "src_app_app" - }, - { - "label": "main.tsx", - "file_type": "code", - "source_file": "frontend/src/main.tsx", - "source_location": "L1", - "community": 25, - "norm_label": "main.tsx", - "id": "frontend_src_main_tsx" - }, - { - "label": "queryClient", - "file_type": "code", - "source_file": "frontend/src/main.tsx", - "source_location": "L9", - "community": 25, - "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": 45, - "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": 0, - "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": 0, - "norm_label": "getboard()", - "id": "api_board_getboard" - }, - { - "label": "changelog.ts", - "file_type": "code", - "source_file": "frontend/src/api/changelog.ts", - "source_location": "L1", - "community": 26, - "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": 26, - "norm_label": "changelogstatus", - "id": "api_changelog_changelogstatus" - }, - { - "label": "fetchChangelogStatus()", - "file_type": "code", - "source_file": "frontend/src/api/changelog.ts", - "source_location": "L7", - "community": 26, - "norm_label": "fetchchangelogstatus()", - "id": "api_changelog_fetchchangelogstatus" - }, - { - "label": "markChangelogSeen()", - "file_type": "code", - "source_file": "frontend/src/api/changelog.ts", - "source_location": "L12", - "community": 18, - "norm_label": "markchangelogseen()", - "id": "api_changelog_markchangelogseen" - }, - { - "label": "client.ts", - "file_type": "code", - "source_file": "frontend/src/api/client.ts", - "source_location": "L1", - "community": 27, - "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": 27, - "norm_label": "apiclient", - "id": "api_client_apiclient" - }, - { - "label": "config.ts", - "file_type": "code", - "source_file": "frontend/src/api/config.ts", - "source_location": "L1", - "community": 20, - "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": 20, - "norm_label": "appconfig", - "id": "api_config_appconfig" - }, - { - "label": "fetchConfig()", - "file_type": "code", - "source_file": "frontend/src/api/config.ts", - "source_location": "L7", - "community": 20, - "norm_label": "fetchconfig()", - "id": "api_config_fetchconfig" - }, - { - "label": "members.ts", - "file_type": "code", - "source_file": "frontend/src/api/members.ts", - "source_location": "L1", - "community": 1, - "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": 1, - "norm_label": "getmember()", - "id": "api_members_getmember" - }, - { - "label": "createMember()", - "file_type": "code", - "source_file": "frontend/src/api/members.ts", - "source_location": "L22", - "community": 6, - "norm_label": "createmember()", - "id": "api_members_createmember" - }, - { - "label": "updateMember()", - "file_type": "code", - "source_file": "frontend/src/api/members.ts", - "source_location": "L32", - "community": 6, - "norm_label": "updatemember()", - "id": "api_members_updatemember" - }, - { - "label": "deleteMember()", - "file_type": "code", - "source_file": "frontend/src/api/members.ts", - "source_location": "L46", - "community": 1, - "norm_label": "deletemember()", - "id": "api_members_deletemember" - }, - { - "label": "getMemberPreferences()", - "file_type": "code", - "source_file": "frontend/src/api/members.ts", - "source_location": "L50", - "community": 6, - "norm_label": "getmemberpreferences()", - "id": "api_members_getmemberpreferences" - }, - { - "label": "updateMemberPreferences()", - "file_type": "code", - "source_file": "frontend/src/api/members.ts", - "source_location": "L59", - "community": 1, - "norm_label": "updatememberpreferences()", - "id": "api_members_updatememberpreferences" - }, - { - "label": "getPostConditions()", - "file_type": "code", - "source_file": "frontend/src/api/members.ts", - "source_location": "L72", - "community": 1, - "norm_label": "getpostconditions()", - "id": "api_members_getpostconditions" - }, - { - "label": "getMemberRoles()", - "file_type": "code", - "source_file": "frontend/src/api/members.ts", - "source_location": "L77", - "community": 1, - "norm_label": "getmemberroles()", - "id": "api_members_getmemberroles" - }, - { - "label": "previewDiscordSync()", - "file_type": "code", - "source_file": "frontend/src/api/members.ts", - "source_location": "L82", - "community": 24, - "norm_label": "previewdiscordsync()", - "id": "api_members_previewdiscordsync" - }, - { - "label": "applyDiscordSync()", - "file_type": "code", - "source_file": "frontend/src/api/members.ts", - "source_location": "L89", - "community": 24, - "norm_label": "applydiscordsync()", - "id": "api_members_applydiscordsync" - }, - { - "label": "notifySiegeMembers()", - "file_type": "code", - "source_file": "frontend/src/api/notifications.ts", - "source_location": "L8", - "community": 0, - "norm_label": "notifysiegemembers()", - "id": "api_notifications_notifysiegemembers" - }, - { - "label": "getNotificationBatch()", - "file_type": "code", - "source_file": "frontend/src/api/notifications.ts", - "source_location": "L17", - "community": 0, - "norm_label": "getnotificationbatch()", - "id": "api_notifications_getnotificationbatch" - }, - { - "label": "postToChannel()", - "file_type": "code", - "source_file": "frontend/src/api/notifications.ts", - "source_location": "L27", - "community": 0, - "norm_label": "posttochannel()", - "id": "api_notifications_posttochannel" - }, - { - "label": "posts.ts", - "file_type": "code", - "source_file": "frontend/src/api/posts.ts", - "source_location": "L1", - "community": 33, - "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": 0, - "norm_label": "postpriorityconfig", - "id": "api_posts_postpriorityconfig" - }, - { - "label": "getPostPriorities()", - "file_type": "code", - "source_file": "frontend/src/api/posts.ts", - "source_location": "L11", - "community": 33, - "norm_label": "getpostpriorities()", - "id": "api_posts_getpostpriorities" - }, - { - "label": "updatePostPriority()", - "file_type": "code", - "source_file": "frontend/src/api/posts.ts", - "source_location": "L16", - "community": 33, - "norm_label": "updatepostpriority()", - "id": "api_posts_updatepostpriority" - }, - { - "label": "getPosts()", - "file_type": "code", - "source_file": "frontend/src/api/posts.ts", - "source_location": "L27", - "community": 33, - "norm_label": "getposts()", - "id": "api_posts_getposts" - }, - { - "label": "updatePost()", - "file_type": "code", - "source_file": "frontend/src/api/posts.ts", - "source_location": "L32", - "community": 16, - "norm_label": "updatepost()", - "id": "api_posts_updatepost" - }, - { - "label": "setPostConditions()", - "file_type": "code", - "source_file": "frontend/src/api/posts.ts", - "source_location": "L44", - "community": 16, - "norm_label": "setpostconditions()", - "id": "api_posts_setpostconditions" - }, - { - "label": "sieges.ts", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L1", - "community": 2, - "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": 1, - "norm_label": "getsieges()", - "id": "api_sieges_getsieges" - }, - { - "label": "getSiege()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L27", - "community": 1, - "norm_label": "getsiege()", - "id": "api_sieges_getsiege" - }, - { - "label": "createSiege()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L32", - "community": 0, - "norm_label": "createsiege()", - "id": "api_sieges_createsiege" - }, - { - "label": "updateSiege()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L37", - "community": 2, - "norm_label": "updatesiege()", - "id": "api_sieges_updatesiege" - }, - { - "label": "deleteSiege()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L45", - "community": 2, - "norm_label": "deletesiege()", - "id": "api_sieges_deletesiege" - }, - { - "label": "activateSiege()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L49", - "community": 2, - "norm_label": "activatesiege()", - "id": "api_sieges_activatesiege" - }, - { - "label": "completeSiege()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L54", - "community": 2, - "norm_label": "completesiege()", - "id": "api_sieges_completesiege" - }, - { - "label": "cloneSiege()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L59", - "community": 0, - "norm_label": "clonesiege()", - "id": "api_sieges_clonesiege" - }, - { - "label": "reopenSiege()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L64", - "community": 2, - "norm_label": "reopensiege()", - "id": "api_sieges_reopensiege" - }, - { - "label": "validateSiege()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L69", - "community": 2, - "norm_label": "validatesiege()", - "id": "api_sieges_validatesiege" - }, - { - "label": "getBuildings()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L76", - "community": 11, - "norm_label": "getbuildings()", - "id": "api_sieges_getbuildings" - }, - { - "label": "createBuilding()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L83", - "community": 2, - "norm_label": "createbuilding()", - "id": "api_sieges_createbuilding" - }, - { - "label": "updateBuilding()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L94", - "community": 11, - "norm_label": "updatebuilding()", - "id": "api_sieges_updatebuilding" - }, - { - "label": "deleteBuilding()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L106", - "community": 11, - "norm_label": "deletebuilding()", - "id": "api_sieges_deletebuilding" - }, - { - "label": "getSiegeMembers()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L120", - "community": 1, - "norm_label": "getsiegemembers()", - "id": "api_sieges_getsiegemembers" - }, - { - "label": "getSiegeMemberPreferences()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L127", - "community": 14, - "norm_label": "getsiegememberpreferences()", - "id": "api_sieges_getsiegememberpreferences" - }, - { - "label": "previewAutofill()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L165", - "community": 2, - "norm_label": "previewautofill()", - "id": "api_sieges_previewautofill" - }, - { - "label": "applyAutofill()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L174", - "community": 2, - "norm_label": "applyautofill()", - "id": "api_sieges_applyautofill" - }, - { - "label": "previewAttackDay()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L183", - "community": 2, - "norm_label": "previewattackday()", - "id": "api_sieges_previewattackday" - }, - { - "label": "applyAttackDay()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L192", - "community": 2, - "norm_label": "applyattackday()", - "id": "api_sieges_applyattackday" - }, - { - "label": "compareSieges()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L201", - "community": 21, - "norm_label": "comparesieges()", - "id": "api_sieges_comparesieges" - }, - { - "label": "compareSiegesSpecific()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L210", - "community": 2, - "norm_label": "comparesiegesspecific()", - "id": "api_sieges_comparesiegesspecific" - }, - { - "label": "previewPostSuggestions()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L220", - "community": 2, - "norm_label": "previewpostsuggestions()", - "id": "api_sieges_previewpostsuggestions" - }, - { - "label": "applyPostSuggestions()", - "file_type": "code", - "source_file": "frontend/src/api/sieges.ts", - "source_location": "L229", - "community": 2, - "norm_label": "applypostsuggestions()", - "id": "api_sieges_applypostsuggestions" - }, - { - "label": "types.ts", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L1", - "community": 0, - "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": 0, - "norm_label": "memberrole", - "id": "api_types_memberrole" - }, - { - "label": "SiegeStatus", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L3", - "community": 0, - "norm_label": "siegestatus", - "id": "api_types_siegestatus" - }, - { - "label": "BuildingType", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L4", - "community": 0, - "norm_label": "buildingtype", - "id": "api_types_buildingtype" - }, - { - "label": "Member", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L12", - "community": 0, - "norm_label": "member", - "id": "api_types_member" - }, - { - "label": "SyncMatch", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L23", - "community": 0, - "norm_label": "syncmatch", - "id": "api_types_syncmatch" - }, - { - "label": "SyncPreviewResponse", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L32", - "community": 0, - "norm_label": "syncpreviewresponse", - "id": "api_types_syncpreviewresponse" - }, - { - "label": "SyncApplyItem", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L38", - "community": 1, - "norm_label": "syncapplyitem", - "id": "api_types_syncapplyitem" - }, - { - "label": "PostCondition", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L44", - "community": 0, - "norm_label": "postcondition", - "id": "api_types_postcondition" - }, - { - "label": "Siege", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L51", - "community": 0, - "norm_label": "siege", - "id": "api_types_siege" - }, - { - "label": "Building", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L62", - "community": 0, - "norm_label": "building", - "id": "api_types_building" - }, - { - "label": "MemberPreferenceSummary", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L72", - "community": 0, - "norm_label": "memberpreferencesummary", - "id": "api_types_memberpreferencesummary" - }, - { - "label": "PositionResponse", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L79", - "community": 0, - "norm_label": "positionresponse", - "id": "api_types_positionresponse" - }, - { - "label": "BuildingGroupResponse", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L89", - "community": 0, - "norm_label": "buildinggroupresponse", - "id": "api_types_buildinggroupresponse" - }, - { - "label": "BuildingResponse", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L96", - "community": 0, - "norm_label": "buildingresponse", - "id": "api_types_buildingresponse" - }, - { - "label": "BoardResponse", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L105", - "community": 0, - "norm_label": "boardresponse", - "id": "api_types_boardresponse" - }, - { - "label": "SiegeMember", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L111", - "community": 1, - "norm_label": "siegemember", - "id": "api_types_siegemember" - }, - { - "label": "Post", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L129", - "community": 0, - "norm_label": "post", - "id": "api_types_post" - }, - { - "label": "ValidationIssue", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L140", - "community": 2, - "norm_label": "validationissue", - "id": "api_types_validationissue" - }, - { - "label": "ValidationResult", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L146", - "community": 2, - "norm_label": "validationresult", - "id": "api_types_validationresult" - }, - { - "label": "AutofillAssignment", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L152", - "community": 2, - "norm_label": "autofillassignment", - "id": "api_types_autofillassignment" - }, - { - "label": "AutofillPreviewResult", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L158", - "community": 2, - "norm_label": "autofillpreviewresult", - "id": "api_types_autofillpreviewresult" - }, - { - "label": "AutofillApplyResult", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L163", - "community": 2, - "norm_label": "autofillapplyresult", - "id": "api_types_autofillapplyresult" - }, - { - "label": "AttackDayAssignment", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L168", - "community": 2, - "norm_label": "attackdayassignment", - "id": "api_types_attackdayassignment" - }, - { - "label": "AttackDayPreviewResult", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L173", - "community": 2, - "norm_label": "attackdaypreviewresult", - "id": "api_types_attackdaypreviewresult" - }, - { - "label": "AttackDayApplyResult", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L178", - "community": 2, - "norm_label": "attackdayapplyresult", - "id": "api_types_attackdayapplyresult" - }, - { - "label": "PositionKey", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L183", - "community": 21, - "norm_label": "positionkey", - "id": "api_types_positionkey" - }, - { - "label": "MemberDiff", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L190", - "community": 21, - "norm_label": "memberdiff", - "id": "api_types_memberdiff" - }, - { - "label": "ComparisonResult", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L198", - "community": 21, - "norm_label": "comparisonresult", - "id": "api_types_comparisonresult" - }, - { - "label": "NotificationResultItem", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L205", - "community": 0, - "norm_label": "notificationresultitem", - "id": "api_types_notificationresultitem" - }, - { - "label": "NotificationBatchResponse", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L214", - "community": 0, - "norm_label": "notificationbatchresponse", - "id": "api_types_notificationbatchresponse" - }, - { - "label": "NotifyResponse", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L220", - "community": 0, - "norm_label": "notifyresponse", - "id": "api_types_notifyresponse" - }, - { - "label": "GenerateImagesResponse", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L227", - "community": 0, - "norm_label": "generateimagesresponse", - "id": "api_types_generateimagesresponse" - }, - { - "label": "VersionInfo", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L233", - "community": 12, - "norm_label": "versioninfo", - "id": "api_types_versioninfo" - }, - { - "label": "BuildingTypeInfo", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L241", - "community": 2, - "norm_label": "buildingtypeinfo", - "id": "api_types_buildingtypeinfo" - }, - { - "label": "MemberRoleInfo", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L249", - "community": 1, - "norm_label": "memberroleinfo", - "id": "api_types_memberroleinfo" - }, - { - "label": "PostSuggestionSkipReason", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L256", - "community": 0, - "norm_label": "postsuggestionskipreason", - "id": "api_types_postsuggestionskipreason" - }, - { - "label": "PostSuggestionPreviewResult", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L279", - "community": 2, - "norm_label": "postsuggestionpreviewresult", - "id": "api_types_postsuggestionpreviewresult" - }, - { - "label": "PostSuggestionStaleReason", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L284", - "community": 0, - "norm_label": "postsuggestionstalereason", - "id": "api_types_postsuggestionstalereason" - }, - { - "label": "PostSuggestionStaleEntry", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L291", - "community": 4, - "norm_label": "postsuggestionstaleentry", - "id": "api_types_postsuggestionstaleentry" - }, - { - "label": "PostSuggestionApplyResult", - "file_type": "code", - "source_file": "frontend/src/api/types.ts", - "source_location": "L298", - "community": 2, - "norm_label": "postsuggestionapplyresult", - "id": "api_types_postsuggestionapplyresult" - }, - { - "label": "getVersion()", - "file_type": "code", - "source_file": "frontend/src/api/version.ts", - "source_location": "L5", - "community": 12, - "norm_label": "getversion()", - "id": "api_version_getversion" - }, - { - "label": "useVersion()", - "file_type": "code", - "source_file": "frontend/src/api/version.ts", - "source_location": "L10", - "community": 12, - "norm_label": "useversion()", - "id": "api_version_useversion" - }, - { - "label": "CarouselSlide", - "file_type": "code", - "source_file": "frontend/src/components/Carousel.tsx", - "source_location": "L10", - "community": 19, - "norm_label": "carouselslide", - "id": "components_carousel_carouselslide" - }, - { - "label": "CarouselProps", - "file_type": "code", - "source_file": "frontend/src/components/Carousel.tsx", - "source_location": "L22", - "community": 19, - "norm_label": "carouselprops", - "id": "components_carousel_carouselprops" - }, - { - "label": "Carousel()", - "file_type": "code", - "source_file": "frontend/src/components/Carousel.tsx", - "source_location": "L35", - "community": 19, - "norm_label": "carousel()", - "id": "components_carousel_carousel" - }, - { - "label": "ChangelogDropdown.tsx", - "file_type": "code", - "source_file": "frontend/src/components/ChangelogDropdown.tsx", - "source_location": "L1", - "community": 26, - "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": 26, - "norm_label": "hasunread()", - "id": "components_changelogdropdown_hasunread" - }, - { - "label": "DiscordSyncModal.tsx", - "file_type": "code", - "source_file": "frontend/src/components/DiscordSyncModal.tsx", - "source_location": "L1", - "community": 1, - "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": 1, - "norm_label": "confidencevariant", - "id": "components_discordsyncmodal_confidencevariant" - }, - { - "label": "CONFIDENCE_LABEL", - "file_type": "code", - "source_file": "frontend/src/components/DiscordSyncModal.tsx", - "source_location": "L39", - "community": 1, - "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": 1, - "norm_label": "props", - "id": "components_groupbytoggle_props" - }, - { - "label": "GroupByToggle()", - "file_type": "code", - "source_file": "frontend/src/components/GroupByToggle.tsx", - "source_location": "L31", - "community": 1, - "norm_label": "groupbytoggle()", - "id": "components_groupbytoggle_groupbytoggle" - }, - { - "label": "Layout.tsx", - "file_type": "code", - "source_file": "frontend/src/components/Layout.tsx", - "source_location": "L1", - "community": 20, - "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": 20, - "norm_label": "navlinkclass()", - "id": "components_layout_navlinkclass" - }, - { - "label": "Layout()", - "file_type": "code", - "source_file": "frontend/src/components/Layout.tsx", - "source_location": "L17", - "community": 20, - "norm_label": "layout()", - "id": "components_layout_layout" - }, - { - "label": "MemberWithMatches", - "file_type": "code", - "source_file": "frontend/src/components/PostsTab.tsx", - "source_location": "L57", - "community": 14, - "norm_label": "memberwithmatches", - "id": "components_poststab_memberwithmatches" - }, - { - "label": "DuplicateConditionMap", - "file_type": "code", - "source_file": "frontend/src/components/PostsTab.tsx", - "source_location": "L64", - "community": 14, - "norm_label": "duplicateconditionmap", - "id": "components_poststab_duplicateconditionmap" - }, - { - "label": "buildDuplicateConditionMap()", - "file_type": "code", - "source_file": "frontend/src/components/PostsTab.tsx", - "source_location": "L68", - "community": 14, - "norm_label": "buildduplicateconditionmap()", - "id": "components_poststab_buildduplicateconditionmap" - }, - { - "label": "findPostPosition()", - "file_type": "code", - "source_file": "frontend/src/components/PostsTab.tsx", - "source_location": "L85", - "community": 14, - "norm_label": "findpostposition()", - "id": "components_poststab_findpostposition" - }, - { - "label": "MemberAssignRow()", - "file_type": "code", - "source_file": "frontend/src/components/PostsTab.tsx", - "source_location": "L100", - "community": 14, - "norm_label": "memberassignrow()", - "id": "components_poststab_memberassignrow" - }, - { - "label": "OutcomeFilter", - "file_type": "code", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L30", - "community": 4, - "norm_label": "outcomefilter", - "id": "components_postsuggestionsmodal_outcomefilter" - }, - { - "label": "Classification", - "file_type": "code", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L32", - "community": 4, - "norm_label": "classification", - "id": "components_postsuggestionsmodal_classification" - }, - { - "label": "PRIORITY_META", - "file_type": "code", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L42", - "community": 4, - "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": 4, - "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": 4, - "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": 4, - "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": 4, - "norm_label": "tileconfig", - "id": "components_postsuggestionsmodal_tileconfig" - }, - { - "label": "classify()", - "file_type": "code", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L159", - "community": 4, - "norm_label": "classify()", - "id": "components_postsuggestionsmodal_classify" - }, - { - "label": "Pill()", - "file_type": "code", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L169", - "community": 4, - "norm_label": "pill()", - "id": "components_postsuggestionsmodal_pill" - }, - { - "label": "ChangeCell()", - "file_type": "code", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L197", - "community": 4, - "norm_label": "changecell()", - "id": "components_postsuggestionsmodal_changecell" - }, - { - "label": "SkipIcon()", - "file_type": "code", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L248", - "community": 4, - "norm_label": "skipicon()", - "id": "components_postsuggestionsmodal_skipicon" - }, - { - "label": "ConditionCell()", - "file_type": "code", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L259", - "community": 4, - "norm_label": "conditioncell()", - "id": "components_postsuggestionsmodal_conditioncell" - }, - { - "label": "SummaryTile()", - "file_type": "code", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L290", - "community": 4, - "norm_label": "summarytile()", - "id": "components_postsuggestionsmodal_summarytile" - }, - { - "label": "StateLoading()", - "file_type": "code", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L345", - "community": 4, - "norm_label": "stateloading()", - "id": "components_postsuggestionsmodal_stateloading" - }, - { - "label": "StateEmpty()", - "file_type": "code", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L355", - "community": 4, - "norm_label": "stateempty()", - "id": "components_postsuggestionsmodal_stateempty" - }, - { - "label": "StateStaleConflict()", - "file_type": "code", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L379", - "community": 4, - "norm_label": "statestaleconflict()", - "id": "components_postsuggestionsmodal_statestaleconflict" - }, - { - "label": "ExpiryCountdown", - "file_type": "code", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L476", - "community": 4, - "norm_label": "expirycountdown", - "id": "components_postsuggestionsmodal_expirycountdown" - }, - { - "label": "useExpiryCountdown()", - "file_type": "code", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L486", - "community": 4, - "norm_label": "useexpirycountdown()", - "id": "components_postsuggestionsmodal_useexpirycountdown" - }, - { - "label": "RequireAuth.tsx", - "file_type": "code", - "source_file": "frontend/src/components/RequireAuth.tsx", - "source_location": "L1", - "community": 20, - "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": 20, - "norm_label": "requireauth()", - "id": "components_requireauth_requireauth" - }, - { - "label": "SiegeLayout.tsx", - "file_type": "code", - "source_file": "frontend/src/components/SiegeLayout.tsx", - "source_location": "L1", - "community": 1, - "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": 1, - "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": 1, - "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": 1, - "norm_label": "badgevariants", - "id": "ui_badge_badgevariants" - }, - { - "label": "BadgeProps", - "file_type": "code", - "source_file": "frontend/src/components/ui/badge.tsx", - "source_location": "L29", - "community": 1, - "norm_label": "badgeprops", - "id": "ui_badge_badgeprops" - }, - { - "label": "Badge()", - "file_type": "code", - "source_file": "frontend/src/components/ui/badge.tsx", - "source_location": "L34", - "community": 1, - "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": 1, - "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": 1, - "norm_label": "buttonvariants", - "id": "ui_button_buttonvariants" - }, - { - "label": "ButtonProps", - "file_type": "code", - "source_file": "frontend/src/components/ui/button.tsx", - "source_location": "L36", - "community": 1, - "norm_label": "buttonprops", - "id": "ui_button_buttonprops" - }, - { - "label": "Button", - "file_type": "code", - "source_file": "frontend/src/components/ui/button.tsx", - "source_location": "L43", - "community": 1, - "norm_label": "button", - "id": "ui_button_button" - }, - { - "label": "Checkbox", - "file_type": "code", - "source_file": "frontend/src/components/ui/checkbox.tsx", - "source_location": "L6", - "community": 1, - "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": 1, - "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": 1, - "norm_label": "dialogoverlay", - "id": "ui_dialog_dialogoverlay" - }, - { - "label": "DialogContent", - "file_type": "code", - "source_file": "frontend/src/components/ui/dialog.tsx", - "source_location": "L26", - "community": 1, - "norm_label": "dialogcontent", - "id": "ui_dialog_dialogcontent" - }, - { - "label": "DialogHeader()", - "file_type": "code", - "source_file": "frontend/src/components/ui/dialog.tsx", - "source_location": "L50", - "community": 1, - "norm_label": "dialogheader()", - "id": "ui_dialog_dialogheader" - }, - { - "label": "DialogFooter()", - "file_type": "code", - "source_file": "frontend/src/components/ui/dialog.tsx", - "source_location": "L66", - "community": 1, - "norm_label": "dialogfooter()", - "id": "ui_dialog_dialogfooter" - }, - { - "label": "DialogTitle", - "file_type": "code", - "source_file": "frontend/src/components/ui/dialog.tsx", - "source_location": "L82", - "community": 1, - "norm_label": "dialogtitle", - "id": "ui_dialog_dialogtitle" - }, - { - "label": "DialogDescription", - "file_type": "code", - "source_file": "frontend/src/components/ui/dialog.tsx", - "source_location": "L97", - "community": 1, - "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": 23, - "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": 23, - "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": 23, - "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": 26, - "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": 23, - "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": 23, - "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": 23, - "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": 23, - "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": 23, - "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": 23, - "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": 1, - "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": 1, - "norm_label": "inputprops", - "id": "ui_input_inputprops" - }, - { - "label": "Input", - "file_type": "code", - "source_file": "frontend/src/components/ui/input.tsx", - "source_location": "L6", - "community": 1, - "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": 1, - "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": 1, - "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": 1, - "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": 1, - "norm_label": "selecttrigger", - "id": "ui_select_selecttrigger" - }, - { - "label": "SelectScrollUpButton", - "file_type": "code", - "source_file": "frontend/src/components/ui/select.tsx", - "source_location": "L30", - "community": 1, - "norm_label": "selectscrollupbutton", - "id": "ui_select_selectscrollupbutton" - }, - { - "label": "SelectScrollDownButton", - "file_type": "code", - "source_file": "frontend/src/components/ui/select.tsx", - "source_location": "L47", - "community": 1, - "norm_label": "selectscrolldownbutton", - "id": "ui_select_selectscrolldownbutton" - }, - { - "label": "SelectContent", - "file_type": "code", - "source_file": "frontend/src/components/ui/select.tsx", - "source_location": "L65", - "community": 1, - "norm_label": "selectcontent", - "id": "ui_select_selectcontent" - }, - { - "label": "SelectLabel", - "file_type": "code", - "source_file": "frontend/src/components/ui/select.tsx", - "source_location": "L97", - "community": 1, - "norm_label": "selectlabel", - "id": "ui_select_selectlabel" - }, - { - "label": "SelectItem", - "file_type": "code", - "source_file": "frontend/src/components/ui/select.tsx", - "source_location": "L109", - "community": 1, - "norm_label": "selectitem", - "id": "ui_select_selectitem" - }, - { - "label": "SelectSeparator", - "file_type": "code", - "source_file": "frontend/src/components/ui/select.tsx", - "source_location": "L131", - "community": 1, - "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": 1, - "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": 1, - "norm_label": "table", - "id": "ui_table_table" - }, - { - "label": "TableBody", - "file_type": "code", - "source_file": "frontend/src/components/ui/table.tsx", - "source_location": "L26", - "community": 1, - "norm_label": "tablebody", - "id": "ui_table_tablebody" - }, - { - "label": "TableFooter", - "file_type": "code", - "source_file": "frontend/src/components/ui/table.tsx", - "source_location": "L38", - "community": 1, - "norm_label": "tablefooter", - "id": "ui_table_tablefooter" - }, - { - "label": "TableRow", - "file_type": "code", - "source_file": "frontend/src/components/ui/table.tsx", - "source_location": "L53", - "community": 1, - "norm_label": "tablerow", - "id": "ui_table_tablerow" - }, - { - "label": "TableHead", - "file_type": "code", - "source_file": "frontend/src/components/ui/table.tsx", - "source_location": "L68", - "community": 1, - "norm_label": "tablehead", - "id": "ui_table_tablehead" - }, - { - "label": "TableCell", - "file_type": "code", - "source_file": "frontend/src/components/ui/table.tsx", - "source_location": "L83", - "community": 1, - "norm_label": "tablecell", - "id": "ui_table_tablecell" - }, - { - "label": "TableCaption", - "file_type": "code", - "source_file": "frontend/src/components/ui/table.tsx", - "source_location": "L98", - "community": 1, - "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": 1, - "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": 1, - "norm_label": "textareaprops", - "id": "ui_textarea_textareaprops" - }, - { - "label": "Textarea", - "file_type": "code", - "source_file": "frontend/src/components/ui/textarea.tsx", - "source_location": "L6", - "community": 1, - "norm_label": "textarea", - "id": "ui_textarea_textarea" - }, - { - "label": "AuthContext.tsx", - "file_type": "code", - "source_file": "frontend/src/context/AuthContext.tsx", - "source_location": "L1", - "community": 25, - "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": 25, - "norm_label": "authuser", - "id": "context_authcontext_authuser" - }, - { - "label": "AuthContextValue", - "file_type": "code", - "source_file": "frontend/src/context/AuthContext.tsx", - "source_location": "L18", - "community": 25, - "norm_label": "authcontextvalue", - "id": "context_authcontext_authcontextvalue" - }, - { - "label": "AuthContext", - "file_type": "code", - "source_file": "frontend/src/context/AuthContext.tsx", - "source_location": "L25", - "community": 25, - "norm_label": "authcontext", - "id": "context_authcontext_authcontext" - }, - { - "label": "AuthProvider()", - "file_type": "code", - "source_file": "frontend/src/context/AuthContext.tsx", - "source_location": "L27", - "community": 25, - "norm_label": "authprovider()", - "id": "context_authcontext_authprovider" - }, - { - "label": "useAuth()", - "file_type": "code", - "source_file": "frontend/src/context/AuthContext.tsx", - "source_location": "L63", - "community": 20, - "norm_label": "useauth()", - "id": "context_authcontext_useauth" - }, - { - "label": "buildingColors.ts", - "file_type": "code", - "source_file": "frontend/src/lib/buildingColors.ts", - "source_location": "L1", - "community": 13, - "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": 13, - "norm_label": "buildingcolorclass", - "id": "lib_buildingcolors_buildingcolorclass" - }, - { - "label": "BUILDING_LABELS", - "file_type": "code", - "source_file": "frontend/src/lib/buildingColors.ts", - "source_location": "L49", - "community": 13, - "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": 1, - "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": 1, - "norm_label": "groupbymode", - "id": "lib_grouppostconditions_groupbymode" - }, - { - "label": "ConditionGroup", - "file_type": "code", - "source_file": "frontend/src/lib/groupPostConditions.ts", - "source_location": "L20", - "community": 1, - "norm_label": "conditiongroup", - "id": "lib_grouppostconditions_conditiongroup" - }, - { - "label": "groupByLevel()", - "file_type": "code", - "source_file": "frontend/src/lib/groupPostConditions.ts", - "source_location": "L53", - "community": 1, - "norm_label": "groupbylevel()", - "id": "lib_grouppostconditions_groupbylevel" - }, - { - "label": "groupByType()", - "file_type": "code", - "source_file": "frontend/src/lib/groupPostConditions.ts", - "source_location": "L74", - "community": 1, - "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": 14, - "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": 14, - "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": 14, - "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": 1, - "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": 1, - "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": 1, - "norm_label": "cn()", - "id": "lib_utils_cn" - }, - { - "label": "ROLE_LABELS", - "file_type": "code", - "source_file": "frontend/src/pages/BoardPage.tsx", - "source_location": "L58", - "community": 14, - "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": 14, - "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": 13, - "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": 14, - "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": 13, - "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": 14, - "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": 13, - "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": 13, - "norm_label": "draggablememberrow()", - "id": "pages_boardpage_draggablememberrow" - }, - { - "label": "MemberDragOverlay()", - "file_type": "code", - "source_file": "frontend/src/pages/BoardPage.tsx", - "source_location": "L322", - "community": 13, - "norm_label": "memberdragoverlay()", - "id": "pages_boardpage_memberdragoverlay" - }, - { - "label": "RoleFilter", - "file_type": "code", - "source_file": "frontend/src/pages/BoardPage.tsx", - "source_location": "L347", - "community": 13, - "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": 13, - "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": 13, - "norm_label": "memberbucket()", - "id": "pages_boardpage_memberbucket" - }, - { - "label": "BuildingTableRow()", - "file_type": "code", - "source_file": "frontend/src/pages/BoardPage.tsx", - "source_location": "L457", - "community": 13, - "norm_label": "buildingtablerow()", - "id": "pages_boardpage_buildingtablerow" - }, - { - "label": "BuildingTypeSection()", - "file_type": "code", - "source_file": "frontend/src/pages/BoardPage.tsx", - "source_location": "L553", - "community": 13, - "norm_label": "buildingtypesection()", - "id": "pages_boardpage_buildingtypesection" - }, - { - "label": "ConditionalDndContext()", - "file_type": "code", - "source_file": "frontend/src/pages/BoardPage.tsx", - "source_location": "L679", - "community": 13, - "norm_label": "conditionaldndcontext()", - "id": "pages_boardpage_conditionaldndcontext" - }, - { - "label": "ActiveTab", - "file_type": "code", - "source_file": "frontend/src/pages/BoardPage.tsx", - "source_location": "L711", - "community": 13, - "norm_label": "activetab", - "id": "pages_boardpage_activetab" - }, - { - "label": "BoardPage()", - "file_type": "code", - "source_file": "frontend/src/pages/BoardPage.tsx", - "source_location": "L713", - "community": 13, - "norm_label": "boardpage()", - "id": "pages_boardpage_boardpage" - }, - { - "label": "formatPosition()", - "file_type": "code", - "source_file": "frontend/src/pages/ComparisonPage.tsx", - "source_location": "L17", - "community": 1, - "norm_label": "formatposition()", - "id": "pages_comparisonpage_formatposition" - }, - { - "label": "PositionTag()", - "file_type": "code", - "source_file": "frontend/src/pages/ComparisonPage.tsx", - "source_location": "L26", - "community": 1, - "norm_label": "positiontag()", - "id": "pages_comparisonpage_positiontag" - }, - { - "label": "MemberPositionsCell()", - "file_type": "code", - "source_file": "frontend/src/pages/ComparisonPage.tsx", - "source_location": "L41", - "community": 1, - "norm_label": "memberpositionscell()", - "id": "pages_comparisonpage_memberpositionscell" - }, - { - "label": "ComparisonPage()", - "file_type": "code", - "source_file": "frontend/src/pages/ComparisonPage.tsx", - "source_location": "L67", - "community": 1, - "norm_label": "comparisonpage()", - "id": "pages_comparisonpage_comparisonpage" - }, - { - "label": "LandingPage.tsx", - "file_type": "code", - "source_file": "frontend/src/pages/LandingPage.tsx", - "source_location": "L1", - "community": 19, - "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": 20, - "norm_label": "landingorsieges()", - "id": "pages_landingpage_landingorsieges" - }, - { - "label": "SLIDES", - "file_type": "code", - "source_file": "frontend/src/pages/LandingPage.tsx", - "source_location": "L26", - "community": 19, - "norm_label": "slides", - "id": "pages_landingpage_slides" - }, - { - "label": "ShieldIcon()", - "file_type": "code", - "source_file": "frontend/src/pages/LandingPage.tsx", - "source_location": "L68", - "community": 19, - "norm_label": "shieldicon()", - "id": "pages_landingpage_shieldicon" - }, - { - "label": "GitHubIcon()", - "file_type": "code", - "source_file": "frontend/src/pages/LandingPage.tsx", - "source_location": "L88", - "community": 19, - "norm_label": "githubicon()", - "id": "pages_landingpage_githubicon" - }, - { - "label": "CheckIcon()", - "file_type": "code", - "source_file": "frontend/src/pages/LandingPage.tsx", - "source_location": "L108", - "community": 19, - "norm_label": "checkicon()", - "id": "pages_landingpage_checkicon" - }, - { - "label": "ExternalLinkIcon()", - "file_type": "code", - "source_file": "frontend/src/pages/LandingPage.tsx", - "source_location": "L128", - "community": 19, - "norm_label": "externallinkicon()", - "id": "pages_landingpage_externallinkicon" - }, - { - "label": "COLORS", - "file_type": "code", - "source_file": "frontend/src/pages/LandingPage.tsx", - "source_location": "L150", - "community": 19, - "norm_label": "colors", - "id": "pages_landingpage_colors" - }, - { - "label": "LandingPage()", - "file_type": "code", - "source_file": "frontend/src/pages/LandingPage.tsx", - "source_location": "L157", - "community": 19, - "norm_label": "landingpage()", - "id": "pages_landingpage_landingpage" - }, - { - "label": "ERROR_MESSAGES", - "file_type": "code", - "source_file": "frontend/src/pages/LoginPage.tsx", - "source_location": "L7", - "community": 27, - "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": 27, - "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": 27, - "norm_label": "mobilebanner()", - "id": "pages_loginpage_mobilebanner" - }, - { - "label": "LoginPage()", - "file_type": "code", - "source_file": "frontend/src/pages/LoginPage.tsx", - "source_location": "L34", - "community": 27, - "norm_label": "loginpage()", - "id": "pages_loginpage_loginpage" - }, - { - "label": "MemberDetailPage.tsx", - "file_type": "code", - "source_file": "frontend/src/pages/MemberDetailPage.tsx", - "source_location": "L1", - "community": 1, - "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": 1, - "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": 1, - "norm_label": "rolebadgevariant", - "id": "pages_memberspage_rolebadgevariant" - }, - { - "label": "ROLE_VARIANTS", - "file_type": "code", - "source_file": "frontend/src/pages/MembersPage.tsx", - "source_location": "L45", - "community": 1, - "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": 1, - "norm_label": "memberspage()", - "id": "pages_memberspage_memberspage" - }, - { - "label": "PostPrioritiesPage.tsx", - "file_type": "code", - "source_file": "frontend/src/pages/PostPrioritiesPage.tsx", - "source_location": "L1", - "community": 1, - "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": 1, - "norm_label": "descriptioncell()", - "id": "pages_postprioritiespage_descriptioncell" - }, - { - "label": "Tab", - "file_type": "code", - "source_file": "frontend/src/pages/PostPrioritiesPage.tsx", - "source_location": "L64", - "community": 1, - "norm_label": "tab", - "id": "pages_postprioritiespage_tab" - }, - { - "label": "PostRow()", - "file_type": "code", - "source_file": "frontend/src/pages/PostsPage.tsx", - "source_location": "L30", - "community": 1, - "norm_label": "postrow()", - "id": "pages_postspage_postrow" - }, - { - "label": "PostsPage()", - "file_type": "code", - "source_file": "frontend/src/pages/PostsPage.tsx", - "source_location": "L265", - "community": 1, - "norm_label": "postspage()", - "id": "pages_postspage_postspage" - }, - { - "label": "nextTuesdayFrom()", - "file_type": "code", - "source_file": "frontend/src/pages/SiegeCreatePage.tsx", - "source_location": "L19", - "community": 1, - "norm_label": "nexttuesdayfrom()", - "id": "pages_siegecreatepage_nexttuesdayfrom" - }, - { - "label": "formatDateLocal()", - "file_type": "code", - "source_file": "frontend/src/pages/SiegeCreatePage.tsx", - "source_location": "L27", - "community": 1, - "norm_label": "formatdatelocal()", - "id": "pages_siegecreatepage_formatdatelocal" - }, - { - "label": "suggestNextSiegeDate()", - "file_type": "code", - "source_file": "frontend/src/pages/SiegeCreatePage.tsx", - "source_location": "L34", - "community": 1, - "norm_label": "suggestnextsiegedate()", - "id": "pages_siegecreatepage_suggestnextsiegedate" - }, - { - "label": "SiegeCreatePage()", - "file_type": "code", - "source_file": "frontend/src/pages/SiegeCreatePage.tsx", - "source_location": "L46", - "community": 1, - "norm_label": "siegecreatepage()", - "id": "pages_siegecreatepage_siegecreatepage" - }, - { - "label": "AttackDaySelect()", - "file_type": "code", - "source_file": "frontend/src/pages/SiegeMembersPage.tsx", - "source_location": "L41", - "community": 1, - "norm_label": "attackdayselect()", - "id": "pages_siegememberspage_attackdayselect" - }, - { - "label": "SiegeSettingsPage.tsx", - "file_type": "code", - "source_file": "frontend/src/pages/SiegeSettingsPage.tsx", - "source_location": "L1", - "community": 1, - "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": 1, - "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": 1, - "norm_label": "statusbadgevariant", - "id": "pages_siegespage_statusbadgevariant" - }, - { - "label": "STATUS_VARIANTS", - "file_type": "code", - "source_file": "frontend/src/pages/SiegesPage.tsx", - "source_location": "L19", - "community": 1, - "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": 1, - "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": 1, - "norm_label": "siegespage()", - "id": "pages_siegespage_siegespage" - }, - { - "label": "UI_LIBRARIES", - "file_type": "code", - "source_file": "frontend/src/pages/SystemPage.tsx", - "source_location": "L6", - "community": 12, - "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": 12, - "norm_label": "sectionpanel()", - "id": "pages_systempage_sectionpanel" - }, - { - "label": "DataRow()", - "file_type": "code", - "source_file": "frontend/src/pages/SystemPage.tsx", - "source_location": "L47", - "community": 12, - "norm_label": "datarow()", - "id": "pages_systempage_datarow" - }, - { - "label": "LibraryRow()", - "file_type": "code", - "source_file": "frontend/src/pages/SystemPage.tsx", - "source_location": "L80", - "community": 12, - "norm_label": "libraryrow()", - "id": "pages_systempage_libraryrow" - }, - { - "label": "SystemPage()", - "file_type": "code", - "source_file": "frontend/src/pages/SystemPage.tsx", - "source_location": "L100", - "community": 12, - "norm_label": "systempage()", - "id": "pages_systempage_systempage" - }, - { - "label": "changelog.d.ts", - "file_type": "code", - "source_file": "frontend/src/types/changelog.d.ts", - "source_location": "L1", - "community": 37, - "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": 37, - "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": 46, - "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": 5, - "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": 5, - "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": 47, - "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": 48, - "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": 49, - "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": 50, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 7, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "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": 7, - "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": 0, - "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": 0, - "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": 0, - "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": 7, - "norm_label": "return a sorted list of .xlsm files from a file path or directory.", - "id": "excel_import_import_excel_rationale_1147" - }, - { - "label": "run-graphify-dry-run.ps1", - "file_type": "code", - "source_file": "scripts/experiments/run-graphify-dry-run.ps1", - "source_location": "L1", - "community": 51, - "norm_label": "run-graphify-dry-run.ps1", - "id": "scripts_experiments_run_graphify_dry_run_ps1" - }, - { - "label": "CHANGELOG v1.2.0", - "file_type": "document", - "source_file": "CHANGELOG.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "changelog v1.2.0", - "id": "changelog_v120" - }, - { - "label": "CHANGELOG v1.1.0", - "file_type": "document", - "source_file": "CHANGELOG.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "changelog v1.1.0", - "id": "changelog_v110" - }, - { - "label": "CHANGELOG v1.0.0", - "file_type": "document", - "source_file": "CHANGELOG.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "changelog v1.0.0", - "id": "changelog_v100" - }, - { - "label": "Suggest Post Assignments Feature", - "file_type": "concept", - "source_file": "CHANGELOG.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "suggest post assignments feature", - "id": "changelog_suggest_post_assignments" - }, - { - "label": "Group Post Conditions by Level or Type", - "file_type": "concept", - "source_file": "CHANGELOG.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "group post conditions by level or type", - "id": "changelog_group_post_conditions" - }, - { - "label": "Rate-limited Discord OAuth2 Endpoints", - "file_type": "concept", - "source_file": "CHANGELOG.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "rate-limited discord oauth2 endpoints", - "id": "changelog_rate_limited_discord_oauth" - }, - { - "label": "Project Overview (CLAUDE.md)", - "file_type": "document", - "source_file": "CLAUDE.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "project overview (claude.md)", - "id": "claude_project_overview" - }, - { - "label": "Backend Service (FastAPI)", - "file_type": "concept", - "source_file": "CLAUDE.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "backend service (fastapi)", - "id": "claude_backend_service" - }, - { - "label": "Frontend Service (React)", - "file_type": "concept", - "source_file": "CLAUDE.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "frontend service (react)", - "id": "claude_frontend_service" - }, - { - "label": "Bot Service (discord.py + FastAPI sidecar)", - "file_type": "concept", - "source_file": "CLAUDE.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "bot service (discord.py + fastapi sidecar)", - "id": "claude_bot_service" - }, - { - "label": "Discord OAuth2 Auth Flow", - "file_type": "concept", - "source_file": "CLAUDE.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "discord oauth2 auth flow", - "id": "claude_discord_oauth2" - }, - { - "label": "PostgreSQL Database", - "file_type": "concept", - "source_file": "CLAUDE.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "postgresql database", - "id": "claude_postgresql" - }, - { - "label": "Alembic Migrations", - "file_type": "concept", - "source_file": "CLAUDE.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "alembic migrations", - "id": "claude_alembic" - }, - { - "label": "Playwright Image Generation", - "file_type": "concept", - "source_file": "CLAUDE.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "playwright image generation", - "id": "claude_playwright" - }, - { - "label": "Docker Compose Stack", - "file_type": "code", - "source_file": "docker-compose.yml", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "docker compose stack", - "id": "dockercompose_stack" - }, - { - "label": "PostgreSQL Service (docker-compose)", - "file_type": "code", - "source_file": "docker-compose.yml", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "postgresql service (docker-compose)", - "id": "dockercompose_postgres" - }, - { - "label": "Backend Service (docker-compose)", - "file_type": "code", - "source_file": "docker-compose.yml", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "backend service (docker-compose)", - "id": "dockercompose_backend" - }, - { - "label": "Frontend Service (docker-compose)", - "file_type": "code", - "source_file": "docker-compose.yml", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "frontend service (docker-compose)", - "id": "dockercompose_frontend" - }, - { - "label": "Bot Service (docker-compose)", - "file_type": "code", - "source_file": "docker-compose.yml", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "bot service (docker-compose)", - "id": "dockercompose_bot" - }, - { - "label": "Docker Compose Production Overlay", - "file_type": "code", - "source_file": "docker-compose.prod.yml", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "docker compose production overlay", - "id": "dockercomposeprod_overlay" - }, - { - "label": "Backend Requirements", - "file_type": "code", - "source_file": "backend/requirements.txt", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "backend requirements", - "id": "backend_requirements" - }, - { - "label": "FastAPI", - "file_type": "concept", - "source_file": "backend/requirements.txt", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "fastapi", - "id": "backend_fastapi" - }, - { - "label": "SQLAlchemy", - "file_type": "concept", - "source_file": "backend/requirements.txt", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "sqlalchemy", - "id": "backend_sqlalchemy" - }, - { - "label": "asyncpg", - "file_type": "concept", - "source_file": "backend/requirements.txt", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "asyncpg", - "id": "backend_asyncpg" - }, - { - "label": "PyJWT", - "file_type": "concept", - "source_file": "backend/requirements.txt", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "pyjwt", - "id": "backend_pyjwt" - }, - { - "label": "slowapi", - "file_type": "concept", - "source_file": "backend/requirements.txt", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "slowapi", - "id": "backend_slowapi" - }, - { - "label": "Playwright (backend dep)", - "file_type": "concept", - "source_file": "backend/requirements.txt", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "playwright (backend dep)", - "id": "backend_playwright_dep" - }, - { - "label": "OpenTelemetry / Azure Monitor", - "file_type": "concept", - "source_file": "backend/requirements.txt", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "opentelemetry / azure monitor", - "id": "backend_otel" - }, - { - "label": "Bot Requirements", - "file_type": "code", - "source_file": "bot/requirements.txt", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "bot requirements", - "id": "bot_requirements" - }, - { - "label": "Bot Dev Requirements", - "file_type": "code", - "source_file": "bot/requirements-dev.txt", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "bot dev requirements", - "id": "bot_requirements_dev" - }, - { - "label": "discord.py", - "file_type": "concept", - "source_file": "bot/requirements.txt", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "discord.py", - "id": "bot_discordpy" - }, - { - "label": "FastAPI (bot sidecar)", - "file_type": "concept", - "source_file": "bot/requirements.txt", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "fastapi (bot sidecar)", - "id": "bot_fastapi" - }, - { - "label": "Implementation Plan", - "file_type": "document", - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "implementation plan", - "id": "impl_plan" - }, - { - "label": "Phase 0: Foundation", - "file_type": "concept", - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "phase 0: foundation", - "id": "impl_plan_phase0" - }, - { - "label": "Phase 1: Database Schema", - "file_type": "concept", - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "phase 1: database schema", - "id": "impl_plan_phase1" - }, - { - "label": "Phase 2: Core Backend CRUD", - "file_type": "concept", - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "phase 2: core backend crud", - "id": "impl_plan_phase2" - }, - { - "label": "Phase 3: Assignment Board Backend", - "file_type": "concept", - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "phase 3: assignment board backend", - "id": "impl_plan_phase3" - }, - { - "label": "Phase 4: Business Logic", - "file_type": "concept", - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "phase 4: business logic", - "id": "impl_plan_phase4" - }, - { - "label": "Phase 5: Discord Bot + Image Gen", - "file_type": "concept", - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "phase 5: discord bot + image gen", - "id": "impl_plan_phase5" - }, - { - "label": "Phase 6: Frontend Core", - "file_type": "concept", - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "phase 6: frontend core", - "id": "impl_plan_phase6" - }, - { - "label": "BuildingTypeConfig Reference", - "file_type": "concept", - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "buildingtypeconfig reference", - "id": "impl_plan_buildingtypeconfig" - }, - { - "label": "Operations Runbook", - "file_type": "document", - "source_file": "docs/RUNBOOK.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "operations runbook", - "id": "runbook" - }, - { - "label": "Azure Container Apps", - "file_type": "concept", - "source_file": "docs/RUNBOOK.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "azure container apps", - "id": "runbook_azure_container_apps" - }, - { - "label": "Azure Key Vault", - "file_type": "concept", - "source_file": "docs/RUNBOOK.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "azure key vault", - "id": "runbook_azure_keyvault" - }, - { - "label": "Azure PostgreSQL Flexible Server", - "file_type": "concept", - "source_file": "docs/RUNBOOK.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "azure postgresql flexible server", - "id": "runbook_azure_postgresql" - }, - { - "label": "Application Insights / OpenTelemetry", - "file_type": "concept", - "source_file": "docs/RUNBOOK.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "application insights / opentelemetry", - "id": "runbook_app_insights" - }, - { - "label": "Log Analytics Workspace", - "file_type": "concept", - "source_file": "docs/RUNBOOK.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "log analytics workspace", - "id": "runbook_log_analytics" - }, - { - "label": "Web Design Document", - "file_type": "document", - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "web design document", - "id": "wdd" - }, - { - "label": "Siege Data Model", - "file_type": "concept", - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "siege data model", - "id": "wdd_siege_model" - }, - { - "label": "Building Data Model", - "file_type": "concept", - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "building data model", - "id": "wdd_building_model" - }, - { - "label": "Member Data Model", - "file_type": "concept", - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "member data model", - "id": "wdd_member_model" - }, - { - "label": "Position Data Model", - "file_type": "concept", - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "position data model", - "id": "wdd_position_model" - }, - { - "label": "Post Data Model", - "file_type": "concept", - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "post data model", - "id": "wdd_post_model" - }, - { - "label": "PostCondition Data Model", - "file_type": "concept", - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "postcondition data model", - "id": "wdd_postcondition_model" - }, - { - "label": "16 Validation Rules", - "file_type": "concept", - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "16 validation rules", - "id": "wdd_validation_rules" - }, - { - "label": "Auto-fill Algorithm", - "file_type": "concept", - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "auto-fill algorithm", - "id": "wdd_autofill_algorithm" - }, - { - "label": "Attack Day Algorithm", - "file_type": "concept", - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "attack day algorithm", - "id": "wdd_attack_day_algorithm" - }, - { - "label": "Discord OAuth2 Authentication Spec", - "file_type": "concept", - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "discord oauth2 authentication spec", - "id": "wdd_discord_auth" - }, - { - "label": "Notify Members Data Flow", - "file_type": "concept", - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "notify members data flow", - "id": "wdd_notification_flow" - }, - { - "label": "Siege Building Levels Reference", - "file_type": "document", - "source_file": "docs/siege_levels.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "siege building levels reference", - "id": "siege_levels" - }, - { - "label": "Post Suggestions Modal Handoff", - "file_type": "document", - "source_file": "docs/design-refs/post-suggestions/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "post suggestions modal handoff", - "id": "post_suggestions_readme" - }, - { - "label": "DiffListA Modal Component", - "file_type": "concept", - "source_file": "docs/design-refs/post-suggestions/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "difflista modal component", - "id": "post_suggestions_difflist" - }, - { - "label": "AssignmentEntry Type", - "file_type": "concept", - "source_file": "docs/design-refs/post-suggestions/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "assignmententry type", - "id": "post_suggestions_assignmententry" - }, - { - "label": "Graphify Dry-Run Evaluation Plan", - "file_type": "document", - "source_file": "docs/experiments/graphify-dry-run.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "graphify dry-run evaluation plan", - "id": "graphify_dryrun" - }, - { - "label": "Landing Page Mockup", - "file_type": "document", - "source_file": "docs/mockups/mockup-landing.html", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "landing page mockup", - "id": "mockup_landing" - }, - { - "label": "Login Page Mockup", - "file_type": "document", - "source_file": "docs/mockups/mockup-login.html", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "login page mockup", - "id": "mockup_login" - }, - { - "label": "Public Launch Plan", - "file_type": "document", - "source_file": "docs/plans/public-launch-self-hostable-and-landing-page.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "public launch plan", - "id": "public_launch_plan" - }, - { - "label": "Self-Host on Any VPS (redirect)", - "file_type": "document", - "source_file": "docs/self-host/anywhere.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "self-host on any vps (redirect)", - "id": "self_host_anywhere" - }, - { - "label": "Self-Host on Azure (redirect)", - "file_type": "document", - "source_file": "docs/self-host/azure.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "self-host on azure (redirect)", - "id": "self_host_azure" - }, - { - "label": "Discord Auth Implementation Plan (Historical)", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-04-08-discord-auth-implementation.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "discord auth implementation plan (historical)", - "id": "discord_auth_impl_plan" - }, - { - "label": "get_current_user FastAPI Dependency", - "file_type": "concept", - "source_file": "docs/superpowers/plans/2026-04-08-discord-auth-implementation.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "get_current_user fastapi dependency", - "id": "discord_auth_get_current_user" - }, - { - "label": "BotClient.get_member()", - "file_type": "concept", - "source_file": "docs/superpowers/plans/2026-04-08-discord-auth-implementation.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "botclient.get_member()", - "id": "discord_auth_botclient_get_member" - }, - { - "label": "JWT Session Cookie (HS256)", - "file_type": "concept", - "source_file": "docs/superpowers/plans/2026-04-08-discord-auth-implementation.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "jwt session cookie (hs256)", - "id": "discord_auth_jwt_cookie" - }, - { - "label": "Component Versioning Plan", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-05-08-component-versioning.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "component versioning plan", - "id": "component_versioning_plan" - }, - { - "label": "backend/VERSION file", - "file_type": "concept", - "source_file": "docs/superpowers/plans/2026-05-08-component-versioning.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "backend/version file", - "id": "component_versioning_backend_version" - }, - { - "label": "bot/VERSION file", - "file_type": "concept", - "source_file": "docs/superpowers/plans/2026-05-08-component-versioning.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "bot/version file", - "id": "component_versioning_bot_version" - }, - { - "label": "frontend/package.json version", - "file_type": "concept", - "source_file": "docs/superpowers/plans/2026-05-08-component-versioning.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "frontend/package.json version", - "id": "component_versioning_frontend_version" - }, - { - "label": "Version Bump CI Gate", - "file_type": "concept", - "source_file": "docs/superpowers/plans/2026-05-08-component-versioning.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "version bump ci gate", - "id": "component_versioning_ci_gate" - }, - { - "label": "Post Suggestions Backend Plan", - "file_type": "document", - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "post suggestions backend plan", - "id": "post_suggestions_plan" - }, - { - "label": "post_suggestions.py Service", - "file_type": "concept", - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "post_suggestions.py service", - "id": "post_suggestions_service" - }, - { - "label": "POST /sieges/{id}/post-suggestions Endpoint", - "file_type": "concept", - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "post /sieges/{id}/post-suggestions endpoint", - "id": "post_suggestions_api" - }, - { - "label": "PostSuggestionEntry Schema", - "file_type": "concept", - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "postsuggestionentry schema", - "id": "post_suggestions_schema" - }, - { - "label": "Greedy Post Assignment Algorithm", - "file_type": "concept", - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 4, - "norm_label": "greedy post assignment algorithm", - "id": "post_suggestions_greedy_algo" - }, - { - "label": "README", - "file_type": "document", - "source_file": "README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "readme", - "id": "readme" - }, - { - "label": "CONTRIBUTING.md", - "file_type": "document", - "source_file": "CONTRIBUTING.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "contributing.md", - "id": "contributing" - }, - { - "label": "Code of Conduct", - "file_type": "document", - "source_file": "CODE_OF_CONDUCT.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "code of conduct", - "id": "code_of_conduct" - }, - { - "label": "SUPPORT.md", - "file_type": "document", - "source_file": "SUPPORT.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "support.md", - "id": "support" - }, - { - "label": "Infrastructure README", - "file_type": "document", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "infrastructure readme", - "id": "infra_readme_infrastructure" - }, - { - "label": "main.bicep", - "file_type": "code", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "main.bicep", - "id": "infra_readme_main_bicep" - }, - { - "label": "modules/registry.bicep", - "file_type": "code", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "modules/registry.bicep", - "id": "infra_readme_registry_bicep" - }, - { - "label": "modules/log-analytics.bicep", - "file_type": "code", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "modules/log-analytics.bicep", - "id": "infra_readme_log_analytics_bicep" - }, - { - "label": "modules/app-insights.bicep", - "file_type": "code", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "modules/app-insights.bicep", - "id": "infra_readme_app_insights_bicep" - }, - { - "label": "modules/postgres.bicep", - "file_type": "code", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "modules/postgres.bicep", - "id": "infra_readme_postgres_bicep" - }, - { - "label": "modules/keyvault.bicep", - "file_type": "code", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "modules/keyvault.bicep", - "id": "infra_readme_keyvault_bicep" - }, - { - "label": "modules/container-env.bicep", - "file_type": "code", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "modules/container-env.bicep", - "id": "infra_readme_container_env_bicep" - }, - { - "label": "modules/container-apps.bicep", - "file_type": "code", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "modules/container-apps.bicep", - "id": "infra_readme_container_apps_bicep" - }, - { - "label": "Azure Container Registry", - "file_type": "concept", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "azure container registry", - "id": "infra_readme_azure_container_registry" - }, - { - "label": "PostgreSQL Flexible Server", - "file_type": "concept", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "postgresql flexible server", - "id": "infra_readme_postgres_flexible_server" - }, - { - "label": "Container Apps Environment", - "file_type": "concept", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "container apps environment", - "id": "infra_readme_container_apps_environment" - }, - { - "label": "siege-api Container App", - "file_type": "concept", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "siege-api container app", - "id": "infra_readme_siege_api" - }, - { - "label": "siege-bot Container App", - "file_type": "concept", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "siege-bot container app", - "id": "infra_readme_siege_bot" - }, - { - "label": "siege-frontend Container App", - "file_type": "concept", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "siege-frontend container app", - "id": "infra_readme_siege_frontend" - }, - { - "label": "ACR weekly-purge Task", - "file_type": "concept", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "acr weekly-purge task", - "id": "infra_readme_weekly_purge_task" - }, - { - "label": "main.bicepparam (dev)", - "file_type": "code", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "main.bicepparam (dev)", - "id": "infra_readme_main_bicepparam" - }, - { - "label": "main.prod.bicepparam", - "file_type": "code", - "source_file": "infra/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "main.prod.bicepparam", - "id": "infra_readme_main_prod_bicepparam" - }, - { - "label": "Excel Import Scripts README", - "file_type": "document", - "source_file": "scripts/excel-import/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "excel import scripts readme", - "id": "excel_import_readme_scripts" - }, - { - "label": "seed_db.py", - "file_type": "code", - "source_file": "scripts/excel-import/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "seed_db.py", - "id": "excel_import_readme_seed_db_py" - }, - { - "label": "run_migrations.sh", - "file_type": "code", - "source_file": "scripts/excel-import/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "run_migrations.sh", - "id": "excel_import_readme_run_migrations_sh" - }, - { - "label": "import_members.py", - "file_type": "code", - "source_file": "scripts/excel-import/README.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "import_members.py", - "id": "excel_import_readme_import_members_py" - }, - { - "label": "openpyxl", - "file_type": "concept", - "source_file": "scripts/excel-import/requirements.txt", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "openpyxl", - "id": "requirements_openpyxl" - }, - { - "label": "sqlalchemy[asyncio]", - "file_type": "concept", - "source_file": "scripts/excel-import/requirements.txt", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "sqlalchemy[asyncio]", - "id": "requirements_sqlalchemy" - }, - { - "label": "python-dotenv", - "file_type": "concept", - "source_file": "scripts/excel-import/requirements.txt", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 3, - "norm_label": "python-dotenv", - "id": "requirements_python_dotenv" - }, - { - "label": "FAQ Wiki Page", - "file_type": "document", - "source_file": "wiki/FAQ.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "faq wiki page", - "id": "faq_wiki" - }, - { - "label": "Getting Started Wiki Page", - "file_type": "document", - "source_file": "wiki/Getting-Started.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "getting started wiki page", - "id": "getting_started_wiki" - }, - { - "label": "Home Wiki Page", - "file_type": "document", - "source_file": "wiki/Home.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "home wiki page", - "id": "home_wiki" - }, - { - "label": "Self-Host on Any VPS Wiki Page", - "file_type": "document", - "source_file": "wiki/Self-Host-on-Any-VPS.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "self-host on any vps wiki page", - "id": "self_host_vps_wiki" - }, - { - "label": "Self-Host on Azure Wiki Page", - "file_type": "document", - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "self-host on azure wiki page", - "id": "self_host_azure_wiki" - }, - { - "label": "Wiki Sidebar", - "file_type": "document", - "source_file": "wiki/_Sidebar.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "wiki sidebar", - "id": "sidebar_wiki" - }, - { - "label": "RSL Siege Manager Application", - "file_type": "concept", - "source_file": "wiki/Home.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "rsl siege manager application", - "id": "concept_rsl_siege_manager" - }, - { - "label": "Discord OAuth2", - "file_type": "concept", - "source_file": "wiki/Self-Host-on-Any-VPS.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "discord oauth2", - "id": "concept_discord_oauth2" - }, - { - "label": "Caddy Reverse Proxy", - "file_type": "concept", - "source_file": "wiki/Self-Host-on-Any-VPS.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "caddy reverse proxy", - "id": "concept_caddy_reverse_proxy" - }, - { - "label": "GitHub Actions CI/CD", - "file_type": "concept", - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "github actions ci/cd", - "id": "concept_github_actions" - }, - { - "label": ".github/workflows/deploy.yml", - "file_type": "code", - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": ".github/workflows/deploy.yml", - "id": "concept_deploy_workflow" - }, - { - "label": ".github/workflows/infra-deploy.yml", - "file_type": "code", - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": ".github/workflows/infra-deploy.yml", - "id": "concept_infra_deploy_workflow" - }, - { - "label": "Azure Managed Identity", - "file_type": "concept", - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "azure managed identity", - "id": "concept_managed_identity" - }, - { - "label": "Application Insights", - "file_type": "concept", - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "application insights", - "id": "concept_app_insights" - }, - { - "label": "scripts/bootstrap-images.ps1", - "file_type": "code", - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "source_url": null, - "captured_at": null, - "author": null, - "contributor": null, - "community": 5, - "norm_label": "scripts/bootstrap-images.ps1", - "id": "concept_bootstrap_images_script" - } - ], - "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": "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": "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": "INFERRED", - "confidence_score": 0.8, - "source_file": "backend/app/services/buildings.py", - "source_location": "L386", - "weight": 1.0, - "source": "api_buildings_add_group", - "target": "models_position_position" - }, - { - "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": "post_suggestions_schema", - "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": "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": "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": "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": "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": "post_suggestions_schema" - }, - { - "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "backend/app/services/buildings.py", - "source_location": "L55", - "weight": 1.0, - "source": "services_buildings_rebuild_groups_for_level", - "target": "models_position_position" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "backend/app/services/buildings.py", - "source_location": "L169", - "weight": 1.0, - "source": "services_buildings_create_groups_and_positions", - "target": "models_position_position" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "backend/app/services/lifecycle.py", - "source_location": "L176", - "weight": 1.0, - "source": "api_sieges_clonesiege", - "target": "models_position_position" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "backend/app/services/sieges.py", - "source_location": "L118", - "weight": 1.0, - "source": "api_sieges_createsiege", - "target": "models_position_position" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "backend/scripts/seed_demo.py", - "source_location": "L176", - "weight": 1.0, - "source": "scripts_seed_demo_seed_buildings_and_positions", - "target": "models_position_position" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "scripts/excel-import/import_excel.py", - "source_location": "L760", - "weight": 1.0, - "source": "excel_import_import_excel_create_building_with_groups_and_positions", - "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": "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": "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": "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": "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": "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": "post_suggestions_schema" - }, - { - "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "app_discord_client_siegebot_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": "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": "post_suggestions_readme" - }, - { - "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/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": "e2e_siege_lifecycle_spec_memberrow" - }, - { - "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": "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": "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": "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": "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": "post_suggestions_readme", - "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": "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": "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": "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": "post_suggestions_readme", - "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": "post_suggestions_readme", - "target": "api_sieges_applypostsuggestions" - }, - { - "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/pages/SiegeMembersPage.tsx", - "source_location": "L13", - "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": "post_suggestions_schema" - }, - { - "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/components/PostSuggestionsModal.tsx", - "source_location": "L14", - "weight": 1.0, - "confidence_score": 1.0, - "source": "post_suggestions_readme", - "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/lib/groupPostConditions.ts", - "source_location": "L8", - "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/pages/MembersPage.tsx", - "source_location": "L5", - "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/pages/PostsPage.tsx", - "source_location": "L8", - "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/pages/SiegeSettingsPage.tsx", - "source_location": "L23", - "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", - "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": "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": "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/lib/groupPostConditions.ts", - "source_location": "L9", - "weight": 1.0, - "confidence_score": 1.0, - "source": "frontend_src_lib_grouppostconditions_ts", - "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": "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": "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": "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/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": "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/pages/SiegeMembersPage.tsx", - "source_location": "L13", - "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": "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/pages/PostsPage.tsx", - "source_location": "L8", - "weight": 1.0, - "confidence_score": 1.0, - "source": "pages_postspage_postspage", - "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/pages/SiegeSettingsPage.tsx", - "source_location": "L23", - "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/pages/SiegeSettingsPage.tsx", - "source_location": "L23", - "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": "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/pages/SiegeSettingsPage.tsx", - "source_location": "L23", - "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/components/PostSuggestionsModal.tsx", - "source_location": "L14", - "weight": 1.0, - "confidence_score": 1.0, - "source": "post_suggestions_readme", - "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": "post_suggestions_readme", - "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": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/Carousel.tsx", - "source_location": "L10", - "weight": 1.0, - "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/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/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": "post_suggestions_readme", - "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_from", - "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": "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": "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": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L30", - "weight": 1.0, - "confidence_score": 1.0, - "source": "post_suggestions_readme", - "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": "post_suggestions_readme", - "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": "post_suggestions_readme", - "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": "post_suggestions_readme", - "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": "post_suggestions_readme", - "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": "post_suggestions_readme", - "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": "post_suggestions_readme", - "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": "post_suggestions_readme", - "target": "components_postsuggestionsmodal_classify" - }, - { - "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": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L169", - "weight": 1.0, - "confidence_score": 1.0, - "source": "post_suggestions_readme", - "target": "components_postsuggestionsmodal_pill" - }, - { - "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": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L197", - "weight": 1.0, - "confidence_score": 1.0, - "source": "post_suggestions_readme", - "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": "post_suggestions_readme", - "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": "post_suggestions_readme", - "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": "post_suggestions_readme", - "target": "components_postsuggestionsmodal_summarytile" - }, - { - "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": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L345", - "weight": 1.0, - "confidence_score": 1.0, - "source": "post_suggestions_readme", - "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": "post_suggestions_readme", - "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": "post_suggestions_readme", - "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": "post_suggestions_readme", - "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": "post_suggestions_readme", - "target": "components_postsuggestionsmodal_useexpirycountdown" - }, - { - "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/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/PostSuggestionsModal.tsx", - "source_location": "L25", - "weight": 1.0, - "confidence_score": 1.0, - "source": "post_suggestions_readme", - "target": "frontend_src_components_ui_button_tsx" - }, - { - "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/components/PostSuggestionsModal.tsx", - "source_location": "L25", - "weight": 1.0, - "confidence_score": 1.0, - "source": "post_suggestions_readme", - "target": "ui_button_button" - }, - { - "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/PostSuggestionsModal.tsx", - "source_location": "L19", - "weight": 1.0, - "confidence_score": 1.0, - "source": "post_suggestions_readme", - "target": "frontend_src_components_ui_dialog_tsx" - }, - { - "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/components/PostSuggestionsModal.tsx", - "source_location": "L19", - "weight": 1.0, - "confidence_score": 1.0, - "source": "post_suggestions_readme", - "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_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/components/PostSuggestionsModal.tsx", - "source_location": "L19", - "weight": 1.0, - "confidence_score": 1.0, - "source": "post_suggestions_readme", - "target": "ui_dialog_dialogheader" - }, - { - "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/components/PostSuggestionsModal.tsx", - "source_location": "L19", - "weight": 1.0, - "confidence_score": 1.0, - "source": "post_suggestions_readme", - "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_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": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/context/AuthContext.tsx", - "source_location": "L63", - "weight": 1.0, - "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", - "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": "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": "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": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L26", - "weight": 1.0, - "confidence_score": 1.0, - "source": "post_suggestions_readme", - "target": "frontend_src_lib_utils_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": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L755", - "weight": 1.0, - "confidence_score": 1.0, - "source": "post_suggestions_readme", - "target": "lib_utils_cn" - }, - { - "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": "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": "contains", - "confidence": "EXTRACTED", - "source_file": "frontend/src/pages/LandingPage.tsx", - "source_location": "L10", - "weight": 1.0, - "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": "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": "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": "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": "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": "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": "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": "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": "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/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": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_infrastructure", - "target": "scripts_bootstrap_excel_import_ps1" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "scripts_bootstrap_excel_import_ps1", - "target": "runbook_azure_keyvault" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "scripts_bootstrap_excel_import_ps1", - "target": "infra_readme_postgres_flexible_server" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_infrastructure", - "target": "scripts_bootstrap_images_ps1" - }, - { - "relation": "semantically_similar_to", - "confidence": "AMBIGUOUS", - "confidence_score": 0.7, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 0.7, - "source": "concept_bootstrap_images_script", - "target": "scripts_bootstrap_images_ps1" - }, - { - "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": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CHANGELOG.md", - "source_location": null, - "weight": 1.0, - "source": "changelog_v120", - "target": "changelog_suggest_post_assignments" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CHANGELOG.md", - "source_location": null, - "weight": 1.0, - "source": "changelog_v120", - "target": "changelog_group_post_conditions" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CHANGELOG.md", - "source_location": null, - "weight": 1.0, - "source": "changelog_v120", - "target": "changelog_rate_limited_discord_oauth" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CHANGELOG.md", - "source_location": null, - "weight": 0.8, - "source": "changelog_v120", - "target": "changelog_v110" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "README.md", - "source_location": null, - "weight": 0.7, - "source": "readme", - "target": "changelog_v120" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CHANGELOG.md", - "source_location": null, - "weight": 0.8, - "source": "changelog_v110", - "target": "changelog_v100" - }, - { - "relation": "conceptually_related_to", - "confidence": "INFERRED", - "confidence_score": 0.9, - "source_file": "docs/design-refs/post-suggestions/README.md", - "source_location": null, - "weight": 0.9, - "source": "post_suggestions_readme", - "target": "changelog_suggest_post_assignments" - }, - { - "relation": "conceptually_related_to", - "confidence": "INFERRED", - "confidence_score": 0.9, - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "weight": 0.9, - "source": "post_suggestions_plan", - "target": "changelog_suggest_post_assignments" - }, - { - "relation": "conceptually_related_to", - "confidence": "INFERRED", - "confidence_score": 0.85, - "source_file": "CHANGELOG.md", - "source_location": null, - "weight": 0.8, - "source": "changelog_rate_limited_discord_oauth", - "target": "backend_slowapi" - }, - { - "relation": "conceptually_related_to", - "confidence": "INFERRED", - "confidence_score": 0.85, - "source_file": "CHANGELOG.md", - "source_location": null, - "weight": 0.8, - "source": "changelog_rate_limited_discord_oauth", - "target": "claude_discord_oauth2" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CLAUDE.md", - "source_location": null, - "weight": 1.0, - "source": "claude_project_overview", - "target": "claude_backend_service" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CLAUDE.md", - "source_location": null, - "weight": 1.0, - "source": "claude_project_overview", - "target": "claude_frontend_service" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CLAUDE.md", - "source_location": null, - "weight": 1.0, - "source": "claude_project_overview", - "target": "claude_bot_service" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CLAUDE.md", - "source_location": null, - "weight": 1.0, - "source": "claude_project_overview", - "target": "claude_discord_oauth2" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CLAUDE.md", - "source_location": null, - "weight": 1.0, - "source": "claude_project_overview", - "target": "claude_postgresql" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CLAUDE.md", - "source_location": null, - "weight": 1.0, - "source": "claude_project_overview", - "target": "claude_alembic" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CLAUDE.md", - "source_location": null, - "weight": 1.0, - "source": "claude_project_overview", - "target": "claude_playwright" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CLAUDE.md", - "source_location": null, - "weight": 1.0, - "source": "claude_project_overview", - "target": "impl_plan" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CLAUDE.md", - "source_location": null, - "weight": 1.0, - "source": "claude_project_overview", - "target": "wdd" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 0.9, - "source_file": "docs/superpowers/plans/2026-05-08-component-versioning.md", - "source_location": null, - "weight": 0.8, - "source": "component_versioning_plan", - "target": "claude_project_overview" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.85, - "source_file": "README.md", - "source_location": null, - "weight": 0.8, - "source": "readme", - "target": "claude_project_overview" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 0.9, - "source_file": "docs/experiments/graphify-dry-run.md", - "source_location": null, - "weight": 0.8, - "source": "graphify_dryrun", - "target": "claude_project_overview" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CLAUDE.md", - "source_location": null, - "weight": 1.0, - "source": "claude_backend_service", - "target": "backend_fastapi" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CLAUDE.md", - "source_location": null, - "weight": 1.0, - "source": "claude_backend_service", - "target": "backend_sqlalchemy" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CLAUDE.md", - "source_location": null, - "weight": 1.0, - "source": "claude_backend_service", - "target": "claude_alembic" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CLAUDE.md", - "source_location": null, - "weight": 1.0, - "source": "claude_backend_service", - "target": "claude_postgresql" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 0.9, - "source_file": "CLAUDE.md", - "source_location": null, - "weight": 1.0, - "source": "claude_frontend_service", - "target": "claude_backend_service" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 0.9, - "source_file": "CLAUDE.md", - "source_location": null, - "weight": 1.0, - "source": "claude_bot_service", - "target": "claude_backend_service" - }, - { - "relation": "conceptually_related_to", - "confidence": "INFERRED", - "confidence_score": 0.85, - "source_file": "docs/superpowers/plans/2026-05-08-component-versioning.md", - "source_location": null, - "weight": 0.8, - "source": "component_versioning_backend_version", - "target": "claude_backend_service" - }, - { - "relation": "conceptually_related_to", - "confidence": "INFERRED", - "confidence_score": 0.85, - "source_file": "docs/superpowers/plans/2026-05-08-component-versioning.md", - "source_location": null, - "weight": 0.8, - "source": "component_versioning_frontend_version", - "target": "claude_frontend_service" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.9, - "source_file": "docs/superpowers/plans/2026-04-08-discord-auth-implementation.md", - "source_location": null, - "weight": 0.9, - "source": "discord_auth_botclient_get_member", - "target": "claude_bot_service" - }, - { - "relation": "conceptually_related_to", - "confidence": "INFERRED", - "confidence_score": 0.85, - "source_file": "docs/superpowers/plans/2026-05-08-component-versioning.md", - "source_location": null, - "weight": 0.8, - "source": "component_versioning_bot_version", - "target": "claude_bot_service" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 0.9, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 0.9, - "source": "wdd_notification_flow", - "target": "claude_bot_service" - }, - { - "relation": "semantically_similar_to", - "confidence": "INFERRED", - "confidence_score": 0.95, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 0.9, - "source": "wdd_discord_auth", - "target": "claude_discord_oauth2" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "docs/mockups/mockup-login.html", - "source_location": null, - "weight": 0.7, - "source": "mockup_login", - "target": "claude_discord_oauth2" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 0.9, - "source_file": "docs/RUNBOOK.md", - "source_location": null, - "weight": 0.8, - "source": "runbook", - "target": "claude_alembic" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Any-VPS.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_vps_wiki", - "target": "claude_alembic" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "wiki/Self-Host-on-Any-VPS.md", - "source_location": null, - "weight": 0.8, - "source": "claude_alembic", - "target": "infra_readme_postgres_flexible_server" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "weight": 1.0, - "source": "impl_plan_phase5", - "target": "claude_playwright" - }, - { - "relation": "conceptually_related_to", - "confidence": "INFERRED", - "confidence_score": 0.95, - "source_file": "CLAUDE.md", - "source_location": null, - "weight": 0.9, - "source": "claude_playwright", - "target": "backend_playwright_dep" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docker-compose.yml", - "source_location": null, - "weight": 1.0, - "source": "dockercompose_stack", - "target": "dockercompose_postgres" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docker-compose.yml", - "source_location": null, - "weight": 1.0, - "source": "dockercompose_stack", - "target": "dockercompose_backend" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docker-compose.yml", - "source_location": null, - "weight": 1.0, - "source": "dockercompose_stack", - "target": "dockercompose_frontend" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docker-compose.yml", - "source_location": null, - "weight": 1.0, - "source": "dockercompose_stack", - "target": "dockercompose_bot" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docker-compose.prod.yml", - "source_location": null, - "weight": 1.0, - "source": "dockercomposeprod_overlay", - "target": "dockercompose_stack" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "README.md", - "source_location": null, - "weight": 1.0, - "source": "readme", - "target": "dockercompose_stack" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Getting-Started.md", - "source_location": null, - "weight": 1.0, - "source": "getting_started_wiki", - "target": "dockercompose_stack" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Any-VPS.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_vps_wiki", - "target": "dockercompose_stack" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docker-compose.yml", - "source_location": null, - "weight": 1.0, - "source": "dockercompose_backend", - "target": "dockercompose_postgres" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docker-compose.yml", - "source_location": null, - "weight": 1.0, - "source": "dockercompose_bot", - "target": "dockercompose_postgres" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docker-compose.yml", - "source_location": null, - "weight": 1.0, - "source": "dockercompose_frontend", - "target": "dockercompose_backend" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "backend/requirements.txt", - "source_location": null, - "weight": 1.0, - "source": "backend_requirements", - "target": "backend_fastapi" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "backend/requirements.txt", - "source_location": null, - "weight": 1.0, - "source": "backend_requirements", - "target": "backend_sqlalchemy" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "backend/requirements.txt", - "source_location": null, - "weight": 1.0, - "source": "backend_requirements", - "target": "backend_asyncpg" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "backend/requirements.txt", - "source_location": null, - "weight": 1.0, - "source": "backend_requirements", - "target": "backend_pyjwt" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "backend/requirements.txt", - "source_location": null, - "weight": 1.0, - "source": "backend_requirements", - "target": "backend_slowapi" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "backend/requirements.txt", - "source_location": null, - "weight": 1.0, - "source": "backend_requirements", - "target": "backend_playwright_dep" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "backend/requirements.txt", - "source_location": null, - "weight": 1.0, - "source": "backend_requirements", - "target": "backend_otel" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 0.9, - "source_file": "docs/superpowers/plans/2026-04-08-discord-auth-implementation.md", - "source_location": null, - "weight": 0.9, - "source": "discord_auth_get_current_user", - "target": "backend_fastapi" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "scripts/excel-import/requirements.txt", - "source_location": null, - "weight": 1.0, - "source": "excel_import_readme_scripts", - "target": "backend_asyncpg" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.85, - "source_file": "scripts/excel-import/requirements.txt", - "source_location": null, - "weight": 0.85, - "source": "excel_import_readme_import_members_py", - "target": "backend_asyncpg" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-04-08-discord-auth-implementation.md", - "source_location": null, - "weight": 1.0, - "source": "discord_auth_get_current_user", - "target": "backend_pyjwt" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-04-08-discord-auth-implementation.md", - "source_location": null, - "weight": 1.0, - "source": "discord_auth_jwt_cookie", - "target": "backend_pyjwt" - }, - { - "relation": "conceptually_related_to", - "confidence": "INFERRED", - "confidence_score": 0.9, - "source_file": "docs/RUNBOOK.md", - "source_location": null, - "weight": 0.9, - "source": "runbook_app_insights", - "target": "backend_otel" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "bot/requirements-dev.txt", - "source_location": null, - "weight": 1.0, - "source": "bot_requirements_dev", - "target": "bot_requirements" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "bot/requirements.txt", - "source_location": null, - "weight": 1.0, - "source": "bot_requirements", - "target": "bot_discordpy" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "bot/requirements.txt", - "source_location": null, - "weight": 1.0, - "source": "bot_requirements", - "target": "bot_fastapi" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "weight": 1.0, - "source": "impl_plan_phase5", - "target": "bot_discordpy" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "weight": 1.0, - "source": "impl_plan", - "target": "impl_plan_phase0" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "weight": 1.0, - "source": "impl_plan", - "target": "impl_plan_phase1" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "weight": 1.0, - "source": "impl_plan", - "target": "impl_plan_phase2" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "weight": 1.0, - "source": "impl_plan", - "target": "impl_plan_phase3" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "weight": 1.0, - "source": "impl_plan", - "target": "impl_plan_phase4" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "weight": 1.0, - "source": "impl_plan", - "target": "impl_plan_phase5" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "weight": 1.0, - "source": "impl_plan", - "target": "impl_plan_phase6" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "weight": 1.0, - "source": "impl_plan", - "target": "impl_plan_buildingtypeconfig" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "weight": 1.0, - "source": "impl_plan", - "target": "wdd" - }, - { - "relation": "conceptually_related_to", - "confidence": "INFERRED", - "confidence_score": 0.85, - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "weight": 0.8, - "source": "impl_plan_phase1", - "target": "wdd_siege_model" - }, - { - "relation": "implements", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "weight": 1.0, - "source": "impl_plan_phase4", - "target": "wdd_validation_rules" - }, - { - "relation": "implements", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "weight": 1.0, - "source": "impl_plan_phase4", - "target": "wdd_autofill_algorithm" - }, - { - "relation": "implements", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/IMPLEMENTATION_PLAN.md", - "source_location": null, - "weight": 1.0, - "source": "impl_plan_phase4", - "target": "wdd_attack_day_algorithm" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 0.9, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 0.9, - "source": "wdd", - "target": "impl_plan_buildingtypeconfig" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.85, - "source_file": "docs/siege_levels.md", - "source_location": null, - "weight": 0.8, - "source": "siege_levels", - "target": "impl_plan_buildingtypeconfig" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/RUNBOOK.md", - "source_location": null, - "weight": 1.0, - "source": "runbook", - "target": "runbook_azure_container_apps" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/RUNBOOK.md", - "source_location": null, - "weight": 1.0, - "source": "runbook", - "target": "runbook_azure_keyvault" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/RUNBOOK.md", - "source_location": null, - "weight": 1.0, - "source": "runbook", - "target": "runbook_azure_postgresql" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/RUNBOOK.md", - "source_location": null, - "weight": 1.0, - "source": "runbook", - "target": "runbook_app_insights" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/RUNBOOK.md", - "source_location": null, - "weight": 1.0, - "source": "runbook", - "target": "runbook_log_analytics" - }, - { - "relation": "implements", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_keyvault_bicep", - "target": "runbook_azure_keyvault" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_siege_api", - "target": "runbook_azure_keyvault" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_siege_bot", - "target": "runbook_azure_keyvault" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "runbook_azure_keyvault" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "concept_managed_identity", - "target": "runbook_azure_keyvault" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "runbook_log_analytics" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 0.85, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 0.85, - "source": "runbook_log_analytics", - "target": "concept_app_insights" - }, - { - "relation": "implements", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_log_analytics_bicep", - "target": "runbook_log_analytics" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 1.0, - "source": "wdd", - "target": "wdd_siege_model" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 1.0, - "source": "wdd", - "target": "wdd_building_model" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 1.0, - "source": "wdd", - "target": "wdd_member_model" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 1.0, - "source": "wdd", - "target": "wdd_position_model" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 1.0, - "source": "wdd", - "target": "wdd_post_model" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 1.0, - "source": "wdd", - "target": "wdd_postcondition_model" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 1.0, - "source": "wdd", - "target": "wdd_validation_rules" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 1.0, - "source": "wdd", - "target": "wdd_autofill_algorithm" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 1.0, - "source": "wdd", - "target": "wdd_attack_day_algorithm" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 1.0, - "source": "wdd", - "target": "wdd_discord_auth" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 1.0, - "source": "wdd", - "target": "wdd_notification_flow" - }, - { - "relation": "shares_data_with", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 1.0, - "source": "wdd_siege_model", - "target": "wdd_building_model" - }, - { - "relation": "shares_data_with", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 1.0, - "source": "wdd_building_model", - "target": "wdd_position_model" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.85, - "source_file": "docs/siege_levels.md", - "source_location": null, - "weight": 0.8, - "source": "siege_levels", - "target": "wdd_building_model" - }, - { - "relation": "shares_data_with", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 1.0, - "source": "wdd_position_model", - "target": "wdd_member_model" - }, - { - "relation": "shares_data_with", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 0.9, - "source": "wdd_member_model", - "target": "wdd_postcondition_model" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 0.9, - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "weight": 0.9, - "source": "post_suggestions_plan", - "target": "wdd_member_model" - }, - { - "relation": "shares_data_with", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/WEB_DESIGN_DOCUMENT.md", - "source_location": null, - "weight": 1.0, - "source": "wdd_post_model", - "target": "wdd_postcondition_model" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.85, - "source_file": "docs/design-refs/post-suggestions/README.md", - "source_location": null, - "weight": 0.8, - "source": "post_suggestions_readme", - "target": "wdd_post_model" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 0.9, - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "weight": 0.9, - "source": "post_suggestions_plan", - "target": "wdd_post_model" - }, - { - "relation": "conceptually_related_to", - "confidence": "EXTRACTED", - "confidence_score": 0.85, - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "weight": 0.8, - "source": "post_suggestions_plan", - "target": "wdd_autofill_algorithm" - }, - { - "relation": "conceptually_related_to", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "weight": 0.8, - "source": "post_suggestions_service", - "target": "wdd_autofill_algorithm" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-04-08-discord-auth-implementation.md", - "source_location": null, - "weight": 1.0, - "source": "discord_auth_impl_plan", - "target": "wdd_discord_auth" - }, - { - "relation": "imports", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "frontend/src/components/PostSuggestionsModal.tsx", - "source_location": "L14", - "weight": 1.0, - "confidence_score": 1.0, - "source": "post_suggestions_readme", - "target": "post_suggestions_schema" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/design-refs/post-suggestions/README.md", - "source_location": null, - "weight": 1.0, - "source": "post_suggestions_readme", - "target": "post_suggestions_difflist" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/design-refs/post-suggestions/README.md", - "source_location": null, - "weight": 1.0, - "source": "post_suggestions_readme", - "target": "post_suggestions_assignmententry" - }, - { - "relation": "conceptually_related_to", - "confidence": "INFERRED", - "confidence_score": 0.9, - "source_file": "docs/design-refs/post-suggestions/README.md", - "source_location": null, - "weight": 0.9, - "source": "post_suggestions_readme", - "target": "post_suggestions_plan" - }, - { - "relation": "shares_data_with", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/design-refs/post-suggestions/README.md", - "source_location": null, - "weight": 1.0, - "source": "post_suggestions_difflist", - "target": "post_suggestions_assignmententry" - }, - { - "relation": "semantically_similar_to", - "confidence": "INFERRED", - "confidence_score": 0.9, - "source_file": "docs/design-refs/post-suggestions/README.md", - "source_location": null, - "weight": 0.9, - "source": "post_suggestions_assignmententry", - "target": "post_suggestions_schema" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/plans/public-launch-self-hostable-and-landing-page.md", - "source_location": null, - "weight": 1.0, - "source": "public_launch_plan", - "target": "mockup_landing" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/plans/public-launch-self-hostable-and-landing-page.md", - "source_location": null, - "weight": 1.0, - "source": "public_launch_plan", - "target": "mockup_login" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/plans/public-launch-self-hostable-and-landing-page.md", - "source_location": null, - "weight": 1.0, - "source": "public_launch_plan", - "target": "self_host_anywhere" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/plans/public-launch-self-hostable-and-landing-page.md", - "source_location": null, - "weight": 1.0, - "source": "public_launch_plan", - "target": "self_host_azure" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "README.md", - "source_location": null, - "weight": 1.0, - "source": "readme", - "target": "self_host_anywhere" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "README.md", - "source_location": null, - "weight": 1.0, - "source": "readme", - "target": "self_host_azure" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-04-08-discord-auth-implementation.md", - "source_location": null, - "weight": 1.0, - "source": "discord_auth_impl_plan", - "target": "discord_auth_get_current_user" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-04-08-discord-auth-implementation.md", - "source_location": null, - "weight": 1.0, - "source": "discord_auth_impl_plan", - "target": "discord_auth_botclient_get_member" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-04-08-discord-auth-implementation.md", - "source_location": null, - "weight": 1.0, - "source": "discord_auth_impl_plan", - "target": "discord_auth_jwt_cookie" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-05-08-component-versioning.md", - "source_location": null, - "weight": 1.0, - "source": "component_versioning_plan", - "target": "component_versioning_backend_version" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-05-08-component-versioning.md", - "source_location": null, - "weight": 1.0, - "source": "component_versioning_plan", - "target": "component_versioning_bot_version" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-05-08-component-versioning.md", - "source_location": null, - "weight": 1.0, - "source": "component_versioning_plan", - "target": "component_versioning_frontend_version" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-05-08-component-versioning.md", - "source_location": null, - "weight": 1.0, - "source": "component_versioning_plan", - "target": "component_versioning_ci_gate" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-05-08-component-versioning.md", - "source_location": null, - "weight": 1.0, - "source": "component_versioning_plan", - "target": "contributing" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "weight": 1.0, - "source": "post_suggestions_plan", - "target": "post_suggestions_service" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "weight": 1.0, - "source": "post_suggestions_plan", - "target": "post_suggestions_api" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "weight": 1.0, - "source": "post_suggestions_plan", - "target": "post_suggestions_schema" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "weight": 1.0, - "source": "post_suggestions_plan", - "target": "post_suggestions_greedy_algo" - }, - { - "relation": "implements", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "weight": 1.0, - "source": "post_suggestions_service", - "target": "post_suggestions_greedy_algo" - }, - { - "relation": "calls", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "weight": 1.0, - "source": "post_suggestions_api", - "target": "post_suggestions_service" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "docs/superpowers/plans/2026-05-09-post-suggestions.md", - "source_location": null, - "weight": 1.0, - "source": "post_suggestions_api", - "target": "post_suggestions_schema" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CONTRIBUTING.md", - "source_location": null, - "weight": 1.0, - "source": "contributing", - "target": "readme" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "README.md", - "source_location": null, - "weight": 1.0, - "source": "readme", - "target": "code_of_conduct" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CONTRIBUTING.md", - "source_location": null, - "weight": 1.0, - "source": "contributing", - "target": "code_of_conduct" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "CONTRIBUTING.md", - "source_location": null, - "weight": 1.0, - "source": "contributing", - "target": "support" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_infrastructure", - "target": "infra_readme_main_bicep" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_infrastructure", - "target": "infra_readme_registry_bicep" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_infrastructure", - "target": "infra_readme_log_analytics_bicep" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_infrastructure", - "target": "infra_readme_app_insights_bicep" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_infrastructure", - "target": "infra_readme_postgres_bicep" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_infrastructure", - "target": "infra_readme_keyvault_bicep" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_infrastructure", - "target": "infra_readme_container_env_bicep" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_infrastructure", - "target": "infra_readme_container_apps_bicep" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_infrastructure", - "target": "self_host_azure_wiki" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.9, - "source_file": "infra/README.md", - "source_location": null, - "weight": 0.9, - "source": "infra_readme_main_bicep", - "target": "infra_readme_registry_bicep" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.9, - "source_file": "infra/README.md", - "source_location": null, - "weight": 0.9, - "source": "infra_readme_main_bicep", - "target": "infra_readme_log_analytics_bicep" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.9, - "source_file": "infra/README.md", - "source_location": null, - "weight": 0.9, - "source": "infra_readme_main_bicep", - "target": "infra_readme_app_insights_bicep" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.9, - "source_file": "infra/README.md", - "source_location": null, - "weight": 0.9, - "source": "infra_readme_main_bicep", - "target": "infra_readme_postgres_bicep" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.9, - "source_file": "infra/README.md", - "source_location": null, - "weight": 0.9, - "source": "infra_readme_main_bicep", - "target": "infra_readme_keyvault_bicep" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.9, - "source_file": "infra/README.md", - "source_location": null, - "weight": 0.9, - "source": "infra_readme_main_bicep", - "target": "infra_readme_container_env_bicep" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.9, - "source_file": "infra/README.md", - "source_location": null, - "weight": 0.9, - "source": "infra_readme_main_bicep", - "target": "infra_readme_container_apps_bicep" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_main_bicep", - "target": "infra_readme_main_bicepparam" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_main_bicep", - "target": "infra_readme_main_prod_bicepparam" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "infra_readme_main_bicep" - }, - { - "relation": "implements", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_registry_bicep", - "target": "infra_readme_azure_container_registry" - }, - { - "relation": "implements", - "confidence": "EXTRACTED", - "confidence_score": 0.85, - "source_file": "infra/README.md", - "source_location": null, - "weight": 0.85, - "source": "infra_readme_registry_bicep", - "target": "infra_readme_weekly_purge_task" - }, - { - "relation": "implements", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_app_insights_bicep", - "target": "concept_app_insights" - }, - { - "relation": "implements", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_postgres_bicep", - "target": "infra_readme_postgres_flexible_server" - }, - { - "relation": "implements", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_container_env_bicep", - "target": "infra_readme_container_apps_environment" - }, - { - "relation": "implements", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_container_apps_bicep", - "target": "infra_readme_siege_api" - }, - { - "relation": "implements", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_container_apps_bicep", - "target": "infra_readme_siege_bot" - }, - { - "relation": "implements", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_container_apps_bicep", - "target": "infra_readme_siege_frontend" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "infra_readme_container_apps_bicep" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "infra_readme_azure_container_registry" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.95, - "source_file": "infra/README.md", - "source_location": null, - "weight": 0.95, - "source": "infra_readme_siege_api", - "target": "infra_readme_postgres_flexible_server" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.9, - "source_file": "infra/README.md", - "source_location": null, - "weight": 0.9, - "source": "infra_readme_siege_bot", - "target": "infra_readme_postgres_flexible_server" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "wiki/Self-Host-on-Any-VPS.md", - "source_location": null, - "weight": 0.8, - "source": "self_host_vps_wiki", - "target": "infra_readme_postgres_flexible_server" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "infra_readme_postgres_flexible_server" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_weekly_purge_task", - "target": "infra_readme_siege_api" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "infra_readme_siege_api" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_weekly_purge_task", - "target": "infra_readme_siege_bot" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "infra_readme_siege_bot" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "infra/README.md", - "source_location": null, - "weight": 1.0, - "source": "infra_readme_weekly_purge_task", - "target": "infra_readme_siege_frontend" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "infra_readme_siege_frontend" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "infra_readme_main_prod_bicepparam" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "scripts/excel-import/README.md", - "source_location": null, - "weight": 1.0, - "source": "excel_import_readme_scripts", - "target": "excel_import_readme_seed_db_py" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "scripts/excel-import/README.md", - "source_location": null, - "weight": 1.0, - "source": "excel_import_readme_scripts", - "target": "excel_import_readme_run_migrations_sh" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "scripts/excel-import/README.md", - "source_location": null, - "weight": 1.0, - "source": "excel_import_readme_scripts", - "target": "excel_import_readme_import_members_py" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "scripts/excel-import/requirements.txt", - "source_location": null, - "weight": 1.0, - "source": "excel_import_readme_scripts", - "target": "requirements_openpyxl" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "scripts/excel-import/requirements.txt", - "source_location": null, - "weight": 1.0, - "source": "excel_import_readme_scripts", - "target": "requirements_sqlalchemy" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "scripts/excel-import/requirements.txt", - "source_location": null, - "weight": 1.0, - "source": "excel_import_readme_scripts", - "target": "requirements_python_dotenv" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.85, - "source_file": "scripts/excel-import/requirements.txt", - "source_location": null, - "weight": 0.85, - "source": "excel_import_readme_import_members_py", - "target": "requirements_sqlalchemy" - }, - { - "relation": "references", - "confidence": "INFERRED", - "confidence_score": 0.75, - "source_file": "scripts/excel-import/requirements.txt", - "source_location": null, - "weight": 0.75, - "source": "excel_import_readme_import_members_py", - "target": "requirements_openpyxl" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/FAQ.md", - "source_location": null, - "weight": 1.0, - "source": "faq_wiki", - "target": "self_host_vps_wiki" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/FAQ.md", - "source_location": null, - "weight": 1.0, - "source": "faq_wiki", - "target": "self_host_azure_wiki" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Getting-Started.md", - "source_location": null, - "weight": 1.0, - "source": "getting_started_wiki", - "target": "faq_wiki" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Home.md", - "source_location": null, - "weight": 1.0, - "source": "home_wiki", - "target": "faq_wiki" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/_Sidebar.md", - "source_location": null, - "weight": 1.0, - "source": "sidebar_wiki", - "target": "faq_wiki" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Getting-Started.md", - "source_location": null, - "weight": 1.0, - "source": "getting_started_wiki", - "target": "self_host_vps_wiki" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Getting-Started.md", - "source_location": null, - "weight": 1.0, - "source": "getting_started_wiki", - "target": "self_host_azure_wiki" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Home.md", - "source_location": null, - "weight": 1.0, - "source": "home_wiki", - "target": "getting_started_wiki" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/_Sidebar.md", - "source_location": null, - "weight": 1.0, - "source": "sidebar_wiki", - "target": "getting_started_wiki" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Home.md", - "source_location": null, - "weight": 1.0, - "source": "home_wiki", - "target": "self_host_vps_wiki" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Home.md", - "source_location": null, - "weight": 1.0, - "source": "home_wiki", - "target": "self_host_azure_wiki" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Home.md", - "source_location": null, - "weight": 1.0, - "source": "home_wiki", - "target": "concept_rsl_siege_manager" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/_Sidebar.md", - "source_location": null, - "weight": 1.0, - "source": "sidebar_wiki", - "target": "home_wiki" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "self_host_vps_wiki" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Any-VPS.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_vps_wiki", - "target": "concept_discord_oauth2" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Any-VPS.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_vps_wiki", - "target": "concept_caddy_reverse_proxy" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/_Sidebar.md", - "source_location": null, - "weight": 1.0, - "source": "sidebar_wiki", - "target": "self_host_vps_wiki" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "concept_github_actions" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "concept_deploy_workflow" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "concept_infra_deploy_workflow" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "concept_managed_identity" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "concept_app_insights" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "concept_bootstrap_images_script" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/Self-Host-on-Azure.md", - "source_location": null, - "weight": 1.0, - "source": "self_host_azure_wiki", - "target": "concept_discord_oauth2" - }, - { - "relation": "references", - "confidence": "EXTRACTED", - "confidence_score": 1.0, - "source_file": "wiki/_Sidebar.md", - "source_location": null, - "weight": 1.0, - "source": "sidebar_wiki", - "target": "self_host_azure_wiki" - } - ], - "hyperedges": [], - "built_at_commit": "6085fd660692d0eade02696128e186f03f2c8f5e" -} \ No newline at end of file diff --git a/evaluations/rsl-siege-manager/graphify-out/manifest.json b/evaluations/rsl-siege-manager/graphify-out/manifest.json deleted file mode 100644 index 87e0f395..00000000 --- a/evaluations/rsl-siege-manager/graphify-out/manifest.json +++ /dev/null @@ -1,918 +0,0 @@ -{ - "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\\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\\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\\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\\__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\\graphify-out-with-tests\\graph.html": { - "mtime": 1778718921.8433201, - "hash": "b6226c2e30e0ccfbc56b15297319fa65" - }, - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\graphify-out-with-tests\\GRAPH_REPORT.md": { - "mtime": 1778718921.7281322, - "hash": "2c56ab55dda9d94cb5aab4e1a21a2cf1" - }, - "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/evaluations/rsl-siege-manager/results.md b/evaluations/rsl-siege-manager/results.md deleted file mode 100644 index 7b2d6ba8..00000000 --- a/evaluations/rsl-siege-manager/results.md +++ /dev/null @@ -1,194 +0,0 @@ -# Graphify Dry-Run โ€” Results & Decision - -**Date:** 2026-05-15 -**Tool:** [`safishamsi/graphify`](https://github.com/safishamsi/graphify) (PyPI `graphifyy`) -**Tracking issue:** #397 -**Runbook:** [`runbook.md`](./runbook.md) -**Source codebase:** [`glitchwerks/rsl-siege-manager`](https://github.com/glitchwerks/rsl-siege-manager) @ `6085fd66` -**Decision:** Do not adopt. - ---- - -## TL;DR - -The dry-run was executed twice against rsl-siege-manager at commit `6085fd66` โ€” once excluding tests, once including them. Evaluated against the acid-test criteria from #397 (god nodes, surprising connections, and suggested questions should reflect things the user would nominate themselves), the tool failed on all three headline outputs. The without-tests run surfaces utilities and React page components alongside legitimate domain models; the with-tests run is dominated by test fixtures. Neither output justifies integrating a `PreToolUse` hook. - ---- - -## What was run - -Two runs at commit `6085fd66`: - -| Run | Scope | Nodes | Edges | Communities | Extraction quality | -|-----|-------|-------|-------|-------------|-------------------| -| A (codebase only) | `.graphifyignore` excluded `backend/tests/`, `frontend/src/**/__tests__/` | 833 | 1758 | 52 | 85% EXTRACTED / 15% INFERRED (avg confidence 0.59) | -| B (codebase + tests) | No exclusions beyond vendored deps | 1886 | 3876 | 141 | 90% EXTRACTED / 10% INFERRED (avg confidence 0.62) | - -Run cost: $0 token cost in both cases. graphify uses tree-sitter for code extraction; LLM API calls fire only for non-code files. After `.graphifyignore`, there were effectively none. - ---- - -## Evaluation against the acid test - -Issue #397 set this bar: - -> "whether GRAPH_REPORT.md's named extractions (god nodes, surprising connections, suggested questions) reflect things the user would nominate themselves โ€” generic graph-theory output ('`index.ts` is highly connected') means it didn't work." - -Each finding below quotes the report directly. The raw artifacts are not committed (see "Artifact handling"), but the quotes are verifiable by re-running the dry-run against the same commit. - -### Finding 1 โ€” Test fixtures dominate "core abstractions" with tests included - -Run B's god-node list, verbatim (`graphify-out-with-tests/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. - -This is the cleanest failure signal in the dataset. The god-node list is explicitly labeled "your core abstractions." No developer would nominate `_make_siege()` as a core abstraction of a siege-assignment web app. The metric โ€” degree centrality โ€” is measuring test coverage, not architecture. The inversion is structural: the better your test coverage, the more your test factories saturate every part of the codebase, and the higher their degree count climbs. Codebases that most need architectural insight (low coverage, high complexity) will produce the cleanest god-node lists. Codebases that least need it (high coverage, known domain) will look like run B. - -### Finding 2 โ€” Codebase-only god nodes are surface-level - -Run A's god-node list, verbatim (`graphify-out/GRAPH_REPORT.md`, lines 55โ€“64): - -``` -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 -``` - -`SiegeMember`, `BuildingType`, and `MemberRole` at positions 1, 7, and 9 are legitimate domain models a developer would identify as important. That is three of ten. - -The remaining seven are less useful. `BoardPage()`, `PostsPage()`, and `MembersPage()` at positions 2, 6, and 8 are React top-level page components โ€” they import many things because they are entry points, not because they encode domain logic. `cn()` at position 5 is a one-line Tailwind class-merging utility (`src/lib/utils.ts`). It scores 29 edges because every component that merges conditional classes imports it. This is the canonical generic-graph-theory false positive the runbook warned about: `cn()` is "highly connected" in the same way `/dev/null` would be if files wrote to it โ€” the connection count reflects a structural pattern, not semantic importance. `Post Suggestions Modal Handoff` at position 3 is a planning document node extracted from `docs/design-refs/`, not a code entity at all. `Self-Host on Azure Wiki Page` at position 10 is a wiki article. - -The acid test asks whether these are things the user would nominate. They are not. - -### Finding 3 โ€” Surprising connections cross language boundaries spuriously - -Both runs surface INFERRED edges between Python backend types and TypeScript frontend types, presented under the heading "Surprising Connections (you probably didn't know these)." From run A (`graphify-out/GRAPH_REPORT.md`, lines 73โ€“74): - -``` -- `AuthError` --uses--> `Member` [INFERRED] - backend/app/api/auth.py โ†’ frontend/src/api/types.ts -``` - -And from run B (`graphify-out-with-tests/GRAPH_REPORT.md`, lines 158โ€“159): - -``` -- `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 โ€” `AuthError` and `Member` share a namespace with identically-named constructs in the frontend โ€” presented as semantic relationships. The confidence is low (avg INFERRED confidence 0.59 in run A, 0.62 in run B), but the framing ("you probably didn't know these") presents them as insights worth investigating. They are not. - -The one genuinely plausible INFERRED connection in run A is: - -``` -- `PostPriorityResponse` --uses--> `PostPriorityConfig` [INFERRED] - backend/app/api/post_priority_config.py โ†’ frontend/src/api/posts.ts -``` - -The backend schema and the frontend type do mirror each other by contract. But that relationship is a deliberate design decision well-known to anyone who wrote it โ€” not a discovery. - -### Finding 4 โ€” Community cohesion is universally weak - -The majority of rsl-siege-manager's 52 communities (run A) score between 0.05 and 0.17 on cohesion. Run A community distribution: - -- Communities 0, 2, 3, 6: cohesion 0.05โ€“0.06 (the four largest communities, 36โ€“112 nodes each) -- Most remaining communities: cohesion 0.08โ€“0.17 -- Cohesion above 0.25: six communities, all small (3โ€“10 nodes) - -The report itself flags cohesion 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. - -rsl-siege-manager has a clean three-service architecture (backend / frontend / bot) that any developer can describe in a sentence. The graph algorithm is not finding that structure โ€” it is producing communities with no legible semantic identity and flagging most of them as internally incoherent. - -### Finding 5 โ€” Noise inflated into knowledge gaps - -Run A reports 259 isolated nodes; run B reports 752. The leading examples in both are identical (`graphify-out/GRAPH_REPORT.md`, line 213; `graphify-out-with-tests/GRAPH_REPORT.md`, line 447): - -``` -`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. A migration docstring like `"make siege date nullable"` is a change-tracking annotation, not an architectural entity. There are 17 Alembic migration files in this repo. The isolated-node count growing from 259 to 752 when tests are added is almost entirely test docstrings and test function descriptions parsed the same way. - -The report labels these as "possible documentation gaps or missing edges" โ€” a framing that implies they are meaningful silences the developer should investigate. They are not gaps; they are noise. - -### Finding 6 โ€” Suggested questions are self-referential - -The Suggested Questions section in both runs 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...?" These ask the developer to explain why a test fixture has high betweenness. The answer is obvious: it creates the primary domain object; every test uses it. - -2. **Inferred-edge audits:** "Are the 17 inferred relationships involving `SiegeMember` (e.g. with `Base` and `TestSeedDemoMembers`) actually correct?" This is the tool asking the developer to validate the tool's own low-confidence connections. It is not the tool answering questions about the codebase; it is the tool outsourcing its uncertainty. - -Run A's most interesting question โ€” "What is the exact relationship between `bootstrap-images.ps1` and `scripts/bootstrap-images.ps1`?" โ€” is itself tagged AMBIGUOUS. The answer is: they are the same script referenced by two slightly different paths in different contexts. This is a file-naming question, not an architectural one. - ---- - -## What graphify is good at - -The throughput is fine: 833 nodes in a few minutes, $0 LLM cost on a code-heavy repo. The tree-sitter extraction is genuinely fast and does pick up real entities โ€” `SiegeMember`, `BuildingType`, and `MemberRole` in the god-node list are correct. The `graph.html` interactive visualization is well-built and easy to navigate. The EXTRACTED cross-service connections are occasionally real: `PostPriorityResponse --uses--> PostPriorityConfig` between `backend/app/api/post_priority_config.py` and `frontend/src/api/posts.ts` reflects an actual contract. - -The problem is not the underlying graph build. The problem is what the report does with it. - ---- - -## Why this is a rejection, not a tuning problem - -The headline outputs โ€” god nodes, surprising connections, suggested questions โ€” are what would justify wiring a `PreToolUse` hook that nudges the assistant to consult `GRAPH_REPORT.md` on every `grep`/`rg`/`find` invocation. If those outputs are mostly test fixtures (run B), surface-level import counts (run A), low-confidence cross-language inferences, and self-referential audit requests, then the hook would be steering the assistant's attention toward noise on every search. Tightening `.graphifyignore` further would fix run B's test-fixture problem, but it would not fix the architecture-of-the-metric problem visible in run A: degree centrality will always surface utilities and entry points over domain logic, regardless of what the ignore file excludes. The tool is measuring the right thing (connectivity) for the wrong purpose (identifying abstractions worth knowing about). - ---- - -## Cost incurred vs cost avoided - -**Cost incurred:** - -- ~10 minutes of CLI time across two runs. -- $0 LLM cost (tree-sitter handled all code; no non-code files survived the ignore filter in any meaningful quantity). - -**Cost avoided by not adopting:** - -The two harness mutations from `graphify claude install` documented in #397: - -1. **Global CLAUDE.md append** โ€” a `# graphify` block appended to `~/.claude/CLAUDE.md` without a parseable fence marker, requiring manual cleanup on backout. -2. **Per-project `PreToolUse` hook** โ€” fires on `Bash` commands containing `grep`/`rg`/`find` substrings. As noted in the runbook's Windows-specific gotchas section: the hook matcher is substring-based (`*grep*`), creating false-positive nudges on `pg_dump | grep`, `kubectl get pods | grep`, and similar. The hook also uses `python3` (not `python.exe`) which may silently no-op on Windows. - ---- - -## Artifact handling - -The raw outputs from both runs โ€” `graph.html`, `graph.json`, `GRAPH_REPORT.md`, `cache/`, `manifest.json` (approximately 12 MB total) โ€” are committed alongside this writeup under [`./graphify-out/`](./graphify-out/) and [`./graphify-out-with-tests/`](./graphify-out-with-tests/). The quoted findings above are auditable against the originals; the interactive `graph.html` files render the underlying force-directed graph if you want to explore. - -Reproducing the run against a different revision: see [`runbook.md`](./runbook.md) for the methodology and acid-test criteria. - ---- - -## Follow-up - -- Issue tracking is disabled on this fork, so the PR that lands this evaluation is the durable record of the decision. -- No upstream contribution intended โ€” this is an evaluation of graphify as a consumer, not a change request to the tool. The fork exists as a stable point to reference if upstream evolves. - ---- - -๐Ÿค– _Generated by Claude Code on behalf of @cbeaulieu-gt_ diff --git a/evaluations/rsl-siege-manager/runbook.md b/evaluations/rsl-siege-manager/runbook.md deleted file mode 100644 index 9993518e..00000000 --- a/evaluations/rsl-siege-manager/runbook.md +++ /dev/null @@ -1,160 +0,0 @@ -# Graphify Dry-Run for rsl-siege-manager - -> **Captured artifact.** This is the runbook as used during the [rsl-siege-manager evaluation](./results.md). Originally lived at `docs/experiments/graphify-dry-run.md` in that repo; relocated here so methodology and results stay together. References to siege-web-specific paths and cleanup commands are kept verbatim โ€” they reflect the original context. - -A scoped evaluation plan for [`safishamsi/graphify`](https://github.com/safishamsi/graphify) โ€” a tool that builds a queryable knowledge graph (code + docs + PDFs + images) from a project folder and exposes it to AI coding assistants. - -**Goal of this dry-run:** produce graphify's artifacts inside `rsl-siege-manager/graphify-out/` so I can judge whether the graph genuinely illuminates this codebase, **without** modifying my global `~/.claude/CLAUDE.md`, this repo's `.claude/settings.json`, or installing any harness hooks. Everything below is reversible by deleting one folder. - ---- - -## Why this approach - -Graphify's full install does two things: - -1. **Global**: drops a skill at `~/.claude/skills/graphify/SKILL.md` and **appends a `# graphify` block to `~/.claude/CLAUDE.md`** (string-match guarded โ€” not a fenced/marker block, so manual cleanup is needed if I back it out). -2. **Per-project**: appends a `## graphify` section to this repo's `CLAUDE.md` and registers a `PreToolUse` hook in `.claude/settings.json` that nudges the assistant to consult `GRAPH_REPORT.md` whenever a `Bash` command contains `grep`/`rg`/`find`/etc. - -Both are reasonable but non-trivial mutations to harness configuration I tune carefully. The dry-run skips both, runs only the CLI, and lets me decide whether the artifact is worth the integration cost **after** seeing it. - ---- - -## Step 1 โ€” Install the CLI globally - -```powershell -uv tool install graphifyy -``` - -> The PyPI package is `graphifyy` (double-y). The CLI command is `graphify`. - -Verify it's on PATH: - -```powershell -graphify --version -``` - -If "not recognized," open a new PowerShell window โ€” `uv tool` updates PATH but the current session won't see it. - ---- - -## Step 2 โ€” Optional: gate the first build with `.graphifyignore` - -Cheap insurance. Each non-code file (markdown, PDF, image) becomes an LLM API call during the first build. A `.graphifyignore` (same syntax as `.gitignore`, including `!` negation) keeps vendored deps and build output out of scope. - -From the rsl-siege-manager root: - -```powershell -@' -node_modules/ -dist/ -build/ -.next/ -.venv/ -coverage/ -*.generated.* -*.min.js -'@ | Set-Content -Encoding UTF8 .graphifyignore -``` - -Adjust to rsl-siege-manager's actual layout. If unsure what to ignore, skip this step โ€” the build will still work, just bigger. - ---- - -## Step 3 โ€” Build the graph (the only step with $ cost) - -From the rsl-siege-manager root: - -```powershell -graphify extract . -``` - -> **Estimated cost:** `$0.10โ€“$2.00` depending on the number of docs, PDFs, and images that survive the ignore filter. Watch terminal output; `Ctrl+C` is safe at any point. - -What happens under the hood: - -| Content type | Mechanism | Cost | -| --- | --- | --- | -| Code (29 languages, AST via tree-sitter) | Local | Free | -| Docs, markdown, PDFs, images, videos | LLM API call per file | $$ | - -Watch terminal output. If it's processing far more files than expected, `Ctrl+C` and tighten `.graphifyignore` before re-running. - -Check the cost summary when it finishes: - -```powershell -Get-Content .\graphify-out\cost.json -``` - ---- - -## Step 4 โ€” Inspect the three artifacts - -```powershell -# The headline summary the assistant would read on every query -code .\graphify-out\GRAPH_REPORT.md - -# The interactive graph (click nodes, filter, search) -Start-Process .\graphify-out\graph.html - -# The raw graph data (used by the query commands below) -Get-Content .\graphify-out\graph.json | Select-Object -First 50 -``` - -**The honest evaluation lives in `GRAPH_REPORT.md`, not `graph.html`.** The viz is dopamine โ€” colorful and clickable on any codebase. The report's "god nodes," "surprising connections," and "suggested questions" sections are what tell me whether the LLM extraction actually *understood* rsl-siege-manager. If those sections name files/concepts I'd nominate myself, it worked. If they're generic ("`index.ts` is highly connected") or wrong, it didn't. - ---- - -## Step 5 โ€” Try query commands without any hook wiring - -These work directly off `graphify-out/graph.json` โ€” no skill registration, no settings.json mutation: - -```powershell -graphify query "how does authentication flow through the app?" -graphify query "what connects the database layer to the API routes?" -graphify path "" "" -graphify explain "" -``` - -**Acid test:** ask 3โ€“5 questions I already know the answer to. If it answers them correctly, the tool can help with the ones I don't. - ---- - -## Step 6 โ€” Decide - -| Outcome | Next move | -| --- | --- | -| Graph is genuinely illuminating | Run `graphify claude install` (accept the CLAUDE.md / `.claude/settings.json` mutations) | -| Useful but not always-on | Keep the CLI, rebuild manually when useful, query from terminal โ€” no install | -| Generic or wrong | Delete and move on | - ---- - -## Abort / full cleanup - -Nothing outside `rsl-siege-manager/graphify-out/` was touched. To roll back completely: - -```powershell -Remove-Item -Recurse -Force .\graphify-out -Remove-Item .\.graphifyignore # if added and unwanted -Remove-Item .\docs\experiments\graphify-dry-run.md # this file -uv tool uninstall graphifyy # remove the CLI itself -``` - -After this, the repo is byte-identical to before the dry-run, and `~/.claude/CLAUDE.md` was never modified. - ---- - -## Windows-specific gotchas to watch for - -- **`/graphify extract .` will fail in PowerShell.** PowerShell treats `/` as a path separator. Use `graphify extract .` (no leading slash). The slash form only works inside an AI coding assistant's chat prompt. -- **The PreToolUse hook graphify installs uses `python3`.** Windows installers typically register `python.exe`, not `python3.exe`. If I do eventually run `graphify claude install`, the hook's `python3 -c "..."` may silently no-op (it's wrapped in `2>/dev/null || true`) โ€” meaning the nudge never fires and I won't know. -- **The hook also relies on Bash `case` syntax.** Claude Code on Windows routes hook commands through Git Bash, so this works โ€” but it's an implicit dependency on Git Bash being present. -- **Hook matcher is substring-based on `*grep*`.** That catches `pg_dump | grep`, `kubectl get pods | grep`, anything-grep. False-positive nudges are low cost but worth knowing. - ---- - -## Reference - -- Repo: https://github.com/safishamsi/graphify -- PyPI: https://pypi.org/project/graphifyy/ -- Repo signals at evaluation time (2026-05-13): 47k stars, 5k forks, MIT, ~5 weeks old. Star count is anomalously high for age โ€” treat it as marketing signal, not quality signal. Evaluate the artifact, not the badges. diff --git a/evaluations/rsl-siege-manager/graphify-out-with-tests/GRAPH_REPORT.md b/worked/rsl-siege-manager/GRAPH_REPORT.md similarity index 100% rename from evaluations/rsl-siege-manager/graphify-out-with-tests/GRAPH_REPORT.md rename to worked/rsl-siege-manager/GRAPH_REPORT.md diff --git a/worked/rsl-siege-manager/README.md b/worked/rsl-siege-manager/README.md new file mode 100644 index 00000000..b3d5b243 --- /dev/null +++ b/worked/rsl-siege-manager/README.md @@ -0,0 +1,88 @@ +# Case Study: rsl-siege-manager (Python + TypeScript monorepo) + +A graphify dry-run against [`glitchwerks/rsl-siege-manager`](https://github.com/glitchwerks/rsl-siege-manager) โ€” a real-world web app with a Python (FastAPI) backend, a TypeScript (React + Vite) frontend, and a Python Discord bot, all in one repo. Captured here as a worked example of running graphify on a mixed-language full-stack codebase that includes a substantial test suite. + +**Corpus:** `glitchwerks/rsl-siege-manager` @ commit `6085fd66` +**Date:** 2026-05-15 +**Findings:** [`review.md`](./review.md) +**Raw artifacts:** [`GRAPH_REPORT.md`](./GRAPH_REPORT.md), [`graph.html`](./graph.html), [`graph.json`](./graph.json), [`manifest.json`](./manifest.json) + +## How to reproduce + +### 1. Clone the corpus + +```bash +git clone https://github.com/glitchwerks/rsl-siege-manager +cd rsl-siege-manager +git checkout 6085fd66 +``` + +### 2. Install the CLI + +```powershell +uv tool install graphifyy +``` + +> The PyPI package is `graphifyy` (double-y). The CLI command is `graphify`. + +Verify it's on PATH: + +```powershell +graphify --version +``` + +If "not recognized" on Windows, open a new shell โ€” `uv tool` updates PATH but the current session won't see it. + +### 3. Run extraction + +This case study ran extraction with no `.graphifyignore` (the run included tests). To reproduce a tests-included run: + +```powershell +graphify extract . +``` + +Watch terminal output. graphify uses tree-sitter for code (free, fast) and LLM API calls only for non-code files (markdown, PDFs, images). On a code-heavy repo like rsl-siege-manager, the cost is dominated by docs. + +Check the cost summary when it finishes: + +```powershell +Get-Content .\graphify-out\cost.json +``` + +### 4. Inspect + +```powershell +# The headline summary an assistant would read +code .\graphify-out\GRAPH_REPORT.md + +# The interactive graph +Start-Process .\graphify-out\graph.html +``` + +## What's in this directory + +| File | What it is | +|---|---| +| `README.md` | This file โ€” corpus description + reproduction steps | +| `review.md` | Findings against the headline outputs in `GRAPH_REPORT.md` | +| `GRAPH_REPORT.md` | Raw graphify report (god nodes, communities, surprising connections, suggested questions) | +| `graph.html` | Interactive force-directed visualization | +| `graph.json` | Underlying graph data used by `graphify query` | +| `manifest.json` | Per-file extraction record | + +The AST cache (`graphify-out/cache/`) is regenerable and not committed. + +## Why this corpus + +rsl-siege-manager is structurally interesting for graphify evaluation because: + +- **Three services in one repo** โ€” Python backend, TypeScript frontend, Python bot โ€” exercises cross-language inference. +- **Substantial test suite** โ€” both Python (`backend/tests/`) and TypeScript (`frontend/src/**/__tests__/`) โ€” surfaces how degree-centrality behaves on covered codebases. +- **17 Alembic migrations** with revision docstrings โ€” exercises how docstring-shaped content is or is not treated as graph entities. +- **Clean three-tier architecture** โ€” a developer can describe the structure in one sentence, giving a clear ground truth to evaluate community detection against. + +## Reference + +- graphify repo: https://github.com/safishamsi/graphify +- graphify PyPI: https://pypi.org/project/graphifyy/ +- rsl-siege-manager: https://github.com/glitchwerks/rsl-siege-manager diff --git a/evaluations/rsl-siege-manager/graphify-out-with-tests/graph.html b/worked/rsl-siege-manager/graph.html similarity index 100% rename from evaluations/rsl-siege-manager/graphify-out-with-tests/graph.html rename to worked/rsl-siege-manager/graph.html diff --git a/evaluations/rsl-siege-manager/graphify-out-with-tests/graph.json b/worked/rsl-siege-manager/graph.json similarity index 100% rename from evaluations/rsl-siege-manager/graphify-out-with-tests/graph.json rename to worked/rsl-siege-manager/graph.json diff --git a/evaluations/rsl-siege-manager/graphify-out-with-tests/manifest.json b/worked/rsl-siege-manager/manifest.json similarity index 100% rename from evaluations/rsl-siege-manager/graphify-out-with-tests/manifest.json rename to worked/rsl-siege-manager/manifest.json 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.