Remodel/sprints/SPRINT_04.md
Mannu e6dc39aa33 [S1-T12/T13] P&L revenue breakdown + collapsible rows + UI polish
- 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>
2026-05-13 10:42:36 +05:30

17 lines
No EOL
1.3 KiB
Markdown

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.