Define workspace isolation task (T-604)
This commit is contained in:
@@ -24,6 +24,14 @@
|
||||
| T-003 | Gio 空窗口 + 平台层 stub | T-001 | 两个 app 打开空主窗口(AppShell 骨架);platform/windows 接口 + 非 Windows stub;core 不 import Gio 的检查脚本 |
|
||||
| T-004 | CI 双目标编译闸门 | T-001 | CI(或本地脚本)执行:core vet+test、modern 构建、win7 用 Go 1.20 构建、依赖 go 版本检查 |
|
||||
|
||||
#### Phase 0 交叉审核加固
|
||||
|
||||
审核整改任务沿用全局防撞编号;路线图原有最大编号为 T-603,因此从 T-604 起编号。整改按 `docs/review/phase0-skeleton-review.md` 的定稿顺序串行落成和执行。
|
||||
|
||||
| ID | 任务 | 依赖 | 验收要点 |
|
||||
| --- | --- | --- | --- |
|
||||
| T-604 | 隔离 modern 与 Win7 workspace | T-004 | 根 workspace 只含 modern/core;Win7 使用独立 Go 1.20 workspace;双 workspace 分别 sync;版本检查证明 Gio v0.10.1/v0.6.0 不交叉解析 |
|
||||
|
||||
### Phase 1 · 最高风险原型
|
||||
|
||||
| ID | 任务 | 依赖 | 验收要点 |
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
## 当前快照
|
||||
|
||||
- 日期:2026-07-16
|
||||
- 阶段:Phase 2 已完成(T-201~T-204);Phase 3 的 T-301 可恢复下载队列已完成,T-302 尚待正式落成任务文件
|
||||
- 阶段:Phase 2 已完成(T-201~T-204);Phase 3 的 T-301 可恢复下载队列已完成;Phase 0 交叉审核整改从 T-604 开始,T-302 暂后置
|
||||
- 技术栈:根 Go workspace 纳入 core/app-modern/app-win7 三模块;`app-win7/go.work` 隔离 Go 1.20.14 构建;modern Gio v0.10.1 与 win7 Gio v0.6.0 已实际接入
|
||||
- 生产代码:core 已有 Catalog/本地状态/存储、无 IO 软件列表模型、可信图标缓存和默认并发 2 的持久可恢复下载队列;modern/win7 AppShell 已实现搜索/分类/视图、惰性列表、详情右栏与内存图标
|
||||
- 测试:core 覆盖 Catalog、SemVer/12 状态、本地安装记录、列表/图标、下载并发/暂停/取消/重试/Range/断连/恢复/事件失败与文件身份替换;两个 app 覆盖 500 项虚拟列表、ID 控件稳定性、详情/ApplyIcon 与平台 stub;ZIP/安装恢复矩阵保持通过
|
||||
@@ -21,14 +21,14 @@
|
||||
- 标准启动路径:`./init.sh` / `./init.ps1`(同步依赖、执行完整 Phase 0 闸门、打印双目标构建命令)
|
||||
- 标准验证路径:`bash scripts/verify_phase0.sh` / `./scripts/verify_phase0.ps1`
|
||||
- 版本管理:git 已初始化,main 分支,远端 origin 为 Gitea `opc/soft_quay`;harness 文档已提交
|
||||
- 当前 blocker:无;下一个任务是 T-302 安装流程整合,必须先正式落成并提交任务文件,再由单 Agent 串行完成
|
||||
- 当前 blocker:无;下一个任务是 T-604 workspace 隔离加固,完成审核整改后再恢复 T-302 安装流程整合
|
||||
|
||||
## 当前目录要点
|
||||
|
||||
| 路径 | 状态 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `docs/` | 已有 | harness coding 文档集(本次初始化完成) |
|
||||
| `docs/tasks/` | 已有 | Phase 0~2 与 T-301 已完成;T-302 尚未落成 |
|
||||
| `docs/tasks/` | 已有 | Phase 0~2 与 T-301 已完成;T-604 审核整改已落成并待领取;T-302 暂后置 |
|
||||
| `scripts/` | 已有 | harness 治理、core 边界、Go 版本检查与 Phase 0 双平台验证入口 |
|
||||
| `core/` | 已建 | Go 1.20 兼容;已有正式 Catalog、本地状态/存储、列表模型、图标缓存、可恢复下载队列与 Phase 1 安装安全原型 |
|
||||
| `app-modern/` | 已建 | Go 1.25.0 + Gio v0.10.1;Modern AppShell 已接入虚拟列表、详情和内存图标 |
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
- 已完成:Phase 0 的 `T-001`~`T-004`;Phase 1 的 `T-101`、`T-102`、`T-103`;Phase 2 的 `T-201`~`T-204`;Phase 3 的 `T-301`。
|
||||
- 正在进行:无。
|
||||
- 下一个可领取任务:先按路线图正式落成 `T-302 安装流程整合` 并提交,然后由单 Agent 领取和执行。
|
||||
- 下一个可领取任务:`T-604 隔离 modern 与 Win7 workspace`;完成并提交后继续按审核定稿拆分下一整改任务。
|
||||
|
||||
## 当前可运行内容
|
||||
|
||||
|
||||
@@ -218,7 +218,7 @@ Phase 0 两个 `shell.go` 的文本相似度约为 95.6%;推进到 T-204 后仍
|
||||
|
||||
### 最终处理顺序(定稿)
|
||||
|
||||
1. **[结构 · 最高优先]** 修根 `go.work` Win7 版本污染:根仅 `use ./app-modern` + `./core`;`verify_phase0` / `init` 对根与 `app-win7/go.work` 分别 `go work sync`;更新 `03-tech-stack.md` “三模块根 workspace” 描述;验证 gopls 嵌套 workspace 识别。
|
||||
1. **[结构 · 最高优先 · T-604]** 修根 `go.work` Win7 版本污染:根仅 `use ./app-modern` + `./core`;`verify_phase0` / `init` 对根与 `app-win7/go.work` 分别 `go work sync`;更新 `03-tech-stack.md` “三模块根 workspace” 描述;验证 gopls 嵌套 workspace 识别。
|
||||
2. **[低成本 · 一并做]** 状态模型收口:给“恢复基础状态”迁移补注释与测试;同时裁定 `allowedTransitions`/`CanTransition` 去留(接入 resolver 校验 或 标注仅测试);**不**在拆分基础状态维度前直接删迁移。
|
||||
3. **[可复现性 · 一组收口]** vendor 与 CI 工具链一起处理:确定 vendor 落地或把技术栈状态改为“vendor 待实现”;`phase0-build.yml` 显式预装 go1.20.14 或知情接受自动下载;在远端 Gitea 确认 Actions runner、push/PR 阻断与日志留存。
|
||||
4. **[契约 · 可延后至 Phase 2-3]** 定义并测试 Runtime 的 Close/Publish 并发契约(接上真实事件消费者与关停语义后再定,含并发/重复稳定性测试)。
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
---
|
||||
id: T-604
|
||||
title: 隔离 modern 与 Win7 workspace
|
||||
phase: 0
|
||||
deps: [T-004]
|
||||
status: TODO
|
||||
created: 2026-07-16
|
||||
issue: null
|
||||
context_ref: null
|
||||
claim_branch: null
|
||||
work_branch: null
|
||||
write_paths:
|
||||
- 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.20.14 + 显式 `GOWORK=app-win7/go.work` 同步 Win7 workspace。
|
||||
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` 执行;sync 后 `core/go.mod`、`app-modern/go.mod`、`app-win7/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`。
|
||||
Reference in New Issue
Block a user