Project finance model review — WadiNoor_Model_PU9.xlsx

Model fileWadiNoor_Model_PU9.xlsx (143,557 bytes)
Version labelv1.2 - 2026-10-08
SHA-2568216d6663403bd58995bb8306cbd81a2c03713afbf4dbb16d6fa561f5b163be1
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 0Major 3Minor 0Observation 1
Coverage: 15 families (status of each family)executed-pass 9finding 4not-applicable 0blocked 2unsupported 0not-run 0partly tested (some tests not performed) 8individual tests not performed 10
Tests listed: 33executed-pass 16finding 5not-applicable 2blocked 4not-run 6
Saved-value checks in this reportagrees with saved value 2differs from saved value 5not established 0native recalculation not-run

LIMITED COVERAGE — 5 of 15 families fully tested. Not fully tested: STR (blocked; STR-ENGINE blocked); TIM (partly tested; TIM-MUT not-run); REV (blocked; REV-001 blocked); DBT (partly tested; DBT-SOLVE blocked); WTF (partly tested; WTF-ADV not-run); TAX (partly tested; TAX-POSTAM not-run); RAT (partly tested; RAT-POSTAM not-run); SCN (partly tested; SCN-STRESS not-run); TRM (partly tested; TRM-STRESS not-run); DOC (partly tested; DOC-GN1 blocked). Tests marked not applicable: FS-BS, RAT-LLCR. No conclusion is drawn about untested items.

Summary

Do not rely on the unchanged outputs for the amended facility. F-01 (Major; the pilot graded it Critical): the model omits the AM-1 margin increase to 2.25% from 1 January 2030, so interest and the preceding reserve target are each understated by USD 0.1175m in the first affected period. The pilot's 1.2736x is the period ratio for H1 2030 including the tax shield; the contractual trailing-twelve-month Historic DSCR (TS-1 s.9(a)) at 30 June 2030 is 1.2867x and the lowest over the remaining tenor 1.2738x, all above the 1.15x lock-up. F-02 (Major): GN-1 sets curtailment at 1.5% while the PPA assessment uses 1%, and no document settles precedence; this affects operating CFADS and covenant headroom only, not debt sizing. F-03 (Major, financial outcome): a seller default leaves the lenders USD 17.036m short. RP-01 (Observation): AM-1 and GN-1 are dated after the model version and the review date.

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 integrity and financing-document consistency (diagnostic pilot) of a fictional solar IPP model, against a term-sheet amendment and a grid notice.inputs/00_REVIEW_SCOPE.md, the six fictional transaction documents (TS-1, KT-1, EY-1, supporting summaries, AM-1, GN-1) and WadiNoor_Model_PU9.xlsx. Formulas and saved values inspected with Python/openpyxl. The pilot's own 58 selected numerical comparisons (54 agree; four differences are instances of F-01) are in its evidence file, separate from the saved-value checks re-run in this report. Not native recalculation. No commercial suitability opinion. The v1.1 repackaging adds the independent calculations in evidence/independent-calculations.md.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

F-01 · Major · documentary mismatch

