# Graph Report - . (2026-04-19) ## Corpus Check - 177 files · ~197,362 words - Verdict: corpus is large enough that graph structure adds value. ## Summary - 235 nodes · 221 edges · 57 communities detected - Extraction: 89% EXTRACTED · 11% INFERRED · 0% AMBIGUOUS · INFERRED: 25 edges (avg confidence: 0.76) - Token cost: 0 input · 0 output ## Community Hubs (Navigation) - [[_COMMUNITY_Layout Persistence Branding|Layout Persistence Branding]] - [[_COMMUNITY_Concept Modal Youtube|Concept Modal Youtube]] - [[_COMMUNITY_Main Getingestconfigfromenv Getpublicconfig|Main Getingestconfigfromenv Getpublicconfig]] - [[_COMMUNITY_Wordpress Decodeentities Fetchallpages|Wordpress Decodeentities Fetchallpages]] - [[_COMMUNITY_Cache Main Createcachefromenv|Cache Main Createcachefromenv]] - [[_COMMUNITY_Highperformingyoutubevideos Instagramposts Newestitems|Highperformingyoutubevideos Instagramposts Newestitems]] - [[_COMMUNITY_Compute Sleep Cachedcompute|Compute Sleep Cachedcompute]] - [[_COMMUNITY_Cache Slug Build|Cache Slug Build]] - [[_COMMUNITY_Image Placeholder Load|Image Placeholder Load]] - [[_COMMUNITY_Website Repository Guidelines|Website Repository Guidelines]] - [[_COMMUNITY_Youtube Fetchyoutubeviaapi Fetchyoutubeviarss|Youtube Fetchyoutubeviaapi Fetchyoutubeviarss]] - [[_COMMUNITY_Cacheputsafe Isget Isimagerequest|Cacheputsafe Isget Isimagerequest]] - [[_COMMUNITY_Production Notch Styling|Production Notch Styling]] - [[_COMMUNITY_Astro Blogpostcard Layout|Astro Blogpostcard Layout]] - [[_COMMUNITY_Getcachepath Readcontentcache Verify|Getcachepath Readcontentcache Verify]] - [[_COMMUNITY_Fetchpodcastrss Normalizepodcastfeeditems Striphtml|Fetchpodcastrss Normalizepodcastfeeditems Striphtml]] - [[_COMMUNITY_Target Data Umami|Target Data Umami]] - [[_COMMUNITY_Screenshot Review Santhoshj|Screenshot Review Santhoshj]] - [[_COMMUNITY_Tests Listed Files|Tests Listed Files]] - [[_COMMUNITY_Service Worker Critical|Service Worker Critical]] - [[_COMMUNITY_Withutm|Withutm]] - [[_COMMUNITY_Creatememorycache Memory Cache|Creatememorycache Memory Cache]] - [[_COMMUNITY_Readfeaturedvideoids Curation|Readfeaturedvideoids Curation]] - [[_COMMUNITY_Read Umami Attributes|Read Umami Attributes]] - [[_COMMUNITY_Read Layout Test|Read Layout Test]] - [[_COMMUNITY_Read Title Type|Read Title Type]] - [[_COMMUNITY_Umami Attributes Test|Umami Attributes Test]] - [[_COMMUNITY_Wcag Responsive Shell|Wcag Responsive Shell]] - [[_COMMUNITY_Normalized Schema Wordpress|Normalized Schema Wordpress]] - [[_COMMUNITY_Passwords Rationale Revocable|Passwords Rationale Revocable]] - [[_COMMUNITY_Astro Config|Astro Config]] - [[_COMMUNITY_Community 31|Community 31]] - [[_COMMUNITY_Links|Links]] - [[_COMMUNITY_Types|Types]] - [[_COMMUNITY_Types|Types]] - [[_COMMUNITY_Test|Test]] - [[_COMMUNITY_Ingest Test|Ingest Test]] - [[_COMMUNITY_Desktop Header Screenshot|Desktop Header Screenshot]] - [[_COMMUNITY_Mobile Header Screenshot|Mobile Header Screenshot]] - [[_COMMUNITY_Surface|Surface]] - [[_COMMUNITY_Rationale Structure Keeps|Rationale Structure Keeps]] - [[_COMMUNITY_Contentitem Summary Optional|Contentitem Summary Optional]] - [[_COMMUNITY_Standardcard Astro|Standardcard Astro]] - [[_COMMUNITY_Post Slug Astro|Post Slug Astro]] - [[_COMMUNITY_Slug Astro|Slug Astro]] - [[_COMMUNITY_Point Quality Gate|Point Quality Gate]] - [[_COMMUNITY_Bounce Rate Reduction|Bounce Rate Reduction]] - [[_COMMUNITY_Preview Modal Instead|Preview Modal Instead]] - [[_COMMUNITY_Umami Preview Event|Umami Preview Event]] - [[_COMMUNITY_Modal Tracking Click|Modal Tracking Click]] - [[_COMMUNITY_Precedence Localstorage Cookie|Precedence Localstorage Cookie]] - [[_COMMUNITY_Cookie Fallback Long|Cookie Fallback Long]] - [[_COMMUNITY_Switch Event Automatic|Switch Event Automatic]] - [[_COMMUNITY_Surface|Surface]] - [[_COMMUNITY_Social Aggregation|Social Aggregation]] - [[_COMMUNITY_Homepage Modules|Homepage Modules]] - [[_COMMUNITY_Conversion Ctas|Conversion Ctas]] ## God Nodes (most connected - your core abstractions) 1. `2026-02-10 lighthouse fixes change` - 13 edges 2. `main()` - 10 edges 3. `createCacheFromEnv()` - 8 edges 4. `media-modal capability` - 7 edges 5. `run()` - 6 edges 6. `normalizeWordpressPost()` - 6 edges 7. `fast-website` - 6 edges 8. `Three-theme system (dark/light/high-contrast)` - 6 edges 9. `log()` - 5 edges 10. `normalizeWordpressPage()` - 5 edges ## Surprising Connections (you probably didn't know these) - `Favicon SVG stylized S mark` --supports_branding--> `SEO-first content aggregation website` [INFERRED] site/public/favicon.svg → README.md - `run()` --calls--> `log()` [INFERRED] site\scripts\run-lighthouse.ts → site\scripts\fetch-content.ts - `createCacheFromEnv()` --calls--> `log()` [INFERRED] site\src\lib\cache\index.ts → site\scripts\fetch-content.ts - `main()` --calls--> `getIngestConfigFromEnv()` [INFERRED] site\scripts\fetch-content.ts → site\src\lib\config.ts - `main()` --calls--> `createCacheFromEnv()` [INFERRED] site\scripts\fetch-content.ts → site\src\lib\cache\index.ts ## Hyperedges (group relationships) - **Theme notch incident bundle** — doc_diag_complete, doc_diag_summary, doc_prod_diagnosis, issue_theme_notch_production_unstyled, cause_stale_production_css, fix_rebuild_redeploy_docker [INFERRED 0.90] - **Lighthouse gate contract** — capability_lighthouse_quality_gate, concept_lighthouse_gate_100, concept_theme_system, concept_service_worker_caching, concept_layout_shift_prevention [EXTRACTED 0.90] - **Media modal implementation bundle** — capability_media_modal, concept_native_dialog_modal, concept_iframe_src_reset, concept_cards_as_buttons, concept_data_attributes_modal, concept_modal_embed_urls, concept_wcag_modal_accessibility, concept_umami_media_preview, concept_modal_cta_tracking [EXTRACTED 0.90] - **Theme persistence bundle** — change_remember_theme, concept_theme_persistence, concept_theme_precedence_order, concept_site_theme_cookie, concept_theme_switch_event, concept_theme_switch_payload, concept_no_restore_event [EXTRACTED 0.90] ## Communities ### Community 0 - "Layout Persistence Branding" Cohesion: 0.08 Nodes (25): lighthouse-quality-gate capability, Accessible semantic controls, deterministic lighthouse gate, Layout shift prevention, prefers-reduced-motion handling, theme persistence across visits, Theme persistence with localStorage/cookie fallback, theme_switch umami event (+17 more) ### Community 1 - "Concept Modal Youtube" Cohesion: 0.12 Nodes (18): media-modal capability, 2026-02-10 lighthouse fixes change, youtube iframe api endpoint, video/podcast cards as button triggers, concept crawlable anchors, concept csp header alignment, concept dark theme contrast tokens, data-* attribute flow from cards to modal (+10 more) ### Community 2 - "Main Getingestconfigfromenv Getpublicconfig" Cohesion: 0.18 Nodes (11): getIngestConfigFromEnv(), dedupe(), log(), main(), normalizeSpotifyEpisodeUrl(), readPodcastSpotifyOverrideMap(), writeAtomic(), readInstagramEmbedPosts() (+3 more) ### Community 3 - "Wordpress Decodeentities Fetchallpages" Cohesion: 0.27 Nodes (10): decodeEntities(), fetchWordpressContent(), getAuthHeaders(), mapCategoryIds(), mapFeaturedImageUrl(), normalizeWordpressCategory(), normalizeWordpressPage(), normalizeWordpressPost() (+2 more) ### Community 4 - "Cache Main Createcachefromenv" Cohesion: 0.21 Nodes (7): log(), main(), createCacheFromEnv(), createNoopCache(), createRedisCache(), resolveDefaultTtlSecondsFromEnv(), resolveRedisUrlFromEnv() ### Community 5 - "Highperformingyoutubevideos Instagramposts Newestitems" Cohesion: 0.2 Nodes (4): highPerformingYoutubeVideos(), wordpressPosts(), wordpressPostsByCategorySlug(), youtubeVideos() ### Community 6 - "Compute Sleep Cachedcompute" Cohesion: 0.25 Nodes (7): compute(), sleep(), cachedCompute(), getArg(), hasFlag(), run(), startPreviewServerIfNeeded() ### Community 7 - "Cache Slug Build" Cohesion: 0.18 Nodes (11): blog-section-surface, build-time ingestion into content cache, site/content/cache/content.json, site/scripts/fetch-content.ts, Rationale: build-time cache keeps site fast and crawlable, /blog/category/ route, /blog route, /blog/page/ route (+3 more) ### Community 8 - "Image Placeholder Load" Cohesion: 0.2 Nodes (10): BaseLayout inline image load script, static placeholder on image error, fade-in on image load, image-lazy-loading, .img-error, .img-loading, .img-shimmer-wrap, no CLS from placeholder (+2 more) ### Community 9 - "Website Repository Guidelines" Cohesion: 0.22 Nodes (9): Repository Guidelines, SVG uses prefers-color-scheme dark fill override, Favicon SVG stylized S mark, lighthouse-quality-gate, nav-hover-line, theme-switcher-notch, OpenSpec schema spec-driven, fast-website (+1 more) ### Community 10 - "Youtube Fetchyoutubeviaapi Fetchyoutubeviarss" Cohesion: 0.36 Nodes (6): fetchYoutubeViaApi(), fetchYoutubeViaRss(), normalizeYoutubeApiVideos(), normalizeYoutubeRssFeedItems(), stripHtml(), truncate() ### Community 11 - "Cacheputsafe Isget Isimagerequest" Cohesion: 0.33 Nodes (0): ### Community 12 - "Production Notch Styling" Cohesion: 0.33 Nodes (6): Stale production CSS missing theme-notch rules, Production Theme Notch Styling Issue - Complete Diagnostic Report, Production Theme Notch Styling Issue - Executive Summary, Production Theme Notch Styling Issue - Diagnostic Report, Rebuild and redeploy Docker image, Theme notch unstyled on production ### Community 13 - "Astro Blogpostcard Layout" Cohesion: 0.33 Nodes (4): card-layout-system, views shown only when available, shared Card component, standard footer/meta row ### Community 14 - "Getcachepath Readcontentcache Verify" Cohesion: 0.5 Nodes (3): getCachePath(), readContentCache(), main() ### Community 15 - "Fetchpodcastrss Normalizepodcastfeeditems Striphtml" Cohesion: 0.6 Nodes (4): fetchPodcastRss(), normalizePodcastFeedItems(), stripHtml(), truncate() ### Community 16 - "Target Data Umami" Cohesion: 0.5 Nodes (4): data-umami-event attributes, placement, target_id, target_url ### Community 17 - "Screenshot Review Santhoshj" Cohesion: 0.67 Nodes (3): Performance Review — santhoshj.com, Blog page screenshot, Homepage screenshot ### Community 18 - "Tests Listed Files" Cohesion: 0.67 Nodes (3): Listed spec files missing in current workspace, site/tests/content.spec.ts, site/tests/yaml.spec.ts ### Community 19 - "Service Worker Critical" Cohesion: 0.67 Nodes (3): Critical-asset cache busting, Service worker caching lifecycle, Service worker performance spec ### Community 20 - "Withutm" Cohesion: 1.0 Nodes (0): ### Community 21 - "Creatememorycache Memory Cache" Cohesion: 1.0 Nodes (0): ### Community 22 - "Readfeaturedvideoids Curation" Cohesion: 1.0 Nodes (0): ### Community 23 - "Read Umami Attributes" Cohesion: 1.0 Nodes (0): ### Community 24 - "Read Layout Test" Cohesion: 1.0 Nodes (0): ### Community 25 - "Read Title Type" Cohesion: 1.0 Nodes (0): ### Community 26 - "Umami Attributes Test" Cohesion: 1.0 Nodes (0): ### Community 27 - "Wcag Responsive Shell" Cohesion: 1.0 Nodes (0): ### Community 28 - "Normalized Schema Wordpress" Cohesion: 1.0 Nodes (2): normalized wordpress internal schema, Rationale: normalized schema keeps UI simple and consistent ### Community 29 - "Passwords Rationale Revocable" Cohesion: 1.0 Nodes (2): Rationale: app passwords are revocable and safer operationally, WordPress application passwords ### Community 30 - "Astro Config" Cohesion: 1.0 Nodes (0): ### Community 31 - "Community 31" Cohesion: 1.0 Nodes (0): ### Community 32 - "Links" Cohesion: 1.0 Nodes (0): ### Community 33 - "Types" Cohesion: 1.0 Nodes (0): ### Community 34 - "Types" Cohesion: 1.0 Nodes (0): ### Community 35 - "Test" Cohesion: 1.0 Nodes (0): ### Community 36 - "Ingest Test" Cohesion: 1.0 Nodes (0): ### Community 37 - "Desktop Header Screenshot" Cohesion: 1.0 Nodes (1): Desktop header screenshot ### Community 38 - "Mobile Header Screenshot" Cohesion: 1.0 Nodes (1): Mobile header screenshot ### Community 39 - "Surface" Cohesion: 1.0 Nodes (1): seo-content-surface ### Community 40 - "Rationale Structure Keeps" Cohesion: 1.0 Nodes (1): Rationale: route structure keeps URLs clear and stable ### Community 41 - "Contentitem Summary Optional" Cohesion: 1.0 Nodes (1): ContentItem.summary optional field ### Community 42 - "Standardcard Astro" Cohesion: 1.0 Nodes (0): ### Community 43 - "Post Slug Astro" Cohesion: 1.0 Nodes (1): blog/post/[slug].astro ### Community 44 - "Slug Astro" Cohesion: 1.0 Nodes (1): blog/page/[slug].astro ### Community 45 - "Point Quality Gate" Cohesion: 1.0 Nodes (1): Lighthouse 100-point quality gate ### Community 46 - "Bounce Rate Reduction" Cohesion: 1.0 Nodes (1): Bounce rate reduction intent ### Community 47 - "Preview Modal Instead" Cohesion: 1.0 Nodes (1): on-site media preview modal instead of outbound navigation ### Community 48 - "Umami Preview Event" Cohesion: 1.0 Nodes (1): umami media_preview event taxonomy ### Community 49 - "Modal Tracking Click" Cohesion: 1.0 Nodes (1): modal CTA tracking via cta_click taxonomy ### Community 50 - "Precedence Localstorage Cookie" Cohesion: 1.0 Nodes (1): theme precedence localStorage -> cookie -> environment signals ### Community 51 - "Cookie Fallback Long" Cohesion: 1.0 Nodes (1): site_theme cookie fallback with long TTL ### Community 52 - "Switch Event Automatic" Cohesion: 1.0 Nodes (1): no theme_switch event on automatic restoration ### Community 53 - "Surface" Cohesion: 1.0 Nodes (1): SEO content surface spec ### Community 54 - "Social Aggregation" Cohesion: 1.0 Nodes (1): Social content aggregation spec ### Community 55 - "Homepage Modules" Cohesion: 1.0 Nodes (1): Homepage content modules spec ### Community 56 - "Conversion Ctas" Cohesion: 1.0 Nodes (1): Conversion CTAs spec ## Knowledge Gaps - **78 isolated node(s):** `Repository Guidelines`, `OpenSpec schema spec-driven`, `theme-switcher-notch`, `nav-hover-line`, `lighthouse-quality-gate` (+73 more) These have ≤1 connection - possible missing edges or undocumented components. - **Thin community `Withutm`** (2 nodes): `url.ts`, `withUtm()` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Creatememorycache Memory Cache`** (2 nodes): `createMemoryCache()`, `memory-cache.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Readfeaturedvideoids Curation`** (2 nodes): `readFeaturedVideoIds()`, `curation.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Read Umami Attributes`** (2 nodes): `read()`, `blog-umami-attributes.test.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Read Layout Test`** (2 nodes): `read()`, `card-layout.test.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Read Title Type`** (2 nodes): `read()`, `content-title-type-attributes.test.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Umami Attributes Test`** (2 nodes): `umami-attributes.test.ts`, `read()` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Wcag Responsive Shell`** (2 nodes): `wcag-responsive-shell.test.ts`, `read()` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Normalized Schema Wordpress`** (2 nodes): `normalized wordpress internal schema`, `Rationale: normalized schema keeps UI simple and consistent` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Passwords Rationale Revocable`** (2 nodes): `Rationale: app passwords are revocable and safer operationally`, `WordPress application passwords` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Astro Config`** (1 nodes): `astro.config.mjs` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 31`** (1 nodes): `env.d.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Links`** (1 nodes): `links.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Types`** (1 nodes): `types.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Types`** (1 nodes): `types.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Test`** (1 nodes): `blog-nav.test.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Ingest Test`** (1 nodes): `ingest.test.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Desktop Header Screenshot`** (1 nodes): `Desktop header screenshot` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Mobile Header Screenshot`** (1 nodes): `Mobile header screenshot` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Surface`** (1 nodes): `seo-content-surface` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Rationale Structure Keeps`** (1 nodes): `Rationale: route structure keeps URLs clear and stable` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Contentitem Summary Optional`** (1 nodes): `ContentItem.summary optional field` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Standardcard Astro`** (1 nodes): `StandardCard.astro` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Post Slug Astro`** (1 nodes): `blog/post/[slug].astro` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Slug Astro`** (1 nodes): `blog/page/[slug].astro` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Point Quality Gate`** (1 nodes): `Lighthouse 100-point quality gate` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Bounce Rate Reduction`** (1 nodes): `Bounce rate reduction intent` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Preview Modal Instead`** (1 nodes): `on-site media preview modal instead of outbound navigation` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Umami Preview Event`** (1 nodes): `umami media_preview event taxonomy` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Modal Tracking Click`** (1 nodes): `modal CTA tracking via cta_click taxonomy` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Precedence Localstorage Cookie`** (1 nodes): `theme precedence localStorage -> cookie -> environment signals` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cookie Fallback Long`** (1 nodes): `site_theme cookie fallback with long TTL` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Switch Event Automatic`** (1 nodes): `no theme_switch event on automatic restoration` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Surface`** (1 nodes): `SEO content surface spec` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Social Aggregation`** (1 nodes): `Social content aggregation spec` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Homepage Modules`** (1 nodes): `Homepage content modules spec` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Conversion Ctas`** (1 nodes): `Conversion CTAs spec` Too small to be a meaningful cluster - may be noise or needs more connections extracted. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ - **Why does `2026-02-10 lighthouse fixes change` connect `Concept Modal Youtube` to `Layout Persistence Branding`?** _High betweenness centrality (0.020) - this node is a cross-community bridge._ - **Why does `prefers-reduced-motion handling` connect `Layout Persistence Branding` to `Concept Modal Youtube`?** _High betweenness centrality (0.017) - this node is a cross-community bridge._ - **Why does `main()` connect `Main Getingestconfigfromenv Getpublicconfig` to `Cache Main Createcachefromenv`, `Compute Sleep Cachedcompute`?** _High betweenness centrality (0.012) - this node is a cross-community bridge._ - **Are the 4 inferred relationships involving `main()` (e.g. with `getIngestConfigFromEnv()` and `createCacheFromEnv()`) actually correct?** _`main()` has 4 INFERRED edges - model-reasoned connections that need verification._ - **Are the 7 inferred relationships involving `createCacheFromEnv()` (e.g. with `main()` and `main()`) actually correct?** _`createCacheFromEnv()` has 7 INFERRED edges - model-reasoned connections that need verification._ - **Are the 2 inferred relationships involving `run()` (e.g. with `sleep()` and `log()`) actually correct?** _`run()` has 2 INFERRED edges - model-reasoned connections that need verification._ - **What connects `Repository Guidelines`, `OpenSpec schema spec-driven`, `theme-switcher-notch` to the rest of the system?** _78 weakly-connected nodes found - possible documentation gaps or missing edges._