Project finance model review — WadiNoor_Model_VP9.xlsx

Model fileWadiNoor_Model_VP9.xlsx (143,571 bytes)
Version labelv1.2 - 2026-10-08
SHA-256e522c6eb59ca7a97e7b8514a75ab27931db03b19c8e69a1116013d47dee5181a
Review date2026-10-09
Prepared byAI-assisted pilot review (fictional example), repackaged with PF Model Reviewer 1.1
Quality checkNot performed
Report statusdraft

At a glance

Open findingsCritical 1Major 1Minor 1Observation 1
Coverage: 15 families (status of each family)executed-pass 8finding 5not-applicable 0blocked 1unsupported 0not-run 1partly tested (some tests not performed) 7individual tests not performed 8
Tests listed: 23executed-pass 10finding 5blocked 1not-run 7
Saved-value checks in this reportagrees with saved value 6differs from saved value 3not established 0native recalculation not-run

LIMITED COVERAGE — 6 of 15 families fully tested. Not fully tested: STR (blocked; STR-002 blocked); TIM (partly tested; TIM-REST not-run); DBT (partly tested; DBT-SOLVE not-run); RES (partly tested; RES-INIT not-run); WTF (partly tested; WTF-ROLL not-run); FS (partly tested; FS-ROLL not-run); RAT (partly tested; RAT-RET not-run); SCN (partly tested; SCN-RUN not-run); OUT (not-run). No conclusion is drawn about untested items.

Summary

Do not rely on the displayed financing as a current Financial Close sizing solution. VP9-01 (Critical): the pre-close EY-1U P90 yield of 2,200 is in the inputs, but the debt and repayment schedule were not re-solved. On the retained schedule the P90 ratio in operating period 24 (31 December 2039) is 1.0902x against the 1.15x sizing profile of TS-1 s.7. That is a sizing-ratio shortfall, not a breach of the TS-1 s.9 covenants. Retained debt exceeds the live sizing PV by USD 0.0675m (0.066%), a residual rather than the final debt reduction. The workbook itself shows STALE and a failed master check. VP9-02 (Major, financial outcome): a seller default leaves the lenders USD 17.036m short on the retained financing. VP9-03 (Minor): the P90 source label cites EY-1 instead of EY-1U. VP9-04 (Observation): native recalculation was not established.

Reliance

This is a limited-scope model review, not an audit or assurance opinion. It reports only the tests listed under Coverage, on the model version identified above, against the documents listed. Tests marked not-run, blocked or unsupported, and families marked not applicable, were not performed and support no conclusion; a family marked executed-pass covers only its listed tests. The absence of findings in a tested area does not establish that the model is correct, complete or bankable.

Intended reliance: Demonstration only: fictional models; not for credit or investment reliance

PurposeScopeMateriality
Lender-credit model review (diagnostic pilot) of a fictional solar IPP model after a pre-close P90 yield update: structure, solved financing and consistency with the supplied documents.The six supplied scope and transaction files (including EY-1U) and WadiNoor_Model_VP9.xlsx: structural, formula and cache inspection; document consistency; the pilot's own 387 selected numerical comparisons (in its evidence file, separate from the saved-value checks re-run in this report). Commercial suitability, real tax/legal advice, corrective model building and new scenarios excluded. No native recalculation.No engagement materiality was supplied to the pilots; severity followed the consequence for the lender-credit decision. This repackaging grades Critical and Major findings against the engagement-default anchors listed below (defaults, not client thresholds) or a named qualitative criterion. Computational tolerances (amounts USD 1e-6m or tighter, ratios 0.001x or tighter, dates exact) are not materiality or covenant cushions.

Materiality anchors

MetricMajor atCritical atUnitBasis
Minimum or test-date DSCR/LLCR0.010.05xEngagement default for these fictional examples; no client materiality was supplied. Change in a minimum or test-date ratio caused by the finding, or its shortfall against the contractual threshold.
Equity IRR1050bpEngagement default for these fictional examples; no client materiality was supplied. Change in equity IRR caused by the finding.
Senior debt amount0.52% of senior debtEngagement default for these fictional examples; no client materiality was supplied. Change in the senior debt amount caused by the finding.

