Files
soft_quay/docs/tasks/T-001.md

3.7 KiB

id, title, phase, deps, status, created, issue, context_ref, claim_branch, work_branch, write_paths
id title phase deps status created issue context_ref claim_branch work_branch write_paths
T-001 初始化 monorepo 骨架(core / app-modern / app-win7 + go.work) 0
DONE 2026-07-16 null 0184595ccc null agent/codex/T-001
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。