codex@macbookpro
·
2026-04-01
T-S070.md
1# Task T-S070:移除 conductor 内的 stagit 仓库静态页能力
2
3## 状态
4
5- 当前状态:`已完成`
6- 规模预估:`M`
7- 依赖任务:无
8- 建议执行者:`Codex`
9
10## 直接给对话的提示词
11
12读 `/Users/george/code/baa-conductor/tasks/T-S070.md` 任务文档,完成开发任务。
13
14如需补背景,再读:
15
16- `/Users/george/code/baa-conductor/tasks/TASK_OVERVIEW.md`
17- `/Users/george/code/baa-conductor/plans/STATUS_SUMMARY.md`
18- `/Users/george/code/baa-conductor/tasks/T-S050.md`
19
20## 当前基线
21
22- 仓库:`/Users/george/code/baa-conductor`
23- 分支基线:`main`
24- 提交:`4aea341`
25
26## 分支与 worktree(强制)
27
28- 分支名:`feat/remove-stagit-repo-route`
29- worktree 路径:`/Users/george/code/baa-conductor-remove-stagit-repo-route`
30
31开工步骤:
32
331. `cd /Users/george/code/baa-conductor`
342. `git worktree add ../baa-conductor-remove-stagit-repo-route -b feat/remove-stagit-repo-route main`
353. `cd ../baa-conductor-remove-stagit-repo-route`
364. 在这个 worktree 目录里开发,不要回到主仓库目录
37
38完成后提交与推送:
39
401. 在 worktree 里提交所有变更(包括更新后的任务文档)
412. `git push -u origin feat/remove-stagit-repo-route`
42
43合并步骤(由合并者执行):
44
451. `cd /Users/george/code/baa-conductor`
462. `git fetch origin`
473. `git merge origin/feat/remove-stagit-repo-route`
484. `git push`
495. `git worktree remove ../baa-conductor-remove-stagit-repo-route`
50
51合并冲突处理:
52
531. 如果 `git merge` 报冲突,先 `git diff` 查看冲突文件
542. 手动解决冲突后 `git add` 冲突文件
553. `git merge --continue` 完成合并
564. 不要用 `git merge --abort` 然后 force 覆盖
57
58## 目标
59
60删除 `conductor` 仓库内的 stagit 生成与 `/artifact/repo/*` 静态服务能力,不做兼容跳转。
61
62## 背景
63
64静态 repo 页面功能已经移到 `baa-pgit` 仓库,这个仓库内保留的 stagit 路由、脚本和测试已经不再属于当前主线。继续保留只会让 `conductor` 同时承担两套 repo 浏览方案,增加维护成本和文档歧义。
65
66当前实现边界很清楚:
67
68- `apps/conductor-daemon/src/local-api.ts` 内有 `/artifact/repo/:repo_name/*` 路由与 handler
69- `scripts/git-snapshot.sh` 负责调用 stagit 生成静态页
70- `apps/conductor-daemon/src/index.test.js` 有对应 repo 路由测试
71- 多份文档仍把 stagit 仓库浏览写成当前能力
72
73本任务要求直接删除,不保留兼容跳转。
74
75## 涉及仓库
76
77- `/Users/george/code/baa-conductor`
78
79## 范围
80
81- 删除 conductor 内的 stagit repo 静态页路由与读取逻辑
82- 删除 stagit 生成脚本和对应测试
83- 更新总览、状态、实现说明文档,移除“当前主线仍提供 /artifact/repo/*”的口径
84
85## 路径约束
86
87- 不在本任务里接入 `baa-pgit` 跳转或新域名代理
88- 不改动普通 `/artifact/:artifact_scope/:artifact_file` 读路径
89- 不改动 `artifact-db`、D1 同步、recent sessions 或其他 artifact 主链
90- 历史任务卡和 archive 文档可以保留历史描述,不要求批量清洗
91
92## 推荐实现边界
93
94建议删除或收缩:
95
96- `service.artifact.repo` 路由与 `handleArtifactRepoRead`
97- `scripts/git-snapshot.sh`
98- repo 静态页测试
99
100建议更新:
101
102- `/Users/george/code/baa-conductor/tasks/TASK_OVERVIEW.md`
103- `/Users/george/code/baa-conductor/plans/STATUS_SUMMARY.md`
104- 如有必要,更新主 README 或相关 API/plan 文档
105
106## 允许修改的目录
107
108- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/`
109- `/Users/george/code/baa-conductor/scripts/`
110- `/Users/george/code/baa-conductor/tasks/`
111- `/Users/george/code/baa-conductor/plans/`
112- `/Users/george/code/baa-conductor/docs/`
113
114## 尽量不要修改
115
116- `/Users/george/code/baa-conductor/packages/`
117- `/Users/george/code/baa-conductor/plugins/`
118- `/Users/george/code/baa-conductor/ops/sql/`
119
120## 必须完成
121
122### 1. 删除 repo 静态页路由
123
124- 删除 `/artifact/repo/:repo_name/*` 路由注册
125- 删除对应 handler、content-type 辅助逻辑和只为 repo 静态页服务的辅助代码
126- 确保普通 `/artifact/` 路由不受影响
127
128### 2. 删除 stagit 生成脚本与测试
129
130- 删除 `scripts/git-snapshot.sh`
131- 删除或改写只覆盖 repo 静态页的测试
132- 确保删除后测试套仍通过
133
134### 3. 更新文档口径
135
136- 从总览和状态文档中移除“stagit 仓库浏览是当前能力”的描述
137- 明确说明 repo 静态页能力已迁出当前仓库
138- 更新任务文档状态与执行记录
139
140## 需要特别注意
141
142- 本任务是功能删除,不是兼容迁移;不要额外加入跳转逻辑
143- 不要误删普通 artifact 静态读接口
144- 不要顺手改动 `baa-pgit` 或其他仓库
145- 所有开发必须在 worktree 中进行,不要在主仓库目录修改代码
146
147## 验收标准
148
149- `conductor` 代码中不再保留 `/artifact/repo/:repo_name/*` 路由
150- 仓库内不再保留 `scripts/git-snapshot.sh`
151- 文档不再把 stagit 仓库浏览写成当前主线能力
152- 相关测试通过,且普通 artifact 路由不回退
153
154## 推荐验证命令
155
156- `pnpm -C /Users/george/code/baa-conductor/apps/conductor-daemon test`
157- `pnpm -C /Users/george/code/baa-conductor/apps/conductor-daemon build`
158- `rg -n "artifact/repo|stagit|git-snapshot\\.sh" /Users/george/code/baa-conductor`
159
160## 执行记录
161
162> 以下内容由执行任务的 AI 填写,创建任务时留空。
163
164### 开始执行
165
166- 执行者:`Codex`
167- 开始时间:`2026-04-01 19:57:00 CST`
168- 状态变更:`待开始` -> `进行中`
169
170### 完成摘要
171
172- 完成时间:`2026-04-01 20:04:52 CST`
173- 状态变更:`进行中` -> `已完成`
174- 修改了哪些文件:
175 - `apps/conductor-daemon/src/local-api.ts`
176 - `apps/conductor-daemon/src/index.test.js`
177 - `scripts/git-snapshot.sh`
178 - `tasks/TASK_OVERVIEW.md`
179 - `plans/STATUS_SUMMARY.md`
180 - `plans/ARTIFACT_STATIC_SERVICE.md`
181 - `PROGRESS/2026-03-29-current-code-progress.md`
182 - `tasks/T-S070.md`
183- 核心实现思路:
184 - 直接删除 `service.artifact.repo` 路由、`handleArtifactRepoRead` 和 repo 静态页专用 content-type/路径校验逻辑,不保留跳转或兼容层
185 - 把 repo 静态页测试改成负向断言,确认 `/artifact/repo/*` 现在返回 `404`,同时保留普通 artifact 路径回归覆盖
186 - 删除 `scripts/git-snapshot.sh`,并把当前文档口径统一改成“repo 静态页能力已迁到 `baa-pgit`”
187- 跑了哪些测试:
188 - `pnpm -C /Users/george/code/baa-conductor-remove-stagit-repo-route/apps/conductor-daemon test`
189 - `pnpm -C /Users/george/code/baa-conductor-remove-stagit-repo-route/apps/conductor-daemon build`
190 - `rg -n --glob '!tasks/archive/**' --glob '!plans/archive/**' --glob '!bugs/archive/**' --glob '!node_modules/**' "artifact/repo|stagit|git-snapshot\\.sh" /Users/george/code/baa-conductor-remove-stagit-repo-route`
191
192### 执行过程中遇到的问题
193
194- 主仓库 worktree 里已有未提交的文档改动,因此先确认 `main` 与 `origin/main` 一致,再从 `main` 新建独立 worktree,避免污染主仓库工作区
195- 新建 worktree 默认没有 `node_modules`,首次执行 `pnpm test` 时 `pnpm exec tsc` 缺失;在 worktree 根目录执行一次 `pnpm install` 后恢复正常
196
197### 剩余风险
198
199- 历史任务卡、archive 文档和历史需求文档仍保留 stagit 描述;这是按任务约束刻意保留的历史记录,不代表当前主线能力