Findings

VP9-01 · Critical · calculation/implementation error

Test
SCN-001 (also DBT-001, RAT-P90)
Location
Inputs!B32/B64; Solver!B4:C4, B8:C8, E64:F64, B14:B21 and E12:AN12; Debt!AE21:AE35; Ratios!AE4/B13; Cover!B12:B13. EY-1U yield update; TS-1 ss.7 and 10; TX-1.
Expected
The updated P90 yield 2,200 is present, so SIZING mode must provide current debt and a schedule satisfying the live period-wise target (TS-1 s.7).
Observed
Retained debt 102.6283092903 versus live PV 102.5607840033; period-24 scheduled principal 1.3147389162 versus live required 1.1800099121 (USD m). Scheduled debt service 2.5914580815 exceeds the live target 2.4567290773. P90 ratio 1.0902119001 < 1.15. Solver reports STALE, principal residual 0.1347290041 and master FALSE even though zero register rows differ.
Impact
Financing is unreliable for current sizing. The 1.0902x P90 figure at period 24 (31 December 2039) is a sizing-ratio shortfall under TS-1 s.7, not a TS-1 s.9 covenant breach: s.9 uses a different, historic-ratio test (Eq. V2-V4). The USD 0.0675m difference between retained debt and live PV (0.066% of debt) is a residual, not an independently established final debt reduction; a full coupled re-solve changes tax, construction costs, reserves and the schedule (Eq. V6). The model itself shows STALE (Cover!B13) and a failed master check (Cover!B12).
Severity basis
Sizing constraint breached. Minimum P90 sizing ratio on the retained schedule against the 1.15x TS-1 s.7(a)(ii) profile, operating period 24 (31 Dec 2039): -0.059788 x. Effect for the decision: adverse. Contractual threshold crossed: yes. A stale solve: the retained debt no longer satisfies its TS-1 s.7 sizing rule (SKILL.md, "Findings and report", names this case; the criterion allows Critical or Major). P90 CFADS 2.8252 ÷ scheduled debt service 2.5915 = 1.0902x (Eq. V2-V4), a shortfall of 0.0598x against the 1.15x profile; on the default "Minimum or test-date DSCR/LLCR" anchor that is beyond the 0.05x Critical level, so Critical is kept. The breach is of the sizing condition, not of the TS-1 s.9 covenants (trailing-twelve-month Historic DSCR on actual CFADS; not tested in this pilot). On the "Senior debt amount" anchor the retained debt exceeds the live PV by only 0.066% (Eq. V6), below the 0.5% Major level, but that is a diagnostic residual at retained financing, not a converged debt change, so it does not set the grade. Pilot grade Critical retained.
Recommendation
Re-solve from current pre-close documents through the authorised builder, retaining a true solve snapshot and reproducible evidence. Retest all coupled targets/residuals and period-by-period sizing ratios, then native-recalculate a disposable copy. Do not merely refresh the register or override checks.
Status
open
Linked checks / terms / assumptions
V2-DBT; V3-CFD; V4-RAT; V5-DBT; V6-SCN-PV; V6-SCN-DEBT; T-SIZING
Evidence
evidence/pilot-review.md — Findings register, row VP9-01; evidence/independent-calculations.md — Eq. V2, V3, V4, V5, V6; evidence/pilot-calculations.json — checks[201] (test "DSCR P90", cell Ratios!AE4); evidence/pilot-calculations.json — checks[383] (test "PV of period-wise debt-service minima on retained schedule", cell Solver!C8); evidence/pilot-calculations.json — worst_p90; inputs/07_YIELD_UPDATE_EY-1U.md — EY-1U table; inputs/01_TERM_SHEET_TS-1.md — TS-1 s.7

VP9-02 · Major · financial outcome

