Files
grabowski 011e7a2165
Deploy to LXC / deploy (push) Successful in 15s
Validate / validate (push) Successful in 30s
chore(graph): refresh graphify after sub-property feature
Re-extracted 42 changed code files via AST and 3 changed docs
(README, DEPLOYMENT, drizzle/README) via one semantic subagent.
Merged into the existing graph: 453→555 nodes, 486→633 edges,
137 communities.

Top god nodes now reflect the new shape: load() at the center of
every page-server route, buildfor_life_ops as the doc-side anchor,
and Drizzle ORM + Zod as the bridge between expenses and the rest
of the service layer.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-27 15:47:00 +07:00

40 KiB

Graph Report - . (2026-04-27)

Corpus Check

  • 47 files · ~0 words
  • Verdict: corpus is large enough that graph structure adds value.

Summary

  • 555 nodes · 633 edges · 137 communities detected
  • Extraction: 83% EXTRACTED · 17% INFERRED · 0% AMBIGUOUS · INFERRED: 109 edges (avg confidence: 0.8)
  • Token cost: 0 input · 0 output

Community Hubs (Navigation)

God Nodes (most connected - your core abstractions)

  1. load() - 95 edges
  2. buildfor_life_ops - 26 edges
  3. GET() - 23 edges
  4. Drizzle ORM + Zod - 14 edges
  5. LocalDiskStorage - 10 edges
  6. load() - 9 edges
  7. S3Storage - 8 edges
  8. buildfor_life_ops - 8 edges
  9. Drizzle migrations (drizzle/) - 8 edges
  10. fanOutExternal() - 7 edges

