- commit
- 961fbd1
- parent
- e3bc310
- author
- claude@macbookpro
- date
- 2026-03-31 15:11:38 +0800 CST
docs: add T-S060 watchdog logging enhancement task Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2 files changed,
+178,
-0
+177,
-0
1@@ -0,0 +1,177 @@
2+# Task T-S060:看门狗日志增强重写(保持 v4 语义)
3+
4+## 状态
5+
6+- 当前状态:`待开始`
7+- 规模预估:`S`
8+- 依赖任务:无
9+- 建议执行者:`Claude / Codex`(改动面小,但需要严格对照当前 `main` 行为,避免把旧状态机语义带回来)
10+
11+## 直接给对话的提示词
12+
13+读 `/Users/george/code/baa-conductor/tasks/T-S060.md` 任务文档,完成开发任务。
14+
15+如需补背景,再读:
16+
17+- `/Users/george/code/baa-conductor/tools/watchdog/README.md`
18+- `/Users/george/code/baa-conductor/plans/TONIGHT_SPRINT.md`
19+- `/Users/george/code/baa-conductor/HANDOFF.md`
20+
21+## 当前基线
22+
23+- 仓库:`/Users/george/code/baa-conductor`
24+- 分支基线:`main`
25+- 提交:`8affb3b`
26+
27+## 分支与 worktree(强制)
28+
29+- 分支名:`feat/watchdog-logging-v4-safe`
30+- worktree 路径:`/Users/george/code/baa-conductor-watchdog-logging-v4-safe`
31+
32+开工步骤:
33+
34+1. `cd /Users/george/code/baa-conductor`
35+2. `git worktree add ../baa-conductor-watchdog-logging-v4-safe -b feat/watchdog-logging-v4-safe main`
36+3. `cd ../baa-conductor-watchdog-logging-v4-safe`
37+4. 在这个 worktree 目录里开发,不要回到主仓库目录
38+
39+完成后提交与推送:
40+
41+1. 在 worktree 里提交所有变更(包括更新后的任务文档)
42+2. `git push -u origin feat/watchdog-logging-v4-safe`
43+
44+合并步骤(由合并者执行):
45+
46+1. `cd /Users/george/code/baa-conductor`
47+2. `git fetch origin`
48+3. `git merge origin/feat/watchdog-logging-v4-safe`
49+4. `git push`
50+5. `git worktree remove ../baa-conductor-watchdog-logging-v4-safe`(如果 worktree 还在)
51+
52+合并冲突处理:
53+
54+1. 如果 `git merge` 报冲突,先 `git diff` 查看冲突文件
55+2. 手动解决冲突后 `git add` 冲突文件
56+3. `git merge --continue` 完成合并
57+4. 不要用 `git merge --abort` 然后 force 覆盖
58+
59+命名规则:
60+
61+- 功能任务分支名以 `feat/` 开头
62+- 缺陷任务分支名以 `bug/` 开头
63+
64+## 目标
65+
66+在不改变当前 `watchdog v4` 状态机语义的前提下,重做看门狗日志增强。
67+
68+## 背景
69+
70+仓库里存在一个旧远端分支 `origin/feat/watchdog-logging`,其中有一部分日志增强改动是有价值的,但该分支基于很旧的基线,直接合并会把当前 `main` 上已经存在的 `watchdog v4` 行为带回旧逻辑。
71+
72+这次任务的目标不是合并旧分支,而是:
73+
74+- 从最新 `main` 重新实现需要的日志增强
75+- 只保留“纯日志 / fail-closed”改进
76+- 不引入旧版 `watchdog.sh` 的状态机回退
77+
78+## 涉及仓库
79+
80+- `/Users/george/code/baa-conductor`
81+
82+## 范围
83+
84+- 为 `a11y_msg.sh` 增加更明确的 START / OK / FAIL 日志
85+- 为 `watchdog.sh` 增加更完整的每轮 CHECK 日志和 `a11y_msg.sh` 返回码记录
86+- 保留当前 `watchdog v4` 的 `renewed` 超时重试语义
87+- 如有必要,更新 `tools/watchdog/README.md`
88+
89+## 路径约束
90+
91+- 不允许直接合并或照搬 `origin/feat/watchdog-logging`
92+- 必须从当前 `main` 重写
93+- 不允许把 `watchdog.sh` 从当前 `v4` 语义改回旧版 `v3`
94+
95+## 推荐实现边界
96+
97+建议优先做:
98+
99+- `tools/watchdog/a11y_msg.sh`
100+- `tools/watchdog/watchdog.sh`
101+- 必要时最小改动 `tools/watchdog/README.md`
102+
103+## 允许修改的目录
104+
105+- `/Users/george/code/baa-conductor/tools/watchdog/`
106+- `/Users/george/code/baa-conductor/tasks/T-S060.md`
107+
108+## 尽量不要修改
109+
110+- `/Users/george/code/baa-conductor/apps/`
111+- `/Users/george/code/baa-conductor/packages/`
112+- `/Users/george/code/baa-conductor/plugins/`
113+
114+## 必须完成
115+
116+### 1. `a11y_msg.sh` 日志增强
117+
118+- 记录调用开始日志
119+- 区分参数缺失、标签页未命中、按键失败等失败原因
120+- 保留成功/失败退出码
121+
122+### 2. `watchdog.sh` CHECK 日志增强
123+
124+- 每轮记录更完整的状态信息
125+- 在续命调用后记录 `a11y_msg.sh` 的返回码
126+- 出错时记录失败日志
127+
128+### 3. 保持当前行为不回退
129+
130+- 保留当前 `watchdog v4` 的 `renewed` 超时重试逻辑
131+- 不要擅自清空 `wake_at` / `max_wake_at`
132+- 不要改变现有心跳状态机含义,除非任务文档明确要求
133+
134+## 需要特别注意
135+
136+- 这次任务的重点是“增强日志”,不是“重写状态机”
137+- 如果引用旧分支实现,只能选择性吸收日志语句,不能整体移植
138+- 如果发现旧分支中的某个行为改动确实合理,需要在任务文档里记录并单独说明
139+- 所有开发必须在 worktree 中进行,不要在主仓库目录修改代码
140+
141+## 验收标准
142+
143+- `a11y_msg.sh` 失败时能区分至少 2 类以上失败原因
144+- `watchdog.sh` 每轮 CHECK 会写更完整状态到 `watchdog.log`
145+- 续命调用后能看到 `a11y_msg.sh` 返回码
146+- 当前 `watchdog v4` 的 `renewed` 超时重试语义不被破坏
147+
148+## 推荐验证命令
149+
150+- `cd /Users/george/code/baa-conductor-watchdog-logging-v4-safe && bash -n tools/watchdog/a11y_msg.sh`
151+- `cd /Users/george/code/baa-conductor-watchdog-logging-v4-safe && bash -n tools/watchdog/watchdog.sh`
152+- `cd /Users/george/code/baa-conductor-watchdog-logging-v4-safe && git diff -- tools/watchdog/`
153+
154+## 执行记录
155+
156+> 以下内容由执行任务的 AI 填写,创建任务时留空。
157+
158+### 开始执行
159+
160+- 执行者:
161+- 开始时间:
162+- 状态变更:`待开始` → `进行中`
163+
164+### 完成摘要
165+
166+- 完成时间:
167+- 状态变更:`进行中` → `已完成`
168+- 修改了哪些文件:
169+- 核心实现思路:
170+- 跑了哪些测试:
171+
172+### 执行过程中遇到的问题
173+
174+-
175+
176+### 剩余风险
177+
178+-
+1,
-0
1@@ -80,6 +80,7 @@
2 |---|---|---|
3 | [`T-S048`](./T-S048.md) | Gemini 投递适配器 | 仍保留,但暂让位于续命/定时任务主线 |
4 | [`T-S049`](./T-S049.md) | 开放 chatgpt/gemini target | 依赖 T-S048,暂后移 |
5+| [`T-S060`](./T-S060.md) | 看门狗日志增强重写(保持 v4 语义) | 替代旧的 `origin/feat/watchdog-logging`,只重做日志增强,不回退状态机 |
6 | [`T-S051`](./T-S051.md) | 代码文件直读映射 | 已完成,保留为后续实现参考 |
7
8 ### 已完成