Preserve closed confirmation gates and previously-exposed dataset boundaries. Add auditable 900-trial sensitivity results, current scorer freshness checks, and the v5 collection protocol. Co-Authored-By: Claude Code <noreply@anthropic.com>
8.5 KiB
PROGRESS · 生时校正验证体系补缺(2026-09-20)
基线与边界
- 执行基线:远端
origin/staging = 5049e7847,任务书基线fcad0637的后代。主检出保留原分支与未跟踪文件。 - 工作树:
.worktrees/rectification-validation-20260920;分支:codex/rectification-validation-20260920。 - 一次性测试基线:
.worktrees/rectification-validation-baseline-20260920(detached5049e7847)。 - 仅离线评测、契约元数据与记录,不修改打分实现、生产行为、确认门,不提升 main、不改 workflow、不改 DNS。
- 编号核对:开工 Bug 历史最大号 975;另一任务预留 976/977,本单使用 978–980。
决策与任务书偏离
完整核查 BUG-098、BUG-318、BUG-427、BUG-428。后两条明确规定已曝光案例不得重新算作独立盲测;任务书 T2 的“首次口径干净的官方盲测”没有在决策记录里授权推翻该红线。因此本轮只做冻结当前实现的固定口径重跑,不伪称新独立盲测,不提升官方盲测次数,不改发布六键和确认门。真正的独立验证仍需 T3 所定义的未来 v5;这一部分保持 blocked。
契约刷新需要相应更新旧测试中“当前实现必须等于历史 sidecar”的元数据断言;所有行为断言保留,原值/新值/原因在完成后逐项记录。
环境与基线实测
本机无项目 .venv;使用 python(Python 3.11.7,已有 pytest/swisseph)。python3 launcher 退出 49。mcp / hypothesis 未安装;不顺带升级依赖。前端复用已安装 node_modules,工作树仅新增未跟踪依赖 junction,不纳入交付。
| 检查 | 基线结果 | 说明 |
|---|---|---|
pre_work_check.py --remote-timeout 8 --command-timeout 45 |
fail | 远端 verified;碎片扫描、适配器检查成功;focused tests 23 pass / 1 fail,镜像路径断言,已见于既有错误台账 |
| Python 定向 3 文件 | 21 pass / 1 fail | test_minute_rectification_holdout_validator.py::test_frozen_implementation_hash_matches_manifest 针对历史 v2 封存哈希失败,不改历史封存值 |
前端 rectification-confirmation-gate.test.ts |
7 pass / 0 fail | 后续按相同测试逐项比对 |
| Python quick | fail | 两侧均在 interpretation_source_inventory_gate.py 因缺 mcp 退出 1;46 条缺引用消息逐项相同 |
| 前端 tsc | 0 error | 基线与修改版均退出 0 |
| 前端 lint | 0 error / 120 warning | 基线与修改版相同,不顺带改 warning |
| 前端 npm test(默认并发) | 基线 3470 / 3387 pass / 83 fail | 修改版 3486 / 3409 pass / 77 fail;修改版失败标题为基线子集,0 新增失败;存在文件级环境/资源失败,另做串行补验 |
| 前端 build | fail | 两侧均为 Turbopack 拒绝指向工作树外的 node_modules junction;Static/gzip 环境缺口,未宣称通过 |
基线/当前前端确认门定向均为 7/7,通过项逐条相同。默认并发全量的通过数量差异不是新增业务测试,只是部分文件级中断减少;不能宣称全部前端测试通过。两侧串行补验在数据库容器等待等长时阶段未产出最终汇总,主动停止,标记未完成而不是通过。完整失败标题对照已保存 docs/testing/rectification-validation-20260920-results.json(83 对 77,新增失败 0)。
额外 Python 安全定向:test_rectification_confirmation_and.py、test_rectification_v5_vedastro_validation.py、test_repo_privacy_markers.py 共 85 passed。补验清单见 docs/testing/rectification-validation-20260920.md。
独立验收与复核发现
- 字节级核对:12 个
frozen_scoring.files全部与基线相同;确认门六个 runtime 键值及类型相同;生产decision_policy.py/sealed_holdout.py、历史_candidate_moments()所在文件、request_from_case()所在文件、主 API 与全部frontend/src均未改。 - 任务书引用的
frontend/src/app/page.tsx在执行基线已不存在(首页已迁移),因此用整个frontend/src字节对照证明无新增,不虚报旧路径行数。 - 独立审查发现首版 T1 只在候选枚举保留跨日日期,矩阵下游的 transition proximity 仍使用统一日期,跨日候选得分有偏差。修复限定在离线组装层:按候选日期分组计算矩阵并回并;不改生产打分文件。首版统计不能作最终证据,须修复后重跑并补真实引擎回归。
- 中途代理 API 余额错误导致执行和审查中断,用户要求继续后恢复;不把中断当任务完成。一次报告重定向被分类器按覆盖操作拒绝,经确认目标不存在后改为不覆盖的新建获准;另有子代理角色限制要求返回文档文本,由主会话汇总,不修改权限配置。
执行状态
- T1:修正版完整 900 组合已完成(20 例 × 15 偏移 × 3 半径,排除 0),JSON 与汇总表落盘。默认半径 ±15 在绝对偏移第 16 个整数分钟开始出窗;±30/60/120 对已测偏移几何包含率可恢复 100%,其中 ±120 仅几何推论、未评分。实际交付覆盖与唯一头名命中另列,不混称准确率。口径 v3、raman/mean、1 分钟、历史打分哈希
b15d9ea15227cd58;原生评分扩展哈希115c3fbcffdaff49、研究适配哈希8d0c613dc0900adb。 - T2:当前实现冻结、20 例固定口径重跑、契约刷新与防复发测试完成;实现代理和独立审查均复算逐例/汇总一致。top-1/top-3(含并列)0.45/0.50、MAE 6.45 分钟,三项未达门槛;误确认率 0、稀疏证据拒绝率 1,确认覆盖 0。独立盲测资格仍 blocked,官方有效试次仍 0;不是新的发布成绩。哈希前缀
b15d9ea15227cd58、v3、raman/mean、±10、1 分钟。 - T3:协议已完成。26 名公开 AA 来源候选,与 v3/v4 的 20 人交集为 0;未采事件、未完成人审、未建成 v5。来源直接访问有校验页限制,只算候选筛查,正式准入须复核 Source Notes。工时估算 86–172 人时。
- T4:Bug 历史、BLOCKED、研究索引、任务索引、失败对照和补验清单已更新;2026-09-20 产品明确授权 push staging,本批进入交付。远端推送与部署分别核验,不把授权当完成。
最终验收结果
| 条目 | 结论 | 证据 |
|---|---|---|
| T1 全量偏差评测、四项逐例输出、跨日修正、隐私字段 | 通过 | 900 组合、45 格,参数及评分/研究哈希齐全;汇总从逐例重算一致 |
| T2 当前实现冻结、重跑归属、契约新鲜度 | 通过 | 独立复算完整报告一致;新鲜度与拒绝漂移测试通过 |
| T2 新的独立官方盲测 | 未通过 / 资料条件缺口 | 已曝光样本不恢复独立性,官方试次保持 0;任务书措辞不覆盖 BUG-427/428 红线 |
| T2 指定相关 Python 总集 | 49 passed / 1 failed | 唯一失败是基线同现的历史 v2 哈希断言,错误哈希两侧逐字一致;未削弱断言 |
| 新增 T1 / T2 与 quick 桥接 | 28 passed | 含桥接重复收集的 14 项,不能算 28 项独立用例 |
| 确认门与隐私补充 | 通过 | Python 85 passed;前端确认门 7/7 与基线逐项相同;runtime 六键未变 |
| tsc / lint | 通过 | 两侧 0 error,lint 120 warning 相同 |
| quick / 全量前端 / 构建 | 环境及既有失败缺口 | 见上述基线对照;不可写全绿、Static 或 gzip 通过 |
| T3 v5 协议 | 通过(仅协议) | 26 人来源筛查、旧集交集 0、无出生分钟/坐标;v5 未建成,BUG-980 investigating |
既有断言调整三栏
| 原值 | 新值 | 原因 |
|---|---|---|
Python 与前端 current_tree_scorer.implementation_sha256 绑定历史 post-audit sidecar |
绑定当前冻结重跑的 frozen_record.implementation_sha256 |
元数据含义是当前树;继续绑旧报告强制过期。新增 freshness 同时验证当前源码,未削弱身份校验 |
| 官方 flag=false / trial_count=0、六 runtime 键、确认行为 | 原值不变 | 已曝光重跑不获得独立性;新增断言固定此边界 |
交付说明
2026-09-20 产品明确要求「push 到 staging」。交付前 fetch 确认远端仍为 5049e784,本轮无上游冲突,BUG-978~980 无新增占用;本批实现与记录同次提交交付。推送后另以远端 SHA 核对结果为准;状态板“已合入”仅在远端核对后生效,不代表门禁或部署成功。本批含门禁路径,将触发自动质量门;本机完整 quick/构建缺口仍保留。没有动 main、workflow、DNS、生产资料、依赖和打分参数。