RiskOps Control Tower

Basel Jabour / Automation & Engineering

A risk number is only useful if you can trace it.

A reproducible daily workflow that turns portfolio files into verified results, visible exceptions, and a reviewable leadership handoff.

Prepare→ETL→Report

Open the interactive control tower ↗

August 29 / Recorded exception

91.8%

Liquidity coverage against a 100% requirement

5 material warningsCRITICAL
Input / config / codePINNED
Human approvalPENDING
Dates3
Daily positions17
Stages3
CurrencyUSD

Source contract

Validate once. Preserve exactly what was used.

Nine source files cover August 27–29, 2026. Each date contains three small portfolios.

Input schema

Positions and modeling assumptions

Principal, book value, dates, coupon, currency, indexation, payment frequencies, market yield, liquidity buffer, and modeled outflows.

6 Deposits6 Mortgages5 Current Accounts
Validation boundary

Bad inputs stop the workflow

Required fields, finite values, cross-file IDs, known currencies, permitted frequencies, date ordering, and the ten-position limit.

File and field diagnosticsFailure journalNo silent coercion
01Discover

Expect exactly the configured inputs.

02Validate

Reject malformed or inconsistent rows.

03Snapshot

Copy inputs and pin configuration.

04Identify

Bind data, config, code, and predecessor.

System design

A run can resume because its state is explicit.

Python orchestrates stages. Persistent checkpoints make prerequisites and evidence verifiable.

Daily CSVs
+ versioned config
→
PREPARE

Contract checks
Input + config snapshot

→
ETL

Verified input hashes
Deterministic proxies

→
REPORT

Verified result hashes
Brief + scenario export

Run identityCheckpointsSQLite registryJSONL journalSHA-256 evidence
Repeat safely

Same evidence, same run identity

Completed stages are reused. Changed input, configuration, code, or predecessor result produces a different identity.

Resume safely

Check first, then continue

Downstream stages verify their prerequisites. Altered snapshots are rejected before a result is consumed.

Decision signal

The final snapshot exposes a liquidity shortfall.

The reporting sequence progresses from CLEAR to REVIEW to CRITICAL. The dashboard links warnings to evidence.

Liquidity coverage / percent8495106118100% requirement109.8%2026-08-27102.6%2026-08-2891.8%2026-08-29
Verified run results · select the chart to enlarge.
Additional buffer needed$13.58mAt the configured requirement and modeled outflow
Material exceptions5Liquidity breach + four daily movement warnings

Bounded assistant

Explanations are anchored to recorded facts.

The briefing layer follows registered tools, verified facts, and explicit reporting rules.

Allowed workflow

Inspect → cite → explain

Read the verified summary, resolve warnings and source references, then produce a leadership brief and successor questions.

Tool prerequisitesExact metric claimsVisible evidence paths
Authority boundary

Review stays with the owner

The reporting layer cannot change results, remove warnings, approve a run, or initiate a financial action.

Pending human reviewSource notes are dataNo hidden provider

Example / from the verified August 29 snapshot

“The modeled liquidity buffer covers 91.8% of net outflow, below the configured 100% requirement.”

result.json → metrics.lcr_pct / metrics.lcr_requirement_pct

Verification evidence

Test the failure paths, not just the happy path.

The exported checks exercise the implementation with controlled faults and compare outputs against the accepted baseline.

✓

All v1 USD metrics and portfolio metrics match the archived baseline to six decimals.

✓

Structured values, all warnings and pending approval must match; arbitrary prose stays unverified.

✓

A change to operational source changes the run identity and blocks an old prepared checkpoint.

✓

Live config drift blocks downstream reuse; preparing again preserves the old snapshot as a new run starts.

✓

IDs must be globally unique across all three files, not just unique within each file.

✓

Batch prepare rejects missing predecessor checkpoints before creating any partial runs.

✓

Repeated all reuses exact run identities, artifact bytes and log events.

✓

A concurrent rejected command cannot change the active command's RUNNING state or event history.

Eight selected checks. Full suite in the control tower.

Control checks passed21 / 21Recorded automated integration checks
Regression anchorThree preserved baselines

The USD financial proxies reproduce the original scenario. Improvements are in controls, evidence, and interaction.

What this establishesBehavior under controlled tests

Checks cover calculation consistency, data integrity, version changes, recovery, and reporting boundaries.

Successor handoff

One project, two ways to inspect the work.

Explore the evidence in the browser or reproduce it locally from the included source.

Interactive dashboard

Understand the operating decision

Compare dates, inspect instruments, explore a liquidity shock, replay actual logs, and question the bounded assistant.

Open Control Tower ↗

Source + evidence

Reproduce the engineering

Run prepare, run-etl, report, or all. Inspect plan, status, and verify outputs. Execute the control suite.

Read the runbook ↗

01Run

Process the dated synthetic inputs.

02Verify

Check identity and evidence.

03Review

Reconcile exceptions with an owner.

04Extend

Replace proxies with governed models.