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

74 lines
8.5 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.
# 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,本单使用 978980。
## 决策与任务书偏离
完整核查 `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 junctionStatic/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。工时估算 86172 人时。
- T4Bug 历史、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 errorlint 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、生产资料、依赖和打分参数。