Skip to content

chore: root cleanup + tracked state corrections (PR-2) - #169

Merged
Thy985 merged 6 commits into
mainfrom
chore/root-cleanup-2026-08-25
Aug 25, 2026
Merged

chore: root cleanup + tracked state corrections (PR-2)#169
Thy985 merged 6 commits into
mainfrom
chore/root-cleanup-2026-08-25

Conversation

@Thy985

@Thy985 Thy985 commented Aug 25, 2026

Copy link
Copy Markdown
Owner

chore: root cleanup + tracked state corrections (PR-2)

关联文档

  • 调研报告:docs/REPO_AUDIT_2026-08-25.md v4(注:该报告 v3 章节有事实错误,实际以本 PR 执行为准)
  • 上游 PR:PR-1 chore/restore-root-gitignore(必须先合入)

改动说明

What:PR-2 由 4 个独立 commit 组成,每个 commit 单一职责。

Why(v5 修正):

  • v1 调研报告 §3.2 / v3 / v4 报告将 3 个根目录 md 文件 + ui_dump.xml 错误地标为 untracked
  • 实际这 4 个文件都是 main HEAD tracked(git ls-files 验证)
  • v1 调研报告 §3.3 还将 3 个项目资产(.claude/settings.json / .github/workflows/openwiki-update.yml / tools/adi/pubspec.lock错误地列在 untracked
  • 实际这 3 个文件从未存在过——v1 报告基于缓存/幻影数据
  • v2 期间按错误前提执行了"伪 move"(mv + git add,没 git rm 原文件,导致 6 个文件并存)—— commit message 撒谎
  • v3 期间我主动 git reset --hard 199a413 回退 v2,重新按正确流程 git rm / git mv 重做

Commits (4 个)

# SHA Commit 作用
1 da6fd90 chore(flutter_app): ignore pubspec.lock App 项目不提交锁文件(AGENTS.md §6.2.3)
2 98df27d chore: ignore /CLAUDE.md 避免与 AGENTS.md 末 OPENWIKI 块双源
3 13dce58 chore: remove 2 ui_dump.xml + relocate 2 root md files 真正的 git rm + git mv,不是伪 move
4 (本 commit) docs: add PR-2_DESCRIPTION 本 PR 描述存档

关键 diff 摘要

文件 变化
flutter_app/.gitignore +3 行(/pubspec.lock App-scoped 规则)
.gitignore(根) +6 行(/CLAUDE.md ignore 规则)
ui_dump.xml git rm(19,152 B)
flutter_app/ui_dump.xml git rm(8,467 B)
INVESTIGATIONS.md git mvdocs/INVESTIGATIONS.md(63% similarity, git rename detection)
git-governance-report.md git mvdocs/archive/2026-08-12-git-governance-snapshot.md(89% similarity)
docs/INVESTIGATIONS.md +13 行(位置 / 定位 / 层级说明)
docs/archive/2026-08-12-git-governance-snapshot.md +4 行(⚠️ 过期标注)

验证

  • git check-ignore -v ui_dump.xml 命中(行 66)—— PR-1 起草的 **/ui_dump.xml 规则
  • git check-ignore -v flutter_app/ui_dump.xml 命中(行 66)
  • git check-ignore -v CLAUDE.md 命中(PR-2 commit 2)
  • git check-ignore -v flutter_app/pubspec.lock 命中(PR-2 commit 1)
  • git fsck --no-dangling 零输出
  • 4 个 commit 都在 chore/root-cleanup-2026-08-25 分支,未推送(沙箱无 push 能力)

根目录最终状态

  • 一次性文件已删:ui_dump.xml + flutter_app/ui_dump.xml
  • 历史快照已归档:git-governance-report.mddocs/archive/2026-08-12-git-governance-snapshot.md
  • 跨会话文件已归位:INVESTIGATIONS.mddocs/INVESTIGATIONS.md
  • ignore 规则新增:/CLAUDE.md + flutter_app/.gitignore: /pubspec.lock

不在本 PR(待后续)

  • PR-3:60 个 tracked modified PNG(golden failures)— 需 Human pre-confirm golden test 当前状态
  • PR-4:分支治理(7 本地 + 5 远程)— 独立 PR,Human 主导
  • PR-5:AGENTS.md §14.1 顶层目录清单同步
  • 后续 PR.atomcode/memory.md(1 个 untracked)— 评估 ignore 或 add

v1 报告错误登记

本 PR 修正了 v1 调研报告的 2 处事实错误:

  1. 3 个根目录 md + ui_dump.xml + flutter_app/ui_dump.xml 实际都是 tracked,不是 untracked
  2. 3 个项目资产(.claude/settings.json / openwiki-update.yml / tools/adi/pubspec.lock)从未存在

不影响公共 API

  • 不改 Dart 业务代码
  • 不动 .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-2 不改 Dart 代码,应 trivially 通过)
  3. git check-ignore -v ui_dump.xml flutter_app/ui_dump.xml CLAUDE.md flutter_app/pubspec.lock 全部命中
  4. git fsck --no-dangling 零输出
  5. git log --oneline chore/root-cleanup-2026-08-25 ^chore/restore-root-gitignore 应 = 4 commits

