{"summary":{"engine":"debt-sizing","engine_version":"debt-sizing-1.0.0","passed":9,"failed":0,"pending":0,"all_passing":true,"workbook_sha256":"b02eb8303b434a37408af04d13652ad43f443d612237d7771a2c386feb3970fd","checked_at":"2026-08-17T19:33:31.018836+00:00"},"conventions":{"sizing":"Each asset class sizes to the binding (minimum) of its constraints — lend to the tightest test.","cre":"DSCR = PV(rate/12, amort_months, -NOI/12/DSCR); LTV = (NOI/cap_rate) x LTV; Debt Yield = NOI/DY.","private_equity":"Leverage = EBITDA x multiple; Interest Coverage = (EBITDA/min_IC)/rate; DSCR = (CFADS/min_DSCR)/CRF(rate, amort_years).","project_finance":"Loan-to-Cost = cost x LTV; DSCR = (CFADS/min_DSCR)/CRF(rate, term_years); LLCR = PV(rate, term_years, -CFADS/min_LLCR).","pv_convention":"PV/annuity matches Excel PV() (end-of-period, type=0) and rate/(1-(1+rate)^-n) capital-recovery-factor.","binding_labels":"Binding-constraint names are the engine's canonical labels; the source workbook already carries corrected labels (earlier swap defects fixed).","implied_metrics":"Not reconciled — implied metrics are computed at the sized loan and are not present in the workbook oracle.","currency":"Echoed, not converted."},"tolerances":{"cash":0.01},"cases":[{"id":"cre_dscr_binds","status":"pass","source":{"workbook":"debt_sizing.xlsx","sha256":"b02eb8303b434a37408af04d13652ad43f443d612237d7771a2c386feb3970fd","toggle":"CRE block — workbook example inputs","recalc":"LibreOffice Calc headless (validated to the cent against the workbook's built-in examples)"}},{"id":"cre_ltv_binds","status":"pass","source":{"workbook":"debt_sizing.xlsx","sha256":"b02eb8303b434a37408af04d13652ad43f443d612237d7771a2c386feb3970fd","toggle":"CRE block — ltv=0.55","recalc":"LibreOffice Calc headless (validated to the cent against the workbook's built-in examples)"}},{"id":"cre_dy_binds","status":"pass","source":{"workbook":"debt_sizing.xlsx","sha256":"b02eb8303b434a37408af04d13652ad43f443d612237d7771a2c386feb3970fd","toggle":"CRE block — debt_yield=0.11","recalc":"LibreOffice Calc headless (validated to the cent against the workbook's built-in examples)"}},{"id":"pe_dscr_binds","status":"pass","source":{"workbook":"debt_sizing.xlsx","sha256":"b02eb8303b434a37408af04d13652ad43f443d612237d7771a2c386feb3970fd","toggle":"PE block — workbook example inputs","recalc":"LibreOffice Calc headless (validated to the cent against the workbook's built-in examples)"}},{"id":"pe_leverage_binds","status":"pass","source":{"workbook":"debt_sizing.xlsx","sha256":"b02eb8303b434a37408af04d13652ad43f443d612237d7771a2c386feb3970fd","toggle":"PE block — leverage_multiple=3.0","recalc":"LibreOffice Calc headless (validated to the cent against the workbook's built-in examples)"}},{"id":"pe_ic_binds","status":"pass","source":{"workbook":"debt_sizing.xlsx","sha256":"b02eb8303b434a37408af04d13652ad43f443d612237d7771a2c386feb3970fd","toggle":"PE block — min_interest_coverage=6.0","recalc":"LibreOffice Calc headless (validated to the cent against the workbook's built-in examples)"}},{"id":"pf_llcr_binds","status":"pass","source":{"workbook":"debt_sizing.xlsx","sha256":"b02eb8303b434a37408af04d13652ad43f443d612237d7771a2c386feb3970fd","toggle":"PF block — workbook example inputs","recalc":"LibreOffice Calc headless (validated to the cent against the workbook's built-in examples)"}},{"id":"pf_ltc_binds","status":"pass","source":{"workbook":"debt_sizing.xlsx","sha256":"b02eb8303b434a37408af04d13652ad43f443d612237d7771a2c386feb3970fd","toggle":"PF block — ltv=0.4","recalc":"LibreOffice Calc headless (validated to the cent against the workbook's built-in examples)"}},{"id":"pf_dscr_binds","status":"pass","source":{"workbook":"debt_sizing.xlsx","sha256":"b02eb8303b434a37408af04d13652ad43f443d612237d7771a2c386feb3970fd","toggle":"PF block — dscr=1.9","recalc":"LibreOffice Calc headless (validated to the cent against the workbook's built-in examples)"}}]}