文件
hyb-oa/.trellis/tasks/09-05-trellis-upgrade-rule-cleanup/implement.md
T

20 KiB
原始文件 Blame 文件历史

执行清单

授权与阶段

用户已审阅落盘方案并批准 CLI 升级与项目只读预览,随后于 2026-09-05 批准本文件第二阶段四个补丁批次。任务为 in_progress,按该范围实施并验证,不重复申请同一授权;提交、归档、部署与业务修改仍未授权。

当前无原生 update_plan 工具,以工作流要求的本文件记录清单,不使用外部计划系统。已找到本机 Codex 二进制内置 apply_patch 入口,可用于规范编辑,无需更换会话或安装另一套工具。

已完成

  • 核对 0.6.12 安装来源与 Node.js 兼容性。
  • 查询目标固定版本 0.6.16,读取四个版本的上游迁移清单。
  • 执行旧 CLI 的 update --dry-run,并明确其预览限制。
  • 核对目标版本 inline 空上下文门禁例外。
  • 补齐 PRD、设计和执行文件,保留已批准范围。

CLI 升级与只读预览

  1. 在规划门禁允许进入实施后,核对当前 task 和受保护工作区基线;不启动其他任务。
  2. 在仓库与技能发现目录外建立私有备份,覆盖本次拟影响的 CLI 安装及项目受管文件清单,校验归档可读。
  3. 执行 trellis upgrade --tag 0.6.16,失败时先检查安装结果,不自动使用 sudo、force 或另建 npm prefix。
  4. 验证 trellis --version 和可执行文件来源;异常则按设计回滚。
  5. 执行 trellis update --dry-run,不加 --force、--migrate 或 --allow-downgrade,不应用模板。
  6. 对比项目前后摘要,验证只读预览未改写项目模板;记录新增冲突与兼容性事项。

后续需单独审阅

输出全局和项目逐文件精简清单后,再请求相应写入授权。默认不强制覆盖、不重装技能、不启用其他平台、不部署。若改动工作流,遵循高风险只读复核要求;当前 inline 不派发代理,不虚报独立复核通过。

本阶段执行结果(2026-09-05)

  • 已备份原 CLI 安装及 89 个项目受管路径;两份 tar.gz 均通过归档可读性与 SHA-256 校验。
  • 私有备份 ID:hyb-oa-0.6.12-to-0.6.16-hOadBvGw,位于用户本地状态目录的 trellis-maintenance 下,不在仓库或 Skills 发现路径内。
  • 已执行 trellis upgrade --tag 0.6.16,退出码 0;trellis --version 和 npm 安装检查均确认 0.6.16,npm root 与可执行文件来源保持一致。
  • 已执行新版 trellis update --dry-run,退出码 0:31 个模板更新、5 个本地定制冲突、51 个未变文件;未应用更新。
  • 升级与预览前后核对 2,897 个 Git 跟踪及非忽略未跟踪文件,摘要和模式变化为 0。此核验发生在本次验收记录回填之前;回填仅修改当前任务文档。
  • 项目 .trellis/.version 保持 0.6.12;CLI 提醒项目可更新属于预期,不是升级失败。
  • 原项目 task.py validate 通过,inline 的两个上下文清单均为 0 个真实条目;没有为新门禁伪造条目。
  • 原始升级日志、预览日志、安装信息、项目前置摘要和 verification.json 保留在同一私有备份目录,不复制完整本地路径到仓库文档。
  • 本阶段没有修改业务代码、全局规则、项目模板,没有部署、提交或归档;未运行无关业务测试。

恢复旧 CLI 可沿原 npm 安装体系执行 npm install -g @mindfoldhq/[email protected],随后核对 CLI 和安装来源;离线安装目录备份作为补充恢复材料。恢复操作本轮未执行。

验证与完成

  • 本轮检查任务 JSON、规划文档非占位内容及尾随空白。
  • CLI 阶段验证版本、安装来源、备份和项目不变性,不跑业务测试。
  • 规则阶段按触及范围运行治理检查及正反触发场景;先记录既有失败,不为过门禁改业务代码。
  • 交付汇报明确实际执行命令、未执行项和下一阶段边界;不自动提交或归档。

