{"summary":{"engine":"mf-dev","engine_version":"mf-dev-1.0.0","passed":6,"failed":0,"pending":0,"all_passing":true,"workbook_sha256":"80bf2faaf07d13a6e1a4f17df9199d3bc6e61db3352587fc095787f31dad212b","checked_at":"2026-09-05T13:30:28.382782+00:00"},"conventions":{"construction_loan":"Construction loan = construction_ltc x all-in uses (land + hard + soft + developer fee + capitalised interest + origination), solved two-pass so the origination fee is sized on the committed facility.","cap_interest":"Capitalised interest accrues on the drawn construction-loan balance at construction_rate x ACT/365 each month; drawn into the facility, not compounded into the balance.","draw_schedule":"Hard costs drawn on the workbook's normalised S-curve (Inputs row 49), passed via hard_cost_draw_pcts for exact reconciliation. Land drawn at month 1; soft costs spread; developer fee at C/O.","perm_loan":"Perm sized on min(perm_ltv x stabilised value, DSCR-constrained proceeds) using annualised last-stabilisation-month NOI. The binding constraint is reported.","refi":"The perm takes out the construction loan at the CL-term month (last stabilisation month). A surplus (perm > CL payoff) is returned to equity; a shortfall (perm < CL payoff) triggers an equity call. Perm origination is deducted once.","operations":"Monthly proforma: GPR from the unit mix with a linear lease-up ramp, vacancy, other income (% of net rent), OpEx (% of revenue); rent/expense escalation on the calendar year (year 1 flat).","exit":"Sale value = trailing-12-month NOI / exit cap rate, less sale costs; the perm balance is repaid.","returns":"Unlevered and levered, project-level (pre-waterfall). IRR via the composed XIRR engine (ACT/365) on monthly month-end dated cash flows; equity multiple = inflows / outflows."},"tolerances":{"cash":0.6,"irr":0.0003,"moic":0.001},"cases":[{"id":"mf_dev_project_base","status":"pass","source":{"workbook":"mf_dev.xlsx","sha256":"80bf2faaf07d13a6e1a4f17df9199d3bc6e61db3352587fc095787f31dad212b","cells":"Inputs S20 (construction loan), S29 (perm loan); Sources & Uses Capitalized Interest; Summary Sale Price, N23/O23 (unlev IRR/MOIC), N24/O24 (lev IRR/MOIC). Project-level returns = XIRR (ACT/365 month-end) on Proforma (M) unlevered / net-levered rows; the engine composes the XIRR agent.","note":"Refi booked at the CL-term month (last stabilisation month); perm origination deducted once. Hard-cost draw uses the workbook's normalised S-curve vector (Inputs row 49), passed via hard_cost_draw_pcts for exact reconciliation. OpEx 35% of revenue; other income 3% of net rent; rent/expense escalation on the calendar year (year 1 flat)."}},{"id":"mf_dev_project_base_scurve","status":"pass","source":{"workbook":"mf_dev.xlsx","sha256":"80bf2faaf07d13a6e1a4f17df9199d3bc6e61db3352587fc095787f31dad212b","cells":"Inputs S20 (construction loan), S29 (perm loan); Sources & Uses Capitalized Interest; Summary Sale Price, N23/O23 (unlev IRR/MOIC), N24/O24 (lev IRR/MOIC). Project-level returns = XIRR (ACT/365 month-end) on Proforma (M) unlevered / net-levered rows; the engine composes the XIRR agent.","note":"Default draw path: draw_schedule='s_curve' with no override. The engine's NORMDIST S-curve reproduces the workbook's normalised draw profile, so the reconciled result holds without passing a draw vector."}},{"id":"mf_dev_shortfall_equity_call","status":"pass","source":{"workbook":"mf_dev_shortfall.xlsx","sha256":"d6422e88c6ffa10bf1937c5102bf2acbc5db0f4313d3be427005838b4424c2b9","cells":"Inputs S20/S29; S&U Capitalized Interest, equity call in Sources; Summary Sale Price, N23/O23, N24/O24. perm_dscr_min=1.50 (DSCR binds below CL payoff)."}},{"id":"mf_dev_ltv_binding","status":"pass","source":{"workbook":"mf_dev_ltv.xlsx","sha256":"7fe6378ee1851c1782e575a3b5961b95dd16dfeb054779baa98a1e3b4f354d46","cells":"Inputs S20/S29; S&U Capitalized Interest; Summary Sale Price, N23/O23, N24/O24. perm_dscr_min=1.15 (LTV binds)."}},{"id":"mf_dev_hold_8yr","status":"pass","source":{"workbook":"mf_dev_hold.xlsx","sha256":"89923e184b1031f35b95fa1205b6088a4ddede0d8468b521898dfb6e07250b1e","cells":"Inputs S20/S29; S&U Capitalized Interest; Summary Sale Price, N23/O23, N24/O24. hold_years=8."}},{"id":"mf_dev_straightline_draw","status":"pass","source":{"workbook":"mf_dev_straightline.xlsx","sha256":"34cf5bb737b5f7eef45478bdcc7d63c1ebe4d35a7858e1f1f4e1fd4cc9487302","cells":"Inputs S20/S29 (S20 reflects straight-line draw); S&U Capitalized Interest; Summary Sale Price, N23/O23, N24/O24. draw row = flat 1/24."}}]}