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

5.9 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-604 隔离 modern 与 Win7 workspace 0
T-004
DONE 2026-07-16 null e4a9295cbf null agent/codex/T-604
docs/tasks/T-604.md
go.work
go.work.sum
app-win7/go.work
app-win7/go.work.sum
scripts/check_go_versions.py
scripts/verify_phase0.ps1
scripts/verify_phase0.sh
init.ps1
init.sh
docs/00-ai-start-here.md
docs/03-tech-stack.md
docs/current-state.md

问题 / 背景

Phase 0 交叉审核确认根 go.work 同时纳入 app-modern、app-win7 与 core,导致 Go workspace 的最小版本选择把根环境中的 app-win7 解析到 Gio v0.10.1,而正式 Win7 构建实际使用 app-win7/go.work 中的 Gio v0.6.0。

现有双目标闸门已经通过显式 GOWORK 保证发布构建正确,因此这不是当前 EXE 的运行时缺陷;但根目录命令、go work sync、gopls/IDE 可能在错误 Gio 版本下检查 Win7 代码,形成兼容性假阴性或误报。审核结论与实施约束见 docs/review/phase0-skeleton-review.md。

方案

  1. 根 go.work 只纳入 app-modern 与 core;app-win7 只由 app-win7/go.work 纳入并继续与 core 共享本地替换。
  2. init.sh、init.ps1、verify_phase0.sh 与 verify_phase0.ps1 分别同步两个 workspace:
    • Go 1.25.0 同步根 workspace。
    • Go 1.25.0 + 显式 GOWORK=app-win7/go.work 同步 Win7 workspace 元数据;随后必须用 Go 1.20.14 校验实际依赖图、测试和构建。
  3. 加固 scripts/check_go_versions.py:
    • 校验根 workspace 只包含 modern/core。
    • 校验 Win7 workspace 只包含 win7/core。
    • 分别解析 workspace build list,确认 Gio 精确为 v0.10.1 / v0.6.0。
    • Go 1.20.14 的任何检查不得读取 Go 1.25 根 workspace。
  4. 更新启动命令与技术栈文档,删除“根 workspace 纳入三个模块”的旧描述,明确双 workspace 的同步和开发入口。
  5. 使用实际 go list / test / build 证明两套 workspace 不交叉解析;补充 gopls/IDE 嵌套 workspace 的人工 smoke 记录。

验收要点

  • go work edit -json 显示根 workspace 只有 ./app-modern、./core;app-win7/go.work 只有 .、../core。
  • 根 workspace 执行 go list -m gioui.org 得到 v0.10.1;Win7 workspace 使用 Go 1.20.14 执行同命令得到 v0.6.0。
  • 根 workspace 不再把 ./app-win7/... 当作自身 package pattern 构建;Win7 test/build 必须显式使用嵌套 workspace。
  • 两个 workspace 的 sync 都由 init 与 verify_phase0 执行;Win7 sync 使用 Go 1.25.0 规避 Go 1.20.14 对 workspace replace 的已验证限制,但 Win7 依赖图/test/build 仍强制 Go 1.20.14;sync 后三个 go.mod 无意外漂移。
  • python scripts/check_go_versions.py 能在 workspace 成员或 Gio 解析版本错误时失败。
  • gopls/IDE 打开仓库后,Win7 文件使用 Gio v0.6.0 语义;若当前环境没有 gopls,执行记录必须写明限制并至少提供嵌套 workspace 的 go list/test 证据。
  • ./scripts/verify_phase0.ps1 与 bash scripts/verify_phase0.sh 全绿,modern/Win7 EXE 均重新产出。
  • ./init.ps1 与 bash ./init.sh 全绿。
  • python scripts/validate_agent_context.py、python scripts/validate_harness_governance.py 通过。

边界(不改什么)

  • 不修改 Gio 版本、Go 版本或任何业务依赖。
  • 不重构 modern/win7 UI,不处理调色板或 Layout 重复。
  • 不修改 application Runtime、domain 状态迁移、下载/安装业务。
  • 不处理 vendor 策略、远端 Gitea runner 或 CI 工具链预装;这些按审核结论另立任务。
  • 不修改、提交或删除用户的 soft_quay.code-workspace。

协作约束

  • 按仓库当前规则由单 Agent 串行执行,不启动子 Agent。
  • 本任务只允许修改 frontmatter 中的 write_paths;若发现必须修改 app/core 的 go.mod,先停止并记录 sync 产生漂移的原因,不得直接扩大范围。
  • T-604 完成、验证并提交前不落成或领取后续审核整改任务和 T-302。

执行记录

  • 2026-07-16:根据 docs/review/phase0-skeleton-review.md 的交叉复核定稿落成首个整改任务;编号按路线图与现有任务最大编号 T-603 + 1 取 T-604。
  • 2026-07-16:在 agent/codex/T-604 分支领取任务;基线为 e4a9295cbf94d645370d2583866b7ca91c0c5271。当前环境未安装 gopls,后续以嵌套 workspace 的实际 go list/test/build 作为自动化证据,并在收尾记录该环境限制。
  • 2026-07-16:真实执行发现 Go 1.20.14 go work sync 虽能用 workspace replace 完成 go list,却会在 sync 时联网解析 softbox.local/core@v0.0.0 并失败;Go 1.25.0 对同一 Win7 workspace sync 成功且三个 go.mod 哈希不变。决定用 Go 1.25.0 同步两套 workspace 元数据,继续用 Go 1.20.14 强制验证和构建 Win7,不向 go.mod 写本地 replace。
  • 2026-07-16:根 go.work 移除 app-win7,清理根 go.work.sum 中 Win7 专属旧校验和;init/verify_phase0 分别同步两套 workspace并显式传递绝对 GOWORK。check_go_versions.py 现校验 workspace 成员、实际 Gio 解析版本、Go 1.20.14 工具链与 core/win7 完整模块图,并带错误分支 self-check。
  • 2026-07-16:隔离证据通过:根 go work edit -json 仅含 app-modern/core,Gio 为 v0.10.1;Win7 workspace 仅含 app-win7/core,Go 1.20.14 解析 Gio v0.6.0;根 workspace 的 go list ./app-win7/... 按预期拒绝;三个 go.mod 前后哈希完全一致。当前环境未安装 gopls,已按验收规则记录限制并用实际 list/test/build 替代自动化证据。
  • 2026-07-16:验证通过:python scripts/check_go_versions.py;./scripts/verify_phase0.ps1;C:\Program Files\Git\bin\bash.exe scripts/verify_phase0.sh;./init.ps1(含 RUN_START_COMMAND=1 的显式双 workspace build);C:\Program Files\Git\bin\bash.exe ./init.sh;治理/边界检查、core Go 1.20.14 vet/test、modern Go 1.25.0 与 Win7 Go 1.20.14 adapter test/GUI build 全绿。