CFDL

Every pack is gated by a parity suite: each CFDL model is diffed against an independent reference implementation, period-by-period and on summary metrics, inside a tolerance the case declares.

How a case is built

Each benchmarks/<pack>/<case>/ directory contains:

  • model.cfdl — the CFDL model;
  • run.json — the run configuration;
  • case.toml — the pack name and per-period tolerance;
  • expected.csv — period-level net cash flow from the reference;
  • expected_metrics.json — summary metrics, each with its own tolerance;
  • reference_gen.py — the independent reference that produces the expected files (a month-by-month recursion, distinct from the engine's evaluation).

tools/benchmark-runner.py compiles and runs each case with the cfdl CLI and fails if any period or metric drifts outside tolerance. Schedule math is held decimal-exact; IRR-class iteratives use a bps tolerance.

Cases

PackCase
creoffice_two_tenant
creretail_strip
creditfloat_bridge_pool
creditio_bullet_loan
creditlevel_pay_pool
energysolar_ppa_microgrid
energywind_ptc_macrs
opcolbo_buyout

Reference models are independent implementations; those still awaiting practitioner verification say so in their case.toml.