第二阶段执行与待批准补丁批次

已完成五处冲突对照、全局技能描述盘点、两组完整目录重复校验、旧模板对照和隔离兼容性复现。没有运行真实项目 update,没有修改全局配置/技能或项目治理文件。任务材料中的审查结论是本轮唯一仓库写入。

建议一次审阅以下写入范围,再在该范围内自主完成实现和针对性验证,不逐文件反复询问:

  1. 项目模板:经官方 update 合并 31 个新版模板与五个冲突,保持现有配置、workspace 忽略和项目边界;任务运行时作为完整依赖组更新。
  2. inline 兼容:最小适配 .trellis/scripts/task.py、.trellis/scripts/common/task_context.py 及必要的共享模式读取;同步已有治理规约和针对性测试,保持子代理门禁。不得只使用 --allow-empty-context 声称 validate 已解决。
  3. 项目规则:调整 AGENTS、workflow、project-governance、guides/index 及 start/before-dev/brainstorm/check/finish-work 五个技能,使批准、读取、验证、收尾合同一致。只改本任务规则,不改现有业务实现。
  4. 全局最小治理:两套完全重复审核技能在 Codex 中仅启用共享副本;10 个全局 Trellis 技能增加显式调用限制并明确兼容后备定位;缩短审核、find-skills、UI 技能描述。先备份拟改用户文件,保留其他工具可访问的目录,不重装或批量删除。

风险匹配验证矩阵

变化 最小验证 不默认执行
模板运行时 task.py --help、get_context.py、当前任务 validate、Python 语法、完整依赖导入 业务全量测试/部署
inline 适配 inline 空清单、历史 seed、合法条目、坏 JSON、越界路径;子代理空清单仍失败;start/validate 一致 重写历史任务、伪造 JSONL
状态与确认 无任务咨询、未批准规划、已批准规划、只回填文档、范围实质变化分别检查预期路由 每轮重新批准同一方案
读取与质量 单层小改只读相关规约;既有未变资料不重读;其他任务失败不越界修复 所有技能与业务文档通读
全局技能 元数据/配置语法、明确/隐式调用场景;新会话检查重复描述和发现结果 批量升级技能或其他平台配置
收尾 已授权阶段完成但整体未完成时不归档;无提交/生产授权不越界 自动提交、归档、真实数据操作

高风险工作流/运行时修改仍需只读复核;当前 inline 不派发 implement/check 代理,不能把主会话验证冒充独立 reviewer,交付记录必须明确复核方式与剩余缺口。

第二阶段实施结果(2026-09-05)

  • 用户已批准上述四批写入,实际完成,不再停留于提案。CLI 与项目版本均为 0.6.16。
  • 官方 trellis update --create-new 更新 31 个模板;五个冲突逐项处理,全部新生成的 .new 副本已处置。配置合入新版说明,保留关闭自动提交和 inline;保留 workspace 忽略及项目 workflow overlay;task_context 更新后作 inline 适配;channel 文档保留现有末尾空白规范,语义与上游一致。
  • task.py 与 task_context.py 使用同一 get_codex_dispatch_mode。inline 空清单和历史 seed-only 可用,真实条目仍验证;子代理空上下文仍拒绝。验证器拒绝坏 JSON、缺失/空路径、空 reason、不存在文件及越界路径/符号链接。
  • AGENTS、workflow、project-governance、guides/index 和五个步骤技能已精简:按风险读资料与验证;已批准规划可启动;缺少可选工具不循环停工;不自动提交、归档、部署或清理其他任务。
  • 全局两份重复审核技能通过 Codex 路径配置停用,保留共享副本与原目录;10 个全局 Trellis 技能增加显式调用限制和兼容后备说明。四个技能描述缩短,法律/非法律边界保留,其他工具配置未改。
  • 第二阶段私有备份 ID:hyb-oa-rules-stage2-FcbImknm,包含修改前 92 个项目路径与 15 个全局备份入口;两份归档可读并通过 SHA-256。官方 update 自动创建的仓库内备份触发敏感路径检查,已完整移入同一私有目录并收紧权限,未删除备份内容。

