im_wower
·
2026-03-22
T-024-e2e-smoke.md
1---
2task_id: T-024
3title: 端到端 smoke harness
4status: done
5branch: feat/T-024-e2e-smoke
6repo: /Users/george/code/baa-conductor
7base_ref: main@288c748
8depends_on:
9 - T-019
10 - T-020
11 - T-021
12 - T-022
13write_scope:
14 - tests/e2e/**
15 - scripts/smoke/**
16updated_at: 2026-03-22T02:16:15+0800
17---
18
19# T-024 端到端 smoke harness
20
21## 目标
22
23补一套可重复运行的端到端 smoke harness,把本地起服务、探活、状态读取和最小主备流程串起来。
24
25## 本任务包含
26
27- 在 `tests/e2e/**` 下补最小端到端 smoke
28- 在 `scripts/smoke/**` 下补启动 / 检查辅助脚本
29- 把 conductor、status-api、control-api 的最小读取面串起来
30- 输出可重复执行的 smoke 流程
31
32## 本任务不包含
33
34- 修改 `apps/control-api-worker/**`
35- 修改 `apps/conductor-daemon/**`
36- 修改 `apps/status-api/**`
37- 真实线上部署
38
39## 建议起始文件
40
41- `tests/e2e/`
42- `scripts/smoke/`
43- `docs/ops/README.md`
44
45## 交付物
46
47- 本地 smoke harness
48- 一套明确的启动与验证步骤
49- 可供后续 failover 演练复用的基础流程
50
51## 验收
52
53- 如果新增 shell 脚本:`bash -n scripts/smoke/*.sh`
54- `git diff --check`
55- 能说明如何一键或半自动执行 smoke
56
57## 更新要求
58
59完成时更新 frontmatter 的:
60
61- `status`
62- `base_ref`
63- `updated_at`
64
65并补充下面这些内容:
66
67## files_changed
68
69- coordination/tasks/T-024-e2e-smoke.md
70- scripts/smoke/README.md
71- scripts/smoke/check-stack.sh
72- scripts/smoke/control-api-local.mjs
73- scripts/smoke/d1-sqlite.mjs
74- scripts/smoke/run-e2e.sh
75- scripts/smoke/stack-cli.mjs
76- scripts/smoke/start-stack.sh
77- scripts/smoke/status-api-local.mjs
78- scripts/smoke/stop-stack.sh
79- tests/e2e/smoke.test.mjs
80
81## commands_run
82
83- npx --yes pnpm install
84- node --check scripts/smoke/d1-sqlite.mjs
85- node --check scripts/smoke/control-api-local.mjs
86- node --check scripts/smoke/status-api-local.mjs
87- node --check scripts/smoke/stack-cli.mjs
88- bash -n scripts/smoke/*.sh
89- bash scripts/smoke/run-e2e.sh --json
90- node --test tests/e2e/smoke.test.mjs
91- bash scripts/smoke/start-stack.sh --json --state-dir /Users/george/code/baa-conductor-T024-e2e-smoke/tmp/manual-smoke-check
92- bash scripts/smoke/check-stack.sh --json --state-dir /Users/george/code/baa-conductor-T024-e2e-smoke/tmp/manual-smoke-check --expected-leader smoke-mini
93- bash scripts/smoke/stop-stack.sh --json --state-dir /Users/george/code/baa-conductor-T024-e2e-smoke/tmp/manual-smoke-check
94- git diff --check
95
96## result
97
98- 新增本地 smoke stack CLI 和 shell 包装脚本,可一键或分步启动、检查、停止 control-api、主备 conductor、status-api。
99- 新增基于 SQLite 的 smoke-only D1 适配层,用于本地共享 control-api 和 status-api 的最小 durable 视图。
100- 新增端到端 smoke 测试,覆盖探活、`/v1/system/state`、`/v1/status`、queued task 可见性和主备 failover。
101
102## risks
103
104- `scripts/smoke/d1-sqlite.mjs` 是本地 smoke 适配层,不等价于真实 Cloudflare D1 / Wrangler 运行时语义。
105- 当前 smoke 聚焦最小读取面和 lease failover,不覆盖 task claim、worker 执行和真实线上部署链路。
106
107## next_handoff
108
109- 后续任务可直接复用 `bash scripts/smoke/run-e2e.sh --json` 作为本地回归入口。
110- T-025 可复用 `start-stack.sh` / `check-stack.sh` / `stop-stack.sh` 和 `stack-cli.mjs` 的状态目录结构继续扩展 failover rehearsal。