# Deadline-constrained historical carbon scheduling: analysis plan

## Question and prior knowledge

Can a schedule based only on historical time-of-day average carbon intensity reduce assigned intensity for jobs arriving throughout the day, under explicit limits on start delay? Does a recent-history profile improve on a fixed seasonal profile?

This is a secondary analysis of the already retrieved national NESO Carbon Intensity API snapshot covering 2023-2025. A preceding study examined a different workload: one three-hour job per day, freely placed inside that UTC day, compared with midnight and evening. Its seasonal-versus-midnight reductions and failure days have already been seen. The present data are not newly blinded holdouts; only these new workload definitions and analysis choices are fixed before calculating their results. No algorithmic novelty, first discovery of time shifting, causal emissions benefit, or independent replication of the preceding study is claimed.

## Data and eligibility

Reuse the immutable raw responses and source manifest, preserving their original retrieval dates, URLs, compressed and uncompressed SHA256 hashes and CC-BY-4.0 attribution. Read only the estimated `actual` intensity in g CO2/kWh. Deduplicate identical interval records and reject inconsistent duplicates. Require aligned half-hour UTC intervals with finite nonnegative numeric values. Forecast values are never substituted. Retain all exclusion reasons.

Use complete 2023 UTC days for fixed profile estimation. Evaluate release dates in calendar 2024 and 2025. An evaluation date is eligible only when it and its following UTC day each have all 48 valid intervals, the following date is in the source range, and at least 21 complete days exist in the recent-history window. Use exactly the same release dates for all durations, delays and policies, including the immediate baseline. This intentionally conservative criterion allows every candidate in every comparison. Report counts and excluded dates separately by year; require at least 95% of calendar release dates in each year.

## Synthetic workload

On each eligible release date consider one independent job at every half-hour start, all 48 equally weighted. Each job consumes one kWh spread uniformly across its uninterrupted runtime. Jobs are counterfactual alternatives used for accounting; this is not a trace of observed arrivals and not a jointly capacity-constrained cluster simulation.

Durations are 0.5, 3 and 6 hours (1, 6 and 12 intervals). Maximum start delays are 0, 1, 3, 6 and 12 hours (0, 2, 6, 12 and 24 intervals). Starts may be delayed by any nonnegative whole half-hour up to the limit. A job must finish by release plus maximum start delay plus its duration. Runs may cross midnight, a month or a season. All times are UTC without daylight-saving adjustment.

The prespecified primary comparison is the fixed seasonal policy versus immediate execution for three-hour jobs allowed to wait up to six hours in 2025. The corresponding 2024 comparison is a temporal transport check. All other combinations are prespecified secondary comparisons and must be reported without filtering by result.

## Policies and information

- Immediate: start at release.
- Fixed annual: learn one 48-slot mean intensity profile from complete days of 2023. For each candidate, average the profile across its runtime, wrapping at midnight; choose the candidate with minimum predicted intensity.
- Fixed seasonal: learn separate 48-slot mean profiles from complete 2023 days in DJF, MAM, JJA and SON. For every half-hour in a candidate runtime, use that interval's calendar season. Winter training pools January, February and December of 2023. Choose the minimum predicted candidate.
- Recent 28 days: for every release date d, use complete days among calendar dates d-29 through d-2 inclusive. This imposes one full calendar day of reporting lag and never uses the release date or its immediately previous day. Learn a 48-slot mean profile from these days. Freeze it for all arrivals and candidate runs for release date d, including runs after midnight. Require 21 complete training days. Choose the minimum predicted candidate.
- Hindsight: choose the eligible candidate with lowest realized mean intensity. This is an unattainable diagnostic benchmark, never an implementable policy.

Exact predicted ties choose the earliest candidate start. Realized costs are evaluated only after a policy's choice. No outcome-dependent changes of training length, seasons, delay limits, policies or primary comparison are permitted; exploratory additions would be marked separately. A recent-history model uses earlier test-period observations as a rolling time-series policy, while fixed profiles use only 2023. The retrospective snapshot may contain revisions not available in real time, so no live forecast performance is claimed even with the reporting lag.

## Outputs

For each year, duration, delay and policy report mean assigned intensity, absolute and percentage reduction relative to the paired immediate baseline, mean and maximum start delay, percentages of jobs with greater, equal or lower assigned intensity, and the hindsight gap fraction captured where the denominator is positive. Percentage reduction is a ratio of overall means, not an average of job-specific percentages. Report monthly versions and release-half-hour versions of mean cost and reductions. Export all per-release-date aggregate results so time variation can be inspected.

For the primary duration and delay report the same results by the four UTC release blocks 00:00-05:30, 06:00-11:30, 12:00-17:30 and 18:00-23:30. Report the paired recent-minus-seasonal cost difference. These are finite-period descriptive accounting results; no confidence intervals or hypothesis p-values will be presented as if these two years were independent samples of future years.

## Verification

Use a fresh offline pinned Python container. Reconstruct a deterministic subset independently from raw records with direct window summation, without importing the main policy implementation. Synthetic known-answer cases cover constant series, tie breaking, waiting that helps and waiting that harms under a wrong profile, midnight/season crossing, no-delay equivalence, duration averaging, missing and contradictory data, and exclusion of present/future data from rolling learning. Verify that hindsight never exceeds immediate cost and that increasing the available delay cannot worsen hindsight on the common eligible set. Implementation bugs found during verification will be fixed and recorded; the plan and substantive analysis choices stay fixed.

## Interpretation limits

Estimated grid-average intensity assigns a share of the observed grid's emissions to consumption. It does not measure marginal response to additional demand, causal CO2 avoided, life-cycle emissions, money saved, energy saved, or a clinical/environmental intervention. Constant energy, uniform synthetic arrivals, unlimited capacity, perfect compliance with allowed delay, no migration or storage overhead, and a single national grid limit applicability. Report adverse scheduling outcomes and benchmark assumptions alongside any average improvement. The result is an auditable modern-period workload benchmark, not a universal scheduler recommendation.
