Project finance model review — WadiNoor_Model_GQ3.xlsx

Model fileWadiNoor_Model_GQ3.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 2Minor 0Observation 0
Coverage: 15 families (status of each family)executed-pass 11finding 1not-applicable 0blocked 3unsupported 0not-run 0partly tested (some tests not performed) 7individual tests not performed 13
Tests listed: 34executed-pass 17finding 1not-applicable 3blocked 4unsupported 1not-run 8
Saved-value checks in this reportagrees with saved value 8differs from saved value 0not established 0native recalculation not-run

LIMITED COVERAGE — 5 of 15 families fully tested. Not fully tested: STR (blocked; STR-CIRC unsupported, STR-002 blocked); REV (partly tested; REV-DEEMED not-run); DBT (partly tested; DBT-STRESS not-run, DBT-SOLVE not-run); RES (partly tested; RES-STRESS not-run); WTF (partly tested; WTF-ADV not-run); TAX (partly tested; TAX-POOL not-run); RAT (partly tested; RAT-BOUND not-run); SCN (blocked; SCN-FPRINT blocked, SCN-002 blocked); OUT (blocked; OUT-RENDER blocked); TRM (partly tested; TRM-SIM not-run). Tests marked not applicable: RES-LC, FS-BS, RAT-PLCR. No conclusion is drawn about untested items.

Summary

In the tested base-case scope the pilot established no calculation error or documentary mismatch; its 939 selected comparisons agreed with saved values. Two findings remain open. GQ3-01 (Major, financial outcome): a seller-default termination would leave the lenders USD 17.036m short at the first operating period, about 16.6% of opening debt; the model calculates this as the documents require. GQ3-02 (Major, untested item): native recalculation of the unchanged base case and controlled stress testing were blocked because no spreadsheet engine was available, so STR and SCN are reported as blocked. Reliance on the base-case outputs would remain conditional on native reconciliation and downside testing.

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 decision support (diagnostic pilot): structure, formulas, checks and solved values of a fictional solar IPP model, and their consistency with the supplied financing documents.The five supplied scope and transaction text files and WadiNoor_Model_GQ3.xlsx. Static formula and saved-value inspection with selected independent arithmetic. The pilot's own 939 numerical comparisons, 53 exact date assertions and 50 solver snapshot comparisons all agreed (in its evidence file; separate from the saved-value checks re-run in this report). Excludes commercial suitability, real-world tax or legal advice and external distribution. 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

GQ3-01 · Major · financial outcome

