- Engine: Add ppa_revenue_cr, mcp_revenue_cr, tariff, units to PnLRow - Engine: Split PPA vs MCP revenue in P&L computation - Web: Collapsible rows for PPA/MCP Revenue and Opex - Web: Highlighted rows (Total Revenue, EBITDA, EBIT, PBT, PAT) - Web: Units above Tariff in breakdown, bg-blue-50 highlight - Fix sticky column z-index for horizontal scroll - CLAUDE.md: Add project documentation Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1.3 KiB
Goal: Full solver chain working. Tariff parity gate. Tasks:
S4-T01 Schema: DebtConfig, DebtSchedule, IRRMetrics. S4-T02 debt/sizing.py: 3 constraints (D:E cap, min DSCR, avg DSCR). Take binding. Fixed-point on CFADS. S4-T03 debt/schedule.py: shapes — equal_principal, equal_installment, custom_pct_vector, balloon. S4-T04 debt/sculpting.py: DSCR-targeted sculpt. Solves principal per year = (CFADS/target_dscr) - interest. S4-T05 debt/compliance.py: routine that combines tariff and schedule reshape per user requirement. S4-T06 irr/metrics.py: project IRR, equity IRR, NPV, payback, LCOE, min/avg DSCR, LLCR, PLCR. S4-T07 solver/tariff.py: brentq with bounds [2.0, 8.0]. Inner: full pipeline run. S4-T08 scenarios/runner.py: orchestrates everything: gen → dispatch → commercial → capex → IDC → financial → debt → IRR → solve tariff. Returns ScenarioResult. S4-T09 Tests: solver convergence on known scenario. IRR math validated against numpy_financial. S4-T10 PARITY GATE: nagasamudra_inputs.json solved tariff within ₹0.01/kWh of Excel. Equity IRR within 1bp. S4-T11 CLI: remodel solve-tariff --input scenario.json --target-equity-irr 0.18. S4-T12 Documentation.
Definition of Done: Full v0 engine works via CLI. Solves tariff for the reference scenario. Parity gate passed.