--- id: T-001 title: 初始化 monorepo 骨架(core / app-modern / app-win7 + go.work) phase: 0 deps: [] status: DONE created: 2026-07-16 issue: null context_ref: 0184595cccc3a516628fc6077c558b84606ad806 claim_branch: null work_branch: agent/codex/T-001 write_paths: - docs/tasks/T-001.md - go.work - core/ - app-modern/ - app-win7/ - init.sh - init.ps1 - docs/00-ai-start-here.md - docs/03-tech-stack.md - docs/current-state.md --- ## 问题 / 背景 仓库当前只有 harness 文档,没有任何 Go 代码。按 `docs/04-architecture.md` 建立「单仓库、双构建」的工程骨架,是所有后续任务的前置。git 仓库与 Gitea 远端(origin)已存在,init 脚本三个命令仍是占位符。 ## 方案 1. 创建 `core/`(go.mod,`go 1.20`),含 `domain/`、`application/` 空包和一个最小可测函数(如 SemVer 比较占位)+ 对应测试,保证 `go test ./...` 有真实断言可跑。 2. 创建 `app-modern/`(go.mod,锁定 Go 1.25 + Gio v0.10.1)与 `app-win7/`(go.mod,`go 1.20` + Gio v0.6.0),各含 `cmd/softbox/main.go`(暂可为无 UI 的最小 main,空 Gio 窗口归 T-003)、`ui/gio/`、`platform/windows/` 空包;两模块 require core(replace 由 go.work 处理,go.mod 不留本机路径)。 3. 根目录创建 `go.work` 纳入三个模块。 4. 替换 `init.sh` / `init.ps1` 顶部三个命令变量: - INSTALL:`go work sync` - VERIFY:`cd core && go vet ./... && go test -count=1 ./...`(脚本内等价写法) - START:打印双目标构建命令(桌面应用无常驻 dev server) 5. 把真实命令同步到 `docs/03-tech-stack.md`、`docs/00-ai-start-here.md`、`docs/current-state.md`。 ## 验收要点 - `go work sync` 成功。 - `cd core && go vet ./... && go test -count=1 ./...` 通过(Linux 无头环境),至少一个真实测试。 - `cd app-modern && GOOS=windows GOARCH=amd64 go build ./cmd/softbox` 产出 EXE。 - `cd app-win7 && GOTOOLCHAIN=go1.20.14 GOOS=windows GOARCH=amd64 go build ./cmd/softbox` 产出 EXE(证明 Go 1.20 兼容)。 - `./init.sh` 全流程跑通,不再提示占位符未替换。 - core 的 go.mod 无 Gio、无 Windows 专属依赖;依赖方向 app-* → core。 - `docs/current-state.md` 已覆盖更新为骨架完成后的现实。 ## 边界(不改什么) - 不实现任何业务功能(清单、下载、安装、授权均不做)。 - 不写 Gio 界面(空窗口在 T-003)。 - 不建 `schemas/`、`testdata/` 业务内容。 - 不引入除 Gio 外的第三方依赖。 ## 协作约束 (未启用 Gitea;单 agent 直接在独立分支领取,状态改 DOING 后开工。) ## 执行记录 - 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`。