自检清单(AGENTS.md §5.3)

  • 改动范围与 PR 描述一致(4 个 commit,每个单一职责)
  • 没有夹带未在 PR 描述中说明的改动
  • commit message 真实反映改动(commit 3 是真正的 git rm + git mv,不是伪 move)
  • 文档已同步
  • AGENTS.md / .agent/ 架构决策类文件未改
  • flutter analyze --no-fatal-infos --fatal-warnings 通过(沙箱 SSH 限制,需沙箱外 Human 跑)
  • flutter test 通过(同上)

Task scope

ROADMAP repo-governance / PR-2

Thy985 added 6 commits August 25, 2026 21:21
v5 (reset --hard 回退 v1 commit 后重做):

本仓库根 .gitignore HEAD 即为空 (blob e69de29), 自始至终没有 ignore 规则.
v1 commit (fd1795f) 起草了 7 类规则, 但漏判 ui_dump.xml 路径——v3/v4 报告错误地
将 /INVESTIGATIONS.md /git-governance-report.md /ui_dump.xml 标为 untracked, 实际都是
main HEAD tracked. v5 (本 commit) 重新起草, 加上 **/ui_dump.xml 规则.

7 类规则 (PR-1 完成):
1. Flutter / Dart 构建产物 (12 条) - flutter create 模板
2. Android / iOS generated (4 条) - AGP / CocoaPods 标准
3. Python 工具链 (3 条) - ffx-cli 等
4. Agent / runtime artifacts (9 条) - REPO_POLICY.md §1 显式
5. Local / generated logs (3 条) - 避免 *.log 过宽
6. Flutter test artifacts (1 条) - Phase 3.11 E6/E8 防再生
7. **/ui_dump.xml (root + flutter_app/ 共同覆盖) - Android UI dump 防再生

已知限制:
- ui_dump.xml 规则在 PR-1 阶段无法用 git check-ignore 验证 (tracked 文件
  hide ignore 状态), 需 PR-2 git rm 后才能验证
- flutter_app/pubspec.lock 子目录 .gitignore 屏蔽根级规则, 留给 PR-2 处理

未在本 PR 处理 (PR-2):
- /INVESTIGATIONS.md (tracked) -> docs/INVESTIGATIONS.md
- /git-governance-report.md (tracked) -> docs/archive/2026-08-12-git-governance-snapshot.md
- /ui_dump.xml (tracked) -> git rm
- flutter_app/ui_dump.xml (tracked) -> git rm
- .claude/settings.json / .github/workflows/openwiki-update.yml / tools/adi/pubspec.lock

Task scope: ROADMAP repo-governance / PR-1
AGENTS.md §6.2.3 明确: App 项目不提交 pubspec.lock, 库项目需要提交.

根 .gitignore 的 flutter_app/pubspec.lock 规则被 flutter_app/.gitignore 屏蔽
(git 标准行为: 子目录 .gitignore 优先解析, 根级规则不参与匹配).

在 flutter_app/.gitignore 加 /pubspec.lock (路径以 / 开头限定到当前目录).

效果:
- flutter_app/pubspec.lock -> ignored (App, 不入库)
- tools/adi/pubspec.lock -> NOT ignored (Dart CLI 库项目, 需 commit)

Task scope: ROADMAP repo-governance / PR-2
PR-1 起草 .gitignore 时漏了 /CLAUDE.md 规则. PR-2 补.

CLAUDE.md (7 行) 与 AGENTS.md 末尾 OPENWIKI 块内容同源 (GitHub Action 注入),
ignore 后: OpenWiki Action 仍能在 AGENTS.md 末追加, CLAUDE.md 不再被追踪为双源.

