0.7.0 - 2026-05-24
Release Notes
Added
-
Add per-phase solver profile mechanism for training and simulation passes.
-
Anticipated thermal dispatch is now fully implemented. Plants declared
withanticipated_config = { lead_stages: K }insystem/thermals.json
participate in the LP via a decision variable at stagetthat becomes
generation at staget + K(fishing constraint), with the ring-buffer
state propagated across stages by the forward pass and the backward
pass extracting cut subgradients w.r.t. the matured slot. -
initial_conditions.jsonaccepts a newpast_anticipated_commitments
array seeding pre-horizon commitments. Each entry maps athermal_idto
avalues_mwarray whose length must equal that plant'slead_stages.
The semantic validator rejects mismatched lengths and references to
non-anticipated thermals. -
simulation/thermals.parquetpopulates three columns for anticipated
plants:is_anticipated(bool);anticipated_committed_mw(Float64,
null outside delivery stages) — the scalar committed MW that matures at
this stage, read from slot 0 of theanticipated_statering buffer; and
anticipated_decision_mw(Float64, null outside the decision horizon) —
the commitment placed at this stage for deliveryKstages later. -
training/dictionaries/state_dictionary.jsonincludes
anticipated_stateentries in slot-major plant-minor order
(K_max * n_anticipatedentries withentity_type: "thermal",
slot_index, andentity_id). -
Generic constraints now support
anticipated_decision(N)as an
expression term, whereNis the anticipated thermal'sid. The term
references the stage-level commitment variable — the MW quantity placed
at the current stage for deliveryKstages later. Referencing a
non-anticipated thermal is a hard semantic error. Using
thermal_generation(N)on an anticipated thermal emits a
SemanticAmbiguitywarning to flag likely intent mismatch.
Changed (breaking)
- The
gnl_configfield insystem/thermals.jsonis renamed to
anticipated_config. Its sub-fieldlag_stagesis renamed to
lead_stages. Files using the old keys will fail to parse. - Three columns in
simulation/thermals.parquetare renamed for
consistency:is_gnl→is_anticipated,gnl_committed_mw→
anticipated_committed_mw,gnl_decision_mw→anticipated_decision_mw.
Code reading these columns by name must be updated.
Fixed
- Anticipated-thermal cut machinery: the post-shift
anticipated_state
ring-buffer value is now decoupled from the state-fixing column via a
newanticipated_state_outLP column block, eliminating a
decision-write coefficient that corruptedstate_to_lp_column's
Less-branch routing and previously droved_t = 0for in-horizon
stagest >= 1whenK >= 2. The fishing predicate is now active at
every stage in[0, T-1], so pre-horizon seededvalues_mw[k]is
delivered end-to-end (committed_at(0) == values_mw[0], etc.). Verified
by K=1, K=2, and K=3 pre-horizon delivery integration tests plus a
NEWAVE-parity bridge fixture (ST.CRUZ NOVA, K=1,
values_mw=[204.5647]). - Anticipated semantic validator no longer rejects in-bounds non-zero
past_anticipated_commitments.values_mwentries. The previous
SemanticAmbiguitywarning ("non-zero seeds will load but produce the
same dispatch as all-zero seeds") is removed; the bounds-check rule
(v_k ∈ [min_mw, max_mw]) remains. TheSemanticAmbiguitywarning
forthermal_generation(N)on an anticipated thermal in generic
constraints is preserved.
cobre-cli 0.7.0
Install cobre-cli 0.7.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/cobre-rs/cobre/releases/download/v0.7.0/cobre-cli-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/cobre-rs/cobre/releases/download/v0.7.0/cobre-cli-installer.ps1 | iex"Download cobre-cli 0.7.0
| File | Platform | Checksum |
|---|---|---|
| cobre-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| cobre-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| cobre-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| cobre-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| cobre-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
cobre-mcp 0.7.0
Install cobre-mcp 0.7.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/cobre-rs/cobre/releases/download/v0.7.0/cobre-mcp-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/cobre-rs/cobre/releases/download/v0.7.0/cobre-mcp-installer.ps1 | iex"Download cobre-mcp 0.7.0
| File | Platform | Checksum |
|---|---|---|
| cobre-mcp-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| cobre-mcp-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| cobre-mcp-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| cobre-mcp-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| cobre-mcp-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |