Repository navigation
fix(search): close proof-audit counterexamples and certify pruning arithmetic - #43
Conversation
Preserve all public u16 IDs in canonical bounds. Certify compensated support dominance against actual f64 evaluation and validate support- only identities before narrowing. Replace heuristic log margins by outward interval certificates with an explicit logarithm remainder; protect wide event probes and optional joint arithmetic. Add permanent regressions, strengthen the mathematical arguments, and make external- data skips and exhaustive CI gates explicit.
188cba1 to
5b302d0
Compare
Record native, extended-matrix, Server, MSRV and executed WASM evidence. Keep real-browser, real-corpus and production-latency exclusions explicit. Allow for both subnormal error terms in the live-grid argument.
补充验证结果当前 PR HEAD: 已完成
WASM 对照涵盖 Power、Power 最小化、Skill、Solo Average Score、Auto Score、Multi 活动 Score、Cheerful Score、MYSEKAI、Bonus。输入由仓库的 synthetic fixture 派生,保留完整合成 masterdata,账号限制为 8 个角色,并一致地引入合法公共 ID 65535。比较完整整数目标值时先保留为十进制字符串,避免 JS Number 丢失整数精度;同时比较队伍顺序、综合力、技能、培养态字段及 completion。未载入 masterdata 时也验证了显式报错。 这些是 9 个不同输入,不是 27 个独立样本。WASM workspace 的 native 编译包含 0 个测试,不被算作实际 WASM 执行;实际执行来自上述 Node 模块验证。没有声称完成真实浏览器、真实账号语料或生产延迟验收,也没有据此证明 20 ms 指标。 扩展矩阵 oracle digest: |
合并后的独立证明复审:仍不能通过固定审计快照: R1 / 高优先级:近似 tick 判定被误当作精确运算闭包,公开 engine 返回 Complete 空集位置: 令 δ = 6/2^26。支援条目 低层五卡样例:唯一合法主队 进一步已通过未修改的公开建池和 engine复现:25 张拥有卡,普通 WL2 event 176,正常 count=20;4 条高支援 这不是因手工构造不满足 handler 前提而产生的假反例,也不是最终显示小数误差。数据是合成的,不声称当前真实主数据含该值。相关 fuzzy tick / exact_slack 代码在 PR #43 之前已经存在,不将其误报为本 PR 新引入的回归。 修复义务:对派生 loss/base/refill/excess 传播保守区间,或者提供覆盖整条运算链的精确证书;近似整数的加减运算不能自动获得精确性。不能通过给 leaf 取整或改变“精确命中档位”的含义规避反例。 R2 / 高优先级:结构体 BuildParams 未验证 Specific 排列
R3 / 中优先级:WASM JSON 先 u64→usize 截断、后检查范围
已经实际执行 Node 22.17.0。复用上一轮已构建模块,本轮未重新构建;确认对应 src/wasm/Cargo 源码与本轮 main 完全相同,engine.rs SHA256= 应在原始 u64 上检查范围,再 checked-convert;该具体样例截断后仍界内,不与R2的越界风险混为一谈。 R4 / 中优先级:from_whole 在检查前 u16 乘法回绕
本轮实际验证
本轮没有发现原SmallestIds/严格支援抵扣回归再次失败,也未找到新log区间实现的反例。但R1已推翻当前“受支持输入Complete即精确Top-K”的全局结论,R2说明handler尚未真正建立unsafe叶子依赖的全部前提。新增测试补丁、原始日志和审计报告另有证据包;没有修改评分器以消除失败。 修复优先级:R1、R2先阻断;R3统一跨架构输入语义;R4补表示边界。真实账号数据、真实浏览器和性能分布未在本轮认证。 |
审计结论与范围
基于
165ff63525be2c13d4ae9b6417924e0b789e5ff6,修复两处已复现的Complete错误结果,并处理修复过程中发现的数值范围、输入表示和证明缺口。不修改 leaf evaluator,不靠改变评分公式让反例通过;不合并 main。详细推导与复现见新增
docs/proof-audit-20260926.md,以及更新后的docs/pruning-proof.md/docs/exactness-proof.md。已复现并修复
1. 支援抵扣错误删除真实 Top-1
六卡反例中,A 的主卡基础加成为 64.1%,B 为 62.5%,支援表为
(100,7.05),(200,5.45),(300,2.05),(301,0.8),(302,0.5),计入 4 张。实数下两队都是 72.9%,实际 f64 求值却分别给出 MYSEKAI 1728 / 1729。旧终章搜索删除 B,返回Complete / 1728;完整有序穷举为 1729。现在区分两种可证明的替代:支援次序统计量不下降时直接用浮点单调性;需要基础加成抵扣时,向外计算严格余量,且余量必须超过已推导的两队舍入误差。实数恰好抵消不能再授权删除。
2. 公共卡 ID 65535 与空槽哨兵冲突
八卡 Power Top-20 旧结果第 20 名为
534 / [101,103,104,106,65535],正确 canonical 集合为534 / [101,102,104,107,65535]。Power 和通用 numeric 的最小 ID 前沿改用显式 occupied length;
65535仍是合法 ID,没有新增候选裁剪或缩小合法 ID 范围。其他修复与补证
1e-9/ “几个 ulp”假设。采用向外区间运算、带明确余项的 atanh 级数计算 logarithm、端点外扩、可认证弦斜率;近退化区间无法证明时回退。所有消费者的乘法、求和及最后一组阈值减法也按正确方向取整。i128阶段计算及最终单调截断,避免窄化回绕;可选 joint bound 的大系数和有理式使用 checked arithmetic,溢出仅禁用更紧上界。本轮已经完成的验证
Native x86-64,Rust 1.98.1,单逻辑核 CPU quota 80%,内存 1536 MiB,无 swap:
cargo fmt --all --check:通过。cargo clippy --locked --all-features --all-targets -- -D warnings:通过。cargo test --locked --release --all-features:308 单元测试通过,8 ignored;1 集成分类测试通过,3 外部数据测试 ignored;1 doctest 通过。long_exact_all_scene_property_matrix:256 cases / 3840 comparisons 通过。ALLIUM_VALIDATION_ORACLE_SEEDS=16 ... validation_oracle_extended:4608 contexts / 18432 Complete searches / 13,765,632 ordered assignments / 287,232 compared rows 通过。独立 Server / MSRV / WASM 检查另行记录,未完成前不计作通过。GitHub CI 以实际 check 状态为准。
证据边界
两个 wrong-result 反例是真正的修复前失败、修复后通过。旧 log bound 的问题是未闭合证明义务,不冒充第三个已复现漏解。Oracle 不复用剪枝、placement、tracker,但共享叶子评分实现;这些结果不是对游戏公式的独立认证,也不是全程序机器检查证明。真实账号语料、真实浏览器发布验收和生产长尾性能不从合成测试推出;本 PR 不声称满足 20 ms 指标或“已经找到所有可能的 bug”。