验证结果

  • cd server && npm test -- tests/unit/scripts/trellis-runtime-contract.test.js tests/unit/scripts/check-trellis-governance.test.js:19/19 通过。涵盖两种模式的 start/validate、历史 seed、合法及非法条目、路径逃逸、真实 hook 状态解析与提交/归档边界。
  • python3 .trellis/scripts/task.py --help、当前任务 validate、get_context.py --mode phase --step 2.1 --platform codex:通过;31 个 Python 文件 AST 语法检查通过。
  • node scripts/qa/check-trellis-governance.mjs:PASS,0 errors / 0 warnings;已修复本任务 PRD 章节与 scope 缺失,未改业务检查规则。
  • node scripts/qa/check-process-contract.mjs --baseline --json 与 node scripts/qa/audit-docs.mjs --check-registry:通过。
  • 26 个技能 frontmatter、10 个显式调用策略、项目 YAML 解析通过;本机 Codex features list 能加载用户配置。与备份逐字对比确认原用户配置保留,仅追加两项已批准的停用设置。
  • git diff --check:通过。保护基线核验:46 个路径变化均在批准范围;业务代码、原先用户修改的前后端 spec 均未触碰。
  • 新版 update 只读复查无待自动更新项;剩余 11 个提示为明确保留的本地定制或末尾空白差异,不伪造回执哈希隐藏这些差异。

未完成的独立验收

  • 新会话技能发现与实际隐式/显式调用尚未验证,当前运行会话可能仍使用旧的技能列表与已注入指令。配置解析成功不是实际新会话发现通过。
  • 当前 inline 禁止派发 implement/check 代理,未启动独立 reviewer。高风险工作流与运行时独立只读复核仍待完成;19 项测试和主会话自查不冒充该门禁。
  • 本轮没有提交、推送、归档、部署、业务代码修改或其他项目更新。任务保持 in_progress,以便继续复核,不声称整个治理任务完成。

第三阶段执行结果(2026-09-05)

  • 补齐全局描述/来源/配置覆盖及有疑点技能正文审查;具体保留和新增五项建议见 design.md 第三阶段。
  • 启动新的本机 app-server,仅执行 initialize 与 skills/list(forceReload=true),分别验证项目和用户上下文;不发送 turn/start、不启动模型或子代理。
  • 真实发现断言通过:两组审核技能各一份启用,旧副本停用;项目 12 个技能可发现;10 个全局 Trellis 后备仍显式可用。两个停用副本同时补 allow_implicit_invocation=false,共享副本保持 true。
  • 原先“重复名称仍出现即去重未生效”的说法不准确,已在 design.md 更正;总发现条目包括停用项。当前客户端提示词来源与模型实际选择行为未测试,不夸大为端到端 UI 验收。
  • 额外备份 duplicate-policy-before.tar.gz 已校验;两份 YAML 语义对比确认只有调用策略布尔值改变。脱敏真实加载证据为 skill-discovery-final.json,位于既有私有备份目录。
  • 未修改 testing/workspace-hygiene/agents-bootstrap/mcp-tools-catalog/high-fidelity-sim-core:它们是新增的明确提案,不属于前阶段已批准的实际写入清单。
  • 剩余强制验收为独立只读复核;主会话和现有 19 项回归不充当独立 reviewer。当前模式不允许派发该 reviewer,不能以“继续”反复申请已经充分的操作授权。

第四阶段执行结果(2026-09-05)

