{"compile":[{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"admin_debts_tools.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"array_helpers.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"auth.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"counterparty_aggregate_helpers.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"counterparty_due_rollups.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"counterparty_insights.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"counterparty_rollups.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"dashboard_db_aggregates.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"dashboard_db_counterparty_summary.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"dashboard_db_helpers.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"dashboard_db_stats.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"dashboard_rollups_helpers.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"deprecation: db.selectMany without cursor is discouraged for production list endpoints","path":"dashboard_snapshot.tru","line":308,"column":null,"text":null,"code":"W-DB-3"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"dashboard_snapshot.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"dashboard_snapshot_api.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"dashboard_snapshot_cache.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"dashboard_snapshot_insights.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"data_io.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debt_attachments.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debt_filters.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debt_issues.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debt_maintenance_state.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debt_owner_rows.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debt_payment_plan_sync.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debt_payment_plans.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debt_payment_plans_helpers.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debt_payments.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debt_tasks.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debt_users.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_actions.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_actions_bulk.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_actions_delete.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_actions_invite.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_actions_requests.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_actions_update.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_helpers.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_helpers_counterparty.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_helpers_debt.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"deprecation: db.selectMany without cursor is discouraged for production list endpoints","path":"debts_helpers_debt_paging.tru","line":83,"column":null,"text":null,"code":"W-DB-3"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_helpers_debt_paging.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_helpers_schedule.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_helpers_updates.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"deprecation: db.selectMany without cursor is discouraged for production list endpoints","path":"debts_overdue_aging.tru","line":145,"column":null,"text":null,"code":"W-DB-3"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_overdue_aging.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_reports.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_reports_calendar.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_reports_calendar_helpers.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_reports_counterparty.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_reports_due.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_reports_priority_cashflow.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_reports_sorting.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"debts_seed_fast.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"deprecation: db.selectMany without cursor is discouraged for production list endpoints","path":"due_calendar_rollups.tru","line":117,"column":null,"text":null,"code":"W-DB-3"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"due_calendar_rollups.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"email.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"followup_rollups.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"fx_rates.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"fx_read_helpers.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"heavy_read_caches.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"indexes.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"insights_helpers.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"messages.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"messages_reminders.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"missing_due_rollups.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"plan_rollups.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"plan_rollups_batch.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"plan_rollups_refresh.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"deprecation: db.selectMany without cursor is discouraged for production list endpoints","path":"plan_stats.tru","line":68,"column":null,"text":null,"code":"W-DB-3"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"plan_stats.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"plan_stats_db.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"deprecation: db.selectMany without cursor is discouraged for production list endpoints","path":"plan_stats_filtered.tru","line":28,"column":null,"text":null,"code":"W-DB-3"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"plan_stats_filtered.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"reminder_rules.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"rollup_summary.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"schema.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"session_cache.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"settings.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"spotlight_rollups.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"startup_load_shedding.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"stats.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"stats_api.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"stats_cache_validation.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"stats_counts_cache.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"stats_db_raw.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"stats_fast_rollup.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"stats_merge.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"stats_owner_rows.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"stats_simulation.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"stats_simulation_filtered.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"strict_db_helpers.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"translations.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"translations_extra.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"user_labels_helpers.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"user_relationships.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"user_relationships_api.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"user_relationships_requests.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"users.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"},{"level":"warning","message":"upgrade-check: spec is pinned to version 0.3; validate compatibility before moving to future language versions","path":"users_admin_table_sort.tru","line":1,"column":null,"text":null,"code":"W-GEN-99"}],"runtime":[],"runtime_events":[],"server_log":["06-04-2026 11:22:39.706  INFO tru_server: Server log file directory: /app/business/logs","06-04-2026 11:22:39.706  INFO tru_server: Startup phase begin: spec-load","06-04-2026 11:22:39.739  INFO tru_server: Startup phase complete: phase=spec-load elapsed_ms=32 files=92 load_errors=0","06-04-2026 11:22:39.740  INFO tru_server: Startup phase begin: compile","06-04-2026 11:22:40.060  INFO tru_server: Startup phase complete: phase=compile elapsed_ms=319 compiled_files=92 excluded_files=0 objects=50 functions=953","06-04-2026 11:22:40.060  INFO tru_server: Startup phase begin: schema-build","06-04-2026 11:22:40.073  INFO tru_server: Startup phase complete: phase=schema-build elapsed_ms=12 startup_errors=0","06-04-2026 11:22:40.073  INFO tru_server: Startup phase begin: db-schema-apply","06-04-2026 11:22:40.082  INFO postgres::config: NOTICE: relation \"counterparty_due_rollups\" already exists, skipping","06-04-2026 11:22:40.125  INFO postgres::config: NOTICE: relation \"counterparty_insights\" already exists, skipping","06-04-2026 11:22:40.135  INFO postgres::config: NOTICE: relation \"counterparty_insight_statuss\" already exists, skipping","06-04-2026 11:22:40.145  INFO postgres::config: NOTICE: relation \"counterparty_spotlight_rollups\" already exists, skipping","06-04-2026 11:22:40.157  INFO postgres::config: NOTICE: relation \"counterparty_spotlight_statuss\" already exists, skipping","06-04-2026 11:22:40.172  INFO postgres::config: NOTICE: relation \"counterparty_totalss\" already exists, skipping","06-04-2026 11:22:40.181  INFO postgres::config: NOTICE: relation \"dashboard_snapshot_caches\" already exists, skipping","06-04-2026 11:22:40.188  INFO postgres::config: NOTICE: relation \"debts\" already exists, skipping","06-04-2026 11:22:40.237  INFO postgres::config: NOTICE: relation \"debt_attachments\" already exists, skipping","06-04-2026 11:22:40.265  INFO postgres::config: NOTICE: relation \"debt_audit_events\" already exists, skipping","06-04-2026 11:22:40.272  INFO postgres::config: NOTICE: relation \"debt_change_payloads\" already exists, skipping","06-04-2026 11:22:40.280  INFO postgres::config: NOTICE: relation \"debt_change_requests\" already exists, skipping","06-04-2026 11:22:40.296  INFO postgres::config: NOTICE: relation \"debt_filter_presets\" already exists, skipping","06-04-2026 11:22:40.312  INFO postgres::config: NOTICE: relation \"debt_issues\" already exists, skipping","06-04-2026 11:22:40.324  INFO postgres::config: NOTICE: relation \"debt_list_default_caches\" already exists, skipping","06-04-2026 11:22:40.333  INFO postgres::config: NOTICE: relation \"debt_list_default_cache_statuss\" already exists, skipping","06-04-2026 11:22:40.341  INFO postgres::config: NOTICE: relation \"debt_materialized_states\" already exists, skipping","06-04-2026 11:22:40.349  INFO postgres::config: NOTICE: relation \"debt_owner_rows\" already exists, skipping","06-04-2026 11:22:40.356  INFO postgres::config: NOTICE: relation \"debt_owner_row_backfill_states\" already exists, skipping","06-04-2026 11:22:40.371  INFO postgres::config: NOTICE: relation \"debt_payments\" already exists, skipping","06-04-2026 11:22:40.379  INFO postgres::config: NOTICE: relation \"debt_payment_plans\" already exists, skipping","06-04-2026 11:22:40.391  INFO postgres::config: NOTICE: relation \"debt_reminder_logs\" already exists, skipping","06-04-2026 11:22:40.399  INFO postgres::config: NOTICE: relation \"debt_tasks\" already exists, skipping","06-04-2026 11:22:40.407  INFO postgres::config: NOTICE: relation \"due_calendar_day_rollups\" already exists, skipping","06-04-2026 11:22:40.418  INFO postgres::config: NOTICE: relation \"due_calendar_payload_caches\" already exists, skipping","06-04-2026 11:22:40.428  INFO postgres::config: NOTICE: relation \"due_calendar_payload_cache_statuss\" already exists, skipping","06-04-2026 11:22:40.439  INFO postgres::config: NOTICE: relation \"followup_bucket_rollups\" already exists, skipping","06-04-2026 11:22:40.449  INFO postgres::config: NOTICE: relation \"fx_rates\" already exists, skipping","06-04-2026 11:22:40.456  INFO postgres::config: NOTICE: relation \"messages\" already exists, skipping","06-04-2026 11:22:40.465  INFO postgres::config: NOTICE: relation \"missing_due_rollups\" already exists, skipping","06-04-2026 11:22:40.471  INFO postgres::config: NOTICE: relation \"overdue_aging_caches\" already exists, skipping","06-04-2026 11:22:40.477  INFO postgres::config: NOTICE: relation \"overdue_aging_cache_statuss\" already exists, skipping","06-04-2026 11:22:40.485  INFO postgres::config: NOTICE: relation \"plan_currency_rollups\" already exists, skipping","06-04-2026 11:22:40.498  INFO postgres::config: NOTICE: relation \"plan_current_month_rollups\" already exists, skipping","06-04-2026 11:22:40.531  INFO postgres::config: NOTICE: relation \"plan_day_paid_rollups\" already exists, skipping","06-04-2026 11:22:40.543  INFO postgres::config: NOTICE: relation \"plan_day_rollups\" already exists, skipping","06-04-2026 11:22:40.560  INFO postgres::config: NOTICE: relation \"plan_month_paid_rollups\" already exists, skipping","06-04-2026 11:22:40.568  INFO postgres::config: NOTICE: relation \"plan_month_rollups\" already exists, skipping","06-04-2026 11:22:40.624  INFO postgres::config: NOTICE: relation \"reminder_rules\" already exists, skipping","06-04-2026 11:22:40.652  INFO postgres::config: NOTICE: relation \"sessions\" already exists, skipping","06-04-2026 11:22:40.674  INFO postgres::config: NOTICE: relation \"smtp_settingss\" already exists, skipping","06-04-2026 11:22:40.690  INFO postgres::config: NOTICE: relation \"stats_caches\" already exists, skipping","06-04-2026 11:22:40.704  INFO postgres::config: NOTICE: relation \"stats_rollups\" already exists, skipping","06-04-2026 11:22:40.776  INFO postgres::config: NOTICE: relation \"users\" already exists, skipping","06-04-2026 11:22:40.784  INFO postgres::config: NOTICE: relation \"user_links\" already exists, skipping","06-04-2026 11:22:40.795  INFO postgres::config: NOTICE: relation \"user_login_audits\" already exists, skipping","06-04-2026 11:22:40.808  INFO postgres::config: NOTICE: relation \"user_relationships\" already exists, skipping","06-04-2026 11:22:40.816  INFO postgres::config: NOTICE: relation \"user_relationship_requests\" already exists, skipping","06-04-2026 11:22:40.826  INFO postgres::config: NOTICE: relation \"user_settingss\" already exists, skipping","06-04-2026 11:22:40.833  INFO postgres::config: NOTICE: relation \"_admin_settings\" already exists, skipping","06-04-2026 11:22:40.844  INFO tru_server: Startup phase complete: phase=db-schema-apply elapsed_ms=771 apply_error=false","06-04-2026 11:22:40.844  INFO tru_server: Startup phase begin: route-build","06-04-2026 11:22:40.844  INFO tru_server: Startup phase complete: phase=route-build elapsed_ms=0 routes=0","06-04-2026 11:22:40.852  INFO tru_server: Startup phase begin: admin-tests-restore","06-04-2026 11:22:40.852  INFO tru_server: Startup phase complete: phase=admin-tests-restore elapsed_ms=0 loaded=false","06-04-2026 11:22:40.863  INFO tru_server: Process memory hard cap enabled: 6144 MB (TRU_MEMORY_CAP_MB).","06-04-2026 11:22:40.868  INFO tru_server: Loaded 953 function(s) from /app/business (92 file(s))","06-04-2026 11:22:40.868  INFO postgres::config: NOTICE: relation \"tru_index_state\" already exists, skipping","06-04-2026 11:22:40.868  INFO tru_server: Server name: Debts & Assets Tracker","06-04-2026 11:22:40.868  WARN tru_server: Release mode: admin endpoints are accessible without x-tru-admin. Protect /admin at the network/proxy layer.","06-04-2026 11:22:40.869  INFO tru_server: Startup phase complete: phase=pre-bind-startup elapsed_ms=1162 source_files=92 objects=50 functions=953 startup_errors=0","06-04-2026 11:22:40.869  INFO tru_server: Startup phase begin: bind addr=0.0.0.0:9001","06-04-2026 11:22:40.869  INFO tru_server: Startup phase complete: phase=bind elapsed_ms=0 addr=0.0.0.0:9001","06-04-2026 11:22:40.886  INFO tru_server::db::store: rebuilding index idx_users_User_email (missing state)","06-04-2026 11:22:40.888  INFO tru_server::spec_watch: Spec watch enabled for /app/business","06-04-2026 11:22:40.928  INFO tru_server::db::store: rebuilding index idx_users_User_name (missing state)","06-04-2026 11:22:40.947  INFO tru_server::db::store: rebuilding index idx_users_User_name_email (missing state)","06-04-2026 11:22:40.977  INFO tru_server::db::store: rebuilding index idx_sessions_Session_tokenHash (missing state)","06-04-2026 11:22:41.003  INFO tru_server::db::store: rebuilding index idx_sessions_Session_userId (missing state)","06-04-2026 11:22:41.057  INFO tru_server::db::store: rebuilding index idx_user_settingss_UserSettings_userId (missing state)","06-04-2026 11:22:41.152  INFO tru_server::db::store: rebuilding index idx_reminder_rules_ReminderRule_userId (missing state)","06-04-2026 11:22:41.276  INFO tru_server::db::store: rebuilding index idx_debt_filter_presets_DebtFilterPreset_userId (missing state)","06-04-2026 11:22:41.354  INFO tru_server::db::store: rebuilding index idx_smtp_settingss_SmtpSettings_id (missing state)","06-04-2026 11:22:41.489  INFO tru_server::db::store: rebuilding index idx_fx_rates_FxRate_base_currency (missing state)","06-04-2026 11:22:41.565  INFO tru_server::db::store: rebuilding index idx_stats_caches_StatsCache_id (missing state)","06-04-2026 11:22:41.627  INFO tru_server::db::store: rebuilding index idx_stats_caches_StatsCache_asOfDate (missing state)","06-04-2026 11:22:41.655  INFO tru_server::db::store: rebuilding index idx_dashboard_snapshot_caches_DashboardSnapshotCache_id (missing state)","06-04-2026 11:22:41.678  INFO tru_server::db::store: rebuilding index idx_dashboard_snapshot_caches_DashboardSnapshotCache_user_day (missing state)","06-04-2026 11:22:41.704  INFO tru_server::db::store: rebuilding index idx_debt_materialized_states_DebtMaterializedState_id (missing state)","06-04-2026 11:22:41.745  INFO tru_server::db::store: rebuilding index idx_debt_owner_row_backfill_states_DebtOwnerRowBackfillState_id (missing state)","06-04-2026 11:22:41.763  INFO postgres::config: NOTICE: identifier \"idx_debt_owner_row_backfill_states_DebtOwnerRowBackfillState_userId\" will be truncated to \"idx_debt_owner_row_backfill_states_DebtOwnerRowBackfillState_us\"","06-04-2026 11:22:41.763  INFO postgres::config: NOTICE: relation \"idx_debt_owner_row_backfill_states_DebtOwnerRowBackfillState_us\" already exists, skipping","06-04-2026 11:22:41.764  INFO tru_server::db::store: rebuilding index idx_debt_list_default_caches_DebtListDefaultCache_id (missing state)","06-04-2026 11:22:41.799  INFO tru_server::db::store: rebuilding index idx_debt_list_default_caches_DebtListDefaultCache_userId (missing state)","06-04-2026 11:22:41.838  INFO tru_server::db::store: rebuilding index idx_debt_list_default_caches_DebtListDefaultCache_user_day (missing state)","06-04-2026 11:22:41.871  INFO postgres::config: NOTICE: identifier \"idx_debt_list_default_cache_statuss_DebtListDefaultCacheStatus_userId\" will be truncated to \"idx_debt_list_default_cache_statuss_DebtListDefaultCacheStatus_\"","06-04-2026 11:22:41.872  INFO postgres::config: NOTICE: relation \"idx_debt_list_default_cache_statuss_DebtListDefaultCacheStatus_\" already exists, skipping","06-04-2026 11:22:41.872  INFO tru_server::db::store: rebuilding index idx_overdue_aging_caches_OverdueAgingCache_id (missing state)","06-04-2026 11:22:41.896  INFO tru_server::db::store: rebuilding index idx_overdue_aging_caches_OverdueAgingCache_userId (missing state)","06-04-2026 11:22:41.931  INFO tru_server::db::store: rebuilding index idx_overdue_aging_caches_OverdueAgingCache_user_day (missing state)","06-04-2026 11:22:41.950  INFO tru_server::db::store: rebuilding index idx_overdue_aging_cache_statuss_OverdueAgingCacheStatus_userId (missing state)","06-04-2026 11:22:41.981  INFO tru_server::db::store: rebuilding index idx_due_calendar_payload_caches_DueCalendarPayloadCache_id (missing state)","06-04-2026 11:22:42.022  INFO tru_server::db::store: rebuilding index idx_due_calendar_payload_caches_DueCalendarPayloadCache_userId (missing state)","06-04-2026 11:22:42.076  INFO postgres::config: NOTICE: identifier \"idx_due_calendar_payload_caches_DueCalendarPayloadCache_user_day\" will be truncated to \"idx_due_calendar_payload_caches_DueCalendarPayloadCache_user_da\"","06-04-2026 11:22:42.077  INFO postgres::config: NOTICE: relation \"idx_due_calendar_payload_caches_DueCalendarPayloadCache_user_da\" already exists, skipping","06-04-2026 11:22:42.078  INFO postgres::config: NOTICE: identifier \"idx_due_calendar_payload_cache_statuss_DueCalendarPayloadCacheStatus_userId\" will be truncated to \"idx_due_calendar_payload_cache_statuss_DueCalendarPayloadCacheS\"","06-04-2026 11:22:42.079  INFO postgres::config: NOTICE: relation \"idx_due_calendar_payload_cache_statuss_DueCalendarPayloadCacheS\" already exists, skipping","06-04-2026 11:22:42.079  INFO tru_server::db::store: rebuilding index idx_counterparty_totalss_CounterpartyTotals_userId (missing state)","06-04-2026 11:22:42.129  INFO postgres::config: NOTICE: identifier \"idx_counterparty_totalss_CounterpartyTotals_user_counterparty_dir_currency\" will be truncated to \"idx_counterparty_totalss_CounterpartyTotals_user_counterparty_d\"","06-04-2026 11:22:42.129  INFO postgres::config: NOTICE: relation \"idx_counterparty_totalss_CounterpartyTotals_user_counterparty_d\" already exists, skipping","06-04-2026 11:22:42.129  INFO tru_server::db::store: rebuilding index idx_counterparty_totalss_CounterpartyTotals_user_outstanding (missing state)","06-04-2026 11:22:42.177  INFO tru_server::db::store: rebuilding index idx_counterparty_insights_CounterpartyInsight_user_health_score (missing state)","06-04-2026 11:22:42.251  INFO tru_server::db::store: rebuilding index idx_counterparty_insights_CounterpartyInsight_user_risk_score (missing state)","06-04-2026 11:22:42.283  INFO tru_server::db::store: rebuilding index idx_counterparty_insights_CounterpartyInsight_user_overdue (missing state)","06-04-2026 11:22:42.392  INFO postgres::config: NOTICE: identifier \"idx_counterparty_insights_CounterpartyInsight_user_counterparty_dir_currency\" will be truncated to \"idx_counterparty_insights_CounterpartyInsight_user_counterparty\"","06-04-2026 11:22:42.396  INFO postgres::config: NOTICE: relation \"idx_counterparty_insights_CounterpartyInsight_user_counterparty\" already exists, skipping","06-04-2026 11:22:42.403  INFO postgres::config: NOTICE: identifier \"idx_counterparty_insight_statuss_CounterpartyInsightStatus_userId\" will be truncated to \"idx_counterparty_insight_statuss_CounterpartyInsightStatus_user\"","06-04-2026 11:22:42.406  INFO postgres::config: NOTICE: relation \"idx_counterparty_insight_statuss_CounterpartyInsightStatus_user\" already exists, skipping","06-04-2026 11:22:42.406  INFO tru_server::db::store: rebuilding index idx_plan_day_rollups_PlanDayRollup_user_day (missing state)","06-04-2026 11:22:42.479  INFO tru_server::db::store: rebuilding index idx_plan_day_rollups_PlanDayRollup_user_day_dir (missing state)","06-04-2026 11:22:42.582  INFO tru_server::db::store: rebuilding index idx_plan_day_rollups_PlanDayRollup_user_day_dir_currency (missing state)","06-04-2026 11:22:42.676  INFO tru_server::db::store: rebuilding index idx_plan_day_paid_rollups_PlanDayPaidRollup_user_day (missing state)","06-04-2026 11:22:42.824  INFO tru_server::db::store: rebuilding index idx_plan_day_paid_rollups_PlanDayPaidRollup_user_day_dir (missing state)","06-04-2026 11:22:42.920  INFO postgres::config: NOTICE: identifier \"idx_plan_day_paid_rollups_PlanDayPaidRollup_user_day_dir_currency\" will be truncated to \"idx_plan_day_paid_rollups_PlanDayPaidRollup_user_day_dir_curren\"","06-04-2026 11:22:42.934  INFO postgres::config: NOTICE: relation \"idx_plan_day_paid_rollups_PlanDayPaidRollup_user_day_dir_curren\" already exists, skipping","06-04-2026 11:22:42.935  INFO tru_server::db::store: rebuilding index idx_plan_month_rollups_PlanMonthRollup_user_month (missing state)","06-04-2026 11:22:43.084  INFO tru_server::db::store: rebuilding index idx_plan_month_rollups_PlanMonthRollup_user_month_dir (missing state)","06-04-2026 11:22:43.134  INFO tru_server::db::store: rebuilding index idx_plan_month_rollups_PlanMonthRollup_user_month_dir_currency (missing state)","06-04-2026 11:22:43.207  INFO tru_server::db::store: rebuilding index idx_plan_month_paid_rollups_PlanMonthPaidRollup_user_month (missing state)","06-04-2026 11:22:43.372  INFO tru_server::db::store: rebuilding index idx_plan_month_paid_rollups_PlanMonthPaidRollup_user_month_dir (missing state)","06-04-2026 11:22:44.454  INFO postgres::config: NOTICE: identifier \"idx_plan_month_paid_rollups_PlanMonthPaidRollup_user_month_dir_currency\" will be truncated to \"idx_plan_month_paid_rollups_PlanMonthPaidRollup_user_month_dir_\"","06-04-2026 11:22:44.454  INFO postgres::config: NOTICE: relation \"idx_plan_month_paid_rollups_PlanMonthPaidRollup_user_month_dir_\" already exists, skipping","06-04-2026 11:22:44.454  INFO tru_server::db::store: rebuilding index idx_plan_current_month_rollups_pcm_user_asof (missing state)","06-04-2026 11:22:44.536  INFO tru_server::db::store: rebuilding index idx_plan_current_month_rollups_pcm_user_asof_bucket (missing state)","06-04-2026 11:22:44.585  INFO tru_server::db::store: rebuilding index idx_plan_current_month_rollups_pcm_user_asof_bucket_dir_cur (missing state)","06-04-2026 11:22:44.638  INFO tru_server::db::store: rebuilding index idx_plan_currency_rollups_PlanCurrencyRollup_user_status (missing state)","06-04-2026 11:22:44.684  INFO postgres::config: NOTICE: identifier \"idx_plan_currency_rollups_PlanCurrencyRollup_user_status_dir_currency\" will be truncated to \"idx_plan_currency_rollups_PlanCurrencyRollup_user_status_dir_cu\"","06-04-2026 11:22:44.687  INFO postgres::config: NOTICE: relation \"idx_plan_currency_rollups_PlanCurrencyRollup_user_status_dir_cu\" already exists, skipping","06-04-2026 11:22:44.688  INFO tru_server::db::store: rebuilding index idx_counterparty_spotlight_rollups_spotlight_user_window (missing state)","06-04-2026 11:22:44.760  INFO tru_server::db::store: rebuilding index idx_counterparty_spotlight_rollups_spotlight_user_counterparty (missing state)","06-04-2026 11:22:44.786  INFO postgres::config: NOTICE: identifier \"idx_counterparty_spotlight_statuss_CounterpartySpotlightStatus_userId\" will be truncated to \"idx_counterparty_spotlight_statuss_CounterpartySpotlightStatus_\"","06-04-2026 11:22:44.787  INFO postgres::config: NOTICE: relation \"idx_counterparty_spotlight_statuss_CounterpartySpotlightStatus_\" already exists, skipping","06-04-2026 11:22:44.787  INFO tru_server::db::store: rebuilding index idx_counterparty_due_rollups_CounterpartyDueRollup_user_day (missing state)","06-04-2026 11:22:44.877  INFO postgres::config: NOTICE: identifier \"idx_counterparty_due_rollups_CounterpartyDueRollup_user_counterparty_direction_currency_day\" will be truncated to \"idx_counterparty_due_rollups_CounterpartyDueRollup_user_counter\"","06-04-2026 11:22:44.879  INFO postgres::config: NOTICE: relation \"idx_counterparty_due_rollups_CounterpartyDueRollup_user_counter\" already exists, skipping","06-04-2026 11:22:44.880  INFO tru_server::db::store: rebuilding index idx_missing_due_rollups_MissingDueRollup_user_day (missing state)","06-04-2026 11:22:44.924  INFO tru_server::db::store: rebuilding index idx_missing_due_rollups_MissingDueRollup_user_month_status (missing state)","06-04-2026 11:22:44.946  INFO tru_server::db::store: rebuilding index idx_due_calendar_day_rollups_DueCalendarDayRollup_user_day (missing state)","06-04-2026 11:22:44.976  INFO postgres::config: NOTICE: identifier \"idx_due_calendar_day_rollups_DueCalendarDayRollup_user_asof_window_limit_day\" will be truncated to \"idx_due_calendar_day_rollups_DueCalendarDayRollup_user_asof_win\"","06-04-2026 11:22:44.978  INFO postgres::config: NOTICE: relation \"idx_due_calendar_day_rollups_DueCalendarDayRollup_user_asof_win\" already exists, skipping","06-04-2026 11:22:44.978  INFO postgres::config: NOTICE: identifier \"idx_followup_bucket_rollups_FollowupBucketRollup_user_bucket_asof\" will be truncated to \"idx_followup_bucket_rollups_FollowupBucketRollup_user_bucket_as\"","06-04-2026 11:22:44.979  INFO postgres::config: NOTICE: relation \"idx_followup_bucket_rollups_FollowupBucketRollup_user_bucket_as\" already exists, skipping","06-04-2026 11:22:44.980  INFO tru_server::db::store: rebuilding index idx_debts_Debt_creatorId (missing state)","06-04-2026 11:22:45.075  INFO tru_server::db::store: rebuilding index idx_debts_Debt_personId (missing state)","06-04-2026 11:22:46.091  WARN tru_server::state: db index ensure deferred after startup: db error","06-04-2026 11:22:46.092  WARN tru_server::state: db index ensure failed: db error","06-04-2026 11:22:50.178  INFO tru_server::state: Wasm warmup compiled 900 function(s)"],"server_log_total":155,"server_log_next_before":null}