v0.51.0 — 算法精度验证 + 协议 Fuzz + 技术债清零
v0.51.0 — 算法精度验证 + 协议 Fuzz + 技术债清零
发布日期:2026-07-05
SemVer 等级:MINOR(新增 PowerFlowAlgorithm::FastDecoupled 枚举变体 + 新 trait AuditSinkFactory + 新结构体 RepositoryAuditSink + 新模块 fd_solver / matpower_loader / harmonic_limits_gbt14549)
Spec:.trae/specs/add-v0510-algorithm-fuzz/spec.md(6 批次 A-F,30+ 子任务)
ADR:docs/adr/0019-v0510-algorithm-fuzz.md(5 项子决策)
概要
v0.51.0 是 v0.50.x 系列后的质量与精度强化版本,围绕三条主线交付:
- 算法精度验证:Fast-Decoupled 潮流求解器(Stott & Alsac 1974)+ AC-OPF MATPOWER 对照(IEEE 14)+ IEEE 39-bus 暂态 CCT + GB/T 14549-1993 谐波限值合规
- 协议鲁棒性:4 个电力协议解析器(IEC 104 / IEC 103 / DL/T 698 / PMU C37.118)cargo-fuzz fuzz target + 5 个核心 crate proptest 属性测试(30 properties × 256 cases = 7680 verifications)
- 技术债清零:88 处 unwrap/expect 违规全部清零(含 16 个二进制 main.rs)+ 全仓
#![allow(clippy::unwrap_used, clippy::expect_used)]顶层属性清零(改为#![deny(...)] + #![cfg_attr(test, allow(...))]模式)+HardwareWatchdog接入 Linux/dev/watchdog+RepositoryAuditSinkHMAC 链审计后端
主要变更
批次 A — 技术债清偿(8 任务)
- A1:盘点 unwrap/expect 违规分布(104 警告,含 16 测试代码;非测试违规 88 处,spec 估计 67 处,差异 +21)
- A2-A6:按 7 Phase 修复 88 处违规(eneros-powerflow / eneros-analysis / eneros-protocol-iec103 / eneros-device / eneros-agent / eneros-os / eneros-api / eneros-market / eneros-sdk-c / eneros-ha + 16 二进制 main.rs)
- A7:
HardwareWatchdog接入 Linux/dev/watchdog(arm/feed/trigger/force_close_no_magic,3 单元测试) - A8:
RepositoryAuditSinkHMAC 链审计后端(AuditSinkFactory配置驱动构造,17 单元测试)
批次 B — Fast-Decoupled 求解器(3 任务)
- B1:
crates/eneros-powerflow/src/fd_solver.rs新增FastDecoupledSolver(B'/B'' 矩阵构建 + /V 缩放 + 9 单元测试) - B2:
PowerFlowAlgorithm::FastDecoupled枚举变体(Q limits 非空时返回 Err) - B3:
eneros-simulator集成(with_algorithmbuilder +parse_algorithm自由函数 + 8 单元测试)
批次 C — 算法精度验证(3 任务)
- C1:AC-OPF IEEE 14 MATPOWER 对照(
matpower_loader.rs解析器 + fixture + 快照 + 集成测试;IEEE 30/118 推迟 Phase 2) - C2:IEEE 39-bus 暂态 CCT(3 处 API gap 详细记录 +
#[ignore]+ TODO v0.52.0+) - C3:GB/T 14549-1993 谐波限值合规(625 行 + 完整 Table 2 orders 2-25 + 4 电压等级 + 29 新测试)
批次 D — 协议 Fuzz 基础设施(6 任务)
- D1:4 个 fuzz target(IEC 104 / IEC 103 / DL/T 698 / PMU C37.118)+ libfuzzer-sys 集成
- D2-D6:60s smoke 测试推迟(nightly toolchain 网络瓶颈 ~20KB/s,200MB+ 下载受阻)—— fuzz target 编译通过
cargo build --workspace验证,API 路径已确认;用户本地执行说明见docs/quality/fuzz-logs-v0510/README.md
批次 E — Property-Based Testing(6 任务)
- E1-E5:5 个核心 crate proptest(eneros-core / eneros-powerflow / eneros-constraint / eneros-gateway / eneros-scada,30 properties × 256 cases = 7680 verifications)
- E6:workspace 依赖
proptest = "1.5"
批次 F — 文档同步(6 任务)
- F1:
CHANGELOG.md+ROADMAP.md(v0.51.0 发布基线 + 完成项移入) - F2:
README.md+README_en.md(版本号 + 变更内容 + 使用场景) - F3:
DEVGUIDE.md+docs/developer-guide.md+docs/user-manual.md+docs/deployment/mvp-demo.md - F4:ADR-0019 +
eneros.toml[quality]section - F5:全量验证(fmt / build / clippy / test / doc / deny 全绿)
- F6:Git tag + GitHub Release
验证
| 检查项 | 结果 |
|---|---|
cargo fmt --all -- --check |
0 diff |
cargo build --workspace |
25.25s, 0 error |
cargo clippy --workspace --all-targets -- -D warnings |
0 warning (55.85s) |
cargo test --workspace |
~7500+ passed / 0 failed / 78 ignored |
cargo doc --workspace --no-deps |
0 new warning in v0.51.0 modules |
cargo deny check |
advisories/bans/licenses/sources ok |
关键数字
- 86 files changed, +9557 / -302
- 88 unwrap/expect 违规清零
- 30 proptest properties × 256 cases = 7680 verifications
- 4 fuzz target(smoke 推迟)
- ~7500+ tests passed
- 0 clippy warning
- 0
#![allow]顶层属性
已知限制
- AC-OPF IEEE 30/118:推迟到 Phase 2(v0.52.0+)
- AC-OPF 求解器升级:当前 merit-order ED 启发式 + 梯度下降内点法无法达到 MATPOWER 1e-6 pu 精度,需 KKT 系统原对偶内点法(TODO v0.52.0+)
- IEEE 39-bus CCT:3 处 API gap(flat-start init / post-fault line tripping / 恒阻抗负荷)阻止 5% 误差断言,标记
#[ignore](TODO v0.52.0+) - Fuzz 60s smoke + 24h run:nightly toolchain 网络瓶颈推迟,用户本地执行说明见
docs/quality/fuzz-logs-v0510/README.md - proptest 扩展:eneros-analysis / eneros-device / eneros-agent 待 v0.52.0+
升级指南
# Cargo.toml
[dependencies]
eneros-powerflow = "0.51"
eneros-analysis = "0.51"
eneros-gateway = "0.51"# eneros.toml — 新增 [quality] section
[quality]
fuzz_targets = ["iec104", "iec103", "dlt698", "pmu_c37118"]
proptest_cases = 256
[demo]
algorithm = "nr" # "nr" | "fd" | "bfsw" | "dc"
[demo.gateway]
watchdog = "mock" # "mock" | "hardware"
[demo.audit]
sink = "memory" # "memory" | "repository"完整变更日志:见 CHANGELOG.md v0.51.0 节