atoma dashboards: eligible needs >= 30 matched days; modelled L/h as table B11

SPEC.md follows the owner's decisions of 24 Oct. The "eligible" baseline state
asks for >= 30 matched days (was 60). Modelled L/h is in v1 as table B11 on
Baseline & Evidence (v_modelled_lph): titled as modelled from an assumed
runtime, not measured, and never in S1, the map or the M3 sites list; the
datasets table and acceptance check 4 include it. The migrations are
unchanged: the threshold is applied by the loader's baseline propose, not by
SQL.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Nasim SadatandClaude Opus 5.5 committed 2026-10-24 11:09:09 +02:00
1 parent bc27bf2356
commit 97284052c1
1 file changed
+9 -5
+9 -5
View File
@@ -86,7 +86,7 @@ and no reference to L/h:
| Status | Definition (`fm.v_site_baseline_status`) | Colour | | Status | Definition (`fm.v_site_baseline_status`) | Colour |
|---|---|---| |---|---|---|
| Approved baseline | an approved `baseline_version` with a decision reference. The **only** state that says "approved" | teal #009688 | | Approved baseline | an approved `baseline_version` with a decision reference. The **only** state that says "approved" | teal #009688 |
| Eligible – not yet approved | no approval; the latest proposed KPI version has `meets_policy` (BP-1: ≥ 2 eligible G1 inputs, ≥ 60 matched days, no conditions, one population and metric) | blue #3987e5 | | Eligible – not yet approved | no approval; the latest proposed KPI version has `meets_policy` (BP-1: ≥ 2 eligible G1 inputs, ≥ 30 matched days, no conditions, one population and metric) | blue #3987e5 |
| Provisional | no approval; a proposed version below BP-1, **or** usable intervals with no version yet (no estimate shown, method "no baseline version proposed") | amber #c98500 | | Provisional | no approval; a proposed version below BP-1, **or** usable intervals with no version yet (no estimate shown, method "no baseline version proposed") | amber #c98500 |
| Insufficient evidence | no usable interval. **Every pilot site while no runtime evidence exists** | slate #64748B | | Insufficient evidence | no usable interval. **Every pilot site while no runtime evidence exists** | slate #64748B |
@@ -139,6 +139,7 @@ Baseline & Evidence [B1 Baseline versions w6][B2 Inputs of each version w6]
[B5 Assumptions w6][B6 Missing data and quality checks w6] [B5 Assumptions w6][B6 Missing data and quality checks w6]
[B7 Evidence references w6][B8 Workbook calculations, assessed w6] [B7 Evidence references w6][B8 Workbook calculations, assessed w6]
[B9 Stock against engine-measured fuel w6][B10 Equipment specifications w6] [B9 Stock against engine-measured fuel w6][B10 Equipment specifications w6]
[B11 Modelled L/h under an assumed runtime w12]
``` ```
| # | Question it answers | Type | Dataset | Dims / measures (units) | Grain | When data are missing or insufficient | | # | Question it answers | Type | Dataset | Dims / measures (units) | Grain | When data are missing or insufficient |
@@ -165,9 +166,11 @@ Baseline & Evidence [B1 Baseline versions w6][B2 Inputs of each version w6]
| B8 | What did the operator workbook calculate, and is it usable? | Table | v_imported_calculation | label, formula, value, our reading, use, reason, `claim_status` | cell | Shows "excluded" with the reason for "actual L/h" and "CP L/h". A disputed transcription shows its status, without formula or value | | B8 | What did the operator workbook calculate, and is it usable? | Table | v_imported_calculation | label, formula, value, our reading, use, reason, `claim_status` | cell | Shows "excluded" with the reason for "actual L/h" and "CP L/h". A disputed transcription shows its status, without formula or value |
| B9 | Does stock depletion match engine-measured fuel? | Table | v_reconciliation | stock L, engine L, `covered_h` of `interval_h`, difference L and %. The window runs from the opening visit's departure to the closing visit's arrival. The difference is shown only for an `ok` stock interval with both visit times recorded, in which every generator is placed at the site throughout and covered for the whole window | interval × generator | "No flow-meter data yet"; partial coverage, unknown visit times or a mid-interval placement show the hours covered and no difference | | B9 | Does stock depletion match engine-measured fuel? | Table | v_reconciliation | stock L, engine L, `covered_h` of `interval_h`, difference L and %. The window runs from the opening visit's departure to the closing visit's arrival. The difference is shown only for an `ok` stock interval with both visit times recorded, in which every generator is placed at the site throughout and covered for the whole window | interval × generator | "No flow-meter data yet"; partial coverage, unknown visit times or a mid-interval placement show the hours covered and no difference |
| B10 | What does the equipment specification say? | Table | v_spec_reference | attribute, value, unit, basis, applicability, `claim_status` | spec | Titled "Manufacturer and nameplate data, not site performance". A disputed specification shows its status, without value | | B10 | What does the equipment specification say? | Table | v_spec_reference | attribute, value, unit, basis, applicability, `claim_status` | spec | Titled "Manufacturer and nameplate data, not site performance". A disputed specification shows its status, without value |
| B11 | What would L/h be under the stated runtime? | Table | v_modelled_lph | assumption code, status, basis; h/day with low–high; window, `matched_days`; L/day; modelled L/h with low–high; `value_kind` | site × assumption | Titled "Modelled from an assumed runtime, not measured". "No runtime assumption recorded" |
Modelled L/h (M3) gets a table on Baseline & Evidence only if Q9 approves a runtime assumption. It Modelled L/h (B11) is in v1 (Q9, decided 24 Oct 2026). It pools only the usable intervals inside
pools only the usable intervals inside that assumption's dates, and shows that window and its days. the runtime assumption's dates, and shows that window and its days. It never reaches S1, the map or
the M3 Sites list.
## 5. Datasets and filter mapping ## 5. Datasets and filter mapping
@@ -186,7 +189,7 @@ four site columns from `v_site`: `site_uid`, `site_code`, `site_name`, `site_lab
| v_hour_meter_evidence | reading | R2 | Site, Viewing period | | v_hour_meter_evidence | reading | R2 | Site, Viewing period |
| v_electricity_cost | bill month | R4 | Site, Viewing period | | v_electricity_cost | bill month | R4 | Site, Viewing period |
| v_baseline_version, v_baseline_input | version (× interval) | B1, B2 | Site | | v_baseline_version, v_baseline_input | version (× interval) | B1, B2 | Site |
| v_assumption, v_data_quality, v_evidence, v_imported_calculation, v_reconciliation, v_spec_reference | per view | B5–B10 | Site | | v_assumption, v_data_quality, v_evidence, v_imported_calculation, v_reconciliation, v_spec_reference, v_modelled_lph | per view | B5–B11 | Site |
**Metrics.** Saved metrics enforce pooling, with the same eligibility filter on numerator and **Metrics.** Saved metrics enforce pooling, with the same eligibility filter on numerator and
denominator, e.g. `pooled_l_per_h = SUM(CASE WHEN eligibility <> 'excluded' THEN fuel_used_l END) denominator, e.g. `pooled_l_per_h = SUM(CASE WHEN eligibility <> 'excluded' THEN fuel_used_l END)
@@ -253,7 +256,8 @@ Run in P2 against a local Superset, and repeated as a smoke test in P3.
4. **Unavailable L/h.** For each pilot site: 4. **Unavailable L/h.** For each pilot site:
- the tooltip and M3 say "not available" with the method "no runtime evidence"; - the tooltip and M3 say "not available" with the method "no runtime evidence";
- S1 shows the insufficient-evidence state plus L/day; - S1 shows the insufficient-evidence state plus L/day;
- B3 shows every interval excluded, with its reason. - B3 shows every interval excluded, with its reason;
- B11 shows a modelled range labelled "not measured", and that figure appears nowhere else.
5. **Missing coordinates.** A site without an accepted location is not plotted, is listed in M5 5. **Missing coordinates.** A site without an accepted location is not plotted, is listed in M5
and counted in M4, and its link opens its detail. and counted in M4, and its link opens its detail.
6. **Filter propagation.** 6. **Filter propagation.**