@sushanglewis/lincoln 1.8.2 → 1.8.4

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 (31) hide show
  1. package/dist/main.js +6 -1
  2. package/dist/main.js.map +1 -1
  3. package/dist/postinstall.js +6 -1
  4. package/dist/postinstall.js.map +1 -1
  5. package/framework/.claude/agents/pm.md +3 -0
  6. package/framework/.claude/harnesses/command-map.yaml +5 -1
  7. package/framework/.claude/hooks/on-session-start.sh +15 -0
  8. package/framework/.claude/policies/less-is-more.md +24 -0
  9. package/framework/.claude/schemas/stage-definition.schema.json +2 -0
  10. package/framework/.claude/skills/build-product-prototype/prompts/main.md +4 -1
  11. package/framework/.claude/skills/clarify-requirements/prompts/main.md +36 -16
  12. package/framework/.claude/skills/draft-product-design/prompts/main.md +1 -1
  13. package/framework/.claude/skills/lc-workflow/validators/validate.py +93 -12
  14. package/framework/.claude/skills/plan-tdd-development/SKILL.md +1 -0
  15. package/framework/.claude/skills/plan-tdd-development/prompts/main.md +34 -4
  16. package/framework/.claude/stages/clarify.yaml +3 -0
  17. package/framework/.claude/stages/tdd-development-plan.yaml +6 -1
  18. package/framework/.claude/workflows/interview-to-knowledge.yaml +5 -0
  19. package/framework/.claude-plugin/marketplace.json +2 -2
  20. package/framework/.claude-plugin/plugin.json +1 -1
  21. package/framework/.version-bump.json +1 -1
  22. package/framework/README.en.md +16 -2
  23. package/framework/README.md +16 -2
  24. package/framework/RELEASE.md +37 -0
  25. package/framework/manifest.json +30 -26
  26. package/framework/scripts/sync-external-agents.sh +7 -1
  27. package/framework/scripts/validate_stage.py +96 -15
  28. package/framework/tools/lincoln/package-lock.json +2 -2
  29. package/framework/tools/lincoln/package.json +1 -1
  30. package/framework/tools/lincoln-installer/package.json +1 -1
  31. package/package.json +1 -1
@@ -640,33 +640,75 @@ def check_tdd_plan_complete(design_id: str):
640
640
  # PRD checks
641
641
  # ---------------------------------------------------------------------------
642
642
 
643
+ # 递进骨架(issue-129):版本说明 → 修订记录 → 功能列表 → 需求展开。
644
+ # 章节编号不参与匹配,PM 可按需求类型在骨架内增插业务章节。
643
645
  REQUIRED_PRD_SECTIONS = [
644
- "## 1. 需求背景",
645
- "## 2. 用户故事",
646
- "## 3. 功能拆解",
647
- "## 4. 业务流程图",
648
- "## 5. 验收标准",
649
- "## 6. 业务规则",
650
- "## 7. 非功能需求",
651
- "## 8. 关联系统/接口",
652
- "## 9. 相关产物链接",
653
- "## 10. 风险与开放问题",
646
+ "版本说明",
647
+ "修订记录",
648
+ "功能列表",
649
+ "需求背景",
650
+ "用户故事",
651
+ "功能拆解",
652
+ "业务流程图",
653
+ "验收标准",
654
+ "业务规则",
655
+ "非功能需求",
656
+ "关联系统/接口",
657
+ "相关产物链接",
658
+ "风险与开放问题",
654
659
  ]
655
660
 