用户已批准 G6–G10 五个具体技能文件。已使用本机原生补丁入口完成 testing、workspace-hygiene、agents-bootstrap、mcp-tools-catalog 和 high-fidelity-sim-core 的 SKILL.md 修改;未扩大到附属模板、脚本、调用元数据或其他技能。

  • 私有备份 ID:hyb-oa-global-five-VmWeZjgM。skills-before.tar.gz 保存五个原目录,通过归档可读性和 SHA-256 校验;不存放在技能发现路径中。
  • 完整备份比对确认只有预期五个 SKILL.md 内容变化;所有附属文件、链接和文件权限保持一致,无意外新增资源。
  • YAML frontmatter、资源引用、尾随空白及针对性规则断言通过。保留测试确定性、删除前审批/证据保护、覆盖前备份、实际工具取证和仿真物理语义;移除每轮状态输出、硬编码验证、旧流程依赖、特殊确认词和暗含提交授权。
  • 新的 app-server 进程执行 skills/list(forceReload=true),用户与项目上下文各找到五个唯一启用技能,返回描述与更新文件一致,加载错误为 0;未发送模型 turn 或派发代理。
  • validation.json 和 discovery.json 保存在同一私有备份目录。真实加载验证不等于模型逐场景行为测试,后者未运行。
  • 本轮修改为技能文本和当前任务记录,Trellis 运行时代码及业务代码未变化;复用此前 19 项运行时回归结果,不重复执行无关测试。

至此,所有已审查并获批的修改批次均已实施。任务仍不标记整体完成:唯一剩余强制门禁是独立只读复核,受当前 inline 模式限制未执行。没有提交、归档、部署或修改其他项目。

本轮收尾(2026-09-05)

用户要求先完成本轮工作。获批修改和可执行验证均已完成,任务由 in_progress 转为 review,停止继续扩展清理范围。复用输入未变化的 19 项回归与真实技能发现结果,完成最终治理、上下文和差异格式检查。

独立只读复核保留为唯一未完成的强制验收,不将本轮收尾解释为豁免或通过,不设置 completedAt。未提交、归档、部署或清理其他任务;后续只需针对本任务已有差异完成独立复核,不重做升级和已完成的精简。

项目复核更正与增量加固(2026-09-06)

用户已认可原项目 diff 的规则删改、hooks 和来源/哈希审查,并用 main 实测纠正 TR-01 归因。main 对假值 file 一律跳过;升级已拒绝无 marker 的空 file,仅保留带 marker 的遗留宽松。相对固定 0.6.16 原厂的本地差异,不等于相对 main 新引入回归;撤回因此阻断升级的结论。旧探针结果及原报告保留,三方对照另存 seed-attribution.json,不把旧失败改写成修后通过。

本会话选择用户允许的“原 task 内先小修再合”路径,不新建 task,不重做规划。只修改纯历史 seed 的识别条件、现有回归和对应 spec;不改 start、hooks、模板回执或用户级技能。原项目审查 PASS 与本次新增补丁待增量复核分别记录;G1–G10 用户级修改不在此次项目 diff 的独立复核范围。

  • 保存 48 文件增量前基线;main 保持干净,不覆盖其他升级改动。
  • main / 原厂 0.6.16 / 升级未修版用同一组合成输入、独立 Python 子进程完成对照。
  • 先补负向回归并在旧实现上确认失败,再将豁免缩到 inline 且对象仅有 _example 一个键。
  • 验证纯 seed 仍为零上下文、混合字段必拒绝,保留非 inline 门禁;同步精确 spec。
  • 跑针对性回归、治理/敏感扫描、语法/差异检查,交仅本轮增量 diff;不自动提交、合并、推送、归档或部署。
  • 用户对本次新增 seed 补丁完成独立增量复核并判定通过;独立探针及红绿复现见本文件最终验收记录,未借用原升级 PASS。

增量验证与交接

  • 运行时代码只替换一行判定为 inline and set(data) == {"_example"}。混合 marker 统一进入既有 placeholder 拒绝分支,start、hooks 与模板哈希未改。
  • 现有测试增加 30 个组合(10 种混合字段 × inline/sub-agent/auto)和 1 个纯 seed 后跟坏条目的场景;纯 seed 原用例补零计数及显式 sub-agent 断言。两份 manifest 均断言具体行号、完整 placeholder 诊断与 exit 1,没有宽泛正则。
  • 新测试 + 修改前实现:exit 1,9 failed / 41 passed;9 个失败均为 inline 混合 seed 的假通过。应用一行加固后:exit 0,50/50 PASS,约 13 秒。负向结果保留于 seed-red-tests.log,正向结果另存 seed-green-tests.log。
  • 四方对照见 seed-attribution-after.json:纯 seed 及合法条目仍通过,带 marker 的空/false/null file 从 0 收紧为 1;没有覆盖旧三方结果文件。
  • 测试命令在复用的隔离 fixture 内执行,修改后的源码与测试先同步并逐字比对;只复用主工作区已有 node_modules,不安装依赖,测试所用 task/session 均为合成数据,不连接生产:
