CFDL

This example uses pack contracts in contracts.cfdl for lease, construction stub, and exit; standalone streams for ops revenue and ops expense (per guidance).

Full developer lifecycle split across files: time.cfdl (phases), structure.cfdl (entities), contracts.cfdl (CRE pack contracts). Entry is model.cfdl with version, model, use pack, time, and imports.

Compile

./target/debug/cfdl compile examples/cre_multi_file --out /tmp/cre_multi_file.ir.json --packs packs

Run

./target/debug/cfdl run /tmp/cre_multi_file.ir.json --out /tmp/cre_multi_file.results.json --config examples/cre_multi_file/run.json --packs packs

model.cfdl

version 0.1
model "cre-multi-file-example"
use pack "cre" version "0.1.0"
time calendar monthly from 2026-01 for 72

import "time.cfdl"
import "structure.cfdl"
import "contracts.cfdl"

time.cfdl

phase construction from 2026-01 to 2026-12
phase lease_up from 2027-01 to 2027-12
phase perm from 2028-01 to 2031-12

structure.cfdl

entity asset property : CRE.Asset.RealProperty

contracts.cfdl

contract cre.construction_stub {
  term 2026-01..2026-06
  terms {
    amount = 45000
  }
}

contract cre.lease {
  term 2026-07..2031-12
  terms {
    rent = 25000
  }
}

// Ops income and expense as pack contracts, so the pack classifies them and
// the operating statement can claim them. Hand-written streams carry no
// category, and a statement folds categories rather than stream names.
contract cre.revenue_line {
  term 2028-01..2031-12
  terms {
    amount = 30000
  }
}

contract cre.opex_line {
  term 2028-01..2031-12
  terms {
    amount = 12000
  }
}

contract cre.exit_cap {
  term 2031-12..2031-12
  terms {
    cap_rate = 0.06
    income = 180000
  }
}