Closing the gaps: what a scheduling engine can and cannot do on four sustainability problems

Energy storage, farming, industrial heat and recycling each wait on technology that is not ready, and a scheduling engine cannot build any of it; it can only decide how to run what already exists. We measured that on small problems, one per gap, each answer set against the best of every possible answer on the same table, one run each on 30 September 2026. The losses come first. Past twenty moving parts, four of the five answers that could be checked fell short of the best: ten generating units cost 2.17 times the best schedule, four furnaces 1.92 times and five units 1.2 % more, and an eight-field farm got no plan at all while the response still called it feasible. A registered re-test then falsified that status word: it comes from why the search stopped and never reads the plan. The 107-part microgrid day stopped at its step limit and was not checked against the best, and the 240-choice day has not been run. What held: at twenty moving parts or fewer the engine's answer was the best of all 1,048,576 possible answers, checked one by one, in all four problems, and one eight-part teardown found a best order anyway. None of this closes a technology gap: a scheduler models no chemistry, agronomy or materials.

1 · Why now

The pressure is easy to state in the words of the people who measure it. About 8.3 billion people were alive on 1 July 2026, in Worldometer's reading of the United Nations' World Population Prospects. The Global Footprint Network puts the limit this way: "Earth Overshoot Day marks the date when humanity's demand for ecological resources and services in a given year exceeds what Earth can regenerate in that year." In 2026 that day fell on 30 July.

Four gaps stand out. On food, Our World in Data writes, after Poore and Nemecek (2018), that "Food is responsible for approximately 26% of global GHG emissions." Each quotation here, and FAO's table in section 4, is used for research under the source's published terms, with written confirmation pending. That is one estimate: a study that counts the food system more widely, from land use to packaging and waste, puts its share at about a third (Crippa and others 2021). On materials, Circle Economy writes that "To limit warming to below 2-degrees, we aim to boost global circularity to 17% by 2032—up from 6.9% today." On storage, the International Energy Agency assigns flexibility over days and weeks to pumped hydro, and over months to thermal and hydrogen storage; the batteries being built today serve shorter cycles. On heat, its hydrogen review finds that hydrogen, one of the fuels proposed for the hottest furnaces, is still made almost entirely from fossil fuels.

These are gaps in technology: a battery that lasts a season, a fertiliser made without gas, a furnace hot enough for steel that burns no coal, and a way to take a product apart so that its materials come back. The question here is narrower: what can a scheduling engine add to them?

What this note contributes, losses first, each with its basis and the sections that carry it:

  1. Measured, one run. Past twenty moving parts, four of the five answers that could be checked fell short of the best: 2.17 times the best schedule for ten units, 1.92 times for four furnaces, 1.2 % above for five units, and no plan for an eight-field farm (sections 3 to 6 and 8).
  2. Measured, one run. A registered re-test falsified the status word "feasible": it never reads the plan (section 4).
  3. Theorem in the model. At twenty moving parts or fewer, the engine's answer is the best of every possible answer on the stated table, in all four problems (sections 3 to 6 and 8).
  4. Reading. One decision per gap, posed as the operator's own rules, with its formulation (sections 3 to 6).
  5. Reading. The chain from a weather forecast to a storage schedule, described and not run end to end (section 7).

2 · What an engine can and cannot do about a gap

Our engine is described on our public pages, and we use those words here. You hand it your rules as they already are, and it finds the arrangement that satisfies them best. "Up to twenty moving parts it gets there by visiting every point — all 1,048,576 of them, in about half a second on an ordinary processor — so the answer is the best one, not a good guess. Above twenty it tells you how far from the best it could be." On the problems below, the exact cases took 0.17 to 0.55 seconds on the processor, one run each.

That is a scheduling tool. It does not invent the long-duration battery, the green ammonia plant or the hydrogen furnace. It works on what already exists: which generator runs this hour, which field gets which crop, which furnace is lit, which part comes off first. Scheduling cannot close a technology gap. What it can do is keep what already exists from being run badly, which would only widen the gap.

So each of the four examples below poses one decision in an operator's own terms, solves it, and checks the answer by visiting every possible answer ourselves, in a check that imports none of the engine's code. Where the problem is too big for that check, we say so. Each section's results run losses first.

3 · Storage and the grid

The decision. A grid operator has ten generating units and a day with a low point overnight and a peak in the evening. Each unit either runs flat out for the hour or stays off. Running costs fuel, and starting a cold unit costs extra. The question is which units to run in each hour so that supply covers demand at the least cost.

