Add domain states and event runtime (T-002)
This commit is contained in:
@@ -15,13 +15,13 @@
|
||||
- 日期:2026-07-16
|
||||
- 阶段:MVP 起步(Phase 0 工程骨架建设中)
|
||||
- 技术栈:根 Go workspace 纳入 core/app-modern/app-win7 三模块;`app-win7/go.work` 隔离 Go 1.20.14 构建;Gio UI 与平台 stub 待后续 Phase 0 任务接入
|
||||
- 生产代码:已有最小 core 包与 modern/win7 命令入口;尚无业务功能
|
||||
- 测试:core 已有最小真实单元测试
|
||||
- 生产代码:core 已有软件状态模型、迁移规则、application Event 合约与 Runtime 事件总线骨架;modern/win7 仍为无 UI 命令入口
|
||||
- 测试:core 已覆盖状态合法性/非法迁移、事件类型、发布/取消/关闭
|
||||
- 数据:无;Catalog 清单与测试样例待建
|
||||
- 标准启动路径:`./init.sh` / `./init.ps1`(同步依赖、验证 core、打印 modern/win7 双目标构建命令)
|
||||
- 标准验证路径:`go -C core vet ./...` + `go -C core test -count=1 ./...`;双目标构建命令见下文
|
||||
- 版本管理:git 已初始化,main 分支,远端 origin 为 Gitea `opc/soft_quay`;harness 文档已提交
|
||||
- 当前 blocker:无;下一步按路线图落成并领取 T-002
|
||||
- 当前 blocker:无;下一步按路线图落成并领取 T-003
|
||||
|
||||
## 当前目录要点
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
| `docs/` | 已有 | harness coding 文档集(本次初始化完成) |
|
||||
| `docs/tasks/` | 已有 | 任务目录;T-001 已完成,T-002 待按路线图落成 |
|
||||
| `scripts/` | 已有 | harness 治理脚本(validate_agent_context 等);构建脚本待建 |
|
||||
| `core/` | 已建 | Go 1.20 兼容共享模块;当前仅最小包与测试 |
|
||||
| `core/` | 已建 | Go 1.20 兼容共享模块;已有 domain 状态模型与 application 事件 runtime |
|
||||
| `app-modern/` | 已建 | Go 1.25.0 + Gio v0.10.1 模块;当前为无 UI 命令入口 |
|
||||
| `app-win7/` | 已建 | Go 1.20 + Gio v0.6.0 模块;当前为无 UI 命令入口 |
|
||||
| `schemas/` | 待建 | 协议 JSON Schema(T-201) |
|
||||
@@ -40,9 +40,9 @@
|
||||
|
||||
任务状态以 `docs/tasks/` 各任务文件 frontmatter 的 `status` 为准。本节只写项目级摘要:
|
||||
|
||||
- 已完成:`T-001 初始化 monorepo 骨架`。
|
||||
- 已完成:`T-001 初始化 monorepo 骨架`、`T-002 建立 domain 状态模型与事件总线`。
|
||||
- 正在进行:无。
|
||||
- 下一个可领取任务:按路线图落成并领取 `T-002 建立 domain 状态模型与事件总线`。
|
||||
- 下一个可领取任务:按路线图落成并领取 `T-003 Gio 空窗口 + 平台层 stub`。
|
||||
|
||||
## 当前可运行内容
|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
id: T-002
|
||||
title: 建立 domain 状态模型与 application 事件总线
|
||||
phase: 0
|
||||
deps: [T-001]
|
||||
status: DONE
|
||||
created: 2026-07-16
|
||||
issue: null
|
||||
context_ref: cf9fc01c68476ba3ee4f69525958f2e62ba2d6ce
|
||||
claim_branch: null
|
||||
work_branch: agent/codex/T-002
|
||||
write_paths:
|
||||
- docs/tasks/T-002.md
|
||||
- core/domain/
|
||||
- core/application/
|
||||
- docs/current-state.md
|
||||
---
|
||||
|
||||
## 问题 / 背景
|
||||
|
||||
T-001 只建立了可编译骨架。后续清单、下载、安装、启动和 UI 都需要共享、稳定的软件状态模型,后台任务也需要通过统一事件通道与 UI 解耦。
|
||||
|
||||
## 方案
|
||||
|
||||
1. 在 `core/domain` 定义 `docs/04-architecture.md` 已列出的 12 个软件状态及显式迁移表。
|
||||
2. 提供状态合法性与迁移校验 API,非法迁移返回包含起止状态的稳定错误。
|
||||
3. 在 `core/application` 定义 `docs/api.md` 已列出的事件类型与通用 `Event` 信封。
|
||||
4. 建立带缓冲事件通道、上下文取消与关闭信号的 `Runtime` 骨架;关闭后拒绝新事件。
|
||||
5. 使用表驱动测试覆盖合法/非法状态迁移、未知状态、事件发布、取消与关闭。
|
||||
|
||||
## 验收要点
|
||||
|
||||
- 软件状态枚举与架构文档一致,不新增未定义状态。
|
||||
- 表驱动测试至少覆盖 `not_installed → installed`、`running → downloading` 等非法迁移。
|
||||
- application 事件类型与 `docs/api.md` 一致;未知类型不能发布。
|
||||
- runtime 可以发布/消费事件,阻塞发布可由 context 取消,关闭后返回稳定错误。
|
||||
- `cd core && go vet ./... && go test -count=1 ./...` 通过。
|
||||
- modern 与 win7 两个目标继续可编译。
|
||||
|
||||
## 边界(不改什么)
|
||||
|
||||
- 不实现清单、下载、安装、授权等具体用例。
|
||||
- 不引入 Gio、Windows API 或第三方依赖。
|
||||
- 不修改 app UI 与平台层。
|
||||
|
||||
## 协作约束
|
||||
|
||||
未启用 Gitea;本任务在 `agent/codex/T-002` 分支串行执行。新增写路径前必须确认不越过本文件声明范围。
|
||||
|
||||
## 执行记录
|
||||
|
||||
- 2026-07-16:在 `core/domain/status.go` 落地架构文档中的 12 个软件状态、显式迁移表、状态合法性与迁移校验错误。
|
||||
- 2026-07-16:表驱动测试覆盖正常下载/安装/运行/回滚路径,并覆盖跳过安装链、运行中下载、未知状态和同状态迁移等非法情况。
|
||||
- 2026-07-16:在 `core/application` 落地 `docs/api.md` 已定义的 12 个事件类型、通用 Event 信封及支持缓冲、context 取消、幂等关闭的 Runtime 事件总线骨架。
|
||||
- 验证通过:`cd core && go vet ./... && go test -count=1 ./...`。
|
||||
- 验证通过:Go 1.20.14 + `GOWORK=off` 执行 core vet/test,确认共享核心兼容基线。
|
||||
- 验证通过:modern Go 1.25.0 与 win7 Go 1.20.14 两个 Windows amd64 目标重新编译。
|
||||
- 验证通过:`python scripts/validate_agent_context.py`、`python scripts/validate_harness_governance.py`。
|
||||
Reference in New Issue
Block a user