@openprd/cli 0.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 (154) hide show
  1. package/.openprd/README.md +82 -0
  2. package/.openprd/benchmarks/evidence/milvus-io-ai-code-review-gets-better-when-models-debate-claude-vs-gemini-vs-code.md +14 -0
  3. package/.openprd/benchmarks/evidence/nolanlawson-com-using-ai-to-write-better-code-more-slowly.md +14 -0
  4. package/.openprd/benchmarks/index.md +37 -0
  5. package/.openprd/benchmarks/sources.yaml +56 -0
  6. package/.openprd/config.yaml +50 -0
  7. package/.openprd/discovery/config.json +21 -0
  8. package/.openprd/engagements/active/flows.md +30 -0
  9. package/.openprd/engagements/active/handoff.md +9 -0
  10. package/.openprd/engagements/active/intake.md +15 -0
  11. package/.openprd/engagements/active/prd.md +161 -0
  12. package/.openprd/engagements/active/review.html +61 -0
  13. package/.openprd/engagements/active/roles.md +21 -0
  14. package/.openprd/engagements/work-units/wu-20260524015648-6d33ded7.json +23 -0
  15. package/.openprd/exports/.gitkeep +0 -0
  16. package/.openprd/knowledge/index.json +7 -0
  17. package/.openprd/quality/config.json +229 -0
  18. package/.openprd/reviews/v0001.html +1256 -0
  19. package/.openprd/schema/diagram-architecture.schema.yaml +49 -0
  20. package/.openprd/schema/diagram-product-flow.schema.yaml +52 -0
  21. package/.openprd/schema/prd.schema.yaml +121 -0
  22. package/.openprd/sessions/.gitkeep +0 -0
  23. package/.openprd/standards/config.json +88 -0
  24. package/.openprd/standards/file-manual-template.md +28 -0
  25. package/.openprd/standards/folder-readme-template.md +28 -0
  26. package/.openprd/state/.gitkeep +0 -0
  27. package/.openprd/state/changes.json +12 -0
  28. package/.openprd/state/current.json +169 -0
  29. package/.openprd/state/version-index.json +15 -0
  30. package/.openprd/state/versions/.gitkeep +0 -0
  31. package/.openprd/state/versions/v0001.json +121 -0
  32. package/.openprd/state/versions/v0001.md +161 -0
  33. package/.openprd/templates/agent/intake.md +6 -0
  34. package/.openprd/templates/agent/prd.md +21 -0
  35. package/.openprd/templates/b2b/intake.md +6 -0
  36. package/.openprd/templates/b2b/prd.md +24 -0
  37. package/.openprd/templates/base/intake.md +18 -0
  38. package/.openprd/templates/base/prd.md +67 -0
  39. package/.openprd/templates/company/README.md +10 -0
  40. package/.openprd/templates/consumer/intake.md +6 -0
  41. package/.openprd/templates/consumer/prd.md +19 -0
  42. package/.openprd/templates/diagram/architecture.contract.json +53 -0
  43. package/.openprd/templates/diagram/product-flow.contract.json +76 -0
  44. package/.openprd/templates/industry/README.md +16 -0
  45. package/.openprd/templates/manifest.yaml +27 -0
  46. package/.openprd/templates/project/README.md +14 -0
  47. package/.openprd/templates/session/README.md +14 -0
  48. package/AGENTS.md +44 -0
  49. package/CONTRIBUTING.md +30 -0
  50. package/LICENSE +21 -0
  51. package/README.md +727 -0
  52. package/README_CN.md +583 -0
  53. package/SECURITY.md +23 -0
  54. package/bin/openprd.js +5 -0
  55. package/docs/assets/openprd-capability-overview-en.png +0 -0
  56. package/docs/assets/openprd-capability-overview-zh.png +0 -0
  57. package/docs/assets/openprd-learning-html.png +0 -0
  58. package/docs/assets/openprd-quality-html.png +0 -0
  59. package/docs/assets/openprd-review-html.png +0 -0
  60. package/docs/assets/openprd-scenario-overview.png +0 -0
  61. package/docs/assets/openprd-scenario-overview.svg +114 -0
  62. package/docs/assets/openprd-self-evolving-mechanisms-en.png +0 -0
  63. package/docs/assets/openprd-self-evolving-mechanisms-zh.png +0 -0
  64. package/docs/assets/openprd-visual-compare-case-study-en.png +0 -0
  65. package/docs/assets/openprd-visual-compare-case-study-zh.png +0 -0
  66. package/package.json +59 -0
  67. package/scripts/openprd-dev-check.mjs +5 -0
  68. package/scripts/openprd-review-presentation.mjs +82 -0
  69. package/skills/openprd-benchmark-router/SKILL.md +92 -0
  70. package/skills/openprd-benchmark-router/agents/openai.yaml +4 -0
  71. package/skills/openprd-benchmark-router/references/benchmark-sources.md +74 -0
  72. package/skills/openprd-benchmark-router/references/evaluation-lenses.md +66 -0
  73. package/skills/openprd-benchmark-router/references/source-policy.md +35 -0
  74. package/skills/openprd-diagram-review/SKILL.md +91 -0
  75. package/skills/openprd-diagram-review/agents/openai.yaml +4 -0
  76. package/skills/openprd-diagram-review/examples/architecture-zh.md +8 -0
  77. package/skills/openprd-diagram-review/examples/product-flow-zh.md +7 -0
  78. package/skills/openprd-diagram-review/references/cocoon-patterns.md +17 -0
  79. package/skills/openprd-diagram-review/references/diagram-contracts.md +126 -0
  80. package/skills/openprd-diagram-review/references/review-checklist.md +10 -0
  81. package/skills/openprd-discovery-loop/SKILL.md +196 -0
  82. package/skills/openprd-discovery-loop/agents/openai.yaml +3 -0
  83. package/skills/openprd-harness/SKILL.md +179 -0
  84. package/skills/openprd-harness/agents/openai.yaml +4 -0
  85. package/skills/openprd-harness/examples/full-workflow-zh.md +9 -0
  86. package/skills/openprd-harness/references/command-map.md +71 -0
  87. package/skills/openprd-harness/references/examples.md +26 -0
  88. package/skills/openprd-harness/references/usage-guide.md +335 -0
  89. package/skills/openprd-harness/references/workflow-gates.md +51 -0
  90. package/skills/openprd-learning-review/SKILL.md +75 -0
  91. package/skills/openprd-learning-review/agents/openai.yaml +4 -0
  92. package/skills/openprd-learning-review/references/content-contract.md +125 -0
  93. package/skills/openprd-learning-review/references/ebook-reader.md +46 -0
  94. package/skills/openprd-learning-review/references/evidence-manifest.md +55 -0
  95. package/skills/openprd-learning-review/references/genre-library.md +43 -0
  96. package/skills/openprd-learning-review/references/prompt-engineering.md +71 -0
  97. package/skills/openprd-learning-review/references/quality-rubric.md +28 -0
  98. package/skills/openprd-learning-review/references/retrieval-worked-example.md +40 -0
  99. package/skills/openprd-learning-review/references/style-packs/xianxia-cultivation.prompt.md +67 -0
  100. package/skills/openprd-quality/SKILL.md +101 -0
  101. package/skills/openprd-requirement-intake/SKILL.md +76 -0
  102. package/skills/openprd-requirement-intake/agents/openai.yaml +4 -0
  103. package/skills/openprd-requirement-intake/references/prd-template-lenses.md +105 -0
  104. package/skills/openprd-requirement-intake/references/routing-rubric.md +64 -0
  105. package/skills/openprd-router/SKILL.md +40 -0
  106. package/skills/openprd-shared/SKILL.md +142 -0
  107. package/skills/openprd-shared/agents/openai.yaml +4 -0
  108. package/skills/openprd-shared/references/language-and-review.md +50 -0
  109. package/skills/openprd-shared/references/operating-rules.md +65 -0
  110. package/skills/openprd-shared/references/skill-architecture.md +70 -0
  111. package/skills/openprd-standards/SKILL.md +79 -0
  112. package/skills/openprd-standards/agents/openai.yaml +4 -0
  113. package/src/agent-integration.js +1717 -0
  114. package/src/benchmark.js +873 -0
  115. package/src/cli/args.js +460 -0
  116. package/src/cli/print.js +1423 -0
  117. package/src/codex-hook-runner-template.mjs +2422 -0
  118. package/src/dev-standards.js +372 -0
  119. package/src/diagram-core.js +1047 -0
  120. package/src/diagram-workspace.js +262 -0
  121. package/src/discovery.js +709 -0
  122. package/src/fleet.js +531 -0
  123. package/src/fs-utils.js +83 -0
  124. package/src/growth.js +545 -0
  125. package/src/html-artifacts.js +3803 -0
  126. package/src/knowledge.js +668 -0
  127. package/src/language-policy.js +142 -0
  128. package/src/learning-review.js +1655 -0
  129. package/src/loop.js +1290 -0
  130. package/src/openprd.js +1136 -0
  131. package/src/openspec/change-lifecycle.js +359 -0
  132. package/src/openspec/change-validate.js +248 -0
  133. package/src/openspec/constants.js +12 -0
  134. package/src/openspec/execute.js +300 -0
  135. package/src/openspec/generate.js +692 -0
  136. package/src/openspec/paths.js +111 -0
  137. package/src/openspec/tasks.js +352 -0
  138. package/src/prd-core.js +656 -0
  139. package/src/quality-html-artifact.js +1414 -0
  140. package/src/quality-learning.js +658 -0
  141. package/src/quality.js +1262 -0
  142. package/src/review-presentation.js +240 -0
  143. package/src/run-harness.js +1470 -0
  144. package/src/self-update.js +329 -0
  145. package/src/session-binding.js +140 -0
  146. package/src/source-inventory.js +224 -0
  147. package/src/standards.js +914 -0
  148. package/src/time.js +33 -0
  149. package/src/visual-compare.js +216 -0
  150. package/src/work-unit-migration.js +232 -0
  151. package/src/work-unit.js +88 -0
  152. package/src/workspace-core.js +1706 -0
  153. package/src/workspace-registry.js +162 -0
  154. package/src/workspace-workflow.js +1797 -0