Test
TRM-001
Location
Term!H4:H12, B14:B15; Time!H3. KT-1 s.12(b); HL-1 s.4; TS-1 s.12.
Expected
Seller-default compensation 85% of senior debt outstanding, no breakage (KT-1 s.12(b)); lender exposure = senior debt + breakage − compensation (HL-1 s.4).
Observed
On retained financing, opening senior debt 102.6283092903 plus hedge breakage 1.6420529486 less Seller-default compensation 87.2340628968 = exposure 17.0362993422 USD m, 16.6% of opening principal. First operating period ends 30 June 2028; calculation uses its opening balances, before its waterfall. Buyer-default and prolonged-FM exposure = 0.
Impact
The supplied contractual recovery formula is correctly implemented (Eq. V1). The amounts depend on the retained financing and must be recalculated after it is re-solved. No model fix is indicated solely because compensation does not cover debt.
Severity basis
Contingent adverse outcome. Seller-default lender exposure at the opening of operating period 1 (H1 2028), retained financing: 17.036299 USD m. Effect for the decision: adverse. Contractual threshold crossed: no. Contingent on a Seller-default termination (KT-1 s.12(b)): 85% compensation and no breakage leave the lenders short by about 16.6% of opening senior debt. No covenant, lock-up or default threshold is crossed and no debt-service shortfall occurs in the base case. The quantitative anchors measure changes caused by a defect; this is a correctly calculated contractual outcome, so the named criterion applies. Pilot grade Major retained.
Recommendation
Include this exposure in the lender-credit assessment. Recalculate amounts after financing is re-solved.
Status
open
Linked checks / terms / assumptions
V1-TRM; T-TERM
Evidence
evidence/pilot-review.md — Findings register, row VP9-02; evidence/independent-calculations.md — Eq. V1; evidence/pilot-calculations.json — checks[384] (test "Seller-default exposure on retained debt", cell Term!H11); inputs/02_PPA_KEY_TERMS_KT-1.md — KT-1 s.12(b); inputs/04_OM_EPC_TECH_HEDGE_TAX.md — HL-1 s.4

VP9-03 · Minor · presentation issue

Test
DOC-001
Location
Inputs!E32; EY-1 and EY-1U.
Expected
The P90 input should cite EY-1U v1.3 dated 20 June 2026, which supersedes EY-1 for the P90 yield.
Observed
Input 2,200 is correct under EY-1U, but the source label Inputs!E32 cites EY-1, whose unamended value is 2,250.
Impact
Traceability is incomplete; this is separate from the substantive stale-solve issue (VP9-01).
Severity basis
No quantified impact. Source label of the P90 yield input: not quantified. Effect for the decision: adverse. Contractual threshold crossed: no. A label-only defect: the input value 2,200 matches EY-1U (check D-P90 agrees), so no output changes. Graded Minor for traceability, as the pilot did.
Recommendation
Cite EY-1U v1.3 dated 20 June 2026 and its precedence over EY-1 for P90 yield. Verify the source label in revision.
Status
open
Linked checks / terms / assumptions
D-P90; D-P90-LABEL; T-YIELD
Evidence
evidence/pilot-review.md — Findings register, row VP9-03; inputs/07_YIELD_UPDATE_EY-1U.md — EY-1U table and supersession sentence; inputs/03_YIELD_REPORT_EY-1.md — EY-1 table, P90 2,250

VP9-04 · Observation · untested item

Test
STR-002
Location
Workbook-wide execution; Cover!B22; Solver solve metadata B24:B30.
Expected
Native recalculation of a disposable copy and traceable solve evidence.
Observed
Prior LibreOffice/external-Python processing is described in the file but not independently rerun. No native engine/version or executed iteration settings can be reported for this pilot.
Impact
All claims of full recalculation, successful external solve, scenario execution, full financial-statement reconciliation and numeric completeness remain unestablished. This limit is not a proven workbook defect. The same gap is GQ3-02 (Major) in the GQ3 example; here the pilot's Observation grade is retained because the decision-relevant conclusion (VP9-01) rests on saved values, independent arithmetic and the model's own STALE flag, so the missing recalculation does not block it.
Severity basis
No quantified impact. Native recalculation of the unchanged workbook: not quantified. Effect for the decision: adverse. Contractual threshold crossed: not established. No numerical error is inferred and the gap is not quantified; the decision-relevant conclusion (VP9-01) does not depend on it. Pilot grade Observation retained.
Recommendation
Obtain a native recalculated disposable copy and traceable solve evidence. Reconcile caches to outputs before changing scenarios.
Status
open
Evidence
evidence/pilot-review.md — Findings register, row VP9-04; evidence/pilot-review.md — Review summary, paragraph 5

