depa-codument 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +262 -0
  3. package/package.json +63 -0
  4. package/src/cli/commands/archive.ts +519 -0
  5. package/src/cli/commands/decisions.ts +123 -0
  6. package/src/cli/commands/engineering.ts +105 -0
  7. package/src/cli/commands/init.ts +54 -0
  8. package/src/cli/commands/list.ts +73 -0
  9. package/src/cli/commands/modeling.ts +105 -0
  10. package/src/cli/commands/show.ts +238 -0
  11. package/src/cli/commands/status.ts +140 -0
  12. package/src/cli/commands/upgrade-track.ts +385 -0
  13. package/src/cli/commands/upgrade-workspace.ts +138 -0
  14. package/src/cli/commands/validate.ts +330 -0
  15. package/src/cli/engineering/config.ts +68 -0
  16. package/src/cli/engineering/lint.ts +58 -0
  17. package/src/cli/engineering/merge.ts +172 -0
  18. package/src/cli/engineering/registry.ts +230 -0
  19. package/src/cli/engineering/schema.ts +126 -0
  20. package/src/cli/engineering/validate.ts +286 -0
  21. package/src/cli/index.ts +136 -0
  22. package/src/cli/modeling/config.ts +68 -0
  23. package/src/cli/modeling/lint.ts +58 -0
  24. package/src/cli/modeling/merge.ts +172 -0
  25. package/src/cli/modeling/registry.ts +229 -0
  26. package/src/cli/modeling/schema.ts +160 -0
  27. package/src/cli/modeling/validate.ts +282 -0
  28. package/src/cli/utils/index.ts +941 -0
  29. package/src/cli/utils/install.ts +291 -0
  30. package/src/cli/utils/spec-xml.ts +673 -0
  31. package/src/cli/utils/track-time.ts +75 -0
  32. package/src/cli/utils/vfs.ts +102 -0
  33. package/src/templates/codument/README.md +59 -0
  34. package/src/templates/codument/attractors/product.md +17 -0
  35. package/src/templates/codument/attractors/project.md +10 -0
  36. package/src/templates/codument/backlog/README.md +33 -0
  37. package/src/templates/codument/config/attractor-profiles.xml +31 -0
  38. package/src/templates/codument/config/engineering.xml +22 -0
  39. package/src/templates/codument/config/modeling.xml +22 -0
  40. package/src/templates/codument/config/operation-hooks.xml +55 -0
  41. package/src/templates/codument/memory/README.md +13 -0
  42. package/src/templates/codument/missions/README.md +125 -0
  43. package/src/templates/codument/sop/README.md +14 -0
  44. package/src/templates/codument/std/AGENTS.md +82 -0
  45. package/src/templates/codument/std/attractors/depa-attractor.md +572 -0
  46. package/src/templates/codument/std/attractors/knowledge-tiers.md +128 -0
  47. package/src/templates/codument/std/attractors/model-driven-docs.md +293 -0
  48. package/src/templates/codument/std/attractors/project-memory.md +48 -0
  49. package/src/templates/codument/std/docs-impl-fractal/index.md +110 -0
  50. package/src/templates/codument/std/docs-modeling-fractal/index.md +156 -0
  51. package/src/templates/codument/std/kernel-pointer.md +19 -0
  52. package/src/templates/codument/std/operations/README.md +30 -0
  53. package/src/templates/codument/std/operations/_operation-spec.md +41 -0
  54. package/src/templates/codument/std/operations/archive-mission.md +66 -0
  55. package/src/templates/codument/std/operations/archive-track.md +238 -0
  56. package/src/templates/codument/std/operations/artifact-sync.md +172 -0
  57. package/src/templates/codument/std/operations/discuss-phase.md +214 -0
  58. package/src/templates/codument/std/operations/discuss.md +87 -0
  59. package/src/templates/codument/std/operations/docs-bootstrap.md +148 -0
  60. package/src/templates/codument/std/operations/gap-loop.md +301 -0
  61. package/src/templates/codument/std/operations/impl-mission.md +167 -0
  62. package/src/templates/codument/std/operations/impl-quick.md +79 -0
  63. package/src/templates/codument/std/operations/impl-track.md +537 -0
  64. package/src/templates/codument/std/operations/migrate.md +337 -0
  65. package/src/templates/codument/std/operations/plan-mission.md +230 -0
  66. package/src/templates/codument/std/operations/plan-track-wave.md +231 -0
  67. package/src/templates/codument/std/operations/plan-track.md +579 -0
  68. package/src/templates/codument/std/operations/revise-track.md +136 -0
  69. package/src/templates/codument/std/operations/validate.md +339 -0
  70. package/src/templates/codument/std/operations/verify.md +184 -0
  71. package/src/templates/codument/std/root-agents.md +39 -0
  72. package/src/templates/codument/std/sop/questioning.md +98 -0
  73. package/src/templates/codument/std/sop/tdd.md +26 -0
  74. package/src/templates/codument/std/sop/validation.md +25 -0
  75. package/src/templates/codument/std/sop/wave-exec.md +42 -0
  76. package/src/templates/codument/std/sop/workflow.md +35 -0
  77. package/src/templates/codument/std/spec/behavior-delta.md +36 -0
  78. package/src/templates/codument/std/spec/behavior-registry.md +42 -0
  79. package/src/templates/codument/std/spec/engineering-delta.md +68 -0
  80. package/src/templates/codument/std/spec/engineering-node-schema.md +86 -0
  81. package/src/templates/codument/std/spec/engineering-registry.md +82 -0
  82. package/src/templates/codument/std/spec/flow-notation.md +93 -0
  83. package/src/templates/codument/std/spec/folder-manifest.md +99 -0
  84. package/src/templates/codument/std/spec/mission-xml-spec.md +249 -0
  85. package/src/templates/codument/std/spec/modeling-delta.md +85 -0
  86. package/src/templates/codument/std/spec/modeling-node-schema.md +183 -0
  87. package/src/templates/codument/std/spec/modeling-registry.md +49 -0
  88. package/src/templates/codument/std/spec/track-xml-spec.md +272 -0
  89. package/src/templates/codument/std/spec/xnl-format.md +301 -0
  90. package/src/templates/codument/workflows/README.md +15 -0
  91. package/src/templates/manifest.ts +177 -0
  92. package/src/templates/skills/README.md +38 -0
  93. package/src/templates/skills/codument-archive/SKILL.md +17 -0
  94. package/src/templates/skills/codument-archive-mission/SKILL.md +17 -0
  95. package/src/templates/skills/codument-archive-track/SKILL.md +17 -0
  96. package/src/templates/skills/codument-artifact-sync/SKILL.md +17 -0
  97. package/src/templates/skills/codument-code-quality-score/SKILL.md +67 -0
  98. package/src/templates/skills/codument-decision-tree/SKILL.md +40 -0
  99. package/src/templates/skills/codument-discuss/SKILL.md +17 -0
  100. package/src/templates/skills/codument-discuss-phase/SKILL.md +17 -0
  101. package/src/templates/skills/codument-docs-bootstrap/SKILL.md +17 -0
  102. package/src/templates/skills/codument-gap-loop/SKILL.md +17 -0
  103. package/src/templates/skills/codument-impl-mission/SKILL.md +17 -0
  104. package/src/templates/skills/codument-impl-quick/SKILL.md +17 -0
  105. package/src/templates/skills/codument-impl-track/SKILL.md +17 -0
  106. package/src/templates/skills/codument-implement/SKILL.md +14 -0
  107. package/src/templates/skills/codument-migrate/SKILL.md +17 -0
  108. package/src/templates/skills/codument-modeling-engineering-e2e/SKILL.md +74 -0
  109. package/src/templates/skills/codument-plan-mission/SKILL.md +17 -0
  110. package/src/templates/skills/codument-plan-track/SKILL.md +17 -0
  111. package/src/templates/skills/codument-plan-track-wave/SKILL.md +17 -0
  112. package/src/templates/skills/codument-revise-track/SKILL.md +17 -0
  113. package/src/templates/skills/codument-track/SKILL.md +14 -0
  114. package/src/templates/skills/codument-validate/SKILL.md +17 -0
  115. package/src/templates/skills/codument-verify/SKILL.md +17 -0
  116. package/src/types/text-assets.d.ts +9 -0
  117. package/src/version.ts +1 -0
