@haaaiawd/loom 0.10.0 → 1.1.0

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 (58) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/LICENSE +21 -0
  3. package/README.md +147 -74
  4. package/cli/bin/loom.js +428 -105
  5. package/cli/help/asset.md +36 -0
  6. package/cli/help/atelier.md +37 -0
  7. package/cli/help/capability.md +68 -0
  8. package/cli/help/concepts.md +100 -72
  9. package/cli/help/doctor.md +71 -121
  10. package/cli/help/loop.md +120 -135
  11. package/cli/help/patch.md +33 -0
  12. package/cli/help/preview.md +2 -1
  13. package/cli/help/proposals.md +21 -0
  14. package/cli/help/version.md +92 -16
  15. package/cli/help/workflow.md +101 -100
  16. package/cli/src/activate.js +349 -73
  17. package/cli/src/asset-library.js +384 -0
  18. package/cli/src/atelier.js +331 -0
  19. package/cli/src/capability-graph.js +351 -0
  20. package/cli/src/capability-proposals.js +225 -0
  21. package/cli/src/diagnostics.js +240 -44
  22. package/cli/src/guide.js +155 -40
  23. package/cli/src/init.js +58 -32
  24. package/cli/src/intent-draft.js +303 -0
  25. package/cli/src/intent-map.js +560 -54
  26. package/cli/src/patch.js +214 -0
  27. package/cli/src/philosophy.js +177 -154
  28. package/cli/src/preview-prompt.md +13 -6
  29. package/cli/src/preview.js +1 -0
  30. package/cli/src/shared/intent-ref.js +38 -0
  31. package/cli/src/shared/proof-reference.js +19 -0
  32. package/cli/src/shared/verification-method.js +32 -0
  33. package/cli/src/verify.js +202 -62
  34. package/cli/src/version.js +5 -4
  35. package/dimensions/AUTHORSHIP.md +45 -0
  36. package/dimensions/PART_DECOMPOSITION.md +42 -203
  37. package/dimensions/SEARCH_METHODOLOGY.md +101 -97
  38. package/dimensions/examples/AGENT_SYSTEM/README.md +1 -1
  39. package/dimensions/examples/CLI_TOOL/README.md +1 -1
  40. package/dimensions/universal/COLLABORATION_PHILOSOPHY.md +28 -77
  41. package/dimensions/universal/ENGINEERING_CREED.md +30 -74
  42. package/dimensions/universal/PRODUCT_PHILOSOPHY.md +32 -70
  43. package/meta/BASELINE.md +91 -276
  44. package/meta/INTENT_LOOP.md +289 -737
  45. package/meta/PHILOSOPHY_WEAVER.md +110 -343
  46. package/meta/ROLE_ACTIVATION.md +109 -267
  47. package/package.json +13 -7
  48. package/roles/architect.md +84 -111
  49. package/roles/forge.md +105 -126
  50. package/roles/keeper.md +109 -223
  51. package/roles/visionary.md +57 -86
  52. package/templates/ASSET_LIBRARY_MANIFEST_TEMPLATE.json +10 -0
  53. package/templates/ATELIER_RECORD_TEMPLATE.json +48 -0
  54. package/templates/CAPABILITY_BRIEF_TEMPLATE.md +34 -0
  55. package/templates/CAPABILITY_GRAPH_TEMPLATE.json +11 -0
  56. package/templates/INTENT_MAP_TEMPLATE.json +26 -10
  57. package/templates/PHILOSOPHY_TEMPLATE.md +44 -75
  58. package/templates/VISION_TEMPLATE.md +44 -67
