Files
Jyotisha/docs/tasks/PROGRESS-rectification-validation-20260920.md
T
jesse-uxandClaude Code 932f2fffba
Independent Staging Quality Gate / validate (push) Successful in 12m7s
Independent Staging Quality Gate / publish (push) Successful in 3m46s
research(rectification): add reported-offset evaluation and frozen rerun integrity
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>
2026-09-20 12:03:52 +08:00

8.5 KiB
Raw Blame History

PROGRESS · 生时校正验证体系补缺(2026-09-20)

基线与边界

  • 执行基线:远端 origin/staging = 5049e7847,任务书基线 fcad0637 的后代。主检出保留原分支与未跟踪文件。
  • 工作树:.worktrees/rectification-validation-20260920;分支:codex/rectification-validation-20260920。
  • 一次性测试基线:.worktrees/rectification-validation-baseline-20260920(detached 5049e7847)。
  • 仅离线评测、契约元数据与记录,不修改打分实现、生产行为、确认门,不提升 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、生产资料、依赖和打分参数。