Probabilistic Forecasting Dashboard

Deliverable OSINT-041. Structure per cc02-standards/SYSTEM-STANDARD.md. Every component traces to a design basis (NEED/REQ) and to an acceptance criterion.

1. Purpose and Design Basis

1.1 Scope and Objective

The Probabilistic Forecasting Dashboard (v2) is a strategic intelligence visualization system. It aggregates forecasts, scenario matrices, horizon-scan datasets, and Indications and Warning (I&W) tripwires from OSINT-037, OSINT-038, OSINT-039, and OSINT-040 to present a unified strategic warning surface for decision support.

1.2 Design Basis

This system replaces manual forecast checks with an automated dashboard view. It evaluates strategic indicators and displays likelihoods using calibrated estimative language (ICD 203) alongside mathematical probability models.

1.3 Needs

  • NEED-OSINT-041-01: Team Leader (RF) requires a consolidated strategic dashboard that displays aggregated probability assessments across multiple threat vectors to support long-term staffing and asset allocations.
    • Source: RF (CEO/TL) strategic decision support concern.
    • Context: Checking separate forecast documents manually leads to fragmented planning and delayed strategic pivot decisions.
  • NEED-OSINT-041-02: Systems Engineer (CS) requires deterministic ingestion interfaces to prevent unformatted or invalid forecast files from breaking the dashboard display.
    • Source: CS (Systems Engineer) security tools plan.
    • Context: Strategic analysts update forecasts manually in markdown formats; these must be parsed and verified.

1.4 Requirements

  • REQ-OSINT-041-01 (Traceability: NEED-OSINT-041-01): The dashboard shall parse markdown tables from OSINT-037/038/039/040 and compile them into a structured database within 5 seconds of file updates [VR-OSINT-041-01].
    • Verification Method: Test (T)
  • REQ-OSINT-041-02 (Traceability: NEED-OSINT-041-01): The dashboard shall display Likelihood and Analytic Confidence as separate visual elements to enforce ICD 203 standards [VR-OSINT-041-02].
    • Verification Method: Inspection (I)
  • REQ-OSINT-041-03 (Traceability: NEED-OSINT-041-02): The ingestion daemon shall validate that all input files match the defined markdown schemas before updating the dashboard database [VR-OSINT-041-03].
    • Verification Method: Test (T)

2. Architecture As Built

The Probabilistic Forecasting Dashboard is a local intelligence visualization tool composed of three real parts: an ingestion/markdown parser, a SQLite database, and a Flask/Dash loopback web UI. The ingestion parser reads structured strategic forecasts (OSINT-037, OSINT-038, OSINT-039, and OSINT-040), extracts the forecast matrices and estimative-language fields, validates them, and writes them to the local SQLite database. The Flask/Dash server then reads from that database and renders the unified strategic warning surface.

Data flow:

  1. The ingestion parser polls the strategic forecast source directories for updates to OSINT-037, OSINT-038, OSINT-039, and OSINT-040 files.
  2. The parser reads the markdown tables and frontmatter from any modified file.
  3. The parser translates ICD 203 estimative-term strings (for example “highly likely”) into their calibrated probability ranges.
  4. Validated entries are written to the SQLite database.
  5. The Flask/Dash web UI reads the current database state and renders the probability distributions, confidence tiers, and indications and warnings on the dashboard.
+-------------------------------------------------------------------------+
| OSINT-041 Probabilistic Forecasting Dashboard                           |
|                                                                         |
|  [OSINT-037..040 Source Files] ---> [Markdown Parser] ---> [SQLite DB]  |
|                                                                 |       |
+-----------------------------------------------------------------|-------+
                                                                  v
                                                        [Web UI Dashboard]

3. Components and Bill of Materials

ComponentSpecVendor / LinkPriceTierStatusTraceability
Ingestion ParserPython 3.12 markdown and YAML parsing scriptInternal$0.00-SELECTEDREQ-OSINT-041-01
Web UI DashboardLightweight Python Flask/Dash server running locallyOS$0.00-SELECTEDREQ-OSINT-041-02
Local DatabaseSQLite file-based database for local storageOS$0.00-SELECTEDREQ-OSINT-041-03

4. Build and Deployment

4.1 Environment Setup

  1. Deploy Flask and Dash components in the local python engine environment; place forecast source files from OSINT-037/038/039/040 into /var/lib/forecasting/sources/.
  2. Establish a systemd timer on the host VPS to poll /var/lib/forecasting/sources/ for file modifications; configure the polling directory and database path in /etc/default/forecast-dashboard.

4.2 Application Start

  1. Initialize the SQLite database schema with the init-db migration command: uv run python -m forecasting.init_db.
  2. Install the systemd service unit at /etc/systemd/system/forecast-dashboard.service, then reload and enable the service: systemctl daemon-reload && systemctl enable --now forecast-dashboard.service.

5. Hardening Baseline

  • Network Hardening: Bind the Flask web server to the local loopback interface (127.0.0.1) only; restrict administrative UI panels.
  • Process Isolation: Disable debug mode in production environment settings; run the service process under a dedicated unprivileged system user sc-forecaster.
  • Filesystem Permissions: Restrict SQLite database file permission to read-only for the web execution process; restrict the database file (/var/lib/forecasting/forecasts.db) to chmod 0600 for the service owner.

6. Integration Points

InterfaceTypeDirectionContract
Ingest ForecastsFiles (Markdown)ConsumedPulls data tables from OSINT-037, OSINT-038, OSINT-039, and OSINT-040
Dashboard UIWeb portal (HTTP)ProducedLocal interface displaying the consolidated strategic warning view

7. Acceptance Tests

CriterionMethodExpected ResultReference
REQ-OSINT-041-01TestTrigger file update and confirm database is populated within 5 seconds.VR-OSINT-041-01
REQ-OSINT-041-02InspectionVerify that likelihood terms and confidence grades are rendered in separate columns in the UI.VR-OSINT-041-02
REQ-OSINT-041-03TestFeed a malformed file containing duplicate column headers and verify it is rejected with a validation error.VR-OSINT-041-03

8. Run and Maintenance Handover

  • Console Start: Start Flask service via systemctl restart forecast-dashboard.
  • Maintenance Schedule: Clear logs weekly; update ICD 203 mapping dictionary when strategic standards are revised.
  • Ownership: Systems Engineer (CS).

Annex A: ICD 203 Calibrated Probability Mapping

Strategic forecasts translate qualitative estimative terms to quantitative probability ranges:

Estimative TermProbability Range
Almost Certain95-99
Highly Likely80-90
Likely55-70
Realistic Probability35-50
Unlikely15-30
Highly Unlikely5-10
Remote1-2

END OF SYSTEM

Model wiring

Generated from cell frontmatter at publish time.