Numerical consequences

OutputStatusValue / unitPeriodBasis / limitationEvidence
P90 sizing ratio, operating period 24ESTABLISHED1.090212 x2039-12-31Retained schedule; against the 1.15x TS-1 s.7 profile; not a s.9 covenant testevidence/independent-calculations.md — Eq. V4
Live PV of target debt service on the retained scheduleESTABLISHED102.560784 USD mFinancial CloseTS-1 s.7(a) on saved CFADSevidence/independent-calculations.md — Eq. V6
Retained debt minus live PV (diagnostic residual)ESTABLISHED0.067525 USD mFinancial CloseNot the converged debt reductionevidence/independent-calculations.md — Eq. V6
Period-24 principal residualESTABLISHED0.134729 USD m2039-12-31Scheduled minus live required instalmentevidence/independent-calculations.md — Eq. V5
Seller-default lender exposure on retained financingESTABLISHED17.036299 USD mOpening of H1 2028Document arithmetic; to be refreshed after the re-solveevidence/independent-calculations.md — Eq. V1
Fully re-solved replacement debtNOT_ESTABLISHEDnot establishedFinancial CloseRequires a coupled re-solve of debt, uses, IDC, fees, DSRA, tax and sculpting; The selected arithmetic establishes a stale residual, not a fresh converged financing solution.evidence/pilot-review.md — Findings register, row VP9-01

Coverage by family and test

