Files
Jyotisha/docs/tasks/TASK-rectification-midnight-final-grok-20260921.md
T
jesse-ux b85c4a686a
Independent Staging Quality Gate / validate (push) Successful in 13m27s
Independent Staging Quality Gate / publish (push) Failing after 1h0m1s
fix(rectification): anchor candidate windows to civil dates across midnight
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.
2026-09-21 02:55:00 +08:00

13 KiB
Raw Blame History

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个新增失败分两类:

  1. 三个算法/回执测试仍指向算法8,当前是9。已最小修改,历史golden不动;实现者报告最终34/34,接手方尚须独立复验。
  2. 四个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.pydecision_policy.pyrefinement_packet.pyapi_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/常量spec5legacy请求spec4及固定输入hash保留。
  • tests/test_rectification_relative_support.py:只更新算法9policy/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

接手SHAmemo 98808b8535f05f81d35a71de067928f762a6aae9fe9e8a2d9c44528f04c6b508PROGRESS 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

待做:

  1. 核实PRODUCTION_FILES遗漏,将上述4个本轮生产模块纳入新扩展身份;不改旧freeze/legacy12;加最小回归防新模块再次遗漏,记录既有断言若有变化的三栏。
  2. 独立审查派生脚本后才运行。Claude主会话尚未审这份脚本。必须验证新report.frozen_record==freeze、当前freeze_record身份一致、freeze≤start≤finish、完整20/900计数、非独立/禁调参、旧contract在替换前未被别人修改、六runtime键值类型不变、历史metrics与unfrozen diagnostic不变、旧previous链保留、原子替换;不只相信脚本注释。
  3. current contract/新报告/归档/派生步骤不应进入被其自身签名的identity,防自引用。
  4. 所有身份文件停写后再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:db0fail/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

四既存失败:

  1. active_rectification_api long_real_conversation winning_segmentactual04:16单分钟,expected05:0705:08)。
  2. active_rectification_selector legacy/v5 score bytes固定hash。
  3. minute_rectification_development v3 improvedactual1 expected0)。
  4. 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. 让步顺序

  1. 保身份/历史字节/确认门安全,不能靠改hash或断言换绿。
  2. 复用既有隔离资源与脚本,避免泛审、重新跑已闭合功能的手工探针。
  3. 不够条件时写blocked;quick和真实DB不可省略为已通过。
  4. 生产功能新缺陷、权限拒绝、需改依赖等超出接续范围时留证停下;不借别的代理绕权限。

6. 环境与证据定位

宿主scratch(不是主仓工作目录): G:/Ferti/Jyotisha/scratch/rectification-midnight-date-anchor-baseline-20260920/

  • 容器midnight-anchor-runnermidnight-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.txtvedastro==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.pybaseline-artifact-whitelist.jsonfinal-bundle-2/source-manifest.jsonfinal-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.jsonindependent-review-checklist.jsonindependent-production-freeze-continuity.jsonevidence-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必读规则。