diff --git a/.changeset/energyplan-0-5-1.md b/.changeset/energyplan-0-5-1.md new file mode 100644 index 000000000..c043dfaa4 --- /dev/null +++ b/.changeset/energyplan-0-5-1.md @@ -0,0 +1,5 @@ +--- +"ftw": patch +--- + +Update the bundled Energyplan planner to 0.5.1. Plans with a car get cheaper within the box's time budget: once the planner has met the car's charging goals, it plans the battery around that charging again instead of keeping the battery schedule its goal search left. On the home box that schedule cost up to about 10 kr in one plan. A car that needs less than two minimum charging runs gets one run at the cheapest time, and a need of at most half a run counts as met instead of starting the charger. Core still validates every plan. diff --git a/go/internal/mpc/energyplan_fault_test.go b/go/internal/mpc/energyplan_fault_test.go index c5d689218..fbd0d919f 100644 --- a/go/internal/mpc/energyplan_fault_test.go +++ b/go/internal/mpc/energyplan_fault_test.go @@ -57,7 +57,7 @@ func TestNativeEnergyplanEVRecoveryFallbackFaults(t *testing.T) { t.Cleanup(func() { _ = external.Close() }) wrapper := &EnergyplanOptimizer{ExternalOptimizer: external} health, err := wrapper.Health(context.Background()) - if err != nil || health.Version != "0.5.0" { + if err != nil || health.Version != "0.5.1" { t.Fatalf("bundle health=%+v err=%v", health, err) } svc := shadowTestService(t) diff --git a/go/internal/mpc/energyplan_test.go b/go/internal/mpc/energyplan_test.go index 73a8ef44e..67859e4dc 100644 --- a/go/internal/mpc/energyplan_test.go +++ b/go/internal/mpc/energyplan_test.go @@ -95,7 +95,7 @@ func TestNativeEnergyplanDownsideAndAsyncShadow(t *testing.T) { svc := shadowTestService(t) svc.Optimizer = o info, err := svc.Optimizer.(*EnergyplanOptimizer).Health(context.Background()) - if err != nil || info.Name != "ftw-solver" || info.Version != "0.5.0" { + if err != nil || info.Name != "ftw-solver" || info.Version != "0.5.1" { t.Fatalf("bundled worker health: %+v %v", info, err) } start := time.Now().UTC().Truncate(time.Hour) diff --git a/optimizer/native/README.md b/optimizer/native/README.md index 6619ec34a..06abd293c 100644 --- a/optimizer/native/README.md +++ b/optimizer/native/README.md @@ -8,7 +8,7 @@ The [Energyplan contract](../../docs/energyplan-contract.md) defines the shared planning and forecast boundary, result meanings, units and failure rules. Core owns it; Energyplan keeps an identical copy. -Energyplan 0.5.0 uses the Home Use Binary License in `bundle/LICENSE.txt`. It +Energyplan 0.5.1 uses the Home Use Binary License in `bundle/LICENSE.txt`. It permits private household use with FTW and free noncommercial redistribution for that use. Commercial use, OEM bundles, paid installation and services need a separate written license from Sourceful Labs AB. FTW's AGPL code has a diff --git a/optimizer/native/bundle/ftw-solver-darwin-arm64 b/optimizer/native/bundle/ftw-solver-darwin-arm64 index 74f1ae6d7..22e6aa76a 100755 Binary files a/optimizer/native/bundle/ftw-solver-darwin-arm64 and b/optimizer/native/bundle/ftw-solver-darwin-arm64 differ diff --git a/optimizer/native/bundle/ftw-solver-linux-amd64 b/optimizer/native/bundle/ftw-solver-linux-amd64 index 3a3b70253..25e196012 100755 Binary files a/optimizer/native/bundle/ftw-solver-linux-amd64 and b/optimizer/native/bundle/ftw-solver-linux-amd64 differ diff --git a/optimizer/native/bundle/ftw-solver-linux-arm64 b/optimizer/native/bundle/ftw-solver-linux-arm64 index e6df0f0db..ece720b54 100755 Binary files a/optimizer/native/bundle/ftw-solver-linux-arm64 and b/optimizer/native/bundle/ftw-solver-linux-arm64 differ diff --git a/optimizer/native/bundle/manifest.json b/optimizer/native/bundle/manifest.json index 8f5a90f7f..92cbc6a6c 100644 --- a/optimizer/native/bundle/manifest.json +++ b/optimizer/native/bundle/manifest.json @@ -1,9 +1,9 @@ { "schema_version": 1, "product": "energyplan", - "version": "0.5.0", + "version": "0.5.1", "source_repository": "srcfl/energyplan", - "source_commit": "4ad5804a9bbaabe3ddff0a64fff1009ed359f580", + "source_commit": "36bd7199426d39bffb47b70e1312c2eb8fbf2d39", "rustc": "rustc 1.95.0 (59807616e 2026-04-14)", "protocol_version": 1, "forecast_protocol_version": 1, @@ -39,16 +39,16 @@ "bytes": 15377 }, "ftw-solver-darwin-arm64": { - "sha256": "be7bdb3fb4dd0dd5d941c483bc5d29e4395fd0a09d10d9dbd86093da23d2188d", - "bytes": 1422560 + "sha256": "05e9c960eb91ccea3dfeede8e35f31719249da5b69e8919c50606260a425a370", + "bytes": 1438976 }, "ftw-solver-linux-amd64": { - "sha256": "63db6fdb40db1d8e2c992ff04393488ba8d19c9d1e124367b53dad73e045cb6c", - "bytes": 1819336 + "sha256": "d000baaea2e563d934178cc9ee67bd46a7ef9a7a571ca779b774aab5437679da", + "bytes": 1833800 }, "ftw-solver-linux-arm64": { - "sha256": "1294944402313bb42b504fad8b1687015415a3cf6f27c45761b6cffd40e98e0b", - "bytes": 1457536 + "sha256": "27542b9c8074f2c087450b2afa34586023e29791f37498a5ecded1fc699423fe", + "bytes": 1470192 }, "rust-runtime/COPYRIGHT-library.html": { "sha256": "90567e2718bf7fd65a71a3a43c5596488e80e5f51ed02bfea6fec54458b5f3d1",