baa-conductor


commit
8a4a3ee
parent
9674c30
author
codex@macbookpro
date
2026-04-02 20:26:37 +0800 CST
docs: add cleanup tasks for stagit and watchdog
4 files changed,  +384, -14
Raw patch view.
  1diff --git a/plans/STATUS_SUMMARY.md b/plans/STATUS_SUMMARY.md
  2index 20577764667246251fc5447181580579a3e66ca8..523052b961d34a775874bf3a3919790b703d3c2f 100644
  3--- a/plans/STATUS_SUMMARY.md
  4+++ b/plans/STATUS_SUMMARY.md
  5@@ -17,7 +17,7 @@
  6   - 本地 SQLite + D1 异步同步
  7   - `/artifact/` HTTP serve
  8   - recent sessions 入口
  9-  - stagit 仓库浏览
 10+  - 历史上曾包含 stagit 仓库浏览;当前已拆出 `T-S073` 准备从本仓库删除
 11 - 插件诊断日志链路已经完成:
 12   - 插件 → WS → conductor → `logs/baa-plugin/YYYY-MM-DD.jsonl`
 13   - `browser.final_message` ingest → `logs/baa-ingest/YYYY-MM-DD.jsonl`
 14@@ -72,14 +72,21 @@
 15 - `OPT-002`、`OPT-007` 已分别随 `889f746`、`b8d69c8` 合入 `main`,旧汇总中的 open 状态已改正
 16 - `T-BUG-029` / `T-BUG-031` 的任务卡已完成,但旧汇总文档仍把它们写成 pending manual verification;现统一改为“建议补做浏览器复核”
 17 - Artifact 静态服务已经完成,不再把它写成“下一阶段主线”
 18+- repo 静态页能力已迁到 `baa-pgit`;当前仓库内残留的 stagit 路由与脚本已拆为 `T-S073`
 19 
 20 ## 当前最高优先级
 21 
 22 **当前下一波任务:**
 23 
 24-当前没有待开始任务卡,也没有 open bug / open opt。
 25+当前最高优先级任务:
 26 
 27-如继续推进,建议先基于新需求、代码审查结果或低优先级看门狗重写方案重新拆任务。
 28+- [`../tasks/T-S073.md`](../tasks/T-S073.md):移除 conductor 内的 stagit 仓库静态页能力
 29+- [`../tasks/T-S074.md`](../tasks/T-S074.md):删除旧版 watchdog 与 Safari a11y 续命方案
 30+- Web UI 主线 `T-S070 -> T-S071 -> T-S072` 保持下一顺位
 31+
 32+其余没有 open bug / open opt。
 33+
 34+如继续推进,建议先完成 `T-S073`,再完成 `T-S074`,之后回到 Web UI 主线,再根据新需求或代码审查结果继续拆任务。
 35 
 36 **并行优化项:**
 37 
 38@@ -139,4 +146,4 @@ Phase 1(浏览器主链)、Artifact 静态服务,以及 timed-jobs + 续
 39 - recent relay cache 是有限窗口;极老 replay 超出窗口后,仍会落回 conductor dedupe
 40 - `status-api` 继续保留为显式 opt-in 兼容层,不是当前删除重点
 41 - 远端 `baa-conductor-artifact` 已在 `2026-04-01` 应用 [`../packages/d1-client/src/d1-setup.sql`](../packages/d1-client/src/d1-setup.sql);后续如新建或重置 D1 环境,仍需执行同一 schema 初始化脚本
 42-- 看门狗方向如果继续推进,应从最新 `main` 重写,不直接复用历史分支或旧状态机实现
 43+- 当前仓库内的旧 watchdog / a11y 续命方案计划由 `T-S074` 直接删除
 44diff --git a/tasks/T-S073.md b/tasks/T-S073.md
 45new file mode 100644
 46index 0000000000000000000000000000000000000000..41f9c32868d0e4bd8113a14da997a5d1e2d8fb3a
 47--- /dev/null
 48+++ b/tasks/T-S073.md
 49@@ -0,0 +1,184 @@
 50+# Task T-S073:移除 conductor 内的 stagit 仓库静态页能力
 51+
 52+## 状态
 53+
 54+- 当前状态:`待开始`
 55+- 规模预估:`M`
 56+- 依赖任务:无
 57+- 建议执行者:`Codex`
 58+
 59+## 直接给对话的提示词
 60+
 61+读 `/Users/george/code/baa-conductor/tasks/T-S073.md` 任务文档,完成开发任务。
 62+
 63+如需补背景,再读:
 64+
 65+- `/Users/george/code/baa-conductor/tasks/TASK_OVERVIEW.md`
 66+- `/Users/george/code/baa-conductor/plans/STATUS_SUMMARY.md`
 67+- `/Users/george/code/baa-conductor/tasks/T-S050.md`
 68+
 69+## 当前基线
 70+
 71+- 仓库:`/Users/george/code/baa-conductor`
 72+- 分支基线:`main`
 73+- 提交:`9674c30`
 74+
 75+## 分支与 worktree(强制)
 76+
 77+- 分支名:`feat/remove-stagit-repo-route`
 78+- worktree 路径:`/Users/george/code/baa-conductor-remove-stagit-repo-route`
 79+
 80+开工步骤:
 81+
 82+1. `cd /Users/george/code/baa-conductor`
 83+2. `git worktree add ../baa-conductor-remove-stagit-repo-route -b feat/remove-stagit-repo-route main`
 84+3. `cd ../baa-conductor-remove-stagit-repo-route`
 85+4. 在这个 worktree 目录里开发,不要回到主仓库目录
 86+
 87+完成后提交与推送:
 88+
 89+1. 在 worktree 里提交所有变更(包括更新后的任务文档)
 90+2. `git push -u origin feat/remove-stagit-repo-route`
 91+
 92+合并步骤(由合并者执行):
 93+
 94+1. `cd /Users/george/code/baa-conductor`
 95+2. `git fetch origin`
 96+3. `git merge origin/feat/remove-stagit-repo-route`
 97+4. `git push`
 98+5. `git worktree remove ../baa-conductor-remove-stagit-repo-route`
 99+
100+合并冲突处理:
101+
102+1. 如果 `git merge` 报冲突,先 `git diff` 查看冲突文件
103+2. 手动解决冲突后 `git add` 冲突文件
104+3. `git merge --continue` 完成合并
105+4. 不要用 `git merge --abort` 然后 force 覆盖
106+
107+## 目标
108+
109+删除 `conductor` 仓库内的 stagit 生成与 `/artifact/repo/*` 静态服务能力,不做兼容跳转。
110+
111+## 背景
112+
113+静态 repo 页面功能已经移到 `baa-pgit` 仓库,这个仓库内保留的 stagit 路由、脚本和测试已经不再属于当前主线。继续保留只会让 `conductor` 同时承担两套 repo 浏览方案,增加维护成本和文档歧义。
114+
115+当前实现边界很清楚:
116+
117+- `apps/conductor-daemon/src/local-api.ts` 内有 `/artifact/repo/:repo_name/*` 路由与 handler
118+- `scripts/git-snapshot.sh` 负责调用 stagit 生成静态页
119+- `apps/conductor-daemon/src/index.test.js` 有对应 repo 路由测试
120+- 多份文档仍把 stagit 仓库浏览写成当前能力
121+
122+本任务要求直接删除,不保留兼容跳转。
123+
124+## 涉及仓库
125+
126+- `/Users/george/code/baa-conductor`
127+
128+## 范围
129+
130+- 删除 conductor 内的 stagit repo 静态页路由与读取逻辑
131+- 删除 stagit 生成脚本和对应测试
132+- 更新总览、状态、实现说明文档,移除“当前主线仍提供 /artifact/repo/*”的口径
133+
134+## 路径约束
135+
136+- 不在本任务里接入 `baa-pgit` 跳转或新域名代理
137+- 不改动普通 `/artifact/:artifact_scope/:artifact_file` 读路径
138+- 不改动 `artifact-db`、D1 同步、recent sessions 或其他 artifact 主链
139+- 历史任务卡和 archive 文档可以保留历史描述,不要求批量清洗
140+
141+## 推荐实现边界
142+
143+建议删除或收缩:
144+
145+- `service.artifact.repo` 路由与 `handleArtifactRepoRead`
146+- `scripts/git-snapshot.sh`
147+- repo 静态页测试
148+
149+建议更新:
150+
151+- `/Users/george/code/baa-conductor/tasks/TASK_OVERVIEW.md`
152+- `/Users/george/code/baa-conductor/plans/STATUS_SUMMARY.md`
153+- 如有必要,更新主 README 或相关 API/plan 文档
154+
155+## 允许修改的目录
156+
157+- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/`
158+- `/Users/george/code/baa-conductor/scripts/`
159+- `/Users/george/code/baa-conductor/tasks/`
160+- `/Users/george/code/baa-conductor/plans/`
161+- `/Users/george/code/baa-conductor/docs/`
162+
163+## 尽量不要修改
164+
165+- `/Users/george/code/baa-conductor/packages/`
166+- `/Users/george/code/baa-conductor/plugins/`
167+- `/Users/george/code/baa-conductor/ops/sql/`
168+
169+## 必须完成
170+
171+### 1. 删除 repo 静态页路由
172+
173+- 删除 `/artifact/repo/:repo_name/*` 路由注册
174+- 删除对应 handler、content-type 辅助逻辑和只为 repo 静态页服务的辅助代码
175+- 确保普通 `/artifact/` 路由不受影响
176+
177+### 2. 删除 stagit 生成脚本与测试
178+
179+- 删除 `scripts/git-snapshot.sh`
180+- 删除或改写只覆盖 repo 静态页的测试
181+- 确保删除后测试套仍通过
182+
183+### 3. 更新文档口径
184+
185+- 从总览和状态文档中移除“stagit 仓库浏览是当前能力”的描述
186+- 明确说明 repo 静态页能力已迁出当前仓库
187+- 更新任务文档状态与执行记录
188+
189+## 需要特别注意
190+
191+- 本任务是功能删除,不是兼容迁移;不要额外加入跳转逻辑
192+- 不要误删普通 artifact 静态读接口
193+- 不要顺手改动 `baa-pgit` 或其他仓库
194+- 所有开发必须在 worktree 中进行,不要在主仓库目录修改代码
195+
196+## 验收标准
197+
198+- `conductor` 代码中不再保留 `/artifact/repo/:repo_name/*` 路由
199+- 仓库内不再保留 `scripts/git-snapshot.sh`
200+- 文档不再把 stagit 仓库浏览写成当前主线能力
201+- 相关测试通过,且普通 artifact 路由不回退
202+
203+## 推荐验证命令
204+
205+- `pnpm -C /Users/george/code/baa-conductor/apps/conductor-daemon test`
206+- `pnpm -C /Users/george/code/baa-conductor/apps/conductor-daemon build`
207+- `rg -n "artifact/repo|stagit|git-snapshot\\.sh" /Users/george/code/baa-conductor`
208+
209+## 执行记录
210+
211+> 以下内容由执行任务的 AI 填写,创建任务时留空。
212+
213+### 开始执行
214+
215+- 执行者:
216+- 开始时间:
217+- 状态变更:
218+
219+### 完成摘要
220+
221+- 完成时间:
222+- 状态变更:
223+- 修改了哪些文件:
224+- 核心实现思路:
225+- 跑了哪些测试:
226+
227+### 执行过程中遇到的问题
228+
229+- 
230+
231+### 剩余风险
232+
233+- 
234diff --git a/tasks/T-S074.md b/tasks/T-S074.md
235new file mode 100644
236index 0000000000000000000000000000000000000000..1af586cbb75c5696d68400f207275940f030064e
237--- /dev/null
238+++ b/tasks/T-S074.md
239@@ -0,0 +1,173 @@
240+# Task T-S074:删除旧版 watchdog 与 Safari a11y 续命方案
241+
242+## 状态
243+
244+- 当前状态:`待开始`
245+- 规模预估:`S`
246+- 依赖任务:无
247+- 建议执行者:`Codex`
248+
249+## 直接给对话的提示词
250+
251+读 `/Users/george/code/baa-conductor/tasks/T-S074.md` 任务文档,完成开发任务。
252+
253+如需补背景,再读:
254+
255+- `/Users/george/code/baa-conductor/tasks/TASK_OVERVIEW.md`
256+- `/Users/george/code/baa-conductor/plans/STATUS_SUMMARY.md`
257+- `/Users/george/code/baa-conductor/plans/WATCHDOG_LOGGING_ENHANCEMENT.md`
258+- `/Users/george/code/baa-conductor/plans/WATCHDOG_V2_CONDUCTOR_INTEGRATED.md`
259+
260+## 当前基线
261+
262+- 仓库:`/Users/george/code/baa-conductor`
263+- 分支基线:`main`
264+- 提交:`9674c30`
265+
266+## 分支与 worktree(强制)
267+
268+- 分支名:`feat/remove-watchdog-a11y`
269+- worktree 路径:`/Users/george/code/baa-conductor-remove-watchdog-a11y`
270+
271+开工步骤:
272+
273+1. `cd /Users/george/code/baa-conductor`
274+2. `git worktree add ../baa-conductor-remove-watchdog-a11y -b feat/remove-watchdog-a11y main`
275+3. `cd ../baa-conductor-remove-watchdog-a11y`
276+4. 在这个 worktree 目录里开发,不要回到主仓库目录
277+
278+完成后提交与推送:
279+
280+1. 在 worktree 里提交所有变更(包括更新后的任务文档)
281+2. `git push -u origin feat/remove-watchdog-a11y`
282+
283+合并步骤(由合并者执行):
284+
285+1. `cd /Users/george/code/baa-conductor`
286+2. `git fetch origin`
287+3. `git merge origin/feat/remove-watchdog-a11y`
288+4. `git push`
289+5. `git worktree remove ../baa-conductor-remove-watchdog-a11y`
290+
291+## 目标
292+
293+删除当前仓库内旧版 watchdog 与 Safari a11y 续命方案,不保留代码入口,也不保留 active 需求口径。
294+
295+## 背景
296+
297+当前主续命方案已经完全切到 `conductor renewal`:
298+
299+- final-message ingress
300+- renewal projector
301+- renewal dispatcher
302+- `browser.proxy_delivery`
303+
304+仓库中的 `tools/watchdog/` 与相关 plan 文档属于早期 GUI/a11y 续命方案,已不再作为当前主线,也不再需要作为兜底方案保留。
305+
306+本任务要求直接删除,不再维护这套旧实现。
307+
308+## 涉及仓库
309+
310+- `/Users/george/code/baa-conductor`
311+
312+## 范围
313+
314+- 删除 `tools/watchdog/` 目录中的脚本与说明
315+- 清理当前 plans / tasks / status 文档里把 watchdog / a11y 当作现存方向的描述
316+- 保留历史 archive 文档即可,不要求清洗所有历史讨论
317+
318+## 路径约束
319+
320+- 不在本任务里新增替代 watchdog 的新实现
321+- 不改动当前 renewal 主链
322+- 不改动 Firefox 插件正式能力
323+
324+## 推荐实现边界
325+
326+建议删除:
327+
328+- `/Users/george/code/baa-conductor/tools/watchdog/`
329+
330+建议更新:
331+
332+- `/Users/george/code/baa-conductor/tasks/TASK_OVERVIEW.md`
333+- `/Users/george/code/baa-conductor/plans/STATUS_SUMMARY.md`
334+- `/Users/george/code/baa-conductor/plans/WATCHDOG_LOGGING_ENHANCEMENT.md`
335+- `/Users/george/code/baa-conductor/plans/WATCHDOG_V2_CONDUCTOR_INTEGRATED.md`
336+- `/Users/george/code/baa-conductor/plans/A11Y_GUI_CONTROL.md`
337+
338+## 允许修改的目录
339+
340+- `/Users/george/code/baa-conductor/tools/`
341+- `/Users/george/code/baa-conductor/tasks/`
342+- `/Users/george/code/baa-conductor/plans/`
343+- `/Users/george/code/baa-conductor/README.md`
344+
345+## 尽量不要修改
346+
347+- `/Users/george/code/baa-conductor/apps/`
348+- `/Users/george/code/baa-conductor/packages/`
349+- `/Users/george/code/baa-conductor/plugins/`
350+
351+## 必须完成
352+
353+### 1. 删除旧代码
354+
355+- 删除 `tools/watchdog/README.md`
356+- 删除 `tools/watchdog/watchdog.sh`
357+- 删除 `tools/watchdog/a11y_msg.sh`
358+
359+### 2. 清理当前文档口径
360+
361+- 从当前总览和状态文档中删除“watchdog 可继续重写”这类 active 提示
362+- 明确当前续命主线只有 conductor renewal
363+- 把 watchdog / a11y 相关 plan 改成 archive,或明确成历史方案
364+
365+### 3. 更新任务状态
366+
367+- 更新本任务文档执行记录
368+- 如有必要,补一句“旧 GUI 续命方案已移除”
369+
370+## 需要特别注意
371+
372+- 本任务是删除,不是改造
373+- 不要误删 renewal 主链代码
374+- 不要把 archive 中的历史分析全量清空
375+- 所有开发必须在 worktree 中进行,不要在主仓库目录修改代码
376+
377+## 验收标准
378+
379+- 仓库内不再保留 `tools/watchdog/`
380+- 当前文档不再把 watchdog / a11y 作为保留方向或待重写方向
381+- 当前主线描述清楚只有 conductor renewal
382+
383+## 推荐验证命令
384+
385+- `rg -n "watchdog|a11y_msg|WATCHDOG_V2|A11Y_GUI_CONTROL" /Users/george/code/baa-conductor`
386+- `git status --short`
387+
388+## 执行记录
389+
390+> 以下内容由执行任务的 AI 填写,创建任务时留空。
391+
392+### 开始执行
393+
394+- 执行者:
395+- 开始时间:
396+- 状态变更:
397+
398+### 完成摘要
399+
400+- 完成时间:
401+- 状态变更:
402+- 修改了哪些文件:
403+- 核心实现思路:
404+- 跑了哪些测试:
405+
406+### 执行过程中遇到的问题
407+
408+- 
409+
410+### 剩余风险
411+
412+- 
413diff --git a/tasks/TASK_OVERVIEW.md b/tasks/TASK_OVERVIEW.md
414index e8963f64dafbd294f5b96f748e0390c354f9fbd5..b1ccb5084eec4a5322ccb24cdcc0a4767a7620c8 100644
415--- a/tasks/TASK_OVERVIEW.md
416+++ b/tasks/TASK_OVERVIEW.md
417@@ -16,7 +16,7 @@
418   - `artifact-db` 持久化 messages / executions / sessions
419   - `conductor` HTTP serve `/artifact/`
420   - D1 异步同步队列
421-  - stagit 仓库浏览:`/artifact/repo/baa-conductor/log.html`
422+  - 历史上曾提供 stagit 仓库浏览;当前已拆出 `T-S073` 准备从本仓库删除这部分能力
423 - Firefox 插件诊断日志链路已落地:
424   - `page-interceptor -> content-script -> controller -> WS -> conductor`
425   - conductor 写 `logs/baa-plugin/YYYY-MM-DD.jsonl`
426@@ -72,6 +72,7 @@
427 - `OPT-002`、`OPT-007` 已分别随 `889f746`、`b8d69c8` 合入 `main`,旧总览中的 open 状态已改正
428 - `T-BUG-029`、`T-BUG-031` 的任务卡已是 `已完成`,但旧文档仍把它们写成 pending manual verification;现统一改为“建议补做浏览器复核”
429 - Artifact 静态服务已经完成,不再把 `T-S039`~`T-S045` 写成“当前活跃主线”
430+- `T-S050` 虽已完成,但 repo 静态页已迁到 `baa-pgit`;现新增 `T-S073` 从当前仓库删除残留的 stagit 能力
431 
432 ## 当前活跃任务与优先级
433 
434@@ -97,21 +98,25 @@
435 
436 ### 当前下一波任务
437 
438-建议下一波按 Web UI 工作台拆成 3 张任务卡推进:
439+当前优先待开始任务:
440 
441 | 任务 | 标题 | 规模 | 依赖 | 建议 AI | 状态 |
442 |---|---|---|---|---|---|
443+| [`T-S073`](./T-S073.md) | 移除 conductor 内的 stagit 仓库静态页能力 | M | 无 | Codex | 待开始 |
444+| [`T-S074`](./T-S074.md) | 删除旧版 watchdog 与 Safari a11y 续命方案 | S | 无 | Codex | 待开始 |
445 | [`T-S070`](./T-S070.md) | Conductor UI 基础设施:Vue 3 脚手架与 `/app` 静态托管 | M | 无 | Codex | 待开始 |
446 | [`T-S071`](./T-S071.md) | Conductor UI 会话鉴权:登录页与浏览器 session | M | T-S070 | Codex | 待开始 |
447 | [`T-S072`](./T-S072.md) | Conductor UI `Control` 工作区首版 | L | T-S070, T-S071 | Codex | 待开始 |
448 
449-这三张任务卡对应:
450+当前没有 open bug / open opt。
451 
452-- Phase 0:前端壳与 `/app`
453-- Phase 0.5:浏览器工作台 session 鉴权
454-- Phase 1:正式 `Control` 工作区
455+如继续推进,建议先按 `T-S073 -> T-S074` 收缩旧实现,再回到 `T-S070 -> T-S071 -> T-S072` 的 Web UI 主线。
456 
457-`Channels` 工作区和正式 `channel` 域模型暂未纳入这一轮 3 张任务卡,后续应在 `T-S072` 收口后再继续拆。
458+说明:
459+
460+- `T-S073` / `T-S074` 是当前仓库边界收缩任务
461+- `T-S070` / `T-S071` / `T-S072` 仍是后续正式 Web UI 主线
462+- `Channels` 工作区和正式 `channel` 域模型继续留在 `T-S072` 之后再拆下一轮
463 
464 ### 已完成但保留作参考
465 
466@@ -195,13 +200,14 @@
467 
468 ## 当前主线判断
469 
470-Phase 1(浏览器主链)、Artifact 静态服务,以及 timed-jobs + 续命主线都已完成收口。`T-S060`、`T-S061`、`T-S062`、`T-S063`、`T-S064`、`T-S065`、`T-S066`、`T-S067`、`T-S068`、`T-S069` 已全部落地,当前主线已经没有 open bug blocker,也没有 open opt。
471+Phase 1(浏览器主链)、Artifact 静态服务,以及 timed-jobs + 续命主线都已完成收口。`T-S060`、`T-S061`、`T-S062`、`T-S063`、`T-S064`、`T-S065`、`T-S066`、`T-S067`、`T-S068`、`T-S069` 已全部落地;当前主线没有 open bug blocker,也没有 open opt,但已新增 `T-S073` / `T-S074` 用于收缩不再需要的 stagit 与 watchdog 旧能力。
472 
473 如果继续推进,建议:
474 
475 - 远端 `baa-conductor-artifact` 已在 `2026-04-01` 应用 [`packages/d1-client/src/d1-setup.sql`](../packages/d1-client/src/d1-setup.sql) 的最新 schema;后续如新建或重置 D1 环境,仍需先执行同一脚本
476-- 优先按 `T-S070 -> T-S071 -> T-S072` 顺序推进正式 Web UI 工作台
477-- `Channels` 工作区与正式 `channel` 模型留到 `Control` 首版落地后再拆下一轮任务
478+- 先完成 `T-S073`
479+- 再完成 `T-S074`
480+- 之后回到 `T-S070 -> T-S071 -> T-S072` 的正式 Web UI 工作台主线
481 
482 ## 现在该读什么
483