本次只 ignore 当前 untracked 的根目录 CLAUDE.md. 工作区 untracked 数 3 → 2.

Task scope: ROADMAP repo-governance / PR-2
4 个 root cleanup 操作一次完成 (因为都涉及同区域根目录治理):

**删除** (2 个):
- ui_dump.xml: Android uiautomator dump, 19,152 B, 一次性. v3/v4 报告误判为 untracked,
  实际是 main HEAD tracked (cd37248 blob). PR-1 已加 **/ui_dump.xml 规则防止再生.
- flutter_app/ui_dump.xml: 同上, 8,467 B, main HEAD tracked (be8919d blob). 同一规则覆盖.

**移动** (2 个, git rename detection 确认):
- INVESTIGATIONS.md -> docs/INVESTIGATIONS.md
  - 文件头新增 8 行说明: 位置 / 定位 / 层级关系 / 临时状态归属
- git-governance-report.md -> docs/archive/2026-08-12-git-governance-snapshot.md
  - 文件头新增 4 行标注: 当前位置 / 迁移时间 / ⚠️ 过期 / 原执行信息

注: docs/archive/ 目录已存在, 含 PHASE1_TEST_PLAN.md / REFACTOR_DESIGN.md.

Task scope: ROADMAP repo-governance / PR-2
PR-2 描述文档, 含:

1. PR 改动说明 (4 个 commit, 真实状态)
2. v1 报告错误登记: 3 个 root md + ui_dump.xml 实际 tracked, 3 个项目资产实际不存在
3. v2 期间 commit 4b/4c 伪 move 问题已通过 v3 reset --hard 199a413 + git rm/mv 重做修复
4. 沙箱外 Human 必跑验证: flutter analyze / flutter test / git check-ignore / git fsck

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

github-actions Bot commented Aug 25, 2026

Copy link
Copy Markdown

Claude finished @Thy985's task in 3m 5s —— View job


Code Review — PR #169 chore: root cleanup + tracked state corrections (PR-2)

Verdict: ⚠️ 建议修改后合并 — 4 个 commit hygiene 干净、rename 检测为真 rename、ignore 规则覆盖完整,但 PR-2 的 diff 实际混入了已合入 main 的 PR-1 部分内容(0ae8d13 cherry-pick),需要先 rebase 收口。


✅ Commit hygiene(4 个 commit 单一职责)

Commit 作用 评估
da6fd90 chore(flutter_app): ignore pubspec.lock ✅ App-scoped,符合 AGENTS.md §6.2.3
98df27d chore: ignore /CLAUDE.md ✅ 解决 OPENWIKI 双源
13dce58 chore: remove 2 ui_dump.xml + relocate 2 root md ✅ 真 rm + 真 mv(与 v2 伪 move 的"撒谎 commit"明确区分)
9f3bfeb docs: add PR-2_DESCRIPTION.md ✅ 本 PR 描述存档

每个 commit 改动范围与 commit message 一致,未夹带未描述的修改。

✅ Rename detection(关键修复点)

git diff --name-status -M origin/main..HEAD 验证:

R063  INVESTIGATIONS.md                       → docs/INVESTIGATIONS.md
R089  git-governance-report.md                → docs/archive/2026-08-12-git-governance-snapshot.md
D     ui_dump.xml
D     flutter_app/ui_dump.xml

真 rename(63% / 89% similarity 触发 git rename 检测),不是 v2 报告里"mv + git add 没 git rm"的伪 move。commit message 与实际改动一致。

✅ Ignore 规则覆盖检查

文件 规则 位置 命中?
CLAUDE.md(根) /CLAUDE.md .gitignore
ui_dump.xml(根) **/ui_dump.xml .gitignore 行 67
flutter_app/ui_dump.xml **/ui_dump.xml .gitignore(glob 跨目录)
flutter_app/pubspec.lock /pubspec.lock flutter_app/.gitignore(App-scoped)

tools/adi/pubspec.lock 不受影响(按 AGENTS.md §6.2.3,Library 项目保留锁文件)—— 这点在 PR-2 commit 1 的注释中有显式声明,规则粒度正确。

✅ 不动架构决策类文件

  • AGENTS.md 未改动
  • .agent/REPO_POLICY.md 未改动
  • .github/workflows/ 未改动
  • 没有改 Dart 业务代码

