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.
13 KiB
TASK · 日期锚点最终验收接续(Grok / 2026-09-21)
状态:Grok 已串行执行 T1–T5,待产品验收。未 commit/push/deploy。既有 Claude 实现/审计/验收代理均已暂停;本单接管现有工作树,不重做已闭合功能。
1. 基线、位置与决策
- 唯一实现目录:
G:/Ferti/Jyotisha/.worktrees/rectification-midnight-date-anchor-20260920 - 分支:
codex/rectification-midnight-date-anchor-20260920 - 固定比较基线:
3be740f84d12b098b27b88105a88b5e2d8dd0ead。现有大量未提交修改都是本轮交接成果,不清理、不重置、不切分支;远端后来前进不改变本轮固定基线。 - 原任务:
docs/tasks/TASK-rectification-midnight-date-anchor-20260920.md。 - 继续使用原进度:
docs/tasks/PROGRESS-rectification-midnight-date-anchor-20260920.md。 - 用户此前已批准隔离 Linux/Docker 验收、跨日候选采用持久化及兼容迁移;此次仅换执行方,不新增产品范围。不 commit/push/deploy,不提升 main,不改 workflow/DNS/依赖/权限。
- 当前剩余工作是测试契约收口、新冻结验证证据、最终全门与记录。生产功能原则上继续冻结;发现新的实质缺陷先留证并报告,不顺手扩改。
2. 事故实证与根因
final-1 完整不可变快照结果(原日志见第6节):
| 项目 | 已有结果 |
|---|---|
| tsc / lint | 0错误 / 0错误、119既有warning |
| 前端 | 3649通过、0失败 |
| 真实DB | 56通过、0失败 |
| build首页 | Static |
| JS gzip | 629588 vs基线626849,+0.437% |
| CSS gzip | 39496,不变 |
| Python广域 | 338通过、11失败:4既存 + 7新增 |
| quick | 尚未跑 |
| 诊断性AA同机独立进程 | 3案例×7投影=21/21相等,零容差 |
整体验收尚未通过,不能以部分通过替代最终门。
7个新增失败分两类:
- 三个算法/回执测试仍指向算法8,当前是9。已最小修改,历史golden不动;实现者报告最终34/34,接手方尚须独立复验。
- 四个validation integrity测试正确拒绝历史freeze。旧freeze生成于BUG-981的2026-09-20 04:56:54/55 UTC,早于本任务。不是final-1停写之后生产源码又漂移。需当前源码新freeze + 真实20-case/900-cell重跑,不能改旧hash消红。
最后只读审计另发现:scripts/research/sealed_holdout_rerun.py::PRODUCTION_FILES 为显式集合,遗漏本轮 candidate_window.py、decision_policy.py、refinement_packet.py、api_service.py。前两类实际日期/静态上下文路径及生产receipt/窗口语义应进入新扩展身份;reported_offset_sweep复用此名单。须在新freeze前补齐,旧legacy12身份算法不重写。该补项尚未落盘,先核符号再最小实施。
3. 硬红线
- 读本树AGENTS.md/CLAUDE.md;每次git操作先
git status -sb。禁止stash/reset/rebase/切脏分支;不动主检出或其它会话。 - 不调分数常量/权重/确认阈值,不bump Skill,不重标/删除历史结果,不覆盖原申报birth_date。
- 旧freeze/report/golden/archive/manifest原字节保留。当前contract可更新,但只能由新真实报告确定性派生,不手填hash或指标。
- 六个runtime contract键值和类型不变;
not_ready、coverage=0、非独立盲测、禁止调参/发布指标/唯一分钟声明等边界不变。 - 不削弱mismatch断言或校验顺序,不删extended identity,不把当前源码追认进旧报告。
- 不新增跨机/跨进程浮点固定hash断言,遵守BUG-733/985。分数同机A/B零容差;历史golden原容差/离散断言保留。
- 不读凭据、不借账号、不接生产数据,不暴露端口、密钥或用户资料。无登录/真人环境写BLOCKED与测试清单。
- 不碰别的容器、不global prune;仅复用本单隔离资源。失败原日志保留,blocked不写通过。
- 一位Grok串行执行,避免多代理泛审;只读必要文件,不重开已闭合功能。
4. 执行任务(严格顺序)
T1 · 核实接手断点,复验3测试
最终修正涉及:
tests/test_dasha_transition_proximity_cross_midnight.py:算法9/常量spec5,legacy请求spec4及固定输入hash保留。tests/test_rectification_relative_support.py:只更新算法9,policy/proportional/数值不改。tests/test_rectification_engine_memoization.py:旧golden8不变;四个dated metadata精确验证、独立UUID公式、剩余scores/receipt原比较器、7变异负例。
过程误加整snapshot固定golden比较,被Claude独立26pass/8fail拦截;已撤回这项新加断言,未削弱原比较器。默认与PYTHONUTF8=1最终各34pass是实现者报告,尚非独立结果。原失败日志保留:artifacts/midnight-date-anchor/independent-python-contract-repair.txt。
接手SHA:memo 98808b8535f05f81d35a71de067928f762a6aae9fe9e8a2d9c44528f04c6b508;PROGRESS 1c0d81d7e78da93e2b060d4095112245ea3123508fe64b693c0c3691afc485ab;历史golden 6266e448d7dad204b264cbe8f9bcf4c36e02286794764a94edb9e2ce4d0e3015。
复验:
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
保存新的独占日志,不覆盖过程记录。
T2 · 完成新冻结准备(尚未运行评测)
已落盘:
- 两研究脚本FREEZE/REPORT指向
*_midnight_anchor_2026_09_21新唯一路径。 frontend/tests/rectification-confirmation-gate.test.ts两处当前report指针同步,其他断言不变;Python消费者导入常量无需改逻辑。docs/research/history/rectification_pre_midnight_anchor_2026_09_21/:旧current contract + 两套旧freeze/report共5份原字节及manifest,已经独占归档。- 一次性确定性派生步骤:
artifacts/midnight-date-anchor/scratch/derive_current_holdout_contract.py。 - 精确路径/hash交接:
artifacts/midnight-date-anchor/evidence-pointer-migration-hashes.json。
待做:
- 核实PRODUCTION_FILES遗漏,将上述4个本轮生产模块纳入新扩展身份;不改旧freeze/legacy12;加最小回归防新模块再次遗漏,记录既有断言若有变化的三栏。
- 独立审查派生脚本后才运行。Claude主会话尚未审这份脚本。必须验证新report.frozen_record==freeze、当前freeze_record身份一致、freeze≤start≤finish、完整20/900计数、非独立/禁调参、旧contract在替换前未被别人修改、六runtime键值类型不变、历史metrics与unfrozen diagnostic不变、旧previous链保留、原子替换;不只相信脚本注释。
- current contract/新报告/归档/派生步骤不应进入被其自身签名的identity,防自引用。
- 所有身份文件停写后再freeze;改路径常量或身份名单都会改变evaluator/research hash,绝不能先freeze后改。
验收:最小diff、所有旧归档hash一致;新4份报告仍无伪造占位文件;评分生产文件不因验收改动。
T3 · 固定Linux环境真实生成新证据
先建立全新生成快照,保真源码,不能修改implementation-final-1。现有pack工具和白名单见第6节。生成快照只列当时存在的明确新增文件,不把未生成报告伪列进去。
在快照根同受控fixed126 Python环境执行:
python scripts/research/sealed_holdout_rerun.py --freeze --freeze-path docs/research/sealed_holdout_rerun_midnight_anchor_2026_09_21.freeze.json
python scripts/research/sealed_holdout_rerun.py --json --freeze-path docs/research/sealed_holdout_rerun_midnight_anchor_2026_09_21.freeze.json
python scripts/research/reported_offset_sweep.py --freeze --freeze-path docs/research/reported_offset_midnight_anchor_2026_09_21.freeze.json
python scripts/research/reported_offset_sweep.py --json --freeze-path docs/research/reported_offset_midnight_anchor_2026_09_21.freeze.json
两正常运行的stdout分别独占创建对应不含.freeze的.json文件,stderr另存。使用open('x')或noclobber,禁止普通覆盖重定向。freeze内部已exclusive-create。失败产物保留,重试用新的唯一名称并在freeze前统一指针,不能覆盖旧尝试。
sealed规模20cases、offset900cells,上次约3秒/400秒,仅本地公开数据与CPU,无网络/模型/用户凭据。记录argv/exit/time、完整计数、前后identity与环境,验证历史字节不变。
派生脚本原SHA c4d06bc82c7e64cf4c9a53401f126b24caa3e11225f8d8d0be9e7399a31e4dbc,若审计修正须记录新SHA。优先单独复制到/work/tools运行并记SHA,不为它放开整个artifacts/scratch打包规则:
python /work/tools/derive_current_holdout_contract.py --root /work/<新的生成快照>
# 验证成功后,同命令加 --apply,原子更新该快照current contract
核实实际脚本接口,以已读源码为准。current contract只从真实新报告派生。将4新证据及获批contract原字节回取新scratch delivery目录,再精确落实现树,校验输入输出SHA。
T4 · 新最终快照与全门
重新统一冻结并打新包;原23新增清单已不够:需要实际新增全集、6份history、4新证据、本任务单/测试等,每项精确路径SHA,不通配放行、不stage源码、不复用旧manifest。92既有artifact必须来自原baseline archive原字节;未改旧hash。
新最终快照的全部身份文件必须与生成快照逐字节相同,新报告SHA等于真实输出。重新独立npm ci,不复用.next。运行:
- tsc、lint、完整frontend test、build Static、首页gzip±2%。
- 标准真实
npm run test:db,0fail/0skip。 - 同final-1三个Python glob,新增失败必须0,四既存失败逐断言与基线对照。
- 完整
python scripts/run_quality_gate.py --profile quick,不可跳过。 - 原生golden/3公开AA同机独立进程比较;7投影21/21零容差,不声称含算法ID/新增metadata的全响应字节相等。
- frozen integrity/confirmation门与旧archive保护测试。
- 环境freeze与SDK前后不漂移,与fixed126基线一致。仍标
productionPinEquivalent=false。
四既存失败:
- active_rectification_api long_real_conversation winning_segment(actual04:16单分钟,expected05:07–05:08)。
- active_rectification_selector legacy/v5 score bytes固定hash。
- minute_rectification_development v3 improved(actual1 expected0)。
- minute_rectification_holdout_validator historical implementation manifest mismatch:类别既存,但实际当前hash会变,不能称字节一致。
T5 · 记录与交回
更新原PROGRESS、BUG-982/983记录及必要BLOCKED/testing清单、tasks索引。原final-1失败和各过程红日志保留,不抹成通过。BUG无部署证据仍investigating,不宣称resolved。
结论只需简短表格:通过/未通过/环境缺口、日志路径、改动范围、未commit/push/deploy。停止而不是自动发布。无需反复向Claude汇报每个命令;遇真正阻塞才提示用户。
5. 让步顺序
- 保身份/历史字节/确认门安全,不能靠改hash或断言换绿。
- 复用既有隔离资源与脚本,避免泛审、重新跑已闭合功能的手工探针。
- 不够条件时写blocked;quick和真实DB不可省略为已通过。
- 生产功能新缺陷、权限拒绝、需改依赖等超出接续范围时留证停下;不借别的代理绕权限。
6. 环境与证据定位
宿主scratch(不是主仓工作目录):
G:/Ferti/Jyotisha/scratch/rectification-midnight-date-anchor-baseline-20260920/
- 容器
midnight-anchor-runner、midnight-anchor-docker;当前空闲。 - runner镜像
rectification-midnight-baseline-runner:20260920。 - /work/baseline固定基线,/work/implementation-final-1旧最终失败快照不可覆盖。
- /work/tools/run-python-fixed-environment.py;/work/tools/vedastro-runtime-constraint.txt,
vedastro==1.23.26。 - PIP_CONSTRAINT、PIP_NO_INDEX=1、PIP_DISABLE_PIP_VERSION_CHECK=1、JYOTISH_SKIP_LOCAL_ENV=1、NEXT_TELEMETRY_DISABLED=1,沿既有脚本传,不改项目依赖。
- Node22.23.2、Python3.13.15;固定126是隔离控制,不能冒称生产pin一致。
- 私有DinD DOCKER_HOST tcp://127.0.0.1:2375在runner网络内;无host socket/公开端口,不改资源边界。
- scratch
prepare-final-snapshot.py、baseline-artifact-whitelist.json、final-bundle-2/source-manifest.json、final-bundle-2/bundle-integrity.json。 - scratch
implementation-final-1/{results.json,python-glob.log,python-glob.xml,integrity-result.json}。 - scratch
diagnostic-aa-final-1/comparison/independent-process-aa-ab.json。 - worktree
artifacts/midnight-date-anchor/independent-final-1-result.json、independent-review-checklist.json、independent-production-freeze-continuity.json、evidence-pointer-migration-hashes.json。
主会话曾核1218份生产文件相对final-1零变化;研究pointer/测试/文档不在该比较内。接续identity清单变化不能伪作评分逻辑变化。
7. 开工前置与BUG编号
先git status -sb核指定分支,读AGENTS与原PROGRESS最后相关段落;本轮首次fetch/pre_work已完成,证据在原进度。不要为了重走初始化重建/重置脏worktree。若执行额外git命令仍每次先status;若需复跑预检使用已核可用Python并记录,不修既存.workbuddy环境失败。
按符号检索BUG-733/981/982/983/985及frozen identity历史,不通读巨大BUG_HISTORY。BUG-982/983沿用;本单不预分配新号,确需新增先核当前最大编号。前端测试变更遵守frontend/AGENTS.md、DESIGN/VOICE必读规则。