docs: record the F1 residual-bucket fix and the D5 C5 close-out - #114
Merged
Conversation
Two entries appended to docs/progress/07_factor_layer_refactor.md, plus the ledger rows for #111-#114 and the three moving parts of CLAUDE.md (status table, headline, roadmap). What is worth carrying forward from these two steps is not the fixes but what they revealed about the evidence base. C5's failure taxonomy was derived from a results table that recorded one factor's panels leg as passing while its log said ok=False; that factor turned out to be a third member of the F3 family, so the class boundaries had been fitted to an incomplete sample. The full C5 sweep also ran on pre-#109 code, so the bounded warmup cell ceiling never executed even though the audit skeleton described it as an active gate. And every "pass" in the reports column was an F5 FileNotFoundError rather than a verdict, which is why two drifts nobody had ever seen surfaced only now. Five times this round a piece of evidence did not hit the claim it was placed there to support, and not one was caught by a test. The .pyc case is the sharpest: CPython validates bytecode by (mtime, size), so an equal-length rewrite within the same second leaves the mutated bytecode in place after the source is "restored" - which means the harness had been reporting red/green that could not be trusted, and the fix had to include re-running the thirteen mutations already on file, not just repairing the harness. Two overclaims the review measured as false are recorded with their disproof rather than quietly replaced: a whitelist described as the enumeration of a density criterion that in fact admits 69x more pairs, and a C-B comparison presented as an engine-regression check that is tautological (scaling ic_mean in all three books leaves C-B exactly zero).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
进度文档 PR,对应 #112(F1 correctness fix) 与 #113(D5 C5 收口)。docs-only。
改了什么
docs/progress/07_factor_layer_refactor.md追加两条记录(F1、D5 C5)docs/progress/pr_ledger.md补 docs: record PRs #108-#110 in the ledger and date the status gates #111–docs: record the F1 residual-bucket fix and the D5 C5 close-out #114CLAUDE.md只动三处会随进度变化的内容(状态表 / 当前主线段 / 路线图),按 docs: split the progress log out of CLAUDE.md into docs/progress/ #110 立下的规矩——长条目进docs/progress/,不写回CLAUDE.mdcp CLAUDE.md AGENTS.md,cmp逐字节相同记录的重点不是修复,是它们暴露的证据基问题
C5 的失败分类是从一张把某因子的 panels 记成通过、而日志写着
ok=False的结果表推出来的;那个因子是 F3 同族的第三个成员 ⇒ 边界参数原本拟合的是一个残缺样本。整轮 C5 全量跑还是在 #109 之前的代码上跑的,所以 bounded warmup 的 cell ceiling 一次都没执行过,而审计骨架把它写成生效中的闸门。而 reports 一列里每一个"通过"都是 F5 的FileNotFoundError而非判定结果——这正是为什么两类此前无人见过的漂移直到现在才露面。本轮 5 次「证据打不中它要支持的主张」,无一被测试抓住
其中
.pyc那条最锋利:CPython 按 (mtime, size) 校验字节码,所以等长改写在同一秒内会让源码"还原"后变异的字节码仍在原地——意味着 harness 此前报出的红/绿都不可信,修法必须包括把已在案的 13 条 mutation 全部重跑,而不只是修好 harness。两处 overclaim 连同证否一起留档,没有悄悄换掉
ic_mean在三本书里同时放大,C−B 仍精确为 0)。