From 97284052c131038880d553ec429e0dede05f04dd Mon Sep 17 00:00:00 2001 From: Nasim Sadat Date: Sat, 24 Oct 2026 11:09:09 +0200 Subject: [PATCH] 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 --- petrolyst-insights/dashboards/atoma/SPEC.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/petrolyst-insights/dashboards/atoma/SPEC.md b/petrolyst-insights/dashboards/atoma/SPEC.md index 1926e56..30656a1 100644 --- a/petrolyst-insights/dashboards/atoma/SPEC.md +++ b/petrolyst-insights/dashboards/atoma/SPEC.md @@ -86,7 +86,7 @@ and no reference to L/h: | 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 | -| 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 | | 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] [B7 Evidence references w6][B8 Workbook calculations, assessed 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 | @@ -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 | | 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 | +| 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 -pools only the usable intervals inside that assumption's dates, and shows that window and its days. +Modelled L/h (B11) is in v1 (Q9, decided 24 Oct 2026). It pools only the usable intervals inside +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 @@ -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_electricity_cost | bill month | R4 | Site, Viewing period | | 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 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: - the tooltip and M3 say "not available" with the method "no runtime evidence"; - 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 and counted in M4, and its link opens its detail. 6. **Filter propagation.**