Surprising Connections (you probably didn't know these)

  • load() --calls--> renderMarkdown() [INFERRED] src\routes(app)\properties[id]\todos+page.server.ts → src\lib\server\markdown.ts
  • load() --calls--> listTemplates() [INFERRED] src\routes(app)\properties[id]\todos+page.server.ts → src\lib\server\services\checklists.ts
  • load() --calls--> getCompany() [INFERRED] src\routes(app)\properties[id]\todos+page.server.ts → src\lib\server\services\companies.ts
  • load() --calls--> listDocumentsForScope() [INFERRED] src\routes(app)\properties[id]\todos+page.server.ts → src\lib\server\services\documents.ts
  • load() --calls--> countOverdueForCompany() [INFERRED] src\routes(app)\properties[id]\todos+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 - "Page Server Loaders"

Cohesion: 0.04 Nodes (15): requireAdmin(), requireCompany(), e2n(), flattenTree(), load(), parseRange(), parseSettings(), getPageWithCurrentRevision() (+7 more)

Community 1 - "Stack & Deployment Concepts"

Cohesion: 0.04 Nodes (59): Argon2id sessions (@node-rs/argon2), asset_location_history (movable assets), XOR location: asset at project OR property (CHECK), Blob storage snapshot/rsync backup, 10M upload size cap (BODY_SIZE_LIMIT + client_max_body_size), buildfor_life_budget (sibling), buildfor_life_ops, buildfor_life_repair (sibling) (+51 more)

Community 2 - "Documents & Storage Adapters"

Cohesion: 0.07 Nodes (13): assertScope(), deleteDocument(), getDocument(), listDocumentsForScope(), signedUrlForDocument(), uploadDocument(), getStorage(), LocalDiskStorage (+5 more)

Community 3 - "Auth Sessions & Catalog"

Cohesion: 0.1 Nodes (20): assertProperty(), createAccount(), deleteAccount(), listAccounts(), addFieldDef(), createCompanyAssetType(), deleteCompanyAssetType(), loadEditableType() (+12 more)

Community 4 - "CSV & API Endpoints"

Cohesion: 0.11 Nodes (12): csvResponse(), toCsv(), gatherCustomFieldsFromForm(), createDecision(), decisionScopeLink(), listDecisionsForScope(), clamp(), GET() (+4 more)

Community 5 - "Expenses Service"

Cohesion: 0.12 Nodes (13): Drizzle ORM + Zod, assertAccountInProperty(), assertProperty(), createExpense(), importExpenses(), listExpensesForProperties(), listExpensesForProperty(), monthlySeriesForProperties() (+5 more)

Community 6 - "Email & Markdown Rendering"

Cohesion: 0.13 Nodes (15): getTransport(), isEmailConfigured(), sendEmail(), escapeHtml(), html(), renderMarkdown(), buildBodies(), isMatrixConfigured() (+7 more)

Community 7 - "Projects Service"

Cohesion: 0.11 Nodes (13): load(), unreadCountForUser(), getProject(), listProjects(), assertNoCycle(), assertParentInCompany(), createProperty(), getAncestorIds() (+5 more)

Community 8 - "Bootstrap Scripts"

Cohesion: 0.15 Nodes (17): main(), readArg(), slugify(), stripSurroundingQuotes(), main(), readArg(), stripSurroundingQuotes(), normalizeEmail() (+9 more)

Community 9 - "Maintenance Schedules"

Cohesion: 0.18 Nodes (15): addInterval(), assertAsset(), countOverdueForCompany(), createSchedule(), deleteSchedule(), getSchedule(), listDueAndOverdue(), listEventsForAsset() (+7 more)

Community 10 - "Assets Service"

Cohesion: 0.2 Nodes (11): assertContainer(), createAsset(), listAssets(), loadTypeWithFields(), moveAsset(), updateAsset(), validateCustomFields(), buildCustomFieldsSchema() (+3 more)

Community 11 - "App Shell & Bootstrap"

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 12 - "Checklists Service"

Cohesion: 0.19 Nodes (7): addTemplateItem(), getInstance(), getTemplate(), listInstancesForProperties(), listTemplates(), removeTemplateItem(), setItemDone()

Community 13 - "Rooms & Floors Service"

Cohesion: 0.29 Nodes (9): assertProperty(), createFloor(), createRoom(), deleteFloor(), getRoom(), listFloors(), listRoomsWithCounts(), softDeleteRoom() (+1 more)

Community 14 - "Tasks & Subtasks"

Cohesion: 0.36 Nodes (9): addSubtask(), assertWorkPackage(), createTask(), getTaskWithSubtasks(), listTasksForWorkPackage(), removeSubtask(), softDeleteTask(), toggleSubtask() (+1 more)

Community 15 - "Work Packages"

Cohesion: 0.48 Nodes (6): assertProject(), createWorkPackage(), getWorkPackage(), listWorkPackagesForProject(), softDeleteWorkPackage(), updateWorkPackage()

Community 16 - "Signed URL 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 17 - "Drizzle Migration Conventions"

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 18 - "Auth Model"

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 19 - "Companies Service"

Cohesion: 0.6 Nodes (4): createCompanyWithAdmin(), getCompany(), slugify(), updateCompany()

Community 20 - "JSONB Custom Fields Policy"

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 21 - "Cluster 21"

Cohesion: 1.0 Nodes (2): parseCsv(), parseCsvDict()

Community 22 - "Cluster 22"

Cohesion: 1.0 Nodes (0):

Community 23 - "Cluster 23"

Cohesion: 1.0 Nodes (2): .env configuration, env.ts (Zod-validated process.env)

Community 24 - "Cluster 24"

Cohesion: 1.0 Nodes (2): npm run create-user script, src/lib/server/db/schema/

Community 25 - "Cluster 25"

Cohesion: 1.0 Nodes (2): Decision: decisions scoped to project/property/asset/work_package, Phase 3: Projects + structured decisions

Community 26 - "Cluster 26"

Cohesion: 1.0 Nodes (2): Decision: asset_location_history (movable assets), Decision: XOR asset location (project XOR property)

Community 27 - "Cluster 27"

Cohesion: 1.0 Nodes (0):

Community 28 - "Cluster 28"

Cohesion: 1.0 Nodes (0):

Community 29 - "Cluster 29"

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 (1): npm run db:seed

Community 119 - "Cluster 119"

Cohesion: 1.0 Nodes (1): npm run validate (check + build)

Community 120 - "Cluster 120"

Cohesion: 1.0 Nodes (1): (auth) route group (login shell)

Community 121 - "Cluster 121"

Cohesion: 1.0 Nodes (1): Phase 0: scaffold (shipped)

Community 122 - "Cluster 122"

Cohesion: 1.0 Nodes (1): Phase 2: Checklists + maintenance

Community 123 - "Cluster 123"

Cohesion: 1.0 Nodes (1): Decision: UUID v7 primary keys

Community 124 - "Cluster 124"

Cohesion: 1.0 Nodes (1): Decision: timestamptz UTC everywhere

Community 125 - "Cluster 125"

Cohesion: 1.0 Nodes (1): Decision: soft delete (deleted_at)

Community 126 - "Cluster 126"

Cohesion: 1.0 Nodes (1): Decision: numeric(18,4) + char(3) currency

Community 127 - "Cluster 127"

Cohesion: 1.0 Nodes (1): Decision: company default currency in settings_json

Community 128 - "Cluster 128"

Cohesion: 1.0 Nodes (1): Decision: tabs = nested routes (not query-string)

Community 129 - "Cluster 129"

Cohesion: 1.0 Nodes (0):

Community 130 - "Cluster 130"

Cohesion: 1.0 Nodes (0):

Community 131 - "Cluster 131"

Cohesion: 1.0 Nodes (0):

Community 132 - "Cluster 132"

Cohesion: 1.0 Nodes (0):

Community 133 - "Cluster 133"

Cohesion: 1.0 Nodes (0):

Community 134 - "Cluster 134"

Cohesion: 1.0 Nodes (0):

Community 135 - "Cluster 135"

Cohesion: 1.0 Nodes (0):

Community 136 - "Cluster 136"

Cohesion: 1.0 Nodes (0):

Knowledge Gaps

  • 73 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 (+68 more) These have ≤1 connection - possible missing edges or undocumented components.
  • Thin community Cluster 22 (2 nodes): needsEnumValues(), field-types.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 23 (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 Cluster 24 (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 Cluster 25 (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 Cluster 26 (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 Cluster 27 (1 nodes): drizzle.config.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 28 (1 nodes): svelte.config.js Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 29 (1 nodes): vite.config.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 30 (1 nodes): app.d.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 31 (1 nodes): accounts.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 32 (1 nodes): notifications.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 33 (1 nodes): roles.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 34 (1 nodes): CustomFieldsForm.svelte Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 35 (1 nodes): Sidebar.svelte Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 36 (1 nodes): TabNav.svelte Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 37 (1 nodes): ThemeToggle.svelte Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 38 (1 nodes): TopBar.svelte Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 39 (1 nodes): env.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 40 (1 nodes): types.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 41 (1 nodes): client.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 42 (1 nodes): accounts.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 43 (1 nodes): assets.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 44 (1 nodes): checklists.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 45 (1 nodes): decisions.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 46 (1 nodes): documents.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 47 (1 nodes): index.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 48 (1 nodes): maintenance.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 49 (1 nodes): notifications.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 50 (1 nodes): projects.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 51 (1 nodes): properties.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 52 (1 nodes): rooms.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 53 (1 nodes): tenancy.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 54 (1 nodes): wiki.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 55 (1 nodes): +error.svelte Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 56 (1 nodes): +layout.svelte Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 57 (1 nodes): +layout.svelte Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 58 (1 nodes): +page.svelte Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 59 (1 nodes): +page.svelte Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 60 (1 nodes): +page.server.ts 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.svelte 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.server.ts 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.svelte 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): +layout.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): +page.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): +layout.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): +page.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.server.ts 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.svelte 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): +layout.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): +page.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.server.ts 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.svelte 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): +layout.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): npm run db:seed Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 119 (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 120 (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 121 (1 nodes): Phase 0: scaffold (shipped) Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 122 (1 nodes): Phase 2: Checklists + maintenance Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 123 (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 124 (1 nodes): Decision: timestamptz UTC everywhere Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 125 (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 126 (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 127 (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 128 (1 nodes): Decision: tabs = nested routes (not query-string) Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 129 (1 nodes): expenses.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 130 (1 nodes): ExpenseChart.svelte Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 131 (1 nodes): expenses.ts Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 132 (1 nodes): +page.svelte Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 133 (1 nodes): +page.svelte Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 134 (1 nodes): +page.svelte Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 135 (1 nodes): +page.svelte Too small to be a meaningful cluster - may be noise or needs more connections extracted.
  • Thin community Cluster 136 (1 nodes): +page.svelte 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 Page Server Loaders to Documents & Storage Adapters, Auth Sessions & Catalog, CSV & API Endpoints, Expenses Service, Email & Markdown Rendering, Projects Service, Bootstrap Scripts, Maintenance Schedules, Assets Service, Checklists Service, Rooms & Floors Service, Tasks & Subtasks, Work Packages, Companies Service? High betweenness centrality (0.308) - this node is a cross-community bridge.
  • Why does Drizzle ORM + Zod connect Expenses Service to Page Server Loaders, Stack & Deployment Concepts, Projects Service, Bootstrap Scripts, Maintenance Schedules, Assets Service, Checklists Service? High betweenness centrality (0.173) - this node is a cross-community bridge.
  • Why does buildfor_life_ops connect Stack & Deployment Concepts to Expenses Service? High betweenness centrality (0.137) - this node is a cross-community bridge.
  • Are the 41 inferred relationships involving load() (e.g. with renderMarkdown() and requireCompany()) actually correct? load() has 41 INFERRED edges - model-reasoned connections that need verification.
  • Are the 15 inferred relationships involving GET() (e.g. with syncFieldDefs() and handle()) actually correct? GET() has 15 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? 73 weakly-connected nodes found - possible documentation gaps or missing edges.
  • Should Page Server Loaders be split into smaller, more focused modules? Cohesion score 0.04 - nodes in this community are weakly interconnected.