package/cli/help/loop.md CHANGED
@@ -1,135 +1,120 @@
1
- ## Intent Loop 详细流程
2
-
3
- 每个 Intent 独立走一圈。Loop 终止条件:所有 Intent 为 completed 且无 needs_review(不动点达成)。
4
-
5
- ## Step 1:Keeper 选 Intent
6
-
7
- \`\`\`bash
8
- loom intent next # 返回下一个可执行 Intent(pending 且依赖都 completed)
9
- loom context # 当前状态摘要(进度+下一步+风险)
10
- \`\`\`
11
-
12
- 如果没有可执行的 Intent:
13
- - 全部 completed → 项目阶段完成
14
- - blocked 需要人工介入
15
- - in_progress 但无验证记录 → 可能上次中断,跑 \`loom doctor\` 诊断
16
-
17
- ## Step 2:更新状态
18
-
19
- \`\`\`bash
20
- loom intent update <id> --status in_progress
21
- \`\`\`
22
-
23
- ## Step 3Forge 实现
24
-
25
- \`\`\`bash
26
- loom activate forge
27
- \`\`\`
28
-
29
- Forge 加载:意图叙事 + 哲学锚点 + 验收契约,在约束下自主实现代码。
30
- 辅助命令(三个命令的分工):
31
- - \`loom intent narrative <id>\` — 读意图叙事("为什么做")
32
- - \`loom verify contract <id>\` — 读验收契约("做成什么样才算数")
33
- - \`loom intent trace <id>\` — 完整追溯链(叙事+契约+哲学锚点一次性加载,最常用)
34
- - \`loom philosophy get <anchor>\` — 读哲学原则(遇到取舍时查)
35
-
36
- ## Step 4:Keeper 验证
37
-
38
- \`\`\`bash
39
- loom activate keeper
40
- loom verify contract <id> # 重新加载验收契约
41
- \`\`\`
42
-
43
- Keeper 独立验证四维度:
44
- 1. 意图忠实度 — 实现是否忠于原始意图叙事
45
- 2. 哲学一致性 — 实现是否符合哲学原则
46
- 3. 底线合规 — 是否违反 BASELINE
47
- 4. 验收达成 — 是否满足验收契约
48
-
49
- 写入验证记录:
50
- \`\`\`bash
51
- loom verify write --json-file verification.json
52
- \`\`\`
53
-
54
- 验证记录格式(\`loom verify write\` 的输入):
55
- \`\`\`json
56
- {
57
- "intent_id": "INT-001",
58
- "verdict": "passed",
59
- "timestamp": "2026-06-28T12:00:00.000Z",
60
- "summary": "具体证据描述——不是'看起来没问题'",
61
- "reproduction_command": "LLM_API_KEY=mock npm test",
62
- "dimensions": {
63
- "intent_fidelity": {
64
- "verdict": "passed",
65
- "evidence": "对照意图叙事第 2 段,extract.js 实现了完整编排"
66
- },
67
- "philosophy_consistency": {
68
- "verdict": "passed",
69
- "evidence": "AI_PHILOSOPHY 反模式逐条对照:JSON.parse 有 try/catch、fetch 有超时、无硬编码密钥"
70
- },
71
- "baseline_compliance": {
72
- "verdict": "passed",
73
- "evidence": "B1-B5 逐条合规"
74
- },
75
- "acceptance_achievement": {
76
- "verdict": "passed",
77
- "evidence": "6 条契约全部达成,npm test 6/6 pass"
78
- }
79
- }
80
- }
81
- \`\`\`
82
- CLI 自动包装成 \`{ intent_id, records: [{ round, ... }] }\` 追加到验证文件。
83
- \`dimensions\` 每个维度必须是 \`{ verdict, evidence }\` 对象——不允许只写"合规",必须写具体证据。
84
- \`reproduction_command\` 是复现验证的命令——别人跑这个命令能复现你的验证结果。L2 必填。
85
-
86
- **evidence 写法参考**:
87
- - 长度:每条 evidence 50-300 字符为宜。太短("合规")不达标,太长难读。
88
- - 哲学一致性维度:按哲学锚点逐条对照反模式(见 keeper.md 的"承诺验证法")
89
- - 其他维度:写"对照了什么 + 在代码哪里看到/没看到"
90
- - \`reproduction_command\` 注意平台差异:
91
- - Unix/Mac: \`LLM_API_KEY=mock npm test\`
92
- - Windows PowerShell: \`$env:LLM_API_KEY='mock'; npm test\`
93
- - Windows cmd: \`set LLM_API_KEY=mock && npm test\`
94
- - \`node --test\` 在 Windows 上不能用目录路径(\`node --test test/\` 会报错),用 glob:\`node --test test/*.test.js\`
95
-
96
- ## Step 5:根据判定结果
97
-
98
- | verdict | 处理 |
99
- |---|---|
100
- | passed | \`loom intent update <id> --status completed\`,回到 Step 1 |
101
- | deviated | 与 Forge 对话修正,重新实现重新验证。连续 3 轮升级 blocked |
102
- | blocked | \`loom intent update <id> --status blocked\`,停下报告用户 |
103
- | pending_human | **手动模式**:等用户补充判定(L3 人类反馈)。7 天超时升级 blocked |
104
-
105
- **AUTO 模式下的判定规则**(关键差异):
106
- - AUTO 模式开启时(\`loom auto on\`),**不允许 pending_human**
107
- - Keeper 遇到 L3 verification_method 时,用 L1+L2 能耐自主判定所有维度
108
- - 要么 passed(有证据),要么 deviated(有偏离说明),不停下等人类
109
- - **持续运行,除非出意外否则不允许私自停止**
110
- - "出意外" = blocked(依赖阻塞/契约无法判定/连续 3 轮 deviated 升级)、fatal 错误
111
-
112
- ## 变更回流
113
-
114
- 如果 Forge 发现验收契约不合理、或 Architect 的设计需要调整:
115
- 1. Keeper 评估变更范围(微调 vs 结构性变更)
116
- 2. 微调(验收措辞、验证方式)→ Keeper 直接改
117
- 3. 结构性变更(增减 Intent、改依赖)→ 重新激活 Architect
118
- 4. 受影响的已完成 Intent 标记为 needs_review
119
-
120
- ## 不动点收敛
121
-
122
- 默认单趟:所有 Intent 按拓扑序验证完毕且全 passed → done。
123
-
124
- 触发收敛:Pass 1 结束后还有 needs_review 的 Intent → 自动进入 Pass 2。
125
- - Pass 2: 重验所有 needs_review 的 Intent
126
- - deviated → 修 → 重验
127
- - 修的时候又影响别的 → 标记 needs_review
128
- - passed → completed
129
- - Pass 2 结束还有 needs_review → Pass 3
130
- - Pass 3 结束还有 needs_review → blocked,报告"无法收敛"
131
-
132
- 收敛达成 = 一趟完整 pass 没有产生任何新的 needs_review(不动点)。
133
- 最大 3 趟,超过判定为系统性问题,需 Architect 介入。
134
-
135
- 详细规则见 .loom/v{N}/ 下的 INTENT_LOOP.md。
1
+ ## Intent Loop 与 Quality Engine
2
+
3
+ 每个 Intent 独立运行,直到当前 revision 被证据闭合。
4
+
5
+ ```text
6
+ Select → Compile Expertise → Explore/Direct → Realize
7
+ → Self-check → Independent Proof → Close/Reflow
8
+ ```
9
+
10
+ ## 1. 选择与锁定
11
+
12
+ ```bash
13
+ loom intent next
14
+ loom intent update <id> --status in_progress
15
+ loom activate forge --intent <id>
16
+ ```
17
+
18
+ Context Pack 只注入当前角色和当前 Intent 的相关事实,但不会、也无法清除宿主会话的旧记忆。
19
+ Forge 必须以磁盘事实和当前 Pack 为准,发现冲突时报告。
20
+
21
+ ## 2. Expertise Compiler
22
+
23
+ Forge 先形成任务级 Expertise Pack
24
+
25
+ - 专业问题与任务类型。
26
+ - 卓越判断标准和反模式。
27
+ - 项目事实、硬约束与可变空间。
28
+ - 已实际加载的技能、资料、工具及其用途。
29
+ - Critic 视角与验证方法。
30
+
31
+ Pack 是临时认知配置,不写成新的长期规范。明显任务可以很短;高质量任务应足以解释为什么
32
+ 某个专业手法适合这个项目。
33
+
34
+ ## 3. Quality Arena
35
+
36
+ 完成目标明确且不存在实质质量选择时,走直接路径。
37
+
38
+ 当 `quality_contract` 要求相对提升时:
39
+
40
+ 1. 记录修改前 Baseline。
41
+ 2. 产生少量机制不同的候选。
42
+ 3. 按完成契约、质量契约、Doctrine 和实际成本比较。
43
+ 4. 实现最优候选并观察真实产物。
44
+ 5. 不胜过基线就保留原方案或回流契约,不强改。
45
+
46
+ ## 4. Quality Proof
47
+
48
+ ```bash
49
+ loom activate keeper --intent <id>
50
+ loom verify contract <id>
51
+ ```
52
+
53
+ Keeper 独立检查基础四维;有质量契约时增加第五维:
54
+
55
+ ```json
56
+ {
57
+ "intent_id": "INT-001",
58
+ "verdict": "passed",
59
+ "timestamp": "2026-07-28T12:00:00.000Z",
60
+ "summary": "具体、可定位、可复现的判定摘要",
61
+ "reproduction_command": "npm test",
62
+ "dimensions": {
63
+ "intent_fidelity": {
64
+ "verdict": "passed",
65
+ "evidence": "对照 narrative 的用户结果,真实产物保持了目标与非目标"
66
+ },
67
+ "philosophy_consistency": {
68
+ "verdict": "passed",
69
+ "evidence": "对照引用原则与反模式,关键取舍和例外均有项目依据"
70
+ },
71
+ "baseline_compliance": {
72
+ "verdict": "passed",
73
+ "evidence": "B1-B5 与项目底线逐项检查,未发现失守"
74
+ },
75
+ "acceptance_achievement": {
76
+ "verdict": "passed",
77
+ "evidence": "完成契约的可观察行为均已复现"
78
+ },
79
+ "quality_achievement": {
80
+ "verdict": "passed",
81
+ "evidence": "相对修改前基线,目标信号达到契约阈值且回归保持稳定",
82
+ "quality_proof_ref": "artifacts/quality-proof.md#INT-001"
83
+ }
84
+ }
85
+ }
86
+ ```
87
+
88
+ Intent 声明 `continuity_required: true`,Keeper 还必须写入并通过:
89
+
90
+ ```json
91
+ "preservation_achievement": {
92
+ "verdict": "passed",
93
+ "evidence": "复现旧状态 本轮操作 新状态;列出保留的旧值、完成状态或可见行为。"
94
+ }
95
+ ```
96
+
97
+ 这不是第二份契约:具体保留规则和操作序列仍写在 `acceptance`。通过快捷命令闭合时,必须显式提供
98
+ `--preservation-evidence "..."`。
99
+
100
+ 存在 `quality_contract` 时强制 `quality_achievement`;只有声明相对提升时才需要
101
+ `quality_proof_ref`。Quality Proof 至少说明基线、主张、候选机制、选择证据、稳定性和代价。
102
+
103
+ ## 5. 判定与回流
104
+
105
+ | verdict | 动作 |
106
+ |---|---|
107
+ | `passed` | `loom intent done <id>` |
108
+ | `deviated` | 回到真正的问题拥有者,修正后重验 |
109
+ | `blocked` | 标记阻塞并报告缺失条件 |
110
+ | `pending_human` | 只在确需人类感知或授权时使用 |
111
+
112
+ 完成通过但质量未通过时,结果可以保留为可靠完成,但不得声称质量提升;由用户决定继续 Arena、
113
+ 降低或修订质量契约,还是接受当前结果。
114
+
115
+ Intent 语义变化必须递增 revision;任何完成态 Intent 回流也会递增验证 epoch。旧 revision 或旧 epoch 的 passed 记录都不会闭合当前 Intent;修订 Intent 时必须完整分类全部直接和传递下游,已完成下游会一并回流复验。
116
+
117
+ ## 6. Goal 与闭环
118
+
119
+ 把当前 Intent 视为一次 Codex goal 的可闭合单元。goal 只能在“结果、适用时的状态守恒、可复现证据、按需的质量证明”同时成立后完成;
120
+ goal/status 不能替代 Keeper 验证。状态型任务默认保留或合并旧内容,删除和覆盖必须在 acceptance 中显式授权。
@@ -0,0 +1,33 @@
1
+ ## Patch 审计工作流
2
+
3
+ Patch 只处理不改变 Intent 或验收契约的实现修正。`06_CHANGELOG.json` 是唯一权威来源,`06_CHANGELOG.md` 是 CLI 确定性生成的只读投影,不要手工编辑。
4
+
5
+ ```bash
6
+ # 修改并自行运行验证后,准备输入文件
7
+ loom patch record --json-file patch.json
8
+ loom patch list
9
+ loom patch get PATCH-001
10
+ loom patch validate
11
+ ```
12
+
13
+ 输入格式:
14
+
15
+ ```json
16
+ {
17
+ "summary": "修复空输入崩溃",
18
+ "reason": "解析器遗漏空字符串边界",
19
+ "affects": ["INT-001"],
20
+ "files": ["src/parser.js", "test/parser.test.js"],
21
+ "verification": [
22
+ { "command": "npm test", "result": "passed" },
23
+ { "method": "agent-browser screenshot", "result": "passed", "evidence": "浅色和深色背景下均清晰可读" }
24
+ ]
25
+ }
26
+ ```
27
+
28
+ - `affects` 可省略;提供时每个 ID 必须存在于当前 Intent Map。
29
+ - `files` 必须是安全的项目相对路径。
30
+ - `verification` 每项提供 `command` 或 `method`,可附具体 `evidence`;至少有一个 `passed`。CLI 只记录结果,绝不执行命令。
31
+ - Patch 只能在当前版本全部 Intent 完成后记录;未完成的能力变化必须走 Intent Loop。
32
+ - `id` 和 `timestamp` 由 CLI 分配,输入中不要提供。
33
+ - `loom patch validate` 校验 JSON 全量记录及 Markdown 是否与 JSON 完全一致。
@@ -43,7 +43,8 @@ preview_mtime >= source_latest_mtime → fresh
43
43
  - `03_DECISIONS/`
44
44
  - `04_INTENT_MAP.json`
45
45
  - `05_VERIFICATION.md`
46
- - `06_CHANGELOG.md`
46
+ - `06_CHANGELOG.json`(Patch 唯一权威来源)
47
+ - `06_CHANGELOG.md`(确定性生成投影)
47
48
  - `verifications/`
48
49
 
49
50
  ## 为什么不直接打开旧 preview
@@ -0,0 +1,21 @@
1
+ # Capability Graph Change Proposals
2
+
3
+ New user requirements, research findings, and implementation discoveries are candidates, not silent changes to the official Capability Graph or current Intent.
4
+
5
+ ```bash
6
+ loom capability proposal submit --json-file ./CGP-NEW-REQUIREMENT.json
7
+ loom capability proposal list
8
+ loom capability proposal get CGP-NEW-REQUIREMENT
9
+ loom capability proposal decide CGP-NEW-REQUIREMENT graph_update --rationale "..."
10
+ loom capability proposal close CGP-NEW-REQUIREMENT --resolution-file ./CGP-NEW-REQUIREMENT-resolution.json
11
+ ```
12
+
13
+ Each proposal records an origin, provenance (source, observation time, concrete evidence), candidate kind, title and why-now. Candidate kinds are `outcome`, `constraint`, `capability`, `risk`, and `evidence`.
14
+
15
+ Only Architect decides whether it is already covered, needs a Graph update, changes an Intent or acceptance contract, belongs in Minor/Major, or is rejected. A decision still blocks the loop until a structured resolution closes it; an arbitrary path or prose string is not evidence.
16
+
17
+ The resolution is decision-specific and is checked against the current version after the decision baseline: `graph_update` names changed Graph nodes (which must carry the proposal ID); `intent_change` names changed Intents; `acceptance_change` names Intents whose acceptance artifact changed; `covered` names the already-effective Graph coverage plus a rationale; and `minor`, `major`, or `reject` references a newly written `03_DECISIONS/` artifact naming the proposal. A `constraint` decided as `graph_update` must additionally appear in the formal Graph `constraints` array with its affected node IDs.
18
+
19
+ For `covered_by`, use both `covered_by: "NODE-ID"` and a `{ "type": "covered_by", "target": "NODE-ID" }` relationship. The target must be a different, currently covered node with a direct route; chained or self-referential coverage is rejected.
20
+
21
+ Forge and Keeper may submit candidates but cannot use them to expand their active scope.
@@ -2,23 +2,95 @@
2
2
 
3
3
  LOOM 用 .loom/v{N}/ 目录支持多版本共存与演进。
4
4
 
5
- ## 什么时候升级版本
6
-
7
- | 变更类型 | 判定标准 | 处理方式 |
8
- |---|---|---|
9
- | Minor | 不改哲学前提、不改愿景北极星、不改架构边界 | 当前版本内改(变更回流机制) |
10
- | Major | 哲学前提变了、愿景北极星变了、架构边界变了 | 创建新版本 |
11
-
12
- 判定由用户 + Agent 对话完成,CLI 不做决策。
13
-
14
- ## Major 升级流程
5
+ ## 什么时候演进版本
6
+
7
+ | 变更类型 | 判定标准 | 处理方式 |
8
+ |---|---|---|
9
+ | Patch | 不触及 Intent,不改变验收契约,只修 bug / 样式 / 实现细节 | 当前版本内修正,跑验证并记录 changelog;不进入 Intent Loop |
10
+ | Minor | 新增或修改 Intent,但不改哲学前提、不改愿景北极星、不改架构边界 | 当前版本内改(变更回流机制),相关 Intent 进入 pending / needs_review |
11
+ | Major | 哲学前提变了、愿景北极星变了、架构边界变了 | 创建新版本 |
12
+
13
+ 判定由用户 + Agent 对话完成,CLI 不做决策。
14
+
15
+ 哲学修订可用 CLI 做后果分析和审计记录,但 CLI 不自动编辑哲学正文:
16
+
17
+ ```bash
18
+ loom philosophy impact <anchor>
19
+ loom philosophy revise <anchor> --classification clarification --reason "<why>"
20
+ loom philosophy revise <anchor> --classification minor --reason "<why>"
21
+ loom philosophy revise <anchor> --classification major --reason "<why>"
22
+ ```
23
+
24
+ 前两条 revise 在没有 `--confirm` 时严格只读,并返回精确确认命令。确认 clarification 时 `--review` 必须为空,所有直接引用和传递影响均归入 `--unaffected`。确认 minor 时每个影响必须恰好一次归入 `--review` 或 `--unaffected`;review 中仅 `completed` 转为 `needs_review`,其余状态原样报告。两者均不改 acceptance,并写入下一个 `03_DECISIONS/PHIL-REV-NNN.md`。Major 即使带 `--confirm` 也不改当前版本,只提示 `loom version new`。哲学正文随后由 Weaver/用户单独编辑。
25
+
26
+ ## Patch 流程
27
+
28
+ Patch 用于纯实现修正:bugfix、样式微调、文案 typo、测试补强。它不改变 Intent,也不改变验收契约。
29
+
30
+ ```bash
31
+ # 1. 确认当前 Intent 都已完成
32
+ loom guide
33
+
34
+ # 2. 修改实现细节后,按项目约定跑测试 / lint
35
+
36
+ # 3. 如修复影响已有承诺,补一条验证记录
37
+ loom verify write --json-file <path>
38
+
39
+ # 4. 通过 CLI 写入权威 JSON 并生成 Markdown 投影
40
+ loom patch record --json-file <path>
41
+ loom patch validate
42
+ ```
43
+
44
+ Patch 不应使用 `loom version new`,也不应新增 Intent。如果变更需要改验收契约,它已经不是 Patch。
45
+ 完整输入契约见 `loom help patch`。
46
+
47
+ ## Minor 流程
48
+
49
+ Minor 用于当前哲学和架构边界内的能力演进。
50
+
51
+ 常见情况:
52
+ - 新增功能 → 由 Visionary 补叙事,Architect 增加 Intent,再进入 Intent Loop
53
+ - 修改已有功能承诺 → 将相关 Intent 标记为 `needs_review`,重新验证 / 实现
54
+ - 一个改动影响已完成 Intent → 通过反向依赖 / 哲学引用找影响面,标记 `needs_review`
55
+ - 当前版本能力退出但仍需保留历史与依赖图 → 用 `intent deprecate` 记录 lifecycle,不虚构 `deprecated` status
56
+
57
+ ```bash
58
+ # 新增:先创建 draft,再分别由 Visionary / Architect 补齐叙事、契约和锚点
59
+ loom intent add --title "<title>" --depends-on INT-001,INT-002
60
+ loom activate visionary --intent INT-003
61
+ loom activate architect --intent INT-003
62
+ loom intent finalize INT-003
63
+
64
+ # 修订:revision 自动递增,并返回直接/传递反向依赖
65
+ loom intent revise <id> --reason "<why>"
66
+ loom activate visionary --intent <id>
67
+ loom activate architect --intent <id>
68
+ # 必须完整分类所有直接与传递下游;review 会使已完成下游回流复验
69
+ loom intent finalize <id> --review <ids> --unaffected <ids>
70
+
71
+ # 弃用:先评估,确认时完整分类所有直接和传递依赖方
72
+ loom intent deprecate <id> --reason "<why>"
73
+ loom intent deprecate <id> --reason "<why>" --confirm --review <ids> --unaffected <ids>
74
+
75
+ # 继续按 guide 进入收敛趟
76
+ loom guide
77
+ ```
78
+
79
+ `add` / `revise` 在 finalize 前不修改官方 `04_INTENT_MAP.json` 和 `topo_order`。`add` 还会向愿景和验证文档追加明确标记的 draft 章节;finalize 通过后提升这些章节并删除 draft。新增 Intent 是 `pending`;修订保留 `pending` / `in_progress` / `blocked` / `needs_review`,原 `completed` 变为 `needs_review`,旧 revision 的验证自动失效。
80
+
81
+ 当前版本内演进不是偷懒;只要哲学前提、北极星、架构边界没变,Minor 就应该留在当前版本。
82
+
83
+ 弃用要求目标已完成。它写入 `lifecycle.deprecation = { deprecated_at, reason, replacement }`,不改变目标的 `completed` status,也不删除节点、依赖或契约。可选 replacement 必须是另一个当前版本 Intent。所有直接和传递依赖方必须在 review/unaffected 中恰好分类一次;叶子无需分类。重复确认会失败,避免不同参数被误认为已应用。
84
+
85
+ ## Major 升级流程
15
86
 
16
87
  \`\`\`bash
17
88
  # 1. 创建新版本(空目录 + 模板,自动切换为当前)
18
89
  loom version new
19
90
 
20
- # 2. 看看旧版本有什么(Agent 决定参考什么)
21
- loom version diff v1 v2
91
+ # 2. 看文件变化与显式 Intent 沿革
92
+ loom version diff v1 v2
93
+ loom intent diff v1 v2
22
94
 
23
95
  # 3. Weaver 读旧哲学,织造新哲学
24
96
  loom activate weaver
@@ -39,7 +111,9 @@ loom activate architect
39
111
 
40
112
  - **空目录 + 模板**:\`loom version new\` 不自动复制旧版本内容。强制重新思考——参考 ≠ 复制。
41
113
  - **旧版本只读**:当前指针指向的版本是当前真相,旧版本保留作历史参考。
42
- - **Intent ID 重新编号**:v2 INT-001 v1 INT-001 没有关系。追溯靠 Git history \`loom version diff\`。
114
+ - **显式 Intent lineage**:可用 `lineage: { predecessors: [{ version: "v1", intent_id: "INT-003" }], change_summary, change_ref? }` 表达修订、拆分或合并。它不属于 `depends_on`;同 ID/标题不会自动映射。
115
+ - **版本元数据**:脚手架写入真实 `_loom_version`,并写入 `_parent_version`(v1 为 `null`,新版本为创建前的当前版本)。
116
+ - **历史只读**:`v1:INT-003` 可用于 `intent get/narrative/trace` 和 `verify history`,写命令仍只操作当前版本。
43
117
 
44
118
  ## 版本管理命令
45
119
 
@@ -48,13 +122,15 @@ loom version list # 列出所有版本(* 标记当前)
48
122
  loom version current # 显示当前版本
49
123
  loom version new # 创建 v{N+1} + 自动切换
50
124
  loom version use <v> # 切换当前版本
51
- loom version diff <v1> <v2> # 对比文件差异
125
+ loom version diff <v1> <v2> # 对比文件差异
126
+ loom intent diff <v1> <v2> # 对比显式 lineage 与语义字段
127
+ loom verify history v2:INT-007 --across-versions
52
128
  \`\`\`
53
129
 
54
130
  ## 切换回旧版本
55
131
 
56
132
  \`\`\`bash
57
133
  loom version use v1 # 切回 v1 查看历史
58
- loom intent trace <id> # v1 中追溯 Intent 历史
134
+ loom intent trace v1:INT-003 # 无需切换即可只读历史 Intent
59
135
  loom version use v2 # 切回 v2 继续
60
- \`\`\`
136
+ \`\`\`