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.
- package/LICENSE +21 -0
- package/README.md +262 -0
- package/package.json +63 -0
- package/src/cli/commands/archive.ts +519 -0
- package/src/cli/commands/decisions.ts +123 -0
- package/src/cli/commands/engineering.ts +105 -0
- package/src/cli/commands/init.ts +54 -0
- package/src/cli/commands/list.ts +73 -0
- package/src/cli/commands/modeling.ts +105 -0
- package/src/cli/commands/show.ts +238 -0
- package/src/cli/commands/status.ts +140 -0
- package/src/cli/commands/upgrade-track.ts +385 -0
- package/src/cli/commands/upgrade-workspace.ts +138 -0
- package/src/cli/commands/validate.ts +330 -0
- package/src/cli/engineering/config.ts +68 -0
- package/src/cli/engineering/lint.ts +58 -0
- package/src/cli/engineering/merge.ts +172 -0
- package/src/cli/engineering/registry.ts +230 -0
- package/src/cli/engineering/schema.ts +126 -0
- package/src/cli/engineering/validate.ts +286 -0
- package/src/cli/index.ts +136 -0
- package/src/cli/modeling/config.ts +68 -0
- package/src/cli/modeling/lint.ts +58 -0
- package/src/cli/modeling/merge.ts +172 -0
- package/src/cli/modeling/registry.ts +229 -0
- package/src/cli/modeling/schema.ts +160 -0
- package/src/cli/modeling/validate.ts +282 -0
- package/src/cli/utils/index.ts +941 -0
- package/src/cli/utils/install.ts +291 -0
- package/src/cli/utils/spec-xml.ts +673 -0
- package/src/cli/utils/track-time.ts +75 -0
- package/src/cli/utils/vfs.ts +102 -0
- package/src/templates/codument/README.md +59 -0
- package/src/templates/codument/attractors/product.md +17 -0
- package/src/templates/codument/attractors/project.md +10 -0
- package/src/templates/codument/backlog/README.md +33 -0
- package/src/templates/codument/config/attractor-profiles.xml +31 -0
- package/src/templates/codument/config/engineering.xml +22 -0
- package/src/templates/codument/config/modeling.xml +22 -0
- package/src/templates/codument/config/operation-hooks.xml +55 -0
- package/src/templates/codument/memory/README.md +13 -0
- package/src/templates/codument/missions/README.md +125 -0
- package/src/templates/codument/sop/README.md +14 -0
- package/src/templates/codument/std/AGENTS.md +82 -0
- package/src/templates/codument/std/attractors/depa-attractor.md +572 -0
- package/src/templates/codument/std/attractors/knowledge-tiers.md +128 -0
- package/src/templates/codument/std/attractors/model-driven-docs.md +293 -0
- package/src/templates/codument/std/attractors/project-memory.md +48 -0
- package/src/templates/codument/std/docs-impl-fractal/index.md +110 -0
- package/src/templates/codument/std/docs-modeling-fractal/index.md +156 -0
- package/src/templates/codument/std/kernel-pointer.md +19 -0
- package/src/templates/codument/std/operations/README.md +30 -0
- package/src/templates/codument/std/operations/_operation-spec.md +41 -0
- package/src/templates/codument/std/operations/archive-mission.md +66 -0
- package/src/templates/codument/std/operations/archive-track.md +238 -0
- package/src/templates/codument/std/operations/artifact-sync.md +172 -0
- package/src/templates/codument/std/operations/discuss-phase.md +214 -0
- package/src/templates/codument/std/operations/discuss.md +87 -0
- package/src/templates/codument/std/operations/docs-bootstrap.md +148 -0
- package/src/templates/codument/std/operations/gap-loop.md +301 -0
- package/src/templates/codument/std/operations/impl-mission.md +167 -0
- package/src/templates/codument/std/operations/impl-quick.md +79 -0
- package/src/templates/codument/std/operations/impl-track.md +537 -0
- package/src/templates/codument/std/operations/migrate.md +337 -0
- package/src/templates/codument/std/operations/plan-mission.md +230 -0
- package/src/templates/codument/std/operations/plan-track-wave.md +231 -0
- package/src/templates/codument/std/operations/plan-track.md +579 -0
- package/src/templates/codument/std/operations/revise-track.md +136 -0
- package/src/templates/codument/std/operations/validate.md +339 -0
- package/src/templates/codument/std/operations/verify.md +184 -0
- package/src/templates/codument/std/root-agents.md +39 -0
- package/src/templates/codument/std/sop/questioning.md +98 -0
- package/src/templates/codument/std/sop/tdd.md +26 -0
- package/src/templates/codument/std/sop/validation.md +25 -0
- package/src/templates/codument/std/sop/wave-exec.md +42 -0
- package/src/templates/codument/std/sop/workflow.md +35 -0
- package/src/templates/codument/std/spec/behavior-delta.md +36 -0
- package/src/templates/codument/std/spec/behavior-registry.md +42 -0
- package/src/templates/codument/std/spec/engineering-delta.md +68 -0
- package/src/templates/codument/std/spec/engineering-node-schema.md +86 -0
- package/src/templates/codument/std/spec/engineering-registry.md +82 -0
- package/src/templates/codument/std/spec/flow-notation.md +93 -0
- package/src/templates/codument/std/spec/folder-manifest.md +99 -0
- package/src/templates/codument/std/spec/mission-xml-spec.md +249 -0
- package/src/templates/codument/std/spec/modeling-delta.md +85 -0
- package/src/templates/codument/std/spec/modeling-node-schema.md +183 -0
- package/src/templates/codument/std/spec/modeling-registry.md +49 -0
- package/src/templates/codument/std/spec/track-xml-spec.md +272 -0
- package/src/templates/codument/std/spec/xnl-format.md +301 -0
- package/src/templates/codument/workflows/README.md +15 -0
- package/src/templates/manifest.ts +177 -0
- package/src/templates/skills/README.md +38 -0
- package/src/templates/skills/codument-archive/SKILL.md +17 -0
- package/src/templates/skills/codument-archive-mission/SKILL.md +17 -0
- package/src/templates/skills/codument-archive-track/SKILL.md +17 -0
- package/src/templates/skills/codument-artifact-sync/SKILL.md +17 -0
- package/src/templates/skills/codument-code-quality-score/SKILL.md +67 -0
- package/src/templates/skills/codument-decision-tree/SKILL.md +40 -0
- package/src/templates/skills/codument-discuss/SKILL.md +17 -0
- package/src/templates/skills/codument-discuss-phase/SKILL.md +17 -0
- package/src/templates/skills/codument-docs-bootstrap/SKILL.md +17 -0
- package/src/templates/skills/codument-gap-loop/SKILL.md +17 -0
- package/src/templates/skills/codument-impl-mission/SKILL.md +17 -0
- package/src/templates/skills/codument-impl-quick/SKILL.md +17 -0
- package/src/templates/skills/codument-impl-track/SKILL.md +17 -0
- package/src/templates/skills/codument-implement/SKILL.md +14 -0
- package/src/templates/skills/codument-migrate/SKILL.md +17 -0
- package/src/templates/skills/codument-modeling-engineering-e2e/SKILL.md +74 -0
- package/src/templates/skills/codument-plan-mission/SKILL.md +17 -0
- package/src/templates/skills/codument-plan-track/SKILL.md +17 -0
- package/src/templates/skills/codument-plan-track-wave/SKILL.md +17 -0
- package/src/templates/skills/codument-revise-track/SKILL.md +17 -0
- package/src/templates/skills/codument-track/SKILL.md +14 -0
- package/src/templates/skills/codument-validate/SKILL.md +17 -0
- package/src/templates/skills/codument-verify/SKILL.md +17 -0
- package/src/types/text-assets.d.ts +9 -0
- package/src/version.ts +1 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# Modeling 分形标准
|
|
2
|
+
|
|
3
|
+
> 本标准定义 `docs/modeling/` 的写作方式。它**不是一棵要照抄的固定目录树**,而是一条**递归规则**:同一套"知识节点"规则在每一层复用,每个业务领域用它**长出自己的目录结构**。
|
|
4
|
+
>
|
|
5
|
+
> 共享内容(节点不变量、frontmatter、根布局、同名文件夹演化、迁移台账、track 同步)见 [model-driven-docs.md](../attractors/model-driven-docs.md)。本文件只讲 **modeling 侧特有**的约定,不重复共享部分。
|
|
6
|
+
|
|
7
|
+
## 1. 一句话心法
|
|
8
|
+
|
|
9
|
+
modeling 树 = 递归的「知识节点」。**不变的是递归规则,可变的是每个领域选的类目词汇。**
|
|
10
|
+
|
|
11
|
+
- **不变**(所有领域、所有层级都一样):`plane → context → 类目 → 叶子`;每层 `index.md` 只做导航;一处真源、其余引用;派生处用 `derived_from` 指回来源。
|
|
12
|
+
- **可变**(每个领域自己定):有哪些 plane;每个 context 内部按哪些「类目」切分真源(`objects`?`routes`?`datasets`?`scenes`?)。
|
|
13
|
+
|
|
14
|
+
> ⚠️ 不要把本文示例里的 `objects / policies / workflows` 当成强制目录名——那只是"软件 domain 平面"的**一种**类目选择,不是分形的一部分。
|
|
15
|
+
|
|
16
|
+
## 2. Plane 层
|
|
17
|
+
|
|
18
|
+
路径:`docs/modeling/<plane>/`
|
|
19
|
+
|
|
20
|
+
- **`domain`(唯一必需 plane)**:canonical 业务本体,不依赖任何 derived plane。
|
|
21
|
+
- **derived plane(可选、项目按领域命名)**:把 domain 概念投影到某个建模视角。命名贴合领域,例如 `backend`、`surface`、`runtime`、`api`、`storage`、`pipeline`、`agent`、`tool`、`integration`……
|
|
22
|
+
- derived plane 必须在文档 `derived_from` 指回它投影的 domain 真源;**不得复制成第二份真源**。
|
|
23
|
+
|
|
24
|
+
plane 根固定三件:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
docs/modeling/<plane>/
|
|
28
|
+
index.md # 只导航:列本 plane 的 contexts,声明 canonical / derived
|
|
29
|
+
glossary.md # 本 plane 术语;domain 术语是 canonical,derived 术语指回 domain term
|
|
30
|
+
contexts/index.md # context 入口表
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 3. Context 层 —— 类目由领域决定(本标准核心)
|
|
34
|
+
|
|
35
|
+
context 是 plane 内的边界单元:`docs/modeling/<plane>/contexts/<context>/`
|
|
36
|
+
|
|
37
|
+
每个 context **固定只有两件事**:
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
index.md # 边界(Boundary / Not Owned Here)+ 导航到各类目
|
|
41
|
+
code-map.md # 把本 context 的建模知识连到源码 / 测试
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**其余子目录是「类目」,由该 plane 的建模视角决定,不是固定三件套。**
|
|
45
|
+
|
|
46
|
+
> 类目 = "这个 context 的真源天然按什么维度切分"。给 AI 的规则只有一条:
|
|
47
|
+
>
|
|
48
|
+
> **选 3–6 个正交、稳定、领域自然的类目作为 context 第一层子目录;每个类目下再放叶子 `.md`,太大再升级同名文件夹。**
|
|
49
|
+
|
|
50
|
+
### 三个真实示例(证明类目随领域而变,不固定 web)
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
# domain 平面(DDD 本体)—— 概念真源
|
|
54
|
+
contexts/<ctx>/{ objects/ policies/ workflows/ }
|
|
55
|
+
对象 跨对象规则 多步流程
|
|
56
|
+
|
|
57
|
+
# backend 平面(后端投影)—— 服务端真源
|
|
58
|
+
contexts/<ctx>/{ routes dto_maps errors contracts storage read-models sync-flows }
|
|
59
|
+
|
|
60
|
+
# surface 平面(前端投影)—— 前端真源
|
|
61
|
+
contexts/<ctx>/{ routes actions ui-state read-models sync-flows }
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
换一个**非软件 / 非 web** 领域,类目会完全不同:
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
数据管道领域: sources/ transforms/ sinks/ schedules/
|
|
68
|
+
游戏领域: entities/ systems/ scenes/ rules/
|
|
69
|
+
ML 领域: datasets/ features/ models/ experiments/
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
→ 关键动作:**先问"本领域这个 context 的真源天然分成哪几类",再建目录**;不要硬套别人的类目名。
|
|
73
|
+
|
|
74
|
+
### Context `index.md`(小模板)
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
---
|
|
78
|
+
knowledge_plane: <plane>
|
|
79
|
+
doc_role: guide
|
|
80
|
+
status: active
|
|
81
|
+
context: <context>
|
|
82
|
+
derived_from: docs/modeling/domain/contexts/<context>/index.md # 仅 derived plane
|
|
83
|
+
last_verified: YYYY-MM-DD
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
# <Context> Context
|
|
87
|
+
|
|
88
|
+
> 目录职责 · holds: <本 context 的真源边界> · excludes: <去哪> · tier: stable · ⬆from: track design 稳定后 · ⬇to: 代码/测试
|
|
89
|
+
|
|
90
|
+
## Boundary
|
|
91
|
+
本 context 拥有……
|
|
92
|
+
|
|
93
|
+
## Not Owned Here # 与相邻 context 易混时必写
|
|
94
|
+
- ……
|
|
95
|
+
|
|
96
|
+
| 类目 | 职责 | 何时阅读 |
|
|
97
|
+
|------|------|----------|
|
|
98
|
+
| <category>/index.md | …… | …… |
|
|
99
|
+
|
|
100
|
+
## Code Map
|
|
101
|
+
- code-map.md
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
规则:domain context 省略 `derived_from`;derived context 与 domain context 对齐时填**单一**父来源。`Boundary` 必写。index 只导航 + 说边界,不承载真源。**每个文件夹的 `index.md` 顶部带「目录职责」块**(标准类目用一行精简型,自定义类目用完整型)——格式与补齐见 [folder-manifest.md](@codument/std/spec/folder-manifest.md)。
|
|
105
|
+
|
|
106
|
+
### 叶子文件
|
|
107
|
+
|
|
108
|
+
- domain 的 `objects/` 习惯把每个 object 拆成 `data.md`(结构语义)+ `behavior.md`(行为语义);其他类目通常单文件,太大再升级同名文件夹。
|
|
109
|
+
- 每个叶子**讲语义,不机械罗列字段**。
|
|
110
|
+
|
|
111
|
+
```markdown
|
|
112
|
+
# Bad
|
|
113
|
+
- status: string
|
|
114
|
+
- owner_id: number
|
|
115
|
+
|
|
116
|
+
# Good
|
|
117
|
+
- `status`:生命周期标记。`draft` 可编辑;`published` 对外可见。
|
|
118
|
+
- `owner_id`:归属边界,用于访问校验与唯一性范围。
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## 4. 叶子写作要点(按类目选自然小节,不强制统一模板)
|
|
122
|
+
|
|
123
|
+
不同类目用不同小节即可——下面是**小节清单**,不是目录:
|
|
124
|
+
|
|
125
|
+
| 真源类型 | 建议小节 |
|
|
126
|
+
|----------|----------|
|
|
127
|
+
| 结构型(object/data/storage) | Identity & Boundary · Structure · Field Semantics(按语义分组)· Relationships · States · Invariants · Compatibility |
|
|
128
|
+
| 行为型(behavior/workflow/sync-flow) | Trigger / Messages · Preconditions & Guards · State Transitions · Side Effects · Failure Semantics · Idempotency & Concurrency |
|
|
129
|
+
| 规则型(policy/rule) | Rule · Scope · Rationale · Enforcement Points · Exceptions · Failure Semantics |
|
|
130
|
+
|
|
131
|
+
跨 object 的 guard 放 policy 类目;单 object 消息链接到该 object 的 behavior。derived 叶子引用 canonical,只描述投影差异,不重写正文。
|
|
132
|
+
|
|
133
|
+
## 5. Frontmatter(用受控精简 schema)
|
|
134
|
+
|
|
135
|
+
字段集与含义在 [model-driven-docs.md](../attractors/model-driven-docs.md) 统一定义。modeling 侧附加约定:
|
|
136
|
+
|
|
137
|
+
- `context:` 必填。
|
|
138
|
+
- `derived_from:` **只写一个**最近的 canonical 父来源(一行)。**不要堆十几行来源清单**——长来源关系写正文或 `code-map.md`。
|
|
139
|
+
- 代码路径**不进** frontmatter,写 `code-map.md` 或正文。
|
|
140
|
+
|
|
141
|
+
## 6. 在你自己的领域长出一个新 modeling plane(生成式步骤)
|
|
142
|
+
|
|
143
|
+
1. **定性**:它是 canonical(只有 `domain`)还是 derived?derived 就确定它投影自哪些 domain 真源。
|
|
144
|
+
2. **列 context**:通常与 domain context 对齐、同名;没有投影的可省略,不要为对称伪造。
|
|
145
|
+
3. **定类目**:对每个 context 问"真源天然分成哪几类"→ 选 3–6 个正交类目(这一步就是把领域知识落成目录)。
|
|
146
|
+
4. **起骨架**:建 `index.md`(导航) + `code-map.md` + 各类目目录;叶子先用单文件。**每个类目目录给其 `index.md` 写「目录职责」块**(自定义类目必填,见 [folder-manifest.md](@codument/std/spec/folder-manifest.md))。
|
|
147
|
+
5. **连真源**:derived 文档填 `derived_from`(单一父),不复制 canonical。
|
|
148
|
+
|
|
149
|
+
## 7. 反模式
|
|
150
|
+
|
|
151
|
+
- ❌ context 第一层把"主题"和"类目"混在一起 → 第一层只放类目,类目下再放主题/叶子。
|
|
152
|
+
- ❌ 复制 canonical domain 真源形成第二份真源 → derived 引用 + 只写投影差异。
|
|
153
|
+
- ❌ 为了和 domain 对称,伪造该 plane 并不存在的 derived 概念。
|
|
154
|
+
- ❌ `index.md` 承载真源 → index 只导航与边界。
|
|
155
|
+
- ❌ `derived_from` 堆成长清单 → 单一父来源;其余关系写正文。
|
|
156
|
+
- ❌ 硬把别的领域的 `objects/policies/workflows` 套到不适配的 plane → 类目由本领域真源结构决定。
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# codument 如何复用三层内核(kernel pointer)
|
|
2
|
+
|
|
3
|
+
codument **不重定义**内核;它是 dynamic-workflow 三层标准的一个**领域**。本目录只定义 codument 领域特有的部分。
|
|
4
|
+
|
|
5
|
+
| 层 | 来源 | codument 用法 |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| **Layer 1 内核语言** | `../dynamic-workflow/spec/layer-1-kernel.md` | `<Imports>`(vfs://@/ ./ ../)、`<Ports>`/`<Port>`/`<MaterialBundle>`、`<Extension>` 壳+kind、脚本 `<Adapter lang src>` —— track.xml 直接用 |
|
|
8
|
+
| **Layer 2 通用功能** | `../dynamic-workflow/spec/layer-2-functions.md` | `<Hooks>`/`<Hook on>`(track/phase/task 生命周期);`<Step>`(如需隔离工作单元) |
|
|
9
|
+
| **Layer 3 TaskSpace** | `../dynamic-workflow/spec/layer-3-concepts.md §5` | track.xml 的 `<TaskSpace>` 工作树(phase=第一层 TaskGroup);`<Description>` 元素、status-in-XML、`Task`/`TaskGroup`/`SubNodes` |
|
|
10
|
+
|
|
11
|
+
## codument 领域新增(`cdt:` = `urn:codument:v1`)
|
|
12
|
+
|
|
13
|
+
- **`<Track>` 根**:codument 领域流程根(类比 dynamic-workflow 的 `BTWorkflow`)。
|
|
14
|
+
- **`<Schedule>`**:调度 overlay(mode + `<Needs>` 依赖边),与 `<TaskSpace>` 并列。
|
|
15
|
+
- **`cdt:` Hook check 类型**:`<cdt:AttractorCheck>` / `<cdt:GapLoop>` / `<cdt:HumanConfirm>`(codument 的校验/纠偏/确认),是内核 Extension 派发的领域 kind,**配置直接写在节点上**(无 `agents/` 定义文件):`AttractorCheck.use` 指 `config/attractor-profiles.xml` 的 profile;`GapLoop` 用 `max-rounds`/`on-exhausted` 属性。
|
|
16
|
+
- **`cdt:` TaskSpace 扩展**:`<cdt:Gate>` / `<cdt:Acceptance>` / `<cdt:Criterion>`、`priority` 属性、`cdt:child-mode`(层级执行模式)等。
|
|
17
|
+
- **`<Schedule>`** 的 `<Dag>`/`<Node>`(按层依赖)也是 codument 领域调度词汇。
|
|
18
|
+
|
|
19
|
+
> 同构红利:codument 的 `<TaskSpace>` 与 dynamic-workflow 的 task-space 是**同一种任务树**。dynamic-workflow 的 Step 可经 `task=` 关联 codument track 里的任务节点;codument track 也能被一个外层 workflow 当作 task 子树驱动。
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# codument operations 索引
|
|
2
|
+
|
|
3
|
+
本目录是 codument 各**操作的权威提示词 body**(track / implement / gap-loop / archive ...)。agent skill 安装目录中的 `SKILL.md` 只是薄壳入口,通过提示词引用本目录 `@/codument/std/operations/<op>.md` 并遵循之。
|
|
4
|
+
|
|
5
|
+
每个操作一个文件,**Markdown 为主**(标题/说明/规则/表格/示例);**程序化的执行流程**(串行/并行/条件/循环/spawn/返回/退出)用 `--` 流程标记块(文本化控制流语言)。规范见 `_operation-spec.md`。所有引用指向 `codument/std/...` / `codument/std/sop/...`(self-contained)。
|
|
6
|
+
|
|
7
|
+
| skill | 文件 | 作用 |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| codument-impl-quick | `impl-quick.md` | 基于 Codument 上下文快速实现小改动,不创建 track/mission |
|
|
10
|
+
| codument-discuss | `discuss.md` | 创建 track/mission 前的上下文搜集与 quick/track/mission 分流 |
|
|
11
|
+
| codument-plan-track | `plan-track.md` | 创建变更追踪(behavior delta + track.xml) |
|
|
12
|
+
| codument-discuss-phase | `discuss-phase.md` | 执行前讨论/细化某 phase 的任务与调度 |
|
|
13
|
+
| codument-plan-track-wave | `plan-track-wave.md` | 规划 Schedule:标 `cdt:child-mode="dag"` + 写 `<Dag>` |
|
|
14
|
+
| codument-impl-track | `impl-track.md` | 按 TaskSpace + Schedule 执行任务(顺序/DAG,编排子代理) |
|
|
15
|
+
| codument-gap-loop | `gap-loop.md` | 有界目标对比纠偏(fresh 子代理) |
|
|
16
|
+
| codument-verify | `verify.md` | 独立验证实现是否达成目标 |
|
|
17
|
+
| codument-revise-track | `revise-track.md` | 非线性修订 track 自身产物 |
|
|
18
|
+
| codument-validate | `validate.md` | 校验 track.xml / spec 结构 |
|
|
19
|
+
| codument-archive-track | `archive-track.md` | 归档 track + 提升 behavior 进 `codument/behaviors/` + 可选 artifact/memory 同步 |
|
|
20
|
+
| codument-plan-mission | `plan-mission.md` | 创建长周期 mission(mission.xml + proposal.md + design.md) |
|
|
21
|
+
| codument-impl-mission | `impl-mission.md` | 按 mission.xml DAG 执行 mission,支持控制论 actor loop 与受控重规划 |
|
|
22
|
+
| codument-archive-mission | `archive-mission.md` | 归档 mission 到 `missions/archived/YYYY-MM-DD-<mission-id>/` |
|
|
23
|
+
| codument-artifact-sync | `artifact-sync.md` | 按 output MaterialBundle 同步制品到目标 |
|
|
24
|
+
| codument-docs-bootstrap | `docs-bootstrap.md` | 把现存项目总结进 docs/modeling 与 docs/impl |
|
|
25
|
+
| codument-migrate | `migrate.md` | 迁移旧 plan.xml→track.xml、md specs→xml、旧 archive 布局 |
|
|
26
|
+
|
|
27
|
+
CLI 辅助命令(非 skill body):`codument init` 初始化工作区;`codument status` 显示项目状态;`codument modeling validate|lint` 管理 `codument/modeling/`;`codument engineering validate|lint` 管理 `codument/engineering/`。
|
|
28
|
+
|
|
29
|
+
> 兼容说明:旧 `codument-plan-schedule` → `codument-plan-track-wave`(Schedule 模型);旧 `execute-wave` 并入 `impl-track`(Schedule 统一表达调度);旧 `migrate-archive`+`migrate-specs` 并入 `migrate`。
|
|
30
|
+
> 每个 skill 的「执行套路」细节(TDD、wave 调度、gap-loop 规程等)放 `codument/std/sop/`,由 skill 用 `#call` / 文中引用。
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Operation 提示词规范
|
|
2
|
+
|
|
3
|
+
codument 的每个 operation 提示词放在 `codument/std/operations/<op>.md`。这些文件是 agent skill 壳引用的**权威 body**;skill 壳只负责 routing,真正规则、流程和示例都在 operation body 中。
|
|
4
|
+
|
|
5
|
+
## 文档形态
|
|
6
|
+
|
|
7
|
+
- 默认使用普通 Markdown 写背景、规则、表格、示例、注意事项。
|
|
8
|
+
- 内嵌 XML / code 使用对应 fenced code block,例如 ```` ```xml ````。
|
|
9
|
+
- 程序化执行流程使用 flow notation 的 `text` 流程块。
|
|
10
|
+
|
|
11
|
+
flow notation 的权威规范见:
|
|
12
|
+
|
|
13
|
+
`codument/std/spec/flow-notation.md`
|
|
14
|
+
|
|
15
|
+
不要在每个 operation 里重复完整 flow notation 说明;只在需要时引用该 spec。
|
|
16
|
+
|
|
17
|
+
## 何时使用流程块
|
|
18
|
+
|
|
19
|
+
当一段内容是明确控制流时使用流程块:
|
|
20
|
+
|
|
21
|
+
- 串行 / 并行步骤。
|
|
22
|
+
- 条件分支。
|
|
23
|
+
- 循环 / 重试 / 收敛。
|
|
24
|
+
- spawn 子代理。
|
|
25
|
+
- 等待回执。
|
|
26
|
+
- 返回 / 退出 / 失败处理。
|
|
27
|
+
|
|
28
|
+
当内容只是解释“是什么、为什么、注意什么、字段含义、示例”时,继续使用 Markdown prose。
|
|
29
|
+
|
|
30
|
+
## 引用约定
|
|
31
|
+
|
|
32
|
+
- 标准规范引用 `codument/std/spec/...`。
|
|
33
|
+
- 执行套路引用 `codument/std/sop/...`。
|
|
34
|
+
- 其他 operation body 引用 `codument/std/operations/...`。
|
|
35
|
+
- operation body 应自包含关键规则,不依赖聊天历史。
|
|
36
|
+
|
|
37
|
+
## 编写纪律
|
|
38
|
+
|
|
39
|
+
- operation body 是给 AI 执行的,不只是人类文档;流程必须可恢复、可判定、可验证。
|
|
40
|
+
- 涉及外部状态的长流程,应明确状态真源,不依赖 chat history。
|
|
41
|
+
- 复杂 actor / 控制论流程优先拆成全局路由 + actor 局部 drive,不把所有细节塞进一个巨大流程块。
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# skill: codument-archive-mission(归档 mission)
|
|
2
|
+
|
|
3
|
+
归档一个已完成、取消、废弃或被替代的 mission。归档会把 mission 从 `pending/` 或 `active/` 移入 `archived/YYYY-MM-DD-<mission-id>/`,并按配置提升 durable decisions / memory。
|
|
4
|
+
|
|
5
|
+
> 本 operation 复用 `codument-archive-track` 的收口经验,但 mission 不提升 behavior delta。mission 是长周期控制面;behavior 真源仍由各落地 track 归档时提升。
|
|
6
|
+
|
|
7
|
+
## 1. 前置
|
|
8
|
+
|
|
9
|
+
- 优先归档 `codument/missions/active/<mission-id>/`。
|
|
10
|
+
- 如果用户明确要求,也可以归档 pending / cancelled / superseded mission。
|
|
11
|
+
- 未完成 active mission 归档前必须确认。
|
|
12
|
+
|
|
13
|
+
## 2. 主流程
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
@delimiter: --
|
|
17
|
+
@node: #
|
|
18
|
+
@marker: ?
|
|
19
|
+
-- #sequence ?archive_mission
|
|
20
|
+
---- #step ?select
|
|
21
|
+
定位 mission:优先 active/<mission-id>,其次 pending/<mission-id>;若已在 archived 则停止。
|
|
22
|
+
---- /?select
|
|
23
|
+
---- #step ?precheck
|
|
24
|
+
读取 mission.xml Metadata.Status;completed/cancelled/superseded 可直接归档,active 未完成则请求用户确认。
|
|
25
|
+
---- /?precheck
|
|
26
|
+
---- #step ?validate
|
|
27
|
+
best-effort 校验 mission.xml XML 格式、必备 proposal.md/design.md、reports/mission-complete.md 或等价收口证据。
|
|
28
|
+
---- /?validate
|
|
29
|
+
---- #step ?track_precheck
|
|
30
|
+
扫描 mission.xml 中所有 `cdt:TrackLink state="bound"`:通过 id 解析 active track(codument/tracks/<id>/track.xml)或 archived track(codument/archive/**/<timestamp>-<id>/track.xml)。若存在 active 或 missing 的 bound track,issues-first 列出并请求用户选择:逐个调用 codument-archive-track 归档 eligible active tracks、保留不归档并继续、或停止归档。
|
|
31
|
+
---- /?track_precheck
|
|
32
|
+
---- #step ?promote_decisions
|
|
33
|
+
若 decisions/ 中有 durable 决策,按 knowledge-tiers 与 archive-track 经验提升到 codument/decisions/。
|
|
34
|
+
---- /?promote_decisions
|
|
35
|
+
---- #step ?promote_memory
|
|
36
|
+
若 memory profile enabled 且 memory/ 中有候选,按类别提升 memory。
|
|
37
|
+
---- /?promote_memory
|
|
38
|
+
---- #step ?move
|
|
39
|
+
移动到 codument/missions/archived/YYYY-MM-DD-<mission-id>/。
|
|
40
|
+
---- /?move
|
|
41
|
+
---- #step ?finish
|
|
42
|
+
宣布归档路径;提示 mission 不提升 behavior,behavior 已由落地 tracks 各自归档。
|
|
43
|
+
---- /?finish
|
|
44
|
+
-- /?archive_mission
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## 3. 归档路径
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
codument/missions/archived/YYYY-MM-DD-<mission-id>/
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
日期使用执行归档当天的本地日期。若目标路径已存在,追加 `-2`、`-3`。
|
|
54
|
+
|
|
55
|
+
## 4. 不做事项
|
|
56
|
+
|
|
57
|
+
- 不把 mission 当作 behavior delta 提升。
|
|
58
|
+
- 不删除 analysis / reports。
|
|
59
|
+
- 不静默批量归档 mission 引用的 tracks;归档前必须 precheck `cdt:TrackLink state="bound"`,并在用户明确选择时才逐个调用 `codument-archive-track`。
|
|
60
|
+
- 不把 `roadmap.md` 作为新 mission 必备文件。
|
|
61
|
+
|
|
62
|
+
## 5. 输出
|
|
63
|
+
|
|
64
|
+
```text
|
|
65
|
+
Mission '<mission-id>' 已归档到 codument/missions/archived/YYYY-MM-DD-<mission-id>/。
|
|
66
|
+
```
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# skill: codument-archive-track(归档已完成的 track)
|
|
2
|
+
|
|
3
|
+
**描述:** 归档已完成的变更追踪。把 track 的产出"落盘"成持久真源——核心动作是把行为增量提升进行为登记表 `codument/behaviors/`,并把 track 移进 `archive/`;再按开关条件提升 decision / memory、按显式 hook 触发 artifact/docs 同步。
|
|
4
|
+
|
|
5
|
+
> 本文是完整提示词(口径已对齐当前标准)。**程序化的执行流程**(有序的提升流水线 + 条件门)用流程标记块(` ```text ` + `@delimiter: --`,构造词汇见 [`_operation-spec.md`](./_operation-spec.md))表达;**说明、规则、背景、示例**用 Markdown,内嵌 XML 用 ```` ```xml ```` 围栏。
|
|
6
|
+
>
|
|
7
|
+
> 口径映射(旧→新):`codument:archive`→`codument-archive-track`(旧 `codument-archive` 为别名);`plan.xml`→`track.xml`,其 `metadata.status`→`<Metadata><Status>`;`tracks/<id>/`→`archive/YYYY-MM/YYYY-MM-DD-HHmm-<id>/`(时间取 track **最后更新**时间,不是执行归档命令当天);`spec_deltas/**`→`behavior_deltas/**`、`<spec-patch>`→`<behavior-patch>`、`spec://`→`behavior://`、`codument/specs/`→`codument/behaviors/`;`feature.json` 的 `knowledgeSync.enabled` / `projectMemory.enabled`→`config/attractor-profiles.xml` 里 `docs` / `memory` profile 的 `enabled`;`artifacts.xml` 的零散 source/target → track 的 `output` MaterialBundle(来源)+ artifact 规则的目标根(目标);`<artifact-sync>` hook → `<cdt:ArtifactSync>`;`<attractor-check>` → `<cdt:AttractorCheck>`。
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1.0 系统指令
|
|
12
|
+
|
|
13
|
+
你是 Codument 规范驱动开发框架的 AI 代理助手。当前任务是归档一个已完成的 track。
|
|
14
|
+
|
|
15
|
+
**优先调用 Codument CLI 完成归档。**
|
|
16
|
+
|
|
17
|
+
- 归档动作优先执行 `codument archive <track-id> --yes`。CLI 会统一处理 archive 路径、behavior registry 提升、decisions、memory 与 artifact-sync 提示。
|
|
18
|
+
- 不要手工 `mv` track 目录来代替 CLI 归档。
|
|
19
|
+
- 仅当 CLI 不存在或执行失败,才按下文手工归档流程作为 fallback,并在最终结果中**明确说明 fallback 原因**。
|
|
20
|
+
|
|
21
|
+
归档把 track 的产出落盘成持久真源,四类提升各有开关:
|
|
22
|
+
|
|
23
|
+
- **behavior 提升(必做)**——把 `behavior_deltas/**` 应用进 `codument/behaviors/`,更新行为登记表。
|
|
24
|
+
- **track 归档(必做)**——把 `tracks/<id>/` 移进 `archive/`,`<Status>completed`。
|
|
25
|
+
- **decision 提升(条件)**——有 durable decision 才升 `decision://`。
|
|
26
|
+
- **memory 提升(条件)**——`memory` profile `enabled` 且 track 显式给候选时才升 `memory://`。
|
|
27
|
+
- **artifact/docs 同步(条件·显式触发)**——只有 `operation-hooks.xml` 显式配了 `archive-track:after <cdt:ArtifactSync>` 且 `docs` profile `enabled` 才同步。
|
|
28
|
+
|
|
29
|
+
> **晋升判定权威**:每类提升(behaviors / docs / decisions / memory)的"该不该升、升到哪层"以 [knowledge-tiers.md](@codument/std/attractors/knowledge-tiers.md) §4–§5 的触发条件为准。归档是**兜底**——discuss / 实现期已实时收敛进 owner 文档的,本步只复查补漏(见 [model-driven-docs.md](@codument/std/attractors/model-driven-docs.md) 的"两个时机,别只在归档")。
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 2.0 确定 Track ID
|
|
34
|
+
|
|
35
|
+
1. **检查输入:**
|
|
36
|
+
- 如果提示词包含具体 track ID,使用该值。
|
|
37
|
+
- 如果对话中模糊引用了某个 track,运行 `codument list` 显示候选项并确认(用 **Protocol: ask-single-question-closed**)。
|
|
38
|
+
- 否则,询问用户要归档哪个 track(用 **Protocol: ask-single-question-free**)。
|
|
39
|
+
|
|
40
|
+
2. **验证 Track:**
|
|
41
|
+
- 运行 `codument list` 验证 track ID。
|
|
42
|
+
- 如果 track 缺失、已归档或未准备好,停止并通知用户。
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 3.0 归档主流程(提升流水线)
|
|
47
|
+
|
|
48
|
+
整个归档是一条**有序的提升流水线**——前置门 → behavior 提升(必做)→ 移 track(必做)→ 条件提升(decision / memory)→ modeling 合并(条件·modeling 启用,§5.5)→ 显式 artifact 同步 → 校验。每步带条件门,门不满足就跳过该步并在结果中说明。
|
|
49
|
+
|
|
50
|
+
```text
|
|
51
|
+
@delimiter: --
|
|
52
|
+
-- #sequence ?archive
|
|
53
|
+
---- #step ?precheck
|
|
54
|
+
读 track.xml <Metadata><Status>;status=completed 才直接归档
|
|
55
|
+
---- /?precheck
|
|
56
|
+
---- #if ?notdone cond="Status 不是 completed"
|
|
57
|
+
警告用户该 track 未完成,询问是否仍要归档(Protocol: ask-single-question-closed);用户拒绝则 #exit
|
|
58
|
+
---- /?notdone
|
|
59
|
+
---- #if ?before cond="operation-hooks.xml 为 archive-track 配了 archive-track:before(如 <cdt:AttractorCheck use=\"docs\">)"
|
|
60
|
+
------ #step ?run-before
|
|
61
|
+
先执行 archive-track:before hook(常见用途:用 docs profile 做归档前吸引子方向审查)
|
|
62
|
+
------ /?run-before
|
|
63
|
+
---- /?before
|
|
64
|
+
---- #step ?behavior
|
|
65
|
+
【必做·核心】提升 behavior:把 behavior_deltas/**(track input 物料)按 <upsert|delete|move> wrapper + behavior:// selector 应用进 codument/behaviors/(track output name="behavior" 物料根);详见 §4
|
|
66
|
+
---- /?behavior
|
|
67
|
+
---- #step ?mkdir
|
|
68
|
+
创建 archive/YYYY-MM/ 目录(不存在则建);YYYY-MM 取 track 最后更新时间
|
|
69
|
+
---- /?mkdir
|
|
70
|
+
---- #step ?move
|
|
71
|
+
把 tracks/<id>/ 移到 archive/YYYY-MM/YYYY-MM-DD-HHmm-<id>/(时间取 track 最后更新);track.xml <Metadata><Status>completed
|
|
72
|
+
---- /?move
|
|
73
|
+
---- #if ?decision cond="track 有明确标记为 durable / 长期项目决策的单文件决策"
|
|
74
|
+
------ #step ?promote-decision
|
|
75
|
+
把 durable 决策提升到 codument/decisions/YYYY-MM/YYYY-MM-DD-HHmm-slug/decision.md,用 decision://<slug> 作长期引用;普通过程决策只留 archive,不提升
|
|
76
|
+
------ /?promote-decision
|
|
77
|
+
---- /?decision
|
|
78
|
+
---- #if ?memory cond="memory profile enabled 且 track 显式存在 memory/{lessons,incidents,patterns,summaries}/*.md 候选"
|
|
79
|
+
------ #step ?promote-memory
|
|
80
|
+
提升 memory:// 内容;不要从 proposal 或普通日志自动合成 memory
|
|
81
|
+
------ /?promote-memory
|
|
82
|
+
---- /?memory
|
|
83
|
+
---- #if ?engineering cond="config/engineering.xml 存在且 enabled=true"
|
|
84
|
+
------ #step ?engineering-merge
|
|
85
|
+
把 engineering_deltas/** 作为 theirs,与 base(track 元信息记录的宿主 git commit)和 ours(当前 codument/engineering/)做节点级 3-way 合并;冲突按 config/engineering.xml MergePolicy issues-first 处理;合并结果写回 codument/engineering/ 并运行 codument engineering lint
|
|
86
|
+
------ /?engineering-merge
|
|
87
|
+
---- /?engineering
|
|
88
|
+
---- #if ?sync cond="operation-hooks.xml 为 archive-track:after 显式配了 <cdt:ArtifactSync use=\"...\"> 且 docs profile enabled"
|
|
89
|
+
------ #step ?artifact-sync
|
|
90
|
+
读 track 的 output MaterialBundle(如 docs 目录),按 operations/artifact-sync.md / codument-artifact-sync skill 同步到目标;只同步 hook 引用的 artifact
|
|
91
|
+
------ /?artifact-sync
|
|
92
|
+
---- /?sync
|
|
93
|
+
---- #else ?no-sync cond="缺显式 archive-track:after <cdt:ArtifactSync> hook 或 docs profile 未 enabled"
|
|
94
|
+
不同步:不因为 docs profile enabled 或 artifact 配置存在就隐式同步
|
|
95
|
+
---- /?no-sync
|
|
96
|
+
---- #step ?validate
|
|
97
|
+
尝试 codument validate --strict 确认归档后状态正确
|
|
98
|
+
---- /?validate
|
|
99
|
+
---- #if ?nocli cond="系统中找不到 codument 命令"
|
|
100
|
+
跳过该外部 CLI validate 步骤(不阻塞归档);并在最终结果中明确说明:外部 codument validate --strict 未执行,原因是找不到 codument 命令
|
|
101
|
+
---- /?nocli
|
|
102
|
+
---- #return ?done value="宣布:Track '<track-id>' 已成功归档到 archive/YYYY-MM/YYYY-MM-DD-HHmm-<track-id>/"
|
|
103
|
+
---- /?done
|
|
104
|
+
-- /?archive
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
> **不维护额外 registry**:归档通过移动 `tracks/<id>/` 完成,不维护额外的活跃目录入口文件。
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 4.0 behavior 提升逻辑(核心动作)
|
|
112
|
+
|
|
113
|
+
track 完成后更新行为登记表 `codument/behaviors/`(旧称 spec registry / `codument/specs/`)是归档的**核心动作**——把 track 的行为增量合并进项目行为的真源(Contract Registry)。详细的登记表布局与节点结构见 [std/spec/behavior-registry.md](@codument/std/spec/behavior-registry.md)。
|
|
114
|
+
|
|
115
|
+
### 4.1 应用 XML behavior patch
|
|
116
|
+
|
|
117
|
+
```text
|
|
118
|
+
@delimiter: --
|
|
119
|
+
-- #sequence ?apply-delta
|
|
120
|
+
---- #step ?scan
|
|
121
|
+
扫描 behavior_deltas/**/*.xml(track 的 input 物料)
|
|
122
|
+
---- /?scan
|
|
123
|
+
---- #step ?validate-root
|
|
124
|
+
验证每个文件根节点为 <behavior-patch>
|
|
125
|
+
---- /?validate-root
|
|
126
|
+
---- #loop ?each for="每个 mutation wrapper"
|
|
127
|
+
------ #step ?read-mutation
|
|
128
|
+
读取 wrapper 标签(upsert|delete|move)、selector(behavior://…)、可选 to
|
|
129
|
+
------ /?read-mutation
|
|
130
|
+
------ #switch ?op on="wrapper 标签"
|
|
131
|
+
-------- #case ?upsert when=upsert
|
|
132
|
+
新增或替换 selector 指向的行为节点
|
|
133
|
+
-------- /?upsert
|
|
134
|
+
-------- #case ?delete when=delete
|
|
135
|
+
删除 selector 指向的行为节点
|
|
136
|
+
-------- /?delete
|
|
137
|
+
-------- #case ?move when=move
|
|
138
|
+
把 selector 指向的节点移动到 to
|
|
139
|
+
-------- /?move
|
|
140
|
+
------ /?op
|
|
141
|
+
------ #if ?missing cond="selector 目标 capability 不存在"
|
|
142
|
+
创建 codument/behaviors/<capability>.xml(行为较多时演化为 <capability>/index.xml + 子文件)
|
|
143
|
+
------ /?missing
|
|
144
|
+
---- /?each
|
|
145
|
+
---- #step ?register
|
|
146
|
+
能力变化登记到 behavior registry(更新行为登记表真源)
|
|
147
|
+
---- /?register
|
|
148
|
+
-- /?apply-delta
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
每个 delta 文件是一份 `<behavior-patch>`,示例:
|
|
152
|
+
|
|
153
|
+
```xml
|
|
154
|
+
<behavior-patch capability="csv-export" version="1">
|
|
155
|
+
<upsert selector="behavior://csv-export/requirements/export-endpoint">
|
|
156
|
+
<requirement id="export-endpoint">
|
|
157
|
+
<statement>系统 SHALL 提供 GET /reports/export.csv …</statement>
|
|
158
|
+
<suite name="csv-export">
|
|
159
|
+
<case name="字段转义"><given>…</given><when>…</when><then>…</then></case>
|
|
160
|
+
</suite>
|
|
161
|
+
</requirement>
|
|
162
|
+
</upsert>
|
|
163
|
+
</behavior-patch>
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
如果是纯工具变更(无行为增量),跳过 behavior 提升步骤。
|
|
167
|
+
|
|
168
|
+
### 4.2 旧 Markdown 兼容
|
|
169
|
+
|
|
170
|
+
旧 track 可能只有 `spec.md` 和 `## ADDED|MODIFIED|REMOVED Requirements`。可以**兼容读取**这种 Markdown delta,但**不要**为新 track 创建这种格式——新 track 一律用 `behavior_deltas/**/*.xml`(`<behavior-patch>`)。
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## 5.0 条件提升(decision / memory)
|
|
175
|
+
|
|
176
|
+
- **承重决策 → `decision://`**:优先读取 `decisions/*.md` 中明确标记为 durable / 长期项目决策的单文件决策(旧 track 可兼容读取 `decisions.md`)。把 durable 决策提升到 `codument/decisions/YYYY-MM/YYYY-MM-DD-HHmm-slug/decision.md`,并用 `decision://<slug>` 作长期引用;普通过程决策只保留在 archive。触发条件:一个原本一次性的取舍变成"以后都按这个来"的承重决策(见 [knowledge-tiers.md](@codument/std/attractors/knowledge-tiers.md) §5)。
|
|
177
|
+
- **长期记忆 → `memory://`**:**仅当** `config/attractor-profiles.xml` 的 `memory` profile `enabled=true` **且** track 中显式存在 `memory/{lessons,incidents,patterns,summaries}/*.md` 候选时,才提升 `memory://` 内容。**不要**从 proposal 或普通日志自动合成 memory。
|
|
178
|
+
|
|
179
|
+
> `docs` profile `enabled` 本身**不**代表复制 durable decision 记录,也**不**触发隐式 docs/knowledge sync;旧 `feature.json` 的 `knowledgeSync.targets` 应由 `upgrade-workspace`/`migrate` 迁移为 docs profile + artifact 规则的目标。
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## 5.5 modeling 合并(条件 · modeling 启用)
|
|
184
|
+
|
|
185
|
+
**仅当** `config/modeling.xml` 存在且 `enabled=true` 时执行;否则整步跳过、行为不变。
|
|
186
|
+
|
|
187
|
+
1. 物化三方:base(track 元信息记录的宿主 git commit,`git show <commit>:codument/modeling/...`)+ ours(当前 `codument/modeling/` 工作树)+ theirs(track 的 `modeling_deltas/**`)。
|
|
188
|
+
2. 节点级 3-way 合并(临时引擎,不持久化平行 vcs):复用 `xnl-vfs` `xnlFileHandler.merge` / `xnl-core` `diffNodes`+`applyMutations`(`metadataIdMode:"identity"`,按 `#id` 命中)。
|
|
189
|
+
3. 冲突按 `config/modeling.xml` 的 `<MergePolicy>` 处置:默认保守(`human`=issues-first 报告并暂停,不静默覆盖),可配 `ours|theirs|base`。
|
|
190
|
+
4. 合并结果写回 `codument/modeling/` 工作树(宿主 git 提交);跑 `codument modeling lint` 给分形拆分建议。
|
|
191
|
+
5. 把 track 设计方案按类目回写 `docs/impl/`(overview/howto/rules/reference/troubleshooting,见 docs-impl-fractal)。
|
|
192
|
+
|
|
193
|
+
> 详细规程见 `std/spec/modeling-delta.md`。modeling 是**结构真源**层;与 behaviors(行为契约)互不重复,modeling 节点引用 `behavior://`。
|
|
194
|
+
|
|
195
|
+
## 5.6 engineering 合并(条件 · engineering 启用)
|
|
196
|
+
|
|
197
|
+
**仅当** `config/engineering.xml` 存在且 `enabled=true` 时执行;否则整步跳过、行为不变。
|
|
198
|
+
|
|
199
|
+
1. 物化三方:base(track 元信息记录的宿主 git commit,`git show <commit>:codument/engineering/...`)+ ours(当前 `codument/engineering/` 工作树)+ theirs(track 的 `engineering_deltas/**`)。
|
|
200
|
+
2. 节点级 3-way 合并(临时引擎,不持久化平行 vcs):复用 `xnl-core` `diffNodes`+`applyMutations`(`metadataIdMode:"identity"`,按 `#id` 命中)。
|
|
201
|
+
3. 冲突按 `config/engineering.xml` 的 `<MergePolicy>` 处置:默认保守(`human`=issues-first 报告并暂停,不静默覆盖),可配 `ours|theirs|base`。
|
|
202
|
+
4. 合并结果写回 `codument/engineering/` 工作树(宿主 git 提交);跑 `codument engineering lint` 给分形拆分建议。
|
|
203
|
+
|
|
204
|
+
> 详细规程见 `std/spec/engineering-delta.md`。engineering 是**工程知识真源**层;与 modeling(结构真源)、behaviors(行为契约)、decisions(承重决策)互不重复,通过 `engineering://` / `modeling://` / `behavior://` / `decision://` 引用连接。
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## 6.0 artifact / docs 同步(显式触发,不隐式)
|
|
209
|
+
|
|
210
|
+
**只有**当 `config/operation-hooks.xml` 为 `archive-track` 的 `archive-track:after` hook point 显式配了 `<cdt:ArtifactSync use="...">` **且** `docs` profile `enabled` 时才触发同步:
|
|
211
|
+
|
|
212
|
+
- 来源 = track 的 `output` MaterialBundle(如 docs 目录)——**直接读 track 的 output MaterialBundle,不再引用 `artifacts.xml` 作为单独配置**。
|
|
213
|
+
- 目标 = artifact 规则里的一个/多个目标根(base-dir + relative-dir/file)。
|
|
214
|
+
- 同步只针对 hook 引用的那个 artifact,按 `operations/artifact-sync.md` 的内容选择 / 路由 / 质量 + 写入 policy(dry-run / conflict=diff-confirm / provenance=manifest)执行;多目标保持同一相对结构。
|
|
215
|
+
|
|
216
|
+
**关键约束**:缺失显式 hook 时,**不要**因为 `docs` profile `enabled` 或 artifact 配置存在就隐式同步。
|
|
217
|
+
|
|
218
|
+
完整 artifact-sync 规程见 [codument-artifact-sync skill](./artifact-sync.md)(含 §4.5 docs 路由)。
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## 7.0 校验与宣布
|
|
223
|
+
|
|
224
|
+
1. **校验**:优先运行 `codument validate --strict` 确认归档后状态正确。如果系统中找不到 `codument` 命令,**跳过**这个外部 CLI validate 步骤(不要因此阻塞归档),并在最终结果中明确说明:外部 `codument validate --strict` 未执行,原因是找不到 `codument` 命令。
|
|
225
|
+
2. **宣布完成:**
|
|
226
|
+
> "Track '<track-id>' 已成功归档到 `archive/YYYY-MM/YYYY-MM-DD-HHmm-<track-id>/`。"
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## 8.0 参考
|
|
231
|
+
|
|
232
|
+
- 使用 `codument list` 确认 track ID。
|
|
233
|
+
- 使用 `codument list --behaviors` 查看更新后的行为登记表(XML registry)。
|
|
234
|
+
- behavior 登记表布局 / delta 应用:[std/spec/behavior-registry.md](@codument/std/spec/behavior-registry.md)。
|
|
235
|
+
- 归档执行套路:本文(codument-archive-track skill 即完整归档规程;codument-archive 为旧名别名)。
|
|
236
|
+
- 晋升阶梯与触发条件:[knowledge-tiers.md](@codument/std/attractors/knowledge-tiers.md) §4–§5。
|
|
237
|
+
- 显式 artifact 同步:[codument-artifact-sync skill](./artifact-sync.md)(含 §4.5 docs 路由)。
|
|
238
|
+
- 检查归档后 `codument validate --strict` 通过;如果系统找不到 `codument` 命令,则记录该外部 CLI validate 步骤已跳过。
|