符合"PR-2 不影响公共 API"声明。


⚠️ 需要 Human 处理:分支 diff 混入 PR-1 内容

问题:当前 diff vs origin/main 包含 6 个 commit:

92e4c45 Merge remote-tracking branch 'origin/main' into chore/root-cleanup-2026-08-25
9f3bfeb docs: add PR-2_DESCRIPTION.md
13dce58 chore: remove 2 ui_dump.xml + relocate 2 root md files
98df27d chore: ignore /CLAUDE.md
da6fd90 chore(flutter_app): ignore pubspec.lock
0ae8d13 chore: restore root .gitignore (从 0 起草, 7 类规则 + ui_dump.xml 防再生)  ← PR-1 内容

PR-1 已作为 #167 合入 main(commit 8b1c4b0 "7 类规则收敛")。但分支上的 0ae8d13 是带 **/ui_dump.xml 防再生规则的版本,与 main 的 8b1c4b0.gitignore 内容上分歧。这也是为什么 .gitignore 还出现在 PR-2 的文件清单里(+15 行,包含 /CLAUDE.md + **/ui_dump.xml)—— 整个 PR-1 的 .gitignore 变动被作为 PR-2 diff 一部分呈现。

风险

  1. merge 后 main HEAD 的 .gitignore 等于 8b1c4b0 + 0ae8d13 的并集(如果三方合并无冲突),与 PR-1 + PR-2 的"分段叙述"不完全对齐 —— 历史溯源会读到 8b1c4b0 + 0ae8d13 + 98df27d 三次改动根部 .gitignore
  2. PR-2 commit message 与 description 暗示"4 个 commit",但有效增量其实分布在 5 个 commit 上

建议(任选其一)

  • [推荐] squash 0ae8d1398df27d 然后 rebase 到 origin/main 之后,让 PR-2 的 diff 只包含 4 个 PR-2 自有 commit
  • 在 PR description 中显式说明:PR-2 在分支内重放 PR-1 的 .gitignore,并交叉引用 chore: restore root .gitignore #167 解释为何不直接 rebase

⚠️ 文件头元数据需复核

docs/INVESTIGATIONS.md 头部新增了 4 段元数据(位置/定位/层级),但没有改动主文档模板(格式/活跃/已完成/notes 章节)—— diff 显示 +13/-0 是纯增量。

docs/archive/2026-08-12-git-governance-snapshot.md 新增 +5/-2:-2 来源可能是把原文里说"待合并"的临时表述调整成"⚠️ 过期",需核对是否破坏了 2026-08-12 快照的原始信号(建议保留原时间锚点的字面表述,仅追加顶部状态横幅)。


🧪 验证(沙箱外 Human 必跑)

PR-2 自检清单里这两个 ⚠️ 项仍待沙箱外验证:

  • cd flutter_app && bash tool/preflight.sh
  • flutter analyze --no-fatal-infos --fatal-warnings(不改 Dart 代码,理论 trivially pass)
  • flutter test(同上)
  • git check-ignore -v ui_dump.xml flutter_app/ui_dump.xml CLAUDE.md flutter_app/pubspec.lock 全部命中
  • git fsck --no-dangling 零输出

📌 范围警示(不在本 PR,正确处理)

  • PR-3:60 tracked modified PNG(golden failures)—— 需 Human pre-confirm golden test 当前状态
  • PR-4:分支治理(7 本地 + 5 远程)
  • PR-5:AGENTS.md §14.1 顶层目录清单同步
  • 后续:.atomcode/memory.md(1 个 untracked)—— 评估 ignore or add

PR-2 严格按 description 自限范围,未夹带。


最终结论

⚠️ 建议修改后合并

代码 Review 层面(commit hygiene / rename 真假 / ignore 覆盖 / 不动架构文件):全部 ✅。
流程层面(分支 diff 含 PR-1 内容与 description 4 commit 表述不一致):需要一次 rebase squash 收口,否则 git log 回溯时会有叙事前置的混乱。

核心修改是 非破坏性 + 范围清晰 + 修正 v1 报告错误的仓库治理收口,本身没有引入 bug 风险。建议 Human Owner 处理 rebase 后合入。

Branch: chore/root-cleanup-2026-08-25

@Thy985
Thy985 merged commit e3f8ec9 into main Aug 25, 2026
9 checks passed
@Thy985
Thy985 deleted the chore/root-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