diff --git a/.changeset/energyplan-0-5-1.md b/.changeset/energyplan-0-5-1.md new file mode 100644 index 00000000..c043dfaa --- /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 c5d68921..fbd0d919 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 73a8ef44..67859e4d 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 6619ec34..06abd293 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 74f1ae6d..22e6aa76 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 3a3b7025..25e19601 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 e6df0f0d..ece720b5 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 8f5a90f7..92cbc6a6 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",