@@ -163,6 +163,31 @@ created: 2026-06-05
163163
164164目标:硬切到 protocol kernel。线上用户少,不做 shadow writer,不保留 runtime compatibility layer。
165165
166+ ### W2.0a Registry Snapshot
167+
168+ - [ ] Depends: W1 gate
169+ - [ ] Input: ` .sopify-skills/plan/_registry.yaml ` (当前全部 registry entries,当前预期 4 条)
170+ - [ ] Output: 导出当前全部 registry entries 为人类可读摘要,存入当前 P8 plan 的 ` assets/registry-lifecycle-snapshot.md ` (随 P8 归档时一起进 history)
171+ - [ ] Verify: 快照文件存在于 ` assets/ ` 且包含全部 plan 的 id + lifecycle_state + 关键时间戳
172+
173+ ### W2.0b Catalog Relocation + Generator Runtime-Free
174+
175+ - [ ] Depends: W1 gate
176+ - [ ] Input: ` runtime/builtin_skill_packages/*/skill.yaml ` (5 个 builtin skill YAML 源)
177+ - [ ] Input: ` runtime/builtin_catalog.generated.json `
178+ - [ ] Input: ` runtime/skill_schema.py ` / ` runtime/_yaml.py `
179+ - [ ] Output: 迁移 YAML 源 → ` skills/catalog/<skill_id>/skill.yaml ` (扁平路径,去掉 ` builtin_skill_packages/ ` 中间层)
180+ - [ ] Output: 迁移生成产物 → ` skills/catalog/builtin_catalog.generated.json `
181+ - [ ] Output: 迁移 ` runtime/skill_schema.py ` → ` sopify_contracts/skill_schema.py ` (保留旧名,不改为 skill_manifest.py)
182+ - [ ] Output: 创建 ` scripts/_yaml_subset.py ` :仅 ` load_yaml ` 最小解析子集,不含 ` dump_yaml ` / 写逻辑
183+ - [ ] Output: 改造 ` scripts/generate-builtin-catalog.py ` :import 改为 ` sopify_contracts.skill_schema ` + ` _yaml_subset ` ;输入路径改为 ` skills/catalog/*/skill.yaml ` ;输出路径改为 ` skills/catalog/builtin_catalog.generated.json `
184+ - [ ] Output: 从 skill schema normalizer(` normalize_skill_manifest ` )和 generated JSON 删除 ` runtime_entry ` + ` entry_kind ` + ` supports_routes ` 字段
185+ - [ ] Output: 更新 CI drift check 路径(` ci.yml:36 ` + ` scripts/release-preflight.sh:28,70 ` )
186+ - [ ] Output: 更新 ` skills/{en,zh}/header.md.template:351 ` 对 generated JSON 路径的引用
187+ - [ ] Verify: ` python3 scripts/generate-builtin-catalog.py ` 成功输出 ` skills/catalog/builtin_catalog.generated.json `
188+ - [ ] Verify: generated JSON 不含 ` runtime_entry ` / ` entry_kind ` / ` supports_routes ` 字段
189+ - [ ] Verify: ` rg "from runtime|import runtime" scripts/generate-builtin-catalog.py ` returns no matches
190+
166191### W2.1 Extract/Keep Minimal CLI Entrypoints
167192
168193- [ ] Depends: W1 gate
@@ -184,6 +209,16 @@ created: 2026-06-05
184209- [ ] Verify: ` rg "runtime_gate|sopify_runtime|runtime/" installer scripts/install_sopify.py ` has no active dependency except retired docs/tests slated for deletion
185210- [ ] Verify: install smoke still installs payload assets
186211
212+ ### W2.2b Catalog Payload Resource
213+
214+ - [ ] Depends: W2.2, W2.0b
215+ - [ ] Input: ` skills/catalog/builtin_catalog.generated.json ` / ` installer/payload.py ` / ` installer/inspection.py `
216+ - [ ] Output: ` installer/payload.py ` 安装时拷贝 ` builtin_catalog.generated.json ` 到 payload
217+ - [ ] Output: ` payload-manifest.json ` 记录 catalog 路径
218+ - [ ] Output: ` sopify_doctor ` 检查 catalog 文件存在性
219+ - [ ] Verify: install smoke 安装后 payload 目录包含 catalog JSON
220+ - [ ] Verify: ` sopify_doctor ` 报告 catalog 健康状态
221+
187222### W2.3 Rename and Scope sopify_writer
188223
189224- [ ] Depends: W1 schemas
@@ -195,6 +230,28 @@ created: 2026-06-05
195230- [ ] Verify: no new writer CLI is introduced by default
196231- [ ] Verify: old ` canonical_writer ` import path is removed; no compatibility alias by default
197232
233+ ### W2.3b CI Runtime Detachment
234+
235+ - [ ] Depends: W2.3, W2.0b
236+ - [ ] Input: ` .github/workflows/ci.yml ` / ` scripts/release-preflight.sh `
237+ - [ ] Output: restructure ` runtime-tests ` job 为 ` protocol-tests ` job:删除 runtime-only test steps,保留 catalog drift / protocol smoke / installer-payload smoke / 非 runtime 测试
238+ - [ ] Output: 删除 ` check-bundle-smoke.sh ` step
239+ - [ ] Output: 删除 ` check-prompt-runtime-gate-smoke.py ` step
240+ - [ ] Output: 替换为 ` sopify_protocol_check ` smoke(W1.6 已建)
241+ - [ ] Output: 保留 catalog drift check(路径已更新 by W2.0b)+ installer/payload smoke
242+ - [ ] Verify: CI pipeline 绿;无 runtime-only test step
243+ - [ ] Verify: catalog drift check 和 protocol smoke 在 CI 中正常运行
244+
245+ ### W2.3c Host Prompt / Copilot Instructions Cutover
246+
247+ - [ ] Depends: W2.3b
248+ - [ ] Input: ` .github/copilot-instructions.md `
249+ - [ ] Output: 清理 runtime-first 措辞(runtime gate / sopify_runtime 引用)
250+ - [ ] Output: 删除不存在的 ` go_plan_runtime.py ` 引用
251+ - [ ] Output: 替换为 protocol-first 入口(protocol.md + sopify_protocol_check + sopify_writer)
252+ - [ ] Verify: ` rg "runtime_gate|sopify_runtime|go_plan_runtime" .github/copilot-instructions.md ` returns no matches
253+ - [ ] Verify: copilot-instructions.md 不再引用 runtime-first 入口
254+
198255### W2.4 Migrate StateStore to 2-File Model
199256
200257- [ ] Depends: W2.3
@@ -231,7 +288,7 @@ created: 2026-06-05
231288
232289### W2.7 Reclassify Tests
233290
234- - [ ] Depends: W2.1 -W2.6
291+ - [ ] Depends: W2.0b, W2.1-W2.3, W2.2b, W2.3b-W2.3c, W2.4 -W2.6
235292- [ ] Input: all tests importing runtime
236293- [ ] Output: keep protocol / contracts / sopify_writer / installer / compliance tests
237294- [ ] Output: delete runtime router/engine/gate/output tests
@@ -259,7 +316,7 @@ created: 2026-06-05
259316
260317### W2.10 Delete runtime/ Directory
261318
262- - [ ] Depends: W2.1 -W2.9
319+ - [ ] Depends: W2.0b, W2.1-W2.3, W2.2b, W2.3b-W2.3c, W2.4 -W2.9
263320- [ ] Input: ` runtime/ ` all files
264321- [ ] Output: delete ` runtime/ `
265322- [ ] Verify: ` test ! -d runtime `
@@ -280,7 +337,7 @@ created: 2026-06-05
280337
281338### Wave 2 Gate
282339
283- - [ ] Depends: W2.1 -W2.11
340+ - [ ] Depends: W2.0a-W2.0b, W2.1-W2.3, W2.2b, W2.3b-W2.3c, W2.4 -W2.11
284341- [ ] Verify: runtime directory absent
285342- [ ] Verify: registry absent
286343- [ ] Verify: no runtime imports in active code/tests
0 commit comments