Family / testStatusScope and explanationEvidence
STRblockedStatic inventory executed; native recalculation not established (VP9-04, untested item).evidence/pilot-review.md — Checks and numerical evidence table, row "STR / executed inventory"; evidence/pilot-review.md — Findings register, row VP9-04
STR-INVexecuted-passID assigned in the v1.1 repackaging (the pilot gives no test number for this row). 11 visible, unprotected sheets; no hidden rows/columns; 7,010 formulas; no named ranges, validations, VBA or external-link parts; no cached error cells; full calculation on load requested, iteration disabled (stored properties, not observed engine execution).evidence/pilot-review.md — Checks and numerical evidence table, row "STR / executed inventory"; evidence/pilot-calculations.json — macro_parts, external_link_parts, validation_count and formula_count entries
STR-002blockedNative recalculation and solve evidence: prior LibreOffice/external-Python processing is described in the file (Cover!B22, Solver!B24:B30) but was not rerun; no native engine was established (VP9-04).evidence/pilot-review.md — Findings register, row VP9-04; evidence/pilot-review.md — Review summary, paragraph 5
TIMexecuted-pass (partly tested)Partial inspection executed; the remainder not run (pilot row "TIM, WTF, FS / partial inspection; remainder not-run").evidence/pilot-review.md — Checks and numerical evidence table, row "TIM, WTF, FS / partial inspection; remainder not-run"
TIM-INSPexecuted-passID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Timeline and period factor inspected.evidence/pilot-review.md — Checks and numerical evidence table, row "TIM, WTF, FS / partial inspection; remainder not-run"
TIM-RESTnot-runID assigned in the v1.1 repackaging (the pilot gives no test number for this row). The remainder of the timeline family beyond that inspection; the pilot records it as "remainder not-run" without itemising it (no independent date or flag recomputation is recorded).evidence/pilot-review.md — Checks and numerical evidence table, row "TIM, WTF, FS / partial inspection; remainder not-run"
REVexecuted-passGeneration re-derived for all 50 periods (combined pilot row REV, OPX, TAX, CFD: selected executed-pass).evidence/pilot-review.md — Checks and numerical evidence table, row "REV, OPX, TAX, CFD / selected executed-pass"
REV-GENexecuted-passID assigned in the v1.1 repackaging (the pilot gives no test number for this row). P50 and P90 generation from 150 MW, updated yields, seasonal split, degradation, availability and curtailment in all 50 operating periods, priced at USD 45/MWh within the CFADS derivation.evidence/pilot-review.md — Checks and numerical evidence table, row "REV, OPX, TAX, CFD / selected executed-pass"; evidence/pilot-calculations.json — checks entries with test="Generation": 100 entries (indices 11-380) covering Ops row 5: 50 cells, H5 to BE5; Ops row 6: 50 cells, H6 to BE6; evidence/independent-calculations.md — Eq. V3
OPXexecuted-passStep-indexed opex and period-24 lifecycle applied within the independent CFADS derivation.evidence/pilot-review.md — Checks and numerical evidence table, row "REV, OPX, TAX, CFD / selected executed-pass"
OPX-STEPexecuted-passID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Step-indexed operating costs and the period-24 lifecycle cost, compared through CFADS (no separate opex comparison recorded).evidence/pilot-review.md — Checks and numerical evidence table, row "REV, OPX, TAX, CFD / selected executed-pass"; evidence/pilot-calculations.json — checks entries with test="CFADS": 100 entries (indices 13-382) covering Waterfall row 5: 50 cells, H5 to BE5; Waterfall row 6: 50 cells, H6 to BE6
CFDexecuted-passP50 and P90 CFADS re-derived for all 50 periods; agree within tolerance.evidence/pilot-review.md — Checks and numerical evidence table, row "REV, OPX, TAX, CFD / selected executed-pass"
CFD-ALLexecuted-passID assigned in the v1.1 repackaging (the pilot gives no test number for this row). P50 and P90 CFADS in all 50 operating periods.evidence/pilot-review.md — Checks and numerical evidence table, row "REV, OPX, TAX, CFD / selected executed-pass"; evidence/pilot-calculations.json — checks entries with test="CFADS": 100 entries (indices 13-382) covering Waterfall row 5: 50 cells, H5 to BE5; Waterfall row 6: 50 cells, H6 to BE6; evidence/independent-calculations.md — Eq. V3
DBTfinding (partly tested)DBT-001 finding (VP9-01): period-wise targets, discounting and P90 ratios reproduce the stale financing. Construction financing and the 5.84% blended rate agree. No new financing solution was built (DBT-SOLVE).evidence/pilot-review.md — Checks and numerical evidence table, row "DBT / selected executed-pass plus finding"; evidence/pilot-review.md — Findings register, row VP9-01
DBT-CONexecuted-passID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Closed-form construction drawings, IDC and undrawn fees at the retained solve inputs; blended all-in rate 5.84% including margin.evidence/pilot-review.md — Checks and numerical evidence table, row "DBT / selected executed-pass plus finding"; evidence/pilot-calculations.json — checks entries with test="Construction financing": 9 entries (indices 1-9) covering Debt row 10: 3 cells, E10 to G10; Debt row 11: 3 cells, E11 to G11; Debt row 13: 3 cells, E13 to G13; evidence/pilot-calculations.json — checks entries with test="Blended all-in rate": 1 entries (indices 0-0) covering Solver!B9
DBT-001findingIndependent period-wise targets, discounting and P90 ratios on the retained schedule reproduce the stale-financing inconsistency (VP9-01).evidence/pilot-review.md — Checks and numerical evidence table, row "DBT / selected executed-pass plus finding"; evidence/independent-calculations.md — Eq. V2, V5, V6; evidence/pilot-review.md — Findings register, row VP9-01
DBT-SOLVEnot-runID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Not performed: no full new financing solution was built (corrective model building was outside the pilot scope), so the converged replacement debt is not established.evidence/pilot-review.md — Checks and numerical evidence table, row "DBT / selected executed-pass plus finding"; evidence/pilot-review.md — Review summary, paragraph 4
RESexecuted-pass (partly tested)Next-period targets agree at all 36 repayment dates; initial COD DSRA and stress behaviour not tested.evidence/pilot-review.md — Checks and numerical evidence table, row "RES / selected executed-pass"
RES-NEXTexecuted-passID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Next-period scheduled-service target on retained balances and schedule at 36 repayment dates, nil at maturity.evidence/pilot-review.md — Checks and numerical evidence table, row "RES / selected executed-pass"; evidence/pilot-calculations.json — checks entries with test="Next-period DSRA target": 36 entries (indices 18-298) covering Debt row 28: 36 cells, H28 to AQ28
RES-INITnot-runID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Initial COD DSRA not independently tested; full stress withdrawal/top-up behaviour not executed.evidence/pilot-review.md — Checks and numerical evidence table, row "RES / selected executed-pass"
WTFexecuted-pass (partly tested)Waterfall formulas inspected (pilot row "TIM, WTF, FS / partial inspection; remainder not-run"); full cash roll-forward and covenant-boundary scenarios not run.evidence/pilot-review.md — Checks and numerical evidence table, row "TIM, WTF, FS / partial inspection; remainder not-run"
WTF-INSPexecuted-passID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Waterfall formulas inspected.evidence/pilot-review.md — Checks and numerical evidence table, row "TIM, WTF, FS / partial inspection; remainder not-run"
WTF-ROLLnot-runID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Full cash and retained-earnings roll-forward and covenant-boundary scenarios not independently executed.evidence/pilot-review.md — Checks and numerical evidence table, row "TIM, WTF, FS / partial inspection; remainder not-run"
FSexecuted-pass (partly tested)Partial inspection (pilot row "TIM, WTF, FS / partial inspection; remainder not-run"); balance-sheet roll-forward not run.evidence/pilot-review.md — Checks and numerical evidence table, row "TIM, WTF, FS / partial inspection; remainder not-run"
FS-INSPexecuted-passID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Source relationships inspected (pilot wording); no financial-statement comparison recorded.evidence/pilot-review.md — Checks and numerical evidence table, row "TIM, WTF, FS / partial inspection; remainder not-run"
FS-ROLLnot-runID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Full balance-sheet roll-forward not independently executed.evidence/pilot-review.md — Checks and numerical evidence table, row "TIM, WTF, FS / partial inspection; remainder not-run"
TAXexecuted-passSeparate P50/P90 loss pools re-derived for all 50 periods against fictional TX-1.evidence/pilot-review.md — Checks and numerical evidence table, row "REV, OPX, TAX, CFD / selected executed-pass"
TAX-POOLexecuted-passID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Independent P50/P90 loss pools and tax in all 50 periods; capitalised cost excludes DSRA. Checked only against fictional TX-1.evidence/pilot-review.md — Checks and numerical evidence table, row "REV, OPX, TAX, CFD / selected executed-pass"; evidence/pilot-calculations.json — checks entries with test="Separate tax loss pool": 100 entries (indices 12-381) covering Tax row 9: 50 cells, H9 to BE9; Tax row 14: 50 cells, H14 to BE14; evidence/pilot-calculations.json — checks entries with test="Capitalised cost excludes DSRA": 1 entries (indices 10-10) covering Tax!H3
RATfinding (partly tested)RAT-P90 finding (VP9-01): P90 minimum 1.0902x reproduced at period 24, a sizing-ratio shortfall, not a TS-1 s.9 covenant breach. No complete independent XIRR or LLCR retest.evidence/pilot-review.md — Checks and numerical evidence table, row "RAT / executed finding"; evidence/pilot-review.md — Findings register, row VP9-01
RAT-P90findingID assigned in the v1.1 repackaging (the pilot gives no test number for this row). P90 DSCR in all 36 repayment periods; minimum 1.0902119001x at period 24 (2039-12-31) against the 1.15x sizing profile (VP9-01).evidence/pilot-review.md — Checks and numerical evidence table, row "RAT / executed finding"; evidence/pilot-calculations.json — checks entries with test="DSCR P90": 36 entries (indices 17-297) covering Ratios row 4: 36 cells, H4 to AQ4; evidence/independent-calculations.md — Eq. V4
RAT-RETnot-runID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Complete independent XIRR and LLCR retest.evidence/pilot-review.md — Checks and numerical evidence table, row "RAT / executed finding"
SCNfinding (partly tested)SCN-001 finding (VP9-01): SIZING mode, exact register and live residuals inspected; runtime scenarios not run.evidence/pilot-review.md — Checks and numerical evidence table, row "SCN / finding; runtime not-run"; evidence/pilot-review.md — Findings register, row VP9-01
SCN-001findingSIZING selection, exact sizing-input register (zero rows differ) and live residual checks inspected: the solve is STALE while the register matches (VP9-01).evidence/pilot-review.md — Checks and numerical evidence table, row "SCN / finding; runtime not-run"; evidence/independent-calculations.md — Eq. V5, V6; evidence/pilot-review.md — Findings register, row VP9-01
SCN-RUNnot-runID assigned in the v1.1 repackaging (the pilot gives no test number for this row). No scenario changes or external solve performed.evidence/pilot-review.md — Checks and numerical evidence table, row "SCN / finding; runtime not-run"
OUTnot-runNot run: the pilot's "Checks and numerical evidence" table has no OUT row and no output-trace test is recorded. Cover!B12:B13 status flags were read only as evidence for VP9-01.
TRMfindingSeller exposure reconstructed and Buyer/force-majeure results checked; financial outcome VP9-02. Amounts depend on the retained financing.evidence/pilot-review.md — Checks and numerical evidence table, row "TRM / selected executed-pass and outcome"; evidence/pilot-review.md — Findings register, row VP9-02
TRM-001findingOpening-period Seller-default exposure independently reconstructed (KT-1 s.12(b), HL-1 s.4); Buyer-default and force-majeure exposure nil; financial outcome VP9-02.evidence/pilot-review.md — Checks and numerical evidence table, row "TRM / selected executed-pass and outcome"; evidence/pilot-calculations.json — checks[384] (test "Seller-default exposure on retained debt", cell Term!H11); evidence/pilot-calculations.json — checks[385] (test "Buyer-default exposure", cell Term!H10); evidence/independent-calculations.md — Eq. V1
DOCfindingSource hierarchy established (EY-1U supersedes EY-1 for P90 only); the P90 source label cites EY-1 (VP9-03).evidence/pilot-review.md — Identity and source hierarchy, paragraph 2; evidence/pilot-review.md — Findings register, row VP9-03
DOC-001findingControlling sources and precedence traced: the P90 input 2,200 matches EY-1U, but its source label cites EY-1 (VP9-03).evidence/pilot-review.md — Identity and source hierarchy, paragraph 2; evidence/pilot-review.md — Findings register, row VP9-03; inputs/07_YIELD_UPDATE_EY-1U.md — EY-1U table and supersession sentence