review_root="$(cat /tmp/hyb-trellis-upgrade-review-pointer)"
(cd "$review_root/fixture/server" && env -i PATH="$PATH" HOME="$review_root/home" PYTHONDONTWRITEBYTECODE=1 node node_modules/vitest/vitest.mjs run --config vitest.review.config.cjs)
  • python3 .trellis/scripts/task.py validate .trellis/tasks/09-05-trellis-upgrade-rule-cleanup、node --check server/tests/unit/scripts/trellis-runtime-contract.test.js、28 个运行时 Python 文件 AST 语法检查通过。
  • node scripts/qa/check-trellis-governance.mjs(含敏感扫描):0 errors / 0 warnings;node scripts/qa/check-process-contract.mjs --baseline --json、node scripts/qa/audit-docs.mjs --check-registry、git diff --check:exit 0。文档注册检查仍有既有 1 项 warning(22 个未登记文件),不计成零告警,也不顺手修复。
  • 本轮仅 6 文件有增量:validator、既有回归文件、governance spec 与当前 task 的 prd/implement/task.json;其余 42 文件、全部文件模式、hooks、task.py 及哈希回执与增量前基线一致。main 未写入升级改动,保持干净。
  • 本轮增量在主工作区忽略目录 artifacts/qa-flow/trellis-upgrade-review/seed-hardening.diff,报告更正位于同目录 review.md;旧完整 diff 和原探针结果均保留。任务回到 review,不以主会话加固验证冒充新的独立复核,不设置 completedAt。

独立复核通过与合入授权(2026-09-06)

  • 用户独立逐文件对照两个审查 diff:48 文件、无增删,seed 增量仅 6 文件变化、42 文件不变;hooks、task.py 和模板哈希未变。独立复制 common 包验证各输入,仅收紧混合 marker,纯 seed、合法条目和具体诊断/行号符合合同。
  • 用户先 cmp 核对 fixture 与受审源码/测试,再独立运行:修后 50/50 PASS(14.3 秒);另拷并还原旧判定后 9 failed / 41 passed。9 个失败均为 inline 混合 seed 的假通过,不是采信本会话日志。
  • 历史兼容性分清扫描范围:main(492920c)有 138 行纯 _example;受审 worktree 有 136 行,混合键均为 0。两侧差异仅为 main 的错误可解释性/部署隔离两任务共 4 行,以及 worktree 的本任务 2 行;合并后预期为 140 行纯 seed。升级版 task_store 不再生成 seed 行。本会话复扫已确认提交前两侧计数,合入后再核验 140 行,不将不同基线计数混写。
  • 两项非阻断观察已沉淀到现有 governance spec:固定上游 hook 按 file/file-or-path 真值计数或注入,不能替代更严的 validator;sub-agent 的纯 seed 先报 placeholder,而空清单报零上下文,区分 Python 文案与 governance 诊断键。不改 hooks、运行时代码、测试或哈希回执。
  • 用户明确批准:只补上述文档收尾,把受审的 48 文件作为一个项目升级提交,在独立 worktree 提交后合入 main,保留 main 已有业务提交。不 push、归档、部署、修改业务或用户级技能,也不移除独立 worktree。
  • 执行时仅 4 个文档/任务文件相对已审版本补充收尾:project-governance.md、prd.md、implement.md、task.json;其他 44 文件内容及模式必须保持一致。复用输入未变的独立运行时验收,补跑治理/敏感扫描、文档/上下文检查及合入后的针对性回归。
  • 项目原 diff 与 seed 增量的独立复核均已通过;G1–G10 用户级全量独立复核仍不在这份项目 diff 的证明范围,不标记整体 completed、不设置 completedAt、不自动归档。提交和合并的实际标识以 Git 历史及本次交付回复为准。