661
+ PRD_SECTION_PATTERNS = [
662
+ (name, re.compile(rf"^##\s*(?:\d+\s*[.、.]?\s*)?{re.escape(name)}\s*$", re.MULTILINE))
663
+ for name in REQUIRED_PRD_SECTIONS
664
+ ]
665
+
666
+ # PRD 正文禁则:过程性疑问在对话中解决,技术内容归归档页(issue-129 第 4/6 条)。
667
+ PRD_FORBIDDEN_PROCESS_RE = re.compile(r"待确认|待人类|待补充|待\s*PM|TODO|FIXME", re.IGNORECASE)
668
+ PRD_FORBIDDEN_TECH_HEADING_RE = re.compile(
669
+ r"^##+\s*.*(技术调研|技术方案|可行性研究|架构设计|接口设计|数据库设计)",
670
+ re.MULTILINE,
671
+ )
672
+
673
+ CROSS_VALIDATION_PASS_RE = re.compile(
674
+ r"<!--\s*cross-validation:\s*pass\s+prd-version:\s*(v\d+\.\d+)\s*-->"
675
+ )
676
+
677
+
678
+ def _prd_hygiene_violations(content: str) -> list[str]:
679
+ violations = sorted(set(PRD_FORBIDDEN_PROCESS_RE.findall(content)))
680
+ violations.extend(sorted(set(PRD_FORBIDDEN_TECH_HEADING_RE.findall(content))))
681
+ return violations
682
+
656
683
 
657
684
  def check_prd_has_required_sections(path: str):
658
685
  target = PROJECT_ROOT / path
659
686
  if not target.exists():
660
687
  fail(f"PRD missing: {target}")
661
688
 
662
- text = read_document_file(target)
663
- missing = [section for section in REQUIRED_PRD_SECTIONS if section not in text]
689
+ content = read_document_file(target)
690
+ missing = [name for name, pattern in PRD_SECTION_PATTERNS if not pattern.search(content)]
664
691
  if missing:
665
692
  fail(f"PRD missing required sections: {', '.join(missing)}")
666
693
 
667
694
  pass_check("PRD has all required sections")
668
695
 
669
696
 
697
+ def check_prd_content_hygiene(path: str):
698
+ target = PROJECT_ROOT / path
699
+ if not target.exists():
700
+ fail(f"PRD missing: {target}")
701
+
702
+ violations = _prd_hygiene_violations(read_document_file(target))
703
+ if violations:
704
+ fail(
705
+ "PRD contains content that belongs in conversation or archived pages, "
706
+ f"not the PRD: {', '.join(violations)}"
707
+ )
708
+
709
+ pass_check("PRD content hygiene OK")
710
+
711
+
670
712
  def check_prd_snapshot_present(path: str):
671
713
  target = PROJECT_ROOT / path
672
714
  if not target.exists():
@@ -692,6 +734,43 @@ def check_prd_snapshot_present(path: str):
692
734
  pass_check(f"PRD snapshot present: {snapshot_path}")
693
735
 
694
736
 
737
+ def check_prd_cross_validated(path: str):
738
+ target = PROJECT_ROOT / path
739
+ if not target.exists():
740
+ fail(f"Cross-validation report missing: {target}")
741
+
742
+ match = CROSS_VALIDATION_PASS_RE.search(read_document_file(target))
743
+ if not match:
744
+ fail(
745
+ "Cross-validation report has no pass marker. Every gap must be closed by a "
746
+ "human-PM decision (PRD fix with re-freeze, or accepted with recorded "
747
+ "rationale) before adding '<!-- cross-validation: pass prd-version: vX.Y -->'."
748
+ )
749
+
750
+ prd_path = target.parent / "prd.html"
751
+ if not prd_path.exists():
752
+ fail(f"PRD missing next to cross-validation report: {prd_path}")
753
+
754
+ if extract_markdown_version is None:
755
+ fail("markdown version extraction is not available")
756
+
757
+ prd_version = extract_markdown_version(prd_path)
758
+ if prd_version != match.group(1):
759
+ fail(
760
+ f"Cross-validation pass marker is for PRD {match.group(1)}, but the PRD is now "
761
+ f"{prd_version or 'unversioned'}. Re-run cross-validation against the current PRD."
762
+ )
763
+
764
+ violations = _prd_hygiene_violations(read_document_file(prd_path))
765
+ if violations:
766
+ fail(
767
+ f"PRD regressed after cross-validation pass: {', '.join(violations)}. "
768
+ "Fix the PRD, bump its version, re-freeze, and re-run cross-validation."
769
+ )
770
+
771
+ pass_check(f"PRD cross-validation pass marker matches PRD {prd_version}")
772
+
773
+
695
774
  # ---------------------------------------------------------------------------
