Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
c3a9577
add event container types (EventKey, EventModel, conditions)
m-bossart Jul 30, 2026
e800f31
add docstrings to exported event accessor functions
m-bossart Jul 30, 2026
faf34af
add event device-support and parameter traits
m-bossart Jul 30, 2026
24b1dca
Attach outage-event models to problem templates
m-bossart Jul 30, 2026
0bd7d2c
Add build-time discovery and validation for outage-event models
m-bossart Jul 30, 2026
e19fb6c
Address round-1 review: loud error on event-model key conflicts
m-bossart Jul 30, 2026
cc9470d
Add event parameter arguments and balance-expression injection
m-bossart Jul 31, 2026
2fb7f8e
Add load and FixedOutput event offset-parameter arguments
m-bossart Jul 31, 2026
c6d61e8
Add core event outage constraints for thermal, renewable, and load de…
m-bossart Jul 31, 2026
f25d729
Add hydro and storage event outage constraints
m-bossart Jul 31, 2026
4b8e0a2
test: add E2E build/solve and forced-outage coverage for events port
m-bossart Jul 31, 2026
b62e91d
test: match unqualified OptimizationProblemOutputs/list_parameter_nam…
m-bossart Jul 31, 2026
8473f2d
test: strengthen reactive load-offset testset with a coefficient check
m-bossart Jul 31, 2026
0e52608
Document outage-events constraints in formulation library
m-bossart Jul 31, 2026
a3a6c3b
docs: close out outage-events port plan bookkeeping
m-bossart Jul 31, 2026
64e69b7
test: strengthen events testsets and fix reactive-constraint docstring
m-bossart Jul 31, 2026
aac047e
docs: record module-context reserve-wiring bug for follow-up
m-bossart Jul 31, 2026
3b9e8d3
remove plans
m-bossart Jul 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ Solvers: `HiGHS` (LP/MILP), `Ipopt` (NLP), `SCS` (SDP) — helpers `HiGHS_optimi

- **~30 bare-unit PSY getters remain in build code** (the units rule above is stated but not fully enforced yet): known sites include `get_angle_limits` in `AC_branches.jl` (~1750, 1767) and `pm_translator.jl` (~280), and `get_loss` across `TwoTerminalDC_branches.jl` (71, 166, 221, 380, 818, and more). Angle limits are radians — no base conversion; loss terms are convertible. When touching one of these files, fix the bare getters in it. This POM/PNM/PF consumer sweep is the open remainder of the units-ecosystem closure effort.
- **Silent TS-missing device skip** (`common_models/add_parameters.jl:~175`): a device whose time series is missing gets `@debug` + skip — it silently drops out of the model. Named silent-failure pattern; never extend it, and prefer converting it to a loud error when the opportunity arises.
- **PSI port backlog** lives in `.claude/pom_port_plan.md`: fork baseline ≈ PSI #1503, PSI swept through #1640. Highlights: no `core/event_model.jl` yet (no `EventModel`/`FixedForcedOutage` machinery — Tier-0 blocker); service-side G-1 (PSI #1617) pending; a list of symbol-verified absent bugfixes/features (#1519, #1527, #1535, #1587, #1508, #1614, #1622, …). Porting rule: formulation-specific → POM, generic optimization core → IOM; adapt to POM's type-based dispatch, don't copy PSI code verbatim. Simulation orchestration is out of scope — never port it.
- **PSI port backlog** lives in `.claude/pom_port_plan.md`: fork baseline ≈ PSI #1503, PSI swept through #1640. Highlights: the event framework is ported (`EventModel`/`FixedForcedOutage` machinery: template-level `set_event_model!`, `src/event_models/`, build-level coverage in `test/test_events.jl`) — the remaining PSI-side gap is simulation-runtime only; service-side G-1 (PSI #1617) pending; a list of symbol-verified absent bugfixes/features (#1519, #1527, #1535, #1587, #1508, #1614, #1622, …). Porting rule: formulation-specific → POM, generic optimization core → IOM; adapt to POM's type-based dispatch, don't copy PSI code verbatim. Simulation orchestration is out of scope — never port it.
- **Direct-write hot spots to not extend:** `instantiate_network_model!` is a ~15-step mutation cascade with direct `model.field =` writes and no rollback; some `.data` writes into IOM containers exist (`thermal_generation.jl`). Prefer setters; don't add new direct reaches.

## Cross-package coupling (summary)
Expand Down
19 changes: 14 additions & 5 deletions .claude/pom_port_plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,10 +141,17 @@ per file. Annotated where a test is **code-blocked** by a Workstream M/C item.
---

## Workstream C — Tier-0 code blockers in POM (port code, then test)
- **Event framework** — POM has **no `core/event_model.jl`**, no `EventModel`/`FixedForcedOutage`
machinery (only the `AvailableStatusParameter` type exists). Port the event framework
(`AbstractEventCondition` family, FixedForcedOutage time-series application, event extension hooks,
outage projection into decision models), **then** port `test_events.jl` (all 13 testsets).
- **Event framework — ported.** `src/event_models/` (`event_model.jl`, `event_traits.jl`,
`event_arguments.jl`, `event_constraints.jl`) provides the `EventModel`/`AbstractEventCondition`
family, template-level `set_event_model!` attachment, build-time discovery and time-series
validation, and event parameters/constraints for thermal, renewable, load, hydro, pump-turbine,
and storage devices. `test/test_events.jl` (21 testsets) covers construction, traits, template
attachment, discovery/validation errors, exclusion from the initialization problem, per-device
constraint coefficients, and E2E build/solve including forced-zero output under a
`FixedForcedOutage` event. This required one IOM-side fix (a `SupplementalAttribute` type-bound
correction) — see the IOM-merge-dependency note below. The remaining gap versus PSI is
simulation-runtime only: condition evaluation, sampling, and state projection across simulation
steps, all out of scope for POM (no simulation orchestration here).
- **MBC variable-tranche-count** and **MBC concavity/convexity validation** — absent; small code adds
that unblock the remaining time-varying-tranche and validation MBC tests.

Expand All @@ -165,5 +172,7 @@ is tracked in POM as the `branches_modeled` trait (already present).
3. **Workstream M small features** (#1549, #1573, #1538, #1614, #1605, #1622, #1566, #1612) — then
port the PF-Source / MBC / curtailment tests they unblock.
4. **Workstream G1** (#1617) — track upstream merge; port reserve/service SC layer + its test file.
5. **Workstream C** — event framework → test_events.jl; MBC tranche/concavity → remaining MBC tests.
5. **Workstream C** — event framework and test_events.jl: **done**, pending the IOM `SupplementalAttribute`
bound-fix merge to IOM `main` (local overrides in `test/Project.toml`/`docs/Project.toml` stay until
then); MBC tranche/concavity → remaining MBC tests still open.
6. **DLR (#1559/#1561)** and the **verify** items — scope separately.
Loading
Loading