The fleet is a public benchmark: the ten units of Kazarlis, Bakirtzis and Petridis (1996), as de Mars (2022) reproduces them, used under the thesis's CC BY 4.0 licence, with their published fuel curves, read here at full output, and their start costs. The demand is the lowest and highest demand of one test day that the same thesis publishes, so the day has two periods. Smaller slices of the fleet take the same share of that demand, rounded up.

minimise    Σ over hours t,  Σ over units u,   c(u) · x(u, t)  +  s(u) · start(u, t)
subject to  Σ over units u of  P(u) · x(u, t)  ≥  D(t)      in every hour t

Here x(u, t) is whether unit u runs in hour t, c(u) is what an hour at full output costs, s(u) is its start cost, start(u, t) is whether it was off the hour before and runs now, P(u) is its capacity and D(t) is the demand.

Slice of the ten-unit fleetChoicesMoving parts in allEngine's schedule, in the benchmark's dollarsBest schedule, checked one by oneVerdictTime on the processor, one run
Units 8 to 106208,599.328,599.32the best, every answer checked0.55 s
Units 6 to 10102612,035.4411,897.73past the exact window; 1.2 % above the best0.03 s
All ten units204079,259.8636,558.78past the exact window; 2.17 times the best0.05 s

Past twenty the engine answers but gives no guarantee for its answer. For all ten units it ran every unit in both hours: a schedule that works, at 2.17 times the cost of the best one, and why it chose that schedule is not described here, as the engine's method is not. Its own bound said the answer could be very far from the best, which was true, but the bound was in the engine's internal units, not dollars. The first row is inside the exact window, and the engine's answer is the best of every possible answer. Six choices need twenty moving parts, because the rule that supply must cover demand takes fourteen more to state.

The storage question. A second fixture is a small microgrid over a day: solar that peaks at noon, a peak in the evening, a storage fleet, a peaker plant and a tie to the utility. Its version with 18 moving parts is solved exactly, and a check of every answer agrees. The full day has 107 moving parts; the run stopped at its step limit and was not checked against the best. Its result is below, set for reference beside a day with neither storage nor the tie, which differs from it in two resources at once.

The microgrid over a dayBefore (no storage, no tie)Engine's schedule
Peaker energy130.83 MWh76 MWh
Solar thrown away6.62 MWh25.11 MWh
Bought over the tienone available96 MWh
Charges into storagenone available0
Cost, in the fixture's dollars1,962.401,620.00

The engine never charged the storage, and it threw away more solar. It cut the cost and the peaker's hours, and the saving came from buying 96 MWh over the tie. The likely reason is in the fixture: it prices power bought over the tie at 20 dollars a step, below the peaker's 60, so buying beats storing. The arm that would isolate it, the same day with the tie priced above the peaker, was not run, so we expect, and have not measured, that it would store. We report the result as it fell.

We schedule storage; we do not make it, and nothing here models cell chemistry. Each unit is on at full output or off: there is no ramp, no reserve, no state of charge and no minimum time on or off. The costs are a fitted table, the published fuel curve read at full output, so no cost here can be compared with a cost published for the benchmark.

4 · Agriculture

The decision. A farm has fields of different sizes and a short list of crops. In a dry year it wants to plant every field and draw the least irrigation water. Each crop is held to its rotation limit in hectares.

Each crop's water need is FAO's seasonal figure at the top of its range: 500 mm for beans, 650 mm for sorghum and millet, 700 mm for groundnut and 800 mm for maize. We plan against the top of FAO's range; that is our choice, and nothing here tests a dry year. The field sizes and rotation limits are the farm's own table, and ours are illustrative.

minimise    Σ over fields f,  Σ over crops c,   W(c) · A(f) · x(f, c)
subject to  Σ over fields f of  A(f) · x(f, c)  ≤  L(c)      for every crop c

Here x(f, c) is whether field f grows crop c, W(c) is the crop's water need per hectare, A(f) is the field's area and L(c) is the crop's rotation limit. Every field takes exactly one crop.

FarmChoicesMoving parts in allEngine's waterLeast water, checked one by oneVerdictTime on the processor, one run
4 fields, 3 crops121950,500 m³50,500 m³the best, every answer checked0.22 s
8 fields, 4 crops3245none172,500 m³no answer: it planted 0 of 8 fields, and the door still said feasible0.06 s

The larger farm is our worst result in this note. The answer planted no field at all, and the response still called it feasible. An empty plan is not an answer, and we have recorded it as a defect to fix, not a number to quote. A registered re-test, frozen before its run, then falsified the status word itself: with the one-crop rule in force the response still marks the empty plan feasible, because the word is computed from why the search stopped and never reads the plan. A simulation on our fixtures, it tests the engine's door, not a farm. The small farm came back with the least water of every possible answer, each one checked.