@@ -0,0 +1,49 @@
1
+ name: diagram-architecture
2
+ version: 1
3
+ description: Minimal contract for OpenPrd architecture diagrams
4
+
5
+ requiredFields:
6
+ - type
7
+ - title
8
+ - components
9
+ - flows
10
+ - summaryCards
11
+ - metadata.versionId
12
+ - metadata.reviewStatus
13
+
14
+ requiredArrays:
15
+ components: 2
16
+ flows: 1
17
+ summaryCards: 1
18
+ reviewInstructions: 1
19
+
20
+ itemRequiredFields:
21
+ components:
22
+ - id
23
+ - name
24
+ - type
25
+ flows:
26
+ - source
27
+ - target
28
+ - label
29
+ summaryCards:
30
+ - title
31
+ - items
32
+
33
+ allowedValues:
34
+ type:
35
+ - architecture
36
+ metadata.reviewStatus:
37
+ - pending-confirmation
38
+ - confirmed
39
+ - needs-revision
40
+
41
+ itemAllowedValues:
42
+ components:
43
+ type:
44
+ - frontend
45
+ - backend
46
+ - database
47
+ - cloud
48
+ - security
49
+ - external
@@ -0,0 +1,52 @@
1
+ name: diagram-product-flow
2
+ version: 1
3
+ description: Minimal contract for OpenPrd product flow diagrams
4
+
5
+ requiredFields:
6
+ - type
7
+ - title
8
+ - steps
9
+ - transitions
10
+ - summaryCards
11
+ - metadata.reviewStatus
12
+
13
+ requiredArrays:
14
+ actors: 1
15
+ steps: 3
16
+ transitions: 2
17
+ summaryCards: 1
18
+ reviewInstructions: 1
19
+
20
+ itemRequiredFields:
21
+ steps:
22
+ - id
23
+ - name
24
+ - type
25
+ transitions:
26
+ - from|from_step_id
27
+ - to|to_step_id
28
+ - label
29
+ summaryCards:
30
+ - title
31
+ - items
32
+
33
+ allowedValues:
34
+ type:
35
+ - product-flow
36
+ metadata.reviewStatus:
37
+ - pending-confirmation
38
+ - confirmed
39
+ - needs-revision
40
+
41
+ itemAllowedValues:
42
+ steps:
43
+ type:
44
+ - user_action
45
+ - system_process
46
+ - decision
47
+ - success
48
+ - error_path
49
+ transitions:
50
+ type:
51
+ - standard
52
+ - error_path
@@ -0,0 +1,121 @@
1
+ name: prd-core
2
+ version: 1
3
+ description: Canonical PRD schema for OpenPrd
4
+
5
+ sections:
6
+ meta:
7
+ requiredFields:
8
+ - title
9
+ - owner
10
+ - version
11
+ - status
12
+ - productType
13
+
14
+ problem:
15
+ requiredFields:
16
+ - problemStatement
17
+ - whyNow
18
+ - evidence
19
+
20
+ users:
21
+ requiredFields:
22
+ - primaryUsers
23
+ - stakeholders
24
+
25
+ goals:
26
+ requiredFields:
27
+ - successMetrics
28
+ - acceptanceGoals
29
+
30
+ scope:
31
+ requiredFields:
32
+ - inScope
33
+ - outOfScope
34
+
35
+ scenarios:
36
+ requiredFields:
37
+ - primaryFlows
38
+ - edgeCases
39
+ - failureModes
40
+
41
+ requirements:
42
+ requiredFields:
43
+ - functional
44
+ - nonFunctional
45
+
46
+ businessGuardrails:
47
+ conditional:
48
+ when:
49
+ - free users
50
+ - usage limits
51
+ - metered cost
52
+ - AI or third-party cost
53
+ requiredFields:
54
+ - costDrivers
55
+ - usageLimits
56
+ - abusePrevention
57
+ - monitoringSignals
58
+ - alertThresholds
59
+ - stopLossActions
60
+
61
+ constraints:
62
+ requiredFields:
63
+ - technical
64
+ - compliance
65
+ - dependency
66
+
67
+ risks:
68
+ requiredFields:
69
+ - assumptions
70
+ - risks
71
+ - openQuestions
72
+
73
+ handoff:
74
+ requiredFields:
75
+ - owner
76
+ - nextStep
77
+ - targetSystem
78
+
79
+ extensions:
80
+ consumer:
81
+ requiredFields:
82
+ - persona
83
+ - journey
84
+ - activationMetric
85
+ - retentionMetric
86
+
87
+ b2b:
88
+ requiredFields:
89
+ - roles
90
+ - asIs
91
+ - toBe
92
+ - permissionMatrix
93
+ - approvalFlow
94
+
95
+ agent:
96
+ requiredFields:
97
+ - humanAgentContract
98
+ - autonomyBoundary
99
+ - toolBoundary
100
+ - stateModel
101
+ - evalPlan
102
+
103
+ validation:
104
+ freeze:
105
+ mustHaveSections:
106
+ - meta
107
+ - problem
108
+ - users
109
+ - goals
110
+ - scope
111
+ - scenarios
112
+ - requirements
113
+ - businessGuardrails
114
+ - constraints
115
+ - risks
116
+
117
+ versioning:
118
+ strategy: semver
119
+ allowBreakingOnlyWith:
120
+ - explicitApproval
121
+ - migrationNote
File without changes
@@ -0,0 +1,88 @@
1
+ {
2
+ "version": 1,
3
+ "docsRoot": "docs/basic",
4
+ "requiredDocs": [
5
+ "file-structure.md",
6
+ "app-flow.md",
7
+ "prd.md",
8
+ "frontend-guidelines.md",
9
+ "backend-structure.md",
10
+ "tech-stack.md"
11
+ ],
12
+ "fileManual": {
13
+ "enabled": true,
14
+ "template": "file-manual-template.md",
15
+ "requiredSections": [
16
+ "核心功能",
17
+ "输入",
18
+ "输出",
19
+ "定位",
20
+ "依赖",
21
+ "维护规则"
22
+ ],
23
+ "placement": "file-header",
24
+ "ignorePaths": []
25
+ },
26
+ "folderManual": {
27
+ "enabled": true,
28
+ "template": "folder-readme-template.md",
29
+ "naming": "[module]_[folder]_README.md",
30
+ "requiredSections": [
31
+ "核心功能",
32
+ "输入",
33
+ "输出",
34
+ "定位",
35
+ "依赖",
36
+ "维护规则"
37
+ ],
38
+ "ignorePaths": []
39
+ },
40
+ "qualityGates": {
41
+ "changeValidateRequiresStandards": true,
42
+ "taskVerifyUsesStandards": true,
43
+ "discoveryVerifyRequiresStandards": true,
44
+ "sourceManuals": true
45
+ },
46
+ "developmentStandards": {
47
+ "codeFileLines": {
48
+ "enabled": true,
49
+ "okMax": 700,
50
+ "attentionMax": 1500,
51
+ "appliesTo": "agent-touched-code-files",
52
+ "codeFileExtensions": [],
53
+ "exemptPathSegments": [],
54
+ "exemptFilePatterns": []
55
+ }
56
+ },
57
+ "growth": {
58
+ "enabled": true,
59
+ "reviewRequired": true,
60
+ "candidateLimit": 200,
61
+ "scopes": [
62
+ "project",
63
+ "user-local",
64
+ "openprd-core"
65
+ ],
66
+ "supportedCandidateTypes": [
67
+ "code-extension",
68
+ "exempt-path-segment",
69
+ "exempt-file-pattern",
70
+ "user-preference",
71
+ "workflow-gotcha",
72
+ "standards-rule"
73
+ ],
74
+ "autoApply": {
75
+ "enabled": true,
76
+ "minConfidence": 0.8,
77
+ "safeTypes": [
78
+ "code-extension"
79
+ ]
80
+ }
81
+ },
82
+ "externalReferences": {
83
+ "paths": []
84
+ },
85
+ "sourceManual": {
86
+ "ignorePaths": []
87
+ }
88
+ }
@@ -0,0 +1,28 @@
1
+ # 文件说明书模板
2
+
3
+ 文件说明书应位于代码文件起始位置,并根据文件类型使用对应注释语法。
4
+
5
+ ## 核心功能
6
+
7
+ 一句话描述该文件的核心职责。
8
+
9
+ ## 输入
10
+
11
+ 描述该文件接收的数据来源、参数或上游信号。
12
+
13
+ ## 输出
14
+
15
+ 描述该文件对外提供的方法、状态、事件或结果。
16
+
17
+ ## 定位
18
+
19
+ 描述该文件在当前模块或文件夹中的职责边界。
20
+
21
+ ## 依赖
22
+
23
+ 列出关键内部文件、模块或第三方依赖。
24
+
25
+ ## 维护规则
26
+
27
+ - 每次修改代码逻辑后,必须检查并更新文件说明书。
28
+ - 变更影响所在文件夹职责时,必须同步更新文件夹 README。
@@ -0,0 +1,28 @@
1
+ # 文件夹说明书模板
2
+
3
+ 文件夹说明书应保存为当前目录下的 `[模块名]_[文件夹名]_README.md`。
4
+
5
+ ## 核心功能
6
+
7
+ 一句话描述该文件夹承载的能力和目标。
8
+
9
+ ## 输入
10
+
11
+ 描述进入该文件夹模块的数据、事件或上游依赖。
12
+
13
+ ## 输出
14
+
15
+ 描述该文件夹模块对外暴露的视图、服务、接口或数据。
16
+
17
+ ## 定位
18
+
19
+ 描述该文件夹在项目结构中的位置和职责边界。
20
+
21
+ ## 依赖
22
+
23
+ 列出关键内部模块、资源、服务和第三方依赖。
24
+
25
+ ## 维护规则
26
+
27
+ - 每次新增、删除、移动文件或调整职责后,必须检查并更新本 README。
28
+ - 文件夹职责影响项目基础文档时,必须同步更新 `docs/basic/`。
File without changes
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": 1,
3
+ "activeChange": "verify-boundaries-and-historical-refresh",
4
+ "updatedAt": "2026-05-24 01:56:59",
5
+ "changes": {
6
+ "verify-boundaries-and-historical-refresh": {
7
+ "id": "verify-boundaries-and-historical-refresh",
8
+ "status": "active",
9
+ "activatedAt": "2026-05-24 01:56:59"
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,169 @@
1
+ {
2
+ "version": 1,
3
+ "status": "synthesized",
4
+ "activeEngagement": "active",
5
+ "prdVersion": 1,
6
+ "productType": "agent",
7
+ "templatePack": "agent",
8
+ "projectRoot": ".",
9
+ "workspaceRoot": ".openprd",
10
+ "createdAt": "2026-04-12T00:00:00.000Z",
11
+ "learningReview": {
12
+ "enabled": true,
13
+ "defaultGenre": "internet-product",
14
+ "autoOpen": true,
15
+ "sourceScope": "docs",
16
+ "lastPackageId": "lr-20260528-223815-openprd-典型协作场景",
17
+ "lastGeneratedAt": "2026-05-28 22:38:15",
18
+ "lastGenreId": "internet-product",
19
+ "lastTopic": "OpenPrd 典型协作场景",
20
+ "lastTrigger": "manual",
21
+ "lastOpened": true,
22
+ "lastStyleId": "teaching-brief",
23
+ "lastAuthoringStatus": "agent-authored"
24
+ },
25
+ "captureMeta": {
26
+ "meta.productType": {
27
+ "source": "user-confirmed",
28
+ "capturedAt": "2026-05-24 01:55:15"
29
+ },
30
+ "problem.problemStatement": {
31
+ "source": "user-confirmed",
32
+ "capturedAt": "2026-05-24 01:56:48"
33
+ },
34
+ "problem.whyNow": {
35
+ "source": "user-confirmed",
36
+ "capturedAt": "2026-05-24 01:56:48"
37
+ },
38
+ "users.primaryUsers": {
39
+ "source": "user-confirmed",
40
+ "capturedAt": "2026-05-24 01:55:27"
41
+ },
42
+ "goals.goals": {
43
+ "source": "user-confirmed",
44
+ "capturedAt": "2026-05-24 01:55:31"
45
+ },
46
+ "goals.successMetrics": {
47
+ "source": "user-confirmed",
48
+ "capturedAt": "2026-05-24 01:55:36"
49
+ },
50
+ "scope.inScope": {
51
+ "source": "user-confirmed",
52
+ "capturedAt": "2026-05-24 01:55:40"
53
+ },
54
+ "scope.outOfScope": {
55
+ "source": "user-confirmed",
56
+ "capturedAt": "2026-05-24 01:55:44"
57
+ },
58
+ "scenarios.primaryFlows": {
59
+ "source": "user-confirmed",
60
+ "capturedAt": "2026-05-24 01:55:49"
61
+ },
62
+ "goals.acceptanceGoals": {
63
+ "source": "user-confirmed",
64
+ "capturedAt": "2026-05-24 01:56:11"
65
+ },
66
+ "scenarios.failureModes": {
67
+ "source": "user-confirmed",
68
+ "capturedAt": "2026-05-24 01:56:15"
69
+ },
70
+ "risks.openQuestions": {
71
+ "source": "user-confirmed",
72
+ "capturedAt": "2026-05-24 01:56:20"
73
+ },
74
+ "typeSpecific.fields.humanAgentContract": {
75
+ "source": "user-confirmed",
76
+ "capturedAt": "2026-05-24 01:56:24"
77
+ },
78
+ "typeSpecific.fields.autonomyBoundary": {
79
+ "source": "user-confirmed",
80
+ "capturedAt": "2026-05-24 01:56:28"
81
+ },
82
+ "typeSpecific.fields.toolBoundary": {
83
+ "source": "user-confirmed",
84
+ "capturedAt": "2026-05-24 01:56:32"
85
+ },
86
+ "typeSpecific.fields.stateModel": {
87
+ "source": "user-confirmed",
88
+ "capturedAt": "2026-05-24 01:56:37"
89
+ },
90
+ "typeSpecific.fields.evalPlan": {
91
+ "source": "user-confirmed",
92
+ "capturedAt": "2026-05-24 01:56:41"
93
+ },
94
+ "meta.title": {
95
+ "source": "user-confirmed",
96
+ "capturedAt": "2026-05-24 01:56:48"
97
+ },
98
+ "meta.owner": {
99
+ "source": "user-confirmed",
100
+ "capturedAt": "2026-05-24 01:56:48"
101
+ }
102
+ },
103
+ "classifiedAt": "2026-05-24 01:55:15",
104
+ "problemStatement": "修复 OpenPrd 的 verify 边界,让 run/verify 和 standards/quality 默认不再把仓库中的外部参考目录当作当前项目源码或 reference discovery 结果混入主验证。",
105
+ "lastCapturedAt": "2026-05-24 01:56:41",
106
+ "whyNow": "现有行为会让历史项目的 verify 被外部参考目录噪音阻塞,也会把 reference discovery 直接带进 run 上下文,影响可用性和对门禁结果的信任。",
107
+ "primaryUsers": [
108
+ "维护 OpenPrd 的 Agent 工程师",
109
+ "使用 OpenPrd 管理历史项目的项目维护者"
110
+ ],
111
+ "goals": [
112
+ "让主验证只关注当前项目源码和当前实现门禁",
113
+ "让历史项目刷新后默认获得更干净的 verify 体验"
114
+ ],
115
+ "successMetrics": [
116
+ "存在 reference discovery 时 openprd run . --context 不再默认展示它",
117
+ "仓库内常见外部参考目录在未人工归类前不再直接把 standards verify 阻塞成大面积说明书噪音",
118
+ "openprd fleet 更新后历史项目生成物包含这次修复"
119
+ ],
120
+ "inScope": [
121
+ "调整 run context 与 run verify 对 discovery 的纳入规则",
122
+ "调整 standards/source-manual 默认对明显外部参考目录的处理策略",
123
+ "为历史项目执行 openprd fleet 更新与必要回填"
124
+ ],
125
+ "outOfScope": [
126
+ "不自动替每个历史项目猜测所有业务目录的 externalReferences 清单",
127
+ "不修改历史项目的业务代码或需求内容",
128
+ "不把人工确认 external reference 的能力删除"
129
+ ],
130
+ "primaryFlows": [
131
+ "维护者运行 openprd run . --context 或 openprd run . --verify 时,只看到当前项目主验证状态;仓库中存在 research、toolkit-sources、marketplace-candidates 等参考目录时,默认不会被当成本项目源码说明书缺口直接淹没结果;维护者可以继续按需显式 classify-external。"
132
+ ],
133
+ "acceptanceGoals": [
134
+ "run/verify 的默认结果不再把 reference discovery 或明显外部参考目录当成主门禁噪音",
135
+ "历史项目刷新后生成物能承接这次边界修复",
136
+ "对需要人工确认的 external reference 仍保留显式 classify-external 路径"
137
+ ],
138
+ "failureModes": [
139
+ "reference discovery 仍然混入 run context 或 run verify",
140
+ "standards verify 继续被 research 或 toolkit-sources 之类参考目录的说明书缺口淹没",
141
+ "fleet 更新后历史项目仍保留旧的 verify 噪音行为"
142
+ ],
143
+ "openQuestions": [
144
+ "本次只收敛默认边界,不自动猜测每个历史项目全部 external reference 清单;如果某些项目还需要更细的目录级归类,仍由维护者显式确认和补充"
145
+ ],
146
+ "humanAgentContract": "Agent 可以识别并提示 reference discovery 与外部参考目录边界,但把目录正式归类为 external reference 仍需要人确认;批量刷新历史项目可以自动执行。",
147
+ "autonomyBoundary": "Agent 可以修改 OpenPrd CLI、补测试、更新文档、运行 fleet dry-run 与 update-openprd/backfill-work-units,并验证结果;不得静默把任意历史目录永久归类为 external reference。",
148
+ "toolBoundary": "使用本地代码检索、OpenPrd CLI、自带测试、fleet 更新、doctor 与 verify 完成实现和验证;本次不需要外部第三方文档调研。",
149
+ "stateModel": "需要保留三类状态:当前项目源码验证状态、reference discovery 状态、standards external reference 显式配置;主 run/verify 只默认消费第一类,其他两类按边界显式暴露。",
150
+ "evalPlan": "通过针对 run-harness、standards 和 fleet 的单测与集成验证评估;再用历史项目 dry-run 与 update-openprd/backfill-work-units 验证刷新结果。",
151
+ "latestVersionId": "v0001",
152
+ "latestVersionDigest": "dc988d7a94c07d2a8070968a71ddacffb374eaeee12aa85eb93231e06dd7b077",
153
+ "activeWorkUnitId": "wu-20260524015648-6d33ded7",
154
+ "targetRoot": "/Users/chaojifeng/Projects/harness-engineer/openprd",
155
+ "reviewStatus": {
156
+ "versionId": "v0001",
157
+ "workUnitId": "wu-20260524015648-6d33ded7",
158
+ "status": "confirmed",
159
+ "artifact": "/Users/chaojifeng/Projects/harness-engineer/openprd/.openprd/engagements/active/review.html",
160
+ "stableArtifact": "/Users/chaojifeng/Projects/harness-engineer/openprd/.openprd/reviews/v0001.html",
161
+ "updatedAt": "2026-05-24 01:56:54",
162
+ "notes": "用户已明确要求直接修复 verify 边界并刷新历史项目。",
163
+ "reviewPath": "/Users/chaojifeng/Projects/harness-engineer/openprd/.openprd/reviews/v0001.html",
164
+ "entryPath": "/Users/chaojifeng/Projects/harness-engineer/openprd/.openprd/engagements/active/review.html"
165
+ },
166
+ "title": "Verify 边界与历史项目刷新",
167
+ "owner": "Codex",
168
+ "synthesizedAt": "2026-05-24 01:56:48"
169
+ }
@@ -0,0 +1,15 @@
1
+ [
2
+ {
3
+ "versionNumber": 1,
4
+ "versionId": "v0001",
5
+ "createdAt": "2026-05-24 01:56:48",
6
+ "title": "Verify 边界与历史项目刷新",
7
+ "owner": "Codex",
8
+ "productType": "agent",
9
+ "templatePack": "agent",
10
+ "status": "synthesized",
11
+ "digest": "dc988d7a94c07d2a8070968a71ddacffb374eaeee12aa85eb93231e06dd7b077",
12
+ "workUnitId": "wu-20260524015648-6d33ded7",
13
+ "targetRoot": "/Users/chaojifeng/Projects/harness-engineer/openprd"
14
+ }
15
+ ]
File without changes