Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
5.7 KiB
5.7 KiB
PROGRESS · 打字经历按选择题规则计分(离线研究)+ 学业质量题措辞(2026-09-29)
- 任务书:
docs/tasks/TASK-rectification-typed-event-scoring-research-20260929.md - 执行:Claude(直接执行模式,fork 子代理),分支
codex/rectification-typed-event-research-20260929,基线origin/staging@56722063。未推送。 - 研究报告:
docs/research/rectification_typed_event_scoring_2026_09_29.md+.json
开工预检
python3 scripts/pre_work_check.py --remote-timeout 8 --command-timeout 45:exit 0;python_runtime / fragment_scan / external_engine_adapters / focused_tests 全部 ok,remote_visibilityverified。- 读
docs/research/pre_work_error_ledger.mdERR-110(冻结文件改动须重新冻结)、ERR-111(固定PYTHONHASHSEED)。本机无.venv,全部用系统python3。
R0 · 学业质量题措辞(BUG-1088)
scripts/rectification/event_probes.py:_display_date_label对precision == "year"不取月;_quality_user_meaning学业分支按event_kind称呼(EDUCATION_QUALITY_EVENT_NAME:升学 / 学业变动 / 学业中断,兜底「学业经历」),句式「…那次X,结果更接近如愿、将就调剂、发挥失常还是说不清」。四个选项标签未改(仍含「录取」字样,属选项文案,留待产品决定)。- 计分身份不变:
_event_month未改,candidate_split_hash、题目month字段仍带存储的月份;新增测试锁住这一点。 - 同机 A/B(
scripts/research/quality_wording_ab.py,PYTHONHASHSEED=0,v4 前 4 例 ±10 + 2 个虚构出生带学业质量事件):基线连跑两次逐字节一致;改后对比,只有 2 个叶子字段类型变化:user_meaning(2 处)与display_date_label(2 处),均在虚构例的known_event_quality题上;引擎行分数、公开候选决策、全部题目的 id / split hash / outcomes 逐字节相同。2010 年 1 月那次上大学…→2010 年那次学业中断…(年精度 + interruption)2011 年 1 月那次上大学…→2011 年那次升学…(年精度 + start)
- 重新冻结(ERR-110,不覆盖旧记录):
scripts/research/sealed_holdout_rerun.pyFREEZE/REPORT→docs/research/sealed_holdout_rerun_quality_wording_2026_09_29.{freeze.json,json};重放 20 例,metrics 与 20 条 trials 与 09-21 记录完全相同(top1 0.45 / top3 0.50 / MAE 6.45)。scripts/research/reported_offset_sweep.pyFREEZE/REPORT→docs/research/reported_offset_quality_wording_2026_09_29.{freeze.json,json};900 trials 与 summary 与 09-21 完全相同。references/rectification_sealed_holdout.v1.json:current_tree_scorer、current_tree_fixed_protocol_rerun、current_tree_reported_offset_replay指向新记录;旧的 09-21 记录移入previous_fixed_protocol_rerun/previous_reported_offset_replay;evaluated_on2026-09-29。遗留 12 文件哈希c913c6f0…不变,只有扩展身份(event_probes.py 与两份研究脚本)变化。tests/test_sealed_holdout_contract_freshness.py的IDENTITY_FORBIDDEN_PREFIXES补两条新前缀(同 09-21 先例)。
- 新测试:
tests/test_rectification_event_probes.py::QualityWordingTests(4 条:三种类型不叫上大学、年精度无月、月精度保留月、split 月份不变)。
R1–R3 · 离线研究(BUG-1089)
脚本 scripts/research/typed_event_as_probe.py,PYTHONHASHSEED=0 连跑两次 JSON 逐字节一致(各 1 分 25 秒)。结论全部 no_benefit,不建议立实现单。数字见研究报告;要点:
| 项 | raw 口径(±10 / ±30 / ±60) | 判定 |
|---|---|---|
| B0 头名 / 宽度 | 0.75 / 0.50 / 0.35;15 / 33 / 56 | 基线 |
| R1d 头名 / 宽度 | 0.70 / 0.45 / 0.30;15 / 33 / 56 | no_benefit |
| R1y 头名 / 宽度 | 0.60 / 0.45 / 0.30;14 / 33 / 56 | no_benefit |
| R3 头名 / 宽度 | 0.60 / 0.65 / 0.45;14 / 33 / 55 | no_benefit(±10 头名降) |
| 能分边的日精度训练经历 | 4 / 9 / 14(共 57 件) | — |
| R2 挤出真值(k=1 / k=2) | 0–1.5% / 2.1–2.9% | — |
percent 口径结论相同(判定全部 no_benefit)。
测试
- 定向:
tests/test_rectification_validation_integrity_gate.py、tests/test_sealed_holdout_contract_freshness.py、tests/test_reported_offset_research.py、tests/test_rectification_event_probes.py:83 passed(改前重新冻结前为 7 失败,全部是冻结身份不匹配)。 - 快速门
python3 scripts/run_quality_gate.py --profile quick(系统 python3,本机无.venv):JSON / 审计 / 碎片 / BPHS 各步通过;pytest 1001 passed, 1 skipped(含上面四个文件)。随后npm test步骤 exit 127:本工作树没有frontend/node_modules,npm 找不到测试依赖。前端三步(npm test / lint / build)未跑,记为环境缺口,不算通过。 本轮没有改任何前端文件。 - 隐私:
tests/test_repo_privacy_markers.py通过。
偏离
- 基线回放头名与 09-26 研究差 0.05(宽度一致),原因见研究报告「偏离与说明」;方案之间可比,不与 09-26 逐格对照。
- v4 无月精度事件,日精度按所在月判定。
- 未改质量题四个选项标签;前端
collection-question-pool.ts也有「上大学」措辞(采集题示例),不在本单范围,未改。
2026-09-29 Claude 验收补改
- 前端
frontend/tests/rectification-confirmation-gate.test.ts仍读旧冻结重跑报告sealed_holdout_rerun_midnight_anchor_2026_09_21.json(执行方工作树没装前端依赖,快速门前端步骤未跑,没发现)。按 09-21 先例改为新报告路径,两处断言写「原值 / 新值 / 原因」;该文件 7/7 通过。