# 上游私人案例与本机路径清理 · 执行记录 ## 基线与范围 - 日期: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,未执行部署。