examples: outage_program_scheduling — time-phased selection with staging cascades - #138
Merged
Conversation
…ing cascades The first bundled example where TIME is the structure: 30 maintenance jobs x 4 quarters, so every option is a (job, quarter) pair and WHEN carries as much value as WHETHER. 115 options, 69 constraints — six crews a quarter, a $76M budget, a June-30 deadline on the safety-critical work, phase-2 jobs staged into the window right after phase 1, and corridor rivals that stay out of the same quarter. Every number in the README is asserted by a seeded generator against the engine's own output before the bundle is baked (re-baked on the post-#136 engine; dominance counts are stated with their scope — global advisory vs same-job vs earliest-window — and SB-03's dual membership, safety-critical AND phase-2 staged, is called out where the runbook uses both labels): - WHEN is a real choice: 62 of 85 later windows survive comparison with the job's own earliest window, and the mandatory 8-job set holds three separate frontier places that differ only in quarters (+208 MWh for $4.9M). - Deferral cascades: pinning HY-03 a quarter later evicts HY-04 from Q2; of the 14 MWh the corner loses, 13 are the knock-on, not the pinned job's decay. - A value-greedy schedule overruns Q1 by 19 jobs and the budget by $48.1M; the repaired greedy is legal and beaten outright by three certified programs. - The exact overlay dominates 15 of 40 heuristic programs and sharpens the risk corner +507 MWh; both curated finalists come back dominated with a named certified counterpart. - The per-option advisory flags 82 of 115 pairs (global scope; 58 same-job), and 36 of the 82 still appear in certified-optimal programs — a "worse" window is often the only window. - Audit: no safety work in H2, Ivyloch phase 1 always in Q1, and at least 2 of 7 deadline jobs in Q1 hold over every feasible program; the tighter floor returns a witness. - Scenarios: the summer surge re-prices Q3 (+60%) and caps it at 3 crews; the Q2 crew shortage leaves 5 of 40 base programs standing. Ships the upstream kit (projects.csv + quarter_factors.csv + the step-1 ask), its reconstruction test, the ask-literal guard, and the index row.
cafzal
force-pushed
the
claude/outage-example
branch
from
August 3, 2026 22:39
d00a6eb to
2199c9c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds the outage_program_scheduling bundled example: 30 maintenance jobs × 4 quarters → 115 (job, quarter) pair options — the portfolio's time-phased structure cell, where deferral decays value, seasonality reprices cost, and a slipped quarter cascades through staged pairs.
Showcase. Time-phased binary selection with staging dependencies (phase-2 runs the quarter after phase-1), per-quarter crew caps, corridor exclusions, and safety-critical deadlines. Full HiGHS certify on the shape; per_pick marginal analysis reads which (job, quarter) picks carry each program; the audit proves emergent guarantees the rules never state (no safety work in H2; Ivyloch phase 1 pinned to Q1 by arithmetic, not by rule).
Dominance-count scoping (found in prep). The advisory's echo lists its first 20 entries — display cap, not a count. True engine numbers, generator-asserted: 82 of 115 pairs globally dominated, 58 same-job, and 36 of the 82 still appear in certified-optimal programs. The README scopes every cited count, and notes SB-03's dual identity (safety-critical AND phase-2 of SB-02 — why the audit floor counts 7 deadline jobs, not 8).
Discipline. Seeded generator asserts all 11 README claims; bundle baked on current main — byte-identical re-bake post #132/#134/#135/#136. Upstream kit guarded by tests/test_upstream_kits.py. Index row in examples/README.md.
Verification. Full suite 1042 passed / 2 skipped on the branch; live pipeline-tested through the MCP tools (three-layer bar verdict: publish); provenance/secrets sweep over origin/main...HEAD clean.