Test
DBT-AM (also RES-AM)
Location
Debt!L19:AQ19, Debt!K28:AP28; Inputs!B19; consequential Tax, Waterfall and Ratios outputs. AM-1 clauses 1-3 overriding TS-1 s.5; TS-1 s.8(a).
Expected
Margin 2.25% for interest periods beginning on or after 2030-01-01, while the original FC debt, gearing, principal schedule and sizing rate stay fixed (AM-1 cl.1-2). At 2030-06-30: interest 2.9363011664 on opening principal 93.9616373242; the preceding 2029-12-31 DSRA target 5.1067115037.
Observed
A single 2.00% margin throughout (Inputs!B19). Debt!L19 interest 2.8188491197 (understated by 0.1174520467); Debt!K28 DSRA target 4.9892594571. Later interest differences at lifecycle and final repayment also persist.
Impact
Pilot graded Critical; graded Major under the v1.1 severity anchors because the largest change in the contractual Historic DSCR (TS-1 s.9(a)) is −0.0262x (2030-12-31; −0.0133x at the first affected test date, 2030-06-30), which reaches the 0.01x Major anchor but not the 0.05x Critical anchor, and every test date stays above the 1.15x lock-up. Interest and the preceding reserve target are each understated by USD 0.1174520467m. Conditional on the existing 1% curtailment basis, in the first affected period tax becomes 0.0280951643, CFADS 6.5036551012 and scheduled debt service 5.1067115037 (Eq. P3-P5). The pilot's "DSCR 1.2736x" (1.2735505220) is the period ratio for H1 2030 including the tax shield, not the covenant test; the contractual trailing-twelve-month Historic DSCR (TS-1 s.9(a)) at 30 Jun 2030 is 1.2867x against the 1.15x lock-up (Eq. P6-P7), and the lowest over the remaining tenor is 1.2738x at 2030-12-31 (Eq. P8). The model version (v1.2, 2026-10-08) predates AM-1 (dated 2029-11-15); in a live file this would read as a model not rolled forward for a later amendment (RP-01).
Severity basis
Anchor: Minimum or test-date DSCR/LLCR. Historic DSCR (TS-1 s.9(a)): largest change at any test date with AM-1 applied and the FC schedule fixed (2030-12-31): -0.02616 x. Effect for the decision: adverse. Contractual threshold crossed: no. The Historic DSCR falls by 0.0133x at 2030-06-30 (1.3000x to 1.2867x, Eq. P7) and by up to 0.0262x from 2030-12-31, when both trailing periods carry the 2.25% margin; the lowest is 1.2738x (Eq. P8). This reaches the 0.01x Major anchor but not the 0.05x Critical anchor. Every test date stays above the 1.15x lock-up and 1.05x default levels after 4 dp rounding, conditional on the modelled 1% curtailment.
Recommendation
Apply an effective-dated operating margin and the next-period margin in reserve targeting; retain FC parameters per AM-1 cl.2. Recalculate tax, cash, covenants and outputs without re-sizing the FC schedule. Do not simply replace the global margin input, which also feeds construction and sizing. Reconcile and retest.
Status
open
Linked checks / terms / assumptions
P2-DBT; P3-RES; P5-CFD; P7-RAT; T-AM1-MARGIN
Evidence
evidence/pilot-review.md — Findings register, row F-01; evidence/independent-calculations.md — Eq. P2, P3, P4, P5, P6, P7, P8; evidence/pilot-calculations.json — selected_tests[19] (id "DBT-AM", cell Debt!L19); evidence/pilot-calculations.json — selected_tests[52] (id "RES-AM", cell Debt!K28); evidence/pilot-calculations.json — amendment_first_period; inputs/05_AMENDMENT_AM-1.md — AM-1 cl.1-3; inputs/01_TERM_SHEET_TS-1.md — TS-1 s.5, s.8(a), s.9(a)

F-02 · Major · assumption concern

Test
DOC-001 (also REV-001)
Location
Inputs!B35, E35; Ops!H5:BE6, H10:BE11; downstream CFADS and covenant headroom (the pilot wrote "downstream sizing/coverage"; corrected in v1.1, see impact). GN-1 clauses 1-2 versus KT-1 s.6 and EY-1.
Expected
Establish which instrument governs uncompensated curtailment: KT-1 s.6 / EY-1 (1% of generation) or GN-1 cl.1 (1.5% from COD). GN-1 cl.2 does not state whether it amends, supplements or is subordinate to the PPA assessment.
Observed
Model uses 1% (Inputs!B35, labelled "EY-1; KT-1 s.6"). No definitive replacement rate can be selected from the supplied documents. Conditional H1 2028 revenue is 7.858620 at 1% and 7.818930 at 1.5%, a 0.039690 difference (Eq. P9): a diagnostic alternative only, not an asserted correct revenue or quantified debt-capacity effect.
Impact
Correction made in the 1.1 repackaging (the pilot wrote "downstream sizing"): the conflict affects operating CFADS and covenant headroom only, not debt sizing, because GN-1 (dated 2027-03-01) post-dates Financial Close (2026-06-30) and TS-1 s.4 and AM-1 cl.2 lock the Senior Debt Amount and Repayment Schedule. If the 1.5% reading governed, the Historic DSCR would fall by 0.0066x at the first test date and by up to 0.0105x at 2040-06-30, lowest 1.2923x (Eq. P10); with AM-1 also applied the lowest is 1.2673x (Eq. P11), above the 1.15x lock-up. GN-1 is dated after the model version and the review date (RP-01).
Severity basis
Material conclusion blocked. Historic DSCR (TS-1 s.9(a)): largest change at any test date if GN-1's 1.5% governed, debt fixed (2040-06-30; diagnostic): -0.010535 x. Effect for the decision: adverse. Contractual threshold crossed: no. Unresolved precedence between GN-1 and the PPA assessment blocks the conclusion on revenue, CFADS and covenant headroom (SKILL.md, "Findings and report", names this case). The conclusion is material on the default anchors: debt sizing is unaffected, but if the 1.5% reading governed the Historic DSCR would fall by 0.0066x at the first test date and by 0.0105x at 2040-06-30, whose trailing window includes the period-24 lifecycle cost with nil tax (Eq. P10). That reaches the 0.01x Major anchor of "Minimum or test-date DSCR/LLCR", narrowly: a boundary result. The lowest Historic DSCR stays above the 1.15x lock-up (1.2923x; 1.2673x with AM-1 also applied), so there is no breach. Pilot grade Major retained.
Recommendation
Obtain the authorised interpretation of document precedence and record it. Pending resolution, label the revenue basis and the affected CFADS and covenant-headroom conclusions conditional; retain both documentary positions. Do not silently treat GN-1 as an effective amendment.
Status
open
Linked checks / terms / assumptions
D-CURT-KT1; D-CURT-GN1; T-CURTAIL
Evidence
evidence/pilot-review.md — Findings register, row F-02; evidence/independent-calculations.md — Eq. P9, P10, P11; evidence/pilot-calculations.json — grid_conflict; inputs/06_GRID_NOTICE_GN-1.md — GN-1 cl.1-2; inputs/02_PPA_KEY_TERMS_KT-1.md — KT-1 s.6; inputs/03_YIELD_REPORT_EY-1.md — EY-1 table, uncompensated curtailment

