Files
Jyotisha/docs/tasks/PROGRESS-owner-case-purge-20260919.md
T
jesse-uxandClaude Code 90309bc8b6 fix(privacy): remove answer-key pattern collision
Apply owner-case-purge fix2 P0/F3 corrections.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-20 00:55:20 +08:00

12 KiB
Raw Blame History

上游私人案例与本机路径清理 · 执行记录

基线与范围

  • 日期: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-20260919detached 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 交付 独立定向复验通过;全量存在基线/环境缺口,删除测试清单写入权限阻塞交付;未提交、未推送、未部署

补充提案: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,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 退出 0lint 0 error / 120 warning,与基线一致。
  • 补充前端定向:consultation-route-service 17/17、agent-observability 12/12、personal-report-contract 27/27Skill 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/660 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 的换行回归已修复为 LFdiff --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。