b59904fdae
Data model - Properties, rooms (+optional floors), assets (typed custom fields + Zod runtime validator + move history), documents (polymorphic scope) - Projects -> work packages -> tasks -> subtasks - Decision events (scoped to project/property/asset/work_package) - Checklist templates + instances, maintenance schedules (time + usage) with auto-materialized checklists on event recording - Wiki (global + per-project) with revisions + tsvector FTS - Property accounts (utility/meter numbers by kind) - Notifications table + per-user channel prefs Infra - RBAC guards (requireCompany / requireAdmin) - Storage abstraction: LocalDiskStorage (HMAC signed URLs) + S3Storage behind the same interface, switchable via STORAGE_BACKEND - CSV export for assets / maintenance / decisions - QR labels: /api/qr SVG endpoint + printable /assets/[id]/label - Notifications: in-app + SMTP (own server via nodemailer) + Matrix (Client-Server API, per-company room) with opt-in per user - Company switcher + auto-select first company on login UI - Topbar: bell with unread count, theme toggle, name, Sign Out (flat) - Sidebar: main nav + dedicated Admin section (Asset types, Users, Company) - Nested-route tabs on property / project / asset detail pages - Admin UIs for users (invite, role, reset pw, deactivate) and company settings (default currency, Matrix room id) - Custom asset type creation + field-def editor with immutable key/type guard and auto-deprecate when removing a field still referenced Graph - graphify-out/ committed: GRAPH_REPORT.md, graph.html, graph.json
936 lines
38 KiB
Markdown
936 lines
38 KiB
Markdown
# 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._ |