{
  "generated_at": "2026-04-28T23:58:28.620Z",
  "system": {
    "id": "topolo-forecast",
    "name": "Topolo Forecast",
    "slug": "topolo-forecast",
    "kind": "application",
    "summary": "Cash-flow and P&L forecasting product.",
    "aliases": [],
    "lifecycle": "active",
    "last_verified": "2026-04-25",
    "owners": [
      "finance-platform"
    ],
    "repo_paths": [
      "PlatformApplications/TopoloForecast"
    ],
    "service_ids": [
      "srv_T0sKE7LIelMU"
    ],
    "visibility": "public",
    "api_contract": {
      "type": "curated",
      "source": "PlatformApplications/TopoloDocs/src/content/public/applications/forecast.mdx",
      "notes": "Canonical Forecast coverage now lives in the docs application. The browser callback delegates Auth SSO one-time sso_code redemption to the shared Topolo auth client and does not support direct bearer-token callback URLs or /sso?token= bridge routes. Embedded first-party password-login success is completed by Forecast with in-app navigation after shared Auth token persistence so the first authenticated workspace refresh is not aborted by a hard redirect. Forecast keeps same-tab sessionStorage access-token restore enabled by default after login and refresh so normal browser reloads do not appear logged out before cookie refresh completes. The authenticated Forecast web workspace renders through the shared `TopoloAppShell` so account, launcher, command, theme, sidebar-collapse, and BugFix chrome stay package-owned while finance workspace switching remains in additive account-menu actions. Auth home-path redirects to /dashboard are routed to the current-year dashboard in the browser, and Forecast static headers must not preload wildcard asset paths. Worker bearer-token authentication now requires Topolo Auth /validate and does not accept an app-local JWT secret."
    },
    "primary_hosts": [
      "https://forecast.topolo.app"
    ],
    "doc_paths": [
      "applications/forecast",
      "internal/apps/forecast"
    ],
    "security_assurance": {
      "risk_tier": "standard",
      "auth_boundary": "Topolo Auth /validate service access with Forecast-owned workspace authorization; first-party embedded password login persists through the shared Auth client before Forecast performs app-owned navigation; same-tab access-token restore is enabled by default for browser refresh continuity, and the Forecast worker does not accept app-local JWT validation.",
      "tenant_isolation": "organization_scoped",
      "external_inputs": [
        "browser",
        "api",
        "callback"
      ],
      "sensitive_data": [
        "identity",
        "org_data",
        "customer_content",
        "telemetry"
      ],
      "last_security_review": "2026-04-23",
      "security_review_status": "in_progress",
      "pentest_status": "not_started",
      "evidence_doc": "internal/apps/forecast"
    },
    "dependencies": [
      "topolo-auth",
      "topolo-one",
      "applications-packages"
    ],
    "public_hub_url": "/systems/topolo-forecast",
    "internal_hub_url": null,
    "application_api_url": "/reference/apps/topolo-forecast",
    "generated_openapi_url": null,
    "machine_urls": {
      "system": "/machine/systems/topolo-forecast.json",
      "application": "/machine/applications/topolo-forecast.json"
    }
  },
  "docs": {
    "public": [
      {
        "id": "applications/forecast.mdx",
        "title": "Topolo Forecast",
        "summary": "Public overview of the forecasting product for cash-flow, P&L, KPI, and multi-scenario planning workflows.",
        "audience": "public",
        "tags": [
          "forecasting",
          "finance",
          "planning"
        ],
        "url": "/applications/forecast.mdx",
        "last_verified": "2026-04-28"
      }
    ],
    "internal": [],
    "runbooks": []
  },
  "authority": {
    "owners": [
      "finance-platform"
    ],
    "repo_paths": [
      "PlatformApplications/TopoloForecast"
    ],
    "service_ids": [
      "srv_T0sKE7LIelMU"
    ],
    "dependencies": [
      "topolo-auth",
      "topolo-one",
      "applications-packages"
    ],
    "aliases": []
  },
  "interfaces": {
    "contract_type": "curated",
    "contract_source": "PlatformApplications/TopoloDocs/src/content/public/applications/forecast.mdx",
    "contract_source_exists": true,
    "openapi": null,
    "readme": {
      "path": "PlatformApplications/TopoloForecast/README.md",
      "intro": [
        "Canonical documentation for Topolo Forecast lives in `PlatformApplications/TopoloDocs`.",
        "Use this repository for implementation only. Local product and operational docs have been retired in favor of the docs application."
      ],
      "headings": [
        "Topolo Forecast"
      ],
      "routeHighlights": [],
      "commandHighlights": []
    }
  },
  "auth": {
    "depends_on_topolo_auth": true,
    "api_key_scopes": [
      {
        "id": "aks_forecast_api_keys_write",
        "name": "api_keys.write",
        "description": "Manage Forecast machine credentials",
        "resourcePattern": null,
        "kind": "api_key_scope"
      },
      {
        "id": "aks_forecast_dashboard_read",
        "name": "dashboard.read",
        "description": "View financial dashboard",
        "resourcePattern": null,
        "kind": "api_key_scope"
      },
      {
        "id": "aks_forecast_forecasts_read",
        "name": "forecasts.read",
        "description": "View cashflow forecasts",
        "resourcePattern": null,
        "kind": "api_key_scope"
      },
      {
        "id": "aks_forecast_forecasts_write",
        "name": "forecasts.write",
        "description": "Create and edit forecasts",
        "resourcePattern": null,
        "kind": "api_key_scope"
      },
      {
        "id": "aks_forecast_reports_read",
        "name": "reports.read",
        "description": "View financial reports",
        "resourcePattern": null,
        "kind": "api_key_scope"
      },
      {
        "id": "aks_forecast_settings_read",
        "name": "settings.read",
        "description": "View account settings",
        "resourcePattern": null,
        "kind": "api_key_scope"
      },
      {
        "id": "aks_forecast_settings_write",
        "name": "settings.write",
        "description": "Manage account configuration",
        "resourcePattern": null,
        "kind": "api_key_scope"
      },
      {
        "id": "aks_forecast_transactions_read",
        "name": "transactions.read",
        "description": "View financial transactions",
        "resourcePattern": null,
        "kind": "api_key_scope"
      },
      {
        "id": "aks_forecast_transactions_write",
        "name": "transactions.write",
        "description": "Record financial transactions",
        "resourcePattern": null,
        "kind": "api_key_scope"
      }
    ],
    "service_permissions": [
      {
        "id": "perm_forecast_api_keys_write",
        "name": "api_keys:write",
        "description": "Manage Forecast machine credentials",
        "resourcePattern": null,
        "kind": "permission"
      },
      {
        "id": "perm_forecast_dashboard_read",
        "name": "dashboard:read",
        "description": "View financial dashboard",
        "resourcePattern": null,
        "kind": "permission"
      },
      {
        "id": "perm_forecast_forecasts_read",
        "name": "forecasts:read",
        "description": "View cashflow forecasts",
        "resourcePattern": null,
        "kind": "permission"
      },
      {
        "id": "perm_forecast_forecasts_write",
        "name": "forecasts:write",
        "description": "Create and edit forecasts",
        "resourcePattern": null,
        "kind": "permission"
      },
      {
        "id": "perm_forecast_reports_read",
        "name": "reports:read",
        "description": "View financial reports",
        "resourcePattern": null,
        "kind": "permission"
      },
      {
        "id": "perm_forecast_settings_read",
        "name": "settings:read",
        "description": "View account settings",
        "resourcePattern": null,
        "kind": "permission"
      },
      {
        "id": "perm_forecast_settings_write",
        "name": "settings:write",
        "description": "Manage account configuration",
        "resourcePattern": null,
        "kind": "permission"
      },
      {
        "id": "perm_forecast_transactions_read",
        "name": "transactions:read",
        "description": "View financial transactions",
        "resourcePattern": null,
        "kind": "permission"
      },
      {
        "id": "perm_forecast_transactions_write",
        "name": "transactions:write",
        "description": "Record financial transactions",
        "resourcePattern": null,
        "kind": "permission"
      }
    ]
  },
  "runtime": {
    "primary_hosts": [
      "https://forecast.topolo.app"
    ],
    "repo_entries": [
      "PlatformApplications/TopoloForecast/README.md",
      "PlatformApplications/TopoloForecast/apps/",
      "PlatformApplications/TopoloForecast/commitlint.config.js",
      "PlatformApplications/TopoloForecast/eslint.config.js",
      "PlatformApplications/TopoloForecast/migration.config.ts",
      "PlatformApplications/TopoloForecast/package.json",
      "PlatformApplications/TopoloForecast/packages/",
      "PlatformApplications/TopoloForecast/pnpm-lock.yaml",
      "PlatformApplications/TopoloForecast/pnpm-workspace.yaml",
      "PlatformApplications/TopoloForecast/prettier.config.js",
      "PlatformApplications/TopoloForecast/topolo.cloudcontrol.json"
    ],
    "wrangler_surfaces": [
      {
        "path": "PlatformApplications/TopoloForecast/apps/forecast-web/wrangler.toml",
        "observabilityEnabled": true,
        "environments": [],
        "routes": [],
        "vars": [],
        "bindings": [],
        "cronTriggers": [],
        "workerName": "forecast",
        "compatibilityDate": "2026-04-10"
      },
      {
        "path": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
        "observabilityEnabled": true,
        "environments": [
          "development",
          "staging",
          "production"
        ],
        "routes": [],
        "vars": [
          "ENVIRONMENT",
          "SERVICE_ID",
          "SERVICE_NAME",
          "migrations_dir"
        ],
        "bindings": [
          {
            "kind": "d1",
            "binding": "FS_DB",
            "sourcePath": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
            "target": "897ce6a0-e15e-444d-9498-26d989ff3a38"
          },
          {
            "kind": "kv",
            "binding": "FS_CACHE",
            "sourcePath": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
            "target": "c39ef688a2fb474ba240c80f9452f0e3"
          },
          {
            "kind": "d1",
            "binding": "FS_DB",
            "environment": "development",
            "sourcePath": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
            "target": "local-db-id"
          },
          {
            "kind": "kv",
            "binding": "FS_CACHE",
            "environment": "development",
            "sourcePath": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
            "target": "local-kv-preview-id"
          },
          {
            "kind": "d1",
            "binding": "FS_DB",
            "environment": "staging",
            "sourcePath": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
            "target": "57bb4c3b-46f0-4cd8-82e8-d2c8d6f3a480"
          },
          {
            "kind": "kv",
            "binding": "FS_CACHE",
            "environment": "staging",
            "sourcePath": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
            "target": "bd5f86a046f34e418f283f7e744d27c0"
          },
          {
            "kind": "d1",
            "binding": "FS_DB",
            "environment": "production",
            "sourcePath": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
            "target": "897ce6a0-e15e-444d-9498-26d989ff3a38"
          },
          {
            "kind": "kv",
            "binding": "FS_CACHE",
            "environment": "production",
            "sourcePath": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
            "target": "c39ef688a2fb474ba240c80f9452f0e3"
          }
        ],
        "cronTriggers": [],
        "workerName": "forecast-worker-production",
        "main": "src/index.ts",
        "compatibilityDate": "2026-04-10",
        "buildCommand": "npm run build"
      }
    ],
    "packages": [
      {
        "path": "PlatformApplications/TopoloForecast/apps/forecast-web/package.json",
        "name": "forecast-web",
        "scripts": [
          "dev",
          "prebuild",
          "build",
          "build:with-types",
          "lint",
          "preview"
        ],
        "scriptCommands": [
          {
            "name": "dev",
            "command": "vite"
          },
          {
            "name": "prebuild",
            "command": "cd ../../packages/forecast-core && npm run build && cd ../ui-kit && npm run build"
          },
          {
            "name": "build",
            "command": "pnpm -C ../../packages/forecast-core run build && pnpm -C ../../packages/ui-kit run build && vite build"
          },
          {
            "name": "build:with-types",
            "command": "tsc -b && vite build"
          },
          {
            "name": "lint",
            "command": "eslint ."
          },
          {
            "name": "preview",
            "command": "vite preview"
          }
        ]
      },
      {
        "path": "PlatformApplications/TopoloForecast/apps/forecast-worker/package.json",
        "name": "@forecast/worker",
        "scripts": [
          "dev",
          "deploy",
          "deploy:staging",
          "prebuild",
          "build",
          "start",
          "test",
          "test:watch",
          "lint",
          "lint:fix",
          "type-check",
          "clean",
          "cf-typegen"
        ],
        "scriptCommands": [
          {
            "name": "dev",
            "command": "wrangler dev --env development --local --persist-to .wrangler/state --port 8787"
          },
          {
            "name": "deploy",
            "command": "wrangler deploy"
          },
          {
            "name": "deploy:staging",
            "command": "env -u CLOUDFLARE_API_TOKEN CLOUDFLARE_ACCOUNT_ID=4f4e1c69a3830946f9fea7b1eb7531ac wrangler deploy --env staging"
          },
          {
            "name": "prebuild",
            "command": "cd ../../packages/forecast-core && npm run build"
          },
          {
            "name": "build",
            "command": "tsc"
          },
          {
            "name": "start",
            "command": "wrangler dev --env development"
          },
          {
            "name": "test",
            "command": "vitest"
          },
          {
            "name": "test:watch",
            "command": "vitest --watch"
          },
          {
            "name": "lint",
            "command": "eslint . --ext ts --report-unused-disable-directives --max-warnings 0"
          },
          {
            "name": "lint:fix",
            "command": "eslint . --ext ts --fix"
          },
          {
            "name": "type-check",
            "command": "tsc --noEmit"
          },
          {
            "name": "clean",
            "command": "rm -rf dist .turbo node_modules/.cache"
          },
          {
            "name": "cf-typegen",
            "command": "wrangler types"
          }
        ]
      },
      {
        "path": "PlatformApplications/TopoloForecast/package.json",
        "name": "topolo-forecast",
        "description": "Gorgeous keyboard-first cash-flow & P&L SaaS dashboard",
        "scripts": [
          "bootstrap",
          "dev",
          "build",
          "build:packages",
          "test",
          "test:watch",
          "lint",
          "lint:fix",
          "format",
          "format:check",
          "type-check",
          "clean",
          "prepare",
          "storybook",
          "build-storybook",
          "deploy"
        ],
        "scriptCommands": [
          {
            "name": "bootstrap",
            "command": "pnpm install && pnpm run build:packages"
          },
          {
            "name": "dev",
            "command": "pnpm run --parallel dev"
          },
          {
            "name": "build",
            "command": "pnpm run --recursive build"
          },
          {
            "name": "build:packages",
            "command": "pnpm run --filter './packages/*' build"
          },
          {
            "name": "test",
            "command": "pnpm run --recursive test"
          },
          {
            "name": "test:watch",
            "command": "pnpm run --recursive test:watch"
          },
          {
            "name": "lint",
            "command": "pnpm run --recursive lint"
          },
          {
            "name": "lint:fix",
            "command": "pnpm run --recursive lint:fix"
          },
          {
            "name": "format",
            "command": "prettier --write ."
          },
          {
            "name": "format:check",
            "command": "prettier --check ."
          },
          {
            "name": "type-check",
            "command": "pnpm run --recursive type-check"
          },
          {
            "name": "clean",
            "command": "pnpm run --recursive clean"
          },
          {
            "name": "prepare",
            "command": "husky install"
          },
          {
            "name": "storybook",
            "command": "pnpm run --filter @forecast/ui-kit storybook"
          },
          {
            "name": "build-storybook",
            "command": "pnpm run --filter @forecast/ui-kit build-storybook"
          },
          {
            "name": "deploy",
            "command": "pnpm --filter @forecast/worker run deploy"
          }
        ]
      },
      {
        "path": "PlatformApplications/TopoloForecast/packages/config/package.json",
        "name": "@forecast/config",
        "scripts": [
          "build",
          "dev",
          "lint",
          "lint:fix",
          "type-check",
          "clean"
        ],
        "scriptCommands": [
          {
            "name": "build",
            "command": "tsc"
          },
          {
            "name": "dev",
            "command": "tsc --watch"
          },
          {
            "name": "lint",
            "command": "eslint . --ext ts --report-unused-disable-directives --max-warnings 0"
          },
          {
            "name": "lint:fix",
            "command": "eslint . --ext ts --fix"
          },
          {
            "name": "type-check",
            "command": "tsc --noEmit"
          },
          {
            "name": "clean",
            "command": "rm -rf dist .turbo node_modules/.cache"
          }
        ]
      },
      {
        "path": "PlatformApplications/TopoloForecast/packages/forecast-core/package.json",
        "name": "@forecast/core",
        "scripts": [
          "build",
          "dev"
        ],
        "scriptCommands": [
          {
            "name": "build",
            "command": "tsc"
          },
          {
            "name": "dev",
            "command": "tsc --watch"
          }
        ]
      }
    ]
  },
  "data": {
    "env_vars": [
      "ENVIRONMENT",
      "SERVICE_ID",
      "SERVICE_NAME",
      "migrations_dir"
    ],
    "bindings": [
      {
        "kind": "d1",
        "binding": "FS_DB",
        "sourcePath": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
        "target": "897ce6a0-e15e-444d-9498-26d989ff3a38"
      },
      {
        "kind": "kv",
        "binding": "FS_CACHE",
        "sourcePath": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
        "target": "c39ef688a2fb474ba240c80f9452f0e3"
      },
      {
        "kind": "d1",
        "binding": "FS_DB",
        "environment": "development",
        "sourcePath": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
        "target": "local-db-id"
      },
      {
        "kind": "kv",
        "binding": "FS_CACHE",
        "environment": "development",
        "sourcePath": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
        "target": "local-kv-preview-id"
      },
      {
        "kind": "d1",
        "binding": "FS_DB",
        "environment": "staging",
        "sourcePath": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
        "target": "57bb4c3b-46f0-4cd8-82e8-d2c8d6f3a480"
      },
      {
        "kind": "kv",
        "binding": "FS_CACHE",
        "environment": "staging",
        "sourcePath": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
        "target": "bd5f86a046f34e418f283f7e744d27c0"
      },
      {
        "kind": "d1",
        "binding": "FS_DB",
        "environment": "production",
        "sourcePath": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
        "target": "897ce6a0-e15e-444d-9498-26d989ff3a38"
      },
      {
        "kind": "kv",
        "binding": "FS_CACHE",
        "environment": "production",
        "sourcePath": "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
        "target": "c39ef688a2fb474ba240c80f9452f0e3"
      }
    ],
    "queue_bindings": [],
    "storage_kinds": [
      "d1",
      "kv"
    ],
    "workflow_signals": []
  },
  "deployment": {
    "commands": [
      {
        "name": "prebuild",
        "command": "PlatformApplications/TopoloForecast/apps/forecast-web/package.json :: cd ../../packages/forecast-core && npm run build && cd ../ui-kit && npm run build"
      },
      {
        "name": "build",
        "command": "PlatformApplications/TopoloForecast/apps/forecast-web/package.json :: pnpm -C ../../packages/forecast-core run build && pnpm -C ../../packages/ui-kit run build && vite build"
      },
      {
        "name": "build:with-types",
        "command": "PlatformApplications/TopoloForecast/apps/forecast-web/package.json :: tsc -b && vite build"
      },
      {
        "name": "preview",
        "command": "PlatformApplications/TopoloForecast/apps/forecast-web/package.json :: vite preview"
      },
      {
        "name": "deploy",
        "command": "PlatformApplications/TopoloForecast/apps/forecast-worker/package.json :: wrangler deploy"
      },
      {
        "name": "deploy:staging",
        "command": "PlatformApplications/TopoloForecast/apps/forecast-worker/package.json :: env -u CLOUDFLARE_API_TOKEN CLOUDFLARE_ACCOUNT_ID=4f4e1c69a3830946f9fea7b1eb7531ac wrangler deploy --env staging"
      },
      {
        "name": "prebuild",
        "command": "PlatformApplications/TopoloForecast/apps/forecast-worker/package.json :: cd ../../packages/forecast-core && npm run build"
      },
      {
        "name": "build",
        "command": "PlatformApplications/TopoloForecast/apps/forecast-worker/package.json :: tsc"
      },
      {
        "name": "build",
        "command": "PlatformApplications/TopoloForecast/package.json :: pnpm run --recursive build"
      },
      {
        "name": "build:packages",
        "command": "PlatformApplications/TopoloForecast/package.json :: pnpm run --filter './packages/*' build"
      },
      {
        "name": "build-storybook",
        "command": "PlatformApplications/TopoloForecast/package.json :: pnpm run --filter @forecast/ui-kit build-storybook"
      },
      {
        "name": "deploy",
        "command": "PlatformApplications/TopoloForecast/package.json :: pnpm --filter @forecast/worker run deploy"
      },
      {
        "name": "build",
        "command": "PlatformApplications/TopoloForecast/packages/config/package.json :: tsc"
      },
      {
        "name": "build",
        "command": "PlatformApplications/TopoloForecast/packages/forecast-core/package.json :: tsc"
      }
    ],
    "routes": [],
    "environments": [
      "development",
      "staging",
      "production"
    ],
    "assets_directories": [],
    "observability_enabled": true
  },
  "debugging": {
    "failure_modes": [],
    "entrypoints": [
      "PlatformApplications/TopoloForecast/apps/forecast-web/wrangler.toml",
      "PlatformApplications/TopoloForecast/apps/forecast-worker/wrangler.toml",
      "PlatformApplications/TopoloDocs/src/content/public/applications/forecast.mdx",
      "PlatformApplications/TopoloForecast/README.md",
      "PlatformApplications/TopoloForecast/apps/forecast-web/package.json",
      "PlatformApplications/TopoloForecast/apps/forecast-worker/package.json",
      "PlatformApplications/TopoloForecast/package.json",
      "PlatformApplications/TopoloForecast/packages/config/package.json",
      "PlatformApplications/TopoloForecast/packages/forecast-core/package.json"
    ]
  }
}