vault backup: 2026-05-18 12:09:21

This commit is contained in:
Vadym Samoilenko 2026-05-18 12:09:21 +01:00
parent 8d15dd2942
commit c45a3a18f3
28 changed files with 12576 additions and 686 deletions

View file

@ -4,7 +4,7 @@
"syncFolder": "Hoarder",
"attachmentsFolder": "Hoarder/attachments",
"syncIntervalMinutes": 60,
"lastSyncTimestamp": 1779098839310,
"lastSyncTimestamp": 1779102439179,
"updateExistingFiles": false,
"excludeArchived": true,
"onlyFavorites": false,

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -27,3 +27,4 @@ tags: [daily]
- 11:43 — session ended | `cc-dashboard`
- 12:01 — session ended | `cc-dashboard`
- 12:04 — session ended | `cc-dashboard`
- 12:08 — session ended | `cc-dashboard`

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,517 @@
---
tags: [architecture, graphify, oliver-sales-ops-platform]
updated: 2026-05-18
---
# Graph Report - /Users/ai_leed/Documents/Projects/Oliver/oliver-sales-ops-platform (2026-05-18)
## Corpus Check
- cluster-only mode — file stats not available
## Summary
- 1358 nodes · 1907 edges · 125 communities (98 shown, 27 thin omitted)
- Extraction: 93% EXTRACTED · 7% INFERRED · 0% AMBIGUOUS · INFERRED: 127 edges (avg confidence: 0.75)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `54eddd70`
- 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 35|Community 35]]
- [[_COMMUNITY_Community 36|Community 36]]
- [[_COMMUNITY_Community 37|Community 37]]
- [[_COMMUNITY_Community 38|Community 38]]
- [[_COMMUNITY_Community 39|Community 39]]
- [[_COMMUNITY_Community 40|Community 40]]
- [[_COMMUNITY_Community 41|Community 41]]
- [[_COMMUNITY_Community 42|Community 42]]
- [[_COMMUNITY_Community 43|Community 43]]
- [[_COMMUNITY_Community 44|Community 44]]
- [[_COMMUNITY_Community 45|Community 45]]
- [[_COMMUNITY_Community 46|Community 46]]
- [[_COMMUNITY_Community 47|Community 47]]
- [[_COMMUNITY_Community 48|Community 48]]
- [[_COMMUNITY_Community 49|Community 49]]
- [[_COMMUNITY_Community 50|Community 50]]
- [[_COMMUNITY_Community 51|Community 51]]
- [[_COMMUNITY_Community 52|Community 52]]
- [[_COMMUNITY_Community 53|Community 53]]
- [[_COMMUNITY_Community 54|Community 54]]
- [[_COMMUNITY_Community 55|Community 55]]
- [[_COMMUNITY_Community 56|Community 56]]
- [[_COMMUNITY_Community 57|Community 57]]
- [[_COMMUNITY_Community 58|Community 58]]
- [[_COMMUNITY_Community 59|Community 59]]
- [[_COMMUNITY_Community 60|Community 60]]
- [[_COMMUNITY_Community 61|Community 61]]
- [[_COMMUNITY_Community 62|Community 62]]
- [[_COMMUNITY_Community 63|Community 63]]
- [[_COMMUNITY_Community 64|Community 64]]
- [[_COMMUNITY_Community 65|Community 65]]
- [[_COMMUNITY_Community 66|Community 66]]
- [[_COMMUNITY_Community 67|Community 67]]
- [[_COMMUNITY_Community 68|Community 68]]
- [[_COMMUNITY_Community 69|Community 69]]
- [[_COMMUNITY_Community 70|Community 70]]
- [[_COMMUNITY_Community 71|Community 71]]
- [[_COMMUNITY_Community 72|Community 72]]
- [[_COMMUNITY_Community 73|Community 73]]
- [[_COMMUNITY_Community 74|Community 74]]
- [[_COMMUNITY_Community 75|Community 75]]
- [[_COMMUNITY_Community 76|Community 76]]
- [[_COMMUNITY_Community 77|Community 77]]
- [[_COMMUNITY_Community 78|Community 78]]
- [[_COMMUNITY_Community 79|Community 79]]
- [[_COMMUNITY_Community 80|Community 80]]
- [[_COMMUNITY_Community 81|Community 81]]
- [[_COMMUNITY_Community 82|Community 82]]
- [[_COMMUNITY_Community 83|Community 83]]
- [[_COMMUNITY_Community 84|Community 84]]
- [[_COMMUNITY_Community 85|Community 85]]
- [[_COMMUNITY_Community 88|Community 88]]
- [[_COMMUNITY_Community 89|Community 89]]
- [[_COMMUNITY_Community 90|Community 90]]
- [[_COMMUNITY_Community 91|Community 91]]
- [[_COMMUNITY_Community 92|Community 92]]
- [[_COMMUNITY_Community 93|Community 93]]
- [[_COMMUNITY_Community 94|Community 94]]
- [[_COMMUNITY_Community 99|Community 99]]
- [[_COMMUNITY_Community 100|Community 100]]
- [[_COMMUNITY_Community 101|Community 101]]
- [[_COMMUNITY_Community 102|Community 102]]
- [[_COMMUNITY_Community 103|Community 103]]
- [[_COMMUNITY_Community 112|Community 112]]
- [[_COMMUNITY_Community 113|Community 113]]
- [[_COMMUNITY_Community 114|Community 114]]
- [[_COMMUNITY_Community 115|Community 115]]
- [[_COMMUNITY_Community 116|Community 116]]
- [[_COMMUNITY_Community 117|Community 117]]
- [[_COMMUNITY_Community 118|Community 118]]
- [[_COMMUNITY_Community 119|Community 119]]
- [[_COMMUNITY_Community 120|Community 120]]
- [[_COMMUNITY_Community 121|Community 121]]
- [[_COMMUNITY_Community 122|Community 122]]
- [[_COMMUNITY_Community 123|Community 123]]
- [[_COMMUNITY_Community 124|Community 124]]
## God Nodes (most connected - your core abstractions)
1. `Opportunity` - 40 edges
2. `Stage2Diagnose()` - 33 edges
3. `StageApprovals()` - 31 edges
4. `Notification` - 30 edges
5. `Stage3Qualify()` - 30 edges
6. `Stage16Delivery()` - 29 edges
7. `Stage6Normalize()` - 29 edges
8. `Stage7Match()` - 27 edges
9. `Base` - 27 edges
10. `OLIVER Sales Operations Platform` - 27 edges
## Surprising Connections (you probably didn't know these)
- `Stage 13 — Support Docs Agent` --calls--> `useStageArtifacts()` [EXTRACTED]
docs/project/api_spec.md → frontend/src/api/opportunities.ts
- `Build ratecards from confirmed matches (Stage 8). Ported from V1's ratecard_bui` --rationale_for--> `Ratecard Builder (Stage 8)` [EXTRACTED]
backend/app/services/ratecard_builder.py → README.md
- `Approval workflow — request approvals and record decisions. Requesting an appro` --rationale_for--> `Approval Service` [EXTRACTED]
backend/app/services/approval_service.py → AGENTS.md
- `Allowed Users Config (YAML)` --conceptually_related_to--> `SSO Authentication` [INFERRED]
config/allowed_users.yaml → docs/README.md
- `SQLAlchemy 2.0.36 (asyncio)` --references--> `FastAPI Backend` [INFERRED]
backend/requirements.txt → README.md
## Communities (125 total, 27 thin omitted)
### Community 0 - "Community 0"
Cohesion: 0.05
Nodes (60): complete_stage(), create_opportunity(), delete_file(), delete_opportunity(), download_pitch_deck_markdown(), download_pitch_outline_markdown(), downloadQAPack(), get_efficiency_profile() (+52 more)
### Community 1 - "Community 1"
Cohesion: 0.06
Nodes (59): allowed_users.yaml Allowlist, API Specification — OLIVER Sales Ops Platform, ADR: Claude Tool-Use Pattern for All Agents, 17-Stage State Machine, Alembic Migrations, Anthropic Claude API, Apache Reverse Proxy, Approvals Workflow (Gated Stages 3, 14) (+51 more)
### Community 2 - "Community 2"
Cohesion: 0.05
Nodes (43): assetsKeys, useBuildRatecard(), useClientAssets(), useCreateAsset(), useDeleteAsset(), useKickOffMatching(), useMatches(), useRatecard() (+35 more)
### Community 3 - "Community 3"
Cohesion: 0.05
Nodes (36): useCreateOpportunity(), UserMenu(), AgentDetail, badgeStyle, cardStyle, cascadeNoteStyle, chevronStyle, codeStyle (+28 more)
### Community 4 - "Community 4"
Cohesion: 0.05
Nodes (34): useClarifications(), useUpdateClarification(), badgeStyle, cardStyle, emptyCalloutStyle, emptyStyle, hintStyle, listStyle (+26 more)
### Community 5 - "Community 5"
Cohesion: 0.08
Nodes (21): list_my_notifications(), mark_read(), In-app notification endpoints., _to_out(), bellBtnStyle, bellIconStyle, bodyStyle, dotStyle (+13 more)
### Community 6 - "Community 6"
Cohesion: 0.07
Nodes (27): useQualification(), useSaveQualification(), badgeStyle, cardStyle, dimHeaderStyle, dimLetterStyle, dimRowStyle, errorStyle (+19 more)
### Community 7 - "Community 7"
Cohesion: 0.16
Nodes (23): _custom_opp(), _has_creative_role(), _opportunity_payload(), _pick_gmal_for_model(), Stage 11 — team shape (FTE per role) coverage. Team shape is pure-Python (no Cl, Same pattern as test_ratecard.py — return a GMAL with at least `min_rows` Gm, The first GMAL (id=1) is known to have a Creative-discipline role; the disci, An opportunity with no RatecardLine rows should return an empty roles list a (+15 more)
### Community 8 - "Community 8"
Cohesion: 0.12
Nodes (22): useDeleteFile(), useFiles(), useRunDiagnosis(), useRunIntake(), useStageArtifacts(), useUploadFiles(), advancePromptStyle, dropZoneStyle (+14 more)
### Community 9 - "Community 9"
Cohesion: 0.08
Nodes (24): badgeStyle, commentStyle, containerStyle, emptyStyle, errorStyle, formStyle, headerStyle, hintStyle (+16 more)
### Community 10 - "Community 10"
Cohesion: 0.09
Nodes (23): activeStyle, awaitingStyle, completedStyle, containerStyle, gateBadge, gatedStyle, iconStyle, inProgressStyle (+15 more)
### Community 11 - "Community 11"
Cohesion: 0.08
Nodes (23): dependencies, axios, @azure/msal-browser, @azure/msal-react, lucide-react, mermaid, react, react-dom (+15 more)
### Community 12 - "Community 12"
Cohesion: 0.08
Nodes (22): badgeStyle, cardLabelStyle, cardStyle, chipStyle, emptyHintStyle, errorStyle, hintStyle, pillStyle (+14 more)
### Community 13 - "Community 13"
Cohesion: 0.14
Nodes (19): _pick_gmal_with_hour_routes(), Stage 7 — AI matching coverage. The real `/match` call hits Anthropic and costs, Return the lowest-id GMAL asset that has hour routes. The matching agent onl, Kicking off matching on an opportunity with zero ClientAssets is a 400., Seed 1 ClientAsset + 2 Match rows (one selected) and verify GET /matches sur, is_selected=true on a match should deselect any other selected matches for t, is_selected=false on a match should deselect just that match, leaving any ot, A match belonging to opportunity A cannot be toggled via opportunity B's URL (+11 more)
### Community 14 - "Community 14"
Cohesion: 0.14
Nodes (23): Stage 3 — TROWLS qualification scorecard coverage. Exercises POST /opportunitie, All 6s → total=36, pct=60, recommendation='proceed' (>=60 boundary)., A dimension >10 must be rejected by Pydantic (Field(ge=0, le=10))., A dimension <0 must be rejected (relationship = -1)., All six TROWLS dimensions are required omitting one is 422., A fresh opportunity has no scorecard returns JSON null., Round-trip POST GET returns the same shape with the same artifact_id; savi, Build a TROWLSScores payload. (+15 more)
### Community 15 - "Community 15"
Cohesion: 0.09
Nodes (21): cardStyle, chipBtnActiveStyle, chipBtnStyle, EfficiencyProfileContent, EfficiencyProfileWrapper, emptyStyle, errorStyle, ghostBtnStyle (+13 more)
### Community 16 - "Community 16"
Cohesion: 0.12
Nodes (19): _minimal_diagnosis_content(), Stages 9 / 12 / 13 — `_run_simple_agent` semantics. These three endpoints (`/de, Round-trip the Delivery Model agent. Precondition: a Stage 2 brief_diagnosi, POST /capability-gaps with no Stage 2 diagnosis on file returns 400., After running, artifact_type 'capability_gaps' should appear on GET /stages/, POST /support-docs with no Stage 2 diagnosis on file returns 400. Stage 13, After running, artifact_type 'support_docs' should appear on GET /stages/13/, Stage 13 should NOT 400 when Stage 9 / 12 artifacts are missing — only Stage (+11 more)
### Community 17 - "Community 17"
Cohesion: 0.09
Nodes (21): cardStyle, DEAL_STATUS_OPTIONS, emptyStyle, errorStyle, hintStyle, itemStyle, listStyle, metaLabelStyle (+13 more)
### Community 18 - "Community 18"
Cohesion: 0.15
Nodes (22): Architecture Documentation, Runbook Documentation, Asset Normalizer (Stage 6), Capability Gap Agent (Stage 12), Claude (Anthropic AI), Delivery Model Agent (Stage 9), Diagnosis Agent (Stage 2), GMAL Scope Builder V1 (+14 more)
### Community 19 - "Community 19"
Cohesion: 0.18
Nodes (19): _count_hour_rows(), _custom_opp(), _opportunity_payload(), _pick_gmal_for_model(), Stage 8 — Ratecard build coverage. Ratecard building is pure-Python (no Claude), Create+yield+delete a fresh opportunity with the given model_type. The shar, Building a ratecard on an opp with zero ClientAssets is a 400., End-to-end Stage 8: seed 1 ClientAsset (volume=100) + selected Match, POST / (+11 more)
### Community 20 - "Community 20"
Cohesion: 0.10
Nodes (19): cardStyle, dataCalloutStyle, emptyStyle, errorStyle, hintStyle, PitchOutline, PitchSlide, primaryBtnStyle (+11 more)
### Community 21 - "Community 21"
Cohesion: 0.12
Nodes (20): deploy.sh Deployment Script, DEV_AUTH_BYPASS Configuration, Docker Backend Service, Docker DB Service (postgres:16-alpine), Docker Frontend Service (dev profile), Docker Redis Service (redis:7-alpine), Azure SSO (MSAL), FastAPI Backend (+12 more)
### Community 22 - "Community 22"
Cohesion: 0.11
Nodes (18): compilerOptions, allowImportingTsExtensions, isolatedModules, jsx, lib, module, moduleResolution, noEmit (+10 more)
### Community 23 - "Community 23"
Cohesion: 0.15
Nodes (17): _get_opp(), kick_off_match(), list_matches(), _match_to_out(), Stage 7 — match client assets to GMAL catalog., Mark a match as the chosen one for its client asset. When `is_selected=True, Background task: open a fresh session, run the match agent., Kick off the matching agent in the background. Frontend polls GET /matches f (+9 more)
### Community 24 - "Community 24"
Cohesion: 0.12
Nodes (15): useMe(), useUsers(), ApprovalView(), approveBtnStyle, cardStyle, commentBlockStyle, errorStyle, gateBadge (+7 more)
### Community 25 - "Community 25"
Cohesion: 0.14
Nodes (15): Diagnosis Agent (Stage 2) + clarification CRUD coverage. The real `/diagnose` c, Running diagnosis on an opportunity with zero uploaded files is a 400., Seed one of each priority — Postgres orders enum values by declaration. Que, Writing a non-empty client_answer flips status to 'answered' and stamps answ, Dismissing a clarification should set status=dismissed but NOT stamp answere, A clarification belonging to opp A cannot be updated via opp B's URL., Round-trip the Diagnosis Agent against a small synthetic brief. Verifies:, _seed_clarification() (+7 more)
### Community 26 - "Community 26"
Cohesion: 0.11
Nodes (15): cardStyle, emptyStyle, ghostBtnStyle, hintStyle, labelStyle, metaLabelStyle, progBadgeStyle, Props (+7 more)
### Community 27 - "Community 27"
Cohesion: 0.21
Nodes (16): User: ameliagreene@oliver.agency (editor), User: andrewsmith@oliver.agency (editor), User: coreyo'brien@oliver.agency (editor), User: daveporter@oliver.agency (admin), User: davetomlinson@oliver.agency (editor), User: francescabuzzeo@oliver.agency (editor), User: guydurham@oliver.agency (editor), User: ianswaine@oliver.agency (editor) (+8 more)
### Community 28 - "Community 28"
Cohesion: 0.12
Nodes (15): cardStyle, emptyStyle, errorStyle, hintStyle, metaLabelStyle, primaryBtnStyle, Props, Stage8Ratecard() (+7 more)
### Community 29 - "Community 29"
Cohesion: 0.12
Nodes (14): APPROACH_COLORS, badgeStyle, cardStyle, chipStyle, DeliveryModel, errorStyle, HEADLINE_BADGE, hintStyle (+6 more)
### Community 30 - "Community 30"
Cohesion: 0.13
Nodes (14): cardStyle, errorStyle, hintStyle, itemStyle, listStyle, primaryBtnStyle, Props, subTitleStyle (+6 more)
### Community 31 - "Community 31"
Cohesion: 0.13
Nodes (14): badgeStyle, CapabilityGaps, cardStyle, chipStyle, CRITICALITY_BADGE, errorStyle, hintStyle, itemStyle (+6 more)
### Community 32 - "Community 32"
Cohesion: 0.16
Nodes (12): approvalsKeys, _build_context(), get_approval_context(), Approval endpoints: request, decide, list, by-token., useApprovalByToken(), useDecideApproval(), useRequestApprovals(), useStageApprovals() (+4 more)
### Community 33 - "Community 33"
Cohesion: 0.21
Nodes (9): get_approval_by_token(), Open an approval by its email-link token. Authenticated session still requir, _fetch_email_token(), Approval workflow coverage. Exercises the full approval lifecycle on a live bac, test_approval_reject_blocks_stage(), test_full_approval_happy_path(), test_invalid_decision_string_400(), test_request_approval_unknown_approver_400() (+1 more)
### Community 34 - "Community 34"
Cohesion: 0.14
Nodes (7): Stage 6 — Asset Normalizer + ClientAsset CRUD coverage. The real `/assets/norma, Running normalize on an opportunity with zero uploaded files is a 400. The, Round-trip the Asset Normalizer against a small synthetic brief. Verifies:, First asset should land at sort_order=0, the next at sort_order=1., test_create_asset_assigns_sort_order(), test_normalize_happy_path(), test_normalize_no_files_400()
### Community 35 - "Community 35"
Cohesion: 0.18
Nodes (9): type, opp_payload_factory(), Returns a fresh payload dict each call so tests can mutate it., CRUD coverage for /api/opportunities. Verifies create / list / get / update / d, Create + delete + verify 404 — does not use the fixture so we own teardown., test_create_opportunity_defaults(), test_create_opportunity_invalid_model_type(), test_delete_opportunity_round_trip() (+1 more)
### Community 36 - "Community 36"
Cohesion: 0.23
Nodes (11): Base, DeclarativeBase, ClarificationQuestion, Clarification questions surfaced by the Diagnosis Agent (Stage 2). Each questio, ModelType, NotificationType, DealStatus, Opportunity (+3 more)
### Community 37 - "Community 37"
Cohesion: 0.19
Nodes (14): Approval Service, create_approval_requests(), Approval Flow (Mailgun + email token), Validation & Approval Gates (Stage 14), Qualification Assessment (Stage 3), TROWLS Qualification Scorecard, _approval_link(), _build_email_html() (+6 more)
### Community 38 - "Community 38"
Cohesion: 0.18
Nodes (11): ai_debug(), ai_usage(), ai_usage_reset(), OLIVER Sales Operations Platform — FastAPI entrypoint., call_claude(), get_client(), get_debug_log(), get_usage_stats() (+3 more)
### Community 39 - "Community 39"
Cohesion: 0.18
Nodes (12): useDeleteOpportunity(), useOpportunities(), badgeStyle, cardStyle, cardWrapperStyle, Dashboard(), DEAL_BADGE, deleteBtnStyle (+4 more)
### Community 40 - "Community 40"
Cohesion: 0.17
Nodes (11): Stage 4 — Q&A pack export coverage. Exercises GET /opportunities/{id}/qa-pack/e, Zero clarifications: word download is still a valid docx., Seed mixed-priority clarifications across categories and verify both: * Bot, An opp name with /, ?, and quotes must be scrubbed in Content-Disposition., Insert a ClarificationQuestion row directly. Returns its id. Postgres store, Zero clarifications: download is still a valid xlsx with title block., _seed_clarification(), test_qa_pack_excel_empty_state() (+3 more)
### Community 41 - "Community 41"
Cohesion: 0.17
Nodes (13): useCompleteStage(), useOpportunity(), useStages(), useUpdateOpportunity(), Opportunity model — top-level entity in the 17-stage state machine. An Opportun, cardStyle, EditableOpportunityName(), editPencilStyle (+5 more)
### Community 42 - "Community 42"
Cohesion: 0.28
Nodes (12): _float(), _int(), _load_asset_list(), _load_role_mappings(), _load_routes(), _load_service_lines(), parse_gmal_workbook(), Parse the GMAL Excel workbook into database records. Ported from V1 with one ch (+4 more)
### Community 43 - "Community 43"
Cohesion: 0.23
Nodes (10): _decode_token(), get_current_user(), _get_jwks(), Azure SSO middleware — validates Microsoft Entra ID-issued ID tokens and upserts, Validate the bearer token (or accept dev bypass), upsert the AppUser, and re, Find or create the AppUser for this identity. Stamps last_login on hit. SSO, _upsert_app_user(), AppUser (+2 more)
### Community 44 - "Community 44"
Cohesion: 0.18
Nodes (11): _approval_to_out(), list_stage_approvals(), my_pending_approvals(), ApprovalDecisionPayload, ApprovalOut, ApprovalRequestItem, ApprovalRequestPayload, ApproverInfo (+3 more)
### Community 45 - "Community 45"
Cohesion: 0.27
Nodes (11): BaseModel, ClientAssetCreate, ClientAssetUpdate, Config, MatchOut, MatchSelectRequest, NormalizeRunResponse, RatecardSummary (+3 more)
### Community 46 - "Community 46"
Cohesion: 0.20
Nodes (7): AuthProvider(), loginBoxStyle, loginBtnStyle, loginDescStyle, loginLogoStyle, loginPageStyle, logoMarkStyle
### Community 47 - "Community 47"
Cohesion: 0.22
Nodes (8): client(), opportunity(), _opportunity_payload(), pytest_sessionstart(), Shared pytest fixtures for the OSOP integration test suite. These tests run aga, Async HTTP client pointed at the running backend., Fail fast (sync) if the backend isn't reachable. No event-loop dance., Create a fresh opportunity, yield it, then delete it on teardown. Cleanup r
### Community 48 - "Community 48"
Cohesion: 0.20
Nodes (9): Approval, ApprovalStatus, Stage state, artifacts, and approvals for the 17-stage workflow., Per-(opportunity, stage_number) progress record., Output produced by a stage — JSON content + optional file reference. artifa, Approval record for a gated stage. role_required values: commercial | deliv, StageArtifact, StageState (+1 more)
### Community 49 - "Community 49"
Cohesion: 0.24
Nodes (5): _make_docx_bytes(), _make_xlsx_bytes(), File upload + extraction coverage. We synthesize all fixture files in-process s, test_upload_docx(), test_upload_md()
### Community 50 - "Community 50"
Cohesion: 0.38
Nodes (9): In-app notification coverage. Verifies that requesting an approval creates an A, When a non-owner approves, the opportunity owner should receive an APPROVAL_, _request_approval(), test_approval_request_creates_notification(), test_mark_all_read_zeroes_count(), test_mark_one_read(), test_owner_notified_on_approval_decision(), test_unread_count_reflects_new_notification() (+1 more)
### Community 52 - "Community 52"
Cohesion: 0.22
Nodes (8): compilerOptions, allowSyntheticDefaultImports, composite, module, moduleResolution, skipLibCheck, strict, include
### Community 53 - "Community 53"
Cohesion: 0.22
Nodes (8): ClientAsset, Match, MatchConfidence, RatecardLine, Client asset workflow models — Stages 6/7/8. Mirrors V1's project.py but FKed t, A normalized deliverable extracted from the brief at Stage 6., AI-proposed match between a ClientAsset and a GMAL asset (Stage 7)., One row per (role × client asset) at Stage 8. `total_hours` is the per-1-as
### Community 54 - "Community 54"
Cohesion: 0.33
Nodes (8): Base, GmalAsset, GmalHours, GmalServiceLine, GMAL catalog models — ported from V1 unchanged. The 390-asset GMAL catalog (Uni, Role, RoleLevelMapping, Notification
### Community 55 - "Community 55"
Cohesion: 0.31
Nodes (8): get_asset(), Config, GmalAssetBrief, GmalAssetDetail, GmalAssetWithHours, GmalHoursOut, Pydantic schemas for the GMAL catalog (ported from V1)., RoleOut
### Community 56 - "Community 56"
Cohesion: 0.25
Nodes (8): _get_opp(), get_team_shape(), Stage 11 — team shape (FTE per role) endpoint., Compute FTE per role from the ratecard. Query params: - `efficiency_pct, TeamShape, calculate_team_shape(), Calculate team shape (FTE headcount) from ratecard data — Stage 11. Ported from, Compute FTE per role for an opportunity's ratecard. Two efficiency modes:
### Community 57 - "Community 57"
Cohesion: 0.22
Nodes (3): 17-stage state machine coverage. Verifies initialisation, single-step advance,, Stage 5 is not_started — cannot be completed before its predecessors., test_complete_out_of_order_stage_returns_400()
### Community 58 - "Community 58"
Cohesion: 0.25
Nodes (8): Background task: open a fresh session, run the normalizer. Mirrors the patt, Kick off the Stage 6 Asset Normalizer in the background. Returns 202 immedi, _run_normalize_in_bg(), run_normalizer(), _is_internal_artefact(), Asset Normalizer — Stage 6. Reads the same uploaded files Stage 1/2 used and (w, True if `name` looks like an internal pitch artefact, not a client deliverable., Run the Asset Normalizer. Replaces existing ClientAssets on success. Return
### Community 59 - "Community 59"
Cohesion: 0.22
Nodes (7): Stage 12 — Identify capability gaps and suggest partners. Reads the Stage 2 dia, run_capability_gaps(), Run only when deal_status is WON. Reads upstream artifacts., run_implementation_plan(), Stage 13 — Generate caveats / assumptions / SLAs / KPIs / governance. Produces, run_support_docs(), extract_tool_result()
### Community 60 - "Community 60"
Cohesion: 0.25
Nodes (5): get_asset_family(), get_stats(), GMAL catalog browse endpoints — minimum needed for Phase 1. Read endpoints (lis, Get all complexity variants (family) for a GMAL asset., GmalStatsOut
### Community 61 - "Community 61"
Cohesion: 0.29
Nodes (6): complete_stage(), get_stage(), initialize_stages(), 17-stage state machine — initialize, advance, validate gating. Stages cannot be, Create all 17 StageState rows for a new opportunity. Stage 1 starts IN_PROGRESS., Mark a stage COMPLETED and unlock the next. Returns (completed_stage, next_
### Community 62 - "Community 62"
Cohesion: 0.43
Nodes (6): _extract_docx(), _extract_pdf(), extract_text(), _extract_xlsx(), Extract plain text from uploaded RFP/brief documents. Supports .docx, .xlsx, .p, Extract text from a file. Raises ValueError for unsupported types.
### Community 63 - "Community 63"
Cohesion: 0.38
Nodes (7): Bug-4 Invariant (RatecardLine hours per asset), Efficiency Logic (Stage 10), GMAL Catalog, Match Agent (Stage 7), Ratecard Builder (Stage 8), Team Shape Service (Stage 11), Build ratecards from confirmed matches (Stage 8). Ported from V1's ratecard_bui
### Community 64 - "Community 64"
Cohesion: 0.38
Nodes (6): _get_opp(), get_ratecard(), post_build_ratecard(), Stage 8 — build + read the per-asset ratecard., build_ratecard(), Build a ratecard for an opportunity from its selected matches. For each sel
### Community 65 - "Community 65"
Cohesion: 0.48
Nodes (6): create_asset(), delete_asset(), _get_opp(), list_assets(), Stage 6 — client asset CRUD + normalize agent., update_asset()
### Community 66 - "Community 66"
Cohesion: 0.33
Nodes (5): list_users(), me(), User directory endpoints — list users (used by approver picker)., Returns all known AppUsers — the directory of potential approvers. Users lan, Current authenticated user's own row.
### Community 67 - "Community 67"
Cohesion: 0.47
Nodes (5): accounts, api, loginRequest, msalConfig, msalInstance
### Community 68 - "Community 68"
Cohesion: 0.33
Nodes (4): costStyle, labelStyle, pillStyle, tokensStyle
### Community 69 - "Community 69"
Cohesion: 0.47
Nodes (5): _get(), _load(), lookup(), Email-based access control list loaded from config/allowed_users.yaml. Loaded o, Return the UserRole for *email* or None if not in the allowlist.
### Community 70 - "Community 70"
Cohesion: 0.33
Nodes (5): submit_decision(), Mark an approval approved/rejected and notify the opportunity owner., record_decision(), create_notification(), Helpers for creating in-app notifications.
### Community 71 - "Community 71"
Cohesion: 0.47
Nodes (5): _api_base(), is_configured(), Mailgun email service. Sends via https://api.mailgun.net/v3/{domain}/messages (, Send an email via Mailgun. Returns Mailgun's response or a stub when not con, send_email()
### Community 72 - "Community 72"
Cohesion: 0.33
Nodes (5): ClarificationAnswerUpdate, Config, DiagnosisRunResponse, Schemas for clarification questions and Stage 2 diagnosis output., ClarificationQuestion
### Community 73 - "Community 73"
Cohesion: 0.33
Nodes (5): Config, OpportunityUpdate, Opportunity + stage schemas., StageCompleteRequest, StageStateOut
### Community 74 - "Community 74"
Cohesion: 0.33
Nodes (5): Stage 15 — Pitch Deck Agent. Claude reads every upstream artifact (intake, diag, Render a structured pitch deck outline to a printable markdown doc., Generate a slide-by-slide pitch deck outline., render_outline_to_markdown(), run_pitch_deck()
### Community 75 - "Community 75"
Cohesion: 0.40
Nodes (3): Config, Settings, BaseSettings
### Community 77 - "Community 77"
Cohesion: 0.40
Nodes (3): Gating coverage — stages 3 and 14 require Approval rows. We exercise the path t, A failed gating attempt must not leave the opp in a weird state., test_stage_3_blocked_does_not_mutate_state()
### Community 78 - "Community 78"
Cohesion: 0.40
Nodes (4): ingest_gmal_data(), GMAL data ingestion endpoint — admin-only in Phase 2 once role gating lands., Ingest GMAL data from Excel file. If no file is uploaded, uses the default, IngestResult
### Community 79 - "Community 79"
Cohesion: 0.40
Nodes (4): TROWLS qualification scorecard schemas (Stage 3)., TROWLSNotes, TROWLSScores, QualificationScorecard
### Community 80 - "Community 80"
Cohesion: 0.40
Nodes (4): Config, IntakeRunResponse, Schemas for opportunity files + stage artifacts., StageArtifact
### Community 81 - "Community 81"
Cohesion: 0.50
Nodes (4): _parse_iso_date(), Intake Agent — Stage 1. Reads the concatenated text of every file uploaded agai, Run the Intake Agent against all files attached to the opportunity. Returns, run_intake()
### Community 83 - "Community 83"
Cohesion: 0.50
Nodes (3): health(), Health check endpoint — public, no auth required., Returns OK if the API is up and the database round-trips a query.
### Community 84 - "Community 84"
Cohesion: 0.50
Nodes (4): A file with empty extracted_text means no usable input → 400 with 'text'., Insert an OpportunityFile row whose extracted_text is empty. Used to drive, _seed_empty_text_file(), test_diagnose_empty_text_400()
### Community 85 - "Community 85"
Cohesion: 0.50
Nodes (3): Diagnosis Agent — Stage 2. Reads the same uploaded files as Stage 1 and produce, Run the Diagnosis Agent and persist the result + clarification questions. R, run_diagnosis()
### Community 92 - "Community 92"
Cohesion: 0.67
Nodes (3): Trigger Downstream Systems (Stage 17), Salesforce (Phase 2), SharePoint (Phase 2)
## Knowledge Gaps
- **472 isolated node(s):** `composite`, `skipLibCheck`, `module`, `moduleResolution`, `allowSyntheticDefaultImports` (+467 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **27 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `Opportunity` connect `Community 41` to `Community 2`, `Community 3`, `Community 4`, `Community 6`, `Community 8`, `Community 9`, `Community 10`, `Community 12`, `Community 15`, `Community 17`, `Community 20`, `Community 26`, `Community 28`, `Community 29`, `Community 30`, `Community 31`, `Community 36`, `Community 45`, `Community 73`, `Community 80`?**
_High betweenness centrality (0.176) - this node is a cross-community bridge._
- **Why does `Stage 13 — Support Docs Agent` connect `Community 30` to `Community 32`, `Community 1`, `Community 67`, `Community 68`, `Community 8`, `Community 41`?**
_High betweenness centrality (0.143) - this node is a cross-community bridge._
- **Why does `Tasks — OLIVER Sales Ops Platform` connect `Community 1` to `Community 30`?**
_High betweenness centrality (0.069) - this node is a cross-community bridge._
- **What connects `composite`, `skipLibCheck`, `module` to the rest of the system?**
_669 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `Community 0` be split into smaller, more focused modules?**
_Cohesion score 0.053763440860215055 - nodes in this community are weakly interconnected._
- **Should `Community 1` be split into smaller, more focused modules?**
_Cohesion score 0.06487434248977206 - nodes in this community are weakly interconnected._
- **Should `Community 2` be split into smaller, more focused modules?**
_Cohesion score 0.0545790934320074 - nodes in this community are weakly interconnected._

View file

@ -0,0 +1,413 @@
---
tags: [architecture, graphify, pdf-accessibility]
updated: 2026-05-18
---
# Graph Report - /Users/ai_leed/Documents/Projects/Oliver/pdf-accessibility (2026-05-18)
## Corpus Check
- cluster-only mode — file stats not available
## Summary
- 1105 nodes · 1729 edges · 107 communities (69 shown, 38 thin omitted)
- Extraction: 80% EXTRACTED · 20% INFERRED · 0% AMBIGUOUS · INFERRED: 345 edges (avg confidence: 0.69)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `54eddd70`
- 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 35|Community 35]]
- [[_COMMUNITY_Community 36|Community 36]]
- [[_COMMUNITY_Community 37|Community 37]]
- [[_COMMUNITY_Community 38|Community 38]]
- [[_COMMUNITY_Community 39|Community 39]]
- [[_COMMUNITY_Community 40|Community 40]]
- [[_COMMUNITY_Community 41|Community 41]]
- [[_COMMUNITY_Community 42|Community 42]]
- [[_COMMUNITY_Community 43|Community 43]]
- [[_COMMUNITY_Community 44|Community 44]]
- [[_COMMUNITY_Community 45|Community 45]]
- [[_COMMUNITY_Community 46|Community 46]]
- [[_COMMUNITY_Community 47|Community 47]]
- [[_COMMUNITY_Community 48|Community 48]]
- [[_COMMUNITY_Community 49|Community 49]]
- [[_COMMUNITY_Community 50|Community 50]]
- [[_COMMUNITY_Community 51|Community 51]]
- [[_COMMUNITY_Community 52|Community 52]]
- [[_COMMUNITY_Community 53|Community 53]]
- [[_COMMUNITY_Community 54|Community 54]]
- [[_COMMUNITY_Community 55|Community 55]]
- [[_COMMUNITY_Community 56|Community 56]]
- [[_COMMUNITY_Community 57|Community 57]]
- [[_COMMUNITY_Community 58|Community 58]]
- [[_COMMUNITY_Community 60|Community 60]]
- [[_COMMUNITY_Community 61|Community 61]]
- [[_COMMUNITY_Community 62|Community 62]]
- [[_COMMUNITY_Community 63|Community 63]]
- [[_COMMUNITY_Community 64|Community 64]]
- [[_COMMUNITY_Community 65|Community 65]]
- [[_COMMUNITY_Community 66|Community 66]]
- [[_COMMUNITY_Community 70|Community 70]]
- [[_COMMUNITY_Community 71|Community 71]]
- [[_COMMUNITY_Community 72|Community 72]]
- [[_COMMUNITY_Community 73|Community 73]]
- [[_COMMUNITY_Community 74|Community 74]]
- [[_COMMUNITY_Community 75|Community 75]]
- [[_COMMUNITY_Community 76|Community 76]]
- [[_COMMUNITY_Community 79|Community 79]]
- [[_COMMUNITY_Community 80|Community 80]]
- [[_COMMUNITY_Community 81|Community 81]]
- [[_COMMUNITY_Community 84|Community 84]]
- [[_COMMUNITY_Community 85|Community 85]]
- [[_COMMUNITY_Community 86|Community 86]]
- [[_COMMUNITY_Community 87|Community 87]]
- [[_COMMUNITY_Community 88|Community 88]]
- [[_COMMUNITY_Community 89|Community 89]]
- [[_COMMUNITY_Community 90|Community 90]]
- [[_COMMUNITY_Community 91|Community 91]]
- [[_COMMUNITY_Community 92|Community 92]]
- [[_COMMUNITY_Community 93|Community 93]]
- [[_COMMUNITY_Community 94|Community 94]]
- [[_COMMUNITY_Community 95|Community 95]]
- [[_COMMUNITY_Community 96|Community 96]]
- [[_COMMUNITY_Community 97|Community 97]]
- [[_COMMUNITY_Community 98|Community 98]]
- [[_COMMUNITY_Community 99|Community 99]]
- [[_COMMUNITY_Community 100|Community 100]]
- [[_COMMUNITY_Community 101|Community 101]]
- [[_COMMUNITY_Community 102|Community 102]]
- [[_COMMUNITY_Community 103|Community 103]]
- [[_COMMUNITY_Community 104|Community 104]]
- [[_COMMUNITY_Community 105|Community 105]]
- [[_COMMUNITY_Community 106|Community 106]]
## God Nodes (most connected - your core abstractions)
1. `PDFRemediator` - 49 edges
2. `TestCheckMethods` - 34 edges
3. `VeraPDFValidator` - 30 edges
4. `CacheManager` - 29 edges
5. `RetryableError` - 28 edges
6. `AccessibilityIssue` - 25 edges
7. `CheckResult` - 23 edges
8. `index` - 22 edges
9. `Severity` - 20 edges
10. `error()` - 19 edges
## Surprising Connections (you probably didn't know these)
- `Test AccessibilityIssue dataclass` --conceptually_related_to--> `TestEnterprisePDFChecker` [INFERRED]
tests/test_checker.py → htmlcov/z_a44f0ac069e85531_test_checker_py.html
- `sample_good.pdf (Accessible Test PDF)` --references--> `enterprise_pdf_checker.py` [INFERRED]
Test_files/sample_good.pdf → README's/ENTERPRISE_README.md
- `sample_poor.pdf (Inaccessible Test PDF)` --references--> `enterprise_pdf_checker.py` [INFERRED]
Test_files/sample_poor.pdf → README's/ENTERPRISE_README.md
- `Check document metadata` --rationale_for--> `_check_metadata()` [EXTRACTED]
enterprise_pdf_checker.py → README's/TECHNICAL_BACKGROUND.md
- `Exception that indicates an operation should be retried` --rationale_for--> `RetryableError` [EXTRACTED]
retry_helper.py → htmlcov/z_a44f0ac069e85531_test_retry_extended_py.html
## Communities (107 total, 38 thin omitted)
### Community 0 - "Community 0"
Cohesion: 0.06
Nodes (47): PostgreSQL Database, db/init.sql, create_job(), dismiss_issue(), get_conn(), get_dismissed_indices(), get_job(), get_stats() (+39 more)
### Community 1 - "Community 1"
Cohesion: 0.06
Nodes (48): checkRateLimit(), get_queue_length(), get_redis(), pop_job(), push_job(), Redis Queue Helper — Push/pop jobs, track status, rate limiting, Get a Redis connection., Push a job to the processing queue. (+40 more)
### Community 2 - "Community 2"
Cohesion: 0.07
Nodes (18): Exception, flaky_function(), Retry a function call with exponential backoff (non-decorator version) Args, Exception that indicates an operation should be retried, Determine if an error should be retried Args: error: Exception to c, Execute a function and return a fallback value on error (graceful degradation), Simulates a flaky API that fails twice then succeeds, Decorator to retry a function with exponential backoff Args: max_re (+10 more)
### Community 3 - "Community 3"
Cohesion: 0.06
Nodes (36): Alt Text (Alternative Text for Images), Anthropic API Key, Google Cloud API Key (non-JSON), Dave Porter venv Path Configuration, Anthropic Claude 3.5 Sonnet, Enterprise PDF Accessibility Checker, enterprise_pdf_checker.py, Google Cloud Vision API (+28 more)
### Community 4 - "Community 4"
Cohesion: 0.05
Nodes (39): command, completed_at, file_size, filepath, job_id, original_filename, started_at, status (+31 more)
### Community 5 - "Community 5"
Cohesion: 0.07
Nodes (18): Check link quality (WCAG 2.4.4) — only checks actual hyperlink label text., Check heading structure and hierarchy, Check tab order is set for pages, Check role mapping for custom tags, Check form field accessibility, Check table accessibility using PDF structure tree (tagged tables)., Analyse a single /Table structure element. Returns True if no issues found., Recursively collect structural stats from a table's children. (+10 more)
### Community 6 - "Community 6"
Cohesion: 0.09
Nodes (12): PDF/UA-1 Standard, analyze(), calculate_contrast_ratio(), check_image_contrast(), count_syllables(), get_luminance(), Check color contrast using image analysis, Check content readability (language-aware: Flesch only for English). (+4 more)
### Community 7 - "Community 7"
Cohesion: 0.15
Nodes (35): header, file, base64url_encode(), error(), extractUserFromToken(), getCloudRunToken(), getDB(), handleBatchStatus() (+27 more)
### Community 8 - "Community 8"
Cohesion: 0.11
Nodes (36): files, cleanup_py, cloudrun_service_py, create_test_pdf_with_images_py, db_manager_py, enterprise_pdf_checker_py, logger_config_py, pdf_remediation_py (+28 more)
### Community 9 - "Community 9"
Cohesion: 0.08
Nodes (36): Client Glossary (Brand Terminology), Hybrid Validation Engine Concept, OMG Project ID Traceability, Role-Based Access Control (RBAC), PDF/UA Compliance Concept, WCAG Accessibility Standards, Matterhorn Protocol, PDF Accessibility Checker Requirements Brief (+28 more)
### Community 10 - "Community 10"
Cohesion: 0.07
Nodes (16): Enum, ColorContrastChecker, Issue severity levels, WCAG color contrast validation, Content readability analysis, ReadabilityAnalyzer, Severity, checker_good() (+8 more)
### Community 11 - "Community 11"
Cohesion: 0.09
Nodes (21): AccessibilityIssue, CheckResult, Represents an accessibility issue, Results from a specific check, TestCheckResult, Unit tests for enterprise_pdf_checker.py, Test suite for EnterprisePDFChecker class, Test retry logic integration (+13 more)
### Community 12 - "Community 12"
Cohesion: 0.06
Nodes (30): accessibility_score, auto_fixable_count, checks_performed, filename, issues, page_image_dpi, page_images, 1 (+22 more)
### Community 13 - "Community 13"
Cohesion: 0.08
Nodes (30): AccessibilityIssue (enterprise_pdf_checker.py), CacheManager (enterprise_pdf_checker.py), CheckResult (enterprise_pdf_checker.py), ColorContrastChecker (enterprise_pdf_checker.py), enterprise_pdf_checker.py, EnterprisePDFChecker (enterprise_pdf_checker.py), NonRetryableError (retry_helper.py), ReadabilityAnalyzer (enterprise_pdf_checker.py) (+22 more)
### Community 14 - "Community 14"
Cohesion: 0.11
Nodes (24): viewBatchResult(), allIssues, applyScoreRecalc(), CP_TO_CHECK, dismissedIndices, dismissIssue(), displayIssues(), displayMatterhorn() (+16 more)
### Community 15 - "Community 15"
Cohesion: 0.07
Nodes (22): begin, btn, element, end, getCellValue(), helpCheck, line_height, line_number (+14 more)
### Community 17 - "Community 17"
Cohesion: 0.11
Nodes (10): main(), Convert to dictionary for JSON serialization, Analyze what can be auto-fixed, Generate PNG images for each page for visual display, Build Matterhorn Protocol PDF/UA-1 checkpoint summary., Generate comprehensive summary, Alias for check_all - maintains backward compatibility, Convert results to dictionary (+2 more)
### Community 18 - "Community 18"
Cohesion: 0.19
Nodes (12): Wrapper for veraPDF validation, VeraPDFValidator, Extended tests for pdf_remediation.py — covers PDFRemediator analysis and fix me, test_validate_compliant(), test_validate_no_jobs(), test_validate_process_error(), test_validate_timeout(), TestVeraPDFValidatorExtended (+4 more)
### Community 19 - "Community 19"
Cohesion: 0.19
Nodes (9): handleMsalRedirect(), msalConfig, showAuthenticatedUI(), showLoginUI(), buildHistoryRow(), deleteHistoryJob(), escapeHtml(), loadHistory() (+1 more)
### Community 20 - "Community 20"
Cohesion: 0.21
Nodes (7): CacheManager, Manages caching of API results to reduce costs, Generate cache key from data, Test that different content produces different keys, Test suite for CacheManager class, Test that cache keys are generated correctly, TestCacheManager
### Community 21 - "Community 21"
Cohesion: 0.22
Nodes (10): getExportUrl(), addBatchFiles(), batchFiles, clearBatchFiles(), escapeHtml(), exportReport(), pollBatchStatus(), removeBatchFile() (+2 more)
### Community 22 - "Community 22"
Cohesion: 0.22
Nodes (7): MSAL Azure AD Authentication, css/styles.css, createIssueCard(), getCategoryIcon(), getSeverityIcon(), WCAG_SLUGS, wcagCriterionLinks()
### Community 23 - "Community 23"
Cohesion: 0.26
Nodes (5): PDFRemediator, Automatically fix common PDF accessibility issues, TestPDFRemediatorAnalysis, TestPDFRemediatorApplyFixes, TestPDFRemediatorFixMethods
### Community 24 - "Community 24"
Cohesion: 0.21
Nodes (13): cleanup.py, Code Coverage Report (13%), db_manager.py, Coverage Report Index, logger_config.py, setup_logger, redis_queue.py, retry_helper.py (+5 more)
### Community 25 - "Community 25"
Cohesion: 0.18
Nodes (13): check_pdf, cloudrun_service.py, upload_images_to_gcs, AccessibilityIssue, CacheManager, CheckResult, ColorContrastChecker, EnterprisePDFChecker (+5 more)
### Community 26 - "Community 26"
Cohesion: 0.30
Nodes (11): apiCall(), checkBatchStatus(), checkStatus(), getDebugInfo(), getResult(), getStats(), remediatePdf(), startCheck() (+3 more)
### Community 27 - "Community 27"
Cohesion: 0.23
Nodes (7): applyZoom(), initializePageViewer(), loadVisualPage(), resetZoom(), zoomIn(), zoomOut(), viewOnPage()
### Community 28 - "Community 28"
Cohesion: 0.30
Nodes (10): beginCheck(), handleFile(), loadResults(), pollJobStatus(), removeFile(), resetCheck(), showReadyState(), addLog() (+2 more)
### Community 29 - "Community 29"
Cohesion: 0.17
Nodes (6): TestPDFRemediator, Test suite for PDFRemediator class, Test that remediator initializes correctly, Test remediator handles missing input file, Test that analyze method exists, Test that apply_fixes method exists
### Community 30 - "Community 30"
Cohesion: 0.17
Nodes (11): temp_output_dir fixture, mock_api_responses(), Pytest configuration and fixtures for PDF Accessibility Checker tests, Path to sample good PDF file, Path to sample poor PDF file, Temporary directory for test outputs, Mock API responses for testing without actual API calls, Sample PDF metadata for testing (+3 more)
### Community 31 - "Community 31"
Cohesion: 0.23
Nodes (4): Anthropic Claude 3.5 Sonnet, Google Cloud Vision API, Redis Job Queue, WCAG 2.1 Compliance
### Community 32 - "Community 32"
Cohesion: 0.31
Nodes (6): handleMsalRedirect(), hideAuthOverlay(), msalConfig, openHistoryJob(), showAuthenticatedUI(), showLoginUI()
### Community 33 - "Community 33"
Cohesion: 0.20
Nodes (5): Apply selected fixes and save to new PDF, Add author information, Set document language, Mark document as tagged (WARNING: only if tags actually exist!), Add basic bookmarks based on page numbers
### Community 34 - "Community 34"
Cohesion: 0.20
Nodes (9): command, completed_at, file_size, filepath, job_id, original_filename, started_at, status (+1 more)
### Community 35 - "Community 35"
Cohesion: 0.20
Nodes (6): critical(), exception(), Log a warning message, Log a critical message, Log an exception with traceback, warning()
### Community 36 - "Community 36"
Cohesion: 0.20
Nodes (5): Process Claude's image analysis results, Process Google Vision results — only report actionable findings., Extract image bytes from PDF page, Return byte size of image data — used to filter out tiny decorative images., Comprehensive image accessibility check with AI
### Community 37 - "Community 37"
Cohesion: 0.20
Nodes (4): Tests for worker.py — all external dependencies mocked., TestProcessJob, TestWorkerMain, TestWorkerSignalHandling
### Community 38 - "Community 38"
Cohesion: 0.22
Nodes (5): Check navigation bookmarks, Analyze PDF and return suggested fixes, Check if language needs to be set, Check if PDF needs to be marked as tagged, Check if bookmarks should be added
### Community 39 - "Community 39"
Cohesion: 0.22
Nodes (3): main(), Run veraPDF validation and return structured results, CLI interface for remediation
### Community 40 - "Community 40"
Cohesion: 0.22
Nodes (5): Check document metadata, Check what metadata fixes are needed, Generate a suggested title from content or filename., Generate a suggested subject from first paragraph, _check_metadata()
### Community 41 - "Community 41"
Cohesion: 0.25
Nodes (9): enterprise_pdf_checker.py, logger_config.py, setup_logger, pdf_remediation.py, PDFRemediator, retry_helper.py, tests/test_remediation_extended.py, TestPDFRemediatorAnalysis (+1 more)
### Community 42 - "Community 42"
Cohesion: 0.22
Nodes (9): PDF Accessibility Checking, tests/conftest.py, sample_poor_pdf fixture, pdf_remediation.py, PDFRemediator, VeraPDFValidator, test_env.py, tests/test_remediation.py (+1 more)
### Community 43 - "Community 43"
Cohesion: 0.39
Nodes (7): cleanup_directory(), format_size(), get_age_hours(), main(), Return file/dir age in hours based on modification time., Delete files matching patterns older than retention_hours. Returns (files_d, Format bytes as human-readable string.
### Community 44 - "Community 44"
Cohesion: 0.25
Nodes (5): Test that os and sys are imported (bug fix validation), Test that logger is configured, Test that all required imports work, Test that module imports successfully, TestModuleImports
### Community 45 - "Community 45"
Cohesion: 0.25
Nodes (5): php_server fixture, TestAPIAuthentication, Test that API handles requests without authentication, Test that API accepts requests with valid dev key, Test that API accepts Bearer token authentication
### Community 46 - "Community 46"
Cohesion: 0.25
Nodes (6): php_server(), Integration tests for API (api.php), Start PHP development server for testing, Test API with actual file upload (if samples available), Test that test files exist, TestAPIWithFile
### Community 47 - "Community 47"
Cohesion: 0.25
Nodes (5): Test API endpoint structure, Test that API returns JSON, Test that CORS headers are present, Test that API handles OPTIONS preflight requests, TestAPIEndpoints
### Community 48 - "Community 48"
Cohesion: 0.29
Nodes (5): Unit tests for pdf_remediation.py, Integration tests for remediation workflow, Test complete remediation workflow, test_validate_method(), TestRemediationWorkflow
### Community 49 - "Community 49"
Cohesion: 0.29
Nodes (7): is_retryable_error, NonRetryableError, retry_on_failure, retry_with_backoff, safe_execute, tests/test_retry_extended.py, TestRetryWithBackoff
### Community 50 - "Community 50"
Cohesion: 0.33
Nodes (6): TestAPIAuthentication (tests/test_api.py), TestAPIEndpoints (tests/test_api.py), TestAPIWithFile (tests/test_api.py), TestAuthModule (tests/test_api.py), TestHelperModules (tests/test_api.py), tests/test_api.py
### Community 51 - "Community 51"
Cohesion: 0.33
Nodes (5): ContrastChecker Class, OCRChecker Class, pdf2image Library, Pillow (PIL) Library, pytesseract Library
### Community 52 - "Community 52"
Cohesion: 0.40
Nodes (4): check_pdf(), Upload page images to GCS and return {page_num: public_url} mapping., Accept multipart PDF upload, run accessibility checks, return results., upload_images_to_gcs()
### Community 53 - "Community 53"
Cohesion: 0.33
Nodes (5): get_logger(), Setup logger with file and console handlers Args: name: Logger name, Get or create a logger with the specified name Args: name: Logger n, setup_logger(), Test logger_config module
### Community 54 - "Community 54"
Cohesion: 0.33
Nodes (4): Test authentication module directly, Test API key generation endpoint, Test authentication test endpoint, TestAuthModule
### Community 55 - "Community 55"
Cohesion: 0.40
Nodes (4): enabledPlugins, frontend-design@claude-code-plugins, permissions, allow
### Community 56 - "Community 56"
Cohesion: 0.50
Nodes (4): create_image_with_text(), create_test_pdf(), Create an image with text in it (accessibility violation), Create a test PDF with accessibility issues
### Community 57 - "Community 57"
Cohesion: 0.40
Nodes (3): Test retry_helper module, Test that retry decorator functions, TestHelperModules
### Community 58 - "Community 58"
Cohesion: 0.50
Nodes (5): create_job, get_conn, update_job_status, TestProcessJob, process_job
### Community 60 - "Community 60"
Cohesion: 0.50
Nodes (4): db_manager.py, Coverage Function Index, tests/test_db_manager.py, TestCreateJob
### Community 61 - "Community 61"
Cohesion: 0.67
Nodes (3): pdf_remediation.py, PDFRemediator (pdf_remediation.py), VeraPDFValidator (pdf_remediation.py)
### Community 63 - "Community 63"
Cohesion: 0.67
Nodes (3): ReadabilityChecker Class, TextBlob Library, TextBlob Readability Analysis
## Knowledge Gaps
- **227 isolated node(s):** `batchFiles`, `allIssues`, `dismissedIndices`, `overriddenChecks`, `WCAG_LEVELS` (+222 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **38 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `VeraPDFValidator` connect `Community 18` to `Community 4`, `Community 5`, `Community 6`, `Community 39`, `Community 41`, `Community 10`, `Community 11`, `Community 44`, `Community 48`, `Community 20`, `Community 23`, `Community 29`?**
_High betweenness centrality (0.151) - this node is a cross-community bridge._
- **Why does `_check_metadata()` connect `Community 40` to `Community 3`, `Community 5`, `Community 38`, `Community 6`, `Community 23`?**
_High betweenness centrality (0.111) - this node is a cross-community bridge._
- **Why does `enterprise_pdf_checker.py` connect `Community 41` to `Community 2`, `Community 42`, `Community 49`, `Community 18`, `Community 24`, `Community 58`, `Community 60`?**
_High betweenness centrality (0.111) - this node is a cross-community bridge._
- **Are the 31 inferred relationships involving `PDFRemediator` (e.g. with `enterprise_pdf_checker.py` and `Severity`) actually correct?**
_`PDFRemediator` has 31 INFERRED edges - model-reasoned connections that need verification._
- **Are the 7 inferred relationships involving `TestCheckMethods` (e.g. with `enterprise_pdf_checker.py` and `Severity`) actually correct?**
_`TestCheckMethods` has 7 INFERRED edges - model-reasoned connections that need verification._
- **Are the 23 inferred relationships involving `VeraPDFValidator` (e.g. with `enterprise_pdf_checker.py` and `Severity`) actually correct?**
_`VeraPDFValidator` has 23 INFERRED edges - model-reasoned connections that need verification._
- **Are the 23 inferred relationships involving `CacheManager` (e.g. with `RetryableError` and `VeraPDFValidator`) actually correct?**
_`CacheManager` has 23 INFERRED edges - model-reasoned connections that need verification._

View file

@ -0,0 +1,146 @@
---
tags: [architecture, graphify, pimco-charts]
updated: 2026-05-18
---
# Graph Report - /Users/ai_leed/Documents/Projects/Oliver/pimco-charts (2026-05-18)
## Corpus Check
- cluster-only mode — file stats not available
## Summary
- 265 nodes · 350 edges · 32 communities (21 shown, 11 thin omitted)
- Extraction: 81% EXTRACTED · 19% INFERRED · 0% AMBIGUOUS · INFERRED: 66 edges (avg confidence: 0.8)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `54eddd70`
- 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 18|Community 18]]
- [[_COMMUNITY_Community 19|Community 19]]
- [[_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]]
## God Nodes (most connected - your core abstractions)
1. `app/main.py` - 13 edges
2. `render_chart()` - 11 edges
3. `_render_panel()` - 11 edges
4. `_render_dual_y_panel_body()` - 11 edges
5. `app/renderer/engine.py` - 11 edges
6. `_render_standard_panel_body()` - 10 edges
7. `_render_pie_panel()` - 9 edges
8. `test_chart2_gdp_investment()` - 8 edges
9. `test_chart3_dual_panel()` - 8 edges
10. `_render_labels()` - 8 edges
## Surprising Connections (you probably didn't know these)
- `main()` --calls--> `render_chart()` [INFERRED]
test_render.py → app/renderer/engine.py
- `test_chart1_bond_yields()` --calls--> `render_chart()` [INFERRED]
test_render_all.py → app/renderer/engine.py
- `test_chart2_gdp_investment()` --calls--> `render_chart()` [INFERRED]
test_render_all.py → app/renderer/engine.py
- `test_chart3_dual_panel()` --calls--> `render_chart()` [INFERRED]
test_render_all.py → app/renderer/engine.py
- `app/auth/` --references--> `itsdangerous` [INFERRED]
README.md → requirements.txt
## Communities (32 total, 11 thin omitted)
### Community 0 - "Community 0"
Cohesion: 0.09
Nodes (37): Render X-axis with date tick labels below the plot area., Render X-axis with categorical string labels below the plot area., render_x_axis(), render_x_axis_categorical(), _build_categorical_scale(), _build_date_scale(), _compute_y_axis(), _dispatch_series() (+29 more)
### Community 1 - "Community 1"
Cohesion: 0.07
Nodes (26): _deep_merge_spec(), interpret_brief(), _merge_dicts(), Claude API integration: interprets a brief + data summary into a ChartSpec., Send brief + data summary to Claude and get back a ChartSpec., Merge `updated` onto `base`, preserving non-None base values wherever `updat, Refine an existing ChartSpec based on a natural language edit instruction., refine_spec() (+18 more)
### Community 2 - "Community 2"
Cohesion: 0.07
Nodes (32): Azure AD SSO (MSAL), In-memory Sessions, base.html template, Docker app service, msal_shell.html template, app/data/analyzer.py (planned), app/data/loader.py (planned), LoadResult (+24 more)
### Community 3 - "Community 3"
Cohesion: 0.12
Nodes (24): TokenRequest, BaseModel, AxisSpec, ChartSpec, PanelSpec, Pydantic models for the chart specification - the contract between AI and render, SeriesSpec, ShadedFillSpec (+16 more)
### Community 4 - "Community 4"
Cohesion: 0.10
Nodes (20): _estimate_text_width(), _format_tick(), Axis rendering: gridlines, tick labels, axis lines., Estimate rendered text width for Roboto Condensed., Render X-axis with numeric tick labels., Format a tick value with adaptive precision., Render Y-axis with horizontal gridlines and tick labels. Args: side, render_x_axis_numeric() (+12 more)
### Community 5 - "Community 5"
Cohesion: 0.10
Nodes (22): app/renderer/annotations.py, app/renderer/axes.py, app/ai/brief_interpreter.py, app/models/chart_spec.py, ChartSpec, Claude Opus 4.6, app/renderer/engine.py, Iterative Refinement (+14 more)
### Community 6 - "Community 6"
Cohesion: 0.23
Nodes (11): _estimate_text_width(), legend_row_count(), Legend rendering - horizontal (line/bar) or vertical (pie) layouts., Multi-row legend, right-aligned, placed above the plot area. Items wrap to, Estimate rendered text width for Roboto Condensed. Uses per-character-class, Stacked column of legend items, placed to the right of the plot area., Return the number of horizontal rows the legend will occupy., Render a chart legend. Args: mode: "horizontal" — rows above plot a (+3 more)
### Community 7 - "Community 7"
Cohesion: 0.22
Nodes (10): close_browser(), _html_wrapper(), init_browser(), Playwright-based SVG export to PNG and PDF. Headless Chromium honours @font-fac, Start persistent Playwright/Chromium instance. Call once at app startup., Shut down browser gracefully. Call at app shutdown., Render SVG to PNG via headless Chromium. Returns raw PNG bytes., Render SVG to PDF via headless Chromium. The resulting PDF contains embedde (+2 more)
### Community 8 - "Community 8"
Cohesion: 0.25
Nodes (8): Data series rendering: lines, bars, areas, shaded fills., Render a bar chart series. Supports date and categorical x-axes., Render a line series as an SVG polyline., Render shaded regions between a data series and a reference series., render_bar_series(), _render_fill_segment(), render_line_series(), render_shaded_fill()
### Community 9 - "Community 9"
Cohesion: 0.33
Nodes (4): compute_layout(), PanelBounds, Canvas sizing and panel layout computation., Compute canvas dimensions and panel bounds.
### Community 10 - "Community 10"
Cohesion: 0.40
Nodes (5): _load_excel(), load_file(), Excel/CSV data loading and parsing., Load all sheets from an Excel file., Load an Excel or CSV file into a dict of DataFrames. Returns: Dict
### Community 11 - "Community 11"
Cohesion: 0.67
Nodes (3): _get_jwks_client(), validate_id_token(), token()
### Community 13 - "Community 13"
Cohesion: 0.50
Nodes (3): Pie and donut chart renderer., Draw a pie or donut chart. Args: inner_radius_ratio: 0.0 = solid pi, render_pie_series()
## Knowledge Gaps
- **37 isolated node(s):** `allow`, `annotated-doc`, `itsdangerous`, `PyJWT`, `anthropic` (+32 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **11 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `render_chart()` connect `Community 0` to `Community 1`, `Community 3`, `Community 9`, `Community 6`?**
_High betweenness centrality (0.244) - this node is a cross-community bridge._
- **Why does `_render_and_save()` connect `Community 1` to `Community 0`?**
_High betweenness centrality (0.149) - this node is a cross-community bridge._
- **Why does `generate()` connect `Community 1` to `Community 10`?**
_High betweenness centrality (0.099) - this node is a cross-community bridge._
- **Are the 7 inferred relationships involving `render_chart()` (e.g. with `main()` and `test_chart1_bond_yields()`) actually correct?**
_`render_chart()` has 7 INFERRED edges - model-reasoned connections that need verification._
- **Are the 5 inferred relationships involving `_render_dual_y_panel_body()` (e.g. with `LinearScale` and `render_y_axis()`) actually correct?**
_`_render_dual_y_panel_body()` has 5 INFERRED edges - model-reasoned connections that need verification._
- **What connects `Test script: render a multi-line chart matching PIMCO Chart 1 (bond yields) usin`, `Generate synthetic 10-year government bond yield data resembling the PDF chart.`, `Test all three chart types from the PIMCO reference PDF.` to the rest of the system?**
_114 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `Community 0` be split into smaller, more focused modules?**
_Cohesion score 0.08906882591093117 - nodes in this community are weakly interconnected._

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,276 @@
---
tags: [architecture, graphify, sandbox-notebookllamalm-nextjs]
updated: 2026-05-18
---
# Graph Report - /Users/ai_leed/Documents/Projects/Oliver/sandbox-notebookllamalm-nextjs (2026-05-18)
## Corpus Check
- cluster-only mode — file stats not available
## Summary
- 739 nodes · 1283 edges · 55 communities (49 shown, 6 thin omitted)
- Extraction: 75% EXTRACTED · 25% INFERRED · 0% AMBIGUOUS · INFERRED: 318 edges (avg confidence: 0.73)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `54eddd70`
- 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 35|Community 35]]
- [[_COMMUNITY_Community 36|Community 36]]
- [[_COMMUNITY_Community 37|Community 37]]
- [[_COMMUNITY_Community 38|Community 38]]
- [[_COMMUNITY_Community 39|Community 39]]
- [[_COMMUNITY_Community 41|Community 41]]
- [[_COMMUNITY_Community 42|Community 42]]
- [[_COMMUNITY_Community 51|Community 51]]
- [[_COMMUNITY_Community 52|Community 52]]
- [[_COMMUNITY_Community 53|Community 53]]
- [[_COMMUNITY_Community 54|Community 54]]
## God Nodes (most connected - your core abstractions)
1. `get_db_session()` - 61 edges
2. `get_notebook_by_id()` - 27 edges
3. `CLAUDE.md Developer Guide` - 25 edges
4. `Sandbox-NotebookLM Project` - 24 edges
5. `serialize_datetime()` - 18 edges
6. `AGENTS.md Project Entry Point` - 17 edges
7. `compilerOptions` - 16 edges
8. `User` - 16 edges
9. `Execute document processing task in background` - 15 edges
10. `_generate()` - 15 edges
## Surprising Connections (you probably didn't know these)
- `Notebook Sharing & Permissions` --conceptually_related_to--> `Notebooks Routes (notebooks.py)` [INFERRED]
README.md → backend/src/api/routes/notebooks.py
- `LLM Factory (llm_factory.py)` --calls--> `OpenAI (GPT Models)` [EXTRACTED]
backend/src/notebookllama/llm_factory.py → README.md
- `LLM Factory (llm_factory.py)` --calls--> `Anthropic (Claude Models)` [EXTRACTED]
backend/src/notebookllama/llm_factory.py → README.md
- `LLM Factory (llm_factory.py)` --calls--> `Google (Gemini Models)` [EXTRACTED]
backend/src/notebookllama/llm_factory.py → README.md
- `WebSocket Chat System` --conceptually_related_to--> `Chat Routes (chat.py)` [INFERRED]
README.md → backend/src/api/routes/chat.py
## Communities (55 total, 6 thin omitted)
### Community 0 - "Community 0"
Cohesion: 0.07
Nodes (52): AGENTS.md Project Entry Point, Admin Routes (admin.py), Podcast Audio Generation (audio.py), Auth Routes (auth.py), Background Tasks (background_tasks.py), Chat Routes (chat.py), Database Models (database.py), Documents Routes (documents.py) (+44 more)
### Community 1 - "Community 1"
Cohesion: 0.05
Nodes (38): dependencies, axios, @azure/msal-browser, date-fns, lucide-react, next, react, react-dom (+30 more)
### Community 2 - "Community 2"
Cohesion: 0.11
Nodes (42): Base, ChatMessage, ChatSession, Document, DocumentShare, DocumentSummary, drop_all_tables(), get_db() (+34 more)
### Community 3 - "Community 3"
Cohesion: 0.10
Nodes (42): set_user_ctx(), get_notebook_by_id(), create_mindmap_svg(), create_pdf_bytes(), create_pptx_bytes(), Generate PPTX file bytes styled with OLIVER brand guidelines., Generate PDF bytes from ReportOutput dict using WeasyPrint., Generate SVG bytes from MindMapOutput dict. (+34 more)
### Community 4 - "Community 4"
Cohesion: 0.06
Nodes (38): Get the latest podcast generation task for a notebook, Datetime utilities for consistent timezone handling across the application. All, Get current UTC time as timezone-aware datetime. Use this instead of datetim, Serialize datetime to ISO format string with UTC marker. Args: dt:, serialize_datetime(), utc_now(), check_admin(), check_health() (+30 more)
### Community 5 - "Community 5"
Cohesion: 0.06
Nodes (38): create_access_token(), decode_token(), get_current_user(), get_optional_user(), JWT Authentication Middleware for FastAPI Provides token generation and validati, FastAPI dependency for optional authentication (returns None if not authenticate, Create a JWT access token for a user Args: user_id: The user's data, Decode and validate a JWT token Args: token: JWT token string (+30 more)
### Community 6 - "Community 6"
Cohesion: 0.13
Nodes (24): api, token, AdminStats, AuthResponse, ChatMessage, ChatSession, Document, DocumentSummary (+16 more)
### Community 7 - "Community 7"
Cohesion: 0.10
Nodes (25): get_db_session(), Get database session directly - caller must close with db.close() Use this, can_access_document(), create_chat_session(), create_document(), get_chat_history(), get_document_by_id(), get_document_shares() (+17 more)
### Community 8 - "Community 8"
Cohesion: 0.10
Nodes (26): cleanup_old_stashed_files(), execute_podcast_task(), get_llamaextract_agent_with_retry(), get_llamaparse_with_retry(), get_notebook_processing_tasks(), get_task_status(), get_user_tasks(), Simple background task system using database as queue No external dependencies l (+18 more)
### Community 9 - "Community 9"
Cohesion: 0.16
Nodes (19): BaseModel, Notebook, BarChartItem, DataTableOutput, DataTableRow, DiagramData, Flashcard, FlashcardsOutput (+11 more)
### Community 10 - "Community 10"
Cohesion: 0.10
Nodes (20): add_document_to_notebook(), create_notebook(), get_shared_chats(), get_user_notebooks(), get_user_private_chats(), Notebook management helper functions for multi-document notebooks, Create a new notebook (collection of documents) with dedicated pipeline Rai, Add a document to a notebook (+12 more)
### Community 11 - "Community 11"
Cohesion: 0.10
Nodes (19): compilerOptions, allowJs, esModuleInterop, incremental, isolatedModules, jsx, lib, module (+11 more)
### Community 12 - "Community 12"
Cohesion: 0.11
Nodes (17): add_document_to_pipeline(), cleanup_all_orphaned_pipelines(), create_notebook_pipeline(), delete_notebook_documents_from_pipeline(), delete_pipeline_and_files(), get_or_create_shared_pipeline(), get_shared_pipeline_id(), Per-notebook pipeline management for data isolation Supports two modes: 1. Lega (+9 more)
### Community 13 - "Community 13"
Cohesion: 0.25
Nodes (11): MicrosoftCallbackPage(), authAPI, loginRequest, msalConfig, msalInstance, LoginPage(), NotebooksPage(), SignupPage() (+3 more)
### Community 15 - "Community 15"
Cohesion: 0.17
Nodes (15): extract_llama_tokens(), get_user_ctx(), model_id_for(), Map llm_factory model_type alias to the actual model ID string., Extract (input_tokens, output_tokens) from a LlamaIndex ChatResponse., generate_notebook_synthesis(), generate_podcast_outline(), generate_podcast_script_from_outline() (+7 more)
### Community 16 - "Community 16"
Cohesion: 0.15
Nodes (14): get_model_display_name(), Get user-friendly model name, check_pipeline_ready_with_test(), get_notebook_query_engine(), is_shared_pipeline(), query_notebook_pipeline(), Check if pipeline_id is the shared pipeline (with fallback lookup). This as, Check if pipeline is actually ready by doing ONE simple test query Only call (+6 more)
### Community 17 - "Community 17"
Cohesion: 0.18
Nodes (7): _conversation_audio(), ConversationTurn, MultiTurnConversation, PodcastGenerator, get_voice_name(), Voice configuration for ElevenLabs TTS podcast generation, Get the friendly name for a voice ID, or 'Unknown' if not found.
### Community 18 - "Community 18"
Cohesion: 0.15
Nodes (13): get_latest_document_summary(), Get all summaries for a document, Get the latest summary for a document, get_notebook_documents(), Get all documents in a notebook, Get all notebooks containing a document, Get count of documents in a notebook, get_document_summary() (+5 more)
### Community 19 - "Community 19"
Cohesion: 0.17
Nodes (11): _format_params(), _format_result(), log_api_call(), log_api_info(), log_api_retry(), API Call Logging Utilities Provides visibility into external API calls (LlamaClo, Format result for logging (extract key info), Simple info log for API-related messages. Usage: log_api_info("LLAM (+3 more)
### Community 20 - "Community 20"
Cohesion: 0.20
Nodes (9): Edge, get_mind_map(), MindMap, MindMapCreationFailedWarning, Node, process_file(), query_index(), A warning returned if the mind map creation failed (+1 more)
### Community 21 - "Community 21"
Cohesion: 0.17
Nodes (11): delete_chat_session(), Toggle a chat session between private and shared, Delete a chat session (only owner can delete), toggle_chat_sharing(), delete_session(), Chat session management routes, Toggle chat session sharing, Rename a chat session (+3 more)
### Community 22 - "Community 22"
Cohesion: 0.22
Nodes (9): montserrat, Navigation(), ProtectedRoute(), Theme, ThemeContext, ThemeContextValue, ThemeProvider(), useTheme() (+1 more)
### Community 23 - "Community 23"
Cohesion: 0.20
Nodes (9): get_llm_by_type(), get_model_emoji(), get_model_info(), get_structured_llm(), LLM Factory - Create OpenAI or Gemini LLMs based on user choice Supports per-not, Get structured LLM for pydantic output. Args: model_type: model ali, Get emoji for model type, Get model information including costs (+1 more)
### Community 24 - "Community 24"
Cohesion: 0.22
Nodes (9): analyze_video_with_gemini(), estimate_processing_time(), get_video_duration(), Gemini 2.5 Pro Video Processing Handles video upload, analysis, and transcript e, Get video duration in seconds using ffprobe (preferred) or moviepy (fallback)., Estimate processing time for video. Args: duration_seconds: Video d, Validate video meets requirements. Args: file_path: Path to video f, Analyze video using Gemini 2.5 Pro's multimodal capabilities. Uses the new g (+1 more)
### Community 25 - "Community 25"
Cohesion: 0.27
Nodes (8): Event, extract_file_data(), FileInputEvent, generate_mind_map(), MindMapCreationEvent, NotebookOutputEvent, StartEvent, StopEvent
### Community 26 - "Community 26"
Cohesion: 0.22
Nodes (3): AdminPage(), FEATURES, adminAPI
### Community 27 - "Community 27"
Cohesion: 0.39
Nodes (6): check_health(), error(), info(), on_error(), print_rollback(), warn()
### Community 28 - "Community 28"
Cohesion: 0.31
Nodes (8): _enabled(), preflight(), Lightweight AI Cost Tracker integration — fail-open, fire-and-forget., Record AI usage after a call. Fire-and-forget — errors never propagate., Enrich user record with profile data. Call once on login. Sync, non-fatal., Check budget before an AI call. Always returns True on error (fail-open)., record(), upsert_user()
### Community 29 - "Community 29"
Cohesion: 0.36
Nodes (9): build_context(), _generate(), generate_datatable(), generate_flashcards(), generate_infographic(), generate_quiz(), generate_report(), generate_slides() (+1 more)
### Community 30 - "Community 30"
Cohesion: 0.25
Nodes (4): DowngradePollingFilter, FastAPI application for Sandbox-NotebookLM Wraps existing Python backend with RE, # NOTE: Error suppression removed to allow proper debugging, Downgrade repetitive polling endpoint logs to DEBUG level
### Community 31 - "Community 31"
Cohesion: 0.46
Nodes (5): check_alive(), confirm(), info(), remove_dir(), warn()
### Community 32 - "Community 32"
Cohesion: 0.32
Nodes (7): apply_custom_styles(), get_custom_css(), Global CSS styles for NotebookLlaMa Apply consistent typography and styling acro, Display the logo at the top of the page, Apply custom CSS to the current page, Return custom CSS for the application, show_logo()
### Community 33 - "Community 33"
Cohesion: 0.25
Nodes (8): add_chat_message(), Add a message to a chat session, create_notebook_chat_session(), Create a chat session for a notebook, chat_websocket(), WebSocket endpoint for real-time chat with notebook, create_chat_session_endpoint(), Create a new chat session with deduplication
### Community 34 - "Community 34"
Cohesion: 0.29
Nodes (3): Message, chatAPI, notebookAPI
### Community 35 - "Community 35"
Cohesion: 0.33
Nodes (5): NotebookLMWorkflow, process_document_for_notebook(), Process a single document and add to notebook - DIRECT API CALLS (no MCP), sync_process_document(), Workflow
### Community 36 - "Community 36"
Cohesion: 0.40
Nodes (5): extract_with_llm(), parse_llm_extraction_response(), LLM-based document extraction fallback for file types not supported by LlamaExtr, Extract structured information from document text using LLM. This is a fallb, Parse the LLM response into structured format matching LlamaExtract output.
### Community 37 - "Community 37"
Cohesion: 0.33
Nodes (5): LoginRequest, MicrosoftLoginRequest, Search users by email or username for sharing purposes. - Requires minimum, search_users(), SignupRequest
### Community 38 - "Community 38"
Cohesion: 0.33
Nodes (6): create_task(), Create a background task, Start podcast generation in background and return task ID NOTE: Fully paral, Start document processing in background and return task ID, start_document_processing_background(), Start podcast generation in background
### Community 39 - "Community 39"
Cohesion: 0.30
Nodes (5): extract_slides_json_from_pptx(), Parse a PPTX binary and return a StudioSlides-compatible dict for preview., Regenerate a single slide based on a custom prompt., regenerate_single_slide(), SlideContent
### Community 41 - "Community 41"
Cohesion: 0.50
Nodes (4): delete_notebook(), Delete a notebook and cleanup LlamaCloud resources For shared pipelines: On, delete_notebook_endpoint(), Delete a notebook and all its data
## Knowledge Gaps
- **70 isolated node(s):** `config`, `name`, `version`, `private`, `dev` (+65 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **6 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `get_db_session()` connect `Community 7` to `Community 33`, `Community 2`, `Community 3`, `Community 4`, `Community 5`, `Community 38`, `Community 37`, `Community 8`, `Community 41`, `Community 10`, `Community 18`, `Community 21`?**
_High betweenness centrality (0.185) - this node is a cross-community bridge._
- **Why does `analyze_pptx_template()` connect `Community 1` to `Community 9`?**
_High betweenness centrality (0.074) - this node is a cross-community bridge._
- **Are the 59 inferred relationships involving `get_db_session()` (e.g. with `authenticate_user()` and `create_user()`) actually correct?**
_`get_db_session()` has 59 INFERRED edges - model-reasoned connections that need verification._
- **Are the 26 inferred relationships involving `get_notebook_by_id()` (e.g. with `execute_podcast_task()` and `Execute document processing task in background`) actually correct?**
_`get_notebook_by_id()` has 26 INFERRED edges - model-reasoned connections that need verification._
- **What connects `config`, `name`, `version` to the rest of the system?**
_260 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `Community 0` be split into smaller, more focused modules?**
_Cohesion score 0.07457627118644068 - nodes in this community are weakly interconnected._
- **Should `Community 1` be split into smaller, more focused modules?**
_Cohesion score 0.04591836734693878 - nodes in this community are weakly interconnected._

View file

@ -0,0 +1,693 @@
---
tags: [architecture, graphify, semblance]
updated: 2026-05-18
---
# Graph Report - /Users/ai_leed/Documents/Projects/Oliver/semblance (2026-05-18)
## Corpus Check
- cluster-only mode — file stats not available
## Summary
- 2218 nodes · 4047 edges · 252 communities (104 shown, 148 thin omitted)
- Extraction: 88% EXTRACTED · 12% INFERRED · 0% AMBIGUOUS · INFERRED: 500 edges (avg confidence: 0.73)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `54eddd70`
- 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 35|Community 35]]
- [[_COMMUNITY_Community 36|Community 36]]
- [[_COMMUNITY_Community 37|Community 37]]
- [[_COMMUNITY_Community 38|Community 38]]
- [[_COMMUNITY_Community 39|Community 39]]
- [[_COMMUNITY_Community 40|Community 40]]
- [[_COMMUNITY_Community 41|Community 41]]
- [[_COMMUNITY_Community 42|Community 42]]
- [[_COMMUNITY_Community 43|Community 43]]
- [[_COMMUNITY_Community 44|Community 44]]
- [[_COMMUNITY_Community 45|Community 45]]
- [[_COMMUNITY_Community 46|Community 46]]
- [[_COMMUNITY_Community 47|Community 47]]
- [[_COMMUNITY_Community 48|Community 48]]
- [[_COMMUNITY_Community 49|Community 49]]
- [[_COMMUNITY_Community 50|Community 50]]
- [[_COMMUNITY_Community 51|Community 51]]
- [[_COMMUNITY_Community 52|Community 52]]
- [[_COMMUNITY_Community 53|Community 53]]
- [[_COMMUNITY_Community 54|Community 54]]
- [[_COMMUNITY_Community 55|Community 55]]
- [[_COMMUNITY_Community 56|Community 56]]
- [[_COMMUNITY_Community 57|Community 57]]
- [[_COMMUNITY_Community 58|Community 58]]
- [[_COMMUNITY_Community 59|Community 59]]
- [[_COMMUNITY_Community 60|Community 60]]
- [[_COMMUNITY_Community 61|Community 61]]
- [[_COMMUNITY_Community 62|Community 62]]
- [[_COMMUNITY_Community 63|Community 63]]
- [[_COMMUNITY_Community 64|Community 64]]
- [[_COMMUNITY_Community 65|Community 65]]
- [[_COMMUNITY_Community 66|Community 66]]
- [[_COMMUNITY_Community 67|Community 67]]
- [[_COMMUNITY_Community 68|Community 68]]
- [[_COMMUNITY_Community 69|Community 69]]
- [[_COMMUNITY_Community 70|Community 70]]
- [[_COMMUNITY_Community 71|Community 71]]
- [[_COMMUNITY_Community 72|Community 72]]
- [[_COMMUNITY_Community 73|Community 73]]
- [[_COMMUNITY_Community 74|Community 74]]
- [[_COMMUNITY_Community 75|Community 75]]
- [[_COMMUNITY_Community 76|Community 76]]
- [[_COMMUNITY_Community 77|Community 77]]
- [[_COMMUNITY_Community 78|Community 78]]
- [[_COMMUNITY_Community 79|Community 79]]
- [[_COMMUNITY_Community 80|Community 80]]
- [[_COMMUNITY_Community 81|Community 81]]
- [[_COMMUNITY_Community 82|Community 82]]
- [[_COMMUNITY_Community 83|Community 83]]
- [[_COMMUNITY_Community 84|Community 84]]
- [[_COMMUNITY_Community 85|Community 85]]
- [[_COMMUNITY_Community 86|Community 86]]
- [[_COMMUNITY_Community 87|Community 87]]
- [[_COMMUNITY_Community 88|Community 88]]
- [[_COMMUNITY_Community 89|Community 89]]
- [[_COMMUNITY_Community 90|Community 90]]
- [[_COMMUNITY_Community 91|Community 91]]
- [[_COMMUNITY_Community 92|Community 92]]
- [[_COMMUNITY_Community 93|Community 93]]
- [[_COMMUNITY_Community 94|Community 94]]
- [[_COMMUNITY_Community 95|Community 95]]
- [[_COMMUNITY_Community 96|Community 96]]
- [[_COMMUNITY_Community 97|Community 97]]
- [[_COMMUNITY_Community 98|Community 98]]
- [[_COMMUNITY_Community 99|Community 99]]
- [[_COMMUNITY_Community 100|Community 100]]
- [[_COMMUNITY_Community 101|Community 101]]
- [[_COMMUNITY_Community 102|Community 102]]
- [[_COMMUNITY_Community 103|Community 103]]
- [[_COMMUNITY_Community 104|Community 104]]
- [[_COMMUNITY_Community 105|Community 105]]
- [[_COMMUNITY_Community 106|Community 106]]
- [[_COMMUNITY_Community 107|Community 107]]
- [[_COMMUNITY_Community 108|Community 108]]
- [[_COMMUNITY_Community 109|Community 109]]
- [[_COMMUNITY_Community 111|Community 111]]
- [[_COMMUNITY_Community 112|Community 112]]
- [[_COMMUNITY_Community 118|Community 118]]
- [[_COMMUNITY_Community 119|Community 119]]
- [[_COMMUNITY_Community 120|Community 120]]
- [[_COMMUNITY_Community 121|Community 121]]
- [[_COMMUNITY_Community 122|Community 122]]
- [[_COMMUNITY_Community 123|Community 123]]
- [[_COMMUNITY_Community 124|Community 124]]
- [[_COMMUNITY_Community 125|Community 125]]
- [[_COMMUNITY_Community 126|Community 126]]
- [[_COMMUNITY_Community 127|Community 127]]
- [[_COMMUNITY_Community 128|Community 128]]
- [[_COMMUNITY_Community 129|Community 129]]
- [[_COMMUNITY_Community 130|Community 130]]
- [[_COMMUNITY_Community 131|Community 131]]
- [[_COMMUNITY_Community 132|Community 132]]
- [[_COMMUNITY_Community 133|Community 133]]
- [[_COMMUNITY_Community 134|Community 134]]
- [[_COMMUNITY_Community 135|Community 135]]
- [[_COMMUNITY_Community 136|Community 136]]
- [[_COMMUNITY_Community 137|Community 137]]
- [[_COMMUNITY_Community 138|Community 138]]
- [[_COMMUNITY_Community 139|Community 139]]
- [[_COMMUNITY_Community 140|Community 140]]
- [[_COMMUNITY_Community 141|Community 141]]
- [[_COMMUNITY_Community 142|Community 142]]
- [[_COMMUNITY_Community 143|Community 143]]
- [[_COMMUNITY_Community 144|Community 144]]
- [[_COMMUNITY_Community 145|Community 145]]
- [[_COMMUNITY_Community 146|Community 146]]
- [[_COMMUNITY_Community 147|Community 147]]
- [[_COMMUNITY_Community 148|Community 148]]
- [[_COMMUNITY_Community 149|Community 149]]
- [[_COMMUNITY_Community 150|Community 150]]
- [[_COMMUNITY_Community 151|Community 151]]
- [[_COMMUNITY_Community 152|Community 152]]
- [[_COMMUNITY_Community 153|Community 153]]
- [[_COMMUNITY_Community 154|Community 154]]
- [[_COMMUNITY_Community 155|Community 155]]
- [[_COMMUNITY_Community 156|Community 156]]
- [[_COMMUNITY_Community 157|Community 157]]
- [[_COMMUNITY_Community 158|Community 158]]
- [[_COMMUNITY_Community 159|Community 159]]
- [[_COMMUNITY_Community 160|Community 160]]
- [[_COMMUNITY_Community 161|Community 161]]
- [[_COMMUNITY_Community 162|Community 162]]
- [[_COMMUNITY_Community 163|Community 163]]
- [[_COMMUNITY_Community 164|Community 164]]
- [[_COMMUNITY_Community 165|Community 165]]
- [[_COMMUNITY_Community 166|Community 166]]
- [[_COMMUNITY_Community 167|Community 167]]
- [[_COMMUNITY_Community 168|Community 168]]
- [[_COMMUNITY_Community 169|Community 169]]
- [[_COMMUNITY_Community 170|Community 170]]
- [[_COMMUNITY_Community 171|Community 171]]
- [[_COMMUNITY_Community 172|Community 172]]
- [[_COMMUNITY_Community 173|Community 173]]
- [[_COMMUNITY_Community 174|Community 174]]
- [[_COMMUNITY_Community 175|Community 175]]
- [[_COMMUNITY_Community 176|Community 176]]
- [[_COMMUNITY_Community 177|Community 177]]
- [[_COMMUNITY_Community 178|Community 178]]
- [[_COMMUNITY_Community 179|Community 179]]
- [[_COMMUNITY_Community 180|Community 180]]
- [[_COMMUNITY_Community 181|Community 181]]
- [[_COMMUNITY_Community 182|Community 182]]
- [[_COMMUNITY_Community 183|Community 183]]
- [[_COMMUNITY_Community 184|Community 184]]
- [[_COMMUNITY_Community 185|Community 185]]
- [[_COMMUNITY_Community 186|Community 186]]
- [[_COMMUNITY_Community 187|Community 187]]
- [[_COMMUNITY_Community 188|Community 188]]
- [[_COMMUNITY_Community 189|Community 189]]
- [[_COMMUNITY_Community 190|Community 190]]
- [[_COMMUNITY_Community 191|Community 191]]
- [[_COMMUNITY_Community 192|Community 192]]
- [[_COMMUNITY_Community 193|Community 193]]
- [[_COMMUNITY_Community 194|Community 194]]
- [[_COMMUNITY_Community 195|Community 195]]
- [[_COMMUNITY_Community 196|Community 196]]
- [[_COMMUNITY_Community 197|Community 197]]
- [[_COMMUNITY_Community 198|Community 198]]
- [[_COMMUNITY_Community 199|Community 199]]
- [[_COMMUNITY_Community 200|Community 200]]
- [[_COMMUNITY_Community 201|Community 201]]
- [[_COMMUNITY_Community 202|Community 202]]
- [[_COMMUNITY_Community 203|Community 203]]
- [[_COMMUNITY_Community 204|Community 204]]
- [[_COMMUNITY_Community 205|Community 205]]
- [[_COMMUNITY_Community 206|Community 206]]
- [[_COMMUNITY_Community 207|Community 207]]
- [[_COMMUNITY_Community 208|Community 208]]
- [[_COMMUNITY_Community 209|Community 209]]
- [[_COMMUNITY_Community 210|Community 210]]
- [[_COMMUNITY_Community 211|Community 211]]
- [[_COMMUNITY_Community 212|Community 212]]
- [[_COMMUNITY_Community 213|Community 213]]
- [[_COMMUNITY_Community 214|Community 214]]
- [[_COMMUNITY_Community 215|Community 215]]
- [[_COMMUNITY_Community 216|Community 216]]
- [[_COMMUNITY_Community 217|Community 217]]
- [[_COMMUNITY_Community 218|Community 218]]
- [[_COMMUNITY_Community 219|Community 219]]
- [[_COMMUNITY_Community 220|Community 220]]
- [[_COMMUNITY_Community 221|Community 221]]
- [[_COMMUNITY_Community 222|Community 222]]
- [[_COMMUNITY_Community 223|Community 223]]
- [[_COMMUNITY_Community 224|Community 224]]
- [[_COMMUNITY_Community 225|Community 225]]
- [[_COMMUNITY_Community 226|Community 226]]
- [[_COMMUNITY_Community 227|Community 227]]
- [[_COMMUNITY_Community 228|Community 228]]
- [[_COMMUNITY_Community 229|Community 229]]
- [[_COMMUNITY_Community 230|Community 230]]
- [[_COMMUNITY_Community 231|Community 231]]
- [[_COMMUNITY_Community 232|Community 232]]
- [[_COMMUNITY_Community 233|Community 233]]
- [[_COMMUNITY_Community 234|Community 234]]
- [[_COMMUNITY_Community 235|Community 235]]
- [[_COMMUNITY_Community 236|Community 236]]
- [[_COMMUNITY_Community 237|Community 237]]
- [[_COMMUNITY_Community 238|Community 238]]
- [[_COMMUNITY_Community 239|Community 239]]
- [[_COMMUNITY_Community 240|Community 240]]
- [[_COMMUNITY_Community 241|Community 241]]
- [[_COMMUNITY_Community 242|Community 242]]
- [[_COMMUNITY_Community 243|Community 243]]
- [[_COMMUNITY_Community 244|Community 244]]
- [[_COMMUNITY_Community 245|Community 245]]
- [[_COMMUNITY_Community 249|Community 249]]
- [[_COMMUNITY_Community 250|Community 250]]
- [[_COMMUNITY_Community 251|Community 251]]
## God Nodes (most connected - your core abstractions)
1. `Focus Group` - 106 edges
2. `cn()` - 81 edges
3. `get_db()` - 79 edges
4. `get_jwt_identity()` - 53 edges
5. `LLMService` - 47 edges
6. `Button` - 47 edges
7. `Autonomous Conversation Controller` - 42 edges
8. `DiscussionGuideValidator` - 40 edges
9. `conversation_state_manager.py` - 37 edges
10. `AIRecruiter()` - 36 edges
## Surprising Connections (you probably didn't know these)
- `Semblance Architecture PDF Document` --semantically_similar_to--> `Application Documentation Overview` [INFERRED] [semantically similar]
semblance_architecture.pdf → semblance_app_documentation.md
- `Semblance Security Remediation Report PDF` --semantically_similar_to--> `Semblance Security Audit Report` [INFERRED] [semantically similar]
security_report.pdf → security_report.md
- `conversation_state_manager.py` --semantically_similar_to--> `services/conversation_state_manager.py` [INFERRED] [semantically similar]
CLAUDE.md → security_report.md
- `personasApi` --conceptually_related_to--> `Synthetic Persona` [INFERRED]
src/lib/api.ts → backend/prompts/persona-detailed-generation.md
- `focusGroupAiApi` --conceptually_related_to--> `Focus Group` [INFERRED]
src/lib/api.ts → backend/README.md
## Communities (252 total, 148 thin omitted)
### Community 0 - "Community 0"
Cohesion: 0.05
Nodes (79): ADR: Dedicated OS Thread for Autonomous AI, ADR: Quart + Hypercorn ASGI Stack, ADR: Multi-Provider LLM Routing, app/extensions.py (socketio AsyncServer), contexts/WebSocketContextNew.tsx, AI Runner Service (ai_runner_service.py), src/lib/api.ts, conversation_decision_service.py (+71 more)
### Community 1 - "Community 1"
Cohesion: 0.04
Nodes (54): UserCardProps, cn(), AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertTitle (+46 more)
### Community 2 - "Community 2"
Cohesion: 0.03
Nodes (58): dependencies, axios, @azure/msal-browser, @azure/msal-react, caniuse-lite, class-variance-authority, clsx, cmdk (+50 more)
### Community 3 - "Community 3"
Cohesion: 0.06
Nodes (31): Autonomous Conversation Controller, get_autonomous_conversation_status(), get_reasoning_history(), Get the AI reasoning history for an autonomous conversation. Returns:, Get the status of autonomous conversation for a focus group. Returns:, Autonomous Conversation Controller Orchestrates the autonomous conversation flow, Fallback method to advance position sequentially., Yield control to allow other tasks to run and flush WebSocket frames. (+23 more)
### Community 4 - "Community 4"
Cohesion: 0.07
Nodes (44): BaseDocTemplate, Flowable, Paragraph, ArchDocTemplate, BookmarkedHeading, build_architecture_doc(), build_chapter_1(), bullet() (+36 more)
### Community 5 - "Community 5"
Cohesion: 0.08
Nodes (38): formSchema, AIRecruiterProps, ChatMessageProps, initialThemes, sampleFocusGroups, samplePersonas, DiscussionPanel(), DiscussionPanelProps (+30 more)
### Community 6 - "Community 6"
Cohesion: 0.06
Nodes (36): create_app(), Set up temporary directories for file handling., setup_temp_directories(), create_app_logger(), CustomHTTPFilter, Custom logging configuration for the application to reduce noise., Filter to reduce noise from routine HTTP requests., Filter log records to reduce noise from routine operations. (+28 more)
### Community 7 - "Community 7"
Cohesion: 0.10
Nodes (31): PersonaReviewList(), PersonaReviewListProps, LoginRequiredProps, ThemeHighlighterProps, StatCard(), StatCardProps, AutonomousDashboardProps, ConversationAnalytics (+23 more)
### Community 8 - "Community 8"
Cohesion: 0.07
Nodes (43): batch_generate_and_save_personas(), batch_generate_personas(), batch_generate_summaries(), complete_and_save_persona(), complete_persona(), enhance_audience_brief_endpoint(), generate_ai_persona(), generate_and_save_persona() (+35 more)
### Community 9 - "Community 9"
Cohesion: 0.08
Nodes (22): BackendAsset, LocalAsset, Folder, FolderTreeProps, DashboardHeader(), activityData, sentimentData, topicBreakdownData (+14 more)
### Community 10 - "Community 10"
Cohesion: 0.07
Nodes (26): AdminRoute(), AdminRouteProps, msalInstance, MsalProvider(), UserCreator(), loginRequest, silentRequest, tokenRequest (+18 more)
### Community 11 - "Community 11"
Cohesion: 0.12
Nodes (38): get_db(), Get database connection using singleton Motor client per event loop., Focus Group, _activate_visual_assets(), add_generated_theme(), add_message(), add_mode_event(), add_note() (+30 more)
### Community 12 - "Community 12"
Cohesion: 0.07
Nodes (22): Stop autonomous conversation for a focus group. Request body: {, stop_autonomous_conversation(), get_ai_runner(), init_ai_runner(), AI Runner Service Provides a single dedicated thread with an asyncio event loop, Main thread function that runs the asyncio event loop., Initialize async resources (database, HTTP clients) on the AI loop., Cleanup async resources. (+14 more)
### Community 13 - "Community 13"
Cohesion: 0.11
Nodes (24): PRESETS, Props, GroupBy, UsageTab(), User, UsersTab(), UsageSummaryParams, useAdminUsageSummary() (+16 more)
### Community 14 - "Community 14"
Cohesion: 0.14
Nodes (23): PricingRow, PricingTab(), PricingTier, CopyGuideDialog(), QuickNoteModalProps, Note, useCreatePricing(), DiscussionGuideGenerationReturn (+15 more)
### Community 15 - "Community 15"
Cohesion: 0.16
Nodes (25): AIRecruiter(), formSchema, UserCreatorProps, SetupTab(), SetupTabProps, ModificationFormData, modificationFormSchema, FormControl (+17 more)
### Community 16 - "Community 16"
Cohesion: 0.13
Nodes (21): formSchema, NavigationContextType, NavigationState, AnalyticsPanel(), FolderSidebar(), personasApi, PersonaEditor(), PersonaProfile() (+13 more)
### Community 17 - "Community 17"
Cohesion: 0.11
Nodes (27): AI Moderator Service, advance_discussion(), _advance_position(), _count_completed_items(), _count_total_items(), end_session_with_concluding_statement(), _format_messages_for_context(), _generate_concluding_statement() (+19 more)
### Community 18 - "Community 18"
Cohesion: 0.10
Nodes (17): Persona Export Service, Bulk Persona Export Service Handles bulk export of persona profiles to various, Create comprehensive markdown from persona data with all fields included., Service for bulk exporting persona profiles with progress tracking., Create a temporary directory for export files., Export multiple personas to specified format with progress tracking., Export personas as markdown files in a ZIP archive., Sanitize filename for safe file system use. (+9 more)
### Community 19 - "Community 19"
Cohesion: 0.08
Nodes (24): Image Description Service, Exception, FocusGroupSummaryError, generate_focus_group_summary(), Focus Group Summary Service This service generates LLM-powered one-line summari, Custom exception for focus group summary generation errors., Generate a one-line summary of a focus group for display in list views. Arg, generate_description() (+16 more)
### Community 20 - "Community 20"
Cohesion: 0.09
Nodes (29): create_user(), disable_user(), enable_user(), get_user(), list_focus_groups(), list_users(), _month_start(), _parse_iso() (+21 more)
### Community 21 - "Community 21"
Cohesion: 0.08
Nodes (17): WebSocketContext, WebSocketProvider(), WebSocketProviderProps, UseWebSocketOptions, UseWebSocketReturn, WebSocketState, convertWebSocketMessage(), convertWebSocketTheme() (+9 more)
### Community 22 - "Community 22"
Cohesion: 0.12
Nodes (20): createPersistentToast(), PersistentToastOptions, persistentToasts, toastService, updatePersistentToast(), UpdatePersistentToastOptions, sampleFocusGroups, statusColors (+12 more)
### Community 23 - "Community 23"
Cohesion: 0.11
Nodes (27): Focus Group Response Service (Mermaid), advance_moderator_discussion(), Advance the moderator to the next item in the discussion guide. For manual m, add_focus_group_message(), Add a new message to a focus group., _determine_response_length_preference(), extract_asset_filename_from_content(), FocusGroupResponseError (+19 more)
### Community 24 - "Community 24"
Cohesion: 0.07
Nodes (25): Separator, Sidebar, SidebarContext, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel (+17 more)
### Community 25 - "Community 25"
Cohesion: 0.12
Nodes (28): get_async_websocket_manager(), Get the global async WebSocket manager instance., generate_key_themes(), make_conversation_decision(), Make a conversation decision using the LLM decision engine. Returns 202 imme, Generate key themes from a focus group discussion. Request body: {, _run_conversation_decision_bg(), _run_key_themes_bg() (+20 more)
### Community 26 - "Community 26"
Cohesion: 0.09
Nodes (21): Quart Authentication Module Provides JWT authentication functionality compatibl, create_access_token(), decode_token(), get_current_user(), jwt_required(), QuartJWTError, Quart-compatible JWT Authentication Replacement for Flask-JWT-Extended to work, Get current user ID (alias for get_jwt_identity). (+13 more)
### Community 27 - "Community 27"
Cohesion: 0.12
Nodes (22): conversation_state_manager.py, get_conversation_analytics(), manual_intervention(), Manually intervene in autonomous conversation. Request body: {, Get detailed conversation analytics for a focus group. Returns:, Conversation State Manager Manages conversation state, analytics, and tracking f, Manager for conversation state and analytics., Check if the analytics cache is still valid. (+14 more)
### Community 28 - "Community 28"
Cohesion: 0.10
Nodes (13): AsyncWebSocketManager, Join a user session to a focus group room., Remove a user session from a focus group room., Emit an event to all users in a focus group room., Store the main ASGI event loop for cross-thread emission., Emit a new message to focus group participants., Register all WebSocket event handlers., Emit AI status change to focus group participants. (+5 more)
### Community 29 - "Community 29"
Cohesion: 0.10
Nodes (25): get_jwt_identity(), Get the identity (user ID) from the current JWT token. Returns:, cleanup_customer_data(), Upload customer data files and parse them using LlamaParse. Request: mu, Clean up customer data files for a specific session. Args: sess, Rate limit key: endpoint + user identity (set after JWT validation)., upload_customer_data(), _user_key() (+17 more)
### Community 30 - "Community 30"
Cohesion: 0.08
Nodes (23): initialize_database(), Set up temp directories before Quart imports., Initialize the application on startup., Run the server with enhanced shutdown pattern and diagnostics., run_server(), setup_early_temp_directories(), startup(), aliases (+15 more)
### Community 31 - "Community 31"
Cohesion: 0.18
Nodes (15): check_quota(), Check quotas and raise QuotaExceededError if either is exceeded. Returns a, Tests for the usage tracking infrastructure added in Phase A-C: - LLMCallConte, check_quota does lazy imports inside the function body: from app.models., test_admin_bypasses_user_quota(), test_db_error_in_quota_check_is_non_fatal(), test_exactly_at_quota_limit_is_exceeded(), test_fg_quota_at_80_percent_returns_warning() (+7 more)
### Community 32 - "Community 32"
Cohesion: 0.09
Nodes (15): ContainerData, DiscussionGuideItem, DiscussionGuideSection, DiscussionGuideSubsection, DroppableContainer(), getItemsByContainer(), ItemData, Kind (+7 more)
### Community 33 - "Community 33"
Cohesion: 0.23
Nodes (22): type, _extract_responses_api_content(), _extract_text_from_new_genai_response(), _extract_usage_metadata(), generate_content(), generate_contextual_response(), generate_multimodal_content(), generate_structured_array() (+14 more)
### Community 34 - "Community 34"
Cohesion: 0.09
Nodes (22): create_pricing(), list_pricing(), GET /api/admin/pricing — active pricing rows for all models., POST /api/admin/pricing — insert a new pricing row., add_focus_group_note(), create_focus_group(), get_all_focus_groups(), get_assets() (+14 more)
### Community 35 - "Community 35"
Cohesion: 0.09
Nodes (22): services/ai_persona_service.py, docs/project/api_spec.md, docs/project/architecture.md, services/autonomous_conversation_controller.py, docs/project/database_schema.md, AGENTS.md Project Entry Point, services/focus_group_response_service.py, services/focus_group_summary_service.py (+14 more)
### Community 36 - "Community 36"
Cohesion: 0.09
Nodes (21): compilerOptions, allowImportingTsExtensions, baseUrl, isolatedModules, jsx, lib, module, moduleDetection (+13 more)
### Community 37 - "Community 37"
Cohesion: 0.10
Nodes (21): delete_key_theme(), end_focus_group_session(), _format_persona_details_for_context(), generate_ai_response(), get_conversation_insights(), get_key_themes(), get_moderator_status(), _get_response_length_instructions() (+13 more)
### Community 38 - "Community 38"
Cohesion: 0.13
Nodes (19): Backend Service (Docker), Frontend Build Service (Docker), MongoDB Service (Docker), Backend Tech Stack, Hypercorn ASGI Server, MongoDB Database, Quart Async Python Framework, Socket.IO Real-Time Communication (+11 more)
### Community 39 - "Community 39"
Cohesion: 0.11
Nodes (20): services/key_theme_service.py, services/task_manager.py, A-H1: MSAL Token Backend Validation Fix, app/utils.py (make_serializable), src/contexts/AuthContext.tsx, auth/quart_jwt.py, services/conversation_state_manager.py, F-H2: Non-401 Auth Token Fix (AuthContext.tsx) (+12 more)
### Community 40 - "Community 40"
Cohesion: 0.16
Nodes (18): Conversation Context Service, _analyze_conversation(), _analyze_sentiment(), build_multimodal_context(), _detect_emerging_topics(), _extract_visual_timeline(), _format_conversation_history(), _format_text_context_simple() (+10 more)
### Community 41 - "Community 41"
Cohesion: 0.18
Nodes (8): QuotaExceededError, QuotaWarning, GET /api/admin/usage/events?user_id=&focus_group_id=&feature=&skip=&limit=, usage_events(), LLMCallContext, TestLLMUsageContext, TestQuotaExceededError, TestUsageEventRecord
### Community 42 - "Community 42"
Cohesion: 0.11
Nodes (4): OpenAI Responses API format (gpt-5.4-2026-03-05)., OpenAI Chat Completions format (legacy)., Fields that return None should be coerced to 0, not None., TestLLMServicePureStaticMethods
### Community 43 - "Community 43"
Cohesion: 0.11
Nodes (18): add_persona_to_folder(), create_folder(), delete_folder(), get_folder(), get_folder_descendants(), get_folders(), move_folder(), Delete a folder and its entire hierarchy. (+10 more)
### Community 44 - "Community 44"
Cohesion: 0.12
Nodes (12): get_websocket_manager(), init_websocket_manager(), WebSocket Manager for Synthetic Society Handles WebSocket connections, room mana, Join a user session to a focus group room., Remove a user session from a focus group room., Get information about a focus group room., Get overall connection statistics., Initialize the global WebSocket manager using singleton SocketIO. (+4 more)
### Community 45 - "Community 45"
Cohesion: 0.14
Nodes (17): add_persona(), add_personas_batch(), create(), delete(), delete_hierarchy(), find_by_id(), Folder, generate_unique_name() (+9 more)
### Community 46 - "Community 46"
Cohesion: 0.11
Nodes (5): Tests for LLMService — covers parse_json_response (sync) and generate_structured, Fields returning None should become 0, not None., Static — no external calls., TestExtractUsageMetadata, TestParseJsonResponse
### Community 47 - "Community 47"
Cohesion: 0.12
Nodes (11): find_by_user(), bump_token_version(), count(), find_all(), find_by_email(), find_by_id(), find_by_microsoft_id(), get_token_version() (+3 more)
### Community 48 - "Community 48"
Cohesion: 0.12
Nodes (17): devDependencies, autoprefixer, eslint, @eslint/js, eslint-plugin-react-hooks, eslint-plugin-react-refresh, globals, lovable-tagger (+9 more)
### Community 49 - "Community 49"
Cohesion: 0.14
Nodes (4): runWebSocketDiagnostics(), WebSocketPerformanceMetrics, WebSocketTester, WebSocketTestResult
### Community 50 - "Community 50"
Cohesion: 0.13
Nodes (16): delete_asset(), ensure_upload_folder(), get_upload_folder(), process_files_directly_from_request(), Get the upload folder path for a focus group., Ensure the upload folder exists for a focus group., Save uploaded file directly to avoid temporary file issues., Upload creative assets for a focus group. (+8 more)
### Community 51 - "Community 51"
Cohesion: 0.12
Nodes (10): check_cancellation(), Task Manager Service for handling cancellable long-running operations. This ser, Get information about a task by its ID., Get all active tasks for a specific user., Store task result for polling. Called by background functions., Get the number of currently active tasks., Force cleanup of all tasks (useful for testing/shutdown)., Decorator to add cancellation checkpoints to functions. Should be used on fu (+2 more)
### Community 52 - "Community 52"
Cohesion: 0.18
Nodes (15): Key Theme Service, _build_theme_extraction_prompt(), _extract_themes_from_discussion(), generate_key_themes(), KeyThemeServiceError, _parse_quote_with_message_id(), Key Theme Generation Service This service provides functions for generating key, Exception raised for errors in key theme generation. (+7 more)
### Community 53 - "Community 53"
Cohesion: 0.19
Nodes (3): Two-tier Gemini pricing: <200k and >=200k., Single-tier GPT pricing., TestModelPricingPureLogic
### Community 54 - "Community 54"
Cohesion: 0.12
Nodes (15): compilerOptions, allowImportingTsExtensions, isolatedModules, lib, module, moduleDetection, moduleResolution, noEmit (+7 more)
### Community 55 - "Community 55"
Cohesion: 0.14
Nodes (7): Emit an event to all users in a focus group room., Emit a new message to focus group participants., Emit AI status change to focus group participants., Emit moderator status change to focus group participants., Emit theme update to focus group participants., Emit analytics update to focus group participants., Emit conversation state update to focus group participants.
### Community 56 - "Community 56"
Cohesion: 0.15
Nodes (8): Customer Data Service for parsing uploaded files using LlamaParse. Handles file, Get all parsed markdown content for a session. Args:, Clean up all files for a session. Args: session_id:, Exception raised for errors in customer data processing., Service for handling customer data upload and parsing., Initialize the service with LlamaParse API key., Generate a unique session ID for this upload session., Upload files and parse them using LlamaParse. Args:
### Community 57 - "Community 57"
Cohesion: 0.14
Nodes (13): find_legacy_folders(), find_user_id(), get_db_connection(), migrate_folder(), Migrate a single folder to add missing hierarchy fields., Main migration function., Get database connection using the same logic as the app., Find user ID by username. (+5 more)
### Community 58 - "Community 58"
Cohesion: 0.19
Nodes (14): AI Moderation, Discussion Guide, Probe Trigger, Thematic Analysis, DiscussionGuideItem, DiscussionGuideSection(), AI Moderator System Prompt, Conversation Decision Engine Prompt (+6 more)
### Community 59 - "Community 59"
Cohesion: 0.19
Nodes (13): convert_discussion_guide_to_markdown(), download_discussion_guide(), format_discussion_item_markdown(), Download the discussion guide for a focus group as a markdown file. Ret, Convert a discussion guide to markdown format. Handles both structured (JSON, Format a discussion item (question or activity) as markdown., convertLegacyDiscussionGuideToMarkdown(), convertStructuredDiscussionGuideToMarkdown() (+5 more)
### Community 60 - "Community 60"
Cohesion: 0.18
Nodes (8): CancellableGenerationControls, initialState, TaskPollingControls, TaskPollingState, cancelTask(), cancelTaskWithFeedback(), TaskCancellationResponse, CancellableGenerationHookState
### Community 61 - "Community 61"
Cohesion: 0.18
Nodes (11): Folder, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut() (+3 more)
### Community 62 - "Community 62"
Cohesion: 0.15
Nodes (12): compilerOptions, allowJs, baseUrl, noImplicitAny, noUnusedLocals, noUnusedParameters, paths, skipLibCheck (+4 more)
### Community 63 - "Community 63"
Cohesion: 0.15
Nodes (11): Context manager for creating cancellable tasks with automatic cleanup., CancellableResponse, DiscussionGuideResponse, GenerationProgressProps, KeyThemesResponse, PersonaGenerationResponse, PersonaModificationResponse, SummaryGenerationResponse (+3 more)
### Community 64 - "Community 64"
Cohesion: 0.15
Nodes (12): Carousel, CarouselApi, CarouselContent, CarouselContext, CarouselContextProps, CarouselItem, CarouselNext, CarouselOptions (+4 more)
### Community 65 - "Community 65"
Cohesion: 0.17
Nodes (9): ChartConfig, ChartContainer, ChartContext, ChartContextProps, ChartLegendContent, ChartStyle(), ChartTooltipContent, sanitizeChartId() (+1 more)
### Community 66 - "Community 66"
Cohesion: 0.17
Nodes (7): get_websocket_debug_tap(), WebSocket Debug Tap Monitors all WebSocket emissions at the Flask-SocketIO level, Debug tap that monitors all WebSocket emissions., Install the debug tap on a SocketIO instance., Get recent WebSocket emissions., Clear the emission log., Get the global WebSocket debug tap.
### Community 67 - "Community 67"
Cohesion: 0.17
Nodes (12): AI Operations API Endpoints, POST /api/auth/login Endpoint, Focus Groups API Endpoints, Personas API Endpoints, Application Documentation Overview, AuthContext State Management, DiscussionGuide TypeScript Interface, FocusGroup TypeScript Interface (+4 more)
### Community 68 - "Community 68"
Cohesion: 0.17
Nodes (7): Background task done — retain result for polling (TTL sweeper handles cleanup)., Information about a running task., Convenience function to register a task with the global task manager. R, Generate a unique task ID., Register a new task for tracking and potential cancellation. Ar, register_cancellable_task(), TaskInfo
### Community 69 - "Community 69"
Cohesion: 0.17
Nodes (11): Menubar, MenubarCheckboxItem, MenubarContent, MenubarItem, MenubarLabel, MenubarRadioItem, MenubarSeparator, MenubarShortcut() (+3 more)
### Community 70 - "Community 70"
Cohesion: 0.24
Nodes (11): Auth Context (Mermaid), Focus Group Service (Mermaid), Offline Mode / Local Storage Fallback, AI Persona Service (Mermaid), System Architecture Mermaid Diagram, _add_metadata_to_activity(), _add_visual_asset_metadata_to_guide(), _generate_assets_section() (+3 more)
### Community 71 - "Community 71"
Cohesion: 0.18
Nodes (10): name, private, scripts, backend, build, build:dev, dev, lint (+2 more)
### Community 72 - "Community 72"
Cohesion: 0.27
Nodes (10): Persona, Sanitize persona data to make it JSON serializable. Args: perso, _sanitize_persona_data_for_json(), modify_persona(), PersonaModificationError, _protect_readonly_fields(), Persona Modification Service This service handles AI-powered modification of ex, Exception raised for errors in the persona modification process. (+2 more)
### Community 73 - "Community 73"
Cohesion: 0.20
Nodes (10): Authentication Feature, deploy.sh Deployment Script, Frontend Tech Stack, MSAL Azure AD Authentication, Persona Management Feature, Semblance Synthetic Society README, start.sh Local Development Script, msal==1.24.1 (+2 more)
### Community 74 - "Community 74"
Cohesion: 0.20
Nodes (9): ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut(), ContextMenuSubContent (+1 more)
### Community 75 - "Community 75"
Cohesion: 0.20
Nodes (8): ip_key(), rate_limit(), RateLimiter, Simple in-memory rate limiter for Quart endpoints. Uses a sliding-window counter, Thread-safe in-memory rate limiter using sliding window., Return True if the request is within the rate limit., Decorator that rate-limits a Quart route. Args: max_requests: Maxim, Rate limit key: function name + client IP.
### Community 76 - "Community 76"
Cohesion: 0.22
Nodes (5): Check if the state cache is still valid., Get the current topic of discussion., Calculate participation statistics., Get the current conversation state. Returns: Dictio, Assess the health of the conversation.
### Community 77 - "Community 77"
Cohesion: 0.22
Nodes (8): SheetContent, SheetContentProps, SheetDescription, SheetFooter(), SheetHeader(), SheetOverlay, SheetTitle, sheetVariants
### Community 78 - "Community 78"
Cohesion: 0.22
Nodes (8): get_task_result(), get_task_status(), get_user_tasks(), Task management routes for handling cancellable operations., Get all active tasks for the authenticated user. Returns: JSON resp, Get overall task manager status (for debugging/monitoring). Returns:, Poll for task status and result. Returns 200 with {task_id, status, task_typ, Get task status and result for polling endpoint.
### Community 79 - "Community 79"
Cohesion: 0.25
Nodes (6): Quart Extensions Module Provides singleton instances of Quart extensions to ensu, emit_websocket_event(), init_async_websocket_manager(), Async WebSocket Manager for Synthetic Society Handles WebSocket connections, roo, Initialize the global async WebSocket manager., Async WebSocket event emission function. Args: event: Event nam
### Community 80 - "Community 80"
Cohesion: 0.39
Nodes (8): Avatar / Profile Image Concept, Nonbinary Avatar PNG, XMP Metadata (Nonbinary Avatar), Placeholder SVG, Placeholder Circle Element, Placeholder SVG Linear Gradients, Placeholder SVG Icon/Clippath, Public Assets Directory
### Community 81 - "Community 81"
Cohesion: 0.32
Nodes (8): LLM Service (llm_service.py), AI Integration Feature, Google Gemini AI Model, LLM Service (llm_service.py), OpenAI GPT Models, Prompt Loader (prompt_loader.py), google-genai (Google Generative AI), openai==1.99.5
### Community 82 - "Community 82"
Cohesion: 0.25
Nodes (4): Start autonomous conversation for a focus group. Request body: {, Update conversation state. Args: updates: Dictionar, Start autonomous conversation mode., End autonomous conversation mode.
### Community 83 - "Community 83"
Cohesion: 0.25
Nodes (5): barData, COLORS, LineChartProps, lineData, pieData
### Community 85 - "Community 85"
Cohesion: 0.29
Nodes (6): create(), delete(), find_by_id(), find_by_user(), get_all(), update()
### Community 86 - "Community 86"
Cohesion: 0.29
Nodes (6): active_required(), admin_required(), Route decorator requiring admin role. Must be stacked BELOW @jwt_required()., Route decorator that rejects requests from disabled users. Guards LLM-invok, Route decorator that injects the JWT user_id into the LLM usage ContextVar., with_user_context()
### Community 87 - "Community 87"
Cohesion: 0.33
Nodes (3): Generate conversation flow analytics., Assess the quality of conversation flow., Analyze turn-taking patterns.
### Community 88 - "Community 88"
Cohesion: 0.47
Nodes (5): connect_to_mongodb(), create_default_user(), main(), Connect to MongoDB using MONGO_URI env var or interactive credentials., Create a default admin user for sample data (DEV ONLY). Password must be pro
### Community 89 - "Community 89"
Cohesion: 0.53
Nodes (6): _cache_get(), _cache_set(), compute_cost(), current_for(), ModelPricing, pick_tier()
### Community 90 - "Community 90"
Cohesion: 0.50
Nodes (4): emit_websocket_event(), Start the background emitter task if it hasn't been started yet., Safe to call from ANY context (asyncio task, worker thread, request thread)., _start_emitter_if_needed()
### Community 91 - "Community 91"
Cohesion: 0.67
Nodes (3): get_script_db(), main(), Get MongoDB connection using MONGO_URI or interactive credentials.
### Community 92 - "Community 92"
Cohesion: 0.50
Nodes (4): is_allowed_file(), Check if file has an allowed extension., Validate uploaded asset file (images and documents)., validate_asset_file()
### Community 93 - "Community 93"
Cohesion: 0.50
Nodes (3): cancel_task_by_id(), Convenience function to cancel a task by ID. Returns: True if task, Cancel a task by its ID. Args: task_id: The ID of t
### Community 95 - "Community 95"
Cohesion: 0.50
Nodes (3): conftest.py — sys.modules stubs so tests run without the full Docker venv. All h, Register MagicMocks under each name in sys.modules., _stub()
### Community 99 - "Community 99"
Cohesion: 0.67
Nodes (3): get_conversation_state(), Get the current conversation state for a focus group. Returns:, Get the current status of the autonomous conversation.
## Knowledge Gaps
- **442 isolated node(s):** `target`, `lib`, `module`, `skipLibCheck`, `moduleResolution` (+437 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **148 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `Focus Group` connect `Community 11` to `Community 0`, `Community 3`, `Community 5`, `Community 6`, `Community 7`, `Community 9`, `Community 10`, `Community 14`, `Community 16`, `Community 17`, `Community 19`, `Community 22`, `Community 23`, `Community 25`, `Community 27`, `Community 29`, `Community 32`, `Community 34`, `Community 40`, `Community 41`, `Community 50`, `Community 52`, `Community 58`, `Community 59`, `Community 70`, `Community 92`, `Community 98`, `Community 106`, `Community 107`, `Community 108`, `Community 109`?**
_High betweenness centrality (0.403) - this node is a cross-community bridge._
- **Why does `LLMService` connect `Community 33` to `Community 0`, `Community 70`, `Community 8`, `Community 41`, `Community 72`, `Community 42`, `Community 46`, `Community 17`, `Community 18`, `Community 19`, `Community 52`, `Community 53`, `Community 84`, `Community 23`, `Community 89`, `Community 31`?**
_High betweenness centrality (0.094) - this node is a cross-community bridge._
- **Why does `cn()` connect `Community 1` to `Community 2`, `Community 5`, `Community 7`, `Community 9`, `Community 10`, `Community 13`, `Community 14`, `Community 15`, `Community 16`, `Community 22`, `Community 24`, `Community 32`, `Community 58`, `Community 61`, `Community 64`, `Community 65`, `Community 69`, `Community 74`, `Community 77`?**
_High betweenness centrality (0.082) - this node is a cross-community bridge._
- **Are the 16 inferred relationships involving `Focus Group` (e.g. with `QuotaExceededError` and `QuotaWarning`) actually correct?**
_`Focus Group` has 16 INFERRED edges - model-reasoned connections that need verification._
- **Are the 77 inferred relationships involving `get_db()` (e.g. with `find_by_user()` and `find_by_email()`) actually correct?**
_`get_db()` has 77 INFERRED edges - model-reasoned connections that need verification._
- **Are the 50 inferred relationships involving `get_jwt_identity()` (e.g. with `get_profile()` and `get_persona()`) actually correct?**
_`get_jwt_identity()` has 50 INFERRED edges - model-reasoned connections that need verification._
- **What connects `target`, `lib`, `module` to the rest of the system?**
_961 weakly-connected nodes found - possible documentation gaps or missing edges._

View file

@ -0,0 +1,227 @@
---
tags: [architecture, graphify, smartcrop26]
updated: 2026-05-18
---
# Graph Report - /Users/ai_leed/Documents/Projects/Oliver/smartcrop26 (2026-05-18)
## Corpus Check
- cluster-only mode — file stats not available
## Summary
- 518 nodes · 694 edges · 44 communities (42 shown, 2 thin omitted)
- Extraction: 99% EXTRACTED · 1% INFERRED · 0% AMBIGUOUS · INFERRED: 8 edges (avg confidence: 0.88)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `54eddd70`
- 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 43|Community 43]]
## God Nodes (most connected - your core abstractions)
1. `cn()` - 67 edges
2. `compilerOptions` - 19 edges
3. `Claude Code Guidance (CLAUDE.md)` - 19 edges
4. `Carousel` - 16 edges
5. `compilerOptions` - 14 edges
6. `SmartCrop26 Project Entry Point (AGENTS.md)` - 13 edges
7. `Pagination()` - 10 edges
8. `scripts` - 8 edges
9. `compilerOptions` - 8 edges
10. `CropSuggestion` - 8 edges
## Surprising Connections (you probably didn't know these)
- `src/lib/crop-types.ts — Crop Type Definitions` --implements--> `parseConfig() — Multi-format Config Parser` [EXTRACTED]
src/lib/crop-types.ts → AGENTS.md
- `src/lib/crop-types.ts — Crop Type Definitions` --implements--> `PRESET_RATIOS — 12 Built-in Aspect Ratios` [EXTRACTED]
src/lib/crop-types.ts → AGENTS.md
- `src/lib/export-zip.ts — ZIP Export Pipeline` --references--> `JSZip — ZIP Generation Library` [EXTRACTED]
src/lib/export-zip.ts → CLAUDE.md
- `src/lib/export-zip.ts — ZIP Export Pipeline` --references--> `FileSaver — File Download Utility` [EXTRACTED]
src/lib/export-zip.ts → CLAUDE.md
- `src/lib/export-zip.ts — ZIP Export Pipeline` --references--> `Canvas API — Image Rendering & Export` [EXTRACTED]
src/lib/export-zip.ts → CLAUDE.md
## Communities (44 total, 2 thin omitted)
### Community 0 - "Community 0"
Cohesion: 0.04
Nodes (52): dependencies, @azure/msal-browser, @azure/msal-react, class-variance-authority, cmdk, date-fns, embla-carousel-react, file-saver (+44 more)
### Community 1 - "Community 1"
Cohesion: 0.05
Nodes (36): useIsMobile(), Input, Separator, SheetContent, SheetContentProps, SheetDescription, SheetFooter(), SheetHeader() (+28 more)
### Community 2 - "Community 2"
Cohesion: 0.11
Nodes (21): CropPreviewCardProps, RatioSelectorProps, findBestCrop(), loadImage(), AspectRatioPreset, CropSuggestion, ImageFile, OutputSize (+13 more)
### Community 3 - "Community 3"
Cohesion: 0.06
Nodes (32): devDependencies, autoprefixer, eslint, @eslint/js, eslint-plugin-react-hooks, eslint-plugin-react-refresh, globals, jsdom (+24 more)
### Community 4 - "Community 4"
Cohesion: 0.11
Nodes (31): SmartCrop26 Project Entry Point (AGENTS.md), Claude Code Guidance (CLAUDE.md), Azure AD SSO via MSAL, Canvas API — Image Rendering & Export, CropSuggestion — Normalized 0-1 Coordinates, FileSaver — File Download Utility, Google Gemini 2.5 Flash AI Engine, JSZip — ZIP Generation Library (+23 more)
### Community 5 - "Community 5"
Cohesion: 0.12
Nodes (22): Action, ActionType, actionTypes, addToRemoveQueue(), dispatch(), genId(), listeners, memoryState (+14 more)
### Community 6 - "Community 6"
Cohesion: 0.11
Nodes (13): AuthGate(), loginRequest, queryClient, msalInstance, Card, CardContent, CardDescription, CardFooter (+5 more)
### Community 7 - "Community 7"
Cohesion: 0.09
Nodes (21): compilerOptions, allowImportingTsExtensions, isolatedModules, jsx, lib, module, moduleDetection, moduleResolution (+13 more)
### Community 8 - "Community 8"
Cohesion: 0.12
Nodes (18): AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter(), AlertDialogHeader(), AlertDialogOverlay, AlertDialogTitle (+10 more)
### Community 9 - "Community 9"
Cohesion: 0.12
Nodes (16): aliases, components, hooks, lib, ui, utils, rsc, $schema (+8 more)
### Community 10 - "Community 10"
Cohesion: 0.12
Nodes (14): Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut() (+6 more)
### Community 11 - "Community 11"
Cohesion: 0.13
Nodes (10): HoverCardContent, PopoverContent, RadioGroup, Skeleton(), Switch, Textarea, TextareaProps, ToggleGroup (+2 more)
### Community 12 - "Community 12"
Cohesion: 0.12
Nodes (15): compilerOptions, allowImportingTsExtensions, isolatedModules, lib, module, moduleDetection, moduleResolution, noEmit (+7 more)
### Community 13 - "Community 13"
Cohesion: 0.15
Nodes (10): FormControl, FormDescription, FormFieldContext, FormFieldContextValue, FormItem, FormItemContext, FormLabel, FormMessage (+2 more)
### Community 14 - "Community 14"
Cohesion: 0.15
Nodes (12): Carousel, CarouselApi, CarouselContent, CarouselContext, CarouselContextProps, CarouselItem, CarouselNext, CarouselOptions (+4 more)
### Community 15 - "Community 15"
Cohesion: 0.17
Nodes (11): compilerOptions, allowJs, noImplicitAny, noUnusedLocals, noUnusedParameters, paths, skipLibCheck, strictNullChecks (+3 more)
### Community 16 - "Community 16"
Cohesion: 0.17
Nodes (11): Menubar, MenubarCheckboxItem, MenubarContent, MenubarItem, MenubarLabel, MenubarRadioItem, MenubarSeparator, MenubarShortcut() (+3 more)
### Community 17 - "Community 17"
Cohesion: 0.18
Nodes (7): ChartConfig, ChartContainer, ChartContext, ChartContextProps, ChartLegendContent, ChartTooltipContent, THEMES
### Community 18 - "Community 18"
Cohesion: 0.25
Nodes (9): cn(), clsx, Breadcrumb, BreadcrumbEllipsis(), BreadcrumbItem, BreadcrumbPage, BreadcrumbSeparator(), ResizableHandle() (+1 more)
### Community 19 - "Community 19"
Cohesion: 0.20
Nodes (9): DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut(), DropdownMenuSubContent (+1 more)
### Community 20 - "Community 20"
Cohesion: 0.20
Nodes (9): ContextMenuCheckboxItem, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut(), ContextMenuSubContent (+1 more)
### Community 21 - "Community 21"
Cohesion: 0.22
Nodes (8): Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow
### Community 22 - "Community 22"
Cohesion: 0.25
Nodes (6): DrawerContent, DrawerDescription, DrawerFooter(), DrawerHeader(), DrawerOverlay, DrawerTitle
### Community 23 - "Community 23"
Cohesion: 0.25
Nodes (7): SelectContent, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger
### Community 24 - "Community 24"
Cohesion: 0.40
Nodes (4): Alert, AlertDescription, AlertTitle, alertVariants
### Community 25 - "Community 25"
Cohesion: 0.40
Nodes (4): InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot
### Community 26 - "Community 26"
Cohesion: 0.50
Nodes (3): AccordionContent, AccordionItem, AccordionTrigger
### Community 27 - "Community 27"
Cohesion: 0.50
Nodes (3): Avatar, AvatarFallback, AvatarImage
### Community 28 - "Community 28"
Cohesion: 0.67
Nodes (3): Badge(), BadgeProps, badgeVariants
### Community 29 - "Community 29"
Cohesion: 0.50
Nodes (4): NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuViewport
### Community 30 - "Community 30"
Cohesion: 0.50
Nodes (3): TabsContent, TabsList, TabsTrigger
## Knowledge Gaps
- **321 isolated node(s):** `target`, `lib`, `module`, `skipLibCheck`, `moduleResolution` (+316 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **2 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `cn()` connect `Community 18` to `Community 1`, `Community 2`, `Community 5`, `Community 6`, `Community 8`, `Community 10`, `Community 11`, `Community 13`, `Community 14`, `Community 16`, `Community 17`, `Community 19`, `Community 20`, `Community 21`, `Community 22`, `Community 23`, `Community 24`, `Community 25`, `Community 26`, `Community 27`, `Community 28`, `Community 29`, `Community 30`, `Community 31`?**
_High betweenness centrality (0.464) - this node is a cross-community bridge._
- **Why does `dependencies` connect `Community 0` to `Community 18`, `Community 3`?**
_High betweenness centrality (0.314) - this node is a cross-community bridge._
- **Why does `clsx` connect `Community 18` to `Community 0`?**
_High betweenness centrality (0.282) - this node is a cross-community bridge._
- **What connects `target`, `lib`, `module` to the rest of the system?**
_321 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `Community 0` be split into smaller, more focused modules?**
_Cohesion score 0.038461538461538464 - nodes in this community are weakly interconnected._
- **Should `Community 1` be split into smaller, more focused modules?**
_Cohesion score 0.05204872646733112 - nodes in this community are weakly interconnected._
- **Should `Community 2` be split into smaller, more focused modules?**
_Cohesion score 0.1126984126984127 - nodes in this community are weakly interconnected._

View file

@ -0,0 +1,124 @@
---
tags: [architecture, graphify, social-reporting-tool]
updated: 2026-05-18
---
# Graph Report - /Users/ai_leed/Documents/Projects/Oliver/social-reporting-tool (2026-05-18)
## Corpus Check
- cluster-only mode — file stats not available
## Summary
- 328 nodes · 604 edges · 13 communities
- Extraction: 95% EXTRACTED · 5% INFERRED · 0% AMBIGUOUS · INFERRED: 33 edges (avg confidence: 0.93)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `54eddd70`
- 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]]
## God Nodes (most connected - your core abstractions)
1. `Security Audit Report` - 30 edges
2. `runPipeline()` - 19 edges
3. `Pipeline Orchestrator (pipeline-v2.ts)` - 14 edges
4. `ClientBrief` - 13 edges
5. `compilerOptions` - 12 edges
6. `runStage3()` - 11 edges
7. `Dashboard HTTP+SSE Server (server.ts)` - 11 edges
8. `TypeScript Types (types-v2.ts)` - 11 edges
9. `Social Listening Platform Overview` - 11 edges
10. `Stage 5: Enrichment Scrape (stage5-enrichment-scrape.ts)` - 11 edges
## Surprising Connections (you probably didn't know these)
- `Frontend UI (frontend/index.html)` --semantically_similar_to--> `Dashboard UI (agents/social-listening/dashboard/index.html)` [INFERRED] [semantically similar]
frontend/index.html → agents/social-listening/dashboard/index.html
- `Social Listening Platform Overview` --references--> `Social Listening Pipeline` [INFERRED]
DEVELOPER_BRIEF.md → README.md
- `Social Listening App Service` --shares_data_with--> `PostgreSQL Database` [INFERRED]
docker-compose.yml → README.md
- `Dashboard UI (agents/social-listening/dashboard/index.html)` --references--> `Dashboard HTTP+SSE Server (server.ts)` [INFERRED]
agents/social-listening/dashboard/index.html → AGENTS.md
- `POST /api/login Endpoint` --references--> `Dashboard HTTP+SSE Server (server.ts)` [INFERRED]
frontend/login.html → AGENTS.md
## Communities (13 total, 0 thin omitted)
### Community 0 - "Community 0"
Cohesion: 0.06
Nodes (40): base64urlDecode(), BRIEFS_DIR, getAzureSigningKeys(), getSessionData(), handleRunPipeline(), isAuthenticated(), loginAttempts, OUTPUTS_DIR (+32 more)
### Community 1 - "Community 1"
Cohesion: 0.05
Nodes (50): Apache Config (apache-social-reports.conf), Apify Client (apify.ts), PostgreSQL Client (db.ts), Static Frontend (frontend/), Project Entry Point (AGENTS.md), Pipeline CLI Runner (run.ts), Dashboard HTTP+SSE Server (server.ts), Server Setup Script (setup.sh) (+42 more)
### Community 2 - "Community 2"
Cohesion: 0.08
Nodes (33): ACTORS, APIFY_COST_LIMIT, ApifyRunResult, __dirname, fileEnv, __filename, getApifyCost(), getApifyCostLimit() (+25 more)
### Community 3 - "Community 3"
Cohesion: 0.12
Nodes (28): callClaudeJSON(), parseJSONResponse(), AgentReview, AudienceInsight, ClientBrief, CreatorSpotlight, DeskResearchSource, DiscoveryData (+20 more)
### Community 4 - "Community 4"
Cohesion: 0.12
Nodes (33): Pipeline Orchestrator (pipeline-v2.ts), TypeScript Types (types-v2.ts), AgentReview Interface, Claude CLI Wrapper (claude-cli.ts), ClientBrief Interface, DeskResearchSource Interface, DiscoveryData Interface, Engagement Score Formula (+25 more)
### Community 5 - "Community 5"
Cohesion: 0.14
Nodes (25): instagram, buildMarkdown(), deriveFormatCards(), esc(), extractInstagramShortcode(), extractTikTokVideoId(), extractYouTubeId(), formatDateRange() (+17 more)
### Community 6 - "Community 6"
Cohesion: 0.16
Nodes (19): ApiContentBlock, ApiMessage, ApiResponse, calculateCost(), callApi(), callClaude(), callClaudeVision(), callClaudeWithUsage() (+11 more)
### Community 7 - "Community 7"
Cohesion: 0.12
Nodes (15): dependencies, postgres, tsx, typescript, devDependencies, @types/node, name, private (+7 more)
### Community 8 - "Community 8"
Cohesion: 0.13
Nodes (14): compilerOptions, declaration, esModuleInterop, module, moduleResolution, outDir, resolveJsonModule, rootDir (+6 more)
### Community 9 - "Community 9"
Cohesion: 0.17
Nodes (12): Saved Briefs Tab, Live Cost Tracker UI, Help Tab, Run History Tab, Dashboard UI (agents/social-listening/dashboard/index.html), Pipeline Tab, Stage Progress Section, Frontend Saved Briefs Tab (+4 more)
### Community 10 - "Community 10"
Cohesion: 0.18
Nodes (10): category, clientName, dateRange, from, to, hashtags, influencers, tiktok (+2 more)
## Knowledge Gaps
- **101 isolated node(s):** `name`, `version`, `type`, `private`, `pipeline` (+96 more)
These have ≤1 connection - possible missing edges or undocumented components.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `instagram` connect `Community 5` to `Community 10`?**
_High betweenness centrality (0.038) - this node is a cross-community bridge._
- **Why does `Security Audit Report` connect `Community 1` to `Community 4`?**
_High betweenness centrality (0.038) - this node is a cross-community bridge._
- **Why does `ClientBrief` connect `Community 3` to `Community 0`, `Community 2`, `Community 5`?**
_High betweenness centrality (0.036) - this node is a cross-community bridge._
- **Are the 13 inferred relationships involving `Pipeline Orchestrator (pipeline-v2.ts)` (e.g. with `Pipeline CLI Runner (run.ts)` and `TypeScript Types (types-v2.ts)`) actually correct?**
_`Pipeline Orchestrator (pipeline-v2.ts)` has 13 INFERRED edges - model-reasoned connections that need verification._
- **What connects `name`, `version`, `type` to the rest of the system?**
_111 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `Community 0` be split into smaller, more focused modules?**
_Cohesion score 0.061683599419448475 - nodes in this community are weakly interconnected._
- **Should `Community 1` be split into smaller, more focused modules?**
_Cohesion score 0.05333333333333334 - nodes in this community are weakly interconnected._

View file

@ -0,0 +1,446 @@
---
tags: [architecture, graphify, solventum-image-metadata]
updated: 2026-05-18
---
# Graph Report - /Users/ai_leed/Documents/Projects/Oliver/solventum-image-metadata (2026-05-18)
## Corpus Check
- cluster-only mode — file stats not available
## Summary
- 1188 nodes · 1725 edges · 111 communities (80 shown, 31 thin omitted)
- Extraction: 92% EXTRACTED · 8% INFERRED · 0% AMBIGUOUS · INFERRED: 130 edges (avg confidence: 0.75)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `54eddd70`
- 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 35|Community 35]]
- [[_COMMUNITY_Community 36|Community 36]]
- [[_COMMUNITY_Community 37|Community 37]]
- [[_COMMUNITY_Community 38|Community 38]]
- [[_COMMUNITY_Community 39|Community 39]]
- [[_COMMUNITY_Community 40|Community 40]]
- [[_COMMUNITY_Community 41|Community 41]]
- [[_COMMUNITY_Community 42|Community 42]]
- [[_COMMUNITY_Community 43|Community 43]]
- [[_COMMUNITY_Community 44|Community 44]]
- [[_COMMUNITY_Community 45|Community 45]]
- [[_COMMUNITY_Community 46|Community 46]]
- [[_COMMUNITY_Community 47|Community 47]]
- [[_COMMUNITY_Community 48|Community 48]]
- [[_COMMUNITY_Community 49|Community 49]]
- [[_COMMUNITY_Community 50|Community 50]]
- [[_COMMUNITY_Community 51|Community 51]]
- [[_COMMUNITY_Community 52|Community 52]]
- [[_COMMUNITY_Community 53|Community 53]]
- [[_COMMUNITY_Community 54|Community 54]]
- [[_COMMUNITY_Community 55|Community 55]]
- [[_COMMUNITY_Community 56|Community 56]]
- [[_COMMUNITY_Community 57|Community 57]]
- [[_COMMUNITY_Community 58|Community 58]]
- [[_COMMUNITY_Community 59|Community 59]]
- [[_COMMUNITY_Community 60|Community 60]]
- [[_COMMUNITY_Community 61|Community 61]]
- [[_COMMUNITY_Community 62|Community 62]]
- [[_COMMUNITY_Community 63|Community 63]]
- [[_COMMUNITY_Community 64|Community 64]]
- [[_COMMUNITY_Community 65|Community 65]]
- [[_COMMUNITY_Community 66|Community 66]]
- [[_COMMUNITY_Community 67|Community 67]]
- [[_COMMUNITY_Community 68|Community 68]]
- [[_COMMUNITY_Community 69|Community 69]]
- [[_COMMUNITY_Community 70|Community 70]]
- [[_COMMUNITY_Community 71|Community 71]]
- [[_COMMUNITY_Community 72|Community 72]]
- [[_COMMUNITY_Community 73|Community 73]]
- [[_COMMUNITY_Community 74|Community 74]]
- [[_COMMUNITY_Community 75|Community 75]]
- [[_COMMUNITY_Community 82|Community 82]]
- [[_COMMUNITY_Community 88|Community 88]]
- [[_COMMUNITY_Community 89|Community 89]]
- [[_COMMUNITY_Community 90|Community 90]]
- [[_COMMUNITY_Community 91|Community 91]]
- [[_COMMUNITY_Community 92|Community 92]]
- [[_COMMUNITY_Community 93|Community 93]]
- [[_COMMUNITY_Community 94|Community 94]]
- [[_COMMUNITY_Community 95|Community 95]]
- [[_COMMUNITY_Community 96|Community 96]]
- [[_COMMUNITY_Community 97|Community 97]]
- [[_COMMUNITY_Community 98|Community 98]]
- [[_COMMUNITY_Community 99|Community 99]]
- [[_COMMUNITY_Community 100|Community 100]]
- [[_COMMUNITY_Community 101|Community 101]]
- [[_COMMUNITY_Community 102|Community 102]]
- [[_COMMUNITY_Community 103|Community 103]]
- [[_COMMUNITY_Community 104|Community 104]]
- [[_COMMUNITY_Community 105|Community 105]]
- [[_COMMUNITY_Community 106|Community 106]]
- [[_COMMUNITY_Community 107|Community 107]]
- [[_COMMUNITY_Community 108|Community 108]]
- [[_COMMUNITY_Community 109|Community 109]]
- [[_COMMUNITY_Community 110|Community 110]]
## God Nodes (most connected - your core abstractions)
1. `Oliver Metadata Tool v3.1` - 40 edges
2. `Database` - 28 edges
3. `SessionStore` - 23 edges
4. `web_app.py (Flask Entry Point)` - 23 edges
5. `MetadataProcessor` - 19 edges
6. `ExifToolUpdater` - 18 edges
7. `sanitize_metadata_value()` - 17 edges
8. `PDFExtractor` - 16 edges
9. `OfficeExtractor` - 16 edges
10. `OfficeUpdater` - 16 edges
## Surprising Connections (you probably didn't know these)
- `create_user_session()` --shares_data_with--> `sessions Table` [INFERRED]
src/auth.py → docs/project/database_schema.md
- `SQLite Database (oliver_metadata.db)` --semantically_similar_to--> `Oliver Metadata Tool v3.1` [EXTRACTED] [semantically similar]
docs/project/architecture.md → CLAUDE.md
- `Unified metadata updater using ExifTool for images, video, and PDF files.` --rationale_for--> `ExifToolUpdater` [EXTRACTED]
src/updaters/exiftool_updater.py → CLAUDE.md
- `Update metadata using ExifTool. Supports images (JPEG, PNG, GIF, TIFF, HEIC` --rationale_for--> `ExifToolUpdater` [EXTRACTED]
src/updaters/exiftool_updater.py → CLAUDE.md
- `Office document metadata updater.` --rationale_for--> `OfficeUpdater` [EXTRACTED]
src/updaters/office_updater.py → CLAUDE.md
## Communities (111 total, 31 thin omitted)
### Community 0 - "Community 0"
Cohesion: 0.06
Nodes (59): actions, addCustomField(), applyTemplate(), autoSelectImportColumns(), buildImportPreviewTable(), closeCreateTemplateModal(), closeImportMappingModal(), confirmImportMapping() (+51 more)
### Community 1 - "Community 1"
Cohesion: 0.06
Nodes (59): ADR: ExifTool as Primary Metadata Handler, ADR: Migrate from Flask to FastAPI, API Specification, AI Service (app/services/ai_service.py), Apache Reverse Proxy, ExifTool Extractor (src/extractors/exiftool_extractor.py), ExifTool Updater (src/updaters/exiftool_updater.py), FileDetector (+51 more)
### Community 2 - "Community 2"
Cohesion: 0.05
Nodes (30): Add a processed file entry to a session. If a file with the same filena, Update specific fields of a file entry within a session., Persistent session store replacing in-memory dicts. Stores file processing, Get just the files list from a session., Delete a file session., Get all active session IDs for a user., Create an import/excel session., Get import session by ID. (+22 more)
### Community 3 - "Community 3"
Cohesion: 0.06
Nodes (32): apply_template(), delete_template(), _get_template_manager(), list_templates(), load_template(), preview_template(), Template management router: list, save, load, delete, apply, preview., Apply a template to generate metadata for files. (+24 more)
### Community 4 - "Community 4"
Cohesion: 0.08
Nodes (23): Database, Add role column if it doesn't exist (for existing databases)., SQLite database manager for Oliver Metadata Tool. Uses connection-per-opera, Create test user (tester/oliveradmin) if doesn't exist., Create or promote superadmin user (case-insensitive match)., Get user by username., Create a new user. Returns user ID if successful., Update user's last login timestamp. (+15 more)
### Community 5 - "Community 5"
Cohesion: 0.06
Nodes (26): Enum, detect_file_type(), FileType, is_supported(), File type detection and routing., Detect file type and route to appropriate handlers., Supported file types., AI-powered metadata analysis using OpenAI GPT with production-ready features. (+18 more)
### Community 6 - "Community 6"
Cohesion: 0.06
Nodes (27): src/config.py, ExifTool, ExifToolExtractor, ExifToolUpdater, ADR: ExifTool Primary Handler, ExifTool (System Tool), ExifToolHelper, ExifTool Setup Guide (+19 more)
### Community 7 - "Community 7"
Cohesion: 0.08
Nodes (33): BaseModel, DownloadSelectedRequest, ExcelMappingRequest, ExcelSheetPreviewRequest, ImportMappingRequest, Pydantic request models with validation., Request to update file with manually entered metadata., Request to preview a specific Excel sheet. (+25 more)
### Community 8 - "Community 8"
Cohesion: 0.07
Nodes (18): cleanup_expired_sessions() function, MicrosoftSSO, Framework-agnostic authentication service., Microsoft SSO handler. Frontend uses MSAL.js for auth, backend validates via Gra, Authentication logic extracted from src/auth.py, without Flask dependencies., Authenticate user with username and password. Returns dict with 'succes, Create a new auth session for an authenticated user., Destroy an auth session (logout). (+10 more)
### Community 9 - "Community 9"
Cohesion: 0.08
Nodes (27): login_required / get_current_user Dependency, auth_callback(), login(), login_microsoft(), logout(), Clean up files associated with a session. Removes uploaded files from disk t, Login page and handler., Logout user and cleanup session files. (+19 more)
### Community 10 - "Community 10"
Cohesion: 0.11
Nodes (10): Admin service: user management, audit log, AI usage stats., Get combined statistics for admin dashboard., Business logic for admin operations., Get all users with sanitized output (no password hashes)., Get single user by ID., Update user fields (role, is_active, full_name, email)., Deactivate a user account., Get audit log with optional filters. (+2 more)
### Community 11 - "Community 11"
Cohesion: 0.10
Nodes (18): Sanitize filename while preserving Unicode characters (CJK, etc.)., cleanup_old_files(), configure_excel_mapping(), configure_import_mapping(), download_file(), import_metadata(), list_templates(), open_browser() (+10 more)
### Community 12 - "Community 12"
Cohesion: 0.09
Nodes (13): Tests for authentication endpoints., Unauthenticated access to / redirects to /login., POST /login with valid credentials redirects to /., POST /login with wrong password shows error., POST /login with empty fields shows error., GET /logout redirects to /login., / requires authentication., GET /login returns login form. (+5 more)
### Community 13 - "Community 13"
Cohesion: 0.10
Nodes (21): get_current_admin Dependency, MSAL OAuth2 (Microsoft Azure AD SSO), Oliver Metadata Tool v3.1, AUD-03: Admins can query audit log and AI usage via admin dashboard, AUTH-01: Users must authenticate before accessing any feature, AUTH-03: Microsoft Azure AD SSO optional, AUTH-05: Admin role grants access to user management and audit log, AUTH-06: Superadmin promoted from SUPERADMIN_EMAIL env var (+13 more)
### Community 14 - "Community 14"
Cohesion: 0.12
Nodes (11): ImageExtractor, Image content and metadata extractor., Read EXIF metadata from image. Args: file_path: Path to ima, Read IPTC metadata from image. Args: file_path: Path to ima, Extractor for image files (JPEG, PNG, etc.) with OCR and EXIF metadata., Initialize image extractor., Extract text content from image using OCR. Uses pytesseract to perform, Read image metadata from EXIF and IPTC data. Extracts standard image me (+3 more)
### Community 15 - "Community 15"
Cohesion: 0.13
Nodes (13): BaseUpdater, PDFUpdater, VideoUpdater, Initialize the processor. Args: preview_mode: If True, show, create_backup(), Create a backup of the file before modification. Args: file_path: P, PDF metadata updater., Updater for PDF file metadata. (+5 more)
### Community 16 - "Community 16"
Cohesion: 0.14
Nodes (11): OfficeExtractor, Office document content and metadata extractor., Extract text content from PPTX file., Read metadata from DOCX file., Extractor for Office files (DOCX, XLSX, PPTX)., Read metadata from XLSX file., Read metadata from PPTX file., Extract text content from Office document. Routes to appropriate extrac (+3 more)
### Community 17 - "Community 17"
Cohesion: 0.12
Nodes (12): Upload Excel file for metadata lookup — returns sheet structure for mapping., upload_excel(), Upload Excel file for Excel Lookup metadata source., Excel-based metadata lookup service., Lookup metadata by filename (ignoring extension). Args: fil, Lookup metadata from Excel spreadsheet by filename., Search metadata by Celum ID. Args: celum_id: Celum ID to se, Initialize the lookup service. Args: excel_path: Path to th (+4 more)
### Community 18 - "Community 18"
Cohesion: 0.12
Nodes (10): ABC, BaseExtractor, BaseUpdater, Base class for all content extractors., Truncate content to maximum length for AI processing. Args:, Clean extracted text (remove excessive whitespace, etc.). Args:, Abstract base class for content extractors., Base class for all metadata updaters. (+2 more)
### Community 19 - "Community 19"
Cohesion: 0.21
Nodes (13): closeCreateUserModal(), createUser(), loadAiUsage(), loadAuditLog(), loadUsers(), populateAuditUserFilter(), renderAiStats(), renderAiUsageTable() (+5 more)
### Community 20 - "Community 20"
Cohesion: 0.13
Nodes (14): get_settings(), Get cached settings instance., init_dependencies(), Initialize singleton dependencies. Called once from app lifespan., create_app(), lifespan(), FastAPI application factory with lifespan management., Startup/shutdown lifecycle. (+6 more)
### Community 21 - "Community 21"
Cohesion: 0.16
Nodes (15): Handle multiple file uploads with metadata source selection., upload_files(), generate_metadata_async(), _get_analyzer(), get_progress_queue(), process_bulk_ai(), Async wrapper around MetadataAnalyzer for non-blocking AI generation., Process multiple files with AI in background, sending progress via SSE. Arg (+7 more)
### Community 22 - "Community 22"
Cohesion: 0.14
Nodes (9): Preview file structure and suggest field mappings., preview_import(), Metadata importer for external files (CSV, Excel, JSON)., Import metadata from various file formats (CSV, Excel, JSON)., Normalize metadata dictionary to standard format. Args: met, Get metadata for a specific file from imported map. Args: m, Validate imported metadata and return statistics. Args: met, Import file with custom field mapping. Args: file_path: Pat (+1 more)
### Community 23 - "Community 23"
Cohesion: 0.16
Nodes (9): PDFExtractor, PDF content extractor., Extract text using pdfplumber library. Args: file_path: Pat, Extract text using OCR via pdf2image and pytesseract. Args:, Read PDF metadata from document properties. Extracts standard PDF metad, Extractor for PDF files with fallback to OCR., Initialize PDF extractor., Extract text content from PDF using multiple fallback strategies. First (+1 more)
### Community 24 - "Community 24"
Cohesion: 0.24
Nodes (13): OfficeUpdater, Sanitize and truncate metadata value. Args: value: Metadata value, sanitize_metadata_value(), Office document metadata updater., Update XLSX metadata., Update PPTX metadata., Updater for Office file metadata (DOCX, XLSX, PPTX)., Verify that metadata was written correctly to Office document. Args: (+5 more)
### Community 25 - "Community 25"
Cohesion: 0.21
Nodes (13): get_database(), Get Database instance., create_user(), _get_admin_service(), get_ai_usage(), get_audit_log(), list_users(), Admin router: user management, audit log, AI usage stats. (+5 more)
### Community 26 - "Community 26"
Cohesion: 0.13
Nodes (8): Tests for template management endpoints., POST /templates/save creates a new template., GET /templates/load/{name} loads a template., GET /templates/load/{name} returns 404 for missing template., POST /templates/save with empty name returns error., DELETE /templates/delete/{name} removes a template., GET /templates/list returns template list., POST /templates/preview returns preview output.
### Community 27 - "Community 27"
Cohesion: 0.15
Nodes (10): Application settings via pydantic-settings., download_selected_files(), Download router: single file, ZIP batch, session cleanup., Download selected files from session as ZIP archive., get_session_files(), Metadata router: update, manual update, stats., Get current state of files in a session (for polling AI progress)., Update file with manually entered metadata. (+2 more)
### Community 28 - "Community 28"
Cohesion: 0.37
Nodes (13): build(), check_docker(), clean(), logs(), print_error(), print_header(), print_info(), print_success() (+5 more)
### Community 29 - "Community 29"
Cohesion: 0.15
Nodes (12): Validate that filepath is within upload folder (prevent traversal)., create_report_entry(), format_metadata_comparison(), get_file_size_mb(), get_logger(), Utility functions for backup, logging, and file operations., Validate file path exists and is accessible. Args: file_path: Path, Get file size in MB. Args: file_path: Path to file Returns: (+4 more)
### Community 30 - "Community 30"
Cohesion: 0.19
Nodes (13): authenticate_user() function, SQLite Database (oliver_metadata.db), SQLite WAL Mode, ai_usage Table, audit_log Table, Database Class (src/database.py), oliver_sessions.db, sessions Table (+5 more)
### Community 31 - "Community 31"
Cohesion: 0.18
Nodes (12): get_auth_service(), get_current_admin(), get_session_store(), FastAPI dependency injection providers., Get SessionStore instance., Get AuthService instance., FastAPI dependency: require authenticated user. Replaces Flask's @login_req, Same as get_current_user but returns None instead of raising. (+4 more)
### Community 32 - "Community 32"
Cohesion: 0.18
Nodes (7): File handling: upload, naming, cleanup., Handles file uploads, per-user storage, and cleanup., Save an uploaded file to disk using streaming. Returns the path to the, Delete a file from disk., Delete all files for a user., Resolve filepath from filename. Checks user dir first, then root., safe_filename()
### Community 33 - "Community 33"
Cohesion: 0.17
Nodes (7): Field mapping with automatic detection and manual override., Validate a field mapping configuration. Args: mapping: Dict, Map source fields to standard metadata fields with fuzzy matching., Apply field mapping to transform source data to standard format. Args:, Initialize field mapper. Args: presets_path: Path to JSON f, Automatically map source fields to standard fields using fuzzy matching., Find best matching standard field for source field. Args: s
### Community 34 - "Community 34"
Cohesion: 0.15
Nodes (7): Tests for admin endpoints., GET /admin returns 403 for non-admin users., GET /admin/users returns 403 for non-admin users., GET /admin/audit returns 403 for non-admin users., GET /admin/ai-usage returns 403 for non-admin users., GET /admin requires authentication., TestAdminAccess
### Community 35 - "Community 35"
Cohesion: 0.20
Nodes (8): BaseExtractor, VideoExtractor, Video metadata extractor., Read video metadata using pymediainfo. Args: file_path: Pat, Extractor for video files (MP4, MOV, AVI) - metadata extraction only., Extract text content from video (not supported). Video files cannot be, Read metadata from video file using mutagen. Extracts standard video me, Read video metadata using mutagen. Args: file_path: Path to
### Community 36 - "Community 36"
Cohesion: 0.23
Nodes (7): ImageUpdater, Image metadata updater., Update PNG metadata using PIL. Args: file_path: Path to PNG, Updater for image file metadata (JPEG, PNG)., Verify JPEG metadata., Update image metadata using EXIF for JPEG and PIL for PNG. Args:, Update JPEG metadata using EXIF. Args: file_path: Path to J
### Community 37 - "Community 37"
Cohesion: 0.17
Nodes (11): ExcelMetadataLookup, FieldMapper, FileDetector, FileType Enum, Flask Framework, MetadataAnalyzer, MetadataImporter, OpenAI API (+3 more)
### Community 38 - "Community 38"
Cohesion: 0.21
Nodes (11): detect_file(), extract_content(), extract_metadata(), process_uploaded_file(), Metadata processing orchestration: upload → detect → extract → generate., Process a single uploaded file through the full pipeline. Args: fil, Detect the type of a file., Read current metadata from file. (+3 more)
### Community 39 - "Community 39"
Cohesion: 0.17
Nodes (11): auth_client(), client(), Test fixtures for Oliver Metadata Tool., Create a temporary directory for test artifacts., Create test HTTP client., Authenticated test client (logged in as tester)., Create a minimal PDF for testing., Create a sample CSV for import testing. (+3 more)
### Community 40 - "Community 40"
Cohesion: 0.27
Nodes (7): main(), MetadataProcessor, Process all supported files in a directory. Args: directory, Save processing report to CSV., Main CLI entry point., Main processor for metadata automation., Process a single file. Args: file_path: Path to the file
### Community 41 - "Community 41"
Cohesion: 0.18
Nodes (11): docs/project/database_schema.md, docs/project/infrastructure.md, docker-run.sh (Helper Script), nginx Reverse Proxy, Docker Volume: database, Docker Network: oliver-metadata-network, oliver-metadata Docker Service, Docker Volume: output (+3 more)
### Community 42 - "Community 42"
Cohesion: 0.20
Nodes (11): app/main.py (FastAPI Entry Point), app/routers/auth.py, app/routers/downloads.py, app/routers/upload.py, Microsoft SSO (Azure AD / OAuth2), src/auth.py, FastAPI, gunicorn (+3 more)
### Community 43 - "Community 43"
Cohesion: 0.18
Nodes (6): Tests for upload endpoints., POST /upload with manual source processes file., API response should not expose server file paths., POST /upload-excel requires authentication., POST /upload with no files returns error., TestUpload
### Community 44 - "Community 44"
Cohesion: 0.49
Nodes (9): create_parser(), dumpallobjs(), dumpoutline(), dumppdf(), dumptrailers(), dumpxml(), escape(), extractembedded() (+1 more)
### Community 45 - "Community 45"
Cohesion: 0.20
Nodes (10): src/config.py, src/excel_metadata_lookup.py, src/field_mapper.py, src/metadata_importer.py, src/template_manager.py, templates/index.html, templates/login.html, web_app.py (Flask Entry Point) (+2 more)
### Community 46 - "Community 46"
Cohesion: 0.20
Nodes (5): Parse pandas DataFrame into metadata map. Args: df: DataFra, Import metadata from CSV file. Expected columns: filename, title, subjec, Detect column name from a list of candidates (case-insensitive). Args:, Get value from row, handling None column and NaN values. Args:, Import metadata from Excel file. Args: excel_path: Path to
### Community 47 - "Community 47"
Cohesion: 0.28
Nodes (9): src/updaters/ (Metadata Write Layer), ExifTool (System Dependency), src/extractors/exiftool_extractor.py, src/updaters/exiftool_updater.py, src/updaters/image_updater.py, src/updaters/office_updater.py, src/updaters/pdf_updater.py, src/updaters/video_updater.py (+1 more)
### Community 48 - "Community 48"
Cohesion: 0.22
Nodes (9): ADR: FastAPI Migration, project/api_spec.md, project/architecture.md, Documentation Hub, project/infrastructure.md, project/requirements.md, project/runbook.md, tasks/README.md (+1 more)
### Community 49 - "Community 49"
Cohesion: 0.22
Nodes (7): auth_azure_token(), login_submit(), logout(), Authentication router: login, logout, Microsoft SSO., Logout and destroy session., Validate Azure AD access token from client-side MSAL.js. Frontend handles t, Process login form. Rate limited to 5 attempts per minute.
### Community 50 - "Community 50"
Cohesion: 0.25
Nodes (8): ExcelMetadataLookup Service, File Service (app/services/file_service.py), safe_filename() function, Services Layer (app/services/), TemplateManager Service, SRC-04: Templates with variable substitution, SRC-05: Excel lookup against pre-loaded mapping file, UP-04: Preserve Unicode filenames including CJK characters
### Community 51 - "Community 51"
Cohesion: 0.25
Nodes (5): Application settings loaded from environment variables and .env file., Settings, BaseSettings, _ExcelLookupAdapter, Wraps a metadata_map dict to behave like ExcelMetadataLookup.
### Community 52 - "Community 52"
Cohesion: 0.32
Nodes (7): configure_import_mapping(), _get_file_service(), import_metadata(), preview_import(), Import router: import metadata from CSV/Excel/JSON files., Upload import file and preview structure for mapping., Configure import column mapping and load metadata.
### Community 53 - "Community 53"
Cohesion: 0.33
Nodes (7): app/services/ai_service.py, OpenAI gpt-5.2 (Responses API), OpenAI API (gpt-4o-mini), src/metadata_analyzer.py, openai, tenacity, tiktoken
### Community 54 - "Community 54"
Cohesion: 0.29
Nodes (4): Load mapping preset from file. Args: name: Preset name, List all saved presets. Returns: List of preset information, Delete a mapping preset. Args: name: Preset name R, Load all presets from file.
### Community 55 - "Community 55"
Cohesion: 0.29
Nodes (4): Tests for import endpoints., POST /import-metadata with unsupported file returns error., POST /import-metadata requires authentication., POST /import-metadata with CSV file returns columns and sample data.
### Community 56 - "Community 56"
Cohesion: 0.53
Nodes (4): create_parser(), extract_text(), main(), parse_args()
### Community 57 - "Community 57"
Cohesion: 0.33
Nodes (6): FastAPI Application (app/main.py), Flask Legacy Entrypoint (web_app.py), FastAPI Routers (app/routers/), Session Store (app/session/), src/ Library (shared), In-Memory File Processing Session (SessionStore)
### Community 58 - "Community 58"
Cohesion: 0.33
Nodes (6): src/auth.py, src/database.py, @login_required Decorator, MSAL (Microsoft SSO), SQLite Database (oliver_metadata.db), project/database_schema.md
### Community 59 - "Community 59"
Cohesion: 0.33
Nodes (5): configure_excel_mapping(), preview_excel_sheet(), Upload router: file upload, Excel upload, mapping configuration., Preview a specific sheet from uploaded Excel file., Configure Excel column mapping and load metadata into session.
### Community 60 - "Community 60"
Cohesion: 0.33
Nodes (6): Update file metadata using suggested metadata from session., update_metadata(), Write metadata to file. Returns True on success., Update file metadata using suggested metadata from session., Update file with manually entered metadata., update_manual_metadata()
### Community 61 - "Community 61"
Cohesion: 0.40
Nodes (5): docs/project/api_spec.md, docs/project/architecture.md, docs/project/runbook.md, docs/project/tech_stack.md, Oliver Metadata Tool v3.1 Enterprise Edition
### Community 62 - "Community 62"
Cohesion: 0.40
Nodes (5): get_stats(), Get metadata statistics., get_metadata_lookup(), get_stats(), Get or create metadata lookup instance.
### Community 63 - "Community 63"
Cohesion: 0.50
Nodes (4): src/extractors/video_extractor.py, ffmpeg-python, mutagen, pymediainfo
### Community 64 - "Community 64"
Cohesion: 0.67
Nodes (4): FieldMapper Service, MetadataImporter Service, MAP-01: Fuzzy matching auto-suggests column to field mapping, SRC-01: Import from file (CSV, Excel, JSON)
### Community 65 - "Community 65"
Cohesion: 0.50
Nodes (3): ai_progress_stream(), SSE router: Server-Sent Events for realtime AI progress., Stream AI processing progress events via SSE. Events: - processing:
### Community 69 - "Community 69"
Cohesion: 0.67
Nodes (3): src/extractors/office_extractor.py, python-docx, python-pptx
### Community 70 - "Community 70"
Cohesion: 0.67
Nodes (3): src/extractors/image_extractor.py, Pillow, pytesseract
### Community 71 - "Community 71"
Cohesion: 0.67
Nodes (3): src/extractors/pdf_extractor.py, pdfplumber, pypdf
## Knowledge Gaps
- **107 isolated node(s):** `currentFiles`, `selectedFiles`, `uploadArea`, `fileInput`, `spinner` (+102 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **31 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `Oliver Metadata Tool v3.1` connect `Community 13` to `Community 64`, `Community 1`, `Community 37`, `Community 6`, `Community 48`, `Community 50`, `Community 30`?**
_High betweenness centrality (0.134) - this node is a cross-community bridge._
- **Why does `sessions Table` connect `Community 30` to `Community 8`, `Community 9`, `Community 13`?**
_High betweenness centrality (0.081) - this node is a cross-community bridge._
- **Why does `applyTemplate()` connect `Community 0` to `Community 3`, `Community 11`?**
_High betweenness centrality (0.079) - this node is a cross-community bridge._
- **Are the 2 inferred relationships involving `Database` (e.g. with `init_dependencies()` and `MicrosoftSSO`) actually correct?**
_`Database` has 2 INFERRED edges - model-reasoned connections that need verification._
- **Are the 5 inferred relationships involving `SessionStore` (e.g. with `_ExcelLookupAdapter` and `TestFileSession`) actually correct?**
_`SessionStore` has 5 INFERRED edges - model-reasoned connections that need verification._
- **Are the 11 inferred relationships involving `web_app.py (Flask Entry Point)` (e.g. with `src/extractors/pdf_extractor.py` and `src/extractors/image_extractor.py`) actually correct?**
_`web_app.py (Flask Entry Point)` has 11 INFERRED edges - model-reasoned connections that need verification._
- **Are the 12 inferred relationships involving `MetadataProcessor` (e.g. with `Config` and `metadata_analyzer.py`) actually correct?**
_`MetadataProcessor` has 12 INFERRED edges - model-reasoned connections that need verification._

View file

@ -0,0 +1,982 @@
---
tags: [architecture, graphify, video-accessibility-old]
updated: 2026-05-18
---
# Graph Report - /Users/ai_leed/Documents/Projects/Oliver/video-accessibility-old (2026-05-18)
## Corpus Check
- cluster-only mode — file stats not available
## Summary
- 4214 nodes · 9399 edges · 307 communities (175 shown, 132 thin omitted)
- Extraction: 95% EXTRACTED · 5% INFERRED · 0% AMBIGUOUS · INFERRED: 514 edges (avg confidence: 0.58)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `54eddd70`
- 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 35|Community 35]]
- [[_COMMUNITY_Community 36|Community 36]]
- [[_COMMUNITY_Community 37|Community 37]]
- [[_COMMUNITY_Community 38|Community 38]]
- [[_COMMUNITY_Community 39|Community 39]]
- [[_COMMUNITY_Community 40|Community 40]]
- [[_COMMUNITY_Community 41|Community 41]]
- [[_COMMUNITY_Community 42|Community 42]]
- [[_COMMUNITY_Community 43|Community 43]]
- [[_COMMUNITY_Community 44|Community 44]]
- [[_COMMUNITY_Community 45|Community 45]]
- [[_COMMUNITY_Community 46|Community 46]]
- [[_COMMUNITY_Community 47|Community 47]]
- [[_COMMUNITY_Community 48|Community 48]]
- [[_COMMUNITY_Community 49|Community 49]]
- [[_COMMUNITY_Community 50|Community 50]]
- [[_COMMUNITY_Community 51|Community 51]]
- [[_COMMUNITY_Community 52|Community 52]]
- [[_COMMUNITY_Community 53|Community 53]]
- [[_COMMUNITY_Community 54|Community 54]]
- [[_COMMUNITY_Community 55|Community 55]]
- [[_COMMUNITY_Community 56|Community 56]]
- [[_COMMUNITY_Community 57|Community 57]]
- [[_COMMUNITY_Community 58|Community 58]]
- [[_COMMUNITY_Community 59|Community 59]]
- [[_COMMUNITY_Community 60|Community 60]]
- [[_COMMUNITY_Community 61|Community 61]]
- [[_COMMUNITY_Community 62|Community 62]]
- [[_COMMUNITY_Community 64|Community 64]]
- [[_COMMUNITY_Community 65|Community 65]]
- [[_COMMUNITY_Community 66|Community 66]]
- [[_COMMUNITY_Community 67|Community 67]]
- [[_COMMUNITY_Community 68|Community 68]]
- [[_COMMUNITY_Community 69|Community 69]]
- [[_COMMUNITY_Community 70|Community 70]]
- [[_COMMUNITY_Community 71|Community 71]]
- [[_COMMUNITY_Community 72|Community 72]]
- [[_COMMUNITY_Community 73|Community 73]]
- [[_COMMUNITY_Community 74|Community 74]]
- [[_COMMUNITY_Community 75|Community 75]]
- [[_COMMUNITY_Community 76|Community 76]]
- [[_COMMUNITY_Community 77|Community 77]]
- [[_COMMUNITY_Community 78|Community 78]]
- [[_COMMUNITY_Community 79|Community 79]]
- [[_COMMUNITY_Community 80|Community 80]]
- [[_COMMUNITY_Community 81|Community 81]]
- [[_COMMUNITY_Community 82|Community 82]]
- [[_COMMUNITY_Community 83|Community 83]]
- [[_COMMUNITY_Community 84|Community 84]]
- [[_COMMUNITY_Community 85|Community 85]]
- [[_COMMUNITY_Community 86|Community 86]]
- [[_COMMUNITY_Community 87|Community 87]]
- [[_COMMUNITY_Community 88|Community 88]]
- [[_COMMUNITY_Community 89|Community 89]]
- [[_COMMUNITY_Community 90|Community 90]]
- [[_COMMUNITY_Community 91|Community 91]]
- [[_COMMUNITY_Community 92|Community 92]]
- [[_COMMUNITY_Community 93|Community 93]]
- [[_COMMUNITY_Community 94|Community 94]]
- [[_COMMUNITY_Community 95|Community 95]]
- [[_COMMUNITY_Community 96|Community 96]]
- [[_COMMUNITY_Community 97|Community 97]]
- [[_COMMUNITY_Community 98|Community 98]]
- [[_COMMUNITY_Community 99|Community 99]]
- [[_COMMUNITY_Community 100|Community 100]]
- [[_COMMUNITY_Community 101|Community 101]]
- [[_COMMUNITY_Community 102|Community 102]]
- [[_COMMUNITY_Community 103|Community 103]]
- [[_COMMUNITY_Community 104|Community 104]]
- [[_COMMUNITY_Community 105|Community 105]]
- [[_COMMUNITY_Community 106|Community 106]]
- [[_COMMUNITY_Community 107|Community 107]]
- [[_COMMUNITY_Community 108|Community 108]]
- [[_COMMUNITY_Community 109|Community 109]]
- [[_COMMUNITY_Community 110|Community 110]]
- [[_COMMUNITY_Community 111|Community 111]]
- [[_COMMUNITY_Community 112|Community 112]]
- [[_COMMUNITY_Community 113|Community 113]]
- [[_COMMUNITY_Community 114|Community 114]]
- [[_COMMUNITY_Community 115|Community 115]]
- [[_COMMUNITY_Community 116|Community 116]]
- [[_COMMUNITY_Community 117|Community 117]]
- [[_COMMUNITY_Community 118|Community 118]]
- [[_COMMUNITY_Community 119|Community 119]]
- [[_COMMUNITY_Community 120|Community 120]]
- [[_COMMUNITY_Community 121|Community 121]]
- [[_COMMUNITY_Community 122|Community 122]]
- [[_COMMUNITY_Community 123|Community 123]]
- [[_COMMUNITY_Community 124|Community 124]]
- [[_COMMUNITY_Community 125|Community 125]]
- [[_COMMUNITY_Community 126|Community 126]]
- [[_COMMUNITY_Community 127|Community 127]]
- [[_COMMUNITY_Community 128|Community 128]]
- [[_COMMUNITY_Community 129|Community 129]]
- [[_COMMUNITY_Community 130|Community 130]]
- [[_COMMUNITY_Community 131|Community 131]]
- [[_COMMUNITY_Community 132|Community 132]]
- [[_COMMUNITY_Community 133|Community 133]]
- [[_COMMUNITY_Community 134|Community 134]]
- [[_COMMUNITY_Community 135|Community 135]]
- [[_COMMUNITY_Community 136|Community 136]]
- [[_COMMUNITY_Community 137|Community 137]]
- [[_COMMUNITY_Community 138|Community 138]]
- [[_COMMUNITY_Community 139|Community 139]]
- [[_COMMUNITY_Community 140|Community 140]]
- [[_COMMUNITY_Community 141|Community 141]]
- [[_COMMUNITY_Community 142|Community 142]]
- [[_COMMUNITY_Community 143|Community 143]]
- [[_COMMUNITY_Community 144|Community 144]]
- [[_COMMUNITY_Community 145|Community 145]]
- [[_COMMUNITY_Community 146|Community 146]]
- [[_COMMUNITY_Community 147|Community 147]]
- [[_COMMUNITY_Community 148|Community 148]]
- [[_COMMUNITY_Community 149|Community 149]]
- [[_COMMUNITY_Community 150|Community 150]]
- [[_COMMUNITY_Community 151|Community 151]]
- [[_COMMUNITY_Community 152|Community 152]]
- [[_COMMUNITY_Community 153|Community 153]]
- [[_COMMUNITY_Community 154|Community 154]]
- [[_COMMUNITY_Community 155|Community 155]]
- [[_COMMUNITY_Community 156|Community 156]]
- [[_COMMUNITY_Community 157|Community 157]]
- [[_COMMUNITY_Community 158|Community 158]]
- [[_COMMUNITY_Community 159|Community 159]]
- [[_COMMUNITY_Community 160|Community 160]]
- [[_COMMUNITY_Community 161|Community 161]]
- [[_COMMUNITY_Community 162|Community 162]]
- [[_COMMUNITY_Community 164|Community 164]]
- [[_COMMUNITY_Community 165|Community 165]]
- [[_COMMUNITY_Community 166|Community 166]]
- [[_COMMUNITY_Community 167|Community 167]]
- [[_COMMUNITY_Community 168|Community 168]]
- [[_COMMUNITY_Community 169|Community 169]]
- [[_COMMUNITY_Community 170|Community 170]]
- [[_COMMUNITY_Community 171|Community 171]]
- [[_COMMUNITY_Community 172|Community 172]]
- [[_COMMUNITY_Community 173|Community 173]]
- [[_COMMUNITY_Community 174|Community 174]]
- [[_COMMUNITY_Community 175|Community 175]]
- [[_COMMUNITY_Community 176|Community 176]]
- [[_COMMUNITY_Community 177|Community 177]]
- [[_COMMUNITY_Community 178|Community 178]]
- [[_COMMUNITY_Community 179|Community 179]]
- [[_COMMUNITY_Community 180|Community 180]]
- [[_COMMUNITY_Community 181|Community 181]]
- [[_COMMUNITY_Community 183|Community 183]]
- [[_COMMUNITY_Community 184|Community 184]]
- [[_COMMUNITY_Community 185|Community 185]]
- [[_COMMUNITY_Community 200|Community 200]]
- [[_COMMUNITY_Community 201|Community 201]]
- [[_COMMUNITY_Community 202|Community 202]]
- [[_COMMUNITY_Community 203|Community 203]]
- [[_COMMUNITY_Community 204|Community 204]]
- [[_COMMUNITY_Community 205|Community 205]]
- [[_COMMUNITY_Community 206|Community 206]]
- [[_COMMUNITY_Community 207|Community 207]]
- [[_COMMUNITY_Community 208|Community 208]]
- [[_COMMUNITY_Community 209|Community 209]]
- [[_COMMUNITY_Community 210|Community 210]]
- [[_COMMUNITY_Community 211|Community 211]]
- [[_COMMUNITY_Community 212|Community 212]]
- [[_COMMUNITY_Community 213|Community 213]]
- [[_COMMUNITY_Community 214|Community 214]]
- [[_COMMUNITY_Community 215|Community 215]]
- [[_COMMUNITY_Community 216|Community 216]]
- [[_COMMUNITY_Community 217|Community 217]]
- [[_COMMUNITY_Community 218|Community 218]]
- [[_COMMUNITY_Community 219|Community 219]]
- [[_COMMUNITY_Community 220|Community 220]]
- [[_COMMUNITY_Community 221|Community 221]]
- [[_COMMUNITY_Community 222|Community 222]]
- [[_COMMUNITY_Community 223|Community 223]]
- [[_COMMUNITY_Community 224|Community 224]]
- [[_COMMUNITY_Community 225|Community 225]]
- [[_COMMUNITY_Community 226|Community 226]]
- [[_COMMUNITY_Community 227|Community 227]]
- [[_COMMUNITY_Community 228|Community 228]]
- [[_COMMUNITY_Community 229|Community 229]]
- [[_COMMUNITY_Community 230|Community 230]]
- [[_COMMUNITY_Community 231|Community 231]]
- [[_COMMUNITY_Community 232|Community 232]]
- [[_COMMUNITY_Community 233|Community 233]]
- [[_COMMUNITY_Community 234|Community 234]]
- [[_COMMUNITY_Community 235|Community 235]]
- [[_COMMUNITY_Community 236|Community 236]]
- [[_COMMUNITY_Community 237|Community 237]]
- [[_COMMUNITY_Community 238|Community 238]]
- [[_COMMUNITY_Community 239|Community 239]]
- [[_COMMUNITY_Community 240|Community 240]]
- [[_COMMUNITY_Community 241|Community 241]]
- [[_COMMUNITY_Community 242|Community 242]]
- [[_COMMUNITY_Community 243|Community 243]]
- [[_COMMUNITY_Community 244|Community 244]]
- [[_COMMUNITY_Community 245|Community 245]]
- [[_COMMUNITY_Community 246|Community 246]]
- [[_COMMUNITY_Community 247|Community 247]]
- [[_COMMUNITY_Community 248|Community 248]]
- [[_COMMUNITY_Community 249|Community 249]]
- [[_COMMUNITY_Community 250|Community 250]]
- [[_COMMUNITY_Community 251|Community 251]]
- [[_COMMUNITY_Community 252|Community 252]]
- [[_COMMUNITY_Community 253|Community 253]]
- [[_COMMUNITY_Community 254|Community 254]]
- [[_COMMUNITY_Community 255|Community 255]]
- [[_COMMUNITY_Community 256|Community 256]]
- [[_COMMUNITY_Community 257|Community 257]]
- [[_COMMUNITY_Community 258|Community 258]]
- [[_COMMUNITY_Community 259|Community 259]]
- [[_COMMUNITY_Community 260|Community 260]]
- [[_COMMUNITY_Community 261|Community 261]]
- [[_COMMUNITY_Community 262|Community 262]]
- [[_COMMUNITY_Community 263|Community 263]]
- [[_COMMUNITY_Community 264|Community 264]]
- [[_COMMUNITY_Community 265|Community 265]]
- [[_COMMUNITY_Community 266|Community 266]]
- [[_COMMUNITY_Community 267|Community 267]]
- [[_COMMUNITY_Community 268|Community 268]]
- [[_COMMUNITY_Community 269|Community 269]]
- [[_COMMUNITY_Community 270|Community 270]]
- [[_COMMUNITY_Community 271|Community 271]]
- [[_COMMUNITY_Community 272|Community 272]]
- [[_COMMUNITY_Community 273|Community 273]]
- [[_COMMUNITY_Community 274|Community 274]]
- [[_COMMUNITY_Community 275|Community 275]]
- [[_COMMUNITY_Community 276|Community 276]]
- [[_COMMUNITY_Community 277|Community 277]]
- [[_COMMUNITY_Community 278|Community 278]]
- [[_COMMUNITY_Community 279|Community 279]]
- [[_COMMUNITY_Community 280|Community 280]]
- [[_COMMUNITY_Community 281|Community 281]]
- [[_COMMUNITY_Community 282|Community 282]]
- [[_COMMUNITY_Community 283|Community 283]]
- [[_COMMUNITY_Community 284|Community 284]]
- [[_COMMUNITY_Community 285|Community 285]]
- [[_COMMUNITY_Community 286|Community 286]]
- [[_COMMUNITY_Community 287|Community 287]]
- [[_COMMUNITY_Community 288|Community 288]]
- [[_COMMUNITY_Community 291|Community 291]]
- [[_COMMUNITY_Community 292|Community 292]]
- [[_COMMUNITY_Community 293|Community 293]]
- [[_COMMUNITY_Community 294|Community 294]]
- [[_COMMUNITY_Community 295|Community 295]]
- [[_COMMUNITY_Community 296|Community 296]]
- [[_COMMUNITY_Community 297|Community 297]]
- [[_COMMUNITY_Community 298|Community 298]]
- [[_COMMUNITY_Community 299|Community 299]]
- [[_COMMUNITY_Community 300|Community 300]]
- [[_COMMUNITY_Community 301|Community 301]]
- [[_COMMUNITY_Community 302|Community 302]]
- [[_COMMUNITY_Community 303|Community 303]]
- [[_COMMUNITY_Community 304|Community 304]]
- [[_COMMUNITY_Community 305|Community 305]]
- [[_COMMUNITY_Community 306|Community 306]]
## God Nodes (most connected - your core abstractions)
1. `ApiClient` - 121 edges
2. `PM` - 106 edges
3. `constructor()` - 86 edges
4. `we()` - 83 edges
5. `set()` - 65 edges
6. `get()` - 59 edges
7. `Ud` - 56 edges
8. `qf` - 54 edges
9. `dE()` - 54 edges
10. `pE()` - 54 edges
## Surprising Connections (you probably didn't know these)
- `handleDownload()` --calls--> `fetch()` [INFERRED]
frontend/src/routes/Downloads.tsx → assets/index-BMcXQls5.js
- `Audit logging service for tracking sensitive operations.` --rationale_for--> `Audit Logger` [EXTRACTED]
backend/app/services/audit_logger.py → docs/reference/guides/testing-strategy.md
- `Service for managing audit logs.` --rationale_for--> `Audit Logger` [EXTRACTED]
backend/app/services/audit_logger.py → docs/reference/guides/testing-strategy.md
- `main()` --calls--> `parse_ad_cues()` [INFERRED]
scripts/replace_cue_voice.py → backend/app/tasks/tts_synthesis.py
- `main()` --calls--> `GeminiTTSService` [INFERRED]
scripts/replace_cue_voice.py → backend/app/services/gemini_tts.py
## Communities (307 total, 132 thin omitted)
### Community 0 - "Community 0"
Cohesion: 0.01
Nodes (156): _1(), a4, AI, aw(), ax, b3, b4, b5 (+148 more)
### Community 1 - "Community 1"
Cohesion: 0.03
Nodes (88): ACTION_GROUPS, SEVERITY_COLORS, Tab, VoicePreviewButtonProps, VoiceSelector(), JOB_STATUS_LABEL, LinguistQueue(), STATUS_TABS (+80 more)
### Community 2 - "Community 2"
Cohesion: 0.06
Nodes (87): _5, _6, $A(), aS, aU(), bC(), BM(), Bu (+79 more)
### Community 3 - "Community 3"
Cohesion: 0.05
Nodes (72): _2(), _3, az(), bE(), bj(), Bp(), CE(), Cl() (+64 more)
### Community 4 - "Community 4"
Cohesion: 0.06
Nodes (57): FinalDetail(), LanguagePreview(), FinalList(), LANG_QC_BADGE, LANG_QC_ICON, QCDetail(), QCList(), StatusBadgeProps (+49 more)
### Community 5 - "Community 5"
Cohesion: 0.05
Nodes (46): Config, Microsoft Authentication Service Validates Microsoft ID tokens and extracts use, Render accessible video based on Gemini analysis. Args: sou, # NOTE: Use _get_video_duration_local directly since freeze segments are, Service for re-timing VTT files when pauses are inserted into video., get_connection_manager(), WebSocket Connection Manager for Real-time Job Status Updates This module provi, Dependency to get the connection manager (+38 more)
### Community 6 - "Community 6"
Cohesion: 0.06
Nodes (70): addObserver(), AE(), Bg(), bO(), build(), #C(), cancel(), clearGcTimeout() (+62 more)
### Community 7 - "Community 7"
Cohesion: 0.04
Nodes (46): AccessibleVideoEditState, AISection, Config, Job, JobCreate, JobUpdate, LanguageQCEvent, PausePointData (+38 more)
### Community 8 - "Community 8"
Cohesion: 0.08
Nodes (12): add(), Dl(), ig(), jg(), L2(), n2, Ud, Vt() (+4 more)
### Community 9 - "Community 9"
Cohesion: 0.06
Nodes (15): accessor(), ap(), ct, dM(), en, _f(), jn, Ki() (+7 more)
### Community 10 - "Community 10"
Cohesion: 0.06
Nodes (51): ClientDetail(), ClientList(), UserAssignmentsPanel(), UserDetail(), useAddTeamMember(), useArchiveProject(), useAssignPM(), useClient() (+43 more)
### Community 11 - "Community 11"
Cohesion: 0.04
Nodes (11): ApiClient, Get system statistics (production/admin only), Get audit logs with filtering (production/admin only), Force reprocessing of a job (production/admin emergency function), Get audit logs for a specific user (production/admin only), Get recent security events (production/admin only), reprocess_job(), Get a single review note by ID. (+3 more)
### Community 12 - "Community 12"
Cohesion: 0.12
Nodes (19): b1(), b2(), Bf(), clear(), Dd, er(), f1, H1 (+11 more)
### Community 13 - "Community 13"
Cohesion: 0.09
Nodes (23): a2(), AN(), Cn, d1, ds(), e2(), eo, FA() (+15 more)
### Community 14 - "Community 14"
Cohesion: 0.06
Nodes (37): RequireAuth(), RequireAuthProps, RoleGate(), RoleGateProps, GlossaryDetail(), Tab, GlossaryList(), useMyMemberships() (+29 more)
### Community 15 - "Community 15"
Cohesion: 0.12
Nodes (6): IE(), kE(), ub(), Wf, xk, Zn()
### Community 17 - "Community 17"
Cohesion: 0.09
Nodes (17): ag(), C1(), D2(), from(), G1(), HA(), j1(), Ji() (+9 more)
### Community 18 - "Community 18"
Cohesion: 0.06
Nodes (15): Ad(), aj, bl(), cb(), _d, Gi, hS(), jb() (+7 more)
### Community 19 - "Community 19"
Cohesion: 0.05
Nodes (44): get_accessible_project_ids(), Returns project IDs the user may access, or None meaning "see everything"., log_job_action(), Log job-related actions., adjust_vtt_timing(), approve_english(), approve_source(), bulk_approve_jobs() (+36 more)
### Community 20 - "Community 20"
Cohesion: 0.08
Nodes (6): db(), gk(), kn, t1, tt, yf()
### Community 21 - "Community 21"
Cohesion: 0.06
Nodes (42): a3(), Al(), Bd, cI(), concat(), cS(), cw, eC() (+34 more)
### Community 22 - "Community 22"
Cohesion: 0.05
Nodes (38): create_indexes(), MongoDB, Create database indexes as specified in the development plan, axios, @azure/msal-browser, @azure/msal-react, date-fns, @hookform/resolvers (+30 more)
### Community 23 - "Community 23"
Cohesion: 0.09
Nodes (40): ar(), At(), Bs(), Cf(), Cj(), cR(), Dg(), DN() (+32 more)
### Community 24 - "Community 24"
Cohesion: 0.08
Nodes (4): ls, pk(), qf, sb()
### Community 25 - "Community 25"
Cohesion: 0.07
Nodes (17): bindMethods(), constructor(), eb(), _g, gt, I2, kd, Lf() (+9 more)
### Community 26 - "Community 26"
Cohesion: 0.07
Nodes (32): Test direct database connection., test_database_connection(), get_password_hash(), verify_password(), Seed utilities for initial data setup., Ensure the default admin user exists and has the admin role. Looks up vadym, seed_default_admin(), Log user management actions. (+24 more)
### Community 27 - "Community 27"
Cohesion: 0.25
Nodes (38): AccessibleVideoProgressItem, JobStatus, LangOutput, Progress tracking for accessible video rendering per language., TTS voice preferences for audio description generation, RequestedOutputs, Review, TTSPreferences (+30 more)
### Community 28 - "Community 28"
Cohesion: 0.07
Nodes (36): aC(), aM(), aO(), BA(), bt, C4(), cO(), dI (+28 more)
### Community 29 - "Community 29"
Cohesion: 0.10
Nodes (34): BaseModel, Client, ClientCreate, ClientUpdate, Project, ProjectCreate, ProjectUpdate, Team (+26 more)
### Community 30 - "Community 30"
Cohesion: 0.06
Nodes (34): devDependencies, autoprefixer, eslint, @eslint/js, eslint-plugin-react-hooks, eslint-plugin-react-refresh, globals, jsdom (+26 more)
### Community 31 - "Community 31"
Cohesion: 0.09
Nodes (28): AuditLog(), Audit Logger, AuditLog, AuditLogQuery, AuditLogResponse, Config, Audit log model for tracking sensitive operations., Schema for querying audit logs. (+20 more)
### Community 32 - "Community 32"
Cohesion: 0.07
Nodes (34): Async wrapper for broadcasting job status updates from API routes For Ce, _async_render_accessible_video(), _build_placements_from_ad_vtt(), _check_accessible_video_completion(), Build placement instructions from AD VTT cues and TTS durations. Uses AD VT, Check if all accessible videos are complete and update job status accordingly., Async implementation of accessible video rendering., _build_placements_with_adjustments() (+26 more)
### Community 33 - "Community 33"
Cohesion: 0.10
Nodes (33): concatenate_segments(), ConcatenateRequest, _download_from_gcs(), encode_segment(), EncodeSegmentRequest, extract_frame(), ExtractFrameRequest, _parse_gcs_uri() (+25 more)
### Community 34 - "Community 34"
Cohesion: 0.06
Nodes (31): Request to regenerate TTS for a specific cue during QC., TTSRegenerationRequest, AccessibleVideoEditStateResponse, AccessibleVideoRenderRequest, ADCueSegment, ADPlacementCue, GeminiAccessibleVideoAnalysis, PausePointResponse (+23 more)
### Community 35 - "Community 35"
Cohesion: 0.09
Nodes (23): NOTIFICATION_TYPE_ICONS, CONNECTION_MESSAGES, useWebSocketToastHandler(), WebSocketToastHandlerProps, GlobalWebSocketProvider(), NotificationItem, NotificationProvider(), ToastContext (+15 more)
### Community 36 - "Community 36"
Cohesion: 0.06
Nodes (3): get(), getSetCookie(), lM()
### Community 37 - "Community 37"
Cohesion: 0.12
Nodes (30): Enum, AuditAction, AuditLogSeverity, Enumeration of auditable actions., Severity levels for audit events., AuthProvider, Convert ObjectId to string, UserRole (+22 more)
### Community 38 - "Community 38"
Cohesion: 0.09
Nodes (19): test_login(), test_login(), get_current_user(), create_access_token(), create_refresh_token(), decode_token(), Test decoding expired JWT token, Test decoding token with wrong secret (+11 more)
### Community 39 - "Community 39"
Cohesion: 0.14
Nodes (17): .archive/source-docs-2026-04-29/original/README.md, .github/workflows/cd-backend.yml, .github/workflows/cd-frontend.yml, .github/workflows/ci.yml, Celery Workers, FastAPI Backend, Google Cloud Storage, Gemini 2.5 Pro AI (+9 more)
### Community 40 - "Community 40"
Cohesion: 0.19
Nodes (20): _assert_client_access(), _assert_pm_or_admin(), assign_pm(), _client_from_doc(), create_team(), deactivate_client(), delete_team(), get_client() (+12 more)
### Community 41 - "Community 41"
Cohesion: 0.09
Nodes (13): EmailService, Sends email via Mailgun REST API (httpx, async-safe)., Render the completion email HTML template, Test rendering completion email template, Test rendering template with single language, Test rendering template with no download links, Test that rendered template has proper HTML structure, Test that download links are properly formatted in template (+5 more)
### Community 42 - "Community 42"
Cohesion: 0.07
Nodes (13): GCSService, Delete a file from GCS, Check if a file exists in GCS, Upload file to GCS and return the GCS URI, Generate a signed URL for downloading a file, upload_file_to_gcs(), gcs_service(), Test Google Cloud Storage service functionality (+5 more)
### Community 43 - "Community 43"
Cohesion: 0.07
Nodes (16): Test VTT editing functionality, Test translating text while preserving timing, Test error handling for text count mismatch, Test updating a specific cue's text, Test error handling for invalid cue index, Test validation of valid VTT content, Test validation fails without WEBVTT header, Test validation catches timing errors (+8 more)
### Community 44 - "Community 44"
Cohesion: 0.09
Nodes (18): ABC, Database migration framework for MongoDB., down(), migrate_down(), migrate_up(), Migration, MongoDB migration framework., Get list of applied migration versions. (+10 more)
### Community 45 - "Community 45"
Cohesion: 0.10
Nodes (26): _all_approved(), _any_rejected(), approve_language(), _assert_can_act(), assign_linguist(), _job_languages(), list_for_linguist(), _maybe_advance_job() (+18 more)
### Community 46 - "Community 46"
Cohesion: 0.11
Nodes (28): _, B(), BR(), cP, Cu, Fd(), getUri(), GR() (+20 more)
### Community 47 - "Community 47"
Cohesion: 0.08
Nodes (23): cors_error_handler(), general_exception_handler(), http_exception_handler(), lifespan(), metrics(), rate_limiting_middleware(), Ensure CORS headers are added to all responses, including errors., Handle HTTP exceptions with CORS headers (+15 more)
### Community 48 - "Community 48"
Cohesion: 0.10
Nodes (16): ConnectionManager, JobStatusUpdate, Connect a WebSocket for job list updates (all jobs for a user), Disconnect a WebSocket and clean up subscriptions, Background task to handle Redis pub/sub messages with reconnection logic, Schema for job status update messages, Handle incoming Redis pub/sub message, Send job status update to specific job subscribers (+8 more)
### Community 49 - "Community 49"
Cohesion: 0.08
Nodes (23): Telemetry package for OpenTelemetry tracing and metrics collection, get_tracer(), instrument_dependencies(), instrument_fastapi_app(), Decorator for tracing async operations, Decorator for tracing job pipeline stages, Decorator for tracing AI service operations, Initialize OpenTelemetry tracing for the application (+15 more)
### Community 50 - "Community 50"
Cohesion: 0.16
Nodes (21): LanguageQCState, LanguageQCStatus, User, UserInDB, ApproveLanguageRequest, AssignRequest, LanguageQCMapResponse, LanguageQCStateResponse (+13 more)
### Community 51 - "Community 51"
Cohesion: 0.10
Nodes (26): FloatRange, get_tts_options(), LanguagesResponse, list_languages(), list_voices(), _preview_elevenlabs(), _preview_gemini(), preview_voice() (+18 more)
### Community 52 - "Community 52"
Cohesion: 0.13
Nodes (15): Service for rendering accessible video with embedded audio descriptions using ff, Delete temporary GCS file. Args: gcs_uri: GCS URI to delete, Concatenate audio files via Cloud Run FFmpeg service., Generate a silent audio file of specified duration. Used to create 500m, Upload local file to permanent GCS location (not temp). Args:, Generate silence using local ffmpeg via Celery queue., Generate silence via Cloud Run FFmpeg service., Concatenate video segments via Cloud Run FFmpeg service. (+7 more)
### Community 53 - "Community 53"
Cohesion: 0.13
Nodes (25): get_database(), Set the database instance., glossary_from_doc(), activate_version(), archive_glossary(), _cell(), _ensure_indexes(), get_glossaries_for_client() (+17 more)
### Community 54 - "Community 54"
Cohesion: 0.13
Nodes (26): backend/tests/conftest.py, Glossary Service Hybrid Retrieval, RBAC Permission Checks, Risk-Based Testing Strategy, Translation Pipeline, services/audit_logger.py, core/authz.py, services/gcs.py (+18 more)
### Community 55 - "Community 55"
Cohesion: 0.18
Nodes (18): bump_user_membership_cache(), Invalidate the Redis membership cache for a user (call on any membership write)., get_membership(), get_memberships_for_user(), has_org_role(), _membership_from_doc(), _now(), Membership service — queries the memberships collection. (+10 more)
### Community 56 - "Community 56"
Cohesion: 0.11
Nodes (18): FileListItem, MultiUploadFileListProps, UploadProgressItem, UploadStatus, useLanguages(), AxiosErrorLike, FileListItem, SharedJobSettings (+10 more)
### Community 57 - "Community 57"
Cohesion: 0.13
Nodes (13): Calculate cumulative offset for timestamps AT or AFTER pause points. A, Service for re-timing VTT subtitle files after pause insertions., Retime a single cue, potentially splitting it across pause points. If a, Retime a cue that doesn't span any pause points. Start time uses offset, Generate new VTT with adjusted timings for pause-insert accessible video., Filter out segments that are too short to display meaningfully., Re-time the audio description VTT for pause-insert accessible video. Fo, Parse VTT content into a list of cue dictionaries. (+5 more)
### Community 58 - "Community 58"
Cohesion: 0.08
Nodes (13): Cue 8s-10s with pause at 10s should remain at 8s-10s., Cue 5s-25s with pauses at 10s and 20s should split into 3 segments., Cue 8s-12s with pause at 10s (4s freeze) should split into 8s-10s + 14s-16s., Very short segments (<100ms) should be filtered out., No placements should return original VTT unchanged., Multiple cues with a pause between them., Pause at 0.0 should shift all subsequent cues., Multiple placements at the same pause point should be handled correctly. (+5 more)
### Community 59 - "Community 59"
Cohesion: 0.10
Nodes (16): BudgetExceeded, preflight(), Thin HTTP client for the centralized Oliver AI Cost Tracker., Raised by preflight() when the cost tracker rejects a call due to budget limits., generate_descriptive_transcript(), Descriptive Transcript Service Generates a WCAG-compliant descriptive transcrip, Merge captions VTT and audio description VTT into a descriptive transcript., Upload text content to GCS and return the GCS URI (+8 more)
### Community 60 - "Community 60"
Cohesion: 0.13
Nodes (17): LanguageTrack, useCreateReviewNote(), useDeleteReviewNote(), useReviewNotes(), useUpdateReviewNote(), DownloadCard(), handleDownload(), LangOutput (+9 more)
### Community 61 - "Community 61"
Cohesion: 0.13
Nodes (18): Exception, Validate file type using magic numbers., Validate file size limits., Validate JSON request payload., Custom validation error., Recursively validate JSON values., Validate query parameters., Validate request headers. (+10 more)
### Community 62 - "Community 62"
Cohesion: 0.09
Nodes (15): ApplicationMetrics, Initialize metrics provider and meter, Start Prometheus metrics HTTP server, Record a new job creation, Record job status change, Central metrics collection for the accessible video platform, Record time taken for job processing stage, Record AI service request (+7 more)
### Community 64 - "Community 64"
Cohesion: 0.09
Nodes (13): Test helper methods of VTTRetimerService., offset_at should return 0 for timestamps before any pause., offset_at should include offset for timestamps AT pause point., offset_at should include offset for timestamps after pause., offset_at should sum offsets from all applicable pauses., offset_before should return 0 for timestamps before any pause., offset_before should NOT include offset for timestamps AT pause point., offset_before should include offset for timestamps after pause. (+5 more)
### Community 65 - "Community 65"
Cohesion: 0.17
Nodes (16): Invitation, InvitationAcceptRequest, InvitationCreate, InvitationPreviewResponse, InvitationResponse, MemberDetail, Membership, MembershipCreate (+8 more)
### Community 66 - "Community 66"
Cohesion: 0.09
Nodes (21): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, jsx, lib, module, moduleDetection, moduleResolution (+13 more)
### Community 67 - "Community 67"
Cohesion: 0.10
Nodes (14): createMockFile(), mockApiResponses, badge, unknownStatus, customAccept, invalidFile, largeFile, mockFile (+6 more)
### Community 68 - "Community 68"
Cohesion: 0.10
Nodes (11): Test parsing different timestamp formats, Test formatting seconds to VTT timestamp, Test that parsing and building are consistent, Test parsing VTT with cue identifiers, Test parsing VTT with multi-line cue text, Test VTT parsing and building functionality, Test parsing VTT with NOTE sections, Test building VTT from cues (+3 more)
### Community 69 - "Community 69"
Cohesion: 0.11
Nodes (11): Utility class for editing VTT content while preserving timing, VTTEditor, endTimeInput, onChange, startTimeInput, textarea, user, computeCueErrors() (+3 more)
### Community 70 - "Community 70"
Cohesion: 0.16
Nodes (19): a5(), c5(), dC(), e5(), fS(), hC(), i5(), l5() (+11 more)
### Community 71 - "Community 71"
Cohesion: 0.13
Nodes (14): _cached_memberships(), get_membership_context(), _load_memberships(), MembershipContext, OrgScopedQuery, Central authorization module (Phase 3 SaaS). Provides: - MembershipContext —, Dependency factory: ensures the current user has at least `min_role` in the, Dependency: platform admin only. (+6 more)
### Community 72 - "Community 72"
Cohesion: 0.14
Nodes (14): VTT Version Control API Endpoints, _count_cues(), create_version(), _next_version(), VTT version control service — DB-backed snapshots with GCS storage., Create a new version whose content is a copy of an older version (non-destructiv, Line-level diff between two versions using difflib., Count WebVTT cue blocks (lines containing ' --> '). (+6 more)
### Community 73 - "Community 73"
Cohesion: 0.14
Nodes (8): firstCue, textarea, mockApiResponses, testJobs, testUsers, testVttContent, AuthHelper, MockAPIHelper
### Community 74 - "Community 74"
Cohesion: 0.11
Nodes (18): compilerOptions, allowImportingTsExtensions, erasableSyntaxOnly, lib, module, moduleDetection, moduleResolution, noEmit (+10 more)
### Community 75 - "Community 75"
Cohesion: 0.13
Nodes (18): all_codes(), all_display_map(), get(), get_display_name(), get_gemini_label(), get_preview_sample(), get_tts_lang(), Locale (+10 more)
### Community 76 - "Community 76"
Cohesion: 0.12
Nodes (19): ADR-003: Hybrid Exact + Vector Glossary Retrieval, Admin API Endpoints, Glossaries API Endpoints, VTT Management API Endpoints, services/audit_logger.py, services/glossary_service.py, Hybrid Glossary Retrieval, Job State Machine (16 States) (+11 more)
### Community 77 - "Community 77"
Cohesion: 0.15
Nodes (15): get_redis(), Get a secret value if it was loaded from Secret Manager., get_api_keys(), get_jwt_secrets(), get_secret(), get_secrets_batch(), Google Cloud Secret Manager integration service., Custom exception for Secret Manager operations. (+7 more)
### Community 78 - "Community 78"
Cohesion: 0.15
Nodes (18): EmbeddingStatus, Glossary, GlossaryCreate, GlossaryDetailResponse, GlossaryResponse, GlossarySource, GlossaryStatus, GlossaryTerm (+10 more)
### Community 79 - "Community 79"
Cohesion: 0.14
Nodes (15): close_publisher(), get_job_eligible_users(), JobStatusUpdate, publish_job_status_update(), publish_job_update_with_eligibility(), Synchronous WebSocket Publisher for Celery Workers This module provides a synch, Close Redis connection, Convenience function to publish job status update This is the function that (+7 more)
### Community 80 - "Community 80"
Cohesion: 0.13
Nodes (18): d4(), Fl(), jL(), mz, nj(), Os, Pp, pw() (+10 more)
### Community 81 - "Community 81"
Cohesion: 0.22
Nodes (13): AcceptInvite(), Stage, _assert_org_admin(), _get_org_name(), _hash_token(), _inv_from_doc(), _make_token(), _now() (+5 more)
### Community 82 - "Community 82"
Cohesion: 0.12
Nodes (18): ADR-001: Async Celery Bridge via New Event Loop Per Task, ADR-002: Access Tokens Stored in JS Memory, lib/api.ts, lib/auth.ts, services/gcs.py, services/gemini.py, tasks/ingest_and_ai.py, services/microsoft_auth.py (+10 more)
### Community 83 - "Community 83"
Cohesion: 0.15
Nodes (12): main(), MigrationCLI, # TODO: Implement your migration logic here, # TODO: Implement your rollback logic here, Main CLI entry point., Command-line interface for database migrations., Show current migration status., Create a new migration template. (+4 more)
### Community 84 - "Community 84"
Cohesion: 0.11
Nodes (10): Test parsing audio description cues, Test parsing empty VTT content, Test timestamp parsing, Test getting default ElevenLabs voice for language, Test getting custom ElevenLabs voice, Test ElevenLabs voice fallback for unknown language, Test service initialization with no credentials, Test Text-to-Speech service functionality (+2 more)
### Community 85 - "Community 85"
Cohesion: 0.18
Nodes (8): Return the pre-built glossary block (from glossary_service.build_glossary_prompt, Build the brand context instruction block for injection into prompts., Extract captions and audio descriptions from video using Gemini 2.0 Retu, Load prompt template from prompts directory, Wait for uploaded file to become ACTIVE state, Transcreate English VTT content to target language with cultural adaptation, Rewrite an audio description cue to be TTS-friendly. Called when TTS sy, _record_gemini_usage()
### Community 86 - "Community 86"
Cohesion: 0.12
Nodes (8): Migration, Add rendering_video status to jobs collection validator., Revert to previous validator (without rendering_video)., Migration, Add rendering_qc status to jobs collection validator. This status is used durin, Update MongoDB schema validator to support rendering_qc status., Update the jobs collection validator to include rendering_qc status., Revert to previous validator (without rendering_qc status).
### Community 87 - "Community 87"
Cohesion: 0.23
Nodes (13): activate_version(), _assert_can_read(), list_glossaries(), list_terms(), Glossary management endpoints. Access: - All glossary mutations (upload, acti, Upload a new xlsx file as a new version of an existing glossary., List all active glossaries for a client., Upload a new glossary xlsx file and associate it with a client. (+5 more)
### Community 88 - "Community 88"
Cohesion: 0.13
Nodes (10): BaseConfig, BaseSettings, Settings, initialize_config(), Enhanced configuration system with Secret Manager integration., Initialize configuration with secrets loading., Enhanced configuration that loads secrets from GCP Secret Manager., Load secrets from Secret Manager asynchronously. (+2 more)
### Community 89 - "Community 89"
Cohesion: 0.16
Nodes (13): _format_timestamp(), Config, Review Note model for timestamped video review notes., A timestamped note attached to a video asset during review., ReviewNote, ReviewNote, AddNoteForm(), AddNoteFormProps (+5 more)
### Community 90 - "Community 90"
Cohesion: 0.14
Nodes (16): optical-web-1 Production Server, AI Prompt for Generating Accessible Closed Captions, DCMP Closed Captioning Guidelines, Merriam-Webster Online, WebVTT Format, R-02: AI Processing Pipeline, R-11: Real-time Notifications, scripts/full-deploy.sh (+8 more)
### Community 91 - "Community 91"
Cohesion: 0.13
Nodes (10): Concatenate video segments using ffmpeg concat demuxer., Copy video without modification., Render with overlay method: 1. Create AD audio track with segments at ta, Render with pause-insert method: 1. Split video at each pause point, Get video duration in seconds using ffprobe., Get video duration using local ffprobe via Celery queue., Get detailed video and audio properties., Get video properties using local ffprobe via Celery queue. (+2 more)
### Community 92 - "Community 92"
Cohesion: 0.17
Nodes (10): GeminiTTSService, Raised when TTS synthesis fails after all retries., Generate a preview audio sample for voice selection. Uses language-speci, Synthesize a single cue with exponential backoff retry. Args:, Text-to-Speech service using Gemini TTS API, Synthesize full audio description from VTT content. Maintains timing ali, Convert raw PCM audio (24kHz, 16-bit, mono) to MP3. Gemini TTS outputs P, Synthesize text to audio using Gemini TTS. Returns MP3 audio bytes. (+2 more)
### Community 93 - "Community 93"
Cohesion: 0.14
Nodes (11): GeminiService, Attempt to self-heal invalid JSON response from Gemini, Attempt to self-heal invalid JSON response from targeted extraction, Attempt to fix common JSON syntax issues, Translate VTT content using Gemini, preserving timing programmatically., Tests for GeminiService.translate_vtt() method, Integration tests for Gemini service (requires actual API key), Test real Gemini extraction (requires setup) (+3 more)
### Community 94 - "Community 94"
Cohesion: 0.17
Nodes (8): Parser and builder for WebVTT files, Parse VTT content into a list of cues, Build VTT content from a list of cues, VTTCue, VTTParser, VTTValidator, cues, SyncedCaptionList()
### Community 95 - "Community 95"
Cohesion: 0.17
Nodes (11): MicrosoftAuthError, MicrosoftAuthService, MicrosoftTokenValidationError, MicrosoftUserInfo, Validate Microsoft ID token and extract user information. Args:, User information extracted from Microsoft ID token., Base exception for Microsoft authentication errors., Raised when token validation fails. (+3 more)
### Community 96 - "Community 96"
Cohesion: 0.16
Nodes (10): FFmpegExecutionError, _get_cloud_run_id_token(), Extract segment with RE-ENCODING for frame-accurate cuts. Crucial for p, Extract segment with re-encoding using local ffmpeg via Celery queue., Extract segment with re-encoding via Cloud Run FFmpeg service., Extract frame via Cloud Run FFmpeg service., Call Cloud Run FFmpeg service endpoint. Args: endpoint: End, Dispatch FFmpeg command to the dedicated ffmpeg queue and wait for result. (+2 more)
### Community 97 - "Community 97"
Cohesion: 0.14
Nodes (9): Whisper HTTP Service - FastAPI application for Cloud Run deployment. This servi, Pre-load Whisper model on startup to reduce first-request latency., startup_event(), Service for Whisper-based speech analysis and pause point refinement., Identify gaps between words that could serve as pause points. Args:, A gap between words, potential pause point., Find the gap type for a given timestamp., Service for speech analysis using faster-whisper. (+1 more)
### Community 99 - "Community 99"
Cohesion: 0.16
Nodes (13): CachedWhisperTranscript, CachedWordTimestamp, Schemas for Whisper transcript caching., Cached Whisper transcript stored in job document., Word timestamp for MongoDB storage., _dispatch_whisper_transcription(), _extract_audio_for_whisper(), Refine Gemini pause points using Whisper speech gap detection. This functio (+5 more)
### Community 100 - "Community 100"
Cohesion: 0.14
Nodes (13): { login }, loginCall, loginError, loginPromise, { logout }, mockApiClient, mockLoginResponse, mockUser (+5 more)
### Community 101 - "Community 101"
Cohesion: 0.18
Nodes (14): build_glossary_prompt_block(), _exact_match(), _get_active_version_id(), get_glossary_block_for_job(), _get_translation(), match_terms_for_text(), Hybrid retrieval: exact-match (Aho-Corasick) + semantic (Atlas Vector Search)., Return the active version_id for the active glossary of a client, or None. (+6 more)
### Community 102 - "Community 102"
Cohesion: 0.14
Nodes (8): Check if a pause point is "during speaking" (words nearby). Args:, Find all sentence boundaries (starts and ends) from the transcript. Bou, Snap a Gemini pause point to the nearest sentence boundary. Simplified, Refine all pause points in a Gemini analysis result. Two-phase algorith, Consolidate AD cues whose pause points are within threshold seconds of each othe, Log information about consolidated AD cue groups., A sentence boundary (start or end) for pause point snapping. Used to determ, SentenceBoundary
### Community 104 - "Community 104"
Cohesion: 0.15
Nodes (8): b6(), d5(), nM(), [Symbol.iterator](), toJSON(), toString(), wj(), xC()
### Community 105 - "Community 105"
Cohesion: 0.21
Nodes (10): MetricsTimer, Context manager for timing operations, Time a job processing stage, Time an AI service request, Time a storage operation, Time a Celery task execution, time_ai_request(), time_celery_task() (+2 more)
### Community 106 - "Community 106"
Cohesion: 0.49
Nodes (12): deploy_backend(), deploy_frontend(), display_status(), main(), preflight_checks(), print_error(), print_header(), print_info() (+4 more)
### Community 107 - "Community 107"
Cohesion: 0.50
Nodes (12): build_and_deploy_frontend(), display_summary(), main(), preflight_checks(), print_error(), print_header(), print_info(), print_success() (+4 more)
### Community 108 - "Community 108"
Cohesion: 0.17
Nodes (9): create_freeze_segment(), Request for creating a freeze-frame video with audio., Extract a video segment using ffmpeg (stream copy - for overlay method)., Create a freeze-frame video segment with audio overlay (for overlay method)., Create freeze frame that rigidly matches the source video properties. T, Create freeze segment using local ffmpeg via Celery queue., Create freeze segment via Cloud Run FFmpeg service., Extract audio segment from video for catch-up audio. Used to extract th (+1 more)
### Community 109 - "Community 109"
Cohesion: 0.15
Nodes (8): Tests for VTT retiming service for pause-insert accessible videos., Test VTT retiming with actual_freeze_duration field., Should use actual_freeze_duration instead of calculated value., Should use calculated value when actual_freeze_duration not provided., Should handle mix of actual and calculated freeze durations., Cue spanning pause should use actual_freeze_duration for split timing., retimer(), TestVTTRetimerActualFreezeDuration
### Community 110 - "Community 110"
Cohesion: 0.17
Nodes (12): _delete_gcs_temp(), _get_cloud_run_id_token(), Transcribe audio using local Whisper service., Run Whisper transcription - via Cloud Run if configured, otherwise locally., Get an ID token for authenticating to Cloud Run services. Uses the service, Upload local audio file to GCS temporary location and return GCS URI., Delete temporary GCS file., Transcribe audio via Cloud Run Whisper service. Uploads local audio to GCS (+4 more)
### Community 111 - "Community 111"
Cohesion: 0.30
Nodes (8): CreateUserModal(), UserList(), useCreateUser(), useDeactivateUser(), useResetUserPassword(), useUsers(), CreateUserRequest, UpdateUserRequest
### Community 112 - "Community 112"
Cohesion: 0.33
Nodes (11): adjust_timing_offset(), build(), get_cue_count(), get_total_duration(), parse(), _parse_timestamp(), translate_preserving_timing(), update_cue_text() (+3 more)
### Community 113 - "Community 113"
Cohesion: 0.20
Nodes (12): Cloud Run API Service, Cloud Build HTTP Services Pipeline, Cloud Build Main Pipeline, Cloud Run Deployment README, Accessible Video API Service, FFmpeg Video Processing Service, TTS Worker Service, Whisper Transcription Service (+4 more)
### Community 114 - "Community 114"
Cohesion: 0.23
Nodes (11): create_secrets(), generate_secure_key(), list_secrets(), main(), List all existing secrets in the project., Test secret retrieval to ensure everything is working., Main CLI entry point., Generate a cryptographically secure random key. (+3 more)
### Community 115 - "Community 115"
Cohesion: 0.18
Nodes (11): Response model for pause point refinement., Refine Gemini pause points using Whisper transcript analysis. This endpoint, Request model for transcription endpoint., Request model for pause point refinement., refine_pause_points(), RefinePausePointsRequest, RefinePausePointsResponse, TranscribeRequest (+3 more)
### Community 116 - "Community 116"
Cohesion: 0.24
Nodes (5): ElevenLabs Voice Catalog Service. Fetches and caches available voices from the, Structured voice data from ElevenLabs., Fetch voices from ElevenLabs API with in-memory cache (1-hour TTL). Fall, Fetch voices from the ElevenLabs API., Look up a specific voice by ID.
### Community 117 - "Community 117"
Cohesion: 0.18
Nodes (10): auth_provider_x509_cert_url, auth_uri, client_email, client_id, client_x509_cert_url, private_key, project_id, token_uri (+2 more)
### Community 118 - "Community 118"
Cohesion: 0.18
Nodes (11): Jobs API Endpoints, FastAPI Backend Application, GCP Secret Manager, FastAPI Backend, MongoDB Atlas, React SPA (TypeScript + Vite), FastAPI 0.115.0, Motor AsyncIOMotor (+3 more)
### Community 119 - "Community 119"
Cohesion: 0.20
Nodes (6): Migration, Migrate audit log schema from basic to comprehensive format., Rollback to old audit log schema format (limited)., Migrate existing audit logs to new schema format., Map old action strings to new AuditAction enum values., Update audit log schema to comprehensive format.
### Community 120 - "Community 120"
Cohesion: 0.51
Nodes (9): display_status(), main(), preflight_checks(), print_error(), print_header(), print_info(), print_success(), start_services() (+1 more)
### Community 121 - "Community 121"
Cohesion: 0.22
Nodes (4): TTSService, test_synthesize_no_service_configured(), tts_service_elevenlabs(), tts_service_google()
### Community 122 - "Community 122"
Cohesion: 0.29
Nodes (10): canRun(), continue(), execute(), find(), isFocused(), onFocus(), onOnline(), refetch() (+2 more)
### Community 123 - "Community 123"
Cohesion: 0.20
Nodes (10): record(), Synthesize a single cue's text to audio. Returns: Tuple of (audio_b, Upload a cue's audio to GCS. Path convention: gs://{bucket}/{job_id}/{langu, Run an async coroutine in a sync context., Synthesize a single AD cue and upload to GCS immediately. This task runs on, _record_tts_cost(), _run_async(), synthesize_cue_task() (+2 more)
### Community 124 - "Community 124"
Cohesion: 0.29
Nodes (6): RateLimitMiddleware, Get client identifier for rate limiting., Get endpoint pattern for rate limiting., Get rate limit for the current request., Process rate limiting for the request., FastAPI middleware for rate limiting.
### Community 125 - "Community 125"
Cohesion: 0.20
Nodes (10): middleware/rate_limiting.py, R-04: Per-Language QC, R-05: Translation and TTS, Celery Workers, Google Translate, Redis Queue, SendGrid Email, Text-to-Speech Service (+2 more)
### Community 126 - "Community 126"
Cohesion: 0.58
Nodes (9): deploy_to_apache(), display_summary(), main(), preflight_checks(), print_error(), print_header(), print_info(), print_success() (+1 more)
### Community 127 - "Community 127"
Cohesion: 0.22
Nodes (6): Generate MP3 audio from audio description VTT content AND return individual segm, Represents a synthesized audio segment for a single AD cue., Generate MP3 using ElevenLabs TTS, Synthesize text using ElevenLabs API, Get ElevenLabs voice ID for language, TTSCueSegment
### Community 128 - "Community 128"
Cohesion: 0.28
Nodes (7): AuditLogCreate, Schema for creating audit log entries., Task, NotifyClientTask, Async task for client notifications, Celery task wrapper for client notification, Pipeline 3: Client Notification Triggered when job status changes to 'co
### Community 129 - "Community 129"
Cohesion: 0.22
Nodes (5): Migration, Update user collection schema validator for PRODUCTION role and nullable passwor, Update the users collection validator., Update MongoDB schema validator to support production role and Microsoft users., Revert to previous validator (client, reviewer, admin only).
### Community 130 - "Community 130"
Cohesion: 0.22
Nodes (5): Migration, Initial database schema setup migration., Create initial collections and indexes., Drop all collections (destructive - use with caution)., Initial schema setup with all collections and indexes.
### Community 131 - "Community 131"
Cohesion: 0.22
Nodes (5): Migration, Index optimization migration for improved query performance., Remove the optimized indexes., Add optimized indexes for common query patterns., Optimize indexes for better query performance.
### Community 132 - "Community 132"
Cohesion: 0.22
Nodes (5): Migration, Add tts_failed and render_failed statuses to jobs collection validator. These s, Update MongoDB schema validator to support tts_failed and render_failed statuses, Update the jobs collection validator to include failed statuses., Revert to previous validator (without failed statuses).
### Community 133 - "Community 133"
Cohesion: 0.22
Nodes (5): Migration, Add linguist role to user collection schema validator., Update the users collection validator., Update MongoDB schema validator to support linguist role., Revert to validator without linguist role.
### Community 134 - "Community 134"
Cohesion: 0.22
Nodes (5): Migration, Add project_manager role to user collection schema validator., Update the users collection validator., Update MongoDB schema validator to support project_manager role., Revert to validator without project_manager role.
### Community 135 - "Community 135"
Cohesion: 0.22
Nodes (9): _download_from_gcs(), _parse_gcs_uri(), Parse GCS URI into bucket and blob path., Download file from GCS to local path., Transcribe audio file from GCS and return word-level timestamps. This endpo, Response model for transcription endpoint., transcribe(), TranscribeResponse (+1 more)
### Community 136 - "Community 136"
Cohesion: 0.25
Nodes (3): ErrorBoundary, Props, State
### Community 137 - "Community 137"
Cohesion: 0.29
Nodes (6): Apply request validation middleware., validation_middleware(), create_validation_middleware(), Enhanced request validation middleware., FastAPI middleware for enhanced request validation., Factory function to create validation middleware.
### Community 138 - "Community 138"
Cohesion: 0.29
Nodes (4): Migration, Add auth_provider field to users collection., Remove auth_provider field from all users., Add auth_provider field to support Microsoft authentication.
### Community 139 - "Community 139"
Cohesion: 0.29
Nodes (7): main(), Test downloading directly from GCS (bypass signed URL)., Test the complete MP3 serving pipeline., test_direct_gcs_download(), get_signed_download_url(), test_get_signed_download_url(), get_job_downloads()
### Community 141 - "Community 141"
Cohesion: 0.29
Nodes (6): audio_description_vtt, captions_vtt, confidence, language, summary, transcript_plaintext
### Community 142 - "Community 142"
Cohesion: 0.43
Nodes (6): AssetValidationService, Service for validating job assets before completion, validate_job_assets(), _validate_mp3_asset(), _validate_video_asset(), _validate_vtt_asset()
### Community 143 - "Community 143"
Cohesion: 0.29
Nodes (4): Test VTTCue dataclass, Test creating a VTT cue, Test creating a VTT cue without identifier, TestVTTCue
### Community 144 - "Community 144"
Cohesion: 0.29
Nodes (4): IPWhitelist, IP whitelist for bypassing rate limits., Check if IP is whitelisted., Remove IP from whitelist.
### Community 145 - "Community 145"
Cohesion: 0.29
Nodes (5): RateLimiter, Redis-based rate limiter with sliding window algorithm., Check if request is allowed under rate limit. Returns:, Track rate limiting metrics, track_rate_limit_metrics()
### Community 146 - "Community 146"
Cohesion: 0.29
Nodes (4): Migration, Add approved_source and qc_feedback statuses to jobs collection validator., Revert to previous validator (without approved_source and qc_feedback)., Update MongoDB schema validator to support approved_source and qc_feedback statu
### Community 147 - "Community 147"
Cohesion: 0.29
Nodes (3): Convert VTT timestamp to seconds, Parse audio description VTT and extract timing + text, Convert VTT timestamp to seconds
### Community 148 - "Community 148"
Cohesion: 0.29
Nodes (6): get_settings(), Get settings instance - for dependency injection, get_settings_cached(), Get settings instance (synchronous)., Get cached settings instance., Get setting value from Settings object or environment variable.
### Community 149 - "Community 149"
Cohesion: 0.29
Nodes (7): Transcribe audio and identify speech gaps for pause point placement. This e, Speech gap in response., Request model for transcription with gap analysis., Response model for transcription with gap analysis., SpeechGapResponse, transcribe_with_gaps(), TranscribeWithGapsResponse
### Community 152 - "Community 152"
Cohesion: 0.33
Nodes (5): Job, JobDownloadsResponse, JobStatus, LoginRequest, LoginResponse
### Community 153 - "Community 153"
Cohesion: 0.33
Nodes (4): Middleware package for FastAPI application., create_rate_limit_middleware(), Rate limiting middleware for API endpoints., Factory function to create rate limit middleware.
### Community 159 - "Community 159"
Cohesion: 0.33
Nodes (6): _get_ffmpeg_version(), health_check(), HealthResponse, Health check response., Get FFmpeg version string., Health check endpoint.
### Community 160 - "Community 160"
Cohesion: 0.33
Nodes (4): Test Gemini AI service functionality, Test successful prompt loading, Test prompt loading with missing file, TestGeminiService
### Community 162 - "Community 162"
Cohesion: 0.40
Nodes (4): Test database dependency injection., Test simple endpoint without dependencies., test_db_endpoint(), test_simple_endpoint()
### Community 164 - "Community 164"
Cohesion: 0.50
Nodes (4): generate_zip_filename(), Generate zip filename with current datetime., bulk_download_jobs(), Generate a zip file containing all downloadable assets from specified jobs.
### Community 168 - "Community 168"
Cohesion: 0.50
Nodes (4): Dependency: ensures the current user is an Admin or PM for the given client., require_pm_for_client(), Dependency: admin or PM of this client., _require_client_staff()
### Community 169 - "Community 169"
Cohesion: 0.50
Nodes (4): health_check(), HealthResponse, Health check response., Health check endpoint.
### Community 171 - "Community 171"
Cohesion: 0.67
Nodes (3): WebSocket API Endpoints, services/websocket.py, hooks/useJobStatusWebSocket.ts
### Community 172 - "Community 172"
Cohesion: 0.67
Nodes (3): Authentication API Endpoints, core/dependencies.py, core/security.py
### Community 174 - "Community 174"
Cohesion: 0.67
Nodes (3): Cloud Build SPA Pipeline, Frontend index.html, frontend/src/main.tsx
## Knowledge Gaps
- **427 isolated node(s):** `tsBuildInfoFile`, `target`, `lib`, `module`, `skipLibCheck` (+422 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **132 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `set()` connect `Community 3` to `Community 0`, `Community 2`, `Community 6`, `Community 8`, `Community 12`, `Community 13`, `Community 15`, `Community 17`, `Community 18`, `Community 25`, `Community 28`, `Community 32`, `Community 45`, `Community 46`, `Community 48`, `Community 79`, `Community 98`, `Community 101`, `Community 102`?**
_High betweenness centrality (0.255) - this node is a cross-community bridge._
- **Why does `create_refresh_token()` connect `Community 38` to `Community 81`, `Community 26`, `Community 13`, `Community 31`?**
_High betweenness centrality (0.104) - this node is a cross-community bridge._
- **Why does `get_database()` connect `Community 53` to `Community 101`, `Community 44`, `Community 77`, `Community 47`, `Community 48`, `Community 22`, `Community 31`?**
_High betweenness centrality (0.092) - this node is a cross-community bridge._
- **What connects `tsBuildInfoFile`, `target`, `lib` to the rest of the system?**
_1248 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `Community 0` be split into smaller, more focused modules?**
_Cohesion score 0.01099760921538796 - nodes in this community are weakly interconnected._
- **Should `Community 1` be split into smaller, more focused modules?**
_Cohesion score 0.03287128712871287 - nodes in this community are weakly interconnected._
- **Should `Community 2` be split into smaller, more focused modules?**
_Cohesion score 0.056654456654456654 - nodes in this community are weakly interconnected._

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,89 @@
---
tags: [architecture, graphify, wsj-filenaming]
updated: 2026-05-18
---
# Graph Report - /Users/ai_leed/Documents/Projects/Oliver/wsj-filenaming (2026-05-18)
## Corpus Check
- cluster-only mode — file stats not available
## Summary
- 100 nodes · 139 edges · 15 communities (14 shown, 1 thin omitted)
- Extraction: 93% EXTRACTED · 7% INFERRED · 0% AMBIGUOUS · INFERRED: 10 edges (avg confidence: 0.86)
- Token cost: 0 input · 0 output
## Graph Freshness
- Built from commit: `54eddd70`
- 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 6|Community 6]]
- [[_COMMUNITY_Community 7|Community 7]]
## God Nodes (most connected - your core abstractions)
1. `Standard Format: [OMGID] - [Domain]-[Subteam]-[Brand]-[Initiative]-[YY]-[Sequence]_[AssetName]_v[Version]` - 10 edges
2. `Dow Jones Job Naming Tool` - 9 edges
3. `loadMetadata()` - 8 edges
4. `loadData()` - 7 edges
5. `Event Format: [OMGID] - EVNT-[EventAbbrev]-[YY]-[Sequence]_[AssetName]_v[Version]` - 7 edges
6. `api.php (Backend API: AI commands, data CRUD, campaign management)` - 7 edges
7. `saveMetadata()` - 6 edges
8. `initSpreadsheet()` - 5 edges
9. `getSheetPath()` - 5 edges
10. `createSheet()` - 5 edges
## Surprising Connections (you probably didn't know these)
- `loadData()` --calls--> `showLoading()` [EXTRACTED]
script.js → script.js _Bridges community 4 → community 7_
- `Dow Jones Job Naming Tool` --references--> `Job Naming Convention` [EXTRACTED]
README.md → README.md _Bridges community 1 → community 2_
## Communities (15 total, 1 thin omitted)
### Community 0 - "Community 0"
Cohesion: 0.06
Nodes (30): aiModal, aiModalInput, aiModalMicBtn, aiModalSendBtn, aiModalYoloBtn, answer, blob, BRANDS (+22 more)
### Community 1 - "Community 1"
Cohesion: 0.18
Nodes (17): AI Command Bar Feature, api.php (Backend API: AI commands, data CRUD, campaign management), Campaign Save/Load Feature, campaigns/ (Saved campaign files), config.php (API keys and settings), Copy Filenames Feature, CSV Export Feature, data.json (Current working data) (+9 more)
### Community 2 - "Community 2"
Cohesion: 0.26
Nodes (14): AssetName Field (PascalCase asset description), Brand Variable, Domain Variable, Dropdown Validation Feature, Event Variable, Event Format: [OMGID] - EVNT-[EventAbbrev]-[YY]-[Sequence]_[AssetName]_v[Version], Initiative Field (free-text abbreviation), Job Naming Convention (+6 more)
### Community 3 - "Community 3"
Cohesion: 0.44
Nodes (11): createSheet(), deleteSheet(), duplicateSheet(), getMetadataPath(), getSheetPath(), getUserSheets(), loadMetadata(), loadSheetData() (+3 more)
### Community 4 - "Community 4"
Cohesion: 0.53
Nodes (6): buildFilename(), initSpreadsheet(), loadData(), saveData(), updateAllFilenames(), updateFilenameForRow()
### Community 7 - "Community 7"
Cohesion: 0.67
Nodes (3): sendCommand(), showLoading(), stopMicAndSend()
## Knowledge Gaps
- **35 isolated node(s):** `spreadsheetDiv`, `commandInput`, `sendBtn`, `exportBtn`, `loadingOverlay` (+30 more)
These have ≤1 connection - possible missing edges or undocumented components.
- **1 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
## Suggested Questions
_Questions this graph is uniquely positioned to answer:_
- **Why does `Dow Jones Job Naming Tool` connect `Community 1` to `Community 2`?**
_High betweenness centrality (0.056) - this node is a cross-community bridge._
- **Why does `Job Naming Convention` connect `Community 2` to `Community 1`?**
_High betweenness centrality (0.028) - this node is a cross-community bridge._
- **What connects `spreadsheetDiv`, `commandInput`, `sendBtn` to the rest of the system?**
_35 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `Community 0` be split into smaller, more focused modules?**
_Cohesion score 0.0625 - nodes in this community are weakly interconnected._