F-03 · Major · financial outcome

Test
TRM-001
Location
Term!H4:H11, B14; Cover!B21. KT-1 s.12(b), HL-1 s.4.
Expected
Seller-default compensation is 85% of the senior claim and excludes swap breakage (KT-1 s.12(b)); lender exposure = senior debt + breakage − compensation (HL-1 s.4).
Observed
At the first operating period (ending 30 June 2028, using opening balances before the waterfall) the independently calculated exposure is 17.0362993422, agreeing with the model: 15% × 102.6283092903 plus 2% × 80% × 102.6283092903 (Eq. P1).
Impact
Lender recovery shortfall on a seller default, about 16.6% of opening senior debt. Buyer-default and force-majeure formula paths include breakage and show zero exposure on the stated basis. Not a calculation error, and it does not establish commercial unsuitability.
Severity basis
Contingent adverse outcome. Seller-default lender exposure at the opening of operating period 1 (H1 2028): 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
Retain the reported seller-default shortfall as a credit outcome.
Status
open
Linked checks / terms / assumptions
P1-TRM; T-TERM
Evidence
evidence/pilot-review.md — Findings register, row F-03; evidence/independent-calculations.md — Eq. P1; evidence/pilot-calculations.json — selected_tests[56] (id "TRM-001", 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

RP-01 · Observation · documentary mismatch

Test
DOC-DATE
Location
Document register: inputs/05_AMENDMENT_AM-1.md (dated 15 November 2029) and inputs/06_GRID_NOTICE_GN-1.md (dated 1 March 2027); model version label Cover!B4 "v1.2 - 2026-10-08"; review date 2026-10-09.
Expected
Documents relied on as controlling are dated on or before the model version and the review date, or their later dating is explained.
Observed
AM-1 (2029-11-15) and GN-1 (2027-03-01) are both dated after the model version label (2026-10-08) and after the review date (2026-10-09).
Impact
Added in the 1.1 repackaging: provenance check (documents dated after the model version); not a pilot finding. In these fictional examples the dates are an artefact of the scenario design; in a live file they would be a provenance red flag. The documents' authenticity, execution status and dating would need confirming before reliance, and F-01 would read as a model not rolled forward for a later amendment. No numerical consequence.
Severity basis
No quantified impact. Document dates against the model version and the review date: not quantified. Effect for the decision: adverse. Contractual threshold crossed: no. A provenance flag with no numerical consequence for the tested outputs.
Recommendation
Confirm the provenance, execution status and dates of AM-1 and GN-1 with the authorised owner before relying on them, and record the outcome in the document register.
Status
open
Evidence
inputs/05_AMENDMENT_AM-1.md — heading: "Dated 15 November 2029"; inputs/06_GRID_NOTICE_GN-1.md — heading: "Dated 1 March 2027"; inputs/WadiNoor_Model_PU9.xlsx — Cover!B4 "v1.2 - 2026-10-08"; evidence/pilot-review.md — Scope, provenance and method, paragraphs 1-2 (document dates; workbook label v1.2 - 2026-10-08)

Numerical consequences

OutputStatusValue / unitPeriodBasis / limitationEvidence
Interest understatement, first affected periodESTABLISHED0.117452 USD mH1 2030Document arithmetic on the FC scheduleevidence/independent-calculations.md — Eq. P2
DSRA target understatement at 2029-12-31ESTABLISHED0.117452 USD m2029-12-31TS-1 s.8(a) with the AM-1 marginevidence/independent-calculations.md — Eq. P3
Period ratio H1 2030 under AM-1 (not the covenant test)ESTABLISHED1.273551 xH1 2030Single-period CFADS / scheduled debt service including the tax shield; conditional on 1% curtailmentevidence/independent-calculations.md — Eq. P6
Historic DSCR at 2030-06-30 under AM-1 (TS-1 s.9(a))ESTABLISHED1.286686 xTest date 2030-06-30Trailing twelve months; conditional on 1% curtailment; lock-up 1.15x not crossedevidence/independent-calculations.md — Eq. P7
Lowest Historic DSCR over the remaining tenor under AM-1ESTABLISHED1.27384 xTest date 2030-12-31v1.1 scan on saved values with the FC schedule fixed; conditional on 1% curtailmentevidence/independent-calculations.md — Eq. P8
Largest Historic DSCR change if GN-1 1.5% governed (diagnostic)ESTABLISHED-0.010535 xTest date 2040-06-30v1.1 scan on saved values; debt fixed; precedence unresolvedevidence/independent-calculations.md — Eq. P10
H1 2028 revenue difference, 1% versus 1.5% curtailment (diagnostic)ESTABLISHED0.03969 USD mH1 2028Closed-form revenue at each documentary rateevidence/independent-calculations.md — Eq. P9
Seller-default lender exposureESTABLISHED17.036299 USD mOpening of H1 2028Document arithmetic on the solved debtevidence/independent-calculations.md — Eq. P1
Amended full-life equity XIRRNOT_ESTABLISHEDnot establishedWhole projectRequires a corrected model: distributions depend on the full waterfall, reserve top-ups and lock-up tests under AM-1; Neither the pilot nor this repackaging recomputed the amended distributions.evidence/pilot-review.md — Coverage and limitations table, row RAT/OUT, "Not run, blocked or not applicable" column

Coverage by family and test

Family / testStatusScope and explanationEvidence
STRblockedStatic inventory executed-pass; native recalculation blocked: no approved native engine was available in the review environment (the same gap as GQ3-02 and VP9-04; the PU9 pilot raised no finding for it).evidence/pilot-review.md — Coverage and limitations table, row STR, "Executed / result" column
STR-INVexecuted-passID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Inventory of all 11 sheets, formula and cached-error scan: no cached errors, hidden sheets/rows/columns, protection, validations, external-link parts or VBA parts; iteration off; fullCalcOnLoad true.evidence/pilot-review.md — Coverage and limitations table, row STR, "Executed / result" column; evidence/pilot-calculations.json — sheets, errors, calculation and active_features entries
STR-ENGINEblockedID assigned in the v1.1 repackaging (the pilot gives no test number for this row). No approved native engine was available in the review environment, so native recalculation of the unchanged base case, whole-workbook formula evaluation and visual Excel inspection could not be performed; exhaustive dependency/circularity analysis was not done and the author's LibreOffice note was not reproduced. The same gap is GQ3-02 and VP9-04 in the other examples; the PU9 pilot raised no finding for it.evidence/pilot-review.md — Coverage and limitations table, row STR, "Not run, blocked or not applicable" column; evidence/pilot-review.md — Scope, provenance and method, paragraph 3 ("This is not native workbook recalculation")
TIMexecuted-pass (partly tested)Timeline inspected; no date-mutation scenarios.evidence/pilot-review.md — Coverage and limitations table, row TIM, "Executed / result" column
TIM-INSPexecuted-passID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Exact semi-annual dates, operating-year logic, repayment/lifecycle boundaries and the 0.5 period factor inspected against TS-1 and EY-1.evidence/pilot-review.md — Coverage and limitations table, row TIM, "Executed / result" column
TIM-MUTnot-runID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Date-mutation scenarios.evidence/pilot-review.md — Coverage and limitations table, row TIM, "Not run, blocked or not applicable" column
REVblockedREV-001 blocked: the 1% revenue arithmetic agrees in seven periods, but which curtailment rate governs is unresolved (F-02).evidence/pilot-review.md — Coverage and limitations table, row REV/OPX, "Executed / result" column
REV-001blockedRevenue in operating periods 1, 5, 24, 36, 40, 41 and 50 recalculated on the 1% curtailment path and agrees; the revenue authority is blocked by the unresolved GN-1 precedence (F-02). No full contract beyond the key terms.evidence/pilot-review.md — Coverage and limitations table, row REV/OPX, "Executed / result" column; evidence/pilot-review.md — Coverage and limitations table, row REV/OPX, "Not run, blocked or not applicable" column; evidence/pilot-calculations.json — selected_tests entries with id="REV-001": 7 entries (indices 10-46) covering Ops row 10: 7 cells, H10 to BE10; evidence/pilot-review.md — Findings register, row F-02
OPXexecuted-passAnnual-step opex and lifecycle arithmetic agree in seven periods.evidence/pilot-review.md — Coverage and limitations table, row REV/OPX, "Executed / result" column
OPX-001executed-passOperating costs (OM-1 and stated assumptions) in operating periods 1, 5, 24, 36, 40, 41 and 50.evidence/pilot-review.md — Coverage and limitations table, row REV/OPX, "Executed / result" column; evidence/pilot-calculations.json — selected_tests entries with id="OPX-001": 7 entries (indices 11-47) covering Ops row 14: 7 cells, H14 to BE14
OPX-002executed-passLifecycle cost (TN-1) in the same periods, including period 24.evidence/pilot-review.md — Coverage and limitations table, row REV/OPX, "Executed / result" column; evidence/pilot-calculations.json — selected_tests entries with id="OPX-002": 7 entries (indices 12-48) covering Ops row 15: 7 cells, H15 to BE15
CFDexecuted-passSelected CFADS reconciliation executed-pass (uses the saved tax).evidence/pilot-review.md — Coverage and limitations table, row CFD/TAX, "Executed / result" column
CFD-001executed-passCFADS per TS-1 s.10 in the seven selected periods, dependent on the saved tax.evidence/pilot-review.md — Coverage and limitations table, row CFD/TAX, "Executed / result" column; evidence/pilot-calculations.json — selected_tests entries with id="CFD-001": 7 entries (indices 15-51) covering Waterfall row 5: 7 cells, H5 to BE5
DBTfinding (partly tested)DBT-AM finding (F-01): AM-1 margin omitted from 2030. Construction financing and hedge settlements agree. The external solver and its source were unavailable, so no converged debt result is claimed (DBT-SOLVE blocked).evidence/pilot-review.md — Coverage and limitations table, row DBT, "Executed / result" column; evidence/pilot-review.md — Findings register, row F-01
DBT-CONexecuted-passAll three construction drawings, IDC and commitment fees (TS-1 s.3, 5, 6; EP-1).evidence/pilot-review.md — Coverage and limitations table, row DBT, "Executed / result" column; evidence/pilot-calculations.json — selected_tests entries with id="DBT-CON": 9 entries (indices 0-8) 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
DBT-HEDGEexecuted-passNet swap settlements in the seven selected periods (HL-1).evidence/pilot-review.md — Coverage and limitations table, row DBT, "Executed / result" column; evidence/pilot-calculations.json — selected_tests entries with id="DBT-HEDGE": 7 entries (indices 14-50) covering Debt row 20: 7 cells, H20 to BE20
DBT-AMfindingOperating interest with the effective-dated AM-1 margin in the seven selected periods: H1 2028 agrees (pre-amendment); 2030-06-30, 2039-12-31 and 2045-12-31 differ (F-01); post-maturity periods are approximately zero.evidence/pilot-review.md — Coverage and limitations table, row DBT, "Executed / result" column; evidence/pilot-calculations.json — selected_tests entries with id="DBT-AM": 7 entries (indices 13-49) covering Debt row 19: 7 cells, H19 to BE19; evidence/independent-calculations.md — Eq. P2; evidence/pilot-review.md — Findings register, row F-01
DBT-SOLVEblockedID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Full external fixed-point solve, convergence history and source code: unavailable. Fixed-schedule links and the period-minimum target structure were inspected.evidence/pilot-review.md — Coverage and limitations table, row DBT, "Not run, blocked or not applicable" column
RESfindingRES-AM finding (F-01): the 2029-12-31 DSRA target omits the AM-1 margin. First-period target agrees.evidence/pilot-review.md — Coverage and limitations table, row RES/WTF, "Executed / result" column; evidence/pilot-review.md — Findings register, row F-01
RES-001executed-passFirst-period DSRA target Debt!H28 (TS-1 s.8(a); HL-1).evidence/pilot-review.md — Coverage and limitations table, row RES/WTF, "Executed / result" column; evidence/pilot-calculations.json — selected_tests[55] (id "RES-001", cell Debt!H28)
RES-AMfindingDSRA target at 2029-12-31 for the next period, which begins on 2030-01-01 and carries the AM-1 margin (TS-1 s.8(a); AM-1 cl.1): differs (F-01).evidence/pilot-review.md — Coverage and limitations table, row RES/WTF, "Executed / result" column; evidence/pilot-calculations.json — selected_tests[52] (id "RES-AM", cell Debt!K28); evidence/independent-calculations.md — Eq. P3; evidence/pilot-review.md — Findings register, row F-01
WTFexecuted-pass (partly tested)Waterfall formulas inspected; adverse scenarios not executed.evidence/pilot-review.md — Coverage and limitations table, row RES/WTF, "Executed / result" column
WTF-FORMexecuted-passID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Formula inspection of DSRA withdrawal/release/top-up, unpaid obligations, negative unrestricted cash, retained earnings and covenant rounding.evidence/pilot-review.md — Coverage and limitations table, row RES/WTF, "Executed / result" column
WTF-ADVnot-runID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Executed adverse waterfall scenarios and remedy/default-boundary tests; the base-case absence of arrears does not test these branches.evidence/pilot-review.md — Coverage and limitations table, row RES/WTF, "Not run, blocked or not applicable" column
FSexecuted-passSelected roll-forward formulas inspected; full three-statement model not supplied (balance-sheet testing not applicable).evidence/pilot-review.md — Coverage and limitations table, row FS, "Executed / result" column
FS-ROLLexecuted-passID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Construction funding and selected debt, reserve and cash roll-forward formulas inspected.evidence/pilot-review.md — Coverage and limitations table, row FS, "Executed / result" column
FS-BSnot-applicableID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Full balance sheet: not supplied in the model, so full balance-sheet assurance is not applicable.evidence/pilot-review.md — Coverage and limitations table, row FS, "Not run, blocked or not applicable" column
TAXexecuted-pass (partly tested)Selected tax arithmetic executed-pass; post-amendment tax/loss roll-forward not recomputed by the pilot.evidence/pilot-review.md — Coverage and limitations table, row CFD/TAX, "Executed / result" column
TAX-BASEexecuted-passTax-depreciation base excludes DSRA cash (TX-1).evidence/pilot-review.md — Coverage and limitations table, row CFD/TAX, "Executed / result" column; evidence/pilot-calculations.json — selected_tests[9] (id "TAX-BASE", cell Tax!H3)
TAX-001executed-passFirst-period P50 tax; separate P90 loss-pool formulas inspected (TX-1).evidence/pilot-review.md — Coverage and limitations table, row CFD/TAX, "Executed / result" column; evidence/pilot-calculations.json — selected_tests[53] (id "TAX-001", cell Tax!H9)
TAX-POSTAMnot-runID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Post-amendment full tax and loss-pool roll-forward (the pilot computed only the first affected period; the v1.1 scan in Eq. P8 is evidence for F-01, not a pilot test). Real-world tax and accounting excluded; TX-1 is fictional.evidence/pilot-review.md — Coverage and limitations table, row CFD/TAX, "Not run, blocked or not applicable" column
RATexecuted-pass (partly tested)First-period DSCR and dated XIRR agree on the unamended basis; amended covenant path not computed by the pilot (no assertion of amended covenant default); no contractual LLCR definition supplied.evidence/pilot-review.md — Coverage and limitations table, row RAT/OUT, "Executed / result" column
RAT-001executed-passFirst-period DSCR Ratios!H3 (TS-1 s.10, s.8(a)).evidence/pilot-review.md — Coverage and limitations table, row RAT/OUT, "Executed / result" column; evidence/pilot-calculations.json — selected_tests[54] (id "RAT-001", cell Ratios!H3)
RAT-XIRRexecuted-passActual/365 equity XIRR on the saved dated flows: 6.4861429933% agrees. Does not validate those flows under AM-1.evidence/pilot-review.md — Coverage and limitations table, row RAT/OUT, "Executed / result" column; evidence/pilot-calculations.json — selected_tests[57] (id "RAT-XIRR", cell Ratios!B16)
RAT-LLCRnot-applicableID assigned in the v1.1 repackaging (the pilot gives no test number for this row). LLCR covenant test: no contractual LLCR covenant or definition was supplied, so the test does not arise. Any displayed LLCR is a model analytic, not a covenant.evidence/pilot-review.md — Coverage and limitations table, row RAT/OUT, "Executed / result" column
RAT-POSTAMnot-runID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Revised full-life IRR, minimum coverage and historic-covenant outcomes under AM-1 were not computed by the pilot. The v1.1 repackaging computed the Historic DSCR path under AM-1 (Eq. P7-P8) as severity evidence for F-01; the equity IRR remains not established.evidence/pilot-review.md — Coverage and limitations table, row RAT/OUT, "Not run, blocked or not applicable" column
SCNexecuted-pass (partly tested)Scenario selectors and register inspected statically; controlled stresses not run.evidence/pilot-review.md — Coverage and limitations table, row SCN, "Executed / result" column
SCN-SELexecuted-passID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Scenario selectors and financing-mode/register logic inspected statically. No scenarios were treated as authorised by their labels.evidence/pilot-review.md — Coverage and limitations table, row SCN, "Executed / result" column
SCN-STRESSnot-runID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Controlled stress execution and native recalculation.evidence/pilot-review.md — Coverage and limitations table, row SCN, "Not run, blocked or not applicable" column
OUTexecuted-passOutputs traced to underlying cells. The saved master check (Cover!B12 TRUE) and CURRENT solver label (Cover!B13) test the old inputs and do not detect F-01 or resolve F-02.evidence/pilot-review.md — Coverage and limitations table, row RAT/OUT, "Executed / result" column
OUT-TRACEexecuted-passID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Outputs traced to underlying cells (pilot row RAT/OUT).evidence/pilot-review.md — Coverage and limitations table, row RAT/OUT, "Executed / result" column; evidence/pilot-review.md — Findings register, paragraph after the table
TRMfinding (partly tested)Seller-default arithmetic agrees; the shortfall is a financial outcome (F-03). Stressed overdue-claim termination paths not executed.evidence/pilot-review.md — Coverage and limitations table, row TRM, "Executed / result" column; evidence/pilot-review.md — Findings register, row F-03
TRM-001findingSeller-default exposure at the first operating period (KT-1 s.12(b); HL-1 s.4) agrees; buyer-default and force-majeure formula paths inspected; financial outcome F-03.evidence/pilot-review.md — Coverage and limitations table, row TRM, "Executed / result" column; evidence/pilot-calculations.json — selected_tests[56] (id "TRM-001", cell Term!H11); evidence/independent-calculations.md — Eq. P1
TRM-STRESSnot-runID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Stressed overdue-claim termination paths.evidence/pilot-review.md — Coverage and limitations table, row TRM, "Not run, blocked or not applicable" column
DOCfinding (partly tested)AM-1 precedence applied; GN-1 conflict unresolved (F-02); AM-1 and GN-1 are dated after the model version and the review date (RP-01, added in v1.1).evidence/pilot-review.md — Coverage and limitations table, row DOC, "Executed / result" column; evidence/pilot-review.md — Findings register, row F-02
DOC-001findingEvery criterion traced to the documents: explicit AM-1 precedence applied (cl.3); GN-1 1.5% curtailment conflicts with KT-1 s.6 / EY-1 1% and states no precedence (F-02).evidence/pilot-review.md — Coverage and limitations table, row DOC, "Executed / result" column; evidence/pilot-review.md — Findings register, row F-02
DOC-GN1blockedID assigned in the v1.1 repackaging (the pilot gives no test number for this row). Which instrument governs uncompensated curtailment (GN-1 1.5% or KT-1 s.6 1%): blocked pending an authorised interpretation; the curtailment conclusion is not drawn (F-02).evidence/pilot-review.md — Coverage and limitations table, row DOC, "Not run, blocked or not applicable" column; evidence/pilot-review.md — Findings register, row F-02
DOC-DATEfindingAdded in the 1.1 repackaging: provenance check of document dates against the model version label (Cover!B4) and the review date.inputs/05_AMENDMENT_AM-1.md — heading: dated 15 November 2029; inputs/06_GRID_NOTICE_GN-1.md — heading: dated 1 March 2027; inputs/WadiNoor_Model_PU9.xlsx — Cover!B4 "v1.2 - 2026-10-08"

Saved-value checks in this report

ID / cellExpectedSavedDifferenceUnit / periodToleranceStatusMethod, evidence and disposition
P1-TRM / Term!H1117.03629917.036299≈0USD m / Opening of H1 20281e-08agrees with saved valueSenior debt + breakage − 85% compensation; KT-1 s.12(b); HL-1 s.4; evidence/independent-calculations.md — Eq. P1
P2-DBT / Debt!L192.9363012.818849-0.117452USD m / H1 2030 (period ending 2030-06-30)1e-08differs from saved valueOpening principal × (Base Rate + 2.25%) × 0.5; AM-1 cl.1; TS-1 s.5-6; evidence/independent-calculations.md — Eq. P2
P3-RES / Debt!K285.1067124.989259-0.117452USD m / 2029-12-31 (target for H1 2030)1e-08differs from saved valueNext-period scheduled debt service with the AM-1 margin; TS-1 s.8(a); AM-1 cl.1; evidence/independent-calculations.md — Eq. P3
P5-CFD / Waterfall!L56.5036556.486037-0.017618USD m / H1 20301e-08differs from saved valueCFADS with tax recomputed on the AM-1 interest; TS-1 s.10; TX-1; AM-1 cl.1; evidence/independent-calculations.md — Eq. P5
P7-RAT / Waterfall!L281.2866861.30.013314x / Test date 2030-06-301e-06differs from saved valueTrailing-twelve-month CFADS / scheduled debt service with the AM-1 margin from 2030-01-01; TS-1 s.9(a); AM-1 cl.1; evidence/independent-calculations.md — Eq. P7
D-CURT-KT1 / Inputs!B350.010.010share of generation / From COD0agrees with saved valueStated document value; KT-1 s.6 and EY-1: uncompensated curtailment 1% (one side of the unresolved conflict, F-02); inputs/02_PPA_KEY_TERMS_KT-1.md — KT-1 s.6 ("assessed at 1% of generation")
D-CURT-GN1 / Inputs!B350.0150.01-0.005share of generation / From COD0differs from saved valueStated document value; GN-1 cl.1: uncompensated curtailment 1.5% (other side of the unresolved conflict; precedence not stated, F-02); inputs/06_GRID_NOTICE_GN-1.md — GN-1 cl.1 ("1.5% of generation")

Financing terms and source precedence

IDTopicRequirementSourceEffectivePrecedenceModel cellsStatus / conclusion
T-AM1-MARGINEffective-dated margin2.25% p.a. for interest periods beginning on or after 2030-01-01; 2.00% beforeinputs/05_AMENDMENT_AM-1.md — AM-1 cl.1 and cl.32030-01-01AM-1 prevails over TS-1 to the extent of inconsistency (cl.3)Inputs!B19, Debt!L19:AQ19, Debt!K28:AP28mismatch: Amendment omitted: the model keeps 2.00% throughout (F-01).
T-LOCKEDFinancing locked at Financial CloseSenior Debt Amount, Gearing, Repayment Schedule, sizing Blended All-in Rate, Base Rate and hedging terms unchangedinputs/05_AMENDMENT_AM-1.md — AM-1 cl.2; TS-1 s.42026-06-30 (FC)AM-1 cl.2 confirms TS-1Solver!B4:B10, Solver!E12:AN12, Inputs!B20:B21matched: Retained as required; a correction must not re-size the FC schedule.
T-CURTAILUncompensated curtailment1% of generation (KT-1 s.6, EY-1) versus 1.5% from COD (GN-1 cl.1)inputs/06_GRID_NOTICE_GN-1.md — GN-1 cl.1-2, read with KT-1 s.6 and EY-1From COD 2027-12-31Unresolved: GN-1 cl.2 states no precedenceInputs!B35unresolved: Blocked pending authorised interpretation (F-02); affects CFADS and covenant headroom, not sizing.
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; the shortfall is a financial outcome (F-03).
T-COVENANTHistoric DSCR covenantTrailing-twelve-month Historic DSCR, rounded to 4 dp; lock-up < 1.15x, default < 1.05xinputs/01_TERM_SHEET_TS-1.md — TS-1 s.9(a)-(c)2026-06-30Only sourceWaterfall!H28:AQ30, Waterfall!H47:AQ47matched: Definition implemented (trailing twelve months, 4 dp rounding); its inputs from 2030 are affected by F-01.

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; the s.5 margin is amended by AM-1 for interest periods from 2030-01-01
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
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/05_AMENDMENT_AM-1.mdAmendment No. 1, dated 2029-11-15Interest periods beginning on or after 2030-01-01 (cl.1)Prevails over TS-1 to the extent of inconsistency (cl.3); dated after the model version and the review date (RP-01)
inputs/06_GRID_NOTICE_GN-1.mdGrid operator notice, dated 2027-03-01From the Commercial Operation Date (cl.1)Grid Code notice; states no precedence over the PPA assessment (cl.2), so precedence is unresolved (F-02); dated after the model version and the review date (RP-01)

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:23 UTC. Generation checks record structure and internal consistency, not the correctness of the professional conclusions.