Files
mcm-26-b/output/reviews/simulator-fixes-7930eb6.md
T
2026-09-11 08:29:56 +08:00

25 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 模拟器审核修复记录
日期:2026-09-11。对应 `simulator-equivalence-7930eb6.md` 的七项问题。
| 审核项 | 修复 |
| --- | --- |
| 现实截止 | 注入单调时钟、Unix时钟与窗口起点;默认取25分钟窗口与进入后20分钟的较早截止,返回剩余完整秒数。时间戳来自Unix时钟。 |
| 虚拟截止 | 整数微秒累计;已登记跨限动作完成并返回结果,此后包括exit在内的新请求抛出SimulatorClosed,模拟连接关闭。正常exit也关闭接口。 |
| 请求边界 | 内存传输校验精确路径、方法、媒体类型和编码、UTF-8/BOM、重复键、JSON对象、16层深度、65536字节上限;返回相应JSON错误。 |
| 标识符 | 拒绝Unicode控制、格式和代理字符,保留UTF-8字节长度检查;非法请求不写入幂等缓存。 |
| 并发 | 锁内原子登记;不同请求立即409,同ID不同内容409;同ID同内容等待首次结果,动作只执行一次。执行期间不持有登记锁。 |
| 微秒精度 | 各计费段量化为整数微秒;模拟器和离线复算使用整数累计,客户端共享量化费用模型。 |
| 正负零 | 哈希坐标规范化零值,同一几何点的正负零表示产生相同固定误差。 |
CLI自检显式使用 `stress_mode=True`,保留原有1800秒预算并相应扩展窗口。
直接构造模拟器默认遵守官方时间上限。场景生成文档明确均匀分布属于测试假设。
客户端接受合法的零秒剩余预算,后续动作仍受预算检查保护。
验证:`.venv/Scripts/python.exe -m pytest -q`,**144 passed in 33.33s**。
新增 `tests/test_simulator_conformance.py` 共31个测试案例,覆盖审核反例、临界值、
并发等待及截止期间动作完成。原有虚拟超限测试改为验证连接关闭,官方日志回放与策略测试通过。
本轮仅运行本地测试,没有连接2026端口,也没有消耗官方演练案例。
该实现仍是内存模拟器;TCP连接限流、官方UI/上传生命周期及隐藏随机分布不在等价范围内。