diff --git a/CHANGELOG.md b/CHANGELOG.md index fef5fde..1a03d75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ Driver versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html - **`foxess` (H1/H3 11000-range map) — removed untested.** Every tested_devices entry said "Community driver, untested", and no hardware has ever validated the map. This is not a clean supersession: `foxess_h3_smart` covers the 1K5-HI and H3-Smart families, not the H1 / H3 / H3-PRO / AIO-H3 families the old driver claimed — those lose their only, unvalidated, listing. The removal is still right on this vendor's hardware behaviour: a Fox ESS inverter answers unknown registers with silence, so a wrong-map driver produces no error, only timeouts — a real 1K5 answered none of the 11000-range map, and the catalog offering it anyway cost that operator a full "device not supported" detour. A catalog that reports what is known must not list a map nobody has seen answer. H1-range coverage can return the way H3-Smart did: a driver written against hardware someone actually has. ### Changed +- **The channel now repeats a reviewed verification claim instead of stamping every artifact "untested".** `tools/ftw_repository.py` hardcoded `verification_status: experimental` into every published artifact — a sound default when 80 unverified community ports were imported wholesale, and wrong the moment a driver earned a hardware-validated `production` status the review accepted. The builder now carries the DRIVER block's status (and its notes) into the artifact when the declared status is `production` or `beta` — a checkable claim a reviewer gated — and keeps the conservative default for everything else, which also keeps every already-published untested driver's bytes unchanged. A published version names a set of bytes, so the nine drivers whose artifacts change get patch bumps: `ctek` 0.3.2, `ctek_v2` 0.3.2, `easee_cloud` 1.1.1, `ferroamp` 2.1.1, `foxess_h3_smart` 0.9.2, `nibe_local` 1.1.2, `sungrow` 1.5.8, `tesla_vehicle` 0.2.1, `zap` 2.0.2 - **`foxess_h3_smart` 0.9.1** — `verification_status` moves `experimental` → `production` ("verified on hardware" in the FTW UI), with `verification_notes` recording exactly what was verified and on what: telemetry, battery dispatch in all three regimes, and PV curtailment on a 1K5-HI-10-V1 over multi-day operation — and that the H3-Smart family shares the map but remains untested on H3-Smart hardware. Header and description drop the "local control build" framing that stopped being true when the channel shipped it ### Added diff --git a/SUPPORT_STATUS.md b/SUPPORT_STATUS.md index c12e7f3..b3b68c5 100644 --- a/SUPPORT_STATUS.md +++ b/SUPPORT_STATUS.md @@ -26,32 +26,32 @@ Catalog source is not proof that a target can install or run a driver. | chint | 1.0.5 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | circutor | 1.0.5 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | | circutor | 1.0.5 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | -| ctek | 0.3.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | -| ctek | 0.3.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | +| ctek | 0.3.2 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | +| ctek | 0.3.2 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | ctek_hybrid | 0.3.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | | ctek_hybrid | 0.3.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | -| ctek_v2 | 0.3.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | -| ctek_v2 | 0.3.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | +| ctek_v2 | 0.3.2 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | +| ctek_v2 | 0.3.2 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | deye | 2.1.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | | deye | 2.1.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | easee | 1.0.4 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | | easee | 1.0.4 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | -| easee_cloud | 1.1.0 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | -| easee_cloud | 1.1.0 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | +| easee_cloud | 1.1.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | +| easee_cloud | 1.1.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | esphome-dsmr | 1.0.3 | ftw-core | not_assessed | 1.0.2 | — | not_recorded | — | not_assessed | no | | esphome-dsmr | 1.0.3 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | esphome_dsmr | 1.0.3 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | | esphome_dsmr | 1.0.3 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | etrel | 1.0.3 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | | etrel | 1.0.3 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | -| ferroamp | 2.1.0 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | -| ferroamp | 2.1.0 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | +| ferroamp | 2.1.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | +| ferroamp | 2.1.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | ferroamp_dc2_v2x | 2.1.0 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | | ferroamp_dc2_v2x | 2.1.0 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | ferroamp_modbus | 2.1.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | | ferroamp_modbus | 2.1.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | -| foxess_h3_smart | 0.9.1 | ftw-core | not_assessed | 0.9.1 | — | not_recorded | — | not_assessed | yes | -| foxess_h3_smart | 0.9.1 | blixt-l1 | not_assessed | 0.9.1 | — | not_recorded | — | not_assessed | yes | +| foxess_h3_smart | 0.9.2 | ftw-core | not_assessed | 0.9.2 | — | not_recorded | — | not_assessed | yes | +| foxess_h3_smart | 0.9.2 | blixt-l1 | not_assessed | 0.9.2 | — | not_recorded | — | not_assessed | yes | | fronius | 2.1.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | | fronius | 2.1.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | fronius_api | 1.0.2 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | @@ -86,8 +86,8 @@ Catalog source is not proof that a target can install or run a driver. | mennekes | 1.0.3 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | myuplink | 1.1.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | | myuplink | 1.1.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | -| nibe_local | 1.1.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | -| nibe_local | 1.1.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | +| nibe_local | 1.1.2 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | +| nibe_local | 1.1.2 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | opendtu | 1.0.2 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | | opendtu | 1.0.2 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | opendtu_mqtt | 1.0.3 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | @@ -144,10 +144,10 @@ Catalog source is not proof that a target can install or run a driver. | solis_string | 1.1.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | sonnen | 2.0.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | | sonnen | 2.0.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | -| sungrow | 1.5.7 | ftw-core | observe_only_profile_blocked | 1.3.3 | 1.3.0 | exact_model_firmware_required | — | not_assessed | no | -| sungrow | 1.5.7 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | -| tesla_vehicle | 0.2.0 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | -| tesla_vehicle | 0.2.0 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | +| sungrow | 1.5.8 | ftw-core | observe_only_profile_blocked | 1.3.3 | 1.3.0 | exact_model_firmware_required | — | not_assessed | no | +| sungrow | 1.5.8 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | +| tesla_vehicle | 0.2.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | +| tesla_vehicle | 0.2.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | tibber | 1.1.0 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | | tibber | 1.1.0 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | varta | 1.1.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | @@ -158,8 +158,8 @@ Catalog source is not proof that a target can install or run a driver. | victron_mqtt | 1.0.3 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | wallbox | 1.0.3 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | | wallbox | 1.0.3 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | -| zap | 2.0.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | -| zap | 2.0.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | +| zap | 2.0.2 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | +| zap | 2.0.2 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | zaptec | 1.0.1 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | | zaptec | 1.0.1 | blixt-l1 | not_assessed | — | — | not_recorded | — | not_assessed | no | | zuidwijk_p1 | 1.1.0 | ftw-core | not_assessed | — | — | not_recorded | — | not_assessed | no | diff --git a/devices.yaml b/devices.yaml index 0bc2645..1b5c590 100644 --- a/devices.yaml +++ b/devices.yaml @@ -170,7 +170,7 @@ manufacturers: protocols: - protocol: modbus driver: "ctek" - version: "0.3.1" + version: "0.3.2" ders: [ev] control: true firmware_versions: "" @@ -181,7 +181,7 @@ manufacturers: protocols: - protocol: modbus driver: "ctek_v2" - version: "0.3.1" + version: "0.3.2" ders: [ev] control: true firmware_versions: "" @@ -325,7 +325,7 @@ manufacturers: protocols: - protocol: http driver: "easee_cloud" - version: "1.1.0" + version: "1.1.1" ders: [ev] control: true firmware_versions: "" @@ -375,7 +375,7 @@ manufacturers: protocols: - protocol: mqtt driver: "ferroamp" - version: "2.1.0" + version: "2.1.1" ders: [battery, meter, pv] control: true - protocol: modbus @@ -393,7 +393,7 @@ manufacturers: protocols: - protocol: modbus driver: "foxess_h3_smart" - version: "0.9.1" + version: "0.9.2" ders: [pv, battery, meter] control: true firmware_versions: "" @@ -404,7 +404,7 @@ manufacturers: protocols: - protocol: modbus driver: "foxess_h3_smart" - version: "0.9.1" + version: "0.9.2" ders: [pv, battery, meter] control: true firmware_versions: "" @@ -956,7 +956,7 @@ manufacturers: protocols: - protocol: http driver: "nibe_local" - version: "1.1.1" + version: "1.1.2" ders: [heatpump] control: false firmware_versions: "" @@ -1676,7 +1676,7 @@ manufacturers: protocols: - protocol: http driver: "zap" - version: "2.0.1" + version: "2.0.2" ders: [meter, pv, battery, v2x_charger] control: true firmware_versions: "" @@ -1689,7 +1689,7 @@ manufacturers: protocols: - protocol: modbus driver: "sungrow" - version: "1.5.7" + version: "1.5.8" ders: [battery, meter, pv] control: true firmware_versions: "" @@ -1700,7 +1700,7 @@ manufacturers: protocols: - protocol: modbus driver: "sungrow" - version: "1.5.7" + version: "1.5.8" ders: [battery, meter, pv] control: true firmware_versions: "" @@ -1711,7 +1711,7 @@ manufacturers: protocols: - protocol: modbus driver: "sungrow" - version: "1.5.7" + version: "1.5.8" ders: [battery, meter, pv] control: true firmware_versions: "" @@ -1722,7 +1722,7 @@ manufacturers: protocols: - protocol: modbus driver: "sungrow" - version: "1.5.7" + version: "1.5.8" ders: [battery, meter, pv] control: true firmware_versions: "" @@ -1733,7 +1733,7 @@ manufacturers: protocols: - protocol: modbus driver: "sungrow" - version: "1.5.7" + version: "1.5.8" ders: [battery, meter, pv] control: true firmware_versions: "" @@ -1746,7 +1746,7 @@ manufacturers: protocols: - protocol: http driver: "tesla_vehicle" - version: "0.2.0" + version: "0.2.1" ders: [vehicle] control: true firmware_versions: "" diff --git a/drivers/lua/ctek.lua b/drivers/lua/ctek.lua index a0ef0b1..8e0d0e9 100644 --- a/drivers/lua/ctek.lua +++ b/drivers/lua/ctek.lua @@ -71,7 +71,7 @@ DRIVER = { id = "ctek-chargestorm", name = "CTEK Chargestorm (API v1)", manufacturer = "CTEK", - version = "0.3.1", + version = "0.3.2", protocols = { "modbus" }, capabilities = { "ev" }, description = "CTEK Chargestorm Connected 2/3 via Modbus/TCP Automation API v1 (CSOS ≥ 4.9.3). Full telemetry + current-limit control.", diff --git a/drivers/lua/ctek_v2.lua b/drivers/lua/ctek_v2.lua index 96f485b..58527f0 100644 --- a/drivers/lua/ctek_v2.lua +++ b/drivers/lua/ctek_v2.lua @@ -71,7 +71,7 @@ DRIVER = { id = "ctek-chargestorm-v2", name = "CTEK Chargestorm (API v2)", manufacturer = "CTEK", - version = "0.3.1", + version = "0.3.2", protocols = { "modbus" }, capabilities = { "ev" }, description = "CTEK Chargestorm Connected 2/3 via Modbus/TCP Automation API v2 (CSOS ≥ 4.9.3). Full telemetry + current-limit control.", diff --git a/drivers/lua/foxess_h3_smart.lua b/drivers/lua/foxess_h3_smart.lua index 4a58a83..142e87d 100644 --- a/drivers/lua/foxess_h3_smart.lua +++ b/drivers/lua/foxess_h3_smart.lua @@ -131,7 +131,7 @@ DRIVER = { id = "foxess_h3_smart", name = "FoxESS H3-Smart / 1K5", manufacturer = "Fox ESS", - version = "0.9.1", + version = "0.9.2", host_api_min = 1, host_api_max = 2, protocols = { "modbus" }, @@ -154,7 +154,7 @@ PROTOCOL = "modbus" -- other field here. DRIVER_MANIFEST = { name = "foxess_h3_smart", - version = "0.9.1", + version = "0.9.2", role = "inverter", requires = {}, options = {}, diff --git a/drivers/lua/sungrow.lua b/drivers/lua/sungrow.lua index 43a9639..314ee25 100644 --- a/drivers/lua/sungrow.lua +++ b/drivers/lua/sungrow.lua @@ -9,7 +9,7 @@ DRIVER = { id = "sungrow-shx", name = "Sungrow SH Hybrid Inverter", manufacturer = "Sungrow", - version = "1.5.7", + version = "1.5.8", protocols = { "modbus" }, capabilities = { "meter", "pv", "battery", "pv-curtail" }, description = "Sungrow SH-series hybrid inverters with LFP battery, via Modbus TCP.", diff --git a/index.yaml b/index.yaml index f1783c5..ea76c77 100644 --- a/index.yaml +++ b/index.yaml @@ -100,7 +100,7 @@ drivers: size_bytes: 4749 sha256: "7ebfe010a41f380885b59976d1a4a6d27db4abec08844cd3c553d4cf754e6aa3" - name: "ctek" - version: "0.3.1" + version: "0.3.2" tier: core protocol: modbus connectivity: local @@ -108,7 +108,7 @@ drivers: ders: [ev] control: true size_bytes: 14921 - sha256: "34cf0492da22354658ae1bfa71cb3e72f94623740d12792d3f2f9ebd9daa709e" + sha256: "a1c2cf0c7c543952214175ace3e957e2e8ecb9de760c1f73b2981d6c5bbf6c1a" - name: "ctek_hybrid" version: "0.3.1" tier: core @@ -120,7 +120,7 @@ drivers: size_bytes: 27291 sha256: "1104d42fe705d43220b2ae282bc2a00d2b713a03b82e6d18fd1c6db17c747d02" - name: "ctek_v2" - version: "0.3.1" + version: "0.3.2" tier: core protocol: modbus connectivity: local @@ -128,7 +128,7 @@ drivers: ders: [ev] control: true size_bytes: 12072 - sha256: "81b4a0862a6d0928d3e3781e3955916638cb2015306a61baa0a344cd611d10e2" + sha256: "186d1e7b2009cd34c2b58a1e29fea5fbdd3b5a896722d41108b77ed6ec7fd3dd" - name: "deye" version: "2.1.1" tier: core @@ -148,7 +148,7 @@ drivers: size_bytes: 4054 sha256: "4a2cd1efb4a5583468ce897ebd88a000e348917295c40210e86ecf834c0ba543" - name: "easee_cloud" - version: "1.1.0" + version: "1.1.1" tier: core protocol: http connectivity: cloud @@ -187,7 +187,7 @@ drivers: size_bytes: 3545 sha256: "fdf3c3cae6ca45f9b546a97cf16a34b047172293711db2dfa759286f065d77c8" - name: "ferroamp" - version: "2.1.0" + version: "2.1.1" tier: core protocol: mqtt connectivity: local @@ -214,14 +214,14 @@ drivers: size_bytes: 14450 sha256: "8be39a1d41b18b1e12fb9b669e6fe11c93775abfdb4f41338f9dc79fe66fd2d9" - name: "foxess_h3_smart" - version: "0.9.1" + version: "0.9.2" tier: community protocol: modbus connectivity: local ders: [pv, battery, meter] control: true size_bytes: 33859 - sha256: "1b6769f4e2583866603ba2fa71f6d3eaa972cc14f5556f99fe9b04c9a194a0b5" + sha256: "5a99134a748d9c244983714a7d5ded5821a75a4c6c65178e26355939637fcf45" - name: "fronius" version: "2.1.1" tier: core @@ -379,7 +379,7 @@ drivers: size_bytes: 15278 sha256: "d754fd4af96c2047f9d9e458a776ad8f10510569836618f4631dd70e2510f404" - name: "nibe_local" - version: "1.1.1" + version: "1.1.2" tier: core protocol: http connectivity: local @@ -645,16 +645,16 @@ drivers: size_bytes: 6158 sha256: "92163e4356b895e16b0205e849aa42a2dcea0d799f8cc6bcbce60b5e2cd92285" - name: "sungrow" - version: "1.5.7" + version: "1.5.8" tier: core protocol: modbus connectivity: local ders: [battery, meter, pv] control: true size_bytes: 48889 - sha256: "b549ad08470d6fe1600c3dec2eff8fc972dbb87aded9f15181cfa598b4b4ac42" + sha256: "a11ddc8de433c527a3d63cd014d243b09f3393ee3afa9b8e1594d4de8de37562" - name: "tesla_vehicle" - version: "0.2.0" + version: "0.2.1" tier: core protocol: http connectivity: local @@ -710,7 +710,7 @@ drivers: size_bytes: 2842 sha256: "1c0362e0a25f1fe297de838a85089eb7676b25e78a7d6d1d03ccea1258b94403" - name: "zap" - version: "2.0.1" + version: "2.0.2" tier: core protocol: http connectivity: local diff --git a/manifests/ctek.yaml b/manifests/ctek.yaml index 50782cc..cd42827 100644 --- a/manifests/ctek.yaml +++ b/manifests/ctek.yaml @@ -1,5 +1,5 @@ name: "ctek" -version: "0.3.1" +version: "0.3.2" tier: core author: "Sourceful Labs AB" protocol: modbus @@ -18,7 +18,7 @@ tested_devices: min_host_version: "2.0.0" size_bytes: 14921 dkb_id: "ctek" -sha256: "34cf0492da22354658ae1bfa71cb3e72f94623740d12792d3f2f9ebd9daa709e" +sha256: "a1c2cf0c7c543952214175ace3e957e2e8ecb9de760c1f73b2981d6c5bbf6c1a" signature: "" bytecode_sha256: "" diff --git a/manifests/ctek_v2.yaml b/manifests/ctek_v2.yaml index e167712..13fe3e6 100644 --- a/manifests/ctek_v2.yaml +++ b/manifests/ctek_v2.yaml @@ -1,5 +1,5 @@ name: "ctek_v2" -version: "0.3.1" +version: "0.3.2" tier: core author: "Sourceful Labs AB" protocol: modbus @@ -18,7 +18,7 @@ tested_devices: min_host_version: "2.0.0" size_bytes: 12072 dkb_id: "ctek_v2" -sha256: "81b4a0862a6d0928d3e3781e3955916638cb2015306a61baa0a344cd611d10e2" +sha256: "186d1e7b2009cd34c2b58a1e29fea5fbdd3b5a896722d41108b77ed6ec7fd3dd" signature: "" bytecode_sha256: "" diff --git a/manifests/easee_cloud.yaml b/manifests/easee_cloud.yaml index 4916c5f..b09ff86 100644 --- a/manifests/easee_cloud.yaml +++ b/manifests/easee_cloud.yaml @@ -1,5 +1,5 @@ name: "easee_cloud" -version: "1.1.0" +version: "1.1.1" tier: core author: "Sourceful Labs AB" protocol: http diff --git a/manifests/ferroamp.yaml b/manifests/ferroamp.yaml index 38d6e7e..280c2e0 100644 --- a/manifests/ferroamp.yaml +++ b/manifests/ferroamp.yaml @@ -1,5 +1,5 @@ name: "ferroamp" -version: "2.1.0" +version: "2.1.1" tier: core author: "Sourceful Labs AB" protocol: mqtt diff --git a/manifests/foxess_h3_smart.yaml b/manifests/foxess_h3_smart.yaml index 69d6746..867ad46 100644 --- a/manifests/foxess_h3_smart.yaml +++ b/manifests/foxess_h3_smart.yaml @@ -1,5 +1,5 @@ name: "foxess_h3_smart" -version: "0.9.1" +version: "0.9.2" tier: community author: "Sourceful Labs AB" protocol: modbus @@ -29,7 +29,7 @@ upstream_docs: min_host_version: "1.5.0" size_bytes: 33859 dkb_id: "" -sha256: "1b6769f4e2583866603ba2fa71f6d3eaa972cc14f5556f99fe9b04c9a194a0b5" +sha256: "5a99134a748d9c244983714a7d5ded5821a75a4c6c65178e26355939637fcf45" signature: "" bytecode_sha256: "" bytecode_signature: "" diff --git a/manifests/nibe_local.yaml b/manifests/nibe_local.yaml index 80c1c79..46c2720 100644 --- a/manifests/nibe_local.yaml +++ b/manifests/nibe_local.yaml @@ -1,5 +1,5 @@ name: "nibe_local" -version: "1.1.1" +version: "1.1.2" tier: core author: "HuggeK with the help of Claude Code" protocol: http diff --git a/manifests/sungrow.yaml b/manifests/sungrow.yaml index 3d9e3fb..84ac237 100644 --- a/manifests/sungrow.yaml +++ b/manifests/sungrow.yaml @@ -1,5 +1,5 @@ name: "sungrow" -version: "1.5.7" +version: "1.5.8" tier: core author: "Sourceful Labs AB" protocol: modbus @@ -45,7 +45,7 @@ tested_devices: min_host_version: "2.0.0" size_bytes: 48889 dkb_id: "sungrow_sh_rt" -sha256: "b549ad08470d6fe1600c3dec2eff8fc972dbb87aded9f15181cfa598b4b4ac42" +sha256: "a11ddc8de433c527a3d63cd014d243b09f3393ee3afa9b8e1594d4de8de37562" signature: "" bytecode_sha256: "" diff --git a/manifests/tesla_vehicle.yaml b/manifests/tesla_vehicle.yaml index 55d1fdc..c8aa3ca 100644 --- a/manifests/tesla_vehicle.yaml +++ b/manifests/tesla_vehicle.yaml @@ -1,5 +1,5 @@ name: "tesla_vehicle" -version: "0.2.0" +version: "0.2.1" tier: core author: "Sourceful Labs AB" protocol: http diff --git a/manifests/zap.yaml b/manifests/zap.yaml index 7e5610e..70b77a1 100644 --- a/manifests/zap.yaml +++ b/manifests/zap.yaml @@ -1,5 +1,5 @@ name: "zap" -version: "2.0.1" +version: "2.0.2" tier: core author: "Sourceful Labs AB" protocol: http diff --git a/packages/v1/foxess_h3_smart/package-source.json b/packages/v1/foxess_h3_smart/package-source.json index 588856c..6066a26 100644 --- a/packages/v1/foxess_h3_smart/package-source.json +++ b/packages/v1/foxess_h3_smart/package-source.json @@ -1,7 +1,7 @@ { "schema_version": "sourceful.driver-package-source/v1", "package_id": "com.sourceful.driver.foxess-h3-smart", - "version": "0.9.1", + "version": "0.9.2", "channel": "beta", "display_name": "FoxESS H3-Smart / 1K5", "identity": { diff --git a/support-status.json b/support-status.json index ccc8f9e..4cd2c00 100644 --- a/support-status.json +++ b/support-status.json @@ -310,7 +310,7 @@ }, { "catalog_source": true, - "catalog_version": "0.3.1", + "catalog_version": "0.3.2", "driver_id": "ctek", "package_id": null, "targets": { @@ -366,7 +366,7 @@ }, { "catalog_source": true, - "catalog_version": "0.3.1", + "catalog_version": "0.3.2", "driver_id": "ctek_v2", "package_id": null, "targets": { @@ -450,7 +450,7 @@ }, { "catalog_source": true, - "catalog_version": "1.1.0", + "catalog_version": "1.1.1", "driver_id": "easee_cloud", "package_id": null, "targets": { @@ -562,7 +562,7 @@ }, { "catalog_source": true, - "catalog_version": "2.1.0", + "catalog_version": "2.1.1", "driver_id": "ferroamp", "package_id": null, "targets": { @@ -646,12 +646,12 @@ }, { "catalog_source": true, - "catalog_version": "0.9.1", + "catalog_version": "0.9.2", "driver_id": "foxess_h3_smart", "package_id": "com.sourceful.driver.foxess-h3-smart", "targets": { "blixt-l1": { - "candidate_package_version": "0.9.1", + "candidate_package_version": "0.9.2", "control_enabled": true, "hil": "not_recorded", "historical_signed_beta_version": null, @@ -661,7 +661,7 @@ "target_conformance": "not_assessed" }, "ftw-core": { - "candidate_package_version": "0.9.1", + "candidate_package_version": "0.9.2", "control_enabled": true, "hil": "not_recorded", "historical_signed_beta_version": null, @@ -1150,7 +1150,7 @@ }, { "catalog_source": true, - "catalog_version": "1.1.1", + "catalog_version": "1.1.2", "driver_id": "nibe_local", "package_id": null, "targets": { @@ -1962,7 +1962,7 @@ }, { "catalog_source": true, - "catalog_version": "1.5.7", + "catalog_version": "1.5.8", "driver_id": "sungrow", "package_id": "com.sourceful.driver.sungrow", "targets": { @@ -1990,7 +1990,7 @@ }, { "catalog_source": true, - "catalog_version": "0.2.0", + "catalog_version": "0.2.1", "driver_id": "tesla_vehicle", "package_id": null, "targets": { @@ -2158,7 +2158,7 @@ }, { "catalog_source": true, - "catalog_version": "2.0.1", + "catalog_version": "2.0.2", "driver_id": "zap", "package_id": null, "targets": { diff --git a/tools/ftw_repository.py b/tools/ftw_repository.py index 7c1d745..d36f0a3 100644 --- a/tools/ftw_repository.py +++ b/tools/ftw_repository.py @@ -490,6 +490,26 @@ def _load_channel(config_path: Path, repo_root: Path) -> list[dict[str, Any]]: # this: a meter saying what it is outranks an entrypoint it may only # have inherited from a shared source. controls = has_driver_command and not declares_read_only + # The DRIVER block's verification claim reaches the artifact only + # when it is one the review actually gated: a driver declaring + # production or beta made a checkable statement that a reviewer + # accepted, so the channel repeats it (with the driver's own notes + # when present). Anything else -- absent, experimental, or a value + # outside the vocabulary -- keeps the conservative default, which + # also keeps every already-published untested driver's bytes + # unchanged. + default_verification_notes = ( + "Signed community source; check the catalog for current hardware evidence." + ) + declared_verification = _string_field(body, "verification_status") if body else "" + if declared_verification in ("production", "beta"): + verification_status = declared_verification + verification_notes = ( + _string_field(body, "verification_notes") or default_verification_notes + ) + else: + verification_status = "experimental" + verification_notes = default_verification_notes metadata: dict[str, Any] = { "path": logical_path, "filename": filename, @@ -502,10 +522,8 @@ def _load_channel(config_path: Path, repo_root: Path) -> list[dict[str, Any]]: "read_only": not controls, "protocols": [protocol] if protocol and protocol != "standalone" else [], "capabilities": capabilities, - "verification_status": "experimental", - "verification_notes": ( - "Signed community source; check the catalog for current hardware evidence." - ), + "verification_status": verification_status, + "verification_notes": verification_notes, } if manufacturer: metadata["manufacturer"] = manufacturer