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.
165 lines
13 KiB
Markdown
165 lines
13 KiB
Markdown
# 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.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`。
|
||
|
||
复验:
|
||
```bash
|
||
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环境执行:
|
||
```bash
|
||
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打包规则:
|
||
```bash
|
||
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`。
|
||
|
||
四既存失败:
|
||
1. active_rectification_api long_real_conversation winning_segment(actual04:16单分钟,expected05:07–05:08)。
|
||
2. active_rectification_selector legacy/v5 score bytes固定hash。
|
||
3. minute_rectification_development v3 improved(actual1 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-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必读规则。
|