Carry explicit local date intervals instead of inferring the day from clock order. Cluster width, delivery, adoption, and reports keep the actual civil date; adopted date is stored separately from the reported birth_date. Algorithm identity is scoring-9 / spec-v5. Scoring weights, confirmation thresholds, and Skill version are unchanged. Isolated Linux final-3 gates passed; four pre-existing Python failures remain. This is not a production release.
242 lines
29 KiB
Markdown
242 lines
29 KiB
Markdown
# PROGRESS · 跨午夜日期锚点与分段跨度(2026-09-20)
|
||
|
||
## 基线与边界
|
||
|
||
- 实际基线 `3be740f84d12b098b27b88105a88b5e2d8dd0ead`,指定工作树开工干净;任务书基线的后代。
|
||
- 核心代理整合日期窗口/D1/D2/报告与记录;D4 代理独占采用迁移及外围同源读取;transition 代理独占 transition 构建/符号查找/相关专用测试,交回后核心整合消费端。均在指定工作树执行,不 commit/push;主会话负责预检、基线全量/build、独立验收。
|
||
- D1/D2/D3 已批准,后续真实用户 D4 明确授权跨日采用及向后兼容新迁移(20000/30000);覆盖原本轮不改 DB 的限制,仅限任务所需。旧迁移不改,历史不猜补。不改分数/权重/阈值、Skill、workflow。历史结果不重标、不删除。
|
||
- 请求 `candidate_intervals[{start_at,end_at}]` 明确本地日历日期。候选 `window_index` 是稠密采样序号,`window_offset_minutes` 是相对首段起点的真实分钟,`segment_index` 区分声明的不连续段;`candidate_date` 保留实际日期。粗采样不以序号差冒充分钟,分段不以 min/max 填平。
|
||
|
||
## T1 修前红测(实现前实跑)
|
||
|
||
| 套件 | pass | fail | 事实 |
|
||
| --- | ---: | ---: | --- |
|
||
| Python `test_rectification_midnight_date_anchor.py` | 3 | 3 | 申报中心落次日、late_night 含次日、跨午夜簇倒序 |
|
||
| TS `rectification-midnight-date-anchor.test.ts` | 0 | 3 | 请求无日期字段、credible union 钟点 min/max、plateau 1≠3 |
|
||
|
||
原始日志位于本工作树 `artifacts/midnight-date-anchor/red-python.txt`、`red-frontend.txt`。核心失败输出:
|
||
|
||
```text
|
||
assert datetime(2000, 6, 15, 0, 10) in moments # 实际从申报日23:55开始
|
||
Extra items in the left set: '2000-06-16'
|
||
At index 0 diff: ['00:00', '23:58', '23:59'] != ['23:58', '23:59', '00:00']
|
||
request candidate_intervals: actual undefined
|
||
credible union: actual ['00:00','23:59'], expected ['23:58','00:00']
|
||
plateau: 1 !== 3
|
||
```
|
||
|
||
前端首次仅是依赖缺失(zod),不计为业务红测;在本树建立 node_modules junction 只读复用主仓依赖后,重跑得上述真实断言失败。未安装或修改共享依赖。Windows symlink 缺权限,使用目录 junction;不用于 build。
|
||
|
||
## 开工核对
|
||
|
||
- 已完整读 AGENTS/CLAUDE、前端 AGENTS/DESIGN/VOICE、日期任务、研究定论§6、错误台账;按模块/接口/午夜词检索并完整读 BUG-098/981/982/983/984/985。
|
||
- 旧防复发仍存在:981 候选日期 helper;984 `readV9EngineScoringIdentity` 完整 pair 与写入前 `assertV9ResultWritable`;985 同机 native/legacy 严格字节比较。098 枚举兼容未覆盖日期锚点/后续宽度,故不能代替本轮回归。
|
||
- 主会话预检:remote verified,fragment/adapters ok,focused 23 pass / 1 fail;失败为既有 `.workbuddy` 镜像路径断言,不伪造路径、不修改测试。
|
||
- 主会话公开 health:web/API 均 `8d0359fc62d525e2b7c1e5c7fe6df37f57833ad4`,migration `20260920010000`,status ok。仅证明前置部署,不代表本轮已部署或真人通过。
|
||
- 实际 python 3.11.7,python3 launcher 不可用;Docker 29.8 可用。Linux完整基线由独立验收代理负责。
|
||
|
||
## 执行状态
|
||
|
||
| 项目 | 状态 |
|
||
| --- | --- |
|
||
| T1 红测 | 已完成首批,边界用例随实现补充 |
|
||
| T2 日期契约与 D1 | 本地实现,真实schema/动作/DB与首次HTTP opening测试已过;受控浏览器pending |
|
||
| T3 三处跨度与分段投影 | 本地实现及定向通过;最终全量待独立快照 |
|
||
| T4 交付说明及异日采用安全 | D4 迁移真实 DB43/43,实际日期/前一天/后一天交付与 native SSR 贯穿通过 |
|
||
| 同机公开 AA A/B、真实 golden | 独立子进程三 AA × 七投影逐位相等;原生 golden 已重新生成 |
|
||
| T5 最终记录及真人清单 | 已更新本地记录;真人/部署及最终门禁 pending |
|
||
|
||
所有未实跑项均不计通过,不提前标 resolved。
|
||
|
||
## 定向收口证据(2026-09-20)
|
||
|
||
| 证据 | 实跑结果 | 日志(本树 artifacts/midnight-date-anchor 下) |
|
||
| --- | --- | --- |
|
||
| Python 核心日期、transition、VedAstro、growth 四文件 | 68 pass,exit 0 | `final-python-targeted-68.txt` |
|
||
| TS 日期15、transition、engine contract、range delivery、adopted date 五文件 + tsc | 61 pass / 0 fail / 0 skip;tsc exit 0 | `final-frontend-targeted-61-tsc.txt` |
|
||
| 最终 D4 与窗口迁移(含widen/pending guard)标准真实 PostgreSQL | 56 pass / 0 fail / 0 skip,exit 0 | `core-widen-db-final/database-tests-final-3.log`;早期43/43仍留 `dated-window-adoption-db-final.txt` |
|
||
| 三公开 AA 同机独立子进程 A/B | 3×7 相等,numeric tolerance=0 | `delivery-native/independent-process-aa-ab.json`、`delivery-native-generation.txt` |
|
||
| 主会话独立 VedAstro + growth | 21/21 | 主会话原始日志 |
|
||
| 固定 VedAstro1.23.26 基线 | quick0,Python891/1skip、前端3588、lint0error/119warning、首页Static;宽glob296pass/4既有fail | 主会话 fixed126 原始证据,不替代实现门禁 |
|
||
|
||
精确收口命令(cwd 为本树或 frontend):
|
||
|
||
- `python -m pytest tests/test_rectification_midnight_date_anchor.py tests/test_rectification_dated_transitions.py tests/test_rectification_v5_vedastro_validation.py tests/test_api_server_growth_contract.py -q`,exit0。
|
||
- `node node_modules/tsx/dist/cli.mjs --test tests/rectification-midnight-date-anchor.test.ts tests/rectification-dated-transitions.test.ts tests/rectification-v9-engine-contract.test.ts tests/rectification-range-delivery-20260907.test.ts tests/adopted-birth-date.test.ts`,exit0;随后 `node node_modules/typescript/bin/tsc --noEmit --incremental false`,exit0。
|
||
- `python scripts/research/midnight_date_anchor_regression.py --baseline <独立基线树> --output artifacts/midnight-date-anchor/delivery-native --golden --golden-path frontend/tests/fixtures/rectification-midnight-date-anchor.delivery.native.json`,exit0。旧 native/final.native 保留过程证据并纳入源码快照(无当前测试消费者;native仍是生成器默认目标,open(x)防覆盖),不删除或伪作最终响应;最终贯穿测试读取delivery.native。所有fixture原生生成,未手改响应。生成器 open(x) 不覆盖旧证据。
|
||
|
||
身份为 scoring-9;显式区间 calculation-spec-v5,缺字段 legacy 保留 v4 硬 hash。首次 `green-python-targeted.txt` 实为 81pass/3fail(legacy spec误变),不得当作绿日志;修复 explicit-only v5 后重跑已过,旧日志保留。首版 same-process A/B 有裸模块缓存风险,只引用 independent-process 证据。VedAstro 曾1.23.25→1.23.26漂移已记 ERR-107,不声称全程 pin。
|
||
|
||
### D1 四层证据与限制
|
||
|
||
1. 真实 `expectedAnswerSchemaFor` 首跑5绿4红,原因是新选项含 HH:MM 被原 `serverOwnedChoiceCopy` 禁止;只改中文钟点,未放宽过滤,原断言保留,随后9/9。
|
||
2. `applyRectificationChoice` 的 A/B/C/skip 真实服务动作进 dated RPC,一次写入;fakeAccounting不是浏览器/真实DB。
|
||
3. 标准 PostgreSQL 独立A/B/C/skip选择与reload pending=false;服务测试reload后不重问。首次HTTP opening→persisted focus独立1/1通过,真实300分钟窗、`probe:block_scan.midnight_side` ID,四选项消费真实persisted schema,不含次日;HTTP依赖隔离测试不等于受控真人。
|
||
4. 真人浏览器缺受控登录态,BLOCKED;不能由前三层冒充通过。
|
||
|
||
### 红线与既有断言变更
|
||
|
||
| 文件 | 原值 | 新值 | 原因 |
|
||
| --- | --- | --- | --- |
|
||
| `account-api.test.ts` | `birthTime: resolveAppliedAccountBirthTime(...)` 源码断言 | spread 同源返回,新增 activeDate/activeTimezoneOffset 断言 | D4 同源 hydration,未删旧行为测试 |
|
||
| `consultation-route-service.test.ts` | select 仅 birth_date 与 time | select 增 active_birth_date/active_birth_timezone_offset/active_birth_provenance | D4 咨询 date/time/offset 读取 |
|
||
| `server-owned-birth-profile.test.ts` | ACCOUNT_BIRTH_SELECT 原字面量 | 增同三字段,其他保持 | daily/synastry 共用服务端同源资料 |
|
||
| `test_rectification_v5_vedastro_validation.py` | 单一 happy-path | dated false/true 参数化,新增真实候选日期断言 | 不增 handler/__new__ 点,不变通过和 can_confirm=false 断言 |
|
||
| `rectification-engine-version-cross-midnight.test.ts` | live default/Python 源码也用历史 CURRENT=8;混合身份将旧无日期响应标为9/10 | 独立 LIVE_CURRENT=9,历史 CURRENT=8/PREVIOUS=7 与 golden 不改;新增8失效/9命中;9/10混合测试改用真实 dated delivery golden,10仅模拟滚动身份 | 本轮日期契约可靠升级;不能把历史 fixture 重标或将无日期响应冒充9 |
|
||
| `rectification-v9-case-service.test.ts` | deepEqual仅 start/end clocks | 原clock与stage断言保留,expected显式增加实际日期;late_night同日两段与pending=true | 新开案日期契约,不用被测helper生成expected,不放宽成subset断言 |
|
||
| `rectification-window-widen-20260907.test.ts` | stub/调用名为旧case_window RPC;返回仅clock | dated_window RPC,stub返回日期区间且reload parser额外断言日期 | 对齐已批准RPC;原半径30、source、snapshotCurrent=false、不重写probe/inference断言全部保留;不代表生产跨日widen语义已过 |
|
||
|
||
三文件定向重跑55/55、tsc exit0,原日志 `three-legacy-contract-tests-tsc-green.txt`。前次54/55红日志 `three-legacy-contract-tests-tsc.txt` 保留:旧混合身份测试把算法8无日期响应标成9,触发日期覆盖校验;改用真实算法9 golden后通过。精确命令为 frontend 下 `node node_modules/tsx/dist/cli.mjs --test tests/rectification-engine-version-cross-midnight.test.ts tests/rectification-v9-case-service.test.ts tests/rectification-window-widen-20260907.test.ts`,随后 `node node_modules/typescript/bin/tsc --noEmit --incremental false`。
|
||
|
||
主会话阶段红线审计及最后限定复核 `independent-redline-late-prefreeze-review.json`:真实Home `(app)/page` states34/refs37/lines1826、API lines10931/methods218/__new__ hits31均不变;无Skill/workflow/deploy/依赖声明/旧迁移diff;评分/权重/确认门未改,仅algorithm/spec日期身份升级。最终AA与全量仍待验。新文案已对照 VOICE,DESIGN 同批记录 chart-library 与 range-delivery 行为,无新状态/入口/动画。
|
||
|
||
## 限定收口与最终待验边界
|
||
|
||
- 实现快照最终 quick、前端全量、lint、build与首屏gzip,由独立验收负责,不争抢 .next。
|
||
- widen复核发现真实缺陷:旧30000只依baseline+新clock重算,丢持久绝对日期/已选side。新增真实DB红测后仅改本单30000:普通分钟基于持久日期扩窗;D1首次A/B/C/skip建立服务端 `midnight_allowed_intervals`,后续narrow保留允许集合,不把C缩单段误认选侧;请求无法满足side/containment/strict-width/max-width时整事务回滚,case/result全行(含时间戳与invalidation)不变。普通advance不物化pending=false。旧无allowed provenance不猜扩宽,保留原段。
|
||
- DB→reload→request builder覆盖普通前日、A/B、C/skip与双段;另有真实SQL dossier/compute→scoreAndPersistCurrentEvidence→minute `/score` fetch捕获,断言stage=minute与同日两段;网络在捕获后故意400终止,仅证明请求链,不虚报真实engine执行或结果写入。首次HTTP opening链主会话独立1/1,真人仍pending。
|
||
- widen定向DB已绿;标准套件首跑53/54(archive副本无.git导致git check-ignore环境红),隔离快照git init后前版55/55、exit0。最终限定复核又补pending guard:显式NULL拒绝;pending=true只能原区间不变,缩窄/选侧必须false。新负例真实红12pass/2fail(1业务+父汇总),guard后14/14;全case/result事务不变及不变true兼容都通过。最终SQL SHA256 `a18e59ad1a9ca960eab0497e47f8a6107f6e171a4f0175928a21689835dce895`,最后标准 `npm run test:db` 56/56、0fail/0skip、exit0,原日志 `core-widen-db-final/database-tests-final-3.log` 与 `.exit`;这是最终guard源码的标准DB绿,前版日志保留不替代。阶段快照从固定3be740f8 git archive保真实symlink,复制清单 `core-widen-db-1-copy-manifest.txt`,依赖在容器独立npm ci,无共享依赖修改。红日志 `core-widen-db-1-attempt-1/red-widen-2.log` 中7项业务失败+1项terminal fixture字段错误+父测试汇总失败,不把fixture错误冒充业务红;首修SQL列名歧义与fixture错误在 `green-widen-1.log` 实为红,修后 `green-widen-2.log` exit0。后续service捕获独立 `green-widen-service.log` exit0。
|
||
- saved civil 独立模块/accept route/负例测试已收口,主会话独立4/4;legacy缺字段兼容。首次相对TSX配置路径导致子进程失败,绝对配置路径重跑绿,属于命令配置,不冒充业务红绿。
|
||
- transition 代理限定三项已冻:clusterEquivalent日期等价与build-state metadata、collection active subset存活候选真实sign、Python lagna文案/TS parser/board绝对日期。Python20/20、TS81/81、tsc0、lint0,日志 `subsets-*`;新增真实native lagna fixture,旧golden与旧断言未改。DESIGN已记录完整civil日期与legacy HH:MM,无入口/颜色/状态增加。
|
||
- 上游 dossier/compute 显式畸形 interval 已 fail closed。报告链限定只读复核涵盖consult/reports/worker/longform:effective date + 实际采用offset + dated intervals未发现可达缺陷;主会话sampler41/41含闰日5点与双段31点。此为源码链+定向证据,不是受控真人或最终全量。
|
||
- 受控真人、生产迁移/部署/health 全部 pending;见 BLOCKED 与既有真人清单日期锚点补充。SQL boolean权限fixture不证明真实候选可确认。固定offset不等于IANA/DST修复。
|
||
|
||
## 统一冻结交接
|
||
|
||
核心、transition、D4及opening限定实现全部停写;本次交接包含文档冻结,HEAD仍为 `3be740f84d12b098b27b88105a88b5e2d8dd0ead`。最终核心定向70/70(`core-final-targeted-70.txt`),最后guard tsc/lint各exit0(`pending-guard-final-tsc-lint.txt`),标准DB56/56。独立runner内 `docker ps -a` 空,临时fixture已清理,DB runner释放给主会话统一快照验收。尚未完成的统一全量/build/gzip/最终AA以及受控真人/部署不因冻结变成通过。
|
||
|
||
新增交付清单23项(22代码/测试/native fixture + 本PROGRESS),原生native/final.native过程证据纳入快照且保持原样;artifacts日志、node_modules junction、.next不属于源码新增清单。未commit/push、未新建worktree、未改共享依赖。
|
||
|
||
## final-1 后三项 Python 合同测试限定解冻(2026-09-21)
|
||
|
||
主会话 final-1 发现 Python 三个 glob 为338pass/11fail,其中原4、本轮新增7。本代理仅获准解冻下列3测试文件与本PROGRESS;其余生产、SQL、历史golden继续冻结,另4项validation integrity由其他代理处理,本代理未动。以下修正不是全量验收通过,完成定向后再次停写交回。
|
||
|
||
| 原值 | 新值 | 原因 |
|
||
| --- | --- | --- |
|
||
| `tests/test_dasha_transition_proximity_cross_midnight.py` 固定algorithm8、全局spec常量v4 | current algorithm9、常量v5;无interval请求仍逐项验证legacy spec v4及基线固定SHA256 `bfdee46405a38f2508a2071929b60d79d15a78ca0e1e81f6c7ffd1652e301a08`;显式interval验证完整v5 spec与不同hash | 日期契约合法升级不能误改legacy语义;固定hash由只读基线3be740f8实算,未用被测helper动态生成expected |
|
||
| `tests/test_rectification_relative_support.py` current algorithm8 | 仅current algorithm9及对应注释;policy3、proportional与全部数值断言原样 | 缓存身份升级,不是policy、prior或评分变更 |
|
||
| `tests/test_rectification_engine_memoization.py` live receipt与历史8 golden直接同key集合比较 | 专用跨版本helper先精确校验4个新增metadata(dated-v1、原fixture同日12:00–12:02绝对interval、offset8、空timezone ID),旧UUID硬值保留,新UUID独立用hashlib/json/uuid5与固定algorithm9/policy3公式校验;仅这4字段与代表UUID作比较投影,其余receipt key集合及所有candidate score仍用原严格比较器;snapshot身份分别断言8/9,余字段也严格比较 | 历史golden不重标、不重生成;未知额外key不得被泛化metadata删除吞掉;新增7项真实引擎响应变异反向断言涵盖4 metadata、UUID、未知key与confirmation_allowed。原score+1e-2/time变异测试保留,浮点容差abs2e-3/rel5e-4不变 |
|
||
|
||
定向命令(cwd为本任务工作树,实际使用可用的 `python`,非Windows不可用的python3):
|
||
|
||
```text
|
||
# 修改前原红:3 failed,exit1
|
||
python -m pytest tests/test_rectification_cross_midnight_gate.py::test_fixed_scoring_identity_is_exposed_without_changing_input_contract tests/test_rectification_engine_memoization.py::test_score_candidates_matches_baseline_golden tests/test_rectification_relative_support.py::RelativeSupportScaleTest::test_holdout_gate_keeps_proportional_default -q
|
||
# 最终绿:34 passed in 11.04s,exit0
|
||
python -m pytest -o addopts= tests/test_rectification_cross_midnight_gate.py tests/test_rectification_engine_memoization.py tests/test_rectification_relative_support.py -q
|
||
```
|
||
|
||
原红保留 `artifacts/midnight-date-anchor/final1-python-contract-red.txt`;最终绿为 `artifacts/midnight-date-anchor/final1-python-contract-green-final.txt`(含命令与exit)。较早的 `final1-python-contract-green.txt` 也是exit0,但未包含最后新增snapshot余字段比较,以final日志为准。34项为bridge9 + memoization21 + relative_support4;只选bridge,不同时collect源文件,未重复计算9项。`-o addopts=`仅移除仓库默认quiet参数以显示准确汇总,不改测试断言或选择范围。
|
||
|
||
最终测试SHA256:
|
||
|
||
| 文件 | SHA256 |
|
||
| --- | --- |
|
||
| `tests/test_dasha_transition_proximity_cross_midnight.py` | `8e38acb8fbc747906d89eadb4a429a8fbc085e34f638c342d1f9cad8e9a1f5b4` |
|
||
| `tests/test_rectification_engine_memoization.py` | `d4f3fd4716d1c514ce443db979cd007c5a45ac0a38a7d65edb1170340c96ef97` |
|
||
| `tests/test_rectification_relative_support.py` | `068d20e52a9908e58012a261dd5bf9bc54c42d5fa7fa393f80fcbf7954181ade` |
|
||
|
||
历史 `tests/golden/rectification_engine_memoization_v1.json` 无git diff,SHA256仍为 `6266e448d7dad204b264cbe8f9bcf4c36e02286794764a94edb9e2ce4d0e3015`。本次没有运行全量、quick、DB或build,没有占用runner、改生产/历史golden/共享依赖、commit/push或新建worktree。主会话报告final-1同机Linux AA为21/21(3×7投影)逐位相同,排除新增metadata及identity IDs;此不等于整个response无变化,也不代替最终统一门禁或真人/部署验收。
|
||
|
||
### 独立复验拦截误加 snapshot 断言与限定纠正
|
||
|
||
上述 `green-final` 34pass仅为当时默认环境实测,不是跨环境闭环。主会话独立同范围 `PYTHONUTF8=1 python` 实测26pass/8fail,真实日志 `artifacts/midnight-date-anchor/independent-python-contract-repair.txt` 原样保留。8项均在本轮误加的整snapshot比较处、进入变异前失败,首差异为 `candidate_feature_snapshot.feature_hash`:历史 `36190982db75d3c9fe7c584607f25342531049c3d751060075519dbbd68033db`,独立环境实际 `ebb4aeae08a4e643012de59d65882c01e8d8e501ba18c9fdcc0c2998b3a5e23e`。这是验收测试误加跨进程绝对hash断言被独立复验拦截,不是生产回归。
|
||
|
||
只读复核两次均为同一Anaconda Python3.11.7、swisseph2.10.03,测试及scoring模块均从本工作树导入;改变UTF8模式可复现,但随后UTF8=0子进程也产生第三个hash,因此不能把UTF8本身断言为根因。两进程payload差异定位到 `features[*].fingerprints.shadbala` → `static` → 外层 `feature_hash`,该次score/receipt相同。生产 `_feature_hash` 对未量化结果做JSON SHA256;BUG-733/985已明确禁止跨进程固定浮点hash。原memo helper刻意仅比较candidate_scores/decision_receipt,原同进程缓存差分与反向测试均仍在。额外只读派生探针在未处理static payload后续变更时失败,不作为派生链已验证证据,也未据此修改生产或golden。
|
||
|
||
| 原值 | 新值 | 原因 |
|
||
| --- | --- | --- |
|
||
| 本轮额外新增 `_assert_tiered_equal` 整个snapshot(只桥接algorithm8/9) | 限定撤回这一个新增调用,加BUG-733/985注释;原helper、原score/time反向、原容差不动;算法8/9、4metadata、独立UUID公式及7新增反向仍全部保留 | 恢复原合同边界,避免对包含未量化浮点派生指纹的历史golden重引绝对hash不变量;不是删除既有断言、放宽评分门或修生产 |
|
||
|
||
获准仅再写memo测试与本PROGRESS,实际定向双跑:
|
||
|
||
```text
|
||
python -m pytest -o addopts= tests/test_rectification_cross_midnight_gate.py tests/test_rectification_engine_memoization.py tests/test_rectification_relative_support.py -q
|
||
# 34 passed in 11.35s,exit0
|
||
PYTHONUTF8=1 python -m pytest -o addopts= tests/test_rectification_cross_midnight_gate.py tests/test_rectification_engine_memoization.py tests/test_rectification_relative_support.py -q
|
||
# 34 passed in 10.73s,exit0
|
||
```
|
||
|
||
日志分别为 `artifacts/midnight-date-anchor/final1-python-contract-corrected-default.txt` 与 `final1-python-contract-corrected-utf8.txt`,均含原命令与exit;以这两份为最终定向证据,先前红绿日志不覆盖。memo测试最终SHA256更新为 `98808b8535f05f81d35a71de067928f762a6aae9fe9e8a2d9c44528f04c6b508`,上表d4f3为被独立复验拦截的中间版;另外两个测试SHA不变,历史golden SHA仍为 `6266e448d7dad204b264cbe8f9bcf4c36e02286794764a94edb9e2ce4d0e3015`。再次停写交回,未写其他文件,统一全量/quick仍由主会话负责。
|
||
|
||
## Grok 接续(2026-09-21)
|
||
|
||
唯一写入执行者按 `TASK-rectification-midnight-final-grok-20260921.md` 串行完成 T1–T5。不重做已闭合功能。HEAD 仍为 `3be740f84d12b098b27b88105a88b5e2d8dd0ead`。未 commit/push/deploy,未改分数/权重/确认阈值、Skill、workflow、依赖或权限。旧 freeze/report/golden/archive 原字节保留。final-1 失败日志与过程红日志不覆盖。
|
||
|
||
### T1 三合同测试独立复验
|
||
|
||
接手 SHA 与交接一致:memo `98808b8535f05f81d35a71de067928f762a6aae9fe9e8a2d9c44528f04c6b508`;PROGRESS 当时 `1c0d81d7e78da93e2b060d4095112245ea3123508fe64b693c0c3691afc485ab`;历史 golden `6266e448d7dad204b264cbe8f9bcf4c36e02286794764a94edb9e2ce4d0e3015`。
|
||
|
||
```text
|
||
PYTHONUTF8=1 python -m pytest -o addopts= tests/test_rectification_cross_midnight_gate.py tests/test_rectification_engine_memoization.py tests/test_rectification_relative_support.py -q
|
||
# 34 passed in 10.84s,EXIT_CODE=0
|
||
```
|
||
|
||
独占新日志 `artifacts/midnight-date-anchor/independent-python-contract-reverify-grok-20260921.txt`。原 `independent-python-contract-repair.txt` 与两份 corrected 日志保留。
|
||
|
||
### T2 扩展身份最小补齐与派生脚本审核
|
||
|
||
`PRODUCTION_FILES` 增补本轮 `candidate_window.py`、`decision_policy.py`、`refinement_packet.py`、`api_service.py`。legacy12 算法与旧 freeze 未改。`reported_offset_sweep` 复用 `implementation_identity()`,未改其源码。current contract / 新报告 / 归档 / 派生脚本不进入 identity。
|
||
|
||
新增 `test_midnight_date_anchor_modules_remain_in_extended_identity`(不依赖 freeze 文件),1 passed。派生脚本独立审源码:校验 report.frozen_record==freeze、freeze_record 身份、freeze≤start≤finish、20/900 完整计数、非独立/禁调参、六 runtime 键值类型、historical metrics 与 unfrozen diagnostic、previous 链、原子替换与非自引用。脚本 SHA 仍为 `c4d06bc82c7e64cf4c9a53401f126b24caa3e11225f8d8d0be9e7399a31e4dbc`,未改脚本。旧五份归档 hash 与交接清单逐字节一致。
|
||
|
||
| 文件 | 原值 | 新值 | 原因 |
|
||
| --- | --- | --- | --- |
|
||
| `tests/test_sealed_holdout_contract_freshness.py` PRODUCTION_FILES 最小集 | `scoring_service.py` + `dasha_transition_proximity.py` ⊆ PRODUCTION_FILES | 原断言保留;新增四模块必含、与 legacy12 不相交、禁止 contract/新报告/history/artifacts 进入 identity | 防本轮日期/回执模块再次遗漏扩展身份;不是放宽 freeze 校验 |
|
||
|
||
身份名单停写后再 freeze。evaluator `scripts/research/sealed_holdout_rerun.py` SHA `5d26d782648bbef42b5dcfe603ef2cbe697b317df6000f7c9c3fa0272504b027`。
|
||
|
||
### T3 生成快照真实 freeze 与 20/900
|
||
|
||
生成包 `scratch/.../generate-bundle-1`:30 个当时已存在的新增路径(含 6 份 history 与本任务单),不含未生成报告。sourceTar `e3507fc4b903646f9bdeb16f1490d8d7119da90fb516177b57a1bb4476cffd6f`,sourceIndexModified=false。restore `/work/implementation-final-2` 保真 0 差,未改 `implementation-final-1`。派生脚本单独复制到 `/work/tools`,SHA 仍为 `c4d06bc8…`。
|
||
|
||
首次 sealed `--freeze` 相对路径 `print(relative_to(ROOT))` 失败,但 exclusive-create 已写出完整 freeze;失败日志保留于 `/work/artifacts/generate-freeze-1`。该 freeze 通过 `verify_frozen_record`,未覆盖。续跑 generate-freeze-2 使用绝对 freeze-path。
|
||
|
||
| 步骤 | exit | 秒 | SHA256 |
|
||
| --- | ---: | ---: | --- |
|
||
| sealed freeze(保留) | 写成功 / print 1 | 0.112 | `9b9bb4b9093a9987e84f04f50b3291ceca23691f89b1d5800c81652aec13824e` |
|
||
| sealed json | 0 | 2.878 | `05458f29215d9784623f1b05f09ef590915caf46a87947f0af31dcae85808620` |
|
||
| offset freeze | 0 | 0.101 | `73848f421b133f53578dd0e0713f24fbb38a2bcf3b27609398b1ba98dbfc224c` |
|
||
| offset json | 0 | 325.993 | `093d50953d7772f037401b99517b8dcaf2a1b20aa3e8ae2e692d83c6510dd02f` |
|
||
|
||
sealed 20/20、excluded=[]、freeze≤start≤finish、`official_valid_independent_blind=false`、`status=blocked_independent_blind_evidence`。offset 20 cases / 900 cells / 完整网格。环境前后不变,`productionPinEquivalent=false`,history 归档字节不变。派生脚本 validate 后 `--apply`,current contract SHA `731628a411b91761af4c3df8198de94b9d78edd9e25d5ae618eec23e11d8b9e0`。六 runtime 键与 `metrics_produced_by` / `current_tree_unfrozen_diagnostic` 相对旧 contract 同类型同值:`status=not_ready`,`confirmation_coverage_rate=0.0`,`top_1_rate=0.15`。四证据与获批 contract 经 scratch `generate-delivery-1` 独占回写工作树,输入输出 SHA 一致;旧归档 contract 仍 `ac81307dd3581db1e687a31100babe71cd5122781d6e5208789b5f68fb02a520`。
|
||
|
||
### T4 新最终快照全门
|
||
|
||
最终包 `scratch/.../final-bundle-3`:34 新增(30+4 证据),92 既有 artifact 白名单,baselineRetained 4856,sourceTar `cb7ad822d2d2a16282b121d2a02964a14912d1bdb81e6b2f2c52f84511359e3a`,sourceIndexModified=false。restore `/work/implementation-final-3` 保真 0 差;身份文件与生成快照逐字节相同。独立 `npm ci`,无复用 `.next`。
|
||
|
||
| 项目 | 结果 | 日志 |
|
||
| --- | --- | --- |
|
||
| tsc | 0 错误 | 容器 `implementation-final-3/frontend-tsc.log` |
|
||
| lint | 0 error / 119 既有 warning | `frontend-lint.log` |
|
||
| 前端 | 3649 pass / 0 fail / 0 skip | `frontend-tests.log` |
|
||
| 真实 DB | 56 pass / 0 fail / 0 skip | `database-tests.log` |
|
||
| build 首页 | Static `○ /` | gzip 日志 `staticHome=true` |
|
||
| JS gzip | 630727 vs 基线 626849,+0.619% | `independent-final-3-gzip.json` |
|
||
| CSS gzip | 39496,不变 | 同上 |
|
||
| Python 广域 | 352 pass / 4 fail:4 既存 + 0 新增 | `python-glob.log`;对照 `independent-final-3-python-failure-comparison.json` |
|
||
| quick | Quality gate passed | `python-quick.log` |
|
||
| 三公开 AA | 3×7=21/21 同机独立进程,tolerance=0 | `independent-final-3-aa-ab.json`;排除新增日期 metadata 与身份 ID,不声称整响应字节相等 |
|
||
| 环境 | 与 fixed126 基线一致;`productionPinEquivalent=false` | `independent-final-3-integrity.json` |
|
||
|
||
四既存失败逐断言对照基线 glob XML:
|
||
|
||
1. `test_long_real_conversation_reaches_vedastro_after_local_range_is_narrow`:actual `04:16` 单分钟,expected `05:07–05:08`,与基线同类。
|
||
2. `test_selector_changes_do_not_change_legacy_or_v5_score_bytes`:actual `e20199f79f42…8edf8` vs expected `23171c47b974…e9d8f`,与基线哈希相同。
|
||
3. `test_v3_development_result_stays_shadow_only`:`assert 1 == 0`,与基线相同。
|
||
4. `test_frozen_implementation_hash_matches_manifest`:类别既存,expected 仍 `153fea0f69d4…528aa`;actual 由基线 `f642651ef4de…cb477` 变为 `6c655b8073de…d2220`。不能称该失败字节一致。
|
||
|
||
final-1 的 338/11 与过程红日志保留,不改写成通过。容器完整产物在宿主 scratch `implementation-final-3/`。
|
||
|
||
### 结论(不发布)
|
||
|
||
| 项 | 判定 |
|
||
| --- | --- |
|
||
| 隔离 Linux 最终门(tsc/lint/前端/DB/build/gzip/quick/AA/0 新增 Python 失败) | 通过 |
|
||
| 四既存 Python 失败 | 未通过(基线同类;第 4 项 actual hash 已变) |
|
||
| 受控真人 / 登录浏览器 | 环境缺口,见 BLOCKED 与既有 testing 清单 |
|
||
| 部署 / staging health | 未做;BUG-982/983 仍 investigating |
|
||
| commit / push | 未做 |
|
||
|
||
改动范围:扩展身份四模块入 `PRODUCTION_FILES`、最小身份回归、真实新 freeze/20/900/派生 contract、文档与本进度。生产评分常数与确认门未改。停止。
|