@@ -0,0 +1,337 @@
1
+ # skill: codument-migrate(迁移旧格式 → 当前标准)
2
+
3
+ **本提示词供执行迁移的代理阅读。** 它合并了两条旧迁移流程——**旧 archive 布局迁移** 与 **旧 Markdown specs → XML 行为登记表迁移**——成一个统一的 migrate skill。
4
+
5
+ > 本文是完整协议(口径已对齐当前标准)。**程序化的执行流程**(scan→classify→transform→verify 流水线、按条目分叉)用流程标记块(` ```text ` + `@delimiter: --`,构造词汇见 `codument/std/operations/_operation-spec.md`)表达;**说明、规则、背景、示例**用 Markdown,内嵌 XML 用 ` ```xml ` 围栏。
6
+ >
7
+ > 口径映射:`codument:migrate-archive` / `codument:migrate-specs`→统一 `codument-migrate`;`spec`→`behavior`;`spec://`→`behavior://`;`<spec-patch>`→`<behavior-patch>`;`spec_deltas/`→`behavior_deltas/`;`codument/specs/`→`codument/behaviors/`;`plan.xml`→`track.xml`;`### Requirement:` / `#### Scenario:` 等 Markdown 层级 → XML `<requirement>` / `<suite>` / `<case>`。
8
+
9
+ ---
10
+
11
+ ## 0. 总纲
12
+
13
+ 你是 Codument 迁移代理。本 skill 把**旧格式的两类工件**迁到当前标准,同时**保留证据、不静默删除、不臆造无法确定的事实**:
14
+
15
+ 1. **旧 archive 布局** → 新 `codument/archive/YYYY-MM/YYYY-MM-DD-HHmm-<track-id>/` 目录规范。
16
+ 2. **旧 Markdown specs**(`## ADDED Requirements` / `### Requirement:` / `#### Scenario:`,位于 `specs/<cap>/spec.md`)→ **XML 行为登记表** `codument/behaviors/`(见 `codument/std/spec/behavior-registry.md`),并把 track 内的差量表达为 `<behavior-patch>`(见 `codument/std/spec/behavior-delta.md`)。
17
+
18
+ 两条迁移共享同一套安全纪律(§1)。本 skill 是**普通迁移流程**,不需要 gap-loop 式 fresh child orchestration;只有用户显式要求独立复检时才考虑委派子代理(见 `codument/std/operations/gap-loop.md`)。
19
+
20
+ **入参**(均可选):
21
+
22
+ - `what`:`archive` | `specs` | `all`(缺省 `all`,两类都迁)。
23
+ - `track-id`:只迁某个 track 相关工件时指定。
24
+
25
+ ---
26
+
27
+ ## 1. 迁移前安全纪律(两类共享)
28
+
29
+ 无论迁 archive 还是 specs,先做这些:
30
+
31
+ 1. 读取 `codument/std/AGENTS.md`(如存在)与项目 workflow,确认当前规范与 CLI 能力。
32
+ 2. **先 inventory,不要直接覆盖**:列出所有候选源、推断出的目标、风险与不确定点。
33
+ 3. 创建备份 / 迁移记录:
34
+ - 优先写入 `.tmp/codument/migrate-<timestamp>/`;
35
+ - 或在最终报告中记录用户已有备份位置。
36
+ 4. 只有在**源路径与目标路径都明确**时才移动 / 转换。
37
+ 5. **不安全或无法解释的内容**复制到 legacy 区(archive → `codument/legacy/archive/...`;specs → `codument/legacy/specs/...`),**不直接删除**。
38
+ 6. **不把猜测当事实**:无法确定的时间、track ID、需求边界,显式标记待确认,不伪造。
39
+
40
+ ---
41
+
42
+ ## 2. Archive 迁移
43
+
44
+ ### 2.1 识别旧布局
45
+
46
+ 扫描这些旧形态:
47
+
48
+ - `codument/archive/<YYYY-MM-DD-track-id>/`(缺 `YYYY-MM/` bucket)
49
+ - `codument/archive/<track-id>/`(连日期前缀都没有)
50
+ - 任何缺少 `YYYY-MM/` bucket 的 archive 目录
51
+ - 只有 `metadata.json`、`tasks.xml`、`spec.md` 或 `summary.md`、缺 `track.xml`(或旧 `plan.xml`)的归档目录
52
+
53
+ 新布局是:
54
+
55
+ ```text
56
+ codument/archive/YYYY-MM/YYYY-MM-DD-HHmm-track-id/
57
+ ```
58
+
59
+ ### 2.2 迁移规则
60
+
61
+ - **更新时间优先级**:`track.xml`(旧 `plan.xml`)的 `metadata.updated_at` → `metadata.json` 的 `updated_at` → 归档目录名日期 → 目录内文件最大 mtime。
62
+ - 若目录名日期、`track.xml`/`plan.xml` 时间、`metadata.json` 时间**互相不一致**,必须在迁移记录中**显式标记风险**;仍优先使用 `track.xml`/`metadata.json` 中可验证的更新时间。
63
+ - 能确定分钟时用真实分钟;只能确定日期时用 `0000` 并记录原因。
64
+ - **目标目录已存在时不要覆盖**:记录冲突并请求用户处理。
65
+ - 若旧 archive 缺 `track.xml`:从可用 `metadata`/`tasks` 生成**最小 `track.xml`**(即把旧 `plan.xml` 做最小修复为 `track.xml`);无法生成时保留原文并记录。
66
+ - 旧 `spec.md`、summary、reports、decisions、memory 内容应**随 archive 保留**。
67
+
68
+ ### 2.3 Archive 迁移流程
69
+
70
+ ```text
71
+ @delimiter: --
72
+ -- #sequence ?archive-migrate
73
+ ---- #step ?a-scan
74
+ 扫描 §2.1 列出的所有旧布局候选,inventory 出 (源路径, 推断 track-id, 推断更新时间, 风险)
75
+ ---- /?a-scan
76
+ ---- #loop ?a-each for="每个候选 archive 目录"
77
+ ------ #step ?a-time
78
+ 按 §2.2 优先级链确定更新时间;多源不一致时标记风险,决定 HHmm(真实分钟 / 0000+原因)
79
+ ------ /?a-time
80
+ ------ #if ?a-conflict cond="目标 archive/YYYY-MM/YYYY-MM-DD-HHmm-<id>/ 已存在"
81
+ -------- #step ?a-skip
82
+ 不覆盖:记录冲突到迁移记录,请求用户处理,跳过本条目
83
+ -------- /?a-skip
84
+ ------ /?a-conflict
85
+ ------ #else ?a-do
86
+ -------- #sequence ?a-move
87
+ ---------- #step ?a-plan
88
+ 缺 track.xml 时,从 metadata.json/tasks.xml 生成最小 track.xml(旧 plan.xml 最小修复);不能生成则保留原文并记录
89
+ ---------- /?a-plan
90
+ ---------- #step ?a-keep
91
+ spec.md / summary / reports / decisions / memory 随 archive 一并迁移保留
92
+ ---------- /?a-keep
93
+ ---------- #step ?a-legacy
94
+ 不安全 / 无法解释的内容复制到 codument/legacy/archive/...,不删除
95
+ ---------- /?a-legacy
96
+ ---------- #step ?a-target
97
+ 移动目录到 codument/archive/YYYY-MM/YYYY-MM-DD-HHmm-<track-id>/
98
+ ---------- /?a-target
99
+ -------- /?a-move
100
+ ------ /?a-do
101
+ ---- /?a-each
102
+ -- /?archive-migrate
103
+ ```
104
+
105
+ ---
106
+
107
+ ## 3. Specs → XML 行为登记表迁移
108
+
109
+ ### 3.1 输入读取
110
+
111
+ 读取(**先 inventory,不要直接覆盖**):
112
+
113
+ - `codument/specs/**/*.md`(旧 Markdown specs)
114
+ - `codument/specs/**/*.xml`(已有 XML)
115
+ - `codument/tracks/**/spec.md`
116
+ - `codument/archive/**/spec.md`
117
+ - `codument/legacy/specs`
118
+ - `codument/std/AGENTS.md` 与 workflow
119
+
120
+ > 注意区分**长期 registry** 与 **track delta**:不要把某个 track 的 `spec.md`(差量)误当成长期登记表,**除非它已归档且语义明确**。track 级差量应迁为 `behavior_deltas/<cap>/delta.xml` 的 `<behavior-patch>`(见 §3.4),合并后的真源才进 `codument/behaviors/`。
121
+
122
+ ### 3.2 Markdown → XML 映射
123
+
124
+ 把旧 Markdown 层级映射为行为登记表节点(节点规范见 `codument/std/spec/behavior-registry.md`):
125
+
126
+ | 旧 Markdown | 新 XML |
127
+ |---|---|
128
+ | `### Requirement: Name` | `<requirement id="slug">` |
129
+ | Requirement 正文 | `<statement>` |
130
+ | `#### Scenario: Name` | `<suite>` 下的 `<case id="slug">` |
131
+ | Given / When / Then 列表 | `<given>` / `<when>` / `<then>` |
132
+
133
+ `id` 规则:
134
+
135
+ - 生成的 `requirement` / `suite` / `case` 的 `id` 必须**稳定**且在**同一 capability 内全局唯一**。
136
+ - slug 冲突时加父级 requirement / suite / 主题前缀,例如 `create-success` → `invoice-create-success`。
137
+ - **无法映射**的正文保留为 XML 注释或 legacy 原文,并标记待确认,**不丢弃**。
138
+
139
+ 转换后的登记表形态示例:
140
+
141
+ ```xml
142
+ <behaviors capability="billing" version="1">
143
+ <requirement id="invoice-create">
144
+ <statement>系统 SHALL 在校验通过后创建发票并返回 201。</statement>
145
+ <suite name="invoice-create">
146
+ <case name="create-success">
147
+ <given>合法的发票输入 F</given>
148
+ <when>POST /invoices 携带 F</when>
149
+ <then>返回 201 且持久化一条发票</then>
150
+ </case>
151
+ </suite>
152
+ </requirement>
153
+ </behaviors>
154
+ ```
155
+
156
+ ### 3.3 XML 文件组织(单文件 ↔ 同名文件夹)
157
+
158
+ 小 capability:
159
+
160
+ ```text
161
+ codument/behaviors/billing.xml
162
+ ```
163
+
164
+ 大 capability(行为多时拆分,沿用分形习惯):
165
+
166
+ ```text
167
+ codument/behaviors/billing/
168
+ index.xml 入口,include 子文件
169
+ requirements/invoice.xml
170
+ suites/create.xml
171
+ ```
172
+
173
+ - `index.xml` 保留 capability 根节点,通过 `<include href="..."/>` 引用拆分文件。
174
+ - 若旧 spec 已经位于 `codument/specs/<capability>/spec.md` 这种**目录内**,优先迁为**同目录的 folder registry** `codument/behaviors/<capability>/index.xml`;**不要**为了生成单文件 XML 把已有 capability 目录折叠成 `codument/behaviors/<capability>.xml`。
175
+
176
+ ### 3.4 track delta:`<behavior-patch>`(wrapper + behavior://)
177
+
178
+ track 内的差量不是登记表本身,而是对登记表的增删改,迁为 `tracks/<id>/behavior_deltas/<capability>/delta.xml`(规范见 `codument/std/spec/behavior-delta.md`):
179
+
180
+ - 根节点 `<behavior-patch capability="<capability>" version="1">`;一个 capability 一个 delta 目录。
181
+ - **mutation = wrapper 标签 + `selector`**:`<upsert|delete|move selector="behavior://...">`;`selector` 用 **`behavior://`** 虚拟路径定位登记表节点(取代旧 `spec://`);`move` 还必须带 `to="behavior://..."`。
182
+ - 行为用例用可嵌套 `<suite>` / `<case>`(Given/When/Then)。
183
+
184
+ ```xml
185
+ <behavior-patch capability="billing" version="1">
186
+ <upsert selector="behavior://billing/requirements/invoice-create">
187
+ <requirement id="invoice-create">
188
+ <statement>系统 SHALL 在校验通过后创建发票并返回 201。</statement>
189
+ <suite name="invoice-create">
190
+ <case name="create-success">
191
+ <given>合法的发票输入 F</given>
192
+ <when>POST /invoices 携带 F</when>
193
+ <then>返回 201 且持久化一条发票</then>
194
+ </case>
195
+ </suite>
196
+ </requirement>
197
+ </upsert>
198
+ </behavior-patch>
199
+ ```
200
+
201
+ ### 3.5 安全策略
202
+
203
+ - **不覆盖已有 XML 登记表**,除非用户明确要求并有备份。
204
+ - 转换前把原 Markdown 复制到 `codument/legacy/specs/...`。
205
+ - 若 Markdown 层级不规范、场景缺少 Given/When/Then、需求边界不清:先生成**迁移草案并请求确认**,不直接落盘真源。
206
+ - 不把 track delta 误当成长期 registry(见 §3.1)。
207
+
208
+ ### 3.6 Specs 迁移流程
209
+
210
+ ```text
211
+ @delimiter: --
212
+ -- #sequence ?specs-migrate
213
+ ---- #step ?s-scan
214
+ inventory §3.1 列出的所有 md/xml spec 源;分类:长期 registry 候选 vs track 级差量
215
+ ---- /?s-scan
216
+ ---- #loop ?s-each for="每个 spec 源"
217
+ ------ #step ?s-backup
218
+ 转换前把原 Markdown 复制到 codument/legacy/specs/...(保留可追溯原文)
219
+ ------ /?s-backup
220
+ ------ #if ?s-illformed cond="Markdown 层级不规范 / 场景缺 GWT / 需求边界不清"
221
+ -------- #step ?s-draft
222
+ 生成迁移草案,标记待确认点,请求用户确认;本条目暂不落盘真源
223
+ -------- /?s-draft
224
+ -------- #continue ?s-next if="草案未获确认"
225
+ 跳过本条目真源落盘,继续下一个 spec 源
226
+ -------- /?s-next
227
+ ------ /?s-illformed
228
+ ------ #switch ?s-kind on="该源是长期 registry 还是 track 差量"
229
+ -------- #case ?s-reg when="长期 registry(含已归档且语义明确者)"
230
+ ---------- #step ?s-reg-map
231
+ 按 §3.2 映射为 <behaviors>;id 稳定且 capability 内唯一,冲突加前缀;无法映射正文转 XML 注释/legacy 并标待确认
232
+ ---------- /?s-reg-map
233
+ ---------- #if ?s-folder cond="旧 spec 位于 specs/<cap>/spec.md 目录内"
234
+ ------------ #step ?s-folder-reg
235
+ 迁为同目录 folder registry codument/behaviors/<cap>/index.xml(不折叠成单文件)
236
+ ------------ /?s-folder-reg
237
+ ---------- /?s-folder
238
+ ---------- #else ?s-single
239
+ ------------ #step ?s-single-reg
240
+ 小 capability 迁为 codument/behaviors/<cap>.xml;过大时升级为 <cap>/index.xml + include 子文件
241
+ ------------ /?s-single-reg
242
+ ---------- /?s-single
243
+ -------- /?s-reg
244
+ -------- #case ?s-delta when="track 级差量"
245
+ ---------- #step ?s-delta-map
246
+ 迁为 tracks/<id>/behavior_deltas/<cap>/delta.xml 的 <behavior-patch>(<upsert|delete|move> wrapper + behavior:// selector)
247
+ ---------- /?s-delta-map
248
+ -------- /?s-delta
249
+ ------ /?s-kind
250
+ ------ #if ?s-exists cond="目标 XML 登记表已存在"
251
+ -------- #step ?s-no-overwrite
252
+ 不覆盖(除非用户明确要求并有备份):记录冲突,请求确认
253
+ -------- /?s-no-overwrite
254
+ ------ /?s-exists
255
+ ---- /?s-each
256
+ -- /?specs-migrate
257
+ ```
258
+
259
+ ---
260
+
261
+ ## 4. 验证(统一)
262
+
263
+ 迁移后逐项验证。**外部 CLI 不可用 / 不支持新格式时降级为本地验证,并在报告中写明能力限制——不要把降级判为失败。**
264
+
265
+ ### 4.1 Archive 验证
266
+
267
+ 1. 尝试 `codument validate --strict`;找不到外部 `codument` 命令时说明跳过原因。
268
+ 2. 额外做 archive 布局扫描(`codument validate --strict` **不保证**检查旧 archive 目录形态):
269
+ - 查找 `codument/archive/*` 下仍直接含 `track.xml`/`plan.xml` 或 `metadata.json` 的**根级**旧 archive 目录;
270
+ - 查找不匹配 `codument/archive/YYYY-MM/YYYY-MM-DD-HHmm-track-id/` 的目录;
271
+ - 报告**所有**剩余旧布局候选,即使本次只迁了其中一个。
272
+ 3. 检查新 archive 路径是否符合 `YYYY-MM/YYYY-MM-DD-HHmm-track-id`。
273
+
274
+ ### 4.2 Specs 验证
275
+
276
+ 先识别当前 CLI 是否支持 XML 登记表:
277
+
278
+ 1. 尝试 `codument list --behaviors`、`codument show <capability>`、`codument validate <capability> --strict`。
279
+ 2. 若上述命令仍只识别旧 `spec.md`,说明当前 CLI 版本不支持 XML 登记表或未升级到本 track 所需版本 → **不要判为失败**,降级本地验证,并在报告中明确写出 CLI 版本/能力限制。
280
+
281
+ 本地降级验证至少包括:
282
+
283
+ - XML well-formedness(`xmllint --noout` 或等价解析检查)。
284
+ - `requirement` / `case` 数量与原 Markdown 场景数量对照。
285
+ - `codument/legacy/specs/...` 中的原文备份存在且内容一致。
286
+ - generated XML 的 `requirement` / `suite` / `case` `id` 稳定、capability 内全局唯一、无重复。
287
+
288
+ > `codument validate --strict` 可能格式化或补写 active track metadata;运行后必须检查 `git diff`,并在报告中**区分验证副作用与本次迁移修改**。
289
+
290
+ ### 4.3 验证流程
291
+
292
+ ```text
293
+ @delimiter: --
294
+ -- #sequence ?verify
295
+ ---- #if ?v-arch cond="what ∈ {archive, all} 且本次迁了 archive"
296
+ ------ #step ?v-arch-cli
297
+ 尝试 codument validate --strict;无命令则记录跳过原因
298
+ ------ /?v-arch-cli
299
+ ------ #step ?v-arch-scan
300
+ 额外扫描残留旧 archive 布局;报告所有剩余候选 + 新路径合规性
301
+ ------ /?v-arch-scan
302
+ ---- /?v-arch
303
+ ---- #if ?v-spec cond="what ∈ {specs, all} 且本次迁了 specs"
304
+ ------ #if ?v-cli-ok cond="CLI 支持 XML 行为登记表"
305
+ -------- #step ?v-spec-cli
306
+ 跑 codument list --behaviors / show <cap> / validate <cap> --strict
307
+ -------- /?v-spec-cli
308
+ ------ /?v-cli-ok
309
+ ------ #else ?v-cli-degrade
310
+ -------- #step ?v-spec-local
311
+ 降级本地验证:xmllint well-formedness + 数量对照 + legacy 原文一致 + id 稳定唯一;报告写明 CLI 能力限制
312
+ -------- /?v-spec-local
313
+ ------ /?v-cli-degrade
314
+ ------ #step ?v-spec-diff
315
+ 检查 git diff,区分 validate 副作用与本次迁移修改
316
+ ------ /?v-spec-diff
317
+ ---- /?v-spec
318
+ ---- #step ?v-report
319
+ 汇总:迁移列表 / 跳过列表 / 冲突列表 / legacy 保留项 / 待确认问题
320
+ ---- /?v-report
321
+ -- /?verify
322
+ ```
323
+
324
+ ---
325
+
326
+ ## 5. 输出
327
+
328
+ - **archive**:迁移后的 `codument/archive/YYYY-MM/YYYY-MM-DD-HHmm-<id>/`(内含最小修复的 `track.xml`、保留的 spec/summary/reports)。
329
+ - **specs**:`codument/behaviors/**`(XML 登记表,单文件或同名文件夹)+ `tracks/<id>/behavior_deltas/**`(`<behavior-patch>`)+ `codument/legacy/specs/**` 原文备份。
330
+ - **报告**:迁移 / 跳过 / 冲突 / 待确认四类清单。
331
+
332
+ ## 引用
333
+
334
+ - 行为登记表布局与节点:`codument/std/spec/behavior-registry.md`
335
+ - behavior delta(wrapper + `behavior://`):`codument/std/spec/behavior-delta.md`
336
+ - 独立复检(仅用户显式要求时):`codument/std/operations/gap-loop.md`
337
+ - 流程标记块语法:`codument/std/operations/_operation-spec.md`
@@ -0,0 +1,230 @@
1
+ # skill: codument-plan-mission(创建长周期 mission)
2
+
3
+ 为一个跨多个 track、需要较长时间自动化收敛的目标创建 **Mission**:生成 `mission.xml`、`proposal.md`、`design.md`,并放入 `codument/missions/pending/<mission-id>/`。
4
+
5
+ > mission 是长周期控制面,不是大号 track。真实代码 / 规范 / 测试落地仍由 track 承担;mission 负责期望态 DAG、观察实际态、受控重规划和跨 track 编排。
6
+ >
7
+ > 文件格式见 `codument/std/spec/mission-xml-spec.md`;流程块格式见 `codument/std/spec/flow-notation.md`。
8
+
9
+ ## 0. 何时创建 mission
10
+
11
+ 创建 mission 的场景:
12
+
13
+ - 一个目标明显跨多个 track 或多个仓库。
14
+ - 需要先做证据盘点、设计收敛、track 切片,再逐批落地。
15
+ - 执行期可能出现较大不确定性,需要重规划、人工介入、阶段性验证。
16
+ - 用户明确要求更长时间自动化。
17
+
18
+ 不要创建 mission 的场景:
19
+
20
+ - 单个 track 能闭环。
21
+ - 纯 bug fix / 拼写 / 配置。
22
+ - 只是想把一个 track 拆成多个 phase。
23
+
24
+ ## 1. 产物
25
+
26
+ ```text
27
+ codument/missions/pending/<mission-id>/
28
+ mission.xml
29
+ proposal.md
30
+ design.md
31
+ decisions.md
32
+ decisions/
33
+ memory/
34
+ analysis/ # 默认不进 git
35
+ reports/ # 默认不进 git
36
+ ```
37
+
38
+ 新 mission 不创建 `roadmap.md`。
39
+
40
+ ## 1.5 Questioning severity 与无问答模式
41
+
42
+ 创建 mission 前先解析 `codument/std/sop/questioning.md` 的 questioning severity:**未指定时默认 `light`**。
43
+
44
+ | severity | mission plan 行为 |
45
+ |---|---|
46
+ | `auto` | 无问答 / 高自主:不因 mission-id、proposal、design、mission.xml 或 DAG 默认值向用户确认;直接推断并把假设写入 `analysis/decision-tree.md`、`decisions.md`、`proposal.md`、`design.md`。 |
47
+ | `light` | 默认:只问 P0 用户意图 / 不可逆取舍;能查代码、archive、tracks、missions、attractors、modeling/engineering 就不问。 |
48
+ | `normal` | 问 P0/P1,每题必须给推荐答案和取舍。 |
49
+ | `deep` | 适用于长期不确定性;允许更深 decision-tree,但每轮必须落文件并收敛 frontier。 |
50
+
51
+ `analysis/decision-tree.md` 是 mission planning 的推荐外部记忆,记录 Root Question、Severity、Decision Frontier、Assumptions。mission 的四个 actor 使用它:
52
+
53
+ - `MissionObserver` 先从代码 / 文档 / track/archive / reports 查证可回答问题。
54
+ - `MissionPlanner` 生成 desired mission graph 与 decision frontier。
55
+ - `MissionReconciler` 判断哪些 pending decision 阻塞 DAG。
56
+ - `MissionApplier` 在非 auto 模式下执行一个有界提问;auto 模式下写入假设并选择保守默认。
57
+
58
+ ## 2. Mission Actor 模型
59
+
60
+ `design.md` 必须写清楚四个控制论 + DEPA actor:
61
+
62
+ | Actor | 控制论角色 | DEPA 归属 | 职责 |
63
+ |---|---|---|---|
64
+ | `MissionPlanner` | 期望态产出者 | Processor + Actor | 产出 desired mission graph |
65
+ | `MissionObserver` | 传感器 | Data + Actor | 读取 actual state projection |
66
+ | `MissionReconciler` | 控制器 | Processor + Actor | 比较 desired vs actual |
67
+ | `MissionApplier` | 执行器 | Effect + Actor | 执行 bounded convergence action |
68
+
69
+ ## 3. 主流程
70
+
71
+ 正式进入 mission 规划前,先执行命令级前置 hook:若 `codument/config/operation-hooks.xml` 中存在 `Operation name="plan-mission"` 的 `<Hook on="plan-mission:before">`,按其中 hook DSL 执行。默认配置会运行 `<cdt:AttractorCheck use="coding"/>`,即读取 `config/attractor-profiles.xml` 的 `coding` profile 及其引用的 attractor,将项目工程理念、边界、长期知识沉淀方式作为 mission proposal/design/mission.xml 的规划约束。`operation-hooks.xml` 缺失或没有该 hook 时按默认流程继续。
72
+
73
+ ```text
74
+ @delimiter: --
75
+ @node: #
76
+ @marker: ?
77
+ -- #sequence ?plan_mission
78
+ ---- #if ?before cond="operation-hooks.xml 为 plan-mission 配了 plan-mission:before(默认 <cdt:AttractorCheck use=\"coding\">)"
79
+ 执行 plan-mission:before hook;AttractorCheck 必须读取 coding profile 与其引用的 attractor,将项目理念作为后续 proposal/design/mission.xml 的约束上下文
80
+ ---- /?before
81
+ ---- #step ?context
82
+ 确认 codument 已初始化;读取 codument/attractors、codument/missions/README.md、codument/std/spec/mission-xml-spec.md;解析 questioning severity(默认 light)。
83
+ ---- /?context
84
+ ---- #step ?decision-tree
85
+ 写 analysis/decision-tree.md:Root Question、Severity、Decision Frontier、Assumptions;auto 模式不得提问。
86
+ ---- /?decision-tree
87
+ ---- #step ?id
88
+ 根据用户目标生成 mission-id;查重 pending/active/archived;auto 模式直接采用并记录命名依据,其他模式在必要时用 ask-single-question-free 确认。
89
+ ---- /?id
90
+ ---- #step ?mkdir
91
+ 创建 codument/missions/pending/<mission-id>/ 以及 decisions/ memory/ analysis/ reports/。
92
+ ---- /?mkdir
93
+ ---- #step ?proposal
94
+ 写 proposal.md:背景、目标、非目标、成功判据、为什么需要 mission 而不是 track。
95
+ ---- /?proposal
96
+ ---- #step ?design
97
+ 写 design.md:MissionPlanner/Observer/Reconciler/Applier、plan vs track 区分、受控重规划、人工介入、风险。
98
+ ---- /?design
99
+ ---- #step ?xml
100
+ 写 mission.xml:<Mission> 根、Metadata、Ports、TaskSpace(cdt:child-mode="dag")、Schedule、Hooks。
101
+ ---- /?xml
102
+ ---- #step ?validate
103
+ best-effort 校验 XML 格式;若 validator 尚未支持 mission.xml,至少运行 xmllint。
104
+ ---- /?validate
105
+ ---- #return ?done value="mission created under pending"
106
+ ---- /?done
107
+ -- /?plan_mission
108
+ ```
109
+
110
+ ## 4. proposal.md 示例
111
+
112
+ ```markdown
113
+ # Mission:runtime evolution
114
+
115
+ ## 背景和动机
116
+
117
+ 当前 runtime control、session persistence、projection surface 多处事实源边界不清,单个 track 无法安全闭环。
118
+
119
+ ## 目标
120
+
121
+ - 完成证据盘点。
122
+ - 完成设计收敛。
123
+ - 切片出第一批可落地 tracks。
124
+ - 按依赖顺序逐批落地并验证。
125
+
126
+ ## 非目标
127
+
128
+ - mission 本身不直接改代码。
129
+ - 不在没有 evidence 的情况下创建落地 track。
130
+
131
+ ## 成功判据
132
+
133
+ - 每个落地 track 都能回指 evidence。
134
+ - 所有 mission 节点 DONE 或 SUPERSEDED。
135
+ - 最终 verify 报告确认目标收敛。
136
+ ```
137
+
138
+ ## 5. design.md 示例
139
+
140
+ ```markdown
141
+ # Mission Design
142
+
143
+ ## 控制论模型
144
+
145
+ - desired state:mission.xml 的顶层 TaskGroup DAG、组内顺序 Task、节点状态、门禁和叶子 Task 上的 `cdt:TrackLink`。
146
+ - actual state:当前 mission 文件、track 状态、archive、测试结果、reports、用户新约束。
147
+ - actuation:创建/续跑/归档 track,或受控修订 mission.xml。
148
+ - feedback / drift:reports、verify、用户介入、失败证据。
149
+
150
+ ## Mission Actors
151
+
152
+ | Actor | 职责 |
153
+ |---|---|
154
+ | MissionPlanner | 产出或修订 desired mission graph |
155
+ | MissionObserver | 读取 actual state projection |
156
+ | MissionReconciler | 判定 drift / ready / blocked / done |
157
+ | MissionApplier | 执行一个 bounded action |
158
+
159
+ ## 受控重规划
160
+
161
+ active mission 可以增删改节点和 DAG,但必须有 evidence 或 human decision,并写 reports/replan-XXX.md。
162
+ ```
163
+
164
+ ## 6. mission.xml 示例
165
+
166
+ ```xml
167
+ <Mission id="runtime-evolution" version="1" xmlns:cdt="urn:codument:v1">
168
+ <Metadata>
169
+ <Status>pending</Status>
170
+ <Goal>重构 runtime 长周期架构</Goal>
171
+ <Description>先证据盘点,再设计收敛,再切片为 tracks 落地。</Description>
172
+ <QuestionMode>decision-tree</QuestionMode>
173
+ <QuestionSeverity>light</QuestionSeverity>
174
+ <Revision>1</Revision>
175
+ <CreatedAt>2026-06-27T13:56:11Z</CreatedAt>
176
+ <UpdatedAt>2026-06-27T13:56:11Z</UpdatedAt>
177
+ </Metadata>
178
+ <Ports scope="mission">
179
+ <MaterialBundle role="state" name="analysis" domain="mission" path="vfs://./analysis/"/>
180
+ <MaterialBundle role="state" name="reports" domain="mission" path="vfs://./reports/"/>
181
+ <MaterialBundle role="output" name="tracks" domain="codument" path="vfs://@/codument/tracks/"/>
182
+ </Ports>
183
+ <TaskSpace id="space_runtime-evolution" name="runtime-evolution" version="1" cdt:child-mode="dag">
184
+ <Description>Runtime evolution mission.</Description>
185
+ <SubNodes>
186
+ <TaskGroup id="G1" name="证据盘点" status="NOT_STARTED" order="0">
187
+ <SubNodes>
188
+ <Task id="G1-T1" name="盘点事实源" status="NOT_STARTED" order="0"/>
189
+ <Task id="G1-T2" name="盘点包边界" status="NOT_STARTED" order="1"/>
190
+ </SubNodes>
191
+ </TaskGroup>
192
+ <TaskGroup id="G2" name="设计收敛" status="NOT_STARTED" order="1">
193
+ <SubNodes>
194
+ <Task id="G2-T1" name="形成架构方案" status="NOT_STARTED" order="0"/>
195
+ <Task id="G2-T2" name="确认首批 track 切片" status="NOT_STARTED" order="1">
196
+ <cdt:TrackLink state="candidate" id="add-runtime-contracts"/>
197
+ </Task>
198
+ </SubNodes>
199
+ </TaskGroup>
200
+ <TaskGroup id="G3" name="首批落地" status="NOT_STARTED" order="2">
201
+ <SubNodes>
202
+ <Task id="G3-T1" name="创建并执行 runtime contracts track" status="NOT_STARTED" order="0">
203
+ <cdt:TrackLink state="candidate" id="add-runtime-contracts"/>
204
+ </Task>
205
+ <Task id="G3-T2" name="验证首批 track 结果" status="NOT_STARTED" order="1"/>
206
+ </SubNodes>
207
+ </TaskGroup>
208
+ </SubNodes>
209
+ </TaskSpace>
210
+ <Schedule>
211
+ <Dag for="space_runtime-evolution">
212
+ <Node id="G2"><After ref="G1"/></Node>
213
+ <Node id="G3"><After ref="G2"/></Node>
214
+ </Dag>
215
+ </Schedule>
216
+ </Mission>
217
+ ```
218
+
219
+ ## 7. 完成输出
220
+
221
+ 创建完成后回复:
222
+
223
+ ```text
224
+ Mission '<mission-id>' 已创建:
225
+ - codument/missions/pending/<mission-id>/mission.xml
226
+ - codument/missions/pending/<mission-id>/proposal.md
227
+ - codument/missions/pending/<mission-id>/design.md
228
+
229
+ 下一步:请使用 codument-impl-mission 启动或执行该 mission。
230
+ ```