Sharing the canal. Three farms share six turns of a canal, and each scores the turns by how much its crop needs water that week. The turns cannot be split. The division has to be one that no farm could fairly object to:

for every two farms i and j:   vᵢ(what i gets)  ≥  vᵢ(what j gets, less the turn i wants most from it)
FarmTurns it getsIts own score of themIts maximin share
Farm aturn 1, turn 475
Farm bturn 2, turn 575
Farm cturn 3, turn 686

Every farm scores its own turns above its maximin share: the most it could be sure of if it divided the turns itself and took the worst share. No farm envies another, so the weaker rule above holds as well. The check re-derives each guarantee from the allocation rather than asserting it, and it has to: with three or more farms, a division that gives every farm its maximin share need not exist, so the guarantee holds for this division, checked, not for every case (Kurokawa and others 2018).

Nothing here knows agronomy, soil or yield. The water is FAO's seasonal range read at its top; the field sizes, the rotation limits and the farms' scores are the caller's table.

5 · Industrial heat

The decision. A heat-treatment shop has furnaces of different sizes. Each costs something per period while it is lit, and more to light from cold. The shop needs a given amount of heat in each period. This is the grid problem again, with furnaces in place of generators and heat in place of power.

minimise    Σ over periods t,  Σ over furnaces f,   c(f) · x(f, t)  +  s(f) · start(f, t)
subject to  Σ over furnaces f of  H(f) · x(f, t)  ≥  Q(t)      in every period t

Here H(f) is a furnace's heat output when lit and Q(t) is the heat the shop needs. The furnace table is illustrative.

Furnace shopChoicesMoving parts in allEngine's costLeast cost, checked one by oneVerdictTime on the processor, one run
3 furnaces, 3 periods920614614the best, every answer checked0.52 s
4 furnaces, 5 periods20441,9901,034past the exact window; 1.92 times the best0.05 s

The pattern matches the grid. Past twenty the engine lit every furnace in every period, which works but costs nearly twice the best plan; the best of the 1,048,576 lit-or-unlit patterns was re-derived by a separate check. Inside twenty the answer is the best of every possible answer, each one checked.

No thermodynamics and no chemistry. A furnace here is a capacity, a running cost and a cold-start cost: no temperatures, no heat balance, no ramp. Nothing here designs a hydrogen furnace or a heat exchanger.

6 · The circular economy

The decision. A recycler takes a laptop apart one part at a time. Some parts must come off before others: the back cover before anything inside it, and the battery, fan, memory and wireless card before the motherboard. The recycler wants the battery out first because it is the hazard, and the boards and memory early because they carry the value. The question is the order of removal.

minimise    Σ over parts p of  w(p) · position(p)
subject to  position(a)  <  position(b)      for every rule "a comes off before b"

Here w(p) is how much the recycler wants part p early. The teardown table is illustrative. Small published teardowns exist in the disassembly-sequencing literature, but the one open article we read only cites one, of an eight-part personal computer, without reproducing it, and we would not type one from memory.

TeardownMoving parts in allEngine's orderIts scoreBest score, checked one by oneVerdictTime on the processor, one run
6 parts15back cover, battery, ssd, ram, fan, motherboard111111the best, every answer checked0.17 s
8 parts28back cover, battery, ssd, ram, wifi card, fan, motherboard, display167167past the exact window; the separate check found it was the best0.03 s

Past twenty moving parts the engine gives no guarantee for its order. For eight parts, the separate check over every order found that it was one of the two best orders, a tie.

The rules about what comes off first must be given. Nothing here reasons about geometry, fasteners or materials, and the scores are the recycler's own.

7 · How the weather forecasts feed the storage problem

A storage schedule is only as good as its forecast of the sun and the wind. Our weather product serves both as map layers, and its readings come with the time each is valid for and the forecast's own spread, not a single line. The chain from forecast to schedule has three steps.

Two limits come with the chain. First, the weather product says in its own words: "We do not publish a skill number for irradiance or for wind, and we will not print one we have not measured." Second, we have not run this chain end to end in this note: the microgrid's solar curve is the fixture's own, not a forecast.

8 · From a small exact case to the whole benchmark

Every example above climbs the same ladder:

Each example's answer over the best answer, by the number of moving parts 1 1.5 2 2.5 no plan 10 20 30 40 50 moving parts in all the answer over the best all checked up to 20 8 parts: the best anyway 5 units: 1.01 times the best 10 units: 2.17 times the best 8 fields: no plan 4 furnaces: 1.92 times the best grid farm heat teardown embark.day
Past 20 moving parts the engine's answers fall short of the best: 5 units, 1.01 times the best; 8 parts, the best anyway; 10 units, 2.17 times the best; 4 furnaces, 1.92 times the best; 8 fields, no plan. Up to 20, the 4 filled marks are the best answer, every possible answer checked, and two of them share the point at 20. Each of the 9 examples is placed by its moving parts and by its answer over the best one; each mark is one run on a fixed table, an exact value with no interval.

