Files
Jyotisha/BLOCKED.md
T
Jesse_ChenandCursor 0b68fa97c4 research: score Jev intent variants with the previous turn
The earlier report had no previous-turn rows. This run measures V0, V1, V2, and Flash on the re-extracted corpus and records that the real sample is not representative of the simulated set.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-27 13:10:35 +08:00

520 lines
85 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BLOCKED
## ~~Jev 意图 v2:staging 库与 Flash 凭据(2026-09-27)~~
已解除(2026-09-27,本机)。`deploy@118.26.111.127` 与 `~/.ssh/jyotisha-staging` 能进 staging,抽出 715 条带 `case_id` 的来源 B(有上一轮 634)。上一笔「ubuntu 才是用户、deploy 被拒」是当时那台机器没有这把密钥。Jev 与 Flash 都打完,结论在 `docs/research/jev_intent_2026_09_27.md`:**缺数据**(来源 B / C 同层差超过 10pp)。09-19 的 `source_b.jsonl` 仍不在本机,旧 157 条对不回 `turn_id`,记在进度偏离里,不再挡抽取。
## TASK-rectification-telemetry:真实 PostgreSQL 测试与登录态后台待验(2026-09-26)
- ~~本机无 Docker:`npm run test:db` 未跑。本单新增 `frontend/tests/database-rectification-telemetry.test.ts`(列白名单、RLS 与表权限、函数执行权限、去重、归属校验、非法值整笔回滚、180 天清理、管理员只读汇总、账户删除级联),并把两张新表加进 `database-local-business.test.ts` 的 public 表白名单;两者在本机均为 docker unavailable 跳过,结果以门禁 DB job 为准(run 号待推送后补记)。替代证据:迁移 SQL 按既有迁移写法逐段复核;纯函数与白名单、迁移源文本合同在 `rectification-telemetry.test.ts`(18 条)里已跑通。~~ → 已解除:门禁 run 2938(`e801fcf5`)真实 PostgreSQL 17 跑过,`ok 1337 - rectification telemetry: server-only write, dedupe, retention, aggregate-only admin read, account cascade`,全量 4049 / 0 fail / 0 skip;migrate run 2940 已应用迁移。
- 无受控后台登录账号:「校正统计」页只用本地构建 + Chrome 无头、虚构汇总数据截过图;真实数据与登录态按 `docs/testing/rectification-telemetry-20260926.md` 待产品走。
- 未部署。
## TASK-rectification-latency:真实模型耗时、登录态真机与引擎探针复用待验(2026-09-26)
- 无模型凭据与受控登录账号:进度句与开流顺序只在本地 `next start` + Chrome 151 无头、CDP 虚构接口 + 本地延迟 NDJSON 流上验过(脚本在 scratchpad,未提交)。真实模型下每段耗时、分类 10 s 上限是否触发,按 `docs/testing/rectification-latency-20260926.md` 部署后用 `RectificationRunDiagnostic` / `RectificationTurnDiagnostic` / `RectificationClassifierDiagnostic` 日志复核。
- 本机 Node v20.19.2 跑不了 `mock.module`:新路由测试 `rectification-latency-route-20260926.test.ts` 2 条在 Node 20 属既有环境缺口;已用本机 `/exec-daemon/node` v22.14.0 跑全量:基线 3981 / 24 失败(均为 Docker/DB),本单 4002 / 24 失败,名单逐条一致。无 Docker,`npm run test:db` 未跑(本单不动表)。
- D5 第一项(refresh 分支探针只算一遍)未提交:字面做法会改变输出;输出逐字节一致的替代方案(探针复用候选静态上下文里的大运表)触碰冻结评分身份 `scripts/rectification/event_probes.py`,校正验证完整性门禁 4 条失败。需产品决定是否另开单按研究协议重新冻结 sealed holdout / reported offset 记录后再合入(补丁与同机 A/B 脚本见进度记录)。
- ~~未部署;BUG-1047 保持 investigating。~~ **已解除(2026-09-26 对账)**:`ab0f01a9` 随 deploy-staging run 2930(`8a409434`)部署,BUG-1047 已 resolved。上面三条(真实模型耗时、Node 20 环境、D5 第一项)不受影响,仍然有效。
## TASK-home-warm-return:登录态真机、Node 22 全量与部署待验(2026-09-26)
- 无受控登录账号:暖返回只在本地 `next start` + Chrome 151 无头上验过(CDP 拦截 `/api/*` 返回虚构账户与会话、所有接口人为延迟 1.5 s;脚本在 scratchpad,未提交)。iPhone Safari 真机与真实 staging 数据按 `docs/testing/home-warm-return-20260926.md` 待产品走。
- 本机只有 Node v20.19.2:`mock.module` 类测试失败(基线 61 条);本轮全量 3953 条 / 61 失败,失败名单与基线逐条一致、无消失测试名。任务书要求的 Linux Node 22 全量待协调方复跑。无 Docker,`npm run test:db` 未跑(本单不动表)。
- ~~未部署;BUG-1040 保持 investigating。~~ **已解除(2026-09-26 对账)**:`638b6a60` 随 deploy-staging run 2916(`7475eb6e`)部署,BUG-1040 已 resolved。真机与 Node 22 全量两条仍然有效。
## TASK-new-chat-from-people:登录态真机、Node 22 与 DB 待验(2026-09-26)
- 无受控登录账号:修复只在本地 `next start` + Chrome 151 上验过(CDP 拦截 `/api/*` 返回虚构账户、会话与人物,未提交脚本)。iPhone Safari 真机、真实 staging 数据按 `docs/testing/secondary-new-chat-20260923.md` 追加节 A1–A6 待产品走。
- 产品描述的入口(`/people` 点侧栏「新建对话」)本机未复现;复现且与截图逐项一致的入口是「在档案页换成他人后经不带新建意图的 `/` 回首页」和「对本人点和 TA 对话」。需产品真机确认当时的点击路径。
- 本机只有 Node v20.19.2:`mock.module` 类测试失败(基线 61 条);全量失败名单与基线逐条一致,Linux Node 22 全量待协调方复跑。无 Docker,`npm run test:db` 未跑(本单不动表)。
- ~~未部署;BUG-1038 保持 investigating。~~ **已解除(2026-09-26 对账)**:`0a8350cc` 随 deploy-staging run 2913(`6a22626d`)部署,BUG-1038 已 resolved。真机、入口复现与 Node 22 三条仍然有效。
## TASK-people-ephemeris-ui:登录态真机与 Node 22 全量待验(2026-09-26)
- 本机只有 Node v20.19.2:`mock.module` 类测试以 ERR_MODULE_NOT_FOUND 失败(基线即 61 条)。本轮全量 3915 条,失败 61 条,与基线测试名逐条一致、新增失败 0、无消失测试名;Linux Node 22 全量待协调方复跑。
- 无受控登录账号:`/people`、`/ephemeris` 的真实数据只用本地 `next start` + 临时宿主页(虚构人物、真实引擎 golden 五要素,未提交)在 Chrome 151 里看过;登录态真机、iPhone Safari、浏览器返回手势、读屏按 `docs/testing/people-ephemeris-ui-20260926.md` 待验。
- ~~任务书对照表与引擎拼写有三处不一致(`Aindra` / `Variyana` / `Dhanishtha`,表里是 Indra / Variyan / Dhanishta),按任务书只允许三组别名,这三个名字现在照写梵文,待产品裁决是否补别名。~~ **已解除(2026-09-26)**:协调方以任务书作者身份裁定补这三组拼写别名,映射到表内既有条目(因陀罗 / 安逸 / 虚宿),不改译名。
- ~~未部署;BUG-1039 保持 investigating。~~ **已解除(2026-09-26 对账)**:`2981da6f` 随 deploy-staging run 2910(`0ab061b9`)部署,BUG-1039 已 resolved。Node 22 全量与登录态真机两条仍然有效。
## 三份修复单 final-r4b:自动化缺口解除与剩余边界(2026-09-25)
- ~~最终组合 Linux Node22 全量、真实 DB、名称对账、Static/gzip 尚未完成。~~ **已解除这一部分**:final-r4b 前端3894/3894、PG17标准DB64/64;五个exit均0,旧名称无消失、新增失败0;lint0error/127warning,首页Static;三种gzip均在±2%内。下方各单“待最终全量”是历史快照,以整合PROGRESS补记为准。
- 首次final-r4纯archive没有`.git`,`staging database environment file is ignored`调用git check-ignore失败128;仅在隔离验证快照补临时Git/index后完整重跑,未改测试断言或源树历史。旧失败日志保留。
- ~~Python补验误在Node镜像调用Python3.13 venv得到exit127(解释器目标不存在),没有开始测试。~~ 匹配Python3.13镜像+Node22后final-r4b补验:定向49通过、CI quick同基线参数948通过/1跳过、隐私70通过、两扫描各3311文件0finding,五个exit均0;未借用旧r2成绩。
- 交付预检远端verified,但focused两项失败:历史`.workbuddy`镜像缺失、fragment candidate_count=4小于workspace_residue_count=45。两种均属台账已有机器目录假设问题;不制造目录、不清他人残留、不弱化测试,预检整体仍fail。Linux业务全量与此分开登记。
- 受控登录、整页移动端、真实Tab/读屏、线上迁移/health仍待验;旧`chart-library-panel.tsx`删除权限缺口不变,文件保留。未凭自动化将BUG-1030/1031/1032/1033标resolved。
## TASK-people-archive-p1-fix:最终组合与受控登录验收待完成(2026-09-25)
- 旧死文件清理未交付:主整合工具明确拒绝删除预存`frontend/src/components/chart-library-panel.tsx`。整合树保留该文件;本人物执行树原删除不撤销,但不能据此称整合版已删除。合同已迁到活跃PeoplePage,旧文件清理待明确权限,不改用其他工具/代理代删,不清空或替换以绕过拒绝。
- 最终冻结点Windows Node22.23.2永久回归54/54,tsc0,lint 0 error/127既有warning;独立5个前端探针通过,真实Postgres退款r4六场景通过。这些范围可能重叠,不能相加冒充全量或登录浏览器验收。
- 最终组合Linux Node22全量、标准DB套件、测试名称逐条基线对照、build Static/gzip仍由协调方执行。基线3863/3863 fail0 skip0、DB61/61;中间快照有失败,不是交付结果,也不得用旧Node20失败豁免。新增失败0、旧测试名称无消失之前不得推送。
- 未使用受控登录账号,不读取或借用凭据;实际给他人生成并打开报告、刷新他人对话、切换人物慢网时序、删除确认与退款账单、星历首次失败重试均见`docs/testing/people-archive-p1-20260924.md`,全部真人条目仍待验。
- 尚未提交/推送/部署,迁移上线与health SHA未核对,BUG-1030/1031/1032保持investigating;禁止以定向通过声称生产问题resolved。
## TASK-chart-western-fix:组件证据与整页验收边界(2026-09-25)
- 没有本单受控登录账号,未读取或借用凭据。真实字体 Chrome 独立组件扫描不是登录页点选/取消、真实 Tab、读屏、亮暗色及整页横滚验收,步骤见 `docs/testing/chart-dasha-western-20260924.md`。
- 首轮 64 真实盘的字符误点和 2 盘宫号互碰已由执行方修正;组件复核证据与最终组合全量分开登记,不提前声称部署通过。
- 最终 Linux 全量、名称逐项对照、build Static/gzip 尚待整合验收;预检历史 `.workbuddy` 缺口沿用下面记录,不豁免新增业务失败。
## 三份修复单:受控浏览器及报告执行树副作用边界(2026-09-25)
- 报告修复已独立只读审查:Windows Node 22 五文件 51/51,Python 年度两文件 21/21;执行树 UTF-8 quick 948/1 skip。最终组合 Linux 全量、名称逐项对照和构建尚待完成,不能以定向结果替代。
- 无受控登录账号,未读取或借用凭据;新报告生成/下载、英文聊天导出及真机验收待执行,见 `docs/testing/report-reader-main-20260924.md` 与整合清单。未提交、未推送、未部署。
- 报告执行树 quick 把 oracle pending_packets 中 Einstein、historical_dst_london、Marilyn Monroe、Steve Jobs、synthetic_extreme_latitude 对应的五个 `external_template_*_varshaphala_*.json` 文件写成 CRLF。执行方和独立审查均核验 JSON 相同、统一换行后逐字相同;恢复操作被拒,保留原树脏态,不绕过或转交代执行。整合白名单明确排除这五个文件;清理须另行获批。
- 真实报告 golden 某次只读重算逐字相同,其他重算在未改动 Shadbala 个别值有 0.01 漂移,年运与章节无差。不把单次相等说成跨次确定性,不修改算法/golden/容差消漂移。
## 三份修复单:开工预检历史环境缺口(2026-09-25)
- 固定基线 `48fe4daf5`,Python 3.11.7 的 pre_work_check focused 23 通过 / 1 失败:`test_preflight_fragment_scan_reports_authority_layers_and_risk_buckets` 要求不存在的历史 `.workbuddy/skills/jyotish-vedic-astrology` 镜像路径。远端 verified,适配器/碎片步骤成功,预检整体仍 fail。
- 不制造历史镜像,不修改环境断言迎合测试。该失败与台账历史项同类,不能据此宣称本轮业务测试已通过。
- 本轮实测 Linux Docker 可用,Node 22 全量基线与隔离真实数据库测试另行进行;状态与证据见 `docs/tasks/PROGRESS-three-fixes-integration-20260925.md`。
## TASK-report-reader-actions:删除权限与依赖验收阻塞(2026-09-24)
- 删除权限 blocked:`frontend/src/components/personal-report/raw-appendix-download.tsx`、`frontend/src/app/api/reports/[reportId]/raw-appendix/route.ts`、`frontend/src/lib/personal-report-raw-appendix.ts` 的 rm 已被拒。三个文件原样保留,不删除、清空、替换或转交他人删除;相关 raw-appendix 与 density-retry 测试保留。阅读页入口已撤下不等于服务端通道已退役,T2 与全仓零命中红线尚未完全满足,等待用户批准。
- 前置依赖验收 blocked:本树 HEAD / fetch 后 origin/staging 为 `133aca49dbef342e3ba97f38b98a481c428b962c`。协调主会话本轮只读核验:公共 staging health HTTP 200,但 `deployment.gitCommit=1420471ab13f1a1970922a0a1db1dd3db70656a1`;`/login` 200,匿名 `/api/account` 401。含代码前置尚未部署验证,不写成仅文档差异。
- 协调主会话补充:Gitea actions runs API 请求 HTTP 401,质量门禁不可核对;这不证明 CI 失败,也不证明 token 全局失效。公共 health 根层 `swisseph_available` 未返回(null),不能标为已通过。执行代理未读取或借用凭据。
- 进度文档 blocked:本执行代理的开发者指令禁止新写 report / summary / findings / analysis `.md`,因此未新建 `docs/tasks/PROGRESS-report-reader-actions-20260924.md`,不以其它工具绕过或转交其它代理写入。既有测试三栏与名称对照直接随执行结果回报;不得称 T4 文档全部齐备。
- 真人清单落盘 blocked:尝试按任务新建 `docs/testing/report-reader-actions-20260924.md` 被工具拒绝(子代理不得写 report 文件),文件不存在;未换工具重试或转交他人写入。待执行项目为:列表仅查看、操作条仅返回/导出图标、旧 hash 不自动打开;860/1024/1440px 视口居中且侧栏切换不偏移,390/859px 保持底部抽屉;长列表滚动且首尾固定;Esc/遮罩关闭与焦点回收;套餐/计数/文件名/逐字节导出与微信限制不变;Ctrl+P A4、不裁表、打印前展开与取消/保存后恢复。本轮未启动页面、没有受控登录或真机证据;Node 源码合同 / React harness 不替代这些验收。未 commit / push,不启动 reader-main。
> 2026-09-24交付补记:产品已在获知缺口后授权两单组合版本push到staging;下述两单未提交/未推送描述为验证时快照,交付以实际push与远端SHA核对为准。推送不解除BUG-1020、完整构建或受控真机缺口,不代表部署通过。
## TASK-staging-gate-fix-20260924:Linux 全量与部署门禁 blocked(2026-09-24)
- 当前 worktree 为 Windows,且 `frontend/node_modules` 不存在,无法启动 `tsx`;因此 tsc、lint、定向测试、全量测试和 build 均未在本轮声称通过。
- 协调主会话确认没有可用 Linux runner 或完整日志文件;任务书要求的 Linux 全量及与 `edc9c22c` 失败名单逐条比较无法执行,新增失败必须为 0 的验收保持 blocked。不得以 Windows 失败数替代 Linux 对照,也不得伪造结果。
- T4 raw-appendix 删除权限保持 blocked;三件套及其测试未删除、清空或替换。未 push、未部署,`/api/health` 与部署 git SHA 未核对。
## BUG-1021 / 1022:慢网首页与账户点数本地验收边界(2026-09-24)
- 本轮本地 Windows/Node 22:`tsc --noEmit` exit 0;T1/T2 定向合同 65/65 通过;完整 `npm test` 为 3766/3677 pass/89 fail。89 项失败名单与基线逐项比较尚待协调方复核,当前主要落在既有数据库迁移、环境、部署与 skill registry 合同,未因本轮改动而修代码或弱化断言。
- `npm run build` 编译和 TypeScript 阶段完成,但在 `/api/birth-time-guide` page-data 阶段被 Windows/Turbopack `skill-package-registry.ts` 的动态 filesystem/symlink tracing 阻塞;未修改业务逻辑、权限或构建配置迎合。`/` Static 与首屏 gzip ±2% 尚未验证。
- 本机 Docker daemon 可用(Server 29.8.0),本轮未将环境写成“无 Docker”;Linux volume/保真构建与 staging health 仍待独立环境。无 Chrome 登录态,Slow 3G/Offline、预取失败与支付/兑换真实浏览器行为仅有 `docs/testing/home-slow-network-20260924.md` 清单,不能写成通过。
- Gitea 写认证当前 blocked;未 push、未部署、未声称 staging。恢复既定认证后,先核对 `git status -sb`/`git fetch origin --prune`/最新 `origin/staging`,再交付本单。
## BUG-1020:CRLF 无 JSON 与旧导出逐字节合同冲突(2026-09-24)
- 2026-09-24 产品批准 D5 有限例外(D14),本地修复与回归已完成;默认 Gitea 写入认证返回 `Failed to authenticate user`,因此 staging 推送、门禁和部署 health 仍 blocked。
- 独立审查使用真实虚构golden只转换换行,正文下载保留22段图盘JSON,同时仍等于旧导出。根因是旧FENCE_RE仅接受语言标记后的LF,属于继承缺陷。
- D13只放开安全SVG,没有授权改变D5;未静默修复或声称全部验收通过。建议CRLF围栏输入作有限例外后最小修复,待裁决,见 `docs/tasks/TASK-report-chapter-export-fix-20260924.md`。
## BUG-1016 / 1017:星盘本地修复待完整构建与真实页面验收(2026-09-24)
- ~~Node22.23.2组合首轮全量3717→3763,新增46全过、名称消失0、84失败名称一致;83诊断一致,1项fixture槽位偶发异常独立复跑恢复基线诊断。默认build因跨root junction失败,webpack编译/类型过但Skill symlink EPERM;Static/gzip未验证。末次depth修正后的最终重验已完成,84份失败诊断全部与基线一致,详见两单PROGRESS。~~
- ~~单星盘树隔离Chrome153已验冷进布局、呼吸/reduced-motion、429/超时/401与重试等13/13场景;mock接口不等于受控登录E2E。iOS减弱动态、真实后端故障恢复与部署health SHA未验证,清单 `docs/testing/chart-page-skeleton-20260924.md`。~~
- ~~未 commit / push / 部署,不改工作流、DNS、并发或共享 Docker 网络/卷。BUG 暂 blocked,验收完成后由主会话更新。~~
- 2026-09-24 Claude 验收后解除:完整构建(四路由标记、gzip)与部署 health 已在 Linux 验收闭环(`1420471a`);剩真机清单由产品走,不再是阻塞。
## 报告分块导出 BUG-1018 / 1019:本地回归与真实环境边界(2026-09-24)
- ~~本轮没有受控登录账号,未借用凭据;iPhone 文件 App、微信真机下载限制、登录后的 DELETE 持久化及部署健康检查仍待真人验收。~~
- ~~T5 新建 testing 被工具拒绝,同类 PROGRESS 未绕过创建,两文件尚未落盘。~~ 用户随后明确授权“由主会话补齐”,主会话已创建 `docs/testing/report-chapter-export-20260924.md` 与 `docs/tasks/PROGRESS-report-chapter-export-20260924.md`;该文档权限缺口解除。
- ~~仓内React测试仅真实挂载/state/effect/handler,不模拟布局。另跑隔离Chrome153:单报告树13/13(4类实际下载、SVG、布局、焦点、hash、删除race)通过;mock后端、全新profile,不等于登录E2E/iOS/微信或真实持久化。组合树另跑星盘13/13、报告14/14通过,含合并SVG绘图fallback真实下载;证据见两单PROGRESS。~~
- ~~最终组合(含depth末次修正)全量3763/3679pass/84fail,基线3717/3633pass/84fail;新增46全通过、无名称消失/旧状态变化,84失败名称与完整归一化诊断全部一致。tsc0,lint0error/119warning。默认build仍junction失败,webpack编译/类型过但Skill symlink EPERM(本轮先报/api/consult);Static/gzip未验。证据在组合树artifacts/combined-final-verification,当前未commit、push或部署,BUG不提前resolved。~~
- 2026-09-24 Claude 验收后解除:完整构建与部署 health 已闭环(`1420471a`);剩真机清单由产品走。CRLF(BUG-1020)另见其条目。
## 本轮根tests主题合同既有欠账(2026-09-24)
- 四文件定向18条:17通过、1失败。`tests/test_frontend_theme_contract.py:29`期待旧ink-secondary `#676762`,固定基线5ff43b47f已为`#5f5f59`;同一测试用基线CSS内存重放同样失败,非本轮回归。未顺修主题或弱化断言,详见两单PROGRESS。
## BUG-1015:次级页新建已本地修复,完整构建与真人验收待补(2026-09-23)
- ~~本轮 `tsc --noEmit` 0 错、lint 0 error / 119 既有 warning、定向 95/95;全量基线 3708/3619pass/89fail → 最终 3717/3628pass/89fail,名称多重集合无删除、新增9全通过,失败名单不变。失败逐条诊断核对见 PROGRESS。~~
- ~~Docker 存在且 daemon 有响应;41 项数据库 fixture 在默认网络地址池耗尽(`all predefined address pools have been fully subnetted`)处失败,不是“无 Docker”。未清理其他会话网络或卷。~~
- ~~默认 `npm run build` 受工作树 node_modules junction 超出 Turbopack root 限制;固定提交隔离基线与最终版均另跑 `npm run build -- --webpack`,编译及类型检查成功,但页面数据收集创建 Skill `SKILL.md` 符号链接报 `EPERM`。未改业务/配置/权限迎合构建,`/` Static 与首屏 gzip ±2% **未完成验证**。~~
- ~~本轮没有受控登录浏览器验收证据;真机清单已写 `docs/testing/secondary-new-chat-20260923.md`,覆盖桌面/移动、新建→首问保存、刷新、c/存根优先级及旧 reserved 咨询恢复。没有借用账号、读取凭据或宣称部署通过。~~
- ~~执行分支 `codex/secondary-new-chat-intent-20260923`;2026-09-24 产品授权先推 staging 供远程 review,交付以实际推送及远端 SHA 核对为准,部署尚待核验。BUG-1015 暂记 blocked,不遵照任务书预先写 resolved;待完整构建和受控 staging 验收后解除。详见 `docs/tasks/PROGRESS-secondary-new-chat-intent-20260923.md`。~~
- 2026-09-24 Claude 验收后解除:完整构建与部署已闭环(含于 `1420471a`);剩真机清单由产品走。
## staging 门禁三项修复的验证边界(2026-09-23)
- H1~H3 定向与真实组件 Chrome 验证通过;最终全量比基线原三项转绿、无新增失败,88项既有失败诊断不变。代码已推 staging `36a73761`;Gitea run 2857 已完成但总体失败,validate 唯一失败是 BUG-1011 的 Linux SQL argv `E2BIG`,publish skipped,因此尚未部署。BUG-1011 属于并行修复单,本单不改 postgres-fixture。
- 本机 Docker 存在但地址池耗尽,不写成无 Docker,不清他人网络。Windows 完整构建在页面数据阶段因 Skill symlink EPERM 失败,Static/gzip 未完成。真实 Linux run 2856 的工具相关测试已核实通过,不能据旧 run 预写新 run 通过。
- 五宽度与选择器焦点使用隔离真实组件/新 Chrome profile,不是登录 E2E;没有借用账号。~~全量首次复验发现 starter-entry-soften 仍锁375的相关合同,须同步至480后再跑。~~ 已同步并复验通过,其他断言保留;进度见 `docs/tasks/PROGRESS-staging-gate-red-20260923.md`。
## BUG-1011:远端门禁与部署已通过,本机环境缺口保留(2026-09-23)
- Docker CLI/daemon 存在(Server `29.8.0`),但 `startPostgresFixture()` 建 compose 网络稳定报 `all predefined address pools have been fully subnetted`。本机未执行到 PostgreSQL SQL;未清理其他会话网络或卷。
- ~~真实快照与 helper 合同等待 Gitea Linux gate。~~ **远端缺口已解除**:`018b2b48` 的 run 2858 / validate 6349:3,764 全过、0 fail/skip,原快照和新增合同均通过,完整数据库套件47个名称全部有成功记录。publish 6350、migrate 2859/6351、deploy 2860/6352 成功,health 双 SHA 已追上。BUG-1011 已 resolved。
- 本机静态 fixture 合同最终3/3、tsc0错、lint0error;全量3,707/3,618pass/89fail,未包含后加静态合同,不当作最终全量成绩。test:db47/8pass/39fail,包含Docker和Windows路径/symlink失败;build仍有symlink EPERM,不能说本机数据库/构建通过。最终测试名称比较取自两次Gitea日志(无删除、恰好新增2)。详见 `docs/tasks/PROGRESS-report-density-fix2-20260923.md`。
## 报告密度 BUG-1003~1007 / 1009 / 1010 验收缺口(2026-09-23)
- 原实现 `bbd96d3b` 已提交并合入 staging;本轮从已 fetch 的 `0d37bec15` 工作树执行修复,尚无本轮交付或部署核验。不能继续把原实现写成尚未提交或未推送。进度:`docs/tasks/PROGRESS-report-density-20260922.md`。
- ~~原 Windows build 的 SKILL.md 符号链接 EPERM 使 Static 与首屏 gzip 未验收。~~ 前轮独立验收已补齐 `/` Static 与 gzip +0.007%(见修复单);**当前修复版仍待重新构建与同环境比较**,不得继承前轮通过。
- 原执行记录的 Docker 地址池、GBK 编码与测试失败数字只是当时环境事实。本轮未以旧记录替代重跑;全量前端须逐条比对测试名与基线失败清单。主会话本轮预检回报远端 verified,focused 仍有一条既有 workbuddy 镜像路径断言失败,未造镜像目录或修改权限。
- 缺本轮受控登录态,未借用账号。Chrome 153 隔离真实组件验收 28/28 通过;全折叠及混合状态两份 PDF 各 5 页、各 130/130 行完整,原生打印前展开、打印后恢复。此证据不等于登录 E2E,也不覆盖真人 Ctrl+P / 取消对话框、下载、16 盘真机布局。PDF 有 SAV 标题页尾孤行,内容未缺失。
- 本轮 Node 22 / Windows 基线 3,686 / 3,595 pass / 91 fail → 修复版 3,704 / 3,613 pass / 91 fail。名称多重集合无消失、新增18全通过;91项失败诊断逐项一致、无新增失败,但仍未达到3,730门槛。数据库两项在Docker地址池耗尽处停止、未到SQL。本轮build在页面数据阶段symlink EPERM失败,Static/gzip未验证。Python定向101/101,tsc0错、lint0error/119warning。
- 完整隐私专项仍因保护目录的17个READ_ERROR失败。public/commercial未运行。F1子代理额外启动quick,在GBK UnicodeEncodeError处退出;没有禁读audit hook,不能保证此前子进程未读取保护目录,已禁止重跑。不能把该次quick或未执行扫描写成通过。
- **F3 工具边界缺口**:新建 `docs/testing/report-density-20260922.md` 被工具拒绝(子代理不得写 report 文件);文件尚未生成,不能把该清单标为齐备。不换工具绕过,已通知主会话与用户。待产品处理后落盘的条目须覆盖新报告、16 盘、8 组表、两条下载、全折叠打印 / PDF / 恢复与旧缓存边界;F3 暂未完全满足。
- 源 packet 只有 Sade Sati 三阶段框架与当前状态,没有三轮起止日期。原任务书把日期说成已存在属于规格错误;修复单已明确新增计算范围外,继续作为源数据缺口,不伪造日期。
- ~~新计算到附录缓存成功、最终报告落库失败后只能重试 Markdown,恢复结构化层的持久重试尚未实现。~~ **该说法已过时**:基线已有 `personal-report-longform-snapshot.ts`,通过既有 section RPC 先持久完整快照,再写 Markdown 缓存;新生成的恢复路径与定向测试已存在,本轮测试成绩另行记录。
- 仍保留的范围边界:**历史 Markdown-only 缓存没有结构化快照,不回填、不重算**;旧报告不会自动补齐事实表、16 张结构化盘或 Task 5 新适用性说明。不是新生成结构化恢复未实现,也不因此扩大本单范围。
## BUG-1000:聊天人物选择缺少受控登录态(2026-09-22)
- 本轮没有登录态,也没有 Chrome。顶栏点击、焦点回收和跨设备刷新不能写成通过。
- 清单:`docs/testing/chat-subject-picker-20260922.md`。定向测试与类型检查见 `docs/tasks/PROGRESS-chat-subject-picker-20260922.md`。未推送,未部署。
## BUG-982/983 日期锚点:未部署与受控真人缺口(2026-09-20)
> **部分解除(2026-09-26 对账)**:代码 `b85c4a68` 已于 2026-09-21 快进合入 staging,随 deploy-staging run 2831(`0c3c9d6b`)部署,含于当前部署 `8a409434`。下文「未 commit/push/deploy」各句已过期(划掉保留);受控真人缺口仍然有效,BUG-982/983 保持 investigating。
~~本轮本地实现不等于 staging 交付;未 commit/push,未部署。~~缺本轮受控登录态,不能把服务端动作、真实 PostgreSQL 或 SSR 当作浏览器通过。真人须按 `docs/testing/rectification-cross-midnight-fix-20260920.md` 的日期锚点补充清单走查。D4 数据库授权已解除原禁止新迁移停点,但不授权修改旧迁移、历史日期猜补、IANA/DST 修复或阈值。
固定 VedAstro 1.23.26 的独立基线 quick 为绿;宽 glob 仍有四项既有失败,详见 PROGRESS。完整初次HTTP opening到持久focus、采用返回畸形负例、lagna日期透传和报告同源链已有定向/源码证据,见PROGRESS,不再列为真人阻塞。widen真实DB修复及最后pending guard已通过标准56/56、exit0。Grok 接续的隔离 Linux final-3 已跑完 tsc/lint0、前端3649、标准DB56、quick、AA 21/21、Python 广域 0 新增失败;四既存失败仍在。这不是 staging 部署或受控真人通过。自动化代码证据与受控真人缺口分别记录,不互相冒充。~~未 commit/push/deploy。~~
## BUG-984:受控 staging 与真人验收尚未完成(2026-09-20)
- 本 agent 不调用线上、不读取凭据;没有本轮受控账号/浏览器会话证据。自动化仅使用明确虚构 fixture 与本地 Docker PostgreSQL,不能代替发布后登录态验收。
- 清单:`docs/testing/rectification-cross-midnight-fix-20260920.md`。推送、独立验收及部署由主会话负责,BUG-984 暂不标 resolved。
- **推送与部署已解除(2026-09-26 对账)**:`d575e89a` + `8d0359fc` 已在 staging,`8d0359fc` 随 deploy-staging run 2824 部署,此后 migrate-staging-database 各 run 均成功(最近 2929)。独立验收记录未见,受控 staging 与真人走查仍缺,本条保留。
## ~~BUG-984 补单:F2 混合成功身份实证触发 SQL 授权停点(2026-09-20)~~
- **已解除**:产品明确授权继续 B;本轮新增 `20260920010000_rectification_receipt_result_identity.sql`,只替换目标函数身份 SELECT,保留权限、owner/turn/attempt 与重试语义,不改表结构、已应用迁移或历史行。以下保留授权前停点事实。
- A 已局部实现:started/failed 不写算法身份,completed 只用实际结果来源。真实工具 + 原生 golden 的同 turn compare/diagnostics 组合可产生 scoring-9、scoring-10 两条成功回执;字符串 max 返回 scoring-9,不是最近成功 scoring-10。该测试证明缺陷仍存在,不是聚合修复通过。
- 既有 RPC 输出没有各 completed 的来源身份;历史 fingerprint 也不能还原。按补单须升 B(兼容函数体迁移),但当前执行授权禁止自行迁移,已停止进一步业务实施并报告。F1/F3/F4 pending;未改 SQL/UI/缓存、未推送。见 `docs/tasks/PROGRESS-rectification-cross-midnight-fix-20260920.md`。
## ~~跨午夜前置修复合入:Gitea 写入认证失败(2026-09-20)~~
- **已解除**:主会话成功将前置代码 `3f39bafc4a1fb7fc9d0a257d2528ea1a64295792` 推 staging 并 ls-remote 核对;本轮 fetch 亦看到其后纯文档 `f09f3d80`。下面保留原认证失败历史,不再作为 BUG-984 开工阻塞;部署另行验收。
- 用户授权将已 review 通过的 `25232ce4` 合入 staging,并执行 BUG-984。已同步 `a3577ce2`,本地整合提交 `b27d4de963f9ba7c4072233cabe06c6875eb0582`;缓存补单完整保留 staging 版,BUG-985 按第三环境复验改 resolved。
- `git push origin HEAD:staging` 被拒:`remote: Failed to authenticate user` / `fatal: Authentication failed`。随后 `git ls-remote` 确认远端仍 `a3577ce2fa0bfa6047d397e50ed2e676c58a4420`,不得声称已交付或已部署。
- BUG-984 单要求前置修复合入后串行执行;因此本单暂缓,未改缓存、UI、SQL 或生产打分。需要恢复本会话本人 Gitea Git 写入认证/权限;不借凭据、不 force push。恢复后先交付并核对前置提交,再按已批准策略 b 在独立工作树实施。
## 跨午夜门禁修复:独立机器补验与旧缓存闭环(2026-09-20)
- ~~BUG-985 的同进程对照已在 Windows 与同机隔离 Linux 容器通过;Linux 原测试 ordinal 2/3 确实失败,证明浮点环境不同。但不是两台独立机器,严格按任务书保留第二台 Linux 机器/runner 的本轮提交复验缺口,不将同机容器算成另一台机器,也不据此推 staging。~~ **已解除**:产品提供第三套独立 Linux/Python 3.13 环境复验(`0ca3871d`),定向 18 项与校正 glob 216 项全绿,日期回退正反向成立;BUG-985 resolved,已授权合入 staging。
- Windows quick 基线与修改版均因缺 mcp 停在 source inventory;Linux 完整依赖的 quick 结果另见本轮进度。开工 focused 的历史镜像路径断言仍是已知环境失败,不制造目录、不削弱断言。
- F3 已证实时段真实重算经过已修 helper;旧跨午夜时段缓存证据未变时会绕过新算法,BUG-984 升为 BUG-981 端到端验收阻塞项。只限缓存命中,不能声称所有时段新算都未修;unknown 全天初始窗同日,不把它作为跨日复现。
- 证据与补验:`docs/tasks/PROGRESS-rectification-cross-midnight-gate-fix-20260920.md`、`docs/testing/rectification-cross-midnight-gate-fix-20260920.md`。本单不越界实施缓存/SQL,~~也未部署~~或改 main。(2026-09-26 对账:`25232ce4` 经 `b27d4de9` 合入 staging,随 deploy-staging run 2821 部署。)
## 跨午夜修复:既有上下游日期与回执缺口(2026-09-20)
- BUG-981 本轮只修 `candidate_at` 到 Dasha 辅助评分的日期一致性。独立审查确认两个更上/下游既有缺口,不应扩大“已修复”口径:跨午夜同簇成员按钟点排序会把短簇记成全天宽度(BUG-982);凌晨申报生成跨午夜窗时,生产枚举将起点绑定申报日,中心候选可能错到次日(BUG-983)。都不在本单仅修 helper 日期的授权内,未顺改开窗、枚举、聚类或交付策略。
- 默认与后端算法标记同步升级只保证版本接口可达、无旧环境覆盖的分钟模式按既有身份门失效缓存。已有环境覆盖、版本探测失败的回退和 `block_scan` 提前缓存路径可能继续复用旧结果;聚合回执 `max(engine_version)` 也不是实际成功计算身份。不能用 started 新版标记声称旧结果已经重新计算,T4 的全链路可区分性尚未完整验收。
- 本机无受控登录态、无授权线上环境变量读取渠道;不借用凭据。逐项补验见 `docs/testing/rectification-cross-midnight-20260920.md`;不把单元测试代替部署或真实历史会话打开。
- 本轮前端全量基线 3486 项/79 失败,最终 3493 项/79 失败,失败标题集合完全相同,但套件仍未全绿。Docker 实际可用,不沿用旧轮“无 Docker”结论;存在 Windows symlink 权限、网络地址池等环境失败。两侧 build 均被外部 node_modules junction 拦截,Static/gzip 未验;Python quick 两侧均缺 mcp。完整对照见本轮进度及 `docs/testing/rectification-cross-midnight-frontend-results-20260920.json`。
## 寒暄快速通道:平台补验与 staging 实测(2026-09-20)
- ~~Windows 标准 `test:db` 被迁移镜像普通文件 `duplicate migration filename` 阻塞。~~ **已用 Linux 标准命令补验:基线 39/39、候选 40/40。** 独立 Docker-in-Docker + Linux named volume 恢复 Git 原始符号链接,不再使用临时单目录迁移替代;未改 runner/迁移断言。
- ~~Windows Next build 被 Skill runtime alias symlink EPERM 阻塞,缺 Static/gzip 证据。~~ **Linux 两侧完整构建通过,首页均 Static;同口径首屏 JS gzip 621,299 → 621,605 B(+0.0493%)。** 未改 Skill loader/权限或业务依赖。
- pre_work_check 远端 verified;focused 23 通过/1 失败,缺 `.workbuddy` 历史镜像目录的基线断言,未造目录。
- Linux 最终全量基线 3530/3530、候选 3566/3566,tsc 0、lint 0 error/120 既有 warnings;本轮前端平台缺口已解除。未用真实模型、未读凭据、无受控登录态浏览器验收;用户已授权推 staging,交付与部署证据见本轮进度。按 `docs/testing/consult-smalltalk-fastpath-20260920.md` 复核三模式、净余额、刷新恢复、真实分类误判率和延迟。
## 生时校正验证:独立盲测资格与申报偏差真实分布(2026-09-20)
- v3 / v4 的案例成绩已曝光。`BUG-427/428` 禁止将已见案例重新算作独立盲测,任务书没有授权推翻;固定实现、重跑或刷新哈希不能恢复未见性。本轮 T2 只能提供固定口径重跑,独立发布验证仍 blocked,确认门保持 `not_ready`。
- 真实用户的申报偏差分布目前不可得:需要有独立出生记录的受控用户样本和合规采集授权,目前无受控账号;不读取、猜测或借用账号。本轮 T1 只能回答给定偏差时的敏感性,不能推算总体准确率或现实失败比例。
- 本机无项目 `.venv`,Python 3.11.7 的 mcp/hypothesis 缺失;快速门及历史 v2 封存哈希断言的基线对照见 `docs/tasks/PROGRESS-rectification-validation-20260920.md`。不改历史封存、不削弱断言来换通过。
- 前端两侧构建均因 Turbopack 不接受指向工作树外的 node_modules junction 失败;Static/gzip 无完整产物。类型检查和 lint 通过不等于构建通过,补验清单见 `docs/testing/rectification-validation-20260920.md`。
- 独立审查发现生产矩阵的 transition proximity 对跨日候选复用单一出生日期。验证补缺轮仅在离线评测按日期分组适配,不能称为未经改动的生产端到端回放。产品现已批准独立修复,跟踪 **BUG-981** 与 `docs/tasks/PROGRESS-rectification-cross-midnight-20260920.md`;生产修复、回归与部署须分别验收,未闭环前保留本条。(2026-09-26 对账:生产修复 `aa46da10` 经 `b27d4de9` 随 run 2821 部署;BUG-981 仍 investigating,独立盲测 blocked 不变,本条保留。)
## ~~私人案例清理:远程 review 分支推送认证失败(2026-09-19)~~
- **已解除:** 恢复认证后已成功推送 `codex/owner-case-purge-20260919`,远端 SHA 与本地提交一致;未推 staging 或 main,未部署。此前失败历史保留,不再代表当前状态。
- ~~产品要求先发布 `codex/owner-case-purge-20260919` 供远程 review;首次推送因 Gitea 认证失败。~~
## ~~私人案例清理:任务书引用范围与全仓扫描口径冲突(2026-09-19)~~
- **已解除:** 产品明确批准补充引用修复范围、精确许可口径、具体删除目标及仓内脱敏。已删除 3,494 个获批文件,修复 8 份派生资料和 manifest;索引 185 → 174,缺失路径为零。没有删除完整性断言或放宽证据限制。
- ~~原任务书将待删台账描述为仅由自身合同测试读取;证据包索引和派生视图存在未列入原范围的引用,未获得授权前暂缓删除。~~
- ~~禁止标记声明会自命中,历史文档和合成样例也超出原清单,精确许可口径待确认。~~
- 授权与实施记录:`docs/tasks/TASK-owner-case-purge-fix-20260919.md`、`docs/tasks/PROGRESS-owner-case-purge-20260919.md`。仅允许经过核实的节点/样例,不豁免整目录。
## ~~私人案例清理:删除测试清单写入权限(2026-09-19)~~
- **已解除:** 修复单允许把审查后的 12 个测试前缀、Linux 对照计数及非敏感核算写入进度文件;已补 F3,未写入私值、私人转录文件名或原始日志。此前权限拒绝历史保留。
- ~~任务书要求的逐项删除测试清单此前因本地权限分类器拒绝而未落盘。~~
## 私人案例清理:上游哈希快照与完整验收缺口(2026-09-19)
- `references/upstream/yinduzhanxing/SKILL.md` 按任务书保留为唯一临时整文件例外。等上游清理后通过受审导入流程更新并重建来源哈希,届时移除豁免;不手改快照。校正历史包与注册表保持不变。
- 本机缺项目 `.venv`、mcp/hypothesis,Python 全量在收集阶段中断,quick 缺 mcp;Windows symlink 权限和 python3 launcher 造成既有失败。不能写成通过,不为适配本机削弱测试。
- 前端基线和修改版构建受外部 node_modules junction / symlink EPERM 阻断,没有完整产物;`/` Static 与首屏 gzip 尚未验收。未借用登录态或模型凭据,历史会话真实加载与浏览器走查待受控环境补验。
- 直接运行证据索引检查确认基线与修改版均有 12 个校验器不支持的既有 claim_status;缺失路径为零不等于完整性门全绿。未越界修改状态或校验器。
- 补验清单:`docs/testing/owner-case-purge-20260919.md`。提交、推送、部署状态以本轮进度记录为准。
## ~~侧栏导航循环:Gitea 写入认证失败(2026-09-19)~~
- **已解除:** 用户要求再次推送后,同一工作树 `git push origin HEAD:staging` 成功,`ls-remote` 确认远端为 `7e0037177d3babc9f8bb20b840dda8a060e37ace`。没有修改认证配置、读取或转交凭据;此前失败原因未确定。以下保留首次失败历史,不再代表当前推送状态。测试站 health 当次核对仍为 `d6fc4fb8`,部署未验收。
- 用户已授权 push staging,但 `git push origin HEAD:staging` 返回 `remote: Failed to authenticate user` / `fatal: Authentication failed`。只读 fetch/ls-remote 成功不代表写入认证可用。
- 本地代码提交 `2c92f6100eb982756424e6f48a38680032917c23` 已保存;失败后远端仍 `a2bcdee006397e2417f2e42d30ca030dd41ec480`,health 仍 `d6fc4fb8b3838702c62f9d2a181609ffb3df2985`,**未推送、未部署**。
- 需要产品恢复本人 Gitea Git 写入认证/仓库写权限;不在聊天中提交 token,不借用其他账号,不 force push。恢复后从本轮独立工作树 fetch 并快进交付,再验门禁和部署。
## 侧栏导航循环:本机构建与登录态验收缺口(2026-09-19)
- 同 SHA 基线 webpack 构建完成编译/TypeScript,但 collect page data 因 Skill runtime `symlink EPERM` 失败;修复版同环境结果见进度记录。未得到完整生产构建,因此 `/` Static 和首屏 gzip ±2% 尚未验收,不能用不完整产物代替。
- 基线全量前端测试 3481 tests / 3403 pass / 78 fail;包含 Windows 路径、符号链接、数据库/Docker 与既有合同失败。修复版逐项对照见 [本轮记录](docs/tasks/PROGRESS-sidebar-navigation-loop-20260919.md),不顺带放宽断言。
- 没有受控登录态浏览器,未执行完整 Next Link 三入口点击、移动/折叠及可见分页 observer 走查。替代证据为真实 React provider/effect/transition 回归,**不等价于浏览器验收**。按 [真人清单](docs/testing/sidebar-navigation-loop-20260919.md) 补齐。
- 发布前预检远端 verified,但碎片扫描两条既有断言失败;不以同步成功声称预检全绿。修复交付与部署状态在进度记录分别标注。
## ~~TypeSafe Jev 意图分类:等 API key(2026-09-19)~~
- ~~T2/T3 阻塞,替代证据 = T0/T1 产出。~~
- **解除(2026-09-19):** 产品提供 `TYPESAFE_API_KEY`,T2 已用 `jev-1.13.0` 跑完来源 A+C 各两次。首版结论作废(语料为模板拼接)。
- **修复轮(2026-09-19):** 来源 C 由 DeepSeek Flash 生成+复核后重跑。结论见 `docs/research/jev_intent_2026_09_19.md`:**缺数据**。
## ~~生时校正 Jev 研究:无 staging 库,来源 B = 0(2026-09-19)~~
- ~~缺 staging `agentic_rectification_turns` 样本。~~
- **解除(2026-09-19 修复轮):** 产品转交 `source_b.jsonl` 157 条(点选 17 / 采集 107 / 无焦点 33),执行方逐条人工标注 gold,未提交原文。Jev×2 + Flash×1 已跑。无焦点层与来源 C intent 差 17.2pp > 10pp,结论为缺数据。
## ~~生时校正 Jev 研究:无会话模型凭据,现行分类器未对照(2026-09-19)~~
- **解除(2026-09-19 修复轮):** 产品确认线上会话模型 = DeepSeek Flash。生成、复核、对照均用该模型(提示不同)。来源 C 全量一次 + 1/3 第二次;来源 B 全量一次。原「无会话模型凭据」缺口关闭。
## 会话列表:元数据操作未上移到 provider(2026-09-17,BUG-927 让步)
- **让步:** 任务书 T2 允许第一步只做「路由组 + layout 常驻 + provider 拥有列表 + 首页注册全部控制」。改名 / 置顶 / 归档 / 删除 / 翻页仍由首页注册,未挂载首页时侧栏只读。
- **现状:** 四个页面共用一份列表、切页不重拉已落地。星盘 / 星历 / 报告页不能改名或删除。
- **解除需要:** 把只依赖 `sessions` + fetch 的元数据操作搬进 `SessionListProvider`,四页都能用。另立单。
## ~~会话列表:空咨询延迟落库未做(2026-09-17,BUG-928)~~
- ~~**让步:** 任务书 T3 要把 `startNewChat` / 启动落点改成本地创建、第一问前才 `POST /api/sessions`。牵动 `?c=` 深链和刷新恢复,本轮只做服务端过滤 + 复用已有空咨询。~~
- ~~**替代:** `GET /api/sessions` 排除 `messages = []`,响应带 `draft`;启动和「新建对话」优先用这份空咨询,不再连点就堆新行。~~
- **解除(2026-09-21,BUG-989):** `startNewChat` 只在本地开一条,第一问 `send()` 才 `POST /api/sessions`;未落库不写 `?c=`。列表过滤收窄到咨询空行,校正会话不再被 `messages = []` 误删(BUG-987)。刷新丢掉未开口的本地空会话是可接受的。
## 归档下线迁移:本机 Docker 网段耗尽未跑 test:db(2026-09-21,BUG-991)
- **Docker 在 PATH**,但 compose 建网络报 `all predefined address pools have been fully subnetted`。`database-session-list-visibility.test.ts` 的迁移清空断言**未跑,不得写成通过。**
- **替代证据:** 迁移 SQL 只 `set archived_at = null where archived_at is not null`,不含 `updated_at`。最终验证交给门禁。BUG-991 保持 investigating。
## 会话列表归档:本机 Docker 网段耗尽未跑 test:db(2026-09-21,BUG-990)
- **Docker 在 PATH**,但 `startPostgresFixture` 建 compose 网络报 `all predefined address pools have been fully subnetted`(其它 worktree 留下的 postgres 网络占满)。**未跑 `npm run test:db`,不得写成通过。**
- **替代证据:** `frontend/tests/local-postgres-not.test.ts`:`not("archived_at","is",null)` 编译 `"archived_at" is not null` 且不含 `<>`;`not(...,"is",undefined)` throw `unsupported not filter`。真实 Postgres 断言仍在 `database-session-list-visibility.test.ts`,最终验证交给门禁机。BUG-990 保持 investigating。
## 会话列表多键排序:无 Docker 未跑翻页重叠(2026-09-17,BUG-926)
- **无 Docker:** 本机 `docker` 不在 PATH。任务书要求 `npm run test:db` 插入三条不同 `updated_at` 的会话,`GET /api/sessions?limit=2` 返回最新两条且 `nextCursor` 翻页拿到第三条、无重叠。**未跑,不得写成通过。**
- **替代证据:** `frontend/tests/local-postgres-order.test.ts`:两次 `order()` 生成 `order by "updated_at" desc, "id" desc`;单次 `order()` 输出不变;列表路由排序键与 `sessionCursorFilter` 键一致。
## 生时校正常驻条:缺「收窄进度」服务端字段(2026-09-16,分支 `codex/cend-rectification-20260916`,T7.1)
- **触发让步顺序第 5 条。** 任务书要常驻条写「当前区间、宽度、收窄进度、已答题数」四项。前三项里只有**收窄进度**没做,其余三项已上条。
- **缺的是什么:** 没有任何投影把「已从 N 分钟收到 M 分钟」作为字段给出。服务端能拼出这句话(`user-copy.ts` 的 `progressClause()`,由 `answer-choice.ts` / `agent-run.ts` 传 `openingRangeFromDossier(dossier)` 调用),但它只作为**旁白正文**落库,没有结构化出口。客户端要么解析消息文本,要么自己减——两条都不行。
- **为什么不在前端减。** 开场窗口 `case.candidate_range` 确实在线上(`searchWindowFromSnapshot`),但:① VOICE.md 第 2 条把进度数字划给服务端;② 更要命的是会算错——`candidate_range` 是**当前**搜索窗口且会放宽(BUG-572:±15 → ±30 → ±60 → ±120),拿它当「最初」去减,一次放宽会被报成一次收窄。
- **现状不是回归:** 收窄进度这句话服务端照旧写进旁白,用户仍看得到,只是不在常驻条上。
- **解除需要:** 投影里加一个稳定的开场宽度 / 收窄进度字段(`inference_state` 或 `case` 上都行),要求它记的是**开场**窗口而不是当前窗口,放宽时不得跟着变。届时常驻条加一项即可,`rectification-timeline-scale.ts` 已留好位置。另立单,本轮不做。
## 对话额度拆分(2026-09-16,分支 `codex/consultation-session-capacity-20260915`,BUG-732)
- **无 Docker:** 本机 `docker` 不在 PATH。`npm run test:db` 与 `npm run db:migrate:check`(需要 `SCHEMA_DATABASE_URL` 连 Postgres)未跑。`frontend/tests/database-consultation-session-capacity.test.ts` 在无 Docker 时 skip,**不得写成通过**。替代证据是 SQL 静态合同:额度求和表达式不含 `thinkingText` / `thinkingSections`,物理上限为 `length(elem::text)`,算式写在迁移注释里。
- **详情接口体积(5.3,已量,不改接口):** 用三域本命夹具(每轮正文 4,000 汉字 + 思考 4,000 汉字 + 实测 `thinkingSections` + 典型三个 receipt)构造 `GET /api/sessions/[id]` 的 `{ session }` JSON。2026-09-16 旧思考计划:19 轮 UTF-8 **562,240 B(0.536 MiB)**;50 轮 **1,479,034 B(1.411 MiB)**。2026-09-18 四标题思考计划重测:19 轮 **533,113 B(0.508 MiB)**;50 轮 **1,402,384 B(1.338 MiB)**,比例仍约 2.63。1.3–1.4 MiB 在 2 vCPU 上打开长会话会偏沉,分页 / 按需加载历史不在本单(任务书 §9)。PostgreSQL `length()` 按字节计,汉字正文 4,000 字 ≈ 12,000 字节,线上按字节撞 200,000 额度会早于「50 轮汉字」;50 轮数字是任务书字符口径对照。
## 只读页验收修复:镜像与浏览器(2026-09-16,分支 `codex/readonly-pages-fix-20260916`)
- **无 Docker:** 无法验证 API 镜像里 `COPY vendor` 与容器内 `node --version`。不得写成通过。
- **无登录态 / 无 Chrome:** `/chart`、`/ephemeris` 浏览器走查仍留给 `docs/testing/`。
- **staging 部署:** 推送前 `/api/health` 的 `deployment.gitCommit` 仍可能停在 `2d7698ea`。本单修的是门禁红测试,部署是否追上以推送后的 health 为准,未追上不得写成已部署。
## 七政原生排盘:镜像构建与上游 checkout(2026-09-15,分支 `codex/qizheng-native-chart-20260915`)
- **无 Docker:** 本机 `docker` 不在 PATH。无法构建 `deploy/railway-api.Dockerfile`,也无法在容器内跑 `node --version` 或断言 `Path('/app/vendor/stem-branch/dist/cli.cjs').exists()`。**不得把镜像构建或容器内验证写成通过。** Dockerfile 已按任务加上 `nodejs` 运行时与 `COPY vendor ./vendor`,待有 Docker 的环境验证。
- **替代证据(宿主机):** `node --version` = `v22.23.2`。vendored `dist/cli.cjs` 45,963 行 / 2,682,464 字节,与任务书 45,963 行 / 2.68 MB 一致。用任务书虚构资料 `1990-04-09T13:24:00+08:00 / 31.19N 121.44E` 实跑 `getSevenGovernorsChart`:11 曜、12 宫、命宫星宿·午宫、太阳宿度 177.94 奎 7.44°、相位 27、神煞 0。
- **上游以本机目录为准,不从 GitHub 拉,也不带同分支 `6c27aab6` / `8bba9cb5`。** `G:\Ferti\yinduzhanxing-codex-add-birth-time-rectification-skill` = 任务书 `/workspace/yinduzhanxing` @ `a911c890`。`vendor/stem-branch/{LICENSE,README.md,package.json,dist/cli.cjs}` 已与该目录逐字节核对(LICENSE Apache-2.0,Copyright 2026 Albert Hui)。先前从 npm 另凑的 `dist/index.cjs` 已删除,vendor 树与该快照一致。CLI 无 `ketuMode` 旗标,请求里的派别会回写,`engine_ketu_mode` 以 CLI 实际输出为准。
- **本机无仓库 `.venv` 目录:** 主仓 `.venv` 是指向 `/workspace/Jyotisha/.venv` 的 git symlink,Windows 检出为 25 字节指针文件。测试与预检使用 Anaconda Python 3.11.7(已有 `pytest` 与 `pyswisseph`)。`timezonefinder` 仍缺,与既有 BLOCKED 条目一致。
## 只读星盘页(2026-09-15,分支 `codex/chart-page-20260915`)
- **浏览器级走查未做:** 执行环境无登录态、无 Chrome。清单在 `docs/testing/chart-page-20260915.md`,不得标成通过。
- **无 Docker:** 未跑 `npm run test:db`。本单未动表。
- **`next build`:** 本 worktree 的 `frontend/node_modules` 是指向主仓的 junction。Turbopack 可能报 `Symlink ... points out of the filesystem root`。`/` 是否仍 Static 用 `next build --webpack` 核,不得把未跑的构建写成通过。
## ~~快速门 timezone 推断依赖~~(2026-09-15 解除:验收机已装 `timezonefinder 9.0.0`)
- **`run_quality_gate.py --profile quick` 必红一条,不是 BUG-693/694 的回归。** 验收机在 `1d2aeffa` 上 `739 passed, 1 failed`;同一条在修复前的 `039b0a26` 上同样红。
- 失败测试:`tests/test_api_server_security.py::test_shadbala_endpoint_returns_ranked_planet_strength`
- warning 原文:`WARNING [api_server] shadbala advanced layer failed: timezone inference dependency unavailable`
- 断言:`assert ['core_sixfold'] == ['core_sixfold', 'advanced_evidence']`(缺 `timezonefinder`,高级层没挂上)。
- **解除(2026-09-15 验收,`8d56d0ab`):这不是缺口,是验收机少装了一个已声明的依赖。** `timezonefinder>=6.5` 在 `requirements.txt:6` 与 `pyproject.toml:31` 都写着,venv 里没有。按本单让步顺序第 2 条装上 `timezonefinder 9.0.0`(附带 `numpy` / `h3` / `flatbuffers`;全仓无任何 `import numpy`,不影响既有代码),该条测试立即通过,快速门 pytest 段 **740 passed, 1 skipped, 0 failed**(装之前 739 passed / 1 failed)。断言未改。
- 执行机(Windows / Anaconda)仍缺 `timezonefinder` 与 `mcp`,在那边跑快速门会先红在别处;以验收机数字为准。
解除命令(缺依赖的机器照做):
```bash
.venv/bin/pip install "timezonefinder>=6.5"
.venv/bin/python -m pytest tests/test_api_server_security.py::test_shadbala_endpoint_returns_ranked_planet_strength
```
## 快速门整体仍非绿:`npm test` 的 27 条无 Docker 失败(2026-09-15 记)
- `run_quality_gate.py --profile quick` 的最后一步是 `npm test`。Python 段全绿之后,门仍 `exit=1`、日志尾 `== Quality gate failed ==`,卡在这里。
- 实测 `# tests 3214 / # pass 3173 / # fail 27 / # cancelled 0 / # skipped 14`,27 条**全部**是数据库、部署、Better Auth、迁移类用例(`database roles have no cluster privileges`、`migration runner is serialized…` 等),本机无 Docker。
- 因此本机「快速门通过」的口径是:**Python 段 0 失败,且 `npm test` 失败数 = 27(与基线逐条一致)**。不得据此宣称门全绿,也不得为了让门变绿去动这 27 条。
## 采集流程重设计(2026-09-10,分支 `codex/rectification-collection-redesign-20260910`)
- **`next build` / 首屏 gzip 未核。** 本 worktree 的 `frontend/node_modules` 是指向主仓的软链。实测 `npm run build` 在 Next 16.3.1 Turbopack 失败:`Symlink [project]/frontend/node_modules is invalid, it points out of the filesystem root`。不得把 `/` Static 或 gzip ±2% 写成通过。
- **浏览器级走查第 19~21 条未做:** 执行环境无登录态。清单在 `docs/testing/rectification-scenarios-20260907.md`。部署后须先打开绑定 Skill 10.0.22 的历史校正。
- **无 Docker:** 未跑 `npm run test:db`。本单未动表。
## 生时校正常驻时间轴(2026-09-09,分支 `codex/rectification-timeline-20260909`)
- **浏览器级验收全部未做:执行环境无登录态、无 Chrome。** 六节走查条目写进 `docs/testing/rectification-timeline-20260909.md`,未标记为通过。替代证据是 `frontend/tests/rectification-timeline-20260909.test.ts` 的 17 项(几何换算、二元编码、闭区间边界、跨午夜窗口、放宽后仍落在轴内、三处源码锁、CSS 合同)。
- **最需要真人确认的一条:贴底跟随。** 时间轴在滚动容器之外,高度固定是靠 CSS 与合同测试保证的;「贴底时新消息不会滑出视野下缘」只有真实滚动能确认。BUG-218/252 的教训正是纯源码合同测试固定不了几何。
- **时段阶段的区块未画(任务书 §6 让步 1)。** 区块边界在客户端只以显示字符串存在(`BLOCK_PERIOD_LABELS` 形如 `"清晨 04:00—07:59"`),没有结构化 `start/end` 下发;反解析展示文案太脆,未做。该阶段区间带铺满窗口、读数写窗口宽度。若日后要画区块,需要服务端把子段边界结构化下发——属于另立一单的响应新增字段。
- **桌面端时间轴与右侧板「换升时刻」是否重复,未判定。** 任务书决策记录第 7 条明确留给真人走查(清单 1.1),本轮未做取舍。
## 报告生成分章进度(2026-09-09,分支 `codex/report-progress-20260909`,BUG-601)
- **真实报告生成一次都没跑过:执行环境无登录态、无 Chrome、无模型凭据。** 因此"写作阶段真的会出现""章节名不错位""慢章节文案真的会切换"这三条**没有任何运行时证据**,只有纯函数测试与源码锁(`frontend/tests/personal-report-progress.test.ts` 16 项)。逐条走查清单见 `docs/testing/report-progress-20260909.md`,交给有真实账号的人。
- **分章行在生成中是否真的可读,未在真库上验证。** `personal_report_sections` 的 RLS 给了 `authenticated` 对自己行的 select,路由用的也是已认证客户端,逻辑上成立;但本机无 Docker/Postgres,`npm run test:db` 的相关套件(`database-personal-report-sections`)在基线就因缺 Docker 失败,本轮同样没跑。**若上线后等待屏始终停在准备阶段,第一嫌疑就是这里**——分章行读不到时代码会安静回落到准备态,不会报错。
- **`next build` 的 First Load JS 分路由数字取不到。** Next 16.3.1 的 Turbopack 构建输出只有路由表(`○ /` 已确认 Static),没有 Size / First Load 两列,`build-manifest.json` 也不含按路由的 CSS 清单。本轮改用可直接测量的口径:`/` 唯一受影响的产物是 `globals.css`,gzip 33,324 → 33,641 B(+317 B,+0.95%),在 ±2% 内;新增 JS(`personal-report-progress.ts`、`personal-report-progress-panel.tsx`)只被 `/reports` 路由引用,已用反查确认 `/` 的组件树不引入任何 personal-report 模块。
## 普通咨询上下文窗口与模型缓存(2026-09-06,分支 `codex/consultation-context-and-cache-20260906`)
- **`npm run test:db` 未绿:Docker 用户自定义网络地址池耗尽。** `docker compose` 起 postgres fixture 时报 `all predefined address pools have been fully subnetted`。本机 Docker daemon 可用,且已有十余个遗留 `jyotisha-postgres-*` 容器占着网络;本单未做 `docker network prune`(会动共享宿主状态)。`test:db` 36 项里 19 项不需要新网络(备份路径、env 校验等)通过,17 项因建网失败。
- **迁移语法检查(任务书 §5.1 空库口径):** 用默认 `bridge` 起一次性 `postgres:17-alpine`(不新建 compose 网络)。对空库 `psql --set ON_ERROR_STOP=1 -f 20260906010000_chat_session_context_summary.sql` 退出码 3:`relation "public.chat_sessions" does not exist`。在同一空实例上 `CREATE ROLE authenticated NOLOGIN; CREATE TABLE public.chat_sessions (id uuid PRIMARY KEY);` 后再跑同一文件:`BEGIN / ALTER TABLE / GRANT / COMMIT` 成功;列 `context_summary jsonb`、check `jsonb_typeof = 'object'`、`authenticated` 对该列 `UPDATE` 为真。容器已删。
- **`npm run build -- --webpack`:** webpack 编译通过(45s)。随后 Next 类型检查停在既有 `api/rectification/cases/[caseId]` 的 `dossierResponse` 导出,与 BUG-551/553 同因,本单未改该文件。因此构建未走到 `Collecting page data`,本机看不到 `○ /` Static 行。`page.tsx` 未改;缓存表只在后台用量页。
- ~~部署前仍需产品负责人跑 Gitea `Migrate Staging Database`(本迁移 + 积压的 `5010000_personal_report_longform_appendices.sql`)~~ **已解决(2026-09-06 产品确认)**:附录迁移 `20260905010000_personal_report_longform_appendices.sql` 于 migrate 2431(09-06 00:00)真实 `applied`(此前 09-05 的 migrate/deploy 2419/2420/2425/2428 死于 runner 磁盘满;22:56 的 deploy 2430 被 checker 以 pending migrations 明确拒绝);随后 deploy 2432 成功。`20260906010000_chat_session_context_summary.sql` 于 migrate 2440(09-06 15:31)`applied`;migrate 2445 幂等复确认两条均 `already applied`。当前 health:`deployment.gitCommit=a444c493`、`database.latestMigration=20260906010000`、`requiredMigrationsPresent=true`。
## 仓库整备任务 1:发布门仍有三条非环境红(2026-09-03,分支 `codex/repo-hygiene-20260903`)
任务 0 之后,附录里 staging 独有的 6 条里,夹具大运 / 用户调用验收 / 技能包验收已绿。剩下 3 条**不改期望值、不改校正打分**:
| 测试 | 现象 | 分类 | 处置 |
| --- | --- | --- | --- |
| `test_local_accuracy_report_outputs_machine_readable_baseline` | `valid_packets` 3 ≥ 4;`dasha_shadbala_oracle_cases.json` 4 包里 1 个仍是 `template_only` | 参考值/oracle 未齐 | 不改断言、不升级模板包。公开案例复验已 `66/66`。 |
| `test_historical_event_priority_preserves_vimshottari_actor_difference` | `selection_priority == 0.0`(1879-03-14 相邻分钟、1922 career) | 校正引擎 / Vimshottari 边界,本轮禁止改阈值 | 交产品 |
| `test_v3_development_result_stays_shadow_only` | `v3_improved_case_count` 1 ≠ 0 | 同上 | 交产品 |
因此 `run_quality_gate.py --profile release` **不能**在本轮声称退出 0。全量 pytest 里附录那 83 条生产同样红的环境/过期项不在本轮修。
复现:
```bash
.venv/bin/python -m pytest -q tests/test_local_accuracy_report.py tests/test_dynamic_rectification_fact_priority.py::test_historical_event_priority_preserves_vimshottari_actor_difference tests/test_minute_rectification_development.py::test_v3_development_result_stays_shadow_only
```
## 生时校正会话面:消除空白假死与交互摩擦(2026-09-03,分支 `codex/rectification-ux-20260903`,重做)
- **浏览器级手工验收未做:执行环境无登录态、无 Chrome。** 任务书任务 0 的手工项与任务 1 的整轮录屏(开场 → 3 道选择题 → 候选 → 采用)都做不了;已按任务书把它们写进 `docs/testing/staging-manual-walkthrough-20260901.md` 第 8 节(含深链/刷新与缺口重试两条),交给有真实会话的人。本轮的替代证据:`tests/rectification-surface-state.test.ts`(纯函数会话态/缺口态、hydration 超时/失败、turn 解析)与 `tests/rectification-surface-contract.test.ts`(源码锁:一次揭幕、prepare 阶段 hydration、无重挂、续接同一行、空态、板首态)。
- **1.3「若快照 API 提供填报时间宫位表则直接渲染」未做:API 不提供。** `frontend/src/app/api/rectification/cases/[caseId]/route.ts` 的 dossier 响应只带 `accepted_time` / `confirmed_time` / `candidate_range`,无 natal/declared 宫位表;按任务书只做文案与收窄,不造数据。
- **书面偏差:hydration 不是 `Promise.allSettled([turns, snapshot])`,而是一次请求套 4 秒 `Promise.race`。** turns 与快照来自同一个 `GET /api/rectification/cases/:id`,两个并行请求会重复;语义(拉完再切换、超时仍揭幕)不变。上限常量直接等于 `BOOTSTRAP_PREPARE_TIMEOUT_MS`,只有一个。
- **书面偏差:turns 后到的填充与重试计数复位不用 `useEffect`。** `npm run lint` 的 `react-hooks` 规则拦截 effect 内同步 setState;改为 React 文档的"渲染中按上一 prop 调整 state"模式与事件处理器内复位,行为等价。
- **书面偏差:首页卡片不带 `aria-busy`。** `tests/home-bootstrap-reveal.test.ts` 锁死 `starter-home.tsx` 不得出现 `aria-busy={`(unified-loading 裁决);卡片只用 `data-opening` + 静态文案 + `cursor: progress`,侧栏行仍带 `aria-busy`。
## Agent 聊天流式体验与双会话面统一(2026-09-01,分支 `codex/streaming-ux-20260901`)
- **~~任务 3 未做,等待第三批拆页合入~~ 已解除并完成(2026-09-02)。** `origin/staging` 合入 `bf6989ec`(第三批)、`124d3990`、`058e5db9` 后,本分支 rebase 到其上,任务 3 按任务书原文完成:`page.tsx` 的滚动 effect 与内联「跳到最新」按钮删除,跟随并入 `useConversationScrollAnchor`,校正面接入同一 hook 与 `JumpToLatestButton`,复用 `ChatComposer`(`value` 受控、500 字上限),`rectification-sticky-scroll.ts` 删除,720px 覆写删除。对应 DESIGN.md 四条与 BUG-477/476 一并落地。
- **浏览器级手工验收未做:执行环境无登录态、无 Chrome。** 任务书里的 Performance 录制(3k 字回答无 >50ms 长任务)、结算不闪录屏、流式期间折叠时间线、校正/普通会话并排截图,全部留给有真实会话的人按 `docs/testing/staging-manual-walkthrough-20260901.md` 的方式补。本轮的替代证据是 `tests/home-streaming-render-split.test.ts` 的按帧驱动渲染计数与 `tests/stream-frame-buffer.test.ts` 的释放节奏断言。
- **`LatestAssistantEntry` 的「一次会话只 mount 一次」探针无法在测试里驱动。** 仓库没有 jsdom / happy-dom,`renderToString` 不跑 effect,所以 `latestEntryMounts` 只是留给浏览器里手动读的探针;测试改用纯函数 `latestAssistantView` 的 key 一致性 + 源码锁(只有一处 `<LatestAssistantEntry`、无 `StreamingMessageEntry`/`SettledMessageEntry`)代替。
## 报告解读深度对齐(2026-09-01,分支 `codex/report-skill-parity-20260901`)
- **端到端真实生成未做:执行环境没有任何模型凭据。** `ANTHROPIC_*` / `OPENAI_*` / `DEEPSEEK_*` 等全部未设置,仓内只有 `.env.official.example` / `.env.cn.example` / `deploy/.env.staging.identity.example`,不含可用 key。按红线不得读取或猜测凭据。因此任务书交付物 5 的「真实 writer 输出抽查」与交付物 7 的「改前改后同盘同主题章节全文对照 + 真实 inputTokens / 墙钟对照」本地无法产出。离线替代物已给出:`PROGRESS-report-skill-parity-20260901.md` 里的每章 prompt 载荷改前改后逐章对照、claim card 全文对照、以及对服务器确定性 conclusion 的 5 处逐行回溯。真实生成待部署后由委托方补。
- **分章生成路径还需要 PostgreSQL。** `generateSectionedPersonalReport` 依赖 `PersonalReportSectionService`(`personal_report_sections` 表)。本机没有 Docker / postgres / initdb / psql,与 BLOCKED.md 2026-08-30 条目同一缺口。本轮未改任何库结构、未新增迁移,`npm run test:db` 因此也未跑。
- **每章 prompt 原始 token p50 为改前的 2.83×(计费加权约 2.28×),超过任务书红线 6 的 2 倍线,等待裁决。** 不属于任务 3 的止损分支:`cachedSystemMessage` 已确认生效,通用知识包在缓存断点之内且缓存前缀逐字节稳定(有测试锁)。止损条款明确禁止「砍证据来凑成本」,因此本轮**未削减任何证据**,只把数据与四个可选降本项摆在 PROGRESS 里。请委托方决定是接受这个成本、还是选其中某项降本再推。
**裁决(2026-09-01,产品确认):接受当前成本,直接推 staging。** 依据:离线估算方法偏保守(CJK 按 1 字符 1 token),绝对量约每份报告 2.2 万输入 token。以部署后第一份真实报告的实测 `inputTokens` 为准复核;实测仍超线时再从 PROGRESS 的降本项 2/3 起做。
**终裁(2026-09-04,产品确认):成本线收口,接受实测成本。** 实测每章 inputTokens p50=5921(request 20c94bf4,五章 5804–6405),名义 5.22×,但对照基线 1135.5 是离线载荷估算、实测含系统提示/知识包/schema 注入,口径错位,真实涨幅低于名义值;绝对量约每份 3.5 万 input + 1 万 output tokens。2 倍线裁决就此完结,降本项 2/3 不启动,后续只做常规监控。
- **`/api/consultation_workflow` 的 `ai_prompt_pack` 是精简版,不含叙事种子 / dasa convergence / SAV。** 它来自 `scripts/jyotish_api_server.py` 的 `_build_chart_prompt_pack`,不是 `scripts/jyotish_engine.py` 的 `_build_ai_prompt_pack`。任务书列出的 `evidence_snapshot.timing.vimshottari`、`.convergence_top_domains`、`.strength.sav_scores`、`career_narrative` / `relationship_narrative` / `finance_narrative` 在该响应里**都不存在**(9 个主题一致)。本轮按验收条款标记为不可提取并改用同一响应里真实存在的等价路径,未改 Python 引擎(任务书把引擎输出改动列为不在范围内)。若要拿到真正的服务器叙事种子,需要另立项让 `/api/consultation_workflow` 附带完整 prompt pack——那是「响应新增字段」,属于任务 0 的止损分支,本轮未走。
## 客户端交互收尾(2026-08-30,分支 `codex/interaction-20260830`)
- **`.message-actions button` 不能做到 44×44。** 四个 26×26 按钮,`gap: 1px`,中心距 27px;下方 follow-up 芯片只有 8px 底边距。44×44 伪元素会水平重叠 17px,并在有 follow-up 时垂直吃掉 1px 点击。热区做到不重叠的最大值 **27×34**(水平吃掉 1px 缝,垂直用掉 4px 底边距)。距 44×44 还差 17px 宽、10px 高。把 `gap` 拉到 18px 才能水平到 44,但那会改变视觉留白,本轮红线禁止。
- **`.chart-nav-chip` 与 `.auth-links button` 停在 40px。** 两者视觉高度 32px,容器 `gap: 8px`(chip 还会换行)。`inset: -4px` 把热区扩到 40px,刚好填满间距、互不重叠。再扩 4px 就会在换行后上下吃点击。距 44px 还差 4px。
- 以上两处都写进 `frontend/tests/touch-target-contract.test.ts`,禁止在间距不变时把伪元素硬撑到 44px。
- **登录页当前关密码通道,`.auth-links` 不渲染。** 热区用夹具 + 注入节点量的。产品登录是 OTP,「发送验证码」已是 44px。
- **主对话计数 / 引导框中文 IME 实机未录。** 无受控登录会话,headless Chrome 无输入法。四处计数与三处 `isComposing` 由合同测试锁定。
- 真实收信端到端验收:执行环境没有可识别的 staging 测试邮箱/收件箱变量,仓库只记录发信配置而未提供受控测试邮箱。按任务硬规则不使用他人邮箱;代码、测试和部署继续,部署后的注册、验证码登录与忘记密码真实收信步骤待具备受控邮箱后补验。
- PostgreSQL 事务反向测试:当前执行环境没有 `docker`、`postgres`、`initdb`、`psql`、Podman/Colima/Lima。`frontend/tests/admin-database.test.ts` 已实现审计触发器故意失败并断言兑换码行数仍为 0 的红灯证据,但本地执行在启动 fixture 前以 `spawnSync docker ENOENT` 阻塞;交由 exact-SHA staging quality gate 的 Docker 环境运行。全量 `npm test` 因同一缺失 Docker 共阻塞 11 项数据库/部署测试,另有 1 项既有真实 DOM 测试因缺 Playwright headless Chromium 阻塞;其余 1031 项通过,skipped/todo=0。
- staging 两角色浏览器冒烟:已确认受控 admin 测试账号存在且是 `user,admin`,但当前执行环境没有其密码或已登录会话;也未提供受控 viewer 账号。不得读取/猜测凭据或使用他人账号。已完成匿名 shell、5 个资源 401、写请求 401 的服务端冒烟;admin/viewer 登录后浏览器冒烟待授权人员提供受控会话后补验。
## 前端优化九条(2026-08-29,分支 `codex/frontend-optimization-20260828`)
- **`web/index.html`、`web/rectification.html`、`web/evidence_packet.html` 不得按“无人引用”删除。** `scripts/jyotish_api_server.py` 仍把它们当作 `/`、`/evidence`、`/rectification` 的调试页;`tests/test_api_async_job_contract.py` 锁路径。任务书全仓检索漏了 Python API。移到 `scripts/` 必须改 `tests/**` 既有断言,本轮禁止。它们不是产品 UI,继续留在 `web/`。
- **admin 已登录目视(`/admin/users|orders|roles|feature-flags`)未做。** 执行环境没有受控后台会话,与上方 staging 两角色冒烟同一缺口。本轮用 `next build` 客户端 CSS 清单代替:上述四页不再包含 globals(`message-list`)那 33.7 KB gzip,只剩 admin.css 1.8 KB + Inter `@font-face` 0.8 KB = 2.5 KB。登录后的视觉塌陷仍需人补一眼。
- **`error.tsx` / `not-found.tsx` 不能 import `site-styles`。** 它们挂在根布局段,import globals 会把聊天 CSS 重新打进每一条 admin 路由。样式用内联 `style` + fallback 色值(与 `global-error.tsx` 同一模式),不必另开布局链,也不必移动 `app/page.tsx`。见 2026-08-29 收尾与 BUG-433。
- React Compiler 仍关闭,见下方 2026-08-17 记录。本轮未重开。
## React Compiler 接管 page.tsx(2026-08-17,分支 codex/react-compiler-20260817)
- **~~`Home` 的编译失败原因无法定位~~ 已解除并已定位(2026-08-17,用户授权新增依赖后完成)。** 结论:`Home` 的失败全部来自上游编译器未实现的语法与内部断言失败,**没有一条是本仓库代码写错**。稳定版 `babel-plugin-react-compiler@1.0.0` 报 24 条错误、三类全带 `Todo:`(编译器标记「尚未实现」):13 条 `try/finally`、9 条 `try/catch` 内的 `throw`、2 条 `MemberExpression cannot be safely reordered`。更新的 experimental 版已修好前两类,`Home` 随即撞上两个连续的编译器内部断言失败(`Invariant:`,即编译器 bug):`page.tsx:2666` 的 `catch (error)` 绑定被闭包捕获,以及 `page.tsx:1837` 的提升函数 `refreshAccount`。诊断用的依赖已卸载、锁文件已用 `npm ci` 权威还原、`git diff` 为空,不进交付——因为它买不到任何东西,见下一条。
- **换编译器版本或换 Babel 版实现,对本仓库零增益(已量化,这条路可以关掉了)。** 对 `frontend/src` 全部 373 个文件跑批量诊断:稳定版 1.0.0 与 experimental 版**编译成功的函数数完全相同,都是 134 个**,失败文件都是同样 21 个,仅报错事件从 74 降到 48。原因是被上游修掉的错误类别,所在函数都还有别的拦路错误,于是一个函数都没多编译出来。所以别再指望「升个编译器版本就好了」。
- **`Home` 要真正受益很可能得拆组件,属业务代码重构,本轮明令禁止。** 诊断结果进一步说明这条路该怎么走:为迎合编译器去改 `Home`(删 `finally`、重排 6 个被声明前引用的函数、逐个绕内部断言)是被编译器 bug 牵着走的打地鼠,每步都拿确定的正确性换不确定的收益;值得做的是按职责把 `Home` 拆小。 证据是同一文件里两个小组件(原始行 760、815)被正常编译、全项目另有 44 个函数被编译,唯独这个 2730 行、24 个 `useState`、18 个 `useEffect` 的函数被拒。任务书要求「哪处代码挡住了编译器就写进 BLOCKED.md,不要自行改写」,故 `frontend/src/**` 一行业务代码未动(仅反向验证时临时加删一行 `"use no memo"`,已还原,`git diff` 为空)。
- **~~待决策~~ 已决策(2026-08-17):维持回滚,不为那 44 个组件保留 `reactCompiler: true`;若要翻案,前置条件是先测出那 44 个的渲染基准。** 本轮按任务 2 止损条款已回滚该配置。数据是:构建耗时无可测量变化(噪声内),`/` 首屏 JS gzip +12031 B / +2.50 %,换来 44 个函数自动记忆化,其中 `app-sidebar`(112 槽)、`sidebar-session-row`(73 槽)、`birth-date-picker`(58 槽)与三个引导 hook 都在 `/` 上渲染。这 44 个的实际运行时收益本轮未测量(无渲染基准),所以不替决策者拍板。重新开启只需在 `frontend/next.config.ts` 顶层加 `reactCompiler: true`、`experimental` 里加 `turbopackRustReactCompiler: true`。
- **`compilationMode: "all"` 不可用,会破坏构建。** 它会编译模块作用域的普通回调,`frontend/src/components/birth-time-intake.tsx:22` 的 `Array.from({ length: 24 }, (_, index) => ...)` 被插入 `useMemoCache`,预渲染 `/` 时抛 `TypeError: Cannot read properties of null (reading 'useMemoCache')`。这是该模式本身的性质(官方标注为不安全),不是本仓库代码的缺陷,未做任何改动。
- **顺手活一律未做,登记在此:** 其一,`frontend/src/lib/skill-package-registry.ts:523` 的 `readFileSync(currentRegistryPath, "utf8")` 触发 Turbopack 构建警告「Dynamic filesystem access causes tracing of the whole project」,会把整个项目(含 `public/`)打进 server 产物,影响部署体积;升级前后都存在,与本轮无关,未改。其二,`npx eslint` 有 4 个既有 `no-unused-vars` warning,分别在 `birth-time-candidate-result.tsx:143`、`birth-time-candidate-completion.ts:10,11`、`tests/identity-auth-factory.test.ts:48`,未改。其三,`eslint-config-next` 仍是 16.2.10、与 next 16.3.1 版本号不同步,但 eslint 实测 0 error,按「不许顺手升别的依赖」未动。
- **测试环境噪声(非阻塞,已自行消化):** `frontend/tests/rectification-v9-database.test.ts` 的「v9 migration applies on a fresh database and re-applies idempotently」在全量并发下偶发失败(`database migration failed`,1 !== 0),单独重跑 7/7 通过、全量重跑 1592/1592 通过。靠 Docker 起临时 Postgres,判定为资源争用型 flake,与 Next 版本无关。未改任何测试文件。
- **文件名偏离:** 任务书要求新建 `PROGRESS.md`,但根目录已有受版本控制的 `progress.md`(1025 行)且本机文件系统大小写不敏感,写 `PROGRESS.md` 等于覆盖清单外的文件,故进度记录落在 `PROGRESS-react-compiler-20260817.md`。
## 生时校正收敛重构任务 0(2026-08-31,分支 `codex/rectification-convergence-impl-20260830`)
- 无法获取任务书要求的上游 `interview_playbook.md`、`evidence_thresholds.md`:任务书所指的 `~/.workbuddy/skills/jyotish-birth-time-rectification/` 在当前执行环境不存在,仓库内只有测试对该外部路径的引用;未伪造文件,也没有可验证的上游来源可供导入。
- 无法获取一次真实本地校正会话完整记录:当前仓库没有可证明为真实线上会话的完整原始记录,执行环境也没有受控会话/上游维护者提供的记录。因此无法可靠回答轮数、最终区间宽度、`confidence` 与 `can_apply`。
- 该信息收集缺口不阻塞任务 1–3,按 v2 任务书继续实现并在进度文件中标记为未验证;不得据此声称已验证“固定题数后停止”的上游机制。
## BLK-001 · 长对话本地收窄后 VedAstro 调用窗口与断言不一致(2026-09-06)
- 状态:blocked(基线即失败,非 BUG-565~567 引入)
- 首次记录:2026-09-06
- 测试:`tests/test_active_rectification_api.py::test_long_real_conversation_reaches_vedastro_after_local_range_is_narrow`
- 复现:
```bash
.venv/bin/python -m pytest -q tests/test_active_rectification_api.py::test_long_real_conversation_reaches_vedastro_after_local_range_is_narrow --tb=line
```
- 失败断言:`result["winning_segment"]` 期望 `start_time=05:07`、`end_time=05:08`、`representative_time=05:07`、`width_minutes=2`;实测 `04:16` / `04:16` / `04:16` / `width_minutes=1`。
- 已知同样失败的 SHA:`e2f4b55c`(父任务书验收段已复跑);工作树 `43a26a3c`(文档头,Python 与 `origin/staging` 一致)同样失败。测试首次出现于 `3ca30ed7`。未做完整二分:父任务已证明早于 BUG-558~560。
- 本单范围:只记录。不改引擎、不改门槛、不改断言来让它变绿。
- 相关:BUG-560 根因升级(分钟级原始分区分力≈随机);`docs/tasks/TASK-rectification-convergence-exit-20260906.md` 验收段。
## BLK-002 · 校正标题/活跃时间修补迁移无法本机实跑(2026-09-16)
- 状态:blocked(环境缺口,非代码缺陷)
- 分支:`codex/rectification-title-repair-migration-20260916`
- 对象:`frontend/supabase/migrations/20260916020000_rectification_session_title_repair.sql`(BUG-699 / BUG-704 的一次性数据修补)
- 缺什么:本机既没有 Docker(`docker info` 失败),也没有本地 PostgreSQL(`which psql postgres pg_ctl initdb` 全空),因此
- `npm run test:db --prefix frontend` **没跑**,不得视为通过;
- `npm run db:migrate:check --prefix frontend` 在连库前就以 `SCHEMA_DATABASE_URL is required` 退出 1,拿不到 pending 清单。
- 替代证据(都已实跑):
- 迁移的两段 SQL 与 `frontend/scripts/repair-rectification-session-titles.mjs` 逐字一致,由 `frontend/tests/rectification-session-title-repair-migration.test.ts` 比对,5/5 通过;
- 迁移器的文件级校验(文件名正则、重复文件名、目录扫描)在连库前完成——用假连接串调 `runMigrations({check:true})`,报错停在 `connect ECONNREFUSED` 而不是 `invalid migration filename`,说明新文件名与排序被接受;
- `update public.chat_sessions as session`、`join lateral`、`get diagnostics ... = row_count` 三种写法在已应用的迁移里都有先例(`20260808030000`、`20260901010000`、`20260811020000`);
- 全量 `npm test`:3334 tests / 31 fail,与同一工作树上 `origin/staging` @ `37e6c519` 的 3329 / 31 逐条一致(本轮 +5 test 全绿,失败集合未变)。
- 真实证据待补:产品在 staging 点一次 `Migrate Staging Database`,从运行日志的 `notice ... repaired_titles=` / `notice ... refreshed_activity=` 读回行数,回填进 BUG-699 / BUG-704 的「验证」。解除后划掉本条而不是删除。
- 2026-09-26 对账:`d6c359b2` 已在 staging,随 deploy-staging run 2686 部署;此后 migrate-staging-database 各 run 均成功(最近 2929),迁移应已应用。**行数仍未读回**,本条不解除。
## BLK-003 · 快速门 `test_chat_page_uses_authenticated_cloud_persistence` 基线即红(2026-09-16)
- 状态:blocked(基线即失败,非 BUG-734 / 735 引入)
- 首次记录:2026-09-16
- 测试:`tests/test_supabase_user_data_contract.py::test_chat_page_uses_authenticated_cloud_persistence`
- 复现:
```bash
.venv/bin/python -m pytest -q tests/test_supabase_user_data_contract.py --tb=line
```
- 失败断言:`assert 'user_id: user.id' in create_route`,其中 `create_route` 是 `frontend/src/app/api/sessions/route.ts`。该路由已改走 `chatSessionCreateInsertRow(...)` 构造插入行,源码里不再有 `user_id: user.id` 这个字面量;断言没跟上。**是断言过期,不是持久化真的丢了 user 归属**——同一条测试上面几行的「无浏览器侧写入」锁仍然成立。
- 已知失败的 SHA:`origin/staging` @ `37e6c519`(在 `git worktree add --detach` 出来的**干净检出**上复跑确认,与本单工作树无关)。
- 影响:`scripts/run_quality_gate.py --profile quick` 因这一条退出码为 1(`1 failed, 791 passed, 1 skipped`)。任何 Python 轮次在本机都会看到快速门红。
- 本单范围:只记录。AGENTS §7.7 不得顺手修不在任务书里的问题;改这条断言属于产品/前端归属,要单独立单确认「插入行里 user 归属现在由谁保证」再改,不得直接把断言删了变绿。
- 相关:本单进度记录 `docs/tasks/PROGRESS-consultation-residual-hotspots-20260916.md` 测试段。
## BUG-996 · 现场账户的单一数据库状态未取证(2026-09-22)
- 状态:blocked(只限现场取证;代码分类与缓存失效已在本分支用合成 fixture 锁住)
- 缺什么:会议里「更新出生时间后星盘没有可显示内容」的那一户,没有脱敏后的 `profiles` 行。不能证明当时是查询失败、adopted offset 缺失、时区解析失败,还是旧快照。
- 替代证据:`frontend/tests/chart-profile-update-consistency.test.ts` 用合成 reported / accepted / confirmed / 跨午夜 fixture。`guard_adopted_birth_date` 把 date、offset、provenance 一起清空,没有留下可排盘的半截 adopted 元组,因此没有新迁移,也没有跑 `npm run test:db`。
- 未跑:全量 `npm test`、`next build`。交给父会话串行验收。
- 解除:拿到脱敏行或 staging 上同一操作的分类日志后,把命中的 reason 回填到 BUG-996,再划掉本条。