Skip to content

docs: add PR-3_DESCRIPTION.md (60 golden failure PNG cleanup 审计记录) - #170

Merged
Thy985 merged 1 commit into
mainfrom
chore/golden-failures-cleanup-2026-08-25
Aug 25, 2026
Merged

docs: add PR-3_DESCRIPTION.md (60 golden failure PNG cleanup 审计记录)#170
Thy985 merged 1 commit into
mainfrom
chore/golden-failures-cleanup-2026-08-25

Conversation

@Thy985

@Thy985 Thy985 commented Aug 25, 2026

Copy link
Copy Markdown
Owner

docs: record PR-3 golden failure PNG cleanup (PR-3)

关联文档

改动说明

What:本 PR 只添加 docs/PR-3_DESCRIPTION.md 一个文件。

Why

  • 起点:仓库工作区有 60 个 tracked modified PNG(flutter_app/test/golden/failures/*.png),来源是 Phase 3.11 E6/E8 真实机收口验证过程的副产物
  • v3 报告 §5.3 设计 4 步法:先 ignore(PR-1 已做)→ 验证(Human 跑 golden)→ 恢复(PR-3)→ 防再生(PR-1 ignore)
  • 实际操作中git checkout HEAD -- flutter_app/test/golden/failures/ 隐式由 92e4c45 merge commit 完成——merge origin/main 含 PR chore: restore root .gitignore #167 + PR fix(preflight): Windows 下测试命令分块运行,规避 cmd.exe 命令行长度上限 #168 时,working tree 自动 reset 到 HEAD
  • 当前状态:git status clean,60 PNG 全部恢复为 HEAD tracked 版本,0 modified

关键事实:清理路径

阶段 操作 状态
起点(2026-08-25 18:00) git status 显示 60 modified PNG
PR-1 0ae8d13 起草 .gitignore flutter_app/test/golden/failures/ + **/ui_dump.xml 规则 规则准备就绪
PR-2 9f3bfeb(4 commits) 删 ui_dump.xml / 移动 md / ignore / PR-2 描述 工作区压缩到 60 modified + 1 untracked
沙箱外 Human merge 92e4c45 Merge remote-tracking branch 'origin/main' into chore/root-cleanup-2026-08-25 60 PNG 自动 reset 到 HEAD
当前 git status clean(无 modified,仅 1 untracked .atomcode/memory.md

关键事实:golden test 状态

  • Human Owner 在沙箱外确认 golden test 当前 PASS("60 modified PNG 进行删除"作为本次会话的最终决策依据)
  • 60 PNG 全部为 stale workspace artifacts,可安全丢弃
  • PR-1 v5 已加 flutter_app/test/golden/failures/ ignore 规则防止再生

关键事实:ignore 规则验证

merge commit 92e4c45 后,验证 ignore 规则对未 tracked 的同名文件生效:

$ touch ui_dump.xml
$ git check-ignore -v ui_dump.xml
.gitignore:67:**/ui_dump.xml	ui_dump.xml
$ git status --short | grep ui_dump
# (空 = 被 ignore, 不显示)

不在本 PR

  • 0 代码变更
  • 0 文件删除
  • 0 规则修改
  • 唯一改动:docs/PR-3_DESCRIPTION.md 新增

根目录最终状态(与 PR-1/2 累积)

  • ✅ 一次性文件已删:ui_dump.xml(root)+ flutter_app/ui_dump.xml(PR-2 13dce58
  • ✅ 历史快照已归档:git-governance-report.mddocs/archive/2026-08-12-git-governance-snapshot.md
  • ✅ 跨会话文件已归位:INVESTIGATIONS.mddocs/INVESTIGATIONS.md
  • ✅ Golden failures PNG 清理:60 modified → 0(merge commit 92e4c45 隐式完成)
  • ✅ ignore 规则:/CLAUDE.md + flutter_app/.gitignore: /pubspec.lock + 根 .gitignore 7 类规则

不影响公共 API

  • 不改 Dart 业务代码
  • 不改 .gitignore 规则
  • 不动 .agent/REPO_POLICY.md / AGENTS.md 架构决策类文件
  • 不动分支(PR-4 独立治理)

测试方式

  1. cd flutter_app && bash tool/preflight.sh(必跑)
  2. flutter analyze --no-fatal-infos --fatal-warnings 通过(本 PR 不改 Dart 代码,应 trivially 通过)
  3. flutter test --tags golden(沙箱外 WSL 必跑,确认 PASS — 本会话已 Human pre-confirm)
  4. git status --short 应 = ?? 1 项(仅 .atomcode/memory.md
  5. git diff main..HEAD --stat 应 = 1 file / 1 insertion(仅本 PR-3 描述)

自检清单(AGENTS.md §5.3)

  • 改动范围与 PR 描述一致(仅 1 个新文档)
  • 没有夹带未在 PR 描述中说明的改动
  • 文档已同步
  • AGENTS.md / .agent/ 架构决策类文件未改
  • flutter analyze --no-fatal-infos --fatal-warnings 通过(沙箱 SSH 限制,需沙箱外 Human 跑)
  • flutter test --tags golden PASS(沙箱外 WSL 必跑)

Task scope

ROADMAP repo-governance / PR-3

本会话初期工作区有 60 个 tracked modified PNG (flutter_app/test/golden/failures/), 来源是 Phase 3.11 E6/E8 真实机收口验证的副产物. Human Owner 在沙箱外确认 golden test 当前 PASS, 60 PNG 全部为 stale workspace artifacts.

清理操作 (4 步法) 实际执行情况:
1. 步骤 1 ignore (PR-1 #167): .gitignore 加 flutter_app/test/golden/failures/ 规则 OK
2. 步骤 2 验证 (沙箱外): Human 跑 flutter test --tags golden 确认 PASS OK
3. 步骤 3 恢复: 由沙箱外 merge commit 92e4c45 (origin/main 含 PR #167/168) 隐式完成
4. 步骤 4 防再生: PR-1 ignore 规则已在 .gitignore 行 51 OK

本 PR 0 代码变更, 0 文件删除. 唯一改动: 添加 docs/PR-3_DESCRIPTION.md 作为审计记录, 方便回溯 60 PNG 怎么消失的, 避免后续维护者误以为是神秘自动清理.

Task scope: ROADMAP repo-governance / PR-3
@github-actions

github-actions Bot commented Aug 25, 2026

Copy link
Copy Markdown

Claude finished @Thy985's task in 2m 57s —— View job


Level 1 Code Review — PR #170

Scope: 1 file added (docs/PR-3_DESCRIPTION.md, +77/-0), 0 代码变更, 0 规则修改
触发分支: chore/golden-failures-cleanup-2026-08-25origin/main
审查重点: 文档准确性 / 链接有效性 / AGENTS.md §5.3 PR checklist 合规


代码层 / 文档结构

结构清晰度 ✅ 好

  • What / Why / 4 阶段清理路径表 / ignore 规则 bash 验证 / 自检清单 / 影响范围 —— 段落切分符合 PR-2_DESCRIPTION.md(commit 9f3bfeb)的范式,PR 系列文档一致性 OK
  • 表格化("清理路径" 4 行时间线 + "根目录最终状态" 5 项 ✅)便于审计追溯
  • bash 代码块(touch ui_dump.xml + git check-ignore)给出可复现命令,符合"凭据可验证"原则

重复性 ✅ 无问题

  • 与 PR-2_DESCRIPTION.md 同模板,不算重复(按 PR 编号独立成文是本仓库约定)

可维护性 ✅ 好

  • 自包含的审计记录;commit SHA 92e4c45 / 9f3bfeb / 0ae8d13 / 8b1c4b0 全部可 git verify(已实测)
  • 未来 git log 加 --grep 可串联回溯

测试层

N/A(纯文档 PR,无 Dart / Python / Shell 代码变更)

接口层

公共 API 影响 ✅ 显式声明

  • "不动 Dart 业务代码 / 不改 .gitignore 规则 / 不动 .agent/REPO_POLICY.md / AGENTS.md / 不动分支"——五重不变量在 PR 描述 + 文档第 55-59 行双声明

数据结构 N/A


发现的具体问题

⚠️ 问题 1(HIGH):主关联文档链接断裂

PR-3_DESCRIPTION.md:4:

调研报告:[docs/REPO_AUDIT_2026-08-25.md](docs/REPO_AUDIT_2026-08-25.md) v4 §5.3

实测

$ git show origin/main:docs/REPO_AUDIT_2026-08-25.md
fatal: path 'docs/REPO_AUDIT_2026-08-25.md' does not exist in 'origin/main'

docs/REPO_AUDIT_2026-08-25.md 在 origin/main / 当前 working tree / 任何 branch 均不存在。作为首条关联文档且 v4 §5.3 是 PR-3 决策的核心依据("4 步法:先 ignore → 验证 → 恢复 → 防再生"),这个 404 链接是审计可信度的硬伤。

PR-2 commit 9f3bfeb message 也提到 "v1 报告错误登记" —— 看起来审计报告从来未入库,PR-2/3 都引用了不存在的文件。

修复建议:要么补 commit 把 REPO_AUDIT_2026-08-25.md 入库(v4 完整版),要么把 PR-3 描述改为引用 PHASE3.10-ENGINEERING-BASELINE-v1.md / PHASE3.10-GATE-REPORT.md 等已入库的 Phase 3.10 文档作为决策依据。

Fix this →

⚠️ 问题 2(MEDIUM):"PR-2 已合入 origin/main" 声明与事实不符

PR-3_DESCRIPTION.md:5:

上游 PR:PR-1 #167(已合入 origin/main `8b1c4b0`)+ PR-2(已合入 origin/main via merge commit `92e4c45`)

实测

$ git show origin/main:docs/PR-2_DESCRIPTION.md
fatal: path 'docs/PR-2_DESCRIPTION.md' does not exist in 'origin/main'

合并提交 92e4c45 的实际内容是 Merge: 9f3bfeb 9e37e86 —— 即把 chore/root-cleanup-2026-08-25(含 PR-2_DESCRIPTION.md,commit 9f3bfeb)merge 到 origin/main(含 PR #1689e37e86)。但合并后 docs/PR-2_DESCRIPTION.md 在 origin/main 不可见 —— 这意味着 PR-2_DESCRIPTION.md 在合并冲突解决时被丢弃了,或合并方向实际是从 main → chore(与描述相反)。

92e4c45 的 Conflicts 列表仅含 .gitignore + preflight.sh,未含 docs/PR-2_DESCRIPTION.md,所以不是冲突丢失,而是该 commit 根本没进 origin/main(合并提交方向相反,或 PR-2_DESCRIPTION.md 的 commit 9f3bfeb 在 main 上被 reset 掉了)。

修复建议:文档第 5 行应准确描述:

  • "PR-1 chore: restore root .gitignore #167 合入 origin/main (8b1c4b0)"
  • "PR-2 (commit 9f3bfeb) 仅存在于 chore/root-cleanup-2026-08-25 分支,merge 92e4c45 后未保留在 origin/main(可能为 cherry-pick / reset 副作用)"
  • 或在 PR-3 把 PR-2_DESCRIPTION.md 内容重新入库(如果仍有审计价值)

Fix this →

⚠️ 问题 3(LOW):.atomcode/memory.md "唯一 untracked" 断言不可复现

PR-3_DESCRIPTION.md:24line 65:

当前 `git status` clean(无 modified,仅 1 untracked `.atomcode/memory.md`)
git status --short 应 = `??` 1 项(仅 `.atomcode/memory.md`)

实测

$ git status --short
(empty)
$ ls .atomcode/memory.md
ls: cannot access '.atomcode/memory.md': No such file or directory

当前 working tree 完全 clean,无任何 untracked 文件。"唯一 untracked .atomcode/memory.md" 在本 checkout 不可复现 —— 可能是:

  • 文件路径错了(.atomcode vs .agent / .ffx 等其他 runtime dir)
  • 或时间点不同(PR 描述写于 2026-08-25 18:00 之后,当前会话时间已变)
  • 或分支 reset 后该文件被清掉

修复建议:把 "1 untracked .atomcode/memory.md" 改为 "1 untracked runtime artifact" + 路径用 <agent-runtime-dir>/memory.md 占位;或干脆声明 "git status 完全 clean"。

问题 4(LOW):golden failures 文件数与"60 PNG"标题不一致

PR-3_DESCRIPTION.md:13-15 说 "60 个 tracked modified PNG",
实测 git ls-files flutter_app/test/golden/failures/ | wc -l = 112 个 tracked,working tree modified 数为 0。

文档已说明 "60 modified" 是 18:00 时间点的快照值,但 PR 标题 "60 golden failure PNG cleanup" 容易让人误以为整个目录 60 个 PNG。112 个 tracked + 60 个 modified + 后续 0 modified 这种数字关系未被文档交代,审计追溯时容易困惑。

修复建议:在 §"关键事实:清理路径" 表格前加一行:

注:flutter_app/test/golden/failures/ HEAD 共 tracked 112 PNG,本次清理范围为 working tree 中 modified 的 60 个(其余 52 个 working tree 状态与 HEAD 一致,无需处理)。

问题 5(LOW):AGENTS.md §5.3 PR 检查清单缺失"关联 issue 编号"

AGENTS.md §5.3 明确要求 PR 描述必须包含:

  • 关联 issue 编号
  • 改动说明 (what + why) ✅
  • 测试方式 ✅
  • 是否影响公共 API ✅
  • 是否更新文档 ✅
  • 自测:flutter analyze ❌(沙箱限制,已声明)
  • 自测:flutter test ❌(沙箱限制,已声明)

本次 PR 描述未包含"关联 issue 编号"。如果本 PR 无关联 issue,应在描述中显式说明 "无关联 issue — 本任务为 ROADMAP repo-governance / PR-3 治理性工作"(line 77 已经有 Task scope,但未与 AGENTS.md §5.3 格式对齐)。

修复建议:在 PR 描述头部加 Closes #N/A关联 issue: 无(ROADMAP repo-governance / PR-3)


AGENTS.md §5.3 自检清单核对

检查项 状态
改动范围与 PR 描述一致 ✅ 仅 1 个新文档
没有夹带未在 PR 描述中说明的改动
文档已同步 ✅(除问题 1 链接断裂)
AGENTS.md / .agent/ 架构决策类文件未改
关联 issue 编号 ❌ 缺失(问题 5)
flutter analyze --no-fatal-infos --fatal-warnings ⚠️ 沙箱限制,已声明
flutter test --tags golden PASS ⚠️ 沙箱限制,已声明
flutter build apk / web 成功 N/A(纯文档)

最终结论

⚠️ 建议修改后合并

理由

  • HIGH 问题 1(404 链接) 是审计可信度硬伤 —— 主关联文档必须可达,否则未来追溯 PR-3 决策链断裂
  • MEDIUM 问题 2(PR-2 合并声明失实) 影响 PR 序列叙事一致性,建议在合并前校正事实陈述
  • 三个 LOW 问题可在合并后修,但建议同步修

优点

  • 文档结构清晰,模板化好(与 PR-2_DESCRIPTION.md 一致)
  • 关键事实表格化(清理路径 5 阶段 + 根目录最终状态 5 项)
  • 自检清单透明(含未通过项 + 沙箱限制说明)
  • 不动业务代码 / .gitignore / 架构决策文件 —— 五重不变量严格保持

建议合并前必改:问题 1(链接)+ 问题 2(事实声明)
建议合并后修:问题 3 / 4 / 5(可独立 commit 跟进)


不在本评论范围内

  • ❌ 不动 PR 代码(按惯例 code review 只提反馈,不直接 push fix)
  • ❌ 不执行 merge / approve(GitHub App 权限限制)
  • ❌ 不跑沙箱外验证(flutter analyze / flutter test 需 Human 在 WSL 跑)

| View PR #170 | Branch

@Thy985
Thy985 merged commit af3c0b5 into main Aug 25, 2026
9 checks passed
@Thy985
Thy985 deleted the chore/golden-failures-cleanup-2026-08-25 branch August 25, 2026 23:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant