升级本机 Trellis 至 0.6.12(upgrade-trellis-0-6-12)
这个提交包含在:
@@ -0,0 +1 @@
|
||||
{"_example": "Fill with {\"file\": \"<path>\", \"reason\": \"<why>\"}. Put spec/research files only — no code paths. Run `python3 .trellis/scripts/get_context.py --mode packages` to list available specs. Delete this line once real entries are added."}
|
||||
@@ -0,0 +1,40 @@
|
||||
# Trellis 0.6.12 升级设计
|
||||
|
||||
## 1. 升级边界
|
||||
|
||||
升级分为两个独立但必须一致的对象:npm 全局安装的 `@mindfoldhq/trellis` CLI,以及仓库中由 `trellis update` 管理的 `.trellis/`、`.codex/`、`.agents/` 和 `AGENTS.md` 模板。`@mindfoldhq/trellis-core` 由 CLI 包依赖并与 CLI 同版本发布,不单独在项目中新增依赖。
|
||||
|
||||
## 2. 冲突处理策略
|
||||
|
||||
先用 0.6.12 CLI dry-run 确认变更,再运行 `trellis update --create-new --migrate`。自动更新文件接受上游版本;本地修改文件按下表处理,禁止 `--force`:
|
||||
|
||||
| 文件 | 决策 |
|
||||
| --- | --- |
|
||||
| `.trellis/scripts/common/task_context.py` | 合入上游 `warning` → `warning_message` 修复,保留其余本地行为 |
|
||||
| `.trellis/config.yaml` | 保留 `session_auto_commit: false`、`codex.dispatch_mode: inline` 和项目注释,吸收 0.6.12 有价值的配置说明 |
|
||||
| `.trellis/.gitignore` | 保留 `workspace/` 忽略;上游 sidecar 仅删除该项目规则,不接受 |
|
||||
| `.trellis/workflow.md` | 保留文件头部 hyb-oa overlay;其余上游模板无实质差异时不重写 |
|
||||
| `AGENTS.md` | 在既有项目规则之后加入受管 `TRELLIS:START/END` 指引块,不覆盖现有规则 |
|
||||
| `trellis-channel` command reference | 仅空白差异,不制造功能性提交 |
|
||||
|
||||
升级后删除所有 `.new` sidecar;保留 CLI 自动创建的忽略型备份,直到验证完成。模板 hash 只由 CLI 更新,不手工编辑。
|
||||
|
||||
## 3. 自动更新面
|
||||
|
||||
接受 0.6.12 对以下运行时的上游更新:
|
||||
|
||||
- 活动任务清理使用已解析 session key,避免错误清除 fallback/歧义会话。
|
||||
- Git helper 增加可选超时;session context 对自动 polyrepo 探测设置仓库数量与 Git 探测时间边界。
|
||||
- Codex hook 独立按 UTF-8 解码输入。
|
||||
- Codex implement/check/research agent 在注入输出被截断时优先读取保存的完整 hook 输出。
|
||||
|
||||
## 4. 状态与兼容
|
||||
|
||||
- 更新期间不运行 `task.py archive`,不迁移或删除任何 task。
|
||||
- 当前升级 task 保持 planning,直到用户批准本设计后才 `task.py start`。
|
||||
- 报销 task 仍保持 `in_progress`;升级 task 完成后可恢复该任务为当前 session 指针,不改变其业务状态。
|
||||
- 若升级验证失败,先停止,不用 `--force` 修复;必要时把 CLI 降回 `0.6.9`,并从 CLI 生成的备份恢复本轮涉及的受管文件。
|
||||
|
||||
## 5. 安全与输出
|
||||
|
||||
升级不访问生产系统,不读取 Secret 或个人资料。命令输出和提交仅包含版本、固定文件名、PASS/FAIL 与公开的上游变更摘要,不记录完整本地路径。
|
||||
@@ -0,0 +1 @@
|
||||
{"_example": "Fill with {\"file\": \"<path>\", \"reason\": \"<why>\"}. Put spec/research files only — no code paths. Run `python3 .trellis/scripts/get_context.py --mode packages` to list available specs. Delete this line once real entries are added."}
|
||||
@@ -0,0 +1,41 @@
|
||||
# Trellis 0.6.12 升级实施计划
|
||||
|
||||
## 1. 实施前门禁
|
||||
|
||||
- [x] 用户审查并批准 PRD、设计和本实施计划。
|
||||
- [x] 运行 `git status --short`,确认除当前 task 规划文件外没有未识别改动。
|
||||
- [x] 记录全局 CLI、项目版本和 npm 最新稳定版,拒绝预发布版本。
|
||||
- [x] 运行 0.6.12 `update --dry-run`,确认变更集合仍与规划一致;若新增覆盖范围则停止并重新审查。
|
||||
|
||||
## 2. 升级与合并
|
||||
|
||||
- [x] 用现有 npm 全局前缀安装 `@mindfoldhq/[email protected]`,确认 CLI 生效。
|
||||
- [x] 执行 `trellis update --create-new --migrate`,不使用 `--force`。
|
||||
- [x] 接受 7 个自动更新文件和 CLI 管理的版本/hash 更新。
|
||||
- [x] 逐项合并 `task_context.py`、`config.yaml`、`AGENTS.md`;明确保留 `.gitignore`、workflow overlay 和纯空白 command-reference 当前版本。
|
||||
- [x] 清除已决策的 `.new` sidecar,确认任务、spec、workspace 和开发者状态未被覆盖。
|
||||
|
||||
## 3. 验证
|
||||
|
||||
- [x] `trellis --version` 与 `.trellis/.version` 均为 `0.6.12`。
|
||||
- [x] `trellis update --dry-run` 无版本升级或 pending migration,仓库无 `.new` 文件。
|
||||
- [x] `python3 -m compileall -q .trellis/scripts .codex/hooks`。
|
||||
- [x] `python3 ./.trellis/scripts/task.py validate .trellis/tasks/08-02-upgrade-trellis-0-6-12`。
|
||||
- [x] `python3 ./.trellis/scripts/get_context.py`、`task.py current --source` 和活动任务列表正常。
|
||||
- [x] `node scripts/qa/check-trellis-governance.mjs`。
|
||||
- [x] `node scripts/qa/check-process-contract.mjs --baseline --json`。
|
||||
- [x] `node scripts/qa/check-sensitive-content.mjs` 与 `git diff --check`。
|
||||
- [x] 核对 `session_auto_commit: false`、`dispatch_mode: inline`、`workspace/` ignore、hyb-oa workflow overlay 与受管 AGENTS block。
|
||||
|
||||
## 4. 提交与恢复
|
||||
|
||||
- [ ] 按逻辑提交升级文件和任务证据,中文 commit message 引用 `upgrade-trellis-0-6-12`。
|
||||
- [ ] 不部署应用,不归档报销 task;升级 task 收口后恢复报销 task 的 session 当前指针。
|
||||
- [ ] 若验证失败且无法在既定范围内修复,停止并按设计回退 CLI 和受管文件,不留下半升级状态。
|
||||
|
||||
## 5. 实施证据(2026-08-02)
|
||||
|
||||
- 全局 CLI、项目版本与 npm 稳定版均为 `0.6.12`;稳定 dry-run 仅报告 4 个明确保留的项目 overlay,没有升级、自动更新或 migration 待执行。
|
||||
- 7 个上游模板文件自动更新;`task_context.py` 与 AGENTS 受管块合入,config 的 inline/禁用自动提交和项目注释保留,workspace ignore 与 workflow overlay 未被覆盖,零 `.new` 残留。
|
||||
- 首轮治理门禁发现本轮升级备份复制了本机私有平台设置并触发完整路径敏感扫描;在 Git 与固定旧 CLI 已提供回滚路径后,仅删除本轮生成的精确备份目录并复跑,治理和敏感扫描转绿。未删除历史备份。
|
||||
- Python compileall、task validate/current/list、get_context、Trellis governance、process contract、敏感内容扫描和 `git diff --check` 全部 PASS;未访问生产系统或修改业务代码。
|
||||
@@ -0,0 +1,54 @@
|
||||
# 升级本机 Trellis 工作流至 0.6.12
|
||||
|
||||
## Goal
|
||||
|
||||
将本机全局 Trellis CLI 和 hyb-oa 项目内 Trellis 运行时从 `0.6.9` 升级到 npm 最新稳定版 `0.6.12`,获得 0.6.10–0.6.12 的上下文注入、会话清理、Git 探测和 UTF-8 修复,同时完整保留项目自己的 Trellis-first 治理规则。
|
||||
|
||||
## Background
|
||||
|
||||
- 本机 `trellis --version` 与项目 `.trellis/.version` 当前均为 `0.6.9`;`@mindfoldhq/trellis` 和 `@mindfoldhq/trellis-core` 最新稳定版均为 `0.6.12`,两包按同一版本发布。
|
||||
- 使用 `0.6.12` CLI 执行只读 `trellis update --dry-run`,确认 7 个模板文件可自动更新,6 个本地定制文件需要人工决策;用户数据目录 `.trellis/tasks/`、`.trellis/spec/`、`.trellis/workspace/`受保护。
|
||||
- 0.6.10–0.6.12 主要修复 Python 3.9–3.11 兼容、Codex 截断的 `SubagentStart` 输出恢复、`task.py finish` 会话清理、UTF-8 hook 输入、Git 状态探测超时/数量边界,以及 Pi/channel 运行时问题。
|
||||
|
||||
## Scope
|
||||
|
||||
- 本机 npm 全局安装的 `@mindfoldhq/trellis` CLI。
|
||||
- 仓库中由 Trellis 管理的 `.trellis/` 运行时、`.codex/` agent/hook、共享 Trellis skill 参考文件和 `AGENTS.md` 受管指引。
|
||||
- 当前项目的版本、模板 hash、配置兼容、活动任务解析和升级验证证据。
|
||||
|
||||
## Requirements
|
||||
|
||||
- 同时升级全局 CLI 和项目生成文件,结束后两者版本必须一致为 `0.6.12`。
|
||||
- 禁止使用 `trellis update --force`;必须先 dry-run,再以 `.new` sidecar 方式处理本地冲突,并逐项人工合并。
|
||||
- 必须保留 hyb-oa 的 workflow overlay、中文提交要求、事实源优先级、生产审批边界和敏感信息约束。
|
||||
- 必须保留 `.trellis/config.yaml` 中 `session_auto_commit: false` 与 `codex.dispatch_mode: inline`。
|
||||
- 必须保留 `.trellis/.gitignore` 对个人 `workspace/` 日志的忽略,不得把个人日志纳入版本控制。
|
||||
- `.trellis/tasks/`、`.trellis/spec/`、`.trellis/workspace/`、开发者身份和活动任务状态不得丢失或被模板覆盖。
|
||||
- 上游可自动更新的运行时代码、Codex agent 和 hook 文件按 0.6.12 接收;本地修改的 `task_context.py` 合入 Python 兼容修复。
|
||||
- `AGENTS.md` 可加入 0.6.12 的受管 Trellis 指引块,但不得覆盖其现有 hyb-oa 规则;纯空白差异不制造无意义变更。
|
||||
- 升级仅作用于本机工具链和仓库 Trellis/Codex 集成,不修改业务代码、不部署、不触碰生产配置或真实数据。
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- [x] `trellis --version`、项目 `.trellis/.version` 和 npm 稳定版均为 `0.6.12`。
|
||||
- [x] `trellis update --dry-run` 不再提示版本升级或待执行 migration;所有本地冲突均已明确保留或合并,仓库内没有遗留 `.new` 文件。
|
||||
- [x] 7 个自动更新文件包含 0.6.12 的会话清理、Git 探测、UTF-8 和 Codex 截断上下文恢复修复。
|
||||
- [x] `task_context.py` 保留现有行为并合入上游 `warning_message` 兼容修复。
|
||||
- [x] `session_auto_commit: false`、`codex.dispatch_mode: inline`、`workspace/` ignore 和 hyb-oa workflow overlay 均保持有效。
|
||||
- [x] 当前任务、其他活动任务、spec、workspace 和开发者身份仍可由 Trellis 脚本正常解析。
|
||||
- [x] Python 编译、task validate、上下文读取、Trellis governance、process contract、敏感内容扫描和 `git diff --check` 全部通过。
|
||||
- [ ] 变更以中文提交并引用 `upgrade-trellis-0-6-12`;不自动归档仍在运行的报销任务。
|
||||
|
||||
## Out of Scope
|
||||
|
||||
- 不升级到 `0.7.0-beta` 或其他预发布版本。
|
||||
- 不切换到 channel-driven、TDD 或 sub-agent 自动派发工作流。
|
||||
- 不修改项目业务 spec、产品文档、应用代码、依赖或生产环境。
|
||||
- 不清理历史任务、个人 workspace 或其他 Trellis 运行证据。
|
||||
|
||||
## Test Plan
|
||||
|
||||
- 比对全局 CLI、项目版本与 npm 稳定版,并复跑 `trellis update --dry-run`。
|
||||
- 编译 `.trellis/scripts` 与 Codex Python hooks,验证 task/context 生命周期命令可执行。
|
||||
- 运行当前 task validate、Trellis governance、process contract、敏感内容扫描和 `git diff --check`。
|
||||
- 逐项断言 `session_auto_commit: false`、`dispatch_mode: inline`、`workspace/` ignore、hyb-oa workflow overlay、AGENTS 受管块和零 `.new` 残留。
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "upgrade-trellis-0-6-12",
|
||||
"name": "upgrade-trellis-0-6-12",
|
||||
"title": "升级本机 Trellis 工作流至 0.6.12",
|
||||
"description": "将本机 Trellis CLI 与 hyb-oa 项目工作流从 0.6.9 升级到最新稳定版 0.6.12,安全合并上游模板并保留项目定制。",
|
||||
"status": "in_progress",
|
||||
"dev_type": null,
|
||||
"scope": "tooling",
|
||||
"package": null,
|
||||
"priority": "P2",
|
||||
"creator": "shunli",
|
||||
"assignee": "shunli",
|
||||
"createdAt": "2026-08-02",
|
||||
"completedAt": null,
|
||||
"branch": null,
|
||||
"base_branch": "main",
|
||||
"worktree_path": null,
|
||||
"commit": null,
|
||||
"pr_url": null,
|
||||
"subtasks": [],
|
||||
"children": [],
|
||||
"parent": null,
|
||||
"relatedFiles": [],
|
||||
"notes": "",
|
||||
"meta": {}
|
||||
}
|
||||
在新工单中引用
屏蔽一个用户