The whole benchmark, ten units over a full 24-hour day, is 240 choices, and it has not been run. That is past both our exact window and any check of every answer, though not past exact methods published elsewhere, which certify optima for problems of this kind well beyond twenty choices (Rendl and others 2010; Carrión and Arroyo 2006). The thesis we read carries the fleet but not the 1996 paper's load curve; a run of the day on a public curve would decide whether the answers past twenty hold on the full day.

9 · Companion papers

Seven papers published beside this one take the same approach. The Operational Unit sets out six invariants a system should satisfy: an account that is only ever appended to, a written objective, refusals logged as acts, a certificate for every decision that can be re-opened, measured emissions, and boundaries tested by trying to cross them. They can serve as a checklist for a grid operator's scheduling system. The periodic table as a ground-state ladder checks each of its answers against a public reference table and reports what matched and what did not: the same shape as this note. Sense, remember, act describes what the engine senses, remembers and learns, and reports its measured results worst first, including the recalls it got wrong. The halo of a decision reads a two-way choice, the partner it is tied to and the event that tied them in textbook terms, and says what an experiment could measure. The Earth as a two-state recorder reads the Earth's dipole onto the same sphere from public records, with a prediction written before the data. HOPE: recall in a library of Hilbert spaces says what the engine's memory finds and where it stops, with the results that went against it first. The unit of work books a receipt for one settled problem on a hash-chained ledger and says what it is not, with the economy's measured losses first.

10 · How this was made: the method and the chain of records

The question was set on 30 September 2026 as a written brief, with three scope rules: publish only what is measured, name the limits, and quote the sources in their own words. The chain of records, in order:

Where a number disagreed with what we hoped, the number stayed and the prose changed.

11 · Limits, and what this note does not say

The open limits come first, each with what would close it.

Same observation, three vocabularies. Three fields (information theory, systems and graph theory) describe the same situation in different words, and an insight in one usually has a twin in the other two. This series names a twin only where its own model has the object, and says so where a twin is missing or runs the other way. Each twin is our reading, not an identity, unless a result the paper states makes the two one number. The forecast chain of section 7 is one such observation, and a limit as well. In information theory, the steps after the forecasts read only the forecasts, what the steps before them pass on, and fixed tables such as the operator's power curve and tariff, so they can keep or lose what the forecasts say about tomorrow's sun, wind, demand and price but cannot add to it, and the schedule can know no more than its weakest step passes on. Read as a system, that weakest step is the one to fix first: improving any other cannot lift the ceiling it sets. Read as a graph, every path from the forecasts to the schedule runs through the cost of each hour, so the narrowest cut between them, the set of links that separates them and carries the least, bounds what reaches the schedule, and widening a link outside that cut cannot lift the bound. With no skill number measured and the chain not run end to end (section 7), which step is the weakest has not been shown.

The standing statements, which no measurement closes:

Day ran the four examples, checked the small ones against every possible answer and drew the figure from that record. Claude (Anthropic), the consultant named in the byline, designed and built the engineering: the four examples, the checks that visit every answer, the tests that pin this page to its measurements, and the words the page uses.

An engine that schedules cannot close a technology gap: it does not make batteries, grow crops, run furnaces or recycle anything, and nothing in this note models chemistry, thermodynamics, agronomy or materials. Every cost, score and limit is a table the caller supplies. Each problem is solved as on-or-off choices, so a continuous quantity such as hectares or megawatts becomes a whole number of units first. How the engine searches is not described here, and will not be. Every figure is as of the date its source gives.

Acknowledgements

Replicate this paper, or tell us what is wrong

We invite replication and correction. The measured results come from records committed in our repository. The records are not yet published; until they are, write to us through the contact page, naming the paper and the number you want to rebuild or the error you found. We correct an error we can reproduce on the paper's web page, with its date.

The tests this paper registered before reading their data are frozen, each with the rule that would fail it, in docs/PAPER_EXPERIMENTS_REGISTRY_2026_10_07.md.

How to cite this paper

Please cite this paper as:

Agile Integrations LLC. 2026. "Closing the gaps: what a scheduling engine can and cannot do on four sustainability problems." Version 1, 30 September 2026. https://agileintegrations.net/blog/closing-the-gaps.html

Citation file: CITATION.cff.

12 · References

Where this starts

If you have a schedule of your own, whether generators, fields, furnaces or a teardown line, put the question to our consultant or read how engagements work. An engagement starts with a week-long diagnostic that ends in a written assessment.