696
775
  # Registry
697
776
  # ---------------------------------------------------------------------------
@@ -729,6 +808,8 @@ EXIT_CHECKS = {
729
808
  "tdd_plan_complete": check_tdd_plan_complete,
730
809
  "prd_has_required_sections": check_prd_has_required_sections,
731
810
  "prd_snapshot_present": check_prd_snapshot_present,
811
+ "prd_content_hygiene": check_prd_content_hygiene,
812
+ "prd_cross_validated": check_prd_cross_validated,
732
813
  }
733
814
 
734
815
 
@@ -13,6 +13,7 @@ inputs:
13
13
  required: true
14
14
  outputs:
15
15
  - "{process_slug}/pages/docs/tdd-plan.html"
16
+ - "{process_slug}/pages/docs/prd-cross-validation.html"
16
17
  required_tools:
17
18
  - Read
18
19
  - Bash
@@ -1,10 +1,10 @@
1
1
  # plan-tdd-development
2
2
 
3
- You are executing the Lincoln workflow step `tdd-development-plan`: turn the confirmed product design and prototype into a TDD development plan.
3
+ You are executing the Lincoln workflow step `tdd-development-plan`: turn the confirmed product design and prototype into a TDD development plan, then reverse-drive the PRD with test scenarios so gaps close before development.
4
4
 
5
5
  ## Goal
6
6
 
7
- Create `{process_slug}/pages/docs/tdd-plan.html` as the bridge from product design to OpenSpec and GitHub Issues.
7
+ Create `{process_slug}/pages/docs/tdd-plan.html` as the bridge from product design to OpenSpec and GitHub Issues, and produce `{process_slug}/pages/docs/prd-cross-validation.html` so every test scenario (正常/边界/异常) challenges the PRD — SDD tests reverse-drive PRD completeness.
8
8
 
9
9
  ## Input
10
10
 
@@ -16,11 +16,13 @@ Create `{process_slug}/pages/docs/tdd-plan.html` as the bridge from product desi
16
16
  在执行本 prompt 前:
17
17
  1. 调用 `superpowers:writing-plans` 规划 `tdd-plan.html` 结构。
18
18
  2. 遵循 `superpowers:test-driven-development` 方法论:确保每个任务切片都是“先写失败测试 → 最小实现 → 重构”序列。
19
- 3. 在 `tdd-plan.html` 的 Markdown source 头部加入:
19
+ 3. 在 `tdd-plan.html` 的 Markdown source 头部加入:
20
20
  `> **Required sub-skill:** Use superpowers:test-driven-development for all implementation`
21
21
 
22
22
  ## Steps
23
23
 
24
+ ### Phase 1 — TDD 计划
25
+
24
26
  1. Verify that `{process_slug}/pages/docs/ui-spec.html` contains `<!-- prototype-status: approved -->` or `[x] PM 已确认原型`.
25
27
  2. Confirm `{process_slug}/designs/<design_id>/prototype.pen`, `{process_slug}/pages/docs/fields.html`, and the design review package exist.
26
28
  3. Read the confirmed design docs and inspect the `.pen` through Pencil tools if visual structure is needed.
@@ -34,11 +36,39 @@ Create `{process_slug}/pages/docs/tdd-plan.html` as the bridge from product desi
34
36
  - Task slices suitable for OpenSpec tasks and GitHub Issues
35
37
  - Risks, dependencies, and out-of-scope items
36
38
  5. Add `<!-- status: ready-for-openspec -->` when the plan is complete.
