Initialize Phase 0 monorepo skeleton (T-001)

This commit is contained in:
ila
2026-07-16 15:28:13 +08:00
parent 0184595ccc
commit cf9fc01c68
23 changed files with 151 additions and 74 deletions
+3 -3
View File
@@ -45,7 +45,7 @@ SoftBox 软件盒子是一个使用 Go + Gio 开发的 Windows 桌面客户端,
## 当前阶段
当前项目处于:**MVP 起步(Phase 0 工程骨架尚未建立,仓库只有文档)**。
当前项目处于:**MVP 起步(Phase 0 工程骨架建设中)**。
优先路径:
@@ -133,14 +133,14 @@ MVP 不做:
## 验证命令
统一启动与验证入口收敛到根目录 `./init.sh` / `./init.ps1`;T-001 完成前脚本处于未配置状态。骨架建立后的标准命令:
统一启动与验证入口收敛到根目录 `./init.sh` / `./init.ps1`;脚本会同步工作区依赖并运行 core 基础验证。标准命令:
```bash
# core 测试(Linux 无头可跑)
cd core && go vet ./... && go test -count=1 ./...
# 现代版构建
cd app-modern && GOOS=windows GOARCH=amd64 go build ./cmd/softbox
cd app-modern && GOTOOLCHAIN=go1.25.0 GOOS=windows GOARCH=amd64 go build ./cmd/softbox
# Win7 版构建(强制 Go 1.20)
cd app-win7 && GOTOOLCHAIN=go1.20.14 GOOS=windows GOARCH=amd64 go build ./cmd/softbox
+4 -2
View File
@@ -35,17 +35,19 @@
## 三、构建与运行命令
> 工程骨架由 T-001 建立;骨架完成前以下命令不可运行,`init.sh`/`init.ps1` 会主动失败提示。骨架完成后,T-001 必须把真实命令回填到本表、`00-ai-start-here.md`、`current-state.md` 和 init 脚本顶部三个变量。
> 工程骨架由 T-001 建立;根目录 `init.sh`/`init.ps1` 统一执行依赖同步与 core 基础验证,并打印双目标构建命令。
| 用途 | 命令(计划) |
| --- | --- |
| 同步工作区依赖 | `go work sync` |
| core 测试 | `cd core && go test -count=1 ./...` |
| core 静态检查 | `cd core && go vet ./...` |
| 现代版构建 | `cd app-modern && GOOS=windows GOARCH=amd64 go build -o ../dist/SoftBox.exe ./cmd/softbox` |
| 现代版构建 | `cd app-modern && GOTOOLCHAIN=go1.25.0 GOOS=windows GOARCH=amd64 go build -o ../dist/SoftBox.exe ./cmd/softbox` |
| Win7 版构建 | `cd app-win7 && GOTOOLCHAIN=go1.20.14 GOOS=windows GOARCH=amd64 go build -o ../dist/SoftBox-win7.exe ./cmd/softbox` |
| 本地运行(开发) | Windows 下直接 `go run ./cmd/softbox`(WSL 中构建 EXE 后到 Windows 侧运行) |
根 `go.work` 纳入三个模块并使用 modern 所需的 Go 1.25 workspace 版本;`app-win7/go.work` 是就近的 Go 1.20 workspace,只纳入 `app-win7` 与 `core`,确保 Go 1.20.14 不需要解析 modern 模块。
工具链矩阵:
| 构建目标 | 工具链 | Gio | 支持系统 | 维护策略 |
+21 -17
View File
@@ -13,26 +13,26 @@
## 当前快照
- 日期:2026-07-16
- 阶段:MVP 起步(Phase 0 未开始,仓库只有 harness 文档,无任何 Go 代码)
- 技术栈:已定稿于 `03-tech-stack.md`(Go + Gio,双工具链矩阵),尚未落地
- 生产代码:无;`core/`、`app-modern/`、`app-win7/`、`schemas/`、`testdata/` 均待 T-001 创建
- 测试:无
- 阶段: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 已有最小真实单元测试
- 数据:无;Catalog 清单与测试样例待建
- 标准启动路径:`./init.sh` / `./init.ps1`(**尚未配置**,顶部三个命令仍为占位符,运行会主动失败提示——T-001 负责替换)
- 标准验证路径:同上,未配置
- 标准启动路径:`./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-001
- 当前 blocker:无;下一步按路线图落成并领取 T-002
## 当前目录要点
| 路径 | 状态 | 说明 |
| --- | --- | --- |
| `docs/` | 已有 | harness coding 文档集(本次初始化完成) |
| `docs/tasks/` | 已有 | 任务目录;T-001 已落成任务文件待领取 |
| `docs/tasks/` | 已有 | 任务目录;T-001 已完成,T-002 待按路线图落成 |
| `scripts/` | 已有 | harness 治理脚本(validate_agent_context 等);构建脚本待建 |
| `core/` | 待建 | 共享业务核心(T-001) |
| `app-modern/` | 待建 | 现代版模块(T-001) |
| `app-win7/` | 待建 | Win7 遗留版模块(T-001) |
| `core/` | 已建 | Go 1.20 兼容共享模块;当前仅最小包与测试 |
| `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) |
| `testdata/` | 待建 | 假数据测试样例(T-101 起) |
@@ -40,18 +40,22 @@
任务状态以 `docs/tasks/` 各任务文件 frontmatter 的 `status` 为准。本节只写项目级摘要:
- 已完成:无。
- 已完成:`T-001 初始化 monorepo 骨架`。
- 正在进行:无。
- 下一个可领取任务:`T-001 初始化 monorepo 骨架`(`docs/tasks/T-001.md`)。
- 下一个可领取任务:按路线图落成并领取 `T-002 建立 domain 状态模型与事件总线`。
## 当前可运行内容
```bash
# 目前仅文档治理检查可运行:
python3 scripts/validate_agent_context.py
python3 scripts/validate_harness_governance.py
# 统一依赖同步 + core 验证:
./init.sh
# Windows PowerShell 使用 ./init.ps1
# Go 构建 / 测试:骨架未建立,暂不可运行(见 T-001)
# 独立验证:
go -C core vet ./...
go -C core test -count=1 ./...
GOTOOLCHAIN=go1.25.0 GOOS=windows GOARCH=amd64 go -C app-modern build ./cmd/softbox
GOTOOLCHAIN=go1.20.14 GOOS=windows GOARCH=amd64 go -C app-win7 build ./cmd/softbox
```
## 开始编码前检查
+12 -4
View File
@@ -3,12 +3,12 @@ id: T-001
title: 初始化 monorepo 骨架(core / app-modern / app-win7 + go.work)
phase: 0
deps: []
status: TODO
status: DONE
created: 2026-07-16
issue: null
context_ref: null
context_ref: 0184595cccc3a516628fc6077c558b84606ad806
claim_branch: null
work_branch: null
work_branch: agent/codex/T-001
write_paths:
- docs/tasks/T-001.md
- go.work
@@ -60,4 +60,12 @@ write_paths:
## 执行记录
(做完在此记录:改了哪些文件、跑的验证命令与结果、阻塞、关键决策。)
- 2026-07-16:创建根 `go.work`、`core` / `app-modern` / `app-win7` 三个模块、最小命令入口、core 真实单元测试及预留包目录。
- 2026-07-16:根 workspace 使用 Go 1.25 并纳入三个模块;额外创建 `app-win7/go.work`(Go 1.20,仅含 win7 + core),使 Go 1.20.14 不必解析 modern 模块,同时保持 app → core 的依赖方向。
- 2026-07-16:替换 `init.sh` / `init.ps1` 占位命令并同步 `00-ai-start-here.md`、`03-tech-stack.md`、`current-state.md`。
- 验证通过:`go work sync`。
- 验证通过:`cd core && go vet ./... && go test -count=1 ./...`。
- 验证通过:`cd app-modern && GOTOOLCHAIN=go1.25.0 GOOS=windows GOARCH=amd64 go build -o ../dist/SoftBox.exe ./cmd/softbox`。
- 验证通过:`cd app-win7 && GOTOOLCHAIN=go1.20.14 GOOS=windows GOARCH=amd64 go build -o ../dist/SoftBox-win7.exe ./cmd/softbox`。本机镜像下载 toolchain 失败后,使用 Go 官方 `golang.org/dl/go1.20.14` 下载并验证同一版本工具链。
- 验证通过:`./init.ps1` 与 Git Bash `./init.sh`。
- 验证通过:`python scripts/validate_agent_context.py`、`python scripts/validate_harness_governance.py`。