Saved-value checks in this report

ID / cellExpectedSavedDifferenceUnit / periodToleranceStatusMethod, evidence and disposition
V1-TRM / Term!H1117.03629917.036299≈0USD m / Opening of H1 20281e-06agrees with saved valueSenior debt + breakage − 85% compensation, retained financing; KT-1 s.12(b); HL-1 s.4; evidence/independent-calculations.md — Eq. V1
V3-CFD / Waterfall!AE62.8252382.825238≈0USD m / Operating period 24 (2039-12-31)1e-06agrees with saved valueClosed-form P90 CFADS with the EY-1U yield; EY-1U; TS-1 s.7, s.10; TX-1; evidence/independent-calculations.md — Eq. V3
V2-DBT / Debt!AE222.5914582.591458≈0USD m / Operating period 241e-06agrees with saved valueInterest + net swap + retained instalment; TS-1 s.5, s.8(a); HL-1; evidence/independent-calculations.md — Eq. V2
V4-RAT / Ratios!AE41.0902121.090212≈0x / Operating period 241e-06agrees with saved valueP90 CFADS / scheduled debt service (the model displays the shortfall correctly); TS-1 s.7(a)(ii); evidence/independent-calculations.md — Eq. V4
V5-DBT / Debt!AE211.180011.3147390.134729USD m / Operating period 241e-06differs from saved valueRequired instalment = live target − interest − net swap; compared with the retained scheduled instalment; TS-1 s.7 (Repayment Schedule definition); evidence/independent-calculations.md — Eq. V5
V6-SCN-PV / Solver!C4102.560784102.560784≈0USD m / Financial Close (retained schedule)1e-06agrees with saved valueLive min(PV of target profile, gearing cap); TS-1 s.7; EY-1U; evidence/independent-calculations.md — Eq. V6
V6-SCN-DEBT / Solver!B4102.560784102.6283090.067525USD m / Financial Close (retained schedule)1e-06differs from saved valueRetained debt compared with the live sizing result; the difference is a diagnostic residual, not the converged reduction; TS-1 s.7(a); EY-1U; evidence/independent-calculations.md — Eq. V6
D-P90 / Inputs!B322,2002,2000MWh/MWac/yr / Year 10agrees with saved valueStated document value; EY-1U P90 yield, superseding EY-1 for P90 only; inputs/07_YIELD_UPDATE_EY-1U.md — EY-1U table, P90 row (2,200)
D-P90-LABEL / Inputs!E32EY-1UEY-1text / Year 1exactdiffers from saved valueExact text comparison of the P90 source label with the superseding document code; EY-1U supersession sentence; inputs/07_YIELD_UPDATE_EY-1U.md — EY-1U heading and supersession sentence