37
- 6. Run `python scripts/stage_loader.py --stage tdd-development-plan --action record-artifacts`.
39
+
40
+ ### Phase 2 — PRD 交叉验证(测试反向驱动 PRD)
41
+
42
+ 6. **场景回问**:从 tdd-plan 的测试场景(正常、边界、异常)逐一回问 `{process_slug}/pages/docs/prd.html`:该场景涉及的业务规则与验收标准在 PRD 中是否有明确答案?逐项记录「场景 → PRD 答案(章节 + 条文)」,PRD 无答案者标记为缺口。
43
+ 7. **对齐闭环**:建立业务流程步骤 ↔ 原型页面双向对齐矩阵——PRD 业务流程图中的每个步骤至少有 1 个原型页面承载;每个原型页面归属于某流程步骤或用户故事。任一侧对不上即为缺口(流程中断或原型多余)。
44
+ 8. **渲染报告**:写 `{process_slug}/pages/docs/prd-cross-validation.md`(顶部含 `<!-- version: v1.0 -->`),用 `lincoln_render.py` 渲染为 `{process_slug}/pages/docs/prd-cross-validation.html`:
45
+
46
+ ```bash
47
+ python scripts/lincoln_render.py \
48
+ --stage tdd-development-plan \
49
+ --target {process_slug}/pages/docs/prd-cross-validation.html \
50
+ --title "PRD 交叉验证报告" \
51
+ --markdown {process_slug}/pages/docs/prd-cross-validation.md
52
+ ```
53
+
54
+ 报告必须含:场景 → PRD 答案映射表、缺口清单、决策记录表(缺口 / 闭环方式 / PM 决策 / 理由)、PRD 修订回执。
55
+ 9. **闭环缺口**:每个缺口由人类 PM 决策二选一——
56
+ - **修复**:修订 `prd.md`,bump `<!-- version: vX.Y -->`,运行 `python scripts/lincoln_prd.py freeze` 重新冻结,然后重跑 Phase 2;
57
+ - **接受**:在决策记录表中记录理由与影响,经人类 PM 明确认可。
58
+
59
+ 全部缺口闭环后,在报告 markdown 末尾追加 `<!-- cross-validation: pass prd-version: vX.Y -->`(vX.Y = 当前 PRD 版本)并重新渲染。未闭环前禁止写入该标记。
60
+ 10. Run `python scripts/stage_loader.py --stage tdd-development-plan --action record-artifacts`.
61
+
62
+ ## Output Artifacts
63
+
64
+ - `{process_slug}/pages/docs/tdd-plan.html`
65
+ - `{process_slug}/pages/docs/prd-cross-validation.html`(含场景→PRD 答案映射、缺口清单、决策记录、闭环标记)
38
66
 
39
67
  ## Rules
40
68
 
41
69
  - Keep the plan executable by an engineer without requiring extra product decisions.
42
70
  - Every task slice must map back to a design artifact and acceptance criterion.
43
71
  - Do not generate OpenSpec artifacts in this step.
72
+ - 交叉验证发现的 PRD 缺口不得自行编造业务答案,必须交回人类 PM 决策(修复或接受)。
73
+ - pass 标记中的版本必须与当前 PRD 版本一致;PRD 后续任何改动都会使标记失效,须重跑 Phase 2。
44
74
  - After completion, tell the user to run: `claude propose-with-openspec <session_id> <design_id> <change_name>`.
@@ -61,6 +61,9 @@ gates:
61
61
  - check: prd_has_required_sections
62
62
  args:
63
63
  - '{process_slug}/pages/docs/prd.html'
64
+ - check: prd_content_hygiene
65
+ args:
66
+ - '{process_slug}/pages/docs/prd.html'
64
67
  - check: human_approved
65
68
  - check: prd_snapshot_present
66
69
  args:
@@ -18,6 +18,7 @@ variables:
18
18
  - process_slug
19
19
  artifact_templates:
20
20
  '{process_slug}/pages/docs/tdd-plan.html': .claude/templates/issue-package/page-doc.html.tpl
21
+ '{process_slug}/pages/docs/prd-cross-validation.html': .claude/templates/issue-package/page-doc.html.tpl
21
22
  agent:
22
23
  primary: lc-engineer
23
24
  reviewers:
@@ -36,11 +37,12 @@ skills:
36
37
  artifacts:
37
38
  required:
38
39
  - '{process_slug}/pages/docs/tdd-plan.html'
40
+ - '{process_slug}/pages/docs/prd-cross-validation.html'
39
41
  references:
40
42
  skill_prompt: .claude/skills/plan-tdd-development/SKILL.md
