- Updated the Celery worker command in docker-compose.yml to remove unnecessary flags for improved performance. - Modified the frontend Dockerfile to use pnpm instead of corepack for package management and included pnpm-workspace.yaml in the build context. - Adjusted the Dockerfile to correctly copy the nginx configuration from the build stage. - Added network and build arguments for HTTP proxies in the docker-compose.yml for better network handling.
15 KiB
Graph Report - finance (2026-09-14)
Corpus Check
- 147 files · ~51,467 words
- Verdict: corpus is large enough that graph structure adds value.
Summary
- 1078 nodes · 3099 edges · 62 communities (42 shown, 14 thin omitted)
- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 50 edges (avg confidence: 0.93)
- Token cost: 0 input · 0 output
Community Hubs (Navigation)
- Identity and Configuration
- Budget Domain Services
- Database Models
- Database Context and Exports
- Statement Import Services
- Parser Adapters
- Ledger Services
- API Domain Types
- Authentication UI
- Ledger API
- Import Review UI
- TypeScript Configuration
- Analytics UI
- API and Analytics
- Frontend Development Dependencies
- Accounts UI
- Frontend Runtime Dependencies
- Import Detail Mutations
- Operations UI
- Query Keys and Operations
- Frontend Bootstrap
- Frontend Test Support
- Budget UI
- HTTP API Client
- Form Fields
- Infrastructure and CI
- Core Finance Domain
- Frontend Scripts
- Settings and Data Lifecycle
- Budget Allocation Model
- MVP and Import Design
- Data Security and Recovery
- Ledger Concepts
- Parser Versioning
- Frontend Architecture
- Beta Release Governance
- Package Metadata
- Tenant Isolation
- Deletion and Restore
- API Generation Script
- OpenAPI Schema
- API Integration Tests
- Localization Tests
- Income Classification
- Accessibility ESLint
- JavaScript Globals
- JSDOM Dependency
- React Type Definitions
- React DOM Types
- TypeScript ESLint
- Vite React Plugin
- Vitest Dependency
- Favicon Design
- Database Role Initialization
- Payee Concept
- Backend Package Metadata
God Nodes (most connected - your core abstractions)
Session- 111 edgesBase- 46 edgesAppError- 41 edgesget_settings()- 38 edgesPkMixin- 38 edgesTimestampMixin- 37 edgesconflict()- 34 edgesrecord()- 32 edgesbad_request()- 27 edgesnot_found()- 26 edges
Surprising Connections (you probably didn't know these)
Versioned Statement Imports--conceptually_related_to-->Statement Import[INFERRED] docs/adr/0003-versioned-statement-imports.md → CONTEXT.mdMVP Release Gates--conceptually_related_to-->Closed Beta Launch Gates[INFERRED] .kilo/plans/1789034192214-financial-tracker-mvp.md → docs/operations/beta-release-runbook.mdFinancial Space Ownership--conceptually_related_to-->Financial Space[INFERRED] docs/adr/0001-financial-space-ownership-and-rls.md → CONTEXT.mdTyped Same-Origin API Client--conceptually_related_to-->Same-Origin Reverse Proxy[INFERRED] frontend/README.md → infra/README.mdCompose and Nginx Validation--references-->Docker Compose Development Stack[EXTRACTED] .github/workflows/ci.yml → infra/docker-compose.yml
Import Cycles
- None detected.
Hyperedges (group relationships)
- Financial Space Tenancy Boundary — context_financial_space, context_membership, docs_adr_0001_financial_space_ownership_and_rls_defense_in_depth_authorization, docs_adr_0001_financial_space_ownership_and_rls_transaction_local_rls, docs_adr_0001_financial_space_ownership_and_rls_cross_space_integrity [EXTRACTED 1.00]
- Auditable Financial Model — context_operation, context_posting, docs_adr_0002_journal_and_budget_reserves_derived_balances, docs_adr_0002_journal_and_budget_reserves_plan_funding_separation, docs_adr_0002_journal_and_budget_reserves_closure_snapshots [EXTRACTED 1.00]
- Safe Statement Import Flow — context_statement_import, context_parse_run, context_source_record, docs_adr_0003_versioned_statement_imports_immutable_statement_document, docs_adr_0003_versioned_statement_imports_conservative_deduplication, docs_adr_0003_versioned_statement_imports_atomic_confirm_revert [EXTRACTED 1.00]
Communities (62 total, 14 thin omitted)
Community 0 - "Identity and Configuration"
Cohesion: 0.05 Nodes (87): get_settings(), Settings, current_context(), current_session(), alias, Context, CurrentSession, Db (+79 more)
Community 1 - "Budget Domain Services"
Cohesion: 0.09 Nodes (84): balances(), cash_flow(), category_spend(), plan_fact(), date, UUID, BudgetPeriod, Calendar month budget period in the space timezone (month granularity). (+76 more)
Community 2 - "Database Models"
Cohesion: 0.08 Nodes (64): downgrade(), upgrade(), AuditEvent, Append-only domain/security event. Never stores raw financial payloads., ExpectedIncome, ExpectedIncomeMatch, FundingMovement, PeriodClosure (+56 more)
Community 3 - "Database Context and Exports"
Cohesion: 0.06 Nodes (46): get_db(), get_session_factory(), Any, sessionmaker, Transaction-local RLS context. No-op on SQLite (tests); fail-closed on…, Transactional scope for workers/endpoints that own the transaction lifecycle., session_scope(), set_space_context() (+38 more)
Community 4 - "Statement Import Services"
Cohesion: 0.10 Nodes (55): detect_adapter(), magic_kind(), new_object_key(), decrypt_file(), encrypt_file(), EncryptedFile, Per-file random DEK; DEK wrapped with the KEK from the secret manager., Crypto-shred hook: deleting wrapped DEK rows in DB plus blobs removes access. (+47 more)
Community 5 - "Parser Adapters"
Cohesion: 0.08 Nodes (42): AppError, Any, Domain error rendered as a machine-readable JSON error payload., unprocessable(), AlfaCreditXlsxAdapter, AlfaDebitXlsxAdapter, AlfaXlsxAdapterBase, _cell_str() (+34 more)
Community 6 - "Ledger Services"
Cohesion: 0.14 Nodes (48): Any, record(), get_income_source(), conflict(), not_found(), confirm_document(), Operation, Posting (+40 more)
Community 7 - "API Domain Types"
Cohesion: 0.07 Nodes (39): AccountStatus, BalanceItem, BalancesReport, BudgetBlocker, BudgetCategory, BudgetStatus, BudgetSummary, BudgetWarning (+31 more)
Community 8 - "Authentication UI"
Cohesion: 0.10 Nodes (33): AcceptInvitePayload, LoginPayload, PasswordResetPayload, AcceptInvitePage, AccountsPage, BudgetPage, LoginPage, OperationsPage (+25 more)
Community 9 - "Ledger API"
Cohesion: 0.15 Nodes (31): account_json(), AccountBody, accounts(), archive_account(), create_account(), create_operation(), delete_account(), operation_json() (+23 more)
Community 10 - "Import Review UI"
Cohesion: 0.11 Nodes (21): Operation, ImportsPage, NotFoundPage, ReviewQueuePage, Badge(), BadgeTone, EmptyState(), EmptyStateProps (+13 more)
Community 11 - "TypeScript Configuration"
Cohesion: 0.07 Nodes (28): compilerOptions, baseUrl, esModuleInterop, forceConsistentCasingInFileNames, isolatedModules, jsx, lib, module (+20 more)
Community 12 - "Analytics UI"
Cohesion: 0.12 Nodes (19): AnalyticsPage, CashFlowColumn, ColumnChart(), ColumnChartProps, BarRow, HorizontalBars(), HorizontalBarsProps, PlanFactBars() (+11 more)
Community 13 - "API and Analytics"
Cohesion: 0.14 Nodes (22): balances(), cash_flow(), category_spend(), plan_fact(), Context, date, Db, get (+14 more)
Community 14 - "Frontend Development Dependencies"
Cohesion: 0.10 Nodes (21): eslint, @eslint/js, eslint-plugin-react-hooks, devDependencies, eslint, @eslint/js, eslint-plugin-react-hooks, openapi-typescript (+13 more)
Community 15 - "Accounts UI"
Cohesion: 0.16 Nodes (15): Account, AccountType, ConfirmDialog(), ConfirmDialogProps, Modal(), ModalProps, useAccounts(), useArchiveAccount() (+7 more)
Community 16 - "Frontend Runtime Dependencies"
Cohesion: 0.11 Nodes (19): dependencies, @hookform/resolvers, i18next, react, react-dom, react-hook-form, react-i18next, react-router-dom (+11 more)
Community 17 - "Import Detail Mutations"
Cohesion: 0.27 Nodes (15): RowDecision, ImportDetailPage, useToast(), useConfirmImport(), useImport(), useImportErrorToaster(), useReparseImport(), useRevertImport() (+7 more)
Community 18 - "Operations UI"
Cohesion: 0.27 Nodes (14): useActiveAccounts(), useCreateOperation(), useLedgerMutation(), useOperations(), useVoidOperation(), amountField(), dateField(), ExpenseForm() (+6 more)
Community 19 - "Query Keys and Operations"
Cohesion: 0.22 Nodes (10): api, invalidationRoots, queryKeys, SESSION_ROOT, sessionInvalidationRoot, SPACE_ROOT, spaceInvalidationRoot, OperationFilters (+2 more)
Community 20 - "Frontend Bootstrap"
Cohesion: 0.17 Nodes (10): Locale, App(), queryClient, AppRoutes(), createI18n(), detectLocale(), i18n, LOCALES (+2 more)
Community 21 - "Frontend Test Support"
Cohesion: 0.17 Nodes (12): User, ToastApi, ToastContext, ToastItem, ToastKind, ToastProvider(), createTestQueryClient(), renderWithProviders() (+4 more)
Community 22 - "Budget UI"
Cohesion: 0.36 Nodes (12): useBudgetCategories(), useBudgetErrorToaster(), useBudgetSummary(), useCloseMonth(), useCopyPreviousMonth(), useFundCategory(), usePeriodMutation(), useReopenMonth() (+4 more)
Community 23 - "HTTP API Client"
Cohesion: 0.23 Nodes (10): apiClient, ApiError, buildUrl(), ErrorEnvelope, parseErrorEnvelope(), QueryValue, readCsrfToken(), request() (+2 more)
Community 24 - "Form Fields"
Cohesion: 0.23 Nodes (10): FieldChrome, InputProps, MoneyField(), MoneyFieldProps, SelectFieldProps, SelectProps, TextareaField(), TextareaFieldProps (+2 more)
Community 25 - "Infrastructure and CI"
Cohesion: 0.18 Nodes (12): Backend Quality Gate, CI Pipeline, Compose and Nginx Validation, Frontend Quality Gate, Commodity Infrastructure Services, Docker Compose Development Stack, Internal Backend Network, Same-Origin Frontend Service (+4 more)
Community 26 - "Core Finance Domain"
Cohesion: 0.22 Nodes (9): Credit Reserve, Financial Account, Financial Space, Membership, User, Carry-Over Budget Reserves, Closed Beta Zero-Based Budgeting, Finance Tracker (+1 more)
Community 27 - "Frontend Scripts"
Cohesion: 0.22 Nodes (9): scripts, api:generate, build, dev, lint, preview, test, test:watch (+1 more)
Community 28 - "Settings and Data Lifecycle"
Cohesion: 0.44 Nodes (7): useCancelDeletion(), useRequestDeletion(), useRequestExport(), useSpaceDeletion(), DeletionForm(), DeletionFormValues, SettingsPage()
Community 29 - "Budget Allocation Model"
Cohesion: 0.29 Nodes (8): Budget Period, Funding, General Pool, Monthly Category, Plan Assignment, Savings Envelope, Immutable Closure Snapshots, Plan and Funding Separation
Community 30 - "MVP and Import Design"
Cohesion: 0.25 Nodes (8): Atomic Import Confirm and Revert, Conservative Deduplication, Versioned Statement Imports, Budget Invariants, Critical User Path, Financial Tracker MVP, Statement Import Pipeline, Modular Monolith
Community 31 - "Data Security and Recovery"
Cohesion: 0.25 Nodes (8): Immutable Statement Document, Per-File Envelope Encryption, Provider-Neutral Data Boundary, Russian Federation Data Residency, Backup and Restore Runbook, Mandatory KEK Backup, Quarterly Restore Drill, Provider-Neutral Infrastructure
Community 32 - "Ledger Concepts"
Cohesion: 0.38 Nodes (7): Internal Transfer, Operation, Posting, Refund, Derived Account Balances, Operations and Postings Journal, Ledger Invariants
Community 33 - "Parser Versioning"
Cohesion: 0.33 Nodes (7): Parse Run, Source Record, Statement Import, Parser Versioning and Review Diff, Layout Drift Re-Gating, Parser Private Fixture Gate, Private Statement Test Contract
Community 34 - "Frontend Architecture"
Cohesion: 0.29 Nodes (7): Server-Side Secret Boundary, Grossbukh Application Shell, Accessible Responsive UI, Finance Frontend SPA, RU and EN Localization, Space-Scoped Query Keys, Typed Same-Origin API Client
Community 35 - "Beta Release Governance"
Cohesion: 0.29 Nodes (7): Closed Beta Release Runbook, Forward-Fix Rollback Policy, Financial Data Incident Response, Closed Beta Launch Gates, Production Launch Sequence, Adapter Beta Eligibility, MVP Release Gates
Community 36 - "Package Metadata"
Cohesion: 0.29 Nodes (6): allowScripts, esbuild@0.25.12, name, private, type, version
Community 37 - "Tenant Isolation"
Cohesion: 0.33 Nodes (6): Audited Break-Glass Access, Cross-Space Referential Integrity, Defense-in-Depth Authorization, Financial Space Ownership, Transaction-Local RLS Context, Tenant Boundary
Community 38 - "Deletion and Restore"
Cohesion: 0.40 Nodes (6): Crypto-Shredded Deletion, Disaster Restore Procedure, Thirty-Day Space Deletion, Durable Deletion Ledger, Idempotent Resumable Purge, Post-Restore Deletion Replay
Community 39 - "API Generation Script"
Cohesion: 0.40 Nodes (5): firstReadable(), LOCAL_CANDIDATES, main(), OUT_DIR, REMOTE_CANDIDATES
Community 40 - "OpenAPI Schema"
Cohesion: 0.33 Nodes (5): components, $defs, operations, paths, webhooks
Community 41 - "API Integration Tests"
Cohesion: 0.67 Nodes (3): TestClient, test_invite_login_and_authenticated_space(), test_openapi_contains_critical_paths()
Knowledge Gaps
- 176 isolated node(s):
finance-backend,name,private,version,type(+171 more) These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 296 node(s) total have ≤1 connection when file, concept and rationale nodes are included.) - 14 thin communities (<3 nodes) omitted from report — run
graphify queryto explore isolated nodes.
Suggested Questions
Questions this graph is uniquely positioned to answer:
- Why does
SessionconnectBudget Domain ServicestoIdentity and Configuration,Database Models,Database Context and Exports,Statement Import Services,Ledger Services? High betweenness centrality (0.072) - this node is a cross-community bridge. - Why does
AppErrorconnectParser AdapterstoIdentity and Configuration,Budget Domain Services,Database Models,Database Context and Exports,Statement Import Services,Ledger Services,API and Analytics? High betweenness centrality (0.035) - this node is a cross-community bridge. - Why does
get_settings()connectIdentity and ConfigurationtoDatabase Models,Database Context and Exports,Statement Import Services,Parser Adapters,API and Analytics? High betweenness centrality (0.024) - this node is a cross-community bridge. - Are the 2 inferred relationships involving
Session(e.g. withUTCDateTimeandtest_postgres_rls_requires_matching_transaction_context()) actually correct?Sessionhas 2 INFERRED edges - model-reasoned connections that need verification. - Are the 3 inferred relationships involving
Base(e.g. withdowngrade()andupgrade()) actually correct?Basehas 3 INFERRED edges - model-reasoned connections that need verification. - Are the 13 inferred relationships involving
AppError(e.g. withrequest_export()andlogin()) actually correct?AppErrorhas 13 INFERRED edges - model-reasoned connections that need verification. - What connects
finance-backend,name,privateto the rest of the system? 176 weakly-connected nodes found - possible documentation gaps or missing edges.