Test
TRM-001
Location
Term!H4:H11, B14:B15; Debt!H18; KT-1 s.12(b), HL-1 s.4, both v1.2
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
Opening senior principal 102.628309290312 + breakage 1.642052948645 − compensation 87.234062896765 = exposure 17.036299342192 USD m; saved Term!H11 17.036299342192.
Impact
Seller-default compensation leaves a material lender recovery shortfall at the first operating period (30 June 2028), about 16.6% of opening senior debt (Eq. G7). Conditional lender exposure upon seller default, not a currently occurring debt-service failure. Buyer-default and force-majeure lender exposures are zero under the stated compensation arithmetic, not a conclusion on collectability. No formula correction is indicated. High evidence confidence (pilot).
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
Credit decision must recognise the seller-default exposure by ground; no formula correction is indicated.
Status
open
Linked checks / terms / assumptions
G7-TRM; T-TERM
Evidence
evidence/pilot-review.md — Findings register, row GQ3-01; evidence/independent-calculations.md — Eq. G7; evidence/pilot-calculations.csv — file line 448 (test 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

GQ3-02 · Major · untested item

Test
STR-002 (also SCN-002)
Location
All formula-dependent outputs; Cover!B15:B21, Solver!B4:B10/B12, Debt/Tax/Waterfall/Ratios/Term; reviewer workflow sections 2-4
Expected
Unchanged-base recalculation in a compatible spreadsheet engine, then saved-cache comparison and authorised stress execution.
Observed
Static formula/cache review and selected Python arithmetic only; no native engine.
Impact
Native cache reconciliation, calculation compatibility and scenario propagation remain unverified, so lender reliance on the material outputs stays conditional. No numerical adjustment to the base case is inferred. This describes review coverage, not proof that the workbook is wrong. Coverage limitation established (pilot).
Severity basis
Material conclusion blocked. Native recalculation of the unchanged base case and controlled stress execution: not quantified. Effect for the decision: adverse. Contractual threshold crossed: not established. Without a native engine, cache reconciliation of every formula-dependent material output (debt, DSRA, DSCR, LLCR, equity XIRR) and scenario propagation could not be established, so the base-case conclusion is blocked. No numerical error is inferred, so no quantitative anchor applies. Pilot grade Major retained.
Recommendation
Obtain an approved engine, recalculate a disposable unchanged copy, log differences before stresses, and test fixed-financing availability/rate paths without resizing.
Status
open
Evidence
evidence/pilot-review.md — Findings register, row GQ3-02; evidence/pilot-review.md — Tests and coverage table, row STR-002; evidence/pilot-review.md — Tests and coverage table, row SCN-001 / SCN-002

Numerical consequences

OutputStatusValue / unitPeriodBasis / limitationEvidence
Seller-default lender exposureESTABLISHED17.036299 USD mOpening of H1 2028Document arithmetic on the solved debtevidence/independent-calculations.md — Eq. G7
Native-engine differences in material outputsNOT_ESTABLISHEDnot establishedAll periodsRequires recalculation of a disposable unchanged copy in an approved engine; No native engine was available (STR-002 blocked).evidence/pilot-review.md — Findings register, row GQ3-02
Downside availability and rate stress outcomesNOT_ESTABLISHEDnot establishedOperating periodsRequires authorised stresses propagated through a recalculating engine; No authorised parameterised downside and no engine (SCN-002 blocked).evidence/pilot-review.md — Tests and coverage table, row SCN-001 / SCN-002

Coverage by family and test

Family / testStatusScope and explanationEvidence
STRblockedSTR-001 executed-pass for the listed static checks; STR-CIRC unsupported (native circularity and convergence); STR-002 blocked: no native engine (GQ3-02).evidence/pilot-review.md — Tests and coverage table, row STR-001; evidence/pilot-review.md — Tests and coverage table, row STR-002
STR-001executed-passAll sheets: inventory, saved errors, formula families, hard-codes and calculation metadata; no unexplained formula breaks identified (11 sheets, 7,010 formulas, no saved errors, iteration off).evidence/pilot-review.md — Tests and coverage table, row STR-001; evidence/pilot-review.md — Scope, architecture and structural observations, paragraph 2; evidence/pilot-review.md — Scope, architecture and structural observations, paragraph 3
STR-CIRCunsupportedID assigned in the v1.1 repackaging; the pilot records this part of the row as unsupported: native circularity/convergence testing and a whole-workbook dependency/cycle proof were not performed ("native circularity/convergence unsupported, not pass").evidence/pilot-review.md — Tests and coverage table, row STR-001; evidence/pilot-review.md — Scope, architecture and structural observations, paragraph 2
STR-002blockedAll material formula outputs: fresh native-engine values compared with the original caches. Blocked: no native engine (GQ3-02); full dependency coverage incomplete.evidence/pilot-review.md — Tests and coverage table, row STR-002; evidence/pilot-review.md — Findings register, row GQ3-02
TIMexecuted-passThe pilot reports all 53 period-end dates and all 53 period factors tested exactly; the factors are itemised in the calculation file, the date assertions are not.evidence/pilot-review.md — Tests and coverage table, row TIM-001
TIM-001executed-passTime!E3:BE3 and E11:BE11 against TS-1 s.2, s.4, s.6 and KT-1 s.3, including COD, first and final repayment and PPA end. Dates: 53 exact date assertions reported by the pilot (not itemised in the calculation file). Period factors: 53 comparisons itemised in the calculation file.evidence/pilot-review.md — Tests and coverage table, row TIM-001; evidence/pilot-review.md — Review summary, paragraph 5 ("53 exact date assertions"); evidence/pilot-calculations.csv — rows with test=TIM-001: 53 comparisons of Time row 11: 53 cells, E11 to BE11; file lines 2-54; all PASS
REVexecuted-pass (partly tested)Combined pilot row REV-001 / OPX-001: revenue arithmetic executed-pass; no positive deemed-energy case tested (REV-DEEMED).evidence/pilot-review.md — Tests and coverage table, row REV-001 / OPX-001
REV-001executed-passOps: delivered P50/P90 energy and revenue with degradation in operating periods 1, 2, 3, 24, 35, 36, 37, 40, 41 and 50 (EY-1, KT-1 s.4-7).evidence/pilot-review.md — Tests and coverage table, row REV-001 / OPX-001; evidence/pilot-calculations.csv — rows with test=REV-001: 20 comparisons of Ops row 10: 10 cells, H10 to BE10; Ops row 11: 10 cells, H11 to BE11; file lines 64-137; all PASS; evidence/independent-calculations.md — Eq. G1
REV-DEEMEDnot-runID assigned in the v1.1 repackaging; the pilot records this part of the row as not tested: no positive deemed-energy case (KT-1 s.6; the base case has nil deemed energy).evidence/pilot-review.md — Tests and coverage table, row REV-001 / OPX-001
OPXexecuted-passCombined pilot row REV-001 / OPX-001; cost part executed-pass. Insurance, SPV and owner cost assumptions accepted as labelled, not independently substantiated.evidence/pilot-review.md — Tests and coverage table, row REV-001 / OPX-001
OPX-001executed-passStepped operating costs and lifecycle in the same periods (OM-1, TN-1); insurance/SPV/owner costs accepted as labelled assumptions.evidence/pilot-review.md — Tests and coverage table, row REV-001 / OPX-001; evidence/pilot-calculations.csv — rows with test=OPX-001: 20 comparisons of Ops row 14: 10 cells, H14 to BE14; Ops row 15: 10 cells, H15 to BE15; file lines 66-139; all PASS
CFDexecuted-passCombined pilot row TAX-001 / CFD-001; CFADS part executed-pass on selected periods.evidence/pilot-review.md — Tests and coverage table, row TAX-001 / CFD-001
CFD-001executed-passCFADS per TS-1 s.10 in the selected periods, using saved opening loss pools and financing amounts.evidence/pilot-review.md — Tests and coverage table, row TAX-001 / CFD-001; evidence/pilot-calculations.csv — rows with test=CFD-001: 20 comparisons of Waterfall row 5: 10 cells, H5 to BE5; Waterfall row 6: 10 cells, H6 to BE6; file lines 69-143; all PASS; evidence/independent-calculations.md — Eq. G4
DBTexecuted-pass (partly tested)Three debt tests executed-pass in the base case, using saved debt (not a re-solve). Stress and post-maturity overdue consequences (DBT-STRESS) and a full independent fixed-point solve (DBT-SOLVE) not run.evidence/pilot-review.md — Tests and coverage table, row DBT-001; evidence/pilot-review.md — Tests and coverage table, row DBT-002; evidence/pilot-review.md — Tests and coverage table, row DBT-003
DBT-001executed-passDebt!E:G (TS-1 s.3, 5, 6): construction drawings, half-draw interest, commitment fees, upfront fee and pro-rata draws, using saved debt/gearing/draws (not a re-solve).evidence/pilot-review.md — Tests and coverage table, row DBT-001; evidence/pilot-calculations.csv — rows with test=DBT-001: 9 comparisons of Debt row 11: 3 cells, E11 to G11; Debt row 13: 3 cells, E13 to G13; Debt row 10: 3 cells, E10 to G10; file lines 55-63; all PASS
DBT-002executed-passDebt!H:AQ (TS-1 s.4-6, HL-1): all 36 operating interest and signed swap amounts in the base case; fixed schedule inspected; final balance within USD 1.evidence/pilot-review.md — Tests and coverage table, row DBT-002; evidence/pilot-calculations.csv — rows with test=DBT-002: 72 comparisons of Debt row 19: 36 cells, H19 to AQ19; Debt row 20: 36 cells, H20 to AQ20; file lines 144-390; all PASS; evidence/independent-calculations.md — Eq. G2
DBT-STRESSnot-runID assigned in the v1.1 repackaging; the pilot records this part of the row as not run: stress and post-maturity overdue consequences of the debt mechanics.evidence/pilot-review.md — Tests and coverage table, row DBT-002
DBT-003executed-passSolver!B4/B10, Debt!H37:AQ37 (TS-1 s.7): discounted minimum P50/P90 target profile from saved CFADS against the 80% cap; the solved-point residual identity holds.evidence/pilot-review.md — Tests and coverage table, row DBT-003; evidence/pilot-calculations.csv — file line 433 (test DBT-003, cell Solver!B4); evidence/independent-calculations.md — Eq. G8
DBT-SOLVEnot-runID assigned in the v1.1 repackaging; the pilot records this part of the row as not run: a full independent fixed-point solve. The external solver executable and source were not supplied, and its recorded iteration history (nine iterations, residual 9.35e-11) was not independently authenticated.evidence/pilot-review.md — Tests and coverage table, row DBT-003; evidence/pilot-review.md — Scope, architecture and structural observations, paragraph 2
RESexecuted-pass (partly tested)Cash-funded DSRA executed-pass in the base case; stress draw/top-up/cure propagation not run (RES-STRESS); LC funding not applicable (RES-LC).evidence/pilot-review.md — Tests and coverage table, row RES-001
RES-001executed-passDebt!G28:AQ28, Waterfall rows 10-26 (TS-1 s.8): all COD/repayment targets against next scheduled service, nil at maturity, all saved reserve roll-forwards.evidence/pilot-review.md — Tests and coverage table, row RES-001; evidence/pilot-calculations.csv — rows with test=RES-001: 37 comparisons of Debt row 28: 37 cells, G28 to AQ28; file lines 396-432; all PASS; evidence/independent-calculations.md — Eq. G5
RES-STRESSnot-runID assigned in the v1.1 repackaging; the pilot records this part of the row as not run: stress draw, top-up and cure propagation of the DSRA.evidence/pilot-review.md — Tests and coverage table, row RES-001
RES-LCnot-applicableID assigned in the v1.1 repackaging; the pilot records this part of the row as not applicable: the reserve is cash-funded (TS-1 s.8(b)), so letter-of-credit funding, LC fees and drawn-LC repayment do not arise.evidence/pilot-review.md — Tests and coverage table, row RES-001; inputs/01_TERM_SHEET_TS-1.md — TS-1 s.8(b)
WTFexecuted-pass (partly tested)Combined pilot row WTF-001 / FS-001: tested reconciliations executed-pass; adverse cash-shortfall and cure branches not dynamically run (WTF-ADV).evidence/pilot-review.md — Tests and coverage table, row WTF-001 / FS-001
WTF-001executed-passWaterfall!E:BE (TS-1 s.8-11A): cash/reserve reconciliations across 53 periods; payment priority, deficit carry, overdue and distribution formulas inspected.evidence/pilot-review.md — Tests and coverage table, row WTF-001 / FS-001; evidence/pilot-calculations.csv — rows with test=WTF-001: 106 comparisons of Waterfall row 26: 53 cells, E26 to BE26; Waterfall row 41: 53 cells, E41 to BE41; file lines 434-931; all PASS
WTF-ADVnot-runID assigned in the v1.1 repackaging; the pilot records this part of the row as not dynamically run: adverse cash-shortfall and cure branches of the waterfall.evidence/pilot-review.md — Tests and coverage table, row WTF-001 / FS-001
FSexecuted-passCombined pilot row WTF-001 / FS-001: cash and reserve reconciliations executed-pass; the layout has no full balance sheet, so a balance-sheet audit is not applicable (FS-BS). No financial-statement assurance is inferred.evidence/pilot-review.md — Tests and coverage table, row WTF-001 / FS-001
FS-001executed-passCash and reserve reconciliations (recorded under WTF-001) and retained-earnings/distribution formulas.evidence/pilot-review.md — Tests and coverage table, row WTF-001 / FS-001; evidence/pilot-calculations.csv — rows with test=WTF-001: 106 comparisons of Waterfall row 26: 53 cells, E26 to BE26; Waterfall row 41: 53 cells, E41 to BE41; file lines 434-931; all PASS
FS-BSnot-applicableID assigned in the v1.1 repackaging; the pilot records this part of the row as not applicable: the supplied layout has no full balance sheet, so a balance-sheet audit does not arise.evidence/pilot-review.md — Tests and coverage table, row WTF-001 / FS-001
TAXexecuted-pass (partly tested)Combined pilot row TAX-001 / CFD-001: selected tax arithmetic executed-pass; full loss-pool independent rebuild not run (TAX-POOL); real-world tax applicability out of scope.evidence/pilot-review.md — Tests and coverage table, row TAX-001 / CFD-001
TAX-001executed-passTax (TX-1): selected periods including first tax/P90 loss pool, lifecycle, depreciation expiry and final PPA period; DSRA excluded from the capital base; separate P90 loss pool; uses saved opening loss pools.evidence/pilot-review.md — Tests and coverage table, row TAX-001 / CFD-001; evidence/pilot-calculations.csv — rows with test=TAX-001: 20 comparisons of Tax row 9: 10 cells, H9 to BE9; Tax row 14: 10 cells, H14 to BE14; file lines 68-142; all PASS; evidence/independent-calculations.md — Eq. G3
TAX-POOLnot-runID assigned in the v1.1 repackaging; the pilot records this part of the row as not run: a full independent rebuild of the P50 and P90 tax loss pools.evidence/pilot-review.md — Tests and coverage table, row TAX-001 / CFD-001
RATexecuted-pass (partly tested)Period ratios, covenant rounding and dated XIRR executed-pass; no lock-up or covenant default in the saved base case. Threshold boundary stress not run (RAT-BOUND); PLCR not applicable (RAT-PLCR); LLCR has no separate contractual covenant.evidence/pilot-review.md — Tests and coverage table, row RAT-001; evidence/pilot-review.md — Tests and coverage table, row RAT-002
RAT-001executed-passRatios rows 3-4, Waterfall rows 28-30 and 47 (TS-1 s.7, s.9): all 36 P50/P90 period ratios and historic covenant dates with contractual 4 dp rounding, base case.evidence/pilot-review.md — Tests and coverage table, row RAT-001; evidence/pilot-calculations.csv — rows with test=RAT-001: 180 comparisons of Ratios row 3: 36 cells, H3 to AQ3; Ratios row 4: 36 cells, H4 to AQ4; Waterfall row 28: 36 cells, H28 to AQ28; Waterfall row 29: 36 cells, H29 to AQ29; Waterfall row 30: 36 cells, H30 to AQ30; file lines 146-395; all PASS; evidence/independent-calculations.md — Eq. G6
RAT-BOUNDnot-runID assigned in the v1.1 repackaging; the pilot records this part of the row as not run: stress at the covenant threshold boundaries.evidence/pilot-review.md — Tests and coverage table, row RAT-001
RAT-002executed-passRatios!B16 and Waterfall!E44:BE45: independent actual/365 XIRR on dated flows including terminal balances (6.486143%). LLCR displayed as a model analytic, not a covenant.evidence/pilot-review.md — Tests and coverage table, row RAT-002; evidence/pilot-calculations.csv — file line 940 (test RAT-002, cell Ratios!B16); evidence/pilot-review.md — Selected independent arithmetic examples, bullet 5
RAT-PLCRnot-applicableID assigned in the v1.1 repackaging; the pilot records this part of the row as absent/not applicable: the model and documents define no PLCR.evidence/pilot-review.md — Tests and coverage table, row RAT-002
SCNblockedSCN-001 executed-pass (static current-state matching); SCN-002 blocked: controlled availability/rate stresses need an approved engine and authorised downsides (GQ3-02); SCN-FPRINT blocked: the solve fingerprint could not be reconstructed. No resizing performed.evidence/pilot-review.md — Tests and coverage table, row SCN-001 / SCN-002; evidence/pilot-review.md — Findings register, row GQ3-02
SCN-001executed-passInputs!B50:B65, Solver register and status, Time rate/availability flags: exact snapshot matches at all 50 registered rows and the selector/FC-locked distinction inspected statically.evidence/pilot-review.md — Tests and coverage table, row SCN-001 / SCN-002; evidence/pilot-review.md — Scope, architecture and structural observations, paragraph 4
SCN-FPRINTblockedID assigned in the v1.1 repackaging; the pilot records this part of the row as not performed: the saved SHA-256 sizing-input fingerprint (Solver!B29) was not reconstructed because its canonical serialisation and source were not supplied.evidence/pilot-review.md — Scope, architecture and structural observations, paragraph 4
SCN-002blockedControlled availability and rate stresses with fixed financing, propagated through a recalculating engine. Not run: no native engine and no authorised parameterised downside; listed in GQ3-02 as untested scenario propagation.evidence/pilot-review.md — Tests and coverage table, row SCN-001 / SCN-002; evidence/pilot-review.md — Findings register, row GQ3-02
OUTblockedStatic trace executed-pass; saved model checks all TRUE are author controls, not independent assurance. Native visual rendering blocked (OUT-RENDER): no approved native engine.evidence/pilot-review.md — Tests and coverage table, row OUT-001
OUT-001executed-passCover references, Ratios labels and Checks traced to underlying cells with unit and date labels (static trace).evidence/pilot-review.md — Tests and coverage table, row OUT-001
OUT-RENDERblockedID assigned in the v1.1 repackaging; the pilot records this part of the row as not run: native visual rendering of the outputs. It needs a native spreadsheet application, and none was approved in the review environment (the same gap as STR-002).evidence/pilot-review.md — Tests and coverage table, row OUT-001
TRMfinding (partly tested)Implementation executed for all three grounds; the seller-default shortfall is a financial outcome (GQ3-01). No simulated termination waterfall or recovery timing/credit-risk analysis (TRM-SIM).evidence/pilot-review.md — Tests and coverage table, row TRM-001; evidence/pilot-review.md — Findings register, row GQ3-01
TRM-001findingTerm!H:BE (KT-1 s.12, HL-1 s.4): all 50 operating-period compensation/exposure identities for three grounds on the same opening-date basis; implementation agrees; financial outcome GQ3-01.evidence/pilot-review.md — Tests and coverage table, row TRM-001; evidence/pilot-calculations.csv — rows with test=TRM-001: 400 comparisons of Term row 4: 50 cells, H4 to BE4; Term row 6: 50 cells, H6 to BE6; Term row 7: 50 cells, H7 to BE7; Term row 8: 50 cells, H8 to BE8; Term row 9: 50 cells, H9 to BE9; Term row 10: 50 cells, H10 to BE10; Term row 11: 50 cells, H11 to BE11; Term row 12: 50 cells, H12 to BE12; file lines 442-939; all PASS; evidence/independent-calculations.md — Eq. G7
TRM-SIMnot-runID assigned in the v1.1 repackaging; the pilot records this part of the row as not run: a simulated termination waterfall and recovery timing/credit-risk analysis.evidence/pilot-review.md — Tests and coverage table, row TRM-001
DOCexecuted-passStated-term mapping executed-pass; no amendments supplied. Underlying agreements and source authenticity unavailable, so no pass on legal enforceability.evidence/pilot-review.md — Tests and coverage table, row DOC-001
DOC-001executed-passAll supplied summaries mapped to Inputs and formula criteria; no amendments or waivers supplied; no conflict identified.evidence/pilot-review.md — Tests and coverage table, row DOC-001; evidence/pilot-review.md — Review summary, paragraph 3

Saved-value checks in this report

ID / cellExpectedSavedDifferenceUnit / periodToleranceStatusMethod, evidence and disposition
G1-REV / Ops!H107.858627.858620USD m / H1 2028 (period ending 2028-06-30)1e-06agrees with saved valueClosed-form P50 revenue; EY-1 generation formula; KT-1 s.4; evidence/independent-calculations.md — Eq. G1
G2-DBT / Waterfall!H122.9967472.996747≈0USD m / H1 20281e-06agrees with saved valueInterest at Base Rate + Margin plus net swap on 80% hedged notional, on saved opening principal; TS-1 s.5-6; HL-1; evidence/independent-calculations.md — Eq. G2
G3-TAX / Tax!H90.0267830.026783≈0USD m / H1 20281e-06agrees with saved valueP50 tax with capitalised-cost depreciation and accrued financing costs; TX-1; evidence/independent-calculations.md — Eq. G3
G4-CFD / Waterfall!H56.6318376.631837≈0USD m / H1 20281e-06agrees with saved valueRevenue less opex, lifecycle and tax; TS-1 s.10; evidence/independent-calculations.md — Eq. G4
G5-RES / Solver!B65.1014135.101413≈0USD m / Scheduled COD 2027-12-311e-06agrees with saved valueFirst-period scheduled debt service; TS-1 s.8(b); evidence/independent-calculations.md — Eq. G5
G6-RAT / Ratios!H31.31.3≈0x / H1 20280.001agrees with saved valueCFADS / scheduled debt service; TS-1 s.7, s.9(a); evidence/independent-calculations.md — Eq. G6
G7-TRM / Term!H1117.03629917.036299≈0USD m / Opening of H1 20281e-06agrees with saved valueSenior debt + breakage − 85% compensation; KT-1 s.12(b); HL-1 s.4; evidence/independent-calculations.md — Eq. G7
G8-DBT / Solver!B4102.628309102.628309≈0USD m / Financial Close1e-06agrees with saved valuePV of the period-wise target profile on saved CFADS, against the 80% cap; TS-1 s.7; evidence/independent-calculations.md — Eq. G8

Financing terms and source precedence

IDTopicRequirementSourceEffectivePrecedenceModel cellsStatus / conclusion
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.4 (breakage 2% of hedged notional)PPA termNo supplied conflictTerm!H4:H12, Inputs!B47, Inputs!B48matched: Implemented as documented; the shortfall is a financial outcome (GQ3-01).
T-MARGINMargin and Base RateMargin 2.00% p.a.; base case Base Rate 4.00%inputs/01_TERM_SHEET_TS-1.md — TS-1 s.52026-06-30Only sourceInputs!B18, Inputs!B19matched: Matches (DBT-002).
T-SIZINGDebt sizingLowest of PV of min(P50 CFADS/1.30, P90 CFADS/1.15) at the Blended All-in Rate and 80% of project costsinputs/01_TERM_SHEET_TS-1.md — TS-1 s.7Financial Close 2026-06-30Only sourceSolver!B4:C10, Debt!H30:AQ37, Inputs!B25:B27matched: Solved-point identity holds on saved CFADS (DBT-003, Eq. G8).
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:AQ47, Inputs!B28:B29matched: Matches; no lock-up or default in the saved base case (RAT-001).
T-YIELDEnergy yieldP50 2,400 and P90 2,250 MWh/MWac/yr; 0.5% degradation; 98% availability; 1% curtailmentinputs/03_YIELD_REPORT_EY-1.md — EY-1 tableNot statedOnly sourceInputs!B31:B35matched: Matches (REV-001).

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
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

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