41
43
  agent_guide: .claude/agents/engineer.md
42
44
  context:
43
- goal: 基于已确认的产品设计文档、字段规格、UI 规格和 Pencil 原型,生成可执行的测试驱动研发计划(`tdd-plan.html`),作为从产品设计到 OpenSpec 变更提案的桥梁。所有产物通过 {process_slug}/index.html 门户访问。
45
+ goal: 基于已确认的产品设计文档、字段规格、UI 规格和 Pencil 原型,生成可执行的测试驱动研发计划(`tdd-plan.html`),作为从产品设计到 OpenSpec 变更提案的桥梁;随后执行 PRD 交叉验证——用测试场景反向挑战 PRD(业务规则、验收标准、流程与原型对齐),全部缺口经人类 PM 决策闭环后方可离开本阶段。所有产物通过 {process_slug}/index.html 门户访问。
44
46
  execution: "调用 plan-tdd-development skill 基于已确认的产品设计文档、字段规格、UI 规格和 Pencil 原型,生成包含验收映射、测试场景与任务切片的 tdd-plan.html,作为 OpenSpec 提案的输入。"
45
47
  gates:
46
48
  entry:
@@ -49,3 +51,6 @@ gates:
49
51
  - product-prototype
50
52
  exit:
51
53
  - check: artifacts_present
54
+ - check: prd_cross_validated
55
+ args:
56
+ - '{process_slug}/pages/docs/prd-cross-validation.html'
@@ -54,6 +54,8 @@ workflow:
54
54
  exit_checks:
55
55
  - check: prd_has_required_sections
56
56
  args: ["{process_slug}/pages/docs/prd.html"]
57
+ - check: prd_content_hygiene
58
+ args: ["{process_slug}/pages/docs/prd.html"]
57
59
  - check: human_approved
58
60
  args: ["{session_id}"]
59
61
  - check: prd_snapshot_present
@@ -114,9 +116,12 @@ workflow:
114
116
  action: plan-tdd-development
115
117
  artifacts:
116
118
  - "{process_slug}/pages/docs/tdd-plan.html"
119
+ - "{process_slug}/pages/docs/prd-cross-validation.html"
117
120
  exit_checks:
118
121
  - check: tdd_plan_complete
119
122
  args: ["{design_id}"]
123
+ - check: prd_cross_validated
124
+ args: ["{process_slug}/pages/docs/prd-cross-validation.html"]
120
125
 
121
126
  - id: propose
122
127
  name: OpenSpec 提案
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "lincoln",
11
11
  "description": "AI-Native product R&D collaboration system for Conductor + Claude Code. Orchestrates stages, gates, artifacts, skills, and roles across product, design, and engineering into a repeatable workflow from recordings to GitHub Issues to Obsidian knowledge base.",
12
- "version": "1.8.2",
12
+ "version": "1.8.4",
13
13
  "author": {
14
14
  "name": "Lincoln contributors"
15
15
  },
@@ -28,5 +28,5 @@
28
28
  ]
29
29
  }
30
30
  ],
31
- "version": "1.8.2"
31
+ "version": "1.8.4"
32
32
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lincoln",
3
- "version": "1.8.2",
3
+ "version": "1.8.4",
4
4
  "description": "AI-Native product R&D collaboration system for Conductor + Claude Code + OpenSpec + GitHub + Obsidian",
