# Graph Report - C:/dev/build_for_life_project (2026-04-23) ## Corpus Check - 189 files · ~54,875 words - Verdict: corpus is large enough that graph structure adds value. ## Summary - 453 nodes · 486 edges · 131 communities detected - Extraction: 80% EXTRACTED · 20% INFERRED · 0% AMBIGUOUS · INFERRED: 97 edges (avg confidence: 0.8) - Token cost: 0 input · 0 output ## Community Hubs (Navigation) - [[_COMMUNITY_Auth & Load Helpers|Auth & Load Helpers]] - [[_COMMUNITY_Documents Service|Documents Service]] - [[_COMMUNITY_Assets Service & CSV|Assets Service & CSV]] - [[_COMMUNITY_Email & Markdown|Email & Markdown]] - [[_COMMUNITY_Property Accounts|Property Accounts]] - [[_COMMUNITY_Projects Service|Projects Service]] - [[_COMMUNITY_App Shell & Theme|App Shell & Theme]] - [[_COMMUNITY_Asset Core|Asset Core]] - [[_COMMUNITY_Maintenance Core|Maintenance Core]] - [[_COMMUNITY_Checklists|Checklists]] - [[_COMMUNITY_Admin Scripts|Admin Scripts]] - [[_COMMUNITY_Asset Types Editor|Asset Types Editor]] - [[_COMMUNITY_Rooms & Floors|Rooms & Floors]] - [[_COMMUNITY_Tasks|Tasks]] - [[_COMMUNITY_User Management|User Management]] - [[_COMMUNITY_DB Schema Helpers|DB Schema Helpers]] - [[_COMMUNITY_Work Packages|Work Packages]] - [[_COMMUNITY_Storage Layer|Storage Layer]] - [[_COMMUNITY_Migration Workflow|Migration Workflow]] - [[_COMMUNITY_Session Auth|Session Auth]] - [[_COMMUNITY_Companies Service|Companies Service]] - [[_COMMUNITY_Form Utilities|Form Utilities]] - [[_COMMUNITY_Custom Fields Design|Custom Fields Design]] - [[_COMMUNITY_Field Types|Field Types]] - [[_COMMUNITY_Form Helper|Form Helper]] - [[_COMMUNITY_Env Config|Env Config]] - [[_COMMUNITY_Seed Script|Seed Script]] - [[_COMMUNITY_Asset Location Design|Asset Location Design]] - [[_COMMUNITY_Decision Design|Decision Design]] - [[_COMMUNITY_Drizzle Config|Drizzle Config]] - [[_COMMUNITY_Cluster 30|Cluster 30]] - [[_COMMUNITY_Cluster 31|Cluster 31]] - [[_COMMUNITY_Cluster 32|Cluster 32]] - [[_COMMUNITY_Cluster 33|Cluster 33]] - [[_COMMUNITY_Cluster 34|Cluster 34]] - [[_COMMUNITY_Cluster 35|Cluster 35]] - [[_COMMUNITY_Cluster 36|Cluster 36]] - [[_COMMUNITY_Cluster 37|Cluster 37]] - [[_COMMUNITY_Cluster 38|Cluster 38]] - [[_COMMUNITY_Cluster 39|Cluster 39]] - [[_COMMUNITY_Cluster 40|Cluster 40]] - [[_COMMUNITY_Cluster 41|Cluster 41]] - [[_COMMUNITY_Cluster 42|Cluster 42]] - [[_COMMUNITY_Cluster 43|Cluster 43]] - [[_COMMUNITY_Cluster 44|Cluster 44]] - [[_COMMUNITY_Cluster 45|Cluster 45]] - [[_COMMUNITY_Cluster 46|Cluster 46]] - [[_COMMUNITY_Cluster 47|Cluster 47]] - [[_COMMUNITY_Cluster 48|Cluster 48]] - [[_COMMUNITY_Cluster 49|Cluster 49]] - [[_COMMUNITY_Cluster 50|Cluster 50]] - [[_COMMUNITY_Cluster 51|Cluster 51]] - [[_COMMUNITY_Cluster 52|Cluster 52]] - [[_COMMUNITY_Cluster 53|Cluster 53]] - [[_COMMUNITY_Cluster 54|Cluster 54]] - [[_COMMUNITY_Cluster 55|Cluster 55]] - [[_COMMUNITY_Cluster 56|Cluster 56]] - [[_COMMUNITY_Cluster 57|Cluster 57]] - [[_COMMUNITY_Cluster 58|Cluster 58]] - [[_COMMUNITY_Cluster 59|Cluster 59]] - [[_COMMUNITY_Cluster 60|Cluster 60]] - [[_COMMUNITY_Cluster 61|Cluster 61]] - [[_COMMUNITY_Cluster 62|Cluster 62]] - [[_COMMUNITY_Cluster 63|Cluster 63]] - [[_COMMUNITY_Cluster 64|Cluster 64]] - [[_COMMUNITY_Cluster 65|Cluster 65]] - [[_COMMUNITY_Cluster 66|Cluster 66]] - [[_COMMUNITY_Cluster 67|Cluster 67]] - [[_COMMUNITY_Cluster 68|Cluster 68]] - [[_COMMUNITY_Cluster 69|Cluster 69]] - [[_COMMUNITY_Cluster 70|Cluster 70]] - [[_COMMUNITY_Cluster 71|Cluster 71]] - [[_COMMUNITY_Cluster 72|Cluster 72]] - [[_COMMUNITY_Cluster 73|Cluster 73]] - [[_COMMUNITY_Cluster 74|Cluster 74]] - [[_COMMUNITY_Cluster 75|Cluster 75]] - [[_COMMUNITY_Cluster 76|Cluster 76]] - [[_COMMUNITY_Cluster 77|Cluster 77]] - [[_COMMUNITY_Cluster 78|Cluster 78]] - [[_COMMUNITY_Cluster 79|Cluster 79]] - [[_COMMUNITY_Cluster 80|Cluster 80]] - [[_COMMUNITY_Cluster 81|Cluster 81]] - [[_COMMUNITY_Cluster 82|Cluster 82]] - [[_COMMUNITY_Cluster 83|Cluster 83]] - [[_COMMUNITY_Cluster 84|Cluster 84]] - [[_COMMUNITY_Cluster 85|Cluster 85]] - [[_COMMUNITY_Cluster 86|Cluster 86]] - [[_COMMUNITY_Cluster 87|Cluster 87]] - [[_COMMUNITY_Cluster 88|Cluster 88]] - [[_COMMUNITY_Cluster 89|Cluster 89]] - [[_COMMUNITY_Cluster 90|Cluster 90]] - [[_COMMUNITY_Cluster 91|Cluster 91]] - [[_COMMUNITY_Cluster 92|Cluster 92]] - [[_COMMUNITY_Cluster 93|Cluster 93]] - [[_COMMUNITY_Cluster 94|Cluster 94]] - [[_COMMUNITY_Cluster 95|Cluster 95]] - [[_COMMUNITY_Cluster 96|Cluster 96]] - [[_COMMUNITY_Cluster 97|Cluster 97]] - [[_COMMUNITY_Cluster 98|Cluster 98]] - [[_COMMUNITY_Cluster 99|Cluster 99]] - [[_COMMUNITY_Cluster 100|Cluster 100]] - [[_COMMUNITY_Cluster 101|Cluster 101]] - [[_COMMUNITY_Cluster 102|Cluster 102]] - [[_COMMUNITY_Cluster 103|Cluster 103]] - [[_COMMUNITY_Cluster 104|Cluster 104]] - [[_COMMUNITY_Cluster 105|Cluster 105]] - [[_COMMUNITY_Cluster 106|Cluster 106]] - [[_COMMUNITY_Cluster 107|Cluster 107]] - [[_COMMUNITY_Cluster 108|Cluster 108]] - [[_COMMUNITY_Cluster 109|Cluster 109]] - [[_COMMUNITY_Cluster 110|Cluster 110]] - [[_COMMUNITY_Cluster 111|Cluster 111]] - [[_COMMUNITY_Cluster 112|Cluster 112]] - [[_COMMUNITY_Cluster 113|Cluster 113]] - [[_COMMUNITY_Cluster 114|Cluster 114]] - [[_COMMUNITY_Cluster 115|Cluster 115]] - [[_COMMUNITY_Cluster 116|Cluster 116]] - [[_COMMUNITY_Cluster 117|Cluster 117]] - [[_COMMUNITY_Cluster 118|Cluster 118]] - [[_COMMUNITY_Cluster 119|Cluster 119]] - [[_COMMUNITY_Cluster 120|Cluster 120]] - [[_COMMUNITY_Cluster 121|Cluster 121]] - [[_COMMUNITY_Cluster 122|Cluster 122]] - [[_COMMUNITY_Cluster 123|Cluster 123]] - [[_COMMUNITY_Cluster 124|Cluster 124]] - [[_COMMUNITY_Cluster 125|Cluster 125]] - [[_COMMUNITY_Cluster 126|Cluster 126]] - [[_COMMUNITY_Cluster 127|Cluster 127]] - [[_COMMUNITY_Cluster 128|Cluster 128]] - [[_COMMUNITY_Cluster 129|Cluster 129]] - [[_COMMUNITY_Cluster 130|Cluster 130]] ## God Nodes (most connected - your core abstractions) 1. `load()` - 79 edges 2. `GET()` - 20 edges 3. `LocalDiskStorage` - 10 edges 4. `load()` - 9 edges 5. `S3Storage` - 8 edges 6. `buildfor_life_ops` - 8 edges 7. `fanOutExternal()` - 7 edges 8. `getTaskWithSubtasks()` - 7 edges 9. `handle()` - 6 edges 10. `uploadDocument()` - 6 edges ## Surprising Connections (you probably didn't know these) - `load()` --calls--> `renderMarkdown()` [INFERRED] src\routes\(auth)\login\+page.server.ts → src\lib\server\markdown.ts - `load()` --calls--> `listTemplates()` [INFERRED] src\routes\(auth)\login\+page.server.ts → src\lib\server\services\checklists.ts - `load()` --calls--> `getCompany()` [INFERRED] src\routes\(auth)\login\+page.server.ts → src\lib\server\services\companies.ts - `load()` --calls--> `listDocumentsForScope()` [INFERRED] src\routes\(auth)\login\+page.server.ts → src\lib\server\services\documents.ts - `load()` --calls--> `countOverdueForCompany()` [INFERRED] src\routes\(auth)\login\+page.server.ts → src\lib\server\services\maintenance.ts ## Hyperedges (group relationships) - **Session auth flow (cookie, hash, hook, gate)** — readme_auth_model, readme_sha256_cookie_hash, readme_sliding_renewal, readme_hooks_server, readme_layout_app_group [EXTRACTED 0.95] - **Storage abstraction (adapter, local impl, signed URLs, file route)** — readme_storage_adapter, readme_local_disk_storage, readme_hmac_signed_urls, readme_api_files_route, readme_storage_model [EXTRACTED 0.95] - **Cross-sibling theme propagation via localStorage** — readme_decision_theme_key, apphtml_theme_bootstrap, readme_buildfor_life_budget, readme_buildfor_life_repair [INFERRED 0.80] ## Communities ### Community 0 - "Auth & Load Helpers" Cohesion: 0.04 Nodes (12): requireAdmin(), requireCompany(), load(), parseSettings(), getPageWithCurrentRevision(), getRevision(), listPagesForScope(), listRevisions() (+4 more) ### Community 1 - "Documents Service" Cohesion: 0.07 Nodes (13): assertScope(), deleteDocument(), getDocument(), listDocumentsForScope(), signedUrlForDocument(), uploadDocument(), getStorage(), LocalDiskStorage (+5 more) ### Community 2 - "Assets Service & CSV" Cohesion: 0.11 Nodes (13): listAssets(), csvResponse(), toCsv(), gatherCustomFieldsFromForm(), createDecision(), decisionScopeLink(), listDecisionsForScope(), clamp() (+5 more) ### Community 3 - "Email & Markdown" Cohesion: 0.13 Nodes (15): getTransport(), isEmailConfigured(), sendEmail(), escapeHtml(), html(), renderMarkdown(), buildBodies(), isMatrixConfigured() (+7 more) ### Community 4 - "Property Accounts" Cohesion: 0.15 Nodes (12): assertProperty(), createAccount(), deleteAccount(), listAccounts(), handle(), deleteFloor(), handleLogout(), createSession() (+4 more) ### Community 5 - "Projects Service" Cohesion: 0.11 Nodes (6): load(), unreadCountForUser(), getProject(), listProjects(), getProperty(), listProperties() ### Community 6 - "App Shell & Theme" Cohesion: 0.13 Nodes (16): data-sveltekit-preload-data=hover, app.html root document, %sveltekit.head% / %sveltekit.body% placeholders, Tailwind body classes with dark: variants, Dark-mode bootstrap inline script (localStorage['theme']), Argon2id sessions (@node-rs/argon2 + @oslojs/crypto), buildfor_life_budget (sibling), buildfor_life_ops (+8 more) ### Community 7 - "Asset Core" Cohesion: 0.22 Nodes (10): assertContainer(), createAsset(), loadTypeWithFields(), moveAsset(), updateAsset(), validateCustomFields(), buildCustomFieldsSchema(), getCachedCustomFieldsSchema() (+2 more) ### Community 8 - "Maintenance Core" Cohesion: 0.22 Nodes (13): addInterval(), assertAsset(), countOverdueForCompany(), createSchedule(), deleteSchedule(), getSchedule(), listDueAndOverdue(), listEventsForAsset() (+5 more) ### Community 9 - "Checklists" Cohesion: 0.19 Nodes (7): addTemplateItem(), deleteTemplate(), getInstance(), getTemplate(), listTemplates(), removeTemplateItem(), setItemDone() ### Community 10 - "Admin Scripts" Cohesion: 0.24 Nodes (9): main(), readArg(), slugify(), stripSurroundingQuotes(), main(), readArg(), stripSurroundingQuotes(), normalizeEmail() (+1 more) ### Community 11 - "Asset Types Editor" Cohesion: 0.31 Nodes (8): addFieldDef(), createCompanyAssetType(), deleteCompanyAssetType(), loadEditableType(), normalizeFieldKey(), removeFieldDef(), slugifyTypeSlug(), updateCompanyAssetType() ### Community 12 - "Rooms & Floors" Cohesion: 0.33 Nodes (8): assertProperty(), createFloor(), createRoom(), getRoom(), listFloors(), listRoomsWithCounts(), softDeleteRoom(), updateRoom() ### Community 13 - "Tasks" Cohesion: 0.36 Nodes (9): addSubtask(), assertWorkPackage(), createTask(), getTaskWithSubtasks(), listTasksForWorkPackage(), removeSubtask(), softDeleteTask(), toggleSubtask() (+1 more) ### Community 14 - "User Management" Cohesion: 0.38 Nodes (8): assertMembership(), countAdmins(), listCompanyUsers(), removeUserFromCompany(), resetUserPassword(), setUserActive(), setUserRoleInCompany(), updateDisplayName() ### Community 15 - "DB Schema Helpers" Cohesion: 0.29 Nodes (0): ### Community 16 - "Work Packages" Cohesion: 0.48 Nodes (6): assertProject(), createWorkPackage(), getWorkPackage(), listWorkPackagesForProject(), softDeleteWorkPackage(), updateWorkPackage() ### Community 17 - "Storage Layer" Cohesion: 0.38 Nodes (7): /api/files route (signature verification + streaming), HMAC-signed short-lived file URLs, LocalDiskStorage, Phase 5: QR, notifications, S3, S3Storage (future), StorageAdapter interface, Storage model (opaque storage_key) ### Community 18 - "Migration Workflow" Cohesion: 0.29 Nodes (7): Use CONCURRENTLY on large-table index changes, Drizzle migrations directory, Review SQL after generate: enum/index/custom_fields, npm run db:generate, npm run db:migrate, npm run db:push (dev only), npm run db:studio (Drizzle Studio) ### Community 19 - "Session Auth" Cohesion: 0.33 Nodes (6): Auth model (sessions + hashed cookies), company_users role mapping, hooks.server.ts (session validation), (app) route group (authed shell), SHA-256 cookie hashing before DB lookup, Sliding session renewal (30d/15d) ### Community 20 - "Companies Service" Cohesion: 0.6 Nodes (4): createCompanyWithAdmin(), getCompany(), slugify(), updateCompany() ### Community 21 - "Form Utilities" Cohesion: 0.4 Nodes (1): e2n() ### Community 22 - "Custom Fields Design" Cohesion: 0.5 Nodes (4): Immutable-key policy reference, Decision: immutable custom-field keys, Decision: JSONB custom fields + asset_field_defs, Phase 1: Properties + Assets ### Community 23 - "Field Types" Cohesion: 1.0 Nodes (0): ### Community 24 - "Form Helper" Cohesion: 1.0 Nodes (0): ### Community 25 - "Env Config" Cohesion: 1.0 Nodes (2): .env configuration, env.ts (Zod-validated process.env) ### Community 26 - "Seed Script" Cohesion: 1.0 Nodes (2): npm run create-user script, src/lib/server/db/schema/ ### Community 27 - "Asset Location Design" Cohesion: 1.0 Nodes (2): Decision: asset_location_history (movable assets), Decision: XOR asset location (project XOR property) ### Community 28 - "Decision Design" Cohesion: 1.0 Nodes (2): Decision: decisions scoped to project/property/asset/work_package, Phase 3: Projects + structured decisions ### Community 29 - "Drizzle Config" Cohesion: 1.0 Nodes (0): ### Community 30 - "Cluster 30" Cohesion: 1.0 Nodes (0): ### Community 31 - "Cluster 31" Cohesion: 1.0 Nodes (0): ### Community 32 - "Cluster 32" Cohesion: 1.0 Nodes (0): ### Community 33 - "Cluster 33" Cohesion: 1.0 Nodes (0): ### Community 34 - "Cluster 34" Cohesion: 1.0 Nodes (0): ### Community 35 - "Cluster 35" Cohesion: 1.0 Nodes (0): ### Community 36 - "Cluster 36" Cohesion: 1.0 Nodes (0): ### Community 37 - "Cluster 37" Cohesion: 1.0 Nodes (0): ### Community 38 - "Cluster 38" Cohesion: 1.0 Nodes (0): ### Community 39 - "Cluster 39" Cohesion: 1.0 Nodes (0): ### Community 40 - "Cluster 40" Cohesion: 1.0 Nodes (0): ### Community 41 - "Cluster 41" Cohesion: 1.0 Nodes (0): ### Community 42 - "Cluster 42" Cohesion: 1.0 Nodes (0): ### Community 43 - "Cluster 43" Cohesion: 1.0 Nodes (0): ### Community 44 - "Cluster 44" Cohesion: 1.0 Nodes (0): ### Community 45 - "Cluster 45" Cohesion: 1.0 Nodes (0): ### Community 46 - "Cluster 46" Cohesion: 1.0 Nodes (0): ### Community 47 - "Cluster 47" Cohesion: 1.0 Nodes (0): ### Community 48 - "Cluster 48" Cohesion: 1.0 Nodes (0): ### Community 49 - "Cluster 49" Cohesion: 1.0 Nodes (0): ### Community 50 - "Cluster 50" Cohesion: 1.0 Nodes (0): ### Community 51 - "Cluster 51" Cohesion: 1.0 Nodes (0): ### Community 52 - "Cluster 52" Cohesion: 1.0 Nodes (0): ### Community 53 - "Cluster 53" Cohesion: 1.0 Nodes (0): ### Community 54 - "Cluster 54" Cohesion: 1.0 Nodes (0): ### Community 55 - "Cluster 55" Cohesion: 1.0 Nodes (0): ### Community 56 - "Cluster 56" Cohesion: 1.0 Nodes (0): ### Community 57 - "Cluster 57" Cohesion: 1.0 Nodes (0): ### Community 58 - "Cluster 58" Cohesion: 1.0 Nodes (0): ### Community 59 - "Cluster 59" Cohesion: 1.0 Nodes (0): ### Community 60 - "Cluster 60" Cohesion: 1.0 Nodes (0): ### Community 61 - "Cluster 61" Cohesion: 1.0 Nodes (0): ### Community 62 - "Cluster 62" Cohesion: 1.0 Nodes (0): ### Community 63 - "Cluster 63" Cohesion: 1.0 Nodes (0): ### Community 64 - "Cluster 64" Cohesion: 1.0 Nodes (0): ### Community 65 - "Cluster 65" Cohesion: 1.0 Nodes (0): ### Community 66 - "Cluster 66" Cohesion: 1.0 Nodes (0): ### Community 67 - "Cluster 67" Cohesion: 1.0 Nodes (0): ### Community 68 - "Cluster 68" Cohesion: 1.0 Nodes (0): ### Community 69 - "Cluster 69" Cohesion: 1.0 Nodes (0): ### Community 70 - "Cluster 70" Cohesion: 1.0 Nodes (0): ### Community 71 - "Cluster 71" Cohesion: 1.0 Nodes (0): ### Community 72 - "Cluster 72" Cohesion: 1.0 Nodes (0): ### Community 73 - "Cluster 73" Cohesion: 1.0 Nodes (0): ### Community 74 - "Cluster 74" Cohesion: 1.0 Nodes (0): ### Community 75 - "Cluster 75" Cohesion: 1.0 Nodes (0): ### Community 76 - "Cluster 76" Cohesion: 1.0 Nodes (0): ### Community 77 - "Cluster 77" Cohesion: 1.0 Nodes (0): ### Community 78 - "Cluster 78" Cohesion: 1.0 Nodes (0): ### Community 79 - "Cluster 79" Cohesion: 1.0 Nodes (0): ### Community 80 - "Cluster 80" Cohesion: 1.0 Nodes (0): ### Community 81 - "Cluster 81" Cohesion: 1.0 Nodes (0): ### Community 82 - "Cluster 82" Cohesion: 1.0 Nodes (0): ### Community 83 - "Cluster 83" Cohesion: 1.0 Nodes (0): ### Community 84 - "Cluster 84" Cohesion: 1.0 Nodes (0): ### Community 85 - "Cluster 85" Cohesion: 1.0 Nodes (0): ### Community 86 - "Cluster 86" Cohesion: 1.0 Nodes (0): ### Community 87 - "Cluster 87" Cohesion: 1.0 Nodes (0): ### Community 88 - "Cluster 88" Cohesion: 1.0 Nodes (0): ### Community 89 - "Cluster 89" Cohesion: 1.0 Nodes (0): ### Community 90 - "Cluster 90" Cohesion: 1.0 Nodes (0): ### Community 91 - "Cluster 91" Cohesion: 1.0 Nodes (0): ### Community 92 - "Cluster 92" Cohesion: 1.0 Nodes (0): ### Community 93 - "Cluster 93" Cohesion: 1.0 Nodes (0): ### Community 94 - "Cluster 94" Cohesion: 1.0 Nodes (0): ### Community 95 - "Cluster 95" Cohesion: 1.0 Nodes (0): ### Community 96 - "Cluster 96" Cohesion: 1.0 Nodes (0): ### Community 97 - "Cluster 97" Cohesion: 1.0 Nodes (0): ### Community 98 - "Cluster 98" Cohesion: 1.0 Nodes (0): ### Community 99 - "Cluster 99" Cohesion: 1.0 Nodes (0): ### Community 100 - "Cluster 100" Cohesion: 1.0 Nodes (0): ### Community 101 - "Cluster 101" Cohesion: 1.0 Nodes (0): ### Community 102 - "Cluster 102" Cohesion: 1.0 Nodes (0): ### Community 103 - "Cluster 103" Cohesion: 1.0 Nodes (0): ### Community 104 - "Cluster 104" Cohesion: 1.0 Nodes (0): ### Community 105 - "Cluster 105" Cohesion: 1.0 Nodes (0): ### Community 106 - "Cluster 106" Cohesion: 1.0 Nodes (0): ### Community 107 - "Cluster 107" Cohesion: 1.0 Nodes (0): ### Community 108 - "Cluster 108" Cohesion: 1.0 Nodes (0): ### Community 109 - "Cluster 109" Cohesion: 1.0 Nodes (0): ### Community 110 - "Cluster 110" Cohesion: 1.0 Nodes (0): ### Community 111 - "Cluster 111" Cohesion: 1.0 Nodes (0): ### Community 112 - "Cluster 112" Cohesion: 1.0 Nodes (0): ### Community 113 - "Cluster 113" Cohesion: 1.0 Nodes (0): ### Community 114 - "Cluster 114" Cohesion: 1.0 Nodes (0): ### Community 115 - "Cluster 115" Cohesion: 1.0 Nodes (0): ### Community 116 - "Cluster 116" Cohesion: 1.0 Nodes (0): ### Community 117 - "Cluster 117" Cohesion: 1.0 Nodes (0): ### Community 118 - "Cluster 118" Cohesion: 1.0 Nodes (0): ### Community 119 - "Cluster 119" Cohesion: 1.0 Nodes (0): ### Community 120 - "Cluster 120" Cohesion: 1.0 Nodes (1): npm run db:seed ### Community 121 - "Cluster 121" Cohesion: 1.0 Nodes (1): npm run validate (check + build) ### Community 122 - "Cluster 122" Cohesion: 1.0 Nodes (1): (auth) route group (login shell) ### Community 123 - "Cluster 123" Cohesion: 1.0 Nodes (1): Phase 0: scaffold (shipped) ### Community 124 - "Cluster 124" Cohesion: 1.0 Nodes (1): Phase 2: Checklists + maintenance ### Community 125 - "Cluster 125" Cohesion: 1.0 Nodes (1): Decision: UUID v7 primary keys ### Community 126 - "Cluster 126" Cohesion: 1.0 Nodes (1): Decision: timestamptz UTC everywhere ### Community 127 - "Cluster 127" Cohesion: 1.0 Nodes (1): Decision: soft delete (deleted_at) ### Community 128 - "Cluster 128" Cohesion: 1.0 Nodes (1): Decision: numeric(18,4) + char(3) currency ### Community 129 - "Cluster 129" Cohesion: 1.0 Nodes (1): Decision: company default currency in settings_json ### Community 130 - "Cluster 130" Cohesion: 1.0 Nodes (1): Decision: tabs = nested routes (not query-string) ## Knowledge Gaps - **42 isolated node(s):** `buildfor_life_budget (sibling)`, `buildfor_life_repair (sibling)`, `PostgreSQL 16+ via Drizzle ORM + Zod`, `Argon2id sessions (@node-rs/argon2 + @oslojs/crypto)`, `Sharp image thumbnails` (+37 more) These have ≤1 connection - possible missing edges or undocumented components. - **Thin community `Field Types`** (2 nodes): `needsEnumValues()`, `field-types.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Form Helper`** (2 nodes): `emptyToNull()`, `+page.server.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Env Config`** (2 nodes): `.env configuration`, `env.ts (Zod-validated process.env)` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Seed Script`** (2 nodes): `npm run create-user script`, `src/lib/server/db/schema/` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Asset Location Design`** (2 nodes): `Decision: asset_location_history (movable assets)`, `Decision: XOR asset location (project XOR property)` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Decision Design`** (2 nodes): `Decision: decisions scoped to project/property/asset/work_package`, `Phase 3: Projects + structured decisions` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Drizzle Config`** (1 nodes): `drizzle.config.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 30`** (1 nodes): `svelte.config.js` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 31`** (1 nodes): `vite.config.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 32`** (1 nodes): `app.d.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 33`** (1 nodes): `accounts.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 34`** (1 nodes): `notifications.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 35`** (1 nodes): `roles.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 36`** (1 nodes): `CustomFieldsForm.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 37`** (1 nodes): `Sidebar.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 38`** (1 nodes): `TabNav.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 39`** (1 nodes): `ThemeToggle.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 40`** (1 nodes): `TopBar.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 41`** (1 nodes): `env.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 42`** (1 nodes): `types.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 43`** (1 nodes): `client.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 44`** (1 nodes): `accounts.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 45`** (1 nodes): `assets.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 46`** (1 nodes): `checklists.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 47`** (1 nodes): `decisions.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 48`** (1 nodes): `documents.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 49`** (1 nodes): `index.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 50`** (1 nodes): `maintenance.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 51`** (1 nodes): `notifications.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 52`** (1 nodes): `projects.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 53`** (1 nodes): `properties.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 54`** (1 nodes): `rooms.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 55`** (1 nodes): `tenancy.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 56`** (1 nodes): `wiki.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 57`** (1 nodes): `+error.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 58`** (1 nodes): `+layout.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 59`** (1 nodes): `+layout.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 60`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 61`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 62`** (1 nodes): `+page.server.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 63`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 64`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 65`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 66`** (1 nodes): `+page.server.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 67`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 68`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 69`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 70`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 71`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 72`** (1 nodes): `+layout.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 73`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 74`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 75`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 76`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 77`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 78`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 79`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 80`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 81`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 82`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 83`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 84`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 85`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 86`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 87`** (1 nodes): `+layout.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 88`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 89`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 90`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 91`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 92`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 93`** (1 nodes): `+page.server.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 94`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 95`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 96`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 97`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 98`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 99`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 100`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 101`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 102`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 103`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 104`** (1 nodes): `+layout.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 105`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 106`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 107`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 108`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 109`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 110`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 111`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 112`** (1 nodes): `+page.server.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 113`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 114`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 115`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 116`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 117`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 118`** (1 nodes): `+layout.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 119`** (1 nodes): `+page.svelte` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 120`** (1 nodes): `npm run db:seed` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 121`** (1 nodes): `npm run validate (check + build)` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 122`** (1 nodes): `(auth) route group (login shell)` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 123`** (1 nodes): `Phase 0: scaffold (shipped)` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 124`** (1 nodes): `Phase 2: Checklists + maintenance` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 125`** (1 nodes): `Decision: UUID v7 primary keys` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 126`** (1 nodes): `Decision: timestamptz UTC everywhere` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 127`** (1 nodes): `Decision: soft delete (deleted_at)` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 128`** (1 nodes): `Decision: numeric(18,4) + char(3) currency` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 129`** (1 nodes): `Decision: company default currency in settings_json` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Cluster 130`** (1 nodes): `Decision: tabs = nested routes (not query-string)` 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 `load()` connect `Auth & Load Helpers` to `Documents Service`, `Assets Service & CSV`, `Email & Markdown`, `Property Accounts`, `Projects Service`, `Asset Core`, `Maintenance Core`, `Checklists`, `Rooms & Floors`, `Tasks`, `User Management`, `Work Packages`, `Companies Service`, `Form Utilities`?** _High betweenness centrality (0.298) - this node is a cross-community bridge._ - **Why does `GET()` connect `Assets Service & CSV` to `Auth & Load Helpers`, `Documents Service`, `Property Accounts`, `Asset Core`, `Maintenance Core`?** _High betweenness centrality (0.120) - this node is a cross-community bridge._ - **Why does `listCompanyUsers()` connect `User Management` to `Auth & Load Helpers`?** _High betweenness centrality (0.040) - this node is a cross-community bridge._ - **Are the 34 inferred relationships involving `load()` (e.g. with `countOverdueForCompany()` and `listDueAndOverdue()`) actually correct?** _`load()` has 34 INFERRED edges - model-reasoned connections that need verification._ - **Are the 13 inferred relationships involving `GET()` (e.g. with `syncFieldDefs()` and `handle()`) actually correct?** _`GET()` has 13 INFERRED edges - model-reasoned connections that need verification._ - **Are the 5 inferred relationships involving `load()` (e.g. with `setActiveCompany()` and `unreadCountForUser()`) actually correct?** _`load()` has 5 INFERRED edges - model-reasoned connections that need verification._ - **What connects `buildfor_life_budget (sibling)`, `buildfor_life_repair (sibling)`, `PostgreSQL 16+ via Drizzle ORM + Zod` to the rest of the system?** _42 weakly-connected nodes found - possible documentation gaps or missing edges._