{"summary":{"engine":"industrial-acq","engine_version":"industrial-acq-1.1.0","passed":3,"failed":0,"pending":0,"all_passing":true,"workbook_sha256":"15aabdbfd34a8c8677e4c0ca5e12de80dcb0b2727069ad2bb95e89fa87de1bb3","checked_at":"2026-09-05T13:30:28.344530+00:00"},"conventions":{"mode":"Industrial acquisition (value-add / stabilized NNN). Basis = purchase price + closing + capex + soft costs.","rent_roll":"Per-tenant NNN base rent with annual escalators anchored on each lease commencement. Tenants in place at close use lease_start_month=1; post-upfit tenants commence later. Partial vacancy at acquisition is handled by lease-start timing.","recovery":"Occupancy-based expense recovery: (opex + mgmt) x max(occupied_sf/total_sf - vacancy_pct, 0). OpEx steps up on a calendar-year basis at opex_growth_pct.","construction_loan":"Commitment = cl_advance_rate x (purchase_price + capex_budget). Advances cost + capitalized interest (ACT/365) pari passu with equity; origination financed into PM1. Perm takes it out at the CL term.","perm_sizing":"Perm = min(stabilized-value LTV, DSCR-supportable). DSCR uses a monthly-PMT mortgage constant on annualized NOI at perm close. Refi settles AT perm close (perm advance, CL payoff, and any equity plug all booked in the perm-close month; perm debt service begins the following month). Surplus returns to equity; a shortfall is funded by an equity call.","hold_exit":"Exit = capex_spend_months + hold_years x 12 (hold measured from improvements complete). Sale = trailing-12-month NOI annualized / exit cap rate, less transaction costs; perm repaid.","returns":"Unlevered and levered, project-level (pre-waterfall). IRR via XIRR (ACT/365) on monthly month-end cash flows; equity multiple = inflows / outflows. Raw-precision return fields feed parity."},"tolerances":{"cash":0.6,"irr":0.0003,"moic":0.001},"cases":[{"id":"industrial_acq_base","status":"pass","source":{"workbook":"industrial_acq.xlsx","sha256":"15aabdbfd34a8c8677e4c0ca5e12de80dcb0b2727069ad2bb95e89fa87de1bb3","cells":"Inputs Q20 (construction loan), T29 (perm loan); Summary Sale Price, GP Equity, N/O of Unlevered & Levered IRR/MOIC. Perm = min(stabilized-value LTV, DSCR via monthly-PMT constant); DSCR binds. Exit = capex_spend_months + hold; LTM NOI / exit cap."}},{"id":"industrial_acq_ltv","status":"pass","source":{"workbook":"industrial_acq_ltv.xlsx","sha256":"c2f44e1d5a5585ed5505dbbec4b075c98c925f28e7dd4c45ea219b19f0db8e67","cells":"Inputs U20 (construction loan), T29 (perm loan, LTV-binding); Summary E37/J39 (Sale Price), S24 (GP Equity, construction-only), N23/O23 (Unlevered IRR/MOIC), N24/O24 (Levered IRR/MOIC). Perm = min(stabilized-value LTV, DSCR via monthly-PMT constant); LTV binds. Exit = capex_spend_months + hold; LTM NOI / exit cap."}},{"id":"industrial_acq_dscr","status":"pass","source":{"workbook":"industrial_acq_dscr.xlsx","sha256":"964edc93c87ceb27f4009a99473a86021695fb182830e29d4a4e5348f65f553b","cells":"Inputs U20 (construction loan), T29 (perm loan, DSCR-binding), U35 (DSCR 1.35); Summary E37/J39 (Sale Price), S24 (GP Equity, construction-only), N23/O23 (Unlevered IRR/MOIC), N24/O24 (Levered IRR/MOIC). Perm = min(stabilized-value LTV, DSCR via monthly-PMT constant); DSCR binds. Exit = capex_spend_months + hold; LTM NOI / exit cap."}}]}