5
5
  "author": {
6
6
  "name": "Lincoln contributors"
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.8.2",
2
+ "version": "1.8.4",
3
3
  "manifests": [
4
4
  {
5
5
  "path": ".claude-plugin/plugin.json",
@@ -12,9 +12,9 @@ Lincoln is an AI-Native R&D workflow system spanning **IDEs, agent harnesses, co
12
12
 
13
13
  ## Latest Release
14
14
 
15
- [![Release](https://img.shields.io/badge/release-v1.8.2-blue)](RELEASE.md)
15
+ [![Release](https://img.shields.io/badge/release-v1.8.4-blue)](RELEASE.md)
16
16
 
17
- **v1.8.2** is released: SecurityAnalyzer pre-tool-use gating, Trace 2.0 event log, session friction scoring and knowledge recall, plus multi-dimensional stakeholder analysis in the clarify stage.
17
+ **v1.8.4** is released: hook-injected less-is-more artifact discipline, plus a fix syncing the `policies` directory into vendored projects.
18
18
 
19
19
  See the full release notes in [RELEASE.md](RELEASE.md).
20
20
 
@@ -101,6 +101,12 @@ lincoln update # upgrade to the latest release and re-sync
101
101
  lincoln update --check # check for a newer version without installing
102
102
  ```
103
103
 
104
+ Or upgrade the package directly via npm and then re-sync:
105
+
106
+ ```bash
107
+ npm install -g @sushanglewis/lincoln@latest && lincoln update
108
+ ```
109
+
104
110
  On an older install (e.g. from the `lincoln-install` era), or if npm reports `EEXIST: file already exists`, a leftover bin from an old package is blocking the install — clean up first, then reinstall:
105
111
 
106
112
  ```bash
@@ -152,6 +158,12 @@ Lincoln assigns stable IDs such as `feature/*`, `page/*`, `field/*`, and `doc/*`
152
158
 
153
159
  See [`.claude/workflows/README.md`](.claude/workflows/README.md) for the full template catalog.
154
160
 
161
+ ### Less-is-More Artifact Discipline
162
+
163
+ AI-generated handoff artifacts tend to bury key information under bulk. Lincoln enforces a "less is more" discipline that applies **only when generating deliverables** ([`.claude/policies/less-is-more.md`](.claude/policies/less-is-more.md)): before writing, identify the reader, the purpose, and the decision the reader must make; then write conclusion-first, one artifact per question, pass a deletion test, prefer tables/diagrams over prose, link instead of duplicating, and keep the main reading path under three minutes. Research and deep-exploration stages are exempt and encouraged to expand fully.
164
+
165
+ The discipline is injected automatically by the session hook whenever an active issue package is detected — no manual step required.
166
+
155
167
  ### Markdown-First Issue Work Packages
156
168
 
157
169
  Every requirement maps to one GitHub issue and one Lincoln feature branch. The `issue-<N>/` work package contains:
@@ -230,6 +242,8 @@ Before submitting a PR, please read:
230
242
 
231
243
  | Version | Date | Key capabilities |
232
244
  |---|---|---|
245
+ | v1.8.4 | 2026-10-08 | PM-stage PRD quality gates: six-question clarity check, 13-section progressive PRD skeleton, content-hygiene and cross-validation checks, final-system-only prototype discipline (#129) |
246
+ | v1.8.3 | 2026-10-08 | Less-is-more artifact discipline (hook-injected); platform-aware install hints for non-npm CLIs; `lincoln update` refreshes external skill libraries |
233
247
  | v1.7.0 | 2026-09-05 | SecurityAnalyzer gating; Trace 2.0 event log; friction scoring/knowledge recall/trace condensation/MR mining; parallel specialist delegation; stakeholder analysis model |
234
248
  | v1.6.3 | 2026-08-15 | Markdown-first issue-package documents; `--render-stage` batch rendering; local `mermaid.min.js` runtime |
235
249
  | v1.6.2 | 2026-08-12 | `lc-init-branch` reads global Lincoln templates |
@@ -12,9 +12,9 @@ Lincoln 是一个贯穿 **IDE、Agent Harness、代码托管、知识管理、
12
12
 
13
13
  ## 最新版本
14
14
 
15
- [![Release](https://img.shields.io/badge/release-v1.8.2-blue)](RELEASE.md)
15
+ [![Release](https://img.shields.io/badge/release-v1.8.4-blue)](RELEASE.md)
16
16
 
17
- **v1.8.2** 已发布:新增 SecurityAnalyzer 安全门控、Trace 2.0 事件日志与会话摩擦学习/知识召回能力,clarify 阶段支持多维度相关者分析。
17
+ **v1.8.4** 已发布:新增少即是多制品生成纪律(hook 注入),修复 policies 目录未同步进 vendored 项目的问题。
18
18
 
19
19
  查看完整发布说明:[RELEASE.md](RELEASE.md)
20
20
 
@@ -101,6 +101,12 @@ lincoln update # 升级本体 + 同步框架 + 刷新外部技能库
101
101
  lincoln update --check # 只检查是否有新版本,不安装
102
102
  ```
103
103
 
104
+ 也可以直接用 npm 把本体升到最新再同步框架:
105
+
106
+ ```bash
107
+ npm install -g @sushanglewis/lincoln@latest && lincoln update
108
+ ```
109
+
104
110
  技能库同步遵循 dependencies.yaml 的 pin 策略:本地有未提交修改的仓库会被跳过并警告(不会被强制覆盖),非 npm 管理的 CLI(如 gh)缺失时只提示安装命令。同步失败降级为警告,不会阻断升级。
105
111
 
106
112
  如果还是旧版安装(例如 bin 名是 `lincoln-install` 的时代),或更新时 npm 报 `EEXIST: file already exists`,说明有旧包残留的 bin 文件挡住了安装,先清理再重装:
@@ -154,6 +160,12 @@ Lincoln 为需求、页面、字段、文档等产物分配 `feature/*`、`page/
154
160
 
155
161
  完整模板说明见 [`.claude/workflows/README.md`](.claude/workflows/README.md)。
156
162
 
163
+ ### 少即是多的制品生成纪律
164
+
165
+ AI 生成的交接产物容易内容堆积、重点淹没。Lincoln 把「少即是多」固化为一条只在**制品生成**时生效的纪律([`.claude/policies/less-is-more.md`](.claude/policies/less-is-more.md)):生成前先明确读者、用途与读者要做的决定;写作遵循结论先行、一件制品回答一个问题、删除测试、结构优于段落、链接优于复制、三分钟可读六条原则。调研与深度研究阶段不受其约束,鼓励充分展开。
166
+
167
+ 该纪律由 session hook 在检测到活跃 issue 工作包时自动注入,无需任何手动操作。
168
+
157
169
  ### Markdown-first Issue 工作包
158
170
 
159
171
  每个需求对应一个 GitHub issue 和一个 Lincoln feature 分支。工作包目录 `issue-<N>/` 包含:
@@ -232,6 +244,8 @@ Lincoln 的 `.claude/` 是开放的系统提示层,欢迎基于同一套元模
232
244
 
233
245
  | 版本 | 日期 | 关键能力 |
234
246
  |---|---|---|
247
+ | v1.8.4 | 2026-10-08 | PM 阶段 PRD 质量门控:需求六问自检、13 章递进骨架、PRD 内容卫生与交叉验证校验、原型最终样貌纪律(#129) |
248
+ | v1.8.3 | 2026-10-08 | 少即是多制品生成纪律(hook 注入);非 npm CLI 平台化安装提示;`lincoln update` 同步刷新外部技能库 |
235
249
  | v1.7.0 | 2026-09-05 | SecurityAnalyzer 安全门控;Trace 2.0 事件日志;摩擦学习/知识召回/Trace 浓缩/MR 挖掘;并行专家子代理委托;相关者分析模型 |
236
250
  | v1.6.3 | 2026-08-15 | Markdown-first issue-package 文档;`--render-stage` 批量渲染;Mermaid 图表本地渲染 |
237
251
  | v1.6.2 | 2026-08-12 | `lc-init-branch` 改读全局 Lincoln 模板 |
@@ -1,3 +1,40 @@
1
+ # Lincoln v1.8.4 Release Notes
2
+
3
+ **Release date:** 2026-10-08
4
+
5
+ ## Highlights
6
+
7
+ - **PM 阶段 PRD 质量整治 (#129)** — 把「PM 产出的 PRD 必须经得起研发团队与测试挑战」从 prompt 建议升级为可执行的门控:
8
+ - **需求清晰度六问自检** — clarify-requirements 起草原稿前必须逐项回答:用户有哪些、场景是什么、边界在哪里、如何管异常、如何体验好、最终谁决策;答不出先问人类 PM,禁止带未决问题落笔。
9
+ - **13 章递进骨架** — PRD 固定为「版本说明 → 修订记录 → 功能列表 → 需求背景 → … → 风险与开放问题」的渐进结构,章节按名字匹配、编号只是装饰,PM 可按需求形态在骨架内增插业务章节。
10
+ - **双注册表内容卫生校验** — 两份校验器(stage gates 与 workflow exit_checks)同步新增 `prd_content_hygiene`:PRD 正文禁止过程性短语(待确认/待 PM/TODO 等)与技术性章节(技术调研/架构设计/数据库设计等),技术内容只进 design 阶段的归档页 feasibility.html。
11
+ - **SDD 测试反向驱动交叉验证** — plan-tdd-development 新增 Phase 2:从测试场景(正常/边界/异常)逐一回问 PRD 业务规则与验收标准,并建立业务流程步骤 ↔ 原型页面双向对齐矩阵;缺口必须由人类 PM 决策闭环(修复 = PRD 升版重冻结,或接受 = 记录理由与影响),全部闭环后交叉验证报告才能写入 pass 标记,`prd_cross_validated` 校验器强制 pass 标记版本与当前 PRD 版本严格相等并对 PRD 复检卫生,防止后续阶段编辑回潮。
12
+ - **原型只画最终样貌** — build-product-prototype 明确禁止仅用于演示的模拟按钮、屏内说明文字与演示跳转,解释一律走 `doc-*` 注释由门户右侧面板呈现;每个原型页面标注所属用户故事与业务流程步骤,与 PRD 文字双向对齐。
13
+ - **PM 角色质量职责** — lc-pm 新增三条专属职责:输出 PRD 前完成六问自检、PRD 只承载业务内容、交叉验证缺口必须经人类 PM 决策才允许闭环。
14
+
15
+ ## Migration Notes
16
+
17
+ - 无破坏性变更:新校验只在 `clarify` 与 `tdd-development-plan` 阶段出口执行,既有已审批产物不受影响;重跑这两个阶段时需满足新版骨架与卫生规则。
18
+ - 升级后执行 `lincoln update` 即把新 prompt、校验器与门控接线同步进各 harness;进行中的 issue 工作包从下一阶段起自动适用新规则。
19
+
20
+ ---
21
+
22
+ # Lincoln v1.8.3 Release Notes
23
+
24
+ **Release date:** 2026-10-08
25
+
26
+ ## Highlights
27
+
28
+ - **少即是多制品生成纪律 (#126 / #128)** — 新增 `.claude/policies/less-is-more.md`,把「少即是多」固化为一条只在生成制品时生效的写作纪律:生成前先明确读者、用途与读者要做的决定;写作遵循结论先行、一件制品回答一个问题、删除测试、结构优于段落、链接优于复制、三分钟可读六条原则。调研与深度研究阶段不受其约束。该纪律由 session hook 在检测到活跃 issue 工作包(`current_stage != not_started`)时自动注入全文——单一注入点,skill prompt、stage YAML 与通用 Agent 契约均不重复携带,零额外上下文压力。
29
+ - **修复 policies 目录未同步进项目的问题** — `syncClaudeCode` 的 `COPY_SUBDIRS` 新增 `policies`:此前 vendored 项目中 `.claude/policies/` 缺失,导致 `pre-tool-use.sh` 的 security.yaml 安全门控与本次新增的 less-is-more.md 在项目内静默跳过。修复后两类政策文件都会随 `lincoln install` / `lincoln update` 同步进项目。
30
+
31
+ ## Migration Notes
32
+
33
+ - 无破坏性变更。升级到本版本后,下一次 issue 会话启动即自动获得少即是多纪律注入,无需手动操作。
34
+ - 注意:npm 上 1.8.1 与 1.8.2 因发布令牌问题未曾发布(见 v1.8.2 说明),从 1.8.0 直接升级到 1.8.3 会一并获得这两个版本的能力(外部技能库自动刷新、非 npm CLI 平台化安装提示),升级后建议执行一次 `lincoln update`。
35
+
36
+ ---
37
+
1
38
  # Lincoln v1.8.2 Release Notes
2
39
 
3
40
  **Release date:** 2026-10-07