A public benchmark describes a population of comparable projects, not any one specific project. A real project can have a genuine reason to sit outside the typical range.
DurationX’s methodology treats this as an expected, disclosed event rather than an error: a project exception. This article walks through exactly what that means, what evidence origin changes and does not change, and what the two deterministic checks behind it actually test — grounded in the real, current code and a real worked example, not a hypothetical.
Executive summary
The short version
- A benchmark deviation is not automatically an error — it becomes a declared "project exception" with a rationale, an evidence origin, and a next-evidence requirement.
- Evidence origin (customer, vendor, or independent) is tracked as a traceability fact. It is never read as independent verification — a customer-declared rationale stays labeled customer-declared even when it names a vendor quote as its basis.
- One deterministic check (RCP-11) confirms the declared rationale actually matches a real, flagged deviation — not merely that a rationale exists.
- One audit control (ACR-10) then classifies that traceability: supported, conditional, unsupported, or not evaluable — never a new readiness score, and never a change to the exception’s own frozen evidence fields.
- This logic is implemented and independently tested today. The itemized, control-by-control view of it becomes part of the authenticated report once a report is produced under the report format built to carry it — the underlying exception, rationale, and evidence fields are already visible on every current report and on the worked sample.
What a project exception is
When a declared assumption lands outside the applicable public benchmark — most commonly a CAPEX figure below or above the matched cost-curve point — the audit does not silently accept or silently penalize it. It records four fields, together, as the exception:
- Benchmark position — where the declared figure sits relative to the matched public reference (for example, “aggressive”).
- Customer exception rationale — why the project team believes the departure is justified.
- Evidence origin — whether the rationale’s support is customer-provided, vendor-provided, or independently produced.
- Next evidence required — the specific artifact that would substantiate or close it.
Two fields never move once this exception exists: verification_status stays customer-declared, and residual_uncertainty stays high — always, regardless of which evidence origin is named. This is a deliberate methodology choice (specs/02-scoring-and-methodology.md §10.5): naming a vendor or an independent calculation as the basis for a rationale is not the same as DurationX having independently checked that calculation.
Evidence origin, and what it does not mean
Evidence origin is one of three values: customer, vendor, or independent. It is the only place in the whole audit where a real vendor- or independently-sourced tag can appear at all — every other assumption in the report is either a customer declaration or a derived calculation.
What it changes: how strongly the exception’s traceability is classified (the next section). What it never changes: the readiness score, the confidence score, or the exception’s own frozen evidence fields above. A confidence display driven by an evidence-origin difference alone would blur the line between “this is well-documented” and “this has been independently verified” — the audit keeps that line explicit instead. See Methodology, Section 3 for the same confidence-basis rule stated in full, and the parallel calibration evidence in How to Read DurationX’s Calibration Evidence.
The two checks: RCP-11 and ACR-10
Two deterministic mechanisms, in two layers, do the actual work. Neither is a new numeric score; both point to facts the audit has already computed.
RCP-11 — does the rationale match a real deviation?
One of eleven cross-assumption reconciliation checks (worker/src/cross-assumption-reconciliation.ts) compares the declared rationale against the actual, matched benchmark deviation it claims to explain. It resolves to exactly one of three states:
- Consistent — a rationale and evidence origin are declared, and a real, flagged benchmark deviation exists for them to explain.
- Flagged — a mismatch in either direction: a rationale is on file but nothing actually deviates, or a deviation exists with no rationale on file.
- Not evaluable — no CAPEX benchmark comparison applied to this project, or there is nothing to reconcile (no deviation, no rationale).
ACR-10 — how strong is the traceability?
One of thirteen audit controls (worker/src/audit-control-register.ts) then reads RCP-11’s result plus the exception’s own declared evidence origin and assigns exactly one of four control statuses:
| Evidence origin | Real deviation? | RCP-11 | ACR-10 |
|---|---|---|---|
| Vendor-provided or independently produced evidence | A real, matched benchmark deviation exists | consistent | Supported |
| Customer declaration only | A real, matched benchmark deviation exists | consistent | Conditional |
| Declared, but does not match any real deviation — or a real deviation exists with no rationale on file | Mismatched in either direction | flagged | Unsupported |
| Not applicable | No CAPEX benchmark comparison was evaluable for this project, or nothing needs reconciling | not evaluable | Not evaluated |
Ranking vendor/independent evidence above a customer-only declaration mirrors an existing, already-shipped rule elsewhere in the audit: the evidence request generated for a benchmark exception already asks for materially different proof depending on origin (a vendor quote or framework agreement vs. an independent calculation vs. a bare internal one). This exact mapping is recorded as an owner-reviewable default, not silently assumed — see Docs/DECISION_REGISTER.md §4.93.
Neither check is scoring logic. Both are read-only projections over facts the readiness engine already computed — confirmed, not merely claimed: a controlled test freezes a real scoring result, computes the reconciliation pack and audit control register against it, and asserts the frozen readiness score is byte-identical before and after (worker/scripts/audit-control-register-smoke.mjs, assertion §17).
Worked example, from the real sample
The sample project is a 70 MW / 40-hour compressed-air energy storage case. Its CAPEX benchmark position is flagged aggressive against PNNL 2024 at 100 MW × 24 h — the nearest permissible published duty point — and the declared exception reads exactly as follows, taken directly from that report:
- Benchmark position
- Aggressive against PNNL 2024 at 100 MW × 24 h.
- Customer rationale
- “Vendor budgetary quote reflects a bulk civil-works discount from co-locating with an existing compressed-air-storage cavern. No independent cost audit has been performed against this discount.”
- Evidence origin
- Customer.
- Next evidence required
- A dated internal calculation with its source inputs, scope boundary, owner, and approval status.
Applying the two checks above to exactly these facts: a rationale and an evidence origin are declared, and a real, matched CAPEX deviation exists for it to explain, so RCP-11 resolves to “consistent.” The declared origin is customer rather than vendor or independent, so ACR-10 resolves to “Conditional.” This is the second row of the table above: a real, traceable exception that still rests on the customer’s own statement. Had the same rationale named a vendor quotation or an independent recalculation as its basis instead, the same deviation would resolve to “Supported” — not because the underlying number changed, but because the traceability behind it would be stronger.
Note what does not happen: the readiness score is unaffected either way. The CAPEX-position finding is scored neutral_by_policy in this rubric version — disclosed, never silently penalized, and never silently rewarded for being well-sourced.
What evidence would close it
The exact artifact that would close a given exception is stated on the exception itself — in the worked example above, a dated internal calculation with its inputs, scope, owner, and approval status. In general, moving from “Conditional” toward “Supported” means replacing a bare internal statement with a named external source: a vendor quotation or executed agreement, or an independent calculation performed by a party other than the project team. This does not certify the number is correct — it strengthens the traceability of the claim, which is what the audit discloses and what the next diligence step can then examine directly.
Scope and current limitations
This mechanism is implemented and independently tested today: 119 fixture-based assertions across all eleven reconciliation checks and all thirteen audit controls (worker/scripts/audit-control-register-smoke.mjs), including the specific “supported exception” and “customer-only exception” cases this article describes. Every check behind the thirteen audit-control categories already runs against every delivered report today, mapped onto the scoring, cross-assumption reconciliation, and human review steps that already exist. The itemized, control-by-control register — the same thirteen results shown individually, each with its own evidence references — becomes part of the authenticated report drill-down once a report is produced under the report format built to carry it; it is not yet a rendered field on every delivered report or on the current sample. See Methodology, Section 2 for the complete, thirteen-category control list and the identical honesty note stated in full.
This article does not conclude, and DurationX’s audit does not conclude, whether any specific project’s benchmark exception is actually correct. It states what evidence is on file, how traceable it is, and what would strengthen it — a question for the next diligence step’s own specialist review, not a substitute for it.
See the mechanism in practice
From explanation to the real worked report.
Read the full worked decision brief this exception is taken from, the scoring methodology behind it, or how DurationX handles data.
Frequently asked questions
Does declaring an exception change the readiness score?
No. The CAPEX-position exception is scored as "neutral by policy" — it can appear as a disclosed finding without moving the readiness score. Recomputing this into a new scoring effect would require a separately versioned rubric, a shadow replay, and an owner-recorded methodology decision — it is not something a declared rationale can trigger by itself.
Does a vendor quote make the exception "independently verified"?
No. Evidence origin (customer, vendor, or independent) is a traceability fact, not a verification result. The exception’s own verification_status field stays "customer-declared" and its residual_uncertainty stays "high" regardless of which origin is named — origin changes how the audit-control layer classifies traceability, never the underlying evidence-strength fields.
Is the itemized control register part of every report today?
The checks themselves are implemented and independently tested today (worker/scripts/audit-control-register-smoke.mjs, 119 checks, 0 failed, re-run for this article). The itemized, control-by-control register renders as its own view in the authenticated report once a report is produced under the report format built to carry it — see Methodology, Section 2, for the same distinction stated in full.
Source note
Sources and methodology note
This article describes DurationX’s own audit mechanism. Its primary sources are therefore the real, currently-shipping code and specification, not third-party research:
- 1worker/src/cross-assumption-reconciliation.ts — the eleven-check reconciliation pack, including RCP-11.
- 2worker/src/audit-control-register.ts — the thirteen-control audit register, including ACR-10.
- 3Docs/specs/02-scoring-and-methodology.md §6.5.6 (reconciliation pack) and §6.5.7 (audit control register) — the owning specification.
- 4Docs/DECISION_REGISTER.md §4.93 — the recorded evidence-origin-to-status mapping and its rationale.
- 5durationx.com/methodology, Sections 2 and 5 — the public control-protocol and exception-treatment summary.
- 6durationx.com/sample — the real, current worked example this article quotes.