Apply owner-case-purge fix2 P0/F3 corrections. Co-Authored-By: Claude Code <noreply@anthropic.com>
12 KiB
上游私人案例与本机路径清理 · 执行记录
基线与范围
- 日期: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,detached35ca7299c。 - 主检出的未跟踪资料保持不动。禁止 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 交付 | 独立定向复验通过;全量存在基线/环境缺口,删除测试清单写入权限阻塞交付;未提交、未推送、未部署 |
补充提案: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 |
已确认的任务范围冲突
references/oracle/evidence_packet_index_2026_07_19.json登记全部待删台账;完整性检查会打开索引并判断每个目标路径存在。原清单删除而不更新索引,将使test_evidence_packet_index_integrity_validator_passes_current_index失败。- 技法矩阵、effective view 与 skill truth overlay 存在交叉证据引用。已追到的运行时消费者只读取索引状态/汇总或透传 evidence 字符串,没有发现自动打开这些拟删台账的直接读取;但 effective view 对模型可查,直接删除仍留下可达的悬空路径,不能声称模型上下文完全不受影响。
- 任务要求复用的禁止标记在其声明处自命中;扫描泛用户目录前缀还会命中模板和历史任务书。原 T2/T3 清单不足以实现“仅上游快照一个豁免”的全仓零命中。
- 校正历史包当前扫描无命中,不需要改包或新增整目录豁免。保护红线不变。
这些事实与任务书“只有自身合同测试读者”的描述不符,初期因此暂缓。随后产品在本会话依次选择“补齐范围继续”“确认删除上述目标”“授权读取并脱敏”,补充范围已解除阻塞。子代理曾因只读任务/授权识别拒绝写入,未要求其绕过;主会话在实际用户确认后执行精确删除及仓内文档脱敏。不读取凭据、生产数据、仓外私人文件,不降低完整性断言。
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_round2test_fragment_migration_registriestest_fragment_second_pass_candidate_ledgertest_high_value_gap_registriestest_technique_promotion_audit_kp_gochara_muhurtatest_truth_source_runtime_identitytest_whole_machine_jyotish_fragment_scantest_workbuddy_round3_candidate_ledgertest_workbuddy_round4_candidate_ledgertest_workbuddy_round4_formalization_registrytest_workbuddy_round4_usage_closure_queuetest_workbuddy_round5_transfer_status
Linux 完整依赖环境对照:基线 2,905 条 / 501 文件,修复分支 2,970 条 / 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 认证失败(Failed to authenticate user)。只读 ls-remote --heads 核对成功,同名远端分支不存在,故未发布、暂不能远程 review。未修改认证配置或借用凭据;待恢复 Git 写入认证后推原分支并验证 SHA。