docs(rectification): BUG-1047 records, progress, device checklist, ledger ERR-110/111

- BUG_HISTORY BUG-1047 (investigating), PROGRESS with timing estimates, A/B
  evidence, diagnostics guide, test diffs and env gaps.
- CHANGELOG (Skill version not bumped), docs/testing checklist + headless
  screenshots, tasks README row -> 待验收, BLOCKED entry.
- pre-work ledger: ERR-110 (byte-identical engine perf changes still trip the
  frozen-scoring integrity gate), ERR-111 (Shadbala fingerprint depends on
  PYTHONHASHSEED).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
Jesse_Chen
2026-09-26 11:53:27 +08:00
co-authored by Claude Opus 5.5
parent ab0f01a9cf
commit 86ff9a40d1
13 changed files with 192 additions and 1 deletions
+17
View File
@@ -2,6 +2,11 @@
Purpose: read this file before substantial project work. It exists to stop repeat mistakes caused by multiple Codex windows, WorkBuddy mirrors, local drafts, backup folders, and partial cloud-git visibility.
## 2026-09-26 · 校正时延单预检(BUG-1047)
- `python3 scripts/pre_work_check.py --remote-timeout 8 --command-timeout 45` 在 Linux / Python 3.13 上整体 exit 0:远端 verified,碎片扫描、外部引擎适配器诊断与 5 个 focused 目标全部通过(本机没有复现 09-24/09-25 记录的 `.workbuddy` 镜像断言失败)。
- 新发现两条,记为 ERR-110 / ERR-111。
## 2026-09-25 · 三份修复单最终验证环境保真
- Windows普通文件形式的migration symlink导致duplicate filename;被错误设为可执行的Skill文件改变hash framing。改用保留Git mode/symlink的archive,不能改迁移duplicate detector或registry hash迎合污染环境。
@@ -402,3 +407,15 @@ Prevention: 前台同步路径不得进入无上限排队,超预算即 fail-fa
本仓引擎同步停在 `f2241463`(2026-09-03)。上游 `f3b5196f`(2026-09-09)才引入 `reader_main`,`origin/main` 在 2026-09-25 fetch 后是 `23b9609e`,不是任务书写的 `19195f6e`。漏掉的还有 `calc_solar_return_chart` 返回值里的 `birth_asc_sign_idx`(上游 solar_return 成功字典会写这个键)。网页全读用 `type('Args', (), fields)()`,上游同样用 `SimpleNamespace(**vars(args))`,实例字典为空时 KP / transit 读不到 `year`;上游空结果不写进读者正文,所以这个缺陷在上游也潜伏。
Prevention: 引擎/上游同步类任务必须 fetch 后核对 `origin/main`,以实际 SHA 为准,并在进度和本台账写明与任务书 tip 的差异。读者版整段引入要带来源提交。不要把 `.workbuddy` 当主仓。同步太阳返照时核对返回键,而不只核对函数还在。关联 BUG-1026、BUG-1027、BUG-1028。
## ERR-110 | 输出逐字节不变的引擎性能改动也会打红校正验证完整性门禁 | observed 2026-09-26
`scripts/rectification/event_probes.py`、`refinement_packet.py` 等 10 个文件在 `scripts/research/sealed_holdout_rerun.py` `PRODUCTION_FILES` 里,另有 dataset `frozen_scoring.files` 12 个遗留文件;快速门的 `tests/test_rectification_validation_integrity_gate.py` 按文件字节哈希核对冻结记录。BUG-1047 的探针大运表复用(同机 A/B 7 个场景逐字节一致,refresh 61 候选 2.33 → 1.84 s)只改了 `event_probes.py`,就让该门禁 4 条失败。
Prevention: 引擎/打分路径的性能任务书开工前先查这两份清单;动到其中任何文件,即使输出不变,也要把「按研究协议重新冻结 sealed holdout / reported offset 记录」写进任务分解,否则不要合入。同机 A/B 是必要证据,但不能代替重新冻结。关联 BUG-1047、BUG-985。
## ERR-111 | Shadbala 特征指纹随 PYTHONHASHSEED 变化,同一输入跨进程 `feature_hash` 不同 | observed 2026-09-26
同一台机器、同一份代码、同一虚构请求连跑两次 `score_candidates`:`candidate_feature_snapshot.features[*].fingerprints.shadbala` / `static` 与 `feature_hash` 每次都不同;固定 `PYTHONHASHSEED=0` 后两次逐字节一致。说明 Shadbala 结果里有依赖集合 / 哈希顺序的结构进入了指纹。打分分数本身未见变化(未系统核对)。
Prevention: 跨进程比较引擎输出(A/B、golden、缓存键)时固定 `PYTHONHASHSEED`,或排除这三类指纹;若有缓存或复用判断依赖 `feature_hash`,需另开单核对是否因此每次都判为变化。本条只记观察,未修。关联 BUG-985、BUG-733。