baa-conductor

git clone 

baa-conductor / coordination / tasks / done
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。