Financing terms and source precedence

IDTopicRequirementSourceEffectivePrecedenceModel cellsStatus / conclusion
T-SIZINGDebt sizing with the current P90 yieldDebt = lowest of PV of min(P50 CFADS/1.30, P90 CFADS/1.15) at the Blended All-in Rate and 80% of project costs; Repayment Schedule = target debt service less interest and hedginginputs/01_TERM_SHEET_TS-1.md — TS-1 s.7Financial Close 2026-06-30EY-1U (2026-06-20) precedes FC, so the sizing must use itSolver!B4:C10, Solver!E12:AN12, Debt!H30:AQ37mismatch: Stale: the retained financing does not satisfy the live sizing condition (VP9-01).
T-YIELDP90 yieldP90 2,200 MWh/MWac/yr; all other EY-1 values unchangedinputs/07_YIELD_UPDATE_EY-1U.md — EY-1U table2026-06-20, before FCEY-1U supersedes EY-1 for P90 yield onlyInputs!B32, Inputs!E32, Solver!E64:F64mismatch: Value matches EY-1U; the source label cites EY-1 (VP9-03).
T-TERMSeller-default termination recovery85% of senior debt outstanding; no breakage; no equity amountinputs/02_PPA_KEY_TERMS_KT-1.md — KT-1 s.12(b), read with HL-1 s.4PPA termNo supplied conflictTerm!H4:H12, Inputs!B47:B48matched: Implemented as documented on the retained financing (VP9-02).
T-COVENANTHistoric DSCR covenantTrailing-twelve-month Historic DSCR on actual CFADS; lock-up < 1.15x, default < 1.05xinputs/01_TERM_SHEET_TS-1.md — TS-1 s.9(a)-(c)2026-06-30Only sourceWaterfall!H28:AQ30not-tested: Not tested in this pilot. VP9-01 concerns the s.7 sizing ratio, not this covenant.

Documents

FileVersionEffective dateAuthority
inputs/00_REVIEW_SCOPE.md2.0, dated 2026-10-082026-10-08 (scope date; no contractual effective date)Engagement scope (fictional): lists the documents in scope and the review request
inputs/01_TERM_SHEET_TS-1.md1.22026-06-30Senior facility term sheet: controlling for financing, reserve, covenant and waterfall terms
inputs/02_PPA_KEY_TERMS_KT-1.md1.2Not stated; PPA term 25 years from Scheduled COD 2027-12-31 (s.3)PPA key terms: controlling for tariff, curtailment treatment and termination compensation
inputs/03_YIELD_REPORT_EY-1.md1.2Not statedIndependent engineer yield summary: adviser source for yield, degradation, availability and curtailment; its P90 yield is superseded by EY-1U
inputs/04_OM_EPC_TECH_HEDGE_TAX.md1.2Not statedSupporting summaries OM-1, EP-1, TN-1, HL-1 and TX-1, plus stated assumptions without supporting documents
inputs/07_YIELD_UPDATE_EY-1U.md1.3, dated 2026-06-202026-06-20, before Financial Close (2026-06-30)Supersedes EY-1 for the P90 yield only

Limitations

Native-engine status: not-run.

Generated by PF Model Reviewer 1.8.0 on 2026-10-10 20:45 UTC. Workbook inventoried 2026-10-10 20:45:31 UTC. Generation checks record structure and internal consistency, not the correctness of the professional conclusions.