Files
Jyotisha/docs/tasks/PROGRESS-owner-case-purge-20260919.md
T
2026-09-20 01:07:26 +08:00

133 lines
12 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.
# 上游私人案例与本机路径清理 · 执行记录
## 基线与范围
- 日期:2026-09-19。
- 任务书:`TASK-owner-case-purge-20260919.md`,含最新新增红线。
- 实际开工基线:`35ca7299c`(已 fetch 验证的 `origin/staging`);原任务书功能基线为 `b05d2fa1`。
- 实现工作树:`.worktrees/owner-case-purge-20260919`,分支 `codex/owner-case-purge-20260919`。
- 基线测试工作树:`.worktrees/owner-case-purge-baseline-20260919`,detached `35ca7299c`。
- 主检出的未跟踪资料保持不动。禁止 stash,不修改其他会话分支。
- 校正 Skill 历史版本与注册表、带哈希的上游研究快照均不手改;不修改业务流程、前端页面、主 API、数据库迁移、workflow、DNS 或 main。
## 当前工作状态
| 项目 | 状态 |
| --- | --- |
| 删除范围与引用独立审计 | 已完成;发现任务范围冲突,见补充任务书 |
| 前后端原始测试基线 | 已完成;存在原有失败和环境缺口,非全绿 |
| T2 虚构 fixture 常量化 | 已完成本地修改与定向前后对照;没有新增失败 |
| T1 / T3 删除 | 产品确认具体目标后已删除 3,494 文件,删除前全部与基线逐字节核对 |
| T4 同步排除 | 已完成本地实现,42 条新增回归通过(mirror 28 + semantic_merge 14) |
| T4 仓库守卫 | 已实现并接入 quick;57 项通过(56 自测 + 实际仓扫),包括链接/BOM 回归 |
| F1 引用修复 | 8 份 oracle JSON 与 manifest 已修复,新增 9 合同测试通过 |
| F2 额外清理 | 已脱敏 35 份文档及额外安全测试输入,保留通用报告符号及无关数值 |
| 完整验收与 staging 交付 | 已推送 `8497587e` 到 `staging`;独立定向复验通过;全量仍有基线/环境缺口,见下方清单;未执行部署与线上验收 |
补充提案:`TASK-owner-case-purge-fix-20260919.md`;环境补验清单:`docs/testing/owner-case-purge-20260919.md`。
## 已核实的环境
- 当前主机没有仓库 `.venv`;系统 Python 3.11.7 可导入 pytest、swisseph。测试使用此解释器,不能称为指定虚拟环境验收。
- Node 22 可用;已有前端依赖可只读复用,不升级依赖。
- 同步工具原始基线出现两条符号链接测试失败;定向复跑确认 `WinError 1314`(Windows 符号链接权限)。不为使工具通过而删除或放宽安全断言。
## 已完成的同步防线与保护边界检查
- `scripts/import_yinduzhanxing.py` 新增独立强制隐私路径模式;mirror 源与目标均拒绝,覆盖根路径、嵌套路径、大小写。不改原 `REQUIRED_PROTECTED_PATTERNS`,因为它与现有 policy 做集合差校验,直接增加会让未升级的 policy 无法加载。
- 新增测试不写私人模式副本,通过模式序号构造路径;错误信息不回显命中内容。
| 验证 | 实测结果 |
| --- | --- |
| 新增同步路径参数化回归 | 42 通过 |
| 同步工具完整定向测试 | 70 通过 / 2 失败;失败与基线相同,均为 Windows 符号链接权限 |
| Python 快速门 | 未通过,缺少 `mcp` |
| 校正历史版本包逐字节比对 | 186 文件,0 改动 |
| Skill 注册表与上游哈希快照 | 各 1 文件,0 改动 |
| `frontend/src` | 632 文件,0 改动 |
| 主 API 文件 | 0 改动 |
| 前端全量基线 | 3486 tests / 3408 pass / 78 fail / 0 skip / 0 cancelled |
| 前端基线 TypeScript / lint | TypeScript 0 错;lint 0 error / 120 warning |
| Python 全量基线 | 收集 2758 项、13 模块收集错误,退出 2;实际用例执行 0;缺少 `mcp` / `hypothesis` |
| 默认构建基线与修改版 | 均未通过:Turbopack 拒绝指向工作树外的 node_modules junction |
| 补充 webpack 构建基线 | 编译和类型检查完成;页面数据收集因 symlink EPERM 失败,无完整产物 |
| Static / 首屏 gzip | 环境缺口,未验收 |
| 开工预检 | 23 通过 / 1 失败,既有碎片分类断言;远端可见性 verified |
| 前端修改后全量 | 3486 tests / 3408 pass / 78 fail / 0 skip / 0 cancelled;失败名、来源文件、顺序逐项一致,差异 0 |
## 已确认的任务范围冲突
1. `references/oracle/evidence_packet_index_2026_07_19.json` 登记全部待删台账;完整性检查会打开索引并判断每个目标路径存在。原清单删除而不更新索引,将使 `test_evidence_packet_index_integrity_validator_passes_current_index` 失败。
2. 技法矩阵、effective view 与 skill truth overlay 存在交叉证据引用。已追到的运行时消费者只读取索引状态/汇总或透传 evidence 字符串,没有发现自动打开这些拟删台账的直接读取;但 effective view 对模型可查,直接删除仍留下可达的悬空路径,不能声称模型上下文完全不受影响。
3. 任务要求复用的禁止标记在其声明处自命中;扫描泛用户目录前缀还会命中模板和历史任务书。原 T2/T3 清单不足以实现“仅上游快照一个豁免”的全仓零命中。
4. 校正历史包当前扫描无命中,不需要改包或新增整目录豁免。保护红线不变。
这些事实与任务书“只有自身合同测试读者”的描述不符,初期因此暂缓。随后产品在本会话依次选择“补齐范围继续”“确认删除上述目标”“授权读取并脱敏”,补充范围已解除阻塞。子代理曾因只读任务/授权识别拒绝写入,未要求其绕过;主会话在实际用户确认后执行精确删除及仓内文档脱敏。不读取凭据、生产数据、仓外私人文件,不降低完整性断言。
## T2 定向前后对照与断言说明
实际修改 7 份 Python 测试加 `conftest.py`,不是原单文字所称的 8 份测试;另有 13 个前端测试/支持文件及 1 份日期选择器计划,共 22 文件。未删除任何测试或新增 skip。
| 检查 | 修改前 | 修改后 |
| --- | --- | --- |
| Python 定向 | 68 项:52 通过 / 16 失败 / 0 跳过 | 相同,失败名单逐项一致 |
| 前端定向(含共享使用方和 `.mjs`) | 209 项:208 通过 / 1 失败 / 0 跳过 | 相同,失败名单逐项一致 |
| Python 断言数 | 255 | 255 |
| 前端断言数 | 352 | 352 |
| T2 授权文件目标隐私标记(含中文日期变体) | 未清理 | 0 命中 |
| TypeScript / lint 主会话复验 | 基线 0 错 / 0 error | 均退出 0 |
| Python collect-only 主会话复验 | 2758 已收集 / 13 错误模块 | 2786 已收集 / 13 错误模块;增加 28 正好对应同步回归 |
| 原值(符号定位) | 新值 | 原因 |
| --- | --- | --- |
| 目标日期字面量 | `FIXTURE_BIRTH_DATE` / `FIXTURE_BIRTH.date`,虚构日期 `1990-06-15` | 删除私人 fixture、统一维护 |
| API 目标出生分钟 | `FIXTURE_BIRTH_TIME = 10:20` | 使用虚构分钟 |
| 目标 fixture 配套坐标 | 共享虚构组合的 `31.2 / 121.5` | 不对应被清理的私人资料;独立场景保留 |
| `candidate_scan.start/end` 原精确期望 | 虚构输入减/加 30 分钟,即 `09:50 / 10:50` | 保留边界断言与 61 个候选断言 |
| 日期解析年/月索引/日断言 | `1990 / 5 / 15` | 输入变更后的同语义精确断言 |
| 中文日期展示与指定文档示例 | 新虚构日期及对应中文展示 | 保持输入、说明和断言自洽 |
定向脱敏证据:`scratch/t2-evidence/result-summary.json`。原始日志、JUnit 与修改前副本仅在忽略目录,不能提交。所有 T2 文件保持 LF,主会话 `git diff --check` 退出 0。
## 隐私记录规则
不记录私人出生参数、案例标识、本机用户名或会话原文;断言变更表的旧值使用原符号或定位描述,新的测试数据明确标注为虚构。
## 已删除测试逐项清单(F3)
按修复单记录,获批删除的 12 个测试文件及其测试前缀如下(不含私人资料):
- `test_deep_fragment_oss_reuse_gate_round2`
- `test_fragment_migration_registries`
- `test_fragment_second_pass_candidate_ledger`
- `test_high_value_gap_registries`
- `test_technique_promotion_audit_kp_gochara_muhurta`
- `test_truth_source_runtime_identity`
- `test_whole_machine_jyotish_fragment_scan`
- `test_workbuddy_round3_candidate_ledger`
- `test_workbuddy_round4_candidate_ledger`
- `test_workbuddy_round4_formalization_registry`
- `test_workbuddy_round4_usage_closure_queue`
- `test_workbuddy_round5_transfer_status`
Linux 完整依赖环境对照:基线 2,905 条 / 501 文件,修复分支 2,967 条 / 491 文件;净变化为 `-43 + 108 = +65`,文件数变化为 `-12 + 2 = -10`。Windows 环境因缺 `mcp` / `hypothesis` 仅收集到 2,758 → 2,823,不能替代 Linux 全量数字。
## 最终复验进展与交付阻塞
- 2026-09-19 权限控制拒绝将本地 `scratch/owner-case-purge/deleted-tests.json` 派生清单写入本文件;未换工具、未交给其他代理绕过。逐个删除测试名及该批追加记录尚未落盘,当时暂停提交与推送。产品随后明确要求先推当前工作分支供远程 review,因此允许保存并发布待审提交;逐项记录缺口仍保留,不据此声称 staging 完整交付。
- 最终前端全量:3486 tests / 3408 passed / 78 failed / 0 skipped;失败身份与顺序逐项和基线一致,差异 0。TypeScript 退出 0;lint 0 error / 120 warning,与基线一致。
- 补充前端定向:consultation-route-service 17/17、agent-observability 12/12、personal-report-contract 27/27;Skill registry 12 通过 / 4 既有失败,binding 1 个既有文件级失败,均在原基线。
- 补充 Python 定向:vedastro_rest_bridge 6/6、personal_report_contract 40/40。
- 最终 Python collect/full 均成功收集 2,823 项并出现 13 模块收集错误,和基线错误模块逐一一致;缺 mcp/hypothesis,退出 2、实际执行 0,不能称为全量通过。数量核算:2,758 − 43 个获批删除用例 + 108 个新增用例 = 2,823;另外两条参数化路径由旧用户名改为 example,表现为 nodeid 两删两增,不改变数量。新增 108 = 导入 42 + 清理合同 9 + 隐私守卫 57。完整 importer 70 passed / 2 个既有 symlink failed;守卫与清理合同 66/66,0 skip。
- 最终默认构建与补充 webpack 构建仍分别受外部 junction 和 Skill symlink EPERM 阻断,编译成功不等于构建通过;无完整产物,Static/gzip 未验收。
- 独立复验首轮:新增清理合同 9/9、文档清理后隐私守卫 49/49。随后补齐链接/BOM 的 8 项回归,守卫当前 57 项通过:末端链接只扫描链接文本,祖先链接/junction 报安全错误,不读取仓外目标;普通已删除文件仍单独计数。内存补扫尚未跟踪的新文件无命中,但正式提交前仍须 stage 后再次扫描。最终独立复验:守卫 57/57、清理合同 9/9、导入路径回归 42/42,共 108 passed;将 5 个新增文件加入内存扫描集合后扫描 4,492 文件、未许可命中 0,校正历史 186 文件全部覆盖,上游临时例外 1。该内存验证没有修改 Git 索引,正式暂存后仍须复扫。
- 独立审核发现 semantic_merge 路径也会进入导入 manifest,已补同等隐私拒绝;新增 14 参数化回归通过,加上 mirror 28 项共 42 项。既有两条 symlink 权限失败不放宽。
- 最终字节复核:校正历史 186、注册表 1、上游哈希快照 1、frontend/src 632、主 API 1、MCP 1、其余业务 scripts 449 文件均 0 差异。9 份引用 JSON 的换行回归已修复为 LF,diff --check 退出 0。
- 完成本地验收时 fetch 成功,origin/staging 仍为本轮基线 `35ca7299c9b9c5464002f11c00310c01919e89a1`;当时没有提交、推送或部署。
## 远程 review 分支发布
产品随后明确要求先推当前分支进行远程 review。本次仅发布 `codex/owner-case-purge-20260919`,不推 staging、不提升 main、不部署,保留上述记录与环境缺口。
已暂存本轮跟踪文件改动与 5 个已审新文件,没有加入 scratch 或本地隐私标记文件。暂存后重新执行隐私守卫与清理合同:66/66 通过;`git diff --cached --check` 退出 0。首轮本地提交已完成;首次推送曾返回 Gitea 认证失败,随后认证恢复并已成功发布首轮分支,远端 SHA 与 `fe9489e6` 一致。第二轮完成 rebase 后形成 `8497587e`,已于 2026-09-20 快进推送 `staging`,并以 `git ls-remote` 核对远端 SHA 一致;未提升 main,未执行部署。