--- plan-v1.json +++ plan-v2.json @@ -1,10 +1,10 @@ { "study": "Temporal persistence and ideal cyclic storage capacity in finalized RTE actuals", - "version": "1.0", - "committed_before_data_outcomes_utc": "2026-10-30T17:04:59.546769+00:00", + "version": "2.0", + "committed_before_data_outcomes_utc": "2026-10-30T17:14:14.348736+00:00", "source_file": "/Users/tobymikle/Documents/Codex/2026-10-30/sta/work/original-theories-vol8-20261030-source-freeze/theories/storage-sizing-variance.html", "source_sha256": "7185686abf3c5a758c28a9cfbff3d2ba60ec7f32127dc5dac4808e240d8d5fe2", "source_public_url": "https://incoprea.com/research-library/original-theories-vol8-20261030/theories/storage-sizing-variance.html", - "scope": "Engineering chronology-sensitivity diagnostic. Tests whether marginal variance and peak alone suffice for storage energy, not a refutation of the original duration-aware mechanism, not actual French system sizing, not a novelty claim.", + "scope": "Nominal-calendar chronology-sensitivity diagnostic based on RTE-reported profiles. Neither physical UTC chronology, actual French energy/capacity requirements, nor refutation of the source duration-aware mechanism. No novelty claim.", "data": { "provider": "RTE via ODRE OpenDataSoft", @@ -34,23 +34,22 @@ 2024 ], - "calendar": "Europe/Paris civil calendar years and months; timestamps additionally normalized to UTC for contiguity.", + "calendar": "Use the unique supplied(date,heure) labels ordered lexicographically in2015\u20132024,48actual00/30minute labels per nominal civil date. Preserve date_heure unchanged in raw files but do not treat its non-injective DST mapping as a physical chronology.", "range_utc_inclusive": "2014-12-31T23:00:00+00:00", "range_utc_exclusive": "2024-12-31T23:00:00+00:00", - "units": "actual consumption, wind and solar in MW; each actual sample represents0.5h; forecasts not used.", - "eligibility": "Use finalized definitive actuals only. Quarter-hour forecast-only rows are excluded explicitly; actual half-hours must be complete.", + "units": "Source values are integer MW. The model assigns0.5 nominal-hour weight to every actual source slot; energy is reported as nominal MWh-equivalent and normalized mean-demand nominal hours, not validated historical physical French MWh.", + "eligibility": "Every finalized definitive source(date,heure)actual label at00/30minutes is required; quarter-hour forecast-only labels are excluded explicitly. Signed wind/solar values are retained unchanged in the primary and mixture/DST sensitivities.", "acquisition": "Official metadata plus ten annual selected-column CSV exports; preserve exact downloaded bytes, URL, HTTP metadata and SHA-256. Requests bounded with timeout and at most2 retries; no data values interpreted as capacity before review/preflight.", "license_gate": "Record official metadata license/attribution and retain terms evidence before redistributing raw files; if terms unclear, retain raw privately and publish hashes/official download instructions rather than unlicensed copies." }, "preflight_abort_rules": [ - "Any missing required actual half-hour slot: abort; no interpolation or filling.", - "Any duplicated actual timestamp, conflicting values, invalid timestamp or non-contiguous UTC half-hour sequence: abort.", - "Any actual timestamp not on a whole UTC half-hour: abort rather than rebin.", - "Required actual fields must parse as exact integer MW (integral decimal encodings accepted); consumption must be positive, wind/solar nonnegative, annual wind/solar sums positive. Otherwise abort.", - "Nature/finalization labels and field units must be consistent with official finalized actuals metadata; consolidated/unfinalized actuals trigger review rather than silent inclusion.", - "Expected annual intervals are 17520 or17568 according to leap year; Europe/Paris DST civil days legitimately contain46,48 or50 samples. Check every civil date and allUTC gaps; do not pad, average duplicate local hours or drop leap day.", - "If any gate fails, no storage outcomes are computed. A numbered plan revision and reason must be saved before outcomes, retaining this plan and its hash." + "Any missing, extra or duplicate nominal(date,heure)actual label: abort all capacity outcomes. Every source date must have48actual00/30minute labels and every source year17520or17568according to leap year. No interpolation, timestamp inference, deduplication or filling.", + "Every raw CSV hash must match its saved acquisition receipt, and required actual fields must be present and parse as finite exact integer MW. Consumption must be positive and annual wind/solar sums positive.", + "Nature labels must be definitive and official field metadata integer MW. Consolidated/unfinalized input or unexpected units trigger review.", + "Source UTC timestamp anomalies remain documented in the v1failed preflight; do not claim the nominal gate validates the physical timeline. Every original date_heure string is retained in raw input.", + "No primary sign clipping: signed reported renewable values retained as supplied. Their physical/accounting cause is not inferred. A separately labelled nonnegative-generation sensitivity uses max(0,W) and max(0,S) before scenario normalization.", + "No storage outcome until this revised plan is sealed, nominal-grid preflight passes and independent Codex code/design review approves. Further revisions require preserved reasons and hashes before outcomes." ], "model": { - "purpose": "Hypothetical closed annual balancing scenario using only demand, wind and solar shapes", + "purpose": "Hypothetical closed nominal-profile balancing scenario, not reconstruction of physically elapsed-time French operation", "primary_wind_solar_annual_energy_shares": [ 70, @@ -61,6 +60,6 @@ "exact_residual_numerator": "N[t] = b*sumW*sumS*L[t] - sumL*(a*sumS*W[t] + (b-a)*sumW*S[t]); denominatorD=b*sumW*sumS; residual MW=N[t]/D.", "annual_balance": "Sum N[t] must equal exactly0 with integer arithmetic for every year/scenario. No floating drift subtraction, detrending or residual energy correction.", - "capacity": "C_ideal_MWh=(max inclusive cumulative N - min inclusive cumulative N)/(2*D), including initial cumulative0; cyclic annual boundary; ideal lossless store with unlimited charge/discharge power; no curtailment or other generation/trade.", - "units_and_outputs": "Store energy capacity in MWh and GWh, plus equivalent hours of that year mean demand C/(sumL/intervals). Report energy separately from power; no power adequacy claim.", + "capacity": "C_nominal_MWh_equivalent=(max inclusive cumulative N-min inclusive cumulative N)/(2*D), including0; exact annual nominal-slot energy balance; unlimited power and lossless storage.", + "units_and_outputs": "Primary comparison is dimensionless original/permutation-median ratio; also nominal GWh-equivalent and equivalent hours of that profile mean demand. These are scenario-accounting units, not verified French physical capacity needs.", "counterfactual_limits": [ "renewables scaling is hypothetical, not actual installed capacity", @@ -68,5 +67,6 @@ "unlimited power and infinite rate changes", "no imports, dispatchable supply, transmission or curtailment", - "cyclic boundary within each separate year, not interannual storage" + "cyclic boundary within each separate year, not interannual storage", + "source nominal48-slot/day grid is not a validated physical UTC chronology, so historical energy interpretation is unavailable" ] }, @@ -94,15 +94,15 @@ }, "permutation_design": { - "primary": "For each year, permute whole observed Europe/Paris civil-day blocks independently within each original calendar month; concatenate months in their original order. Preserve every within-day matched demand/wind/solar sample and its0.5h duration. DST blocks retain46/50 intervals wherever placed; no synthetic timestamps are presented as original observations.", + "primary": "For each year, permute complete48-slot source date blocks within their supplied calendar month; all twelve months remain in original order. Within-day matched demand/wind/solar profiles and all nominal0.5h weights are preserved. This is a nominal source-label chronology, not reassigned physical timestamps.", "replicates_per_year_scenario": 999, - "seed_rule": "first8 SHA-256 bytes, unsigned big-endian, of incoprea-storage-v1|year=|wind=<70,50,90>|scheme=|replicate=<0..998>; separate random.Random instance and standard shuffle for each permutation; January through December fixed.", + "seed_rule": "first8 SHA-256 bytes, unsigned big-endian, of incoprea-storage-v2|year=|scenario=|replicate=<0..998>; separate random.Random instance and standard shuffle; month orderJanuary\u2013December fixed.", "preserved_invariants": [ - "same full-year residual multiset: mean, variance, peak and energy sum", - "same month membership and monthly energy totals", - "same within-day patterns and original dayblock lengths", - "same0.5h sample duration and exact zero annual net energy" + "same retained-sample residual multiset and therefore marginal mean, variance, positive/absolute peak", + "same month membership and monthly net sums", + "same within-day48-slot reported profiles", + "same nominal0.5h weights and exact zero cycle energy balance" ], "changed_feature": "Between-day chronology/persistence within each month; not all temporal structure or seasonal persistence.", - "efficient_exact_evaluation": "For each observed day store its exact netN, minimum/maximum prefixN including0. The full permuted cumulative range is exactly computed by concatenating these summaries; validate this optimization against half-hour reconstruction for the original order and a predefined first permutation of each year/scenario.", + "efficient_exact_evaluation": "Exact day net/min-prefix/max-prefix integer summaries; validate concatenation against direct slot-by-slot prefix computation for original and first permutation in every year/scenario.", "interpretation": "Permutation distribution is a conditional chronology sensitivity reference, not a randomized-treatment causal effect or evidence that days are exchangeable." }, @@ -111,23 +111,38 @@ "id": "primary_70_30", "wind_share_percent": 70, - "scheme": "month" + "scheme": "month", + "negative_policy": "reported_signed", + "date_policy": "all_nominal_dates" }, { "id": "sensitivity_50_50", "wind_share_percent": 50, - "scheme": "month" + "scheme": "month", + "negative_policy": "reported_signed", + "date_policy": "all_nominal_dates" }, { "id": "sensitivity_90_10", "wind_share_percent": 90, - "scheme": "month" + "scheme": "month", + "negative_policy": "reported_signed", + "date_policy": "all_nominal_dates" }, { - "id": "sensitivity_DST_schedule", + "id": "sensitivity_remove_DST_dates", "wind_share_percent": 70, - "scheme": "month_same_length" + "scheme": "month", + "negative_policy": "reported_signed", + "date_policy": "exclude_both_Paris_DST_transition_dates" + }, + { + "id": "sensitivity_nonnegative_generation", + "wind_share_percent": 70, + "scheme": "month", + "negative_policy": "max_zero_W_and_S_before_normalization", + "date_policy": "all_nominal_dates" } ], - "sensitivity_DST_rule": "In month_same_length, permute only among civil-day positions with the same observed sample count; short/long DST days remain in their sole length class. Other scenarios all use complete variable-length blocks.", + "sensitivity_DST_rule": "Identify the two Europe/Paris civil dates whose physical midnight-to-midnight UTC durations differ from24h, using zoneinfo alone. Exclude all48reported slots on both dates in every year, renormalize supply within remaining363/364date profiles, and permute retained blocks within month. Label this reduced-profile synthetic sensitivity, not a complete physical year. The v1same-length scheme is retired before outcomes because all reported nominal blocks have48slots.", "planned_summaries": { "per_year_scenario": [ @@ -136,5 +151,5 @@ "permutation median, empirical2.5th/97.5th percentiles (linear interpolation), min and max", "original/median ratio", - "absolute GWh and equivalent-mean-demand-hour differences original minus permutation median", + "absolute nominal GWh-equivalent and equivalent-mean-demand nominal-hour differences original minus permutation median", "upper/lower empirical rank of original with plus-one correction: (1+number permuted>=original)/1000 and (1+number permuted<=original)/1000; ties counted inclusively" ], @@ -147,12 +162,22 @@ "multiple_comparisons": "If exploratory year-specific extremeness is discussed, report all10primary year ranks, not a selected year; apply Holm to the two-sided rank quantities min(1,2*min(upper,lower)) only as descriptive adjusted reference ranks, not calibrated causal/randomization p-values. Sensitivity sets fully tabulated, not cherry-picked.", "figures": [ - "original and permutation-reference capacity by year for all4scenarios", + "original versus999within-month day-order capacity reference by year for all5scenarios", "primary original/median ratio by year", "deterministic same-marginal cumulative excursion control" ], - "claims_allowed": "Different capacities at identical marginal mean/variance/peak establish those marginal summaries are insufficient in this balancing model. This is compatible with, not a refutation of, the source mechanism that already includes duration.", + "claims_allowed": "Different model capacities at identical marginal residual mean/variance/peaks show these summaries do not uniquely determine capacity in the declared nominal-profile balancing model. Compatible with source mechanism that already includes duration; not French physical sizing.", "no_forced_support": "Null/negative/inconclusive outcomes and all exclusions are retained. No original-theory proof or actual-France storage requirement claim." }, - "execution_gate": "Do not compute data-dependent capacity outcomes until plan is hashed, official metadata/license examined, full-data preflight passes and independent Codex design review is received. Metadata/availability and missingness inspection may precede outcomes.", - "authorship": "Source hypothesis from DeepSeek-prepared collection; experiment, code and report by Codex; separate Codex agent internal review is not external peer review." + "execution_gate": "Execute only after v2plan hash, saved original raw hashes, nominal preflight PASS and separate Codex design/code review approval; retain v1physical-timeline ABORT evidence and do not describe physical completeness.", + "authorship": "Source hypothesis from DeepSeek-prepared collection; experiment, code and report by Codex; separate Codex agent internal review is not external peer review.", + "revision": { + "replaces_for_execution": "v1.0, whose physical timeline preflight aborted", + "previous_plan_sha256": "6f3df8f2d36d2ac74216174df51430a6c679daa80a40e04ede8b136a7cb41b14", + "reason": "Before any storage outcome, complete official exports were found to use48actual source clock labels per nominal day, not valid46/50-slot Europe/Paris elapsed-time days; derived UTC contains spring duplicates/autumn omissions. Source solar includes negative reported MW. No physical timeline was repaired.", + "capacity_outcomes_seen_before_revision": false, + "scope_changed": true, + "new_scope": "Conditional chronology diagnostic on the complete reported nominal date/hour profiles, not a physically complete French UTC chronology.", + "primary_source_calendar_evidence": "RTE June2025 file specification, section3.1 fixed96quarter-hour source rows/day and consolidated/definitive actuals at half-hour labels.", + "specification_url": "https://assets.rte-france.com/prod/public/2025-06/Eco2mix%20-%20Sp%C3%A9cifications%20des%20fichiers%20en%20puissance.pdf" + } }