hunter-harness 0.1.3 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +11 -0
  3. package/dist/bin.js +1540 -491
  4. package/package.json +9 -7
  5. package/resources/harness/general/.harness-build.json +0 -5
  6. package/resources/harness/general/CONTEXT.md +0 -65
  7. package/resources/harness/general/README.md +0 -478
  8. package/resources/harness/general/agents/harness-evaluator.md +0 -96
  9. package/resources/harness/general/agents/harness-explorer.md +0 -72
  10. package/resources/harness/general/agents/harness-reviewer.md +0 -69
  11. package/resources/harness/general/harness-archive/SKILL.md +0 -215
  12. package/resources/harness/general/harness-archive/checklist.md +0 -52
  13. package/resources/harness/general/harness-archive/reference.md +0 -103
  14. package/resources/harness/general/harness-archive/scripts/gen-manifest.ps1 +0 -31
  15. package/resources/harness/general/harness-archive/templates/render-summary.mjs +0 -171
  16. package/resources/harness/general/harness-archive/templates/summary-data-template.json +0 -128
  17. package/resources/harness/general/harness-codebase-map/SKILL.md +0 -112
  18. package/resources/harness/general/harness-codebase-map/checklist.md +0 -126
  19. package/resources/harness/general/harness-codebase-map/reference.md +0 -364
  20. package/resources/harness/general/harness-codebase-map/templates/ARCHITECTURE.md +0 -57
  21. package/resources/harness/general/harness-codebase-map/templates/CONCERNS.md +0 -49
  22. package/resources/harness/general/harness-codebase-map/templates/CONVENTIONS.md +0 -57
  23. package/resources/harness/general/harness-codebase-map/templates/INTEGRATIONS.md +0 -52
  24. package/resources/harness/general/harness-codebase-map/templates/STACK.md +0 -55
  25. package/resources/harness/general/harness-codebase-map/templates/STRUCTURE.md +0 -69
  26. package/resources/harness/general/harness-codebase-map/templates/TESTING.md +0 -64
  27. package/resources/harness/general/harness-codebase-map/templates/map-manifest.schema.json +0 -73
  28. package/resources/harness/general/harness-codebase-map/templates/map-summary.md +0 -64
  29. package/resources/harness/general/harness-knowledge-ingest/SKILL.md +0 -246
  30. package/resources/harness/general/harness-knowledge-ingest/design.md +0 -842
  31. package/resources/harness/general/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  32. package/resources/harness/general/harness-knowledge-ingest/mcp-config.example.json +0 -10
  33. package/resources/harness/general/harness-knowledge-ingest/reference.md +0 -309
  34. package/resources/harness/general/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -4082
  35. package/resources/harness/general/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -273
  36. package/resources/harness/general/harness-knowledge-query/SKILL.md +0 -164
  37. package/resources/harness/general/harness-plan/SKILL.md +0 -127
  38. package/resources/harness/general/harness-plan/checklist.md +0 -243
  39. package/resources/harness/general/harness-plan/protocols.md +0 -124
  40. package/resources/harness/general/harness-plan/reference.md +0 -376
  41. package/resources/harness/general/harness-review/SKILL.md +0 -156
  42. package/resources/harness/general/harness-review/checklist.md +0 -124
  43. package/resources/harness/general/harness-review/protocols.md +0 -68
  44. package/resources/harness/general/harness-review/reference.md +0 -86
  45. package/resources/harness/general/harness-run/SKILL.md +0 -132
  46. package/resources/harness/general/harness-run/checklist.md +0 -259
  47. package/resources/harness/general/harness-run/protocols.md +0 -78
  48. package/resources/harness/general/harness-run/reference.md +0 -834
  49. package/resources/harness/general/harness-submit/SKILL.md +0 -159
  50. package/resources/harness/general/harness-submit/checklist.md +0 -407
  51. package/resources/harness/general/harness-submit/reference.md +0 -152
  52. package/resources/harness/general/harness-sync/SKILL.md +0 -82
  53. package/resources/harness/general/harness-sync/reference.md +0 -153
  54. package/resources/harness/general/harness-test/SKILL.md +0 -180
  55. package/resources/harness/general/harness-test/checklist.md +0 -319
  56. package/resources/harness/general/harness-test/pitfalls.md +0 -260
  57. package/resources/harness/general/harness-test/reference.md +0 -791
  58. package/resources/harness/general/protocols/archive-report-protocol.md +0 -175
  59. package/resources/harness/general/protocols/evidence-based-reporting-protocol.md +0 -134
  60. package/resources/harness/general/protocols/ledger-protocol.md +0 -270
  61. package/resources/harness/general/protocols/powershell-protocol.md +0 -181
  62. package/resources/harness/general/protocols/report-pipeline-protocol.md +0 -150
  63. package/resources/harness/general/protocols/sensitive-info-protocol.md +0 -92
  64. package/resources/harness/general/protocols/state-layout-protocol.md +0 -131
  65. package/resources/harness/general/protocols/submit-protocol.md +0 -78
  66. package/resources/harness/general/scripts/harness_archive.py +0 -2319
  67. package/resources/harness/general/scripts/harness_deploy.py +0 -613
  68. package/resources/harness/general/scripts/harness_events.py +0 -680
  69. package/resources/harness/general/scripts/harness_ledger.py +0 -671
  70. package/resources/harness/general/scripts/harness_preflight.py +0 -780
  71. package/resources/harness/general/scripts/harness_service.py +0 -1331
  72. package/resources/harness/java/.harness-build.json +0 -5
  73. package/resources/harness/java/CONTEXT.md +0 -65
  74. package/resources/harness/java/README.md +0 -478
  75. package/resources/harness/java/agents/harness-evaluator.md +0 -96
  76. package/resources/harness/java/agents/harness-explorer.md +0 -72
  77. package/resources/harness/java/agents/harness-reviewer.md +0 -69
  78. package/resources/harness/java/harness-apidoc/SKILL.md +0 -86
  79. package/resources/harness/java/harness-apidoc/checklist.md +0 -142
  80. package/resources/harness/java/harness-apidoc/reference.md +0 -233
  81. package/resources/harness/java/harness-archive/SKILL.md +0 -215
  82. package/resources/harness/java/harness-archive/checklist.md +0 -52
  83. package/resources/harness/java/harness-archive/reference.md +0 -103
  84. package/resources/harness/java/harness-archive/scripts/gen-manifest.ps1 +0 -31
  85. package/resources/harness/java/harness-archive/templates/render-summary.mjs +0 -171
  86. package/resources/harness/java/harness-archive/templates/summary-data-template.json +0 -128
  87. package/resources/harness/java/harness-codebase-map/SKILL.md +0 -112
  88. package/resources/harness/java/harness-codebase-map/checklist.md +0 -126
  89. package/resources/harness/java/harness-codebase-map/reference.md +0 -364
  90. package/resources/harness/java/harness-codebase-map/templates/ARCHITECTURE.md +0 -57
  91. package/resources/harness/java/harness-codebase-map/templates/CONCERNS.md +0 -49
  92. package/resources/harness/java/harness-codebase-map/templates/CONVENTIONS.md +0 -57
  93. package/resources/harness/java/harness-codebase-map/templates/INTEGRATIONS.md +0 -52
  94. package/resources/harness/java/harness-codebase-map/templates/STACK.md +0 -55
  95. package/resources/harness/java/harness-codebase-map/templates/STRUCTURE.md +0 -69
  96. package/resources/harness/java/harness-codebase-map/templates/TESTING.md +0 -64
  97. package/resources/harness/java/harness-codebase-map/templates/map-manifest.schema.json +0 -73
  98. package/resources/harness/java/harness-codebase-map/templates/map-summary.md +0 -64
  99. package/resources/harness/java/harness-knowledge-ingest/SKILL.md +0 -246
  100. package/resources/harness/java/harness-knowledge-ingest/design.md +0 -842
  101. package/resources/harness/java/harness-knowledge-ingest/evaluations/harness_knowledge_evaluation.xml +0 -42
  102. package/resources/harness/java/harness-knowledge-ingest/mcp-config.example.json +0 -10
  103. package/resources/harness/java/harness-knowledge-ingest/reference.md +0 -309
  104. package/resources/harness/java/harness-knowledge-ingest/scripts/harness_knowledge.py +0 -4082
  105. package/resources/harness/java/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +0 -273
  106. package/resources/harness/java/harness-knowledge-query/SKILL.md +0 -164
  107. package/resources/harness/java/harness-package/SKILL.md +0 -87
  108. package/resources/harness/java/harness-package/checklist.md +0 -322
  109. package/resources/harness/java/harness-package/reference.md +0 -210
  110. package/resources/harness/java/harness-plan/SKILL.md +0 -127
  111. package/resources/harness/java/harness-plan/checklist.md +0 -243
  112. package/resources/harness/java/harness-plan/protocols.md +0 -124
  113. package/resources/harness/java/harness-plan/reference.md +0 -376
  114. package/resources/harness/java/harness-review/SKILL.md +0 -156
  115. package/resources/harness/java/harness-review/checklist.md +0 -124
  116. package/resources/harness/java/harness-review/protocols.md +0 -68
  117. package/resources/harness/java/harness-review/reference.md +0 -86
  118. package/resources/harness/java/harness-run/SKILL.md +0 -148
  119. package/resources/harness/java/harness-run/checklist.md +0 -250
  120. package/resources/harness/java/harness-run/protocols.md +0 -78
  121. package/resources/harness/java/harness-run/reference.md +0 -814
  122. package/resources/harness/java/harness-submit/SKILL.md +0 -166
  123. package/resources/harness/java/harness-submit/checklist.md +0 -407
  124. package/resources/harness/java/harness-submit/reference.md +0 -152
  125. package/resources/harness/java/harness-sync/SKILL.md +0 -82
  126. package/resources/harness/java/harness-sync/reference.md +0 -153
  127. package/resources/harness/java/harness-test/SKILL.md +0 -192
  128. package/resources/harness/java/harness-test/checklist.md +0 -317
  129. package/resources/harness/java/harness-test/pitfalls-java.md +0 -16
  130. package/resources/harness/java/harness-test/pitfalls.md +0 -260
  131. package/resources/harness/java/harness-test/reference.md +0 -788
  132. package/resources/harness/java/protocols/archive-report-protocol.md +0 -175
  133. package/resources/harness/java/protocols/evidence-based-reporting-protocol.md +0 -134
  134. package/resources/harness/java/protocols/ledger-protocol.md +0 -270
  135. package/resources/harness/java/protocols/powershell-protocol.md +0 -181
  136. package/resources/harness/java/protocols/report-pipeline-protocol.md +0 -150
  137. package/resources/harness/java/protocols/sensitive-info-protocol.md +0 -92
  138. package/resources/harness/java/protocols/state-layout-protocol.md +0 -131
  139. package/resources/harness/java/protocols/submit-protocol.md +0 -78
  140. package/resources/harness/java/scripts/harness_archive.py +0 -2319
  141. package/resources/harness/java/scripts/harness_deploy.py +0 -613
  142. package/resources/harness/java/scripts/harness_events.py +0 -680
  143. package/resources/harness/java/scripts/harness_ledger.py +0 -671
  144. package/resources/harness/java/scripts/harness_preflight.py +0 -780
  145. package/resources/harness/java/scripts/harness_service.py +0 -1331
  146. package/resources/harness/manifests/general.json +0 -276
  147. package/resources/harness/manifests/java.json +0 -304
  148. package/resources/harness/migrations/0.1.1/general.json +0 -358
  149. package/resources/harness/migrations/0.1.1/java.json +0 -398
@@ -1,64 +0,0 @@
1
- ---
2
- harness:
3
- origin: generated
4
- generator: harness-codebase-map
5
- file_kind: generated_reviewable
6
- push_policy: full-diff-proposal
7
- update_policy: skip-if-local-dirty
8
- title: Testing Patterns
9
- document_type: testing
10
- profile: <profile-or-unknown>
11
- mapped_at: <YYYY-MM-DD HH:mm>
12
- last_mapped_commit: <sha-or-unknown>
13
- path_scope: <full|fast|focus|paths>
14
- status: active
15
- ---
16
-
17
- # Testing Patterns
18
-
19
- **Analysis Date:** <YYYY-MM-DD>
20
-
21
- ## Test Framework
22
-
23
- - Runner: <framework>
24
- - Config: `<path>`
25
-
26
- ## Test Commands
27
-
28
- ```bash
29
- <test command>
30
- <single test command if known>
31
- <coverage command if known>
32
- ```
33
-
34
- ## Test File Organization
35
-
36
- - Location: `<path or pattern>`
37
- - Naming: <pattern>
38
-
39
- ## Unit Tests
40
-
41
- - Scope: <observed pattern>
42
- - Example path: `<path>`
43
-
44
- ## Integration / API Tests
45
-
46
- - Scope: <observed pattern>
47
- - Example path: `<path>`
48
-
49
- ## Mocking / Fixtures
50
-
51
- - <mock strategy>
52
- - Fixture location: `<path>`
53
-
54
- ## Coverage / Quality Gates
55
-
56
- - <coverage rule or unknown>
57
-
58
- ## Testing Gaps
59
-
60
- - <module or path lacking tests>
61
-
62
- ## Notes for AI Agents
63
-
64
- - <how harness-test should use this map>
@@ -1,73 +0,0 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "title": "Hunter Harness Codebase Map Manifest",
4
- "type": "object",
5
- "required": [
6
- "schema_version",
7
- "generator",
8
- "generated_at",
9
- "mode",
10
- "profile",
11
- "last_mapped_commit",
12
- "path_scope",
13
- "documents",
14
- "summary",
15
- "warnings",
16
- "stale_policy"
17
- ],
18
- "properties": {
19
- "schema_version": { "type": "integer", "const": 1 },
20
- "generator": { "type": "string", "const": "harness-codebase-map" },
21
- "generated_at": { "type": "string" },
22
- "mode": { "type": "string" },
23
- "profile": { "type": "string" },
24
- "project_root": { "type": "string" },
25
- "last_mapped_commit": { "type": "string" },
26
- "path_scope": {
27
- "type": "object",
28
- "required": ["type", "paths"],
29
- "properties": {
30
- "type": { "type": "string" },
31
- "paths": { "type": "array", "items": { "type": "string" } }
32
- },
33
- "additionalProperties": true
34
- },
35
- "documents": {
36
- "type": "array",
37
- "items": {
38
- "type": "object",
39
- "required": ["document_type", "path", "sha256", "line_count", "focus", "status"],
40
- "properties": {
41
- "document_type": { "type": "string" },
42
- "path": { "type": "string" },
43
- "sha256": { "type": "string" },
44
- "line_count": { "type": "integer" },
45
- "focus": { "type": "string" },
46
- "status": { "type": "string" }
47
- },
48
- "additionalProperties": true
49
- }
50
- },
51
- "summary": {
52
- "type": "object",
53
- "required": ["path", "sha256", "line_count"],
54
- "properties": {
55
- "path": { "type": "string" },
56
- "sha256": { "type": "string" },
57
- "line_count": { "type": "integer" }
58
- },
59
- "additionalProperties": true
60
- },
61
- "warnings": { "type": "array", "items": { "type": "string" } },
62
- "stale_policy": {
63
- "type": "object",
64
- "required": ["max_age_days", "changed_files_threshold"],
65
- "properties": {
66
- "max_age_days": { "type": "integer" },
67
- "changed_files_threshold": { "type": "integer" }
68
- },
69
- "additionalProperties": true
70
- }
71
- },
72
- "additionalProperties": true
73
- }
@@ -1,64 +0,0 @@
1
- ---
2
- harness:
3
- origin: generated
4
- generator: harness-codebase-map
5
- file_kind: generated_reviewable
6
- push_policy: full-diff-proposal
7
- update_policy: skip-if-local-dirty
8
- title: Codebase Map Summary
9
- document_type: map-summary
10
- profile: <profile-or-unknown>
11
- generated_at: <YYYY-MM-DD HH:mm>
12
- last_mapped_commit: <sha-or-unknown>
13
- mode: <full|fast|focus|paths|status|diff>
14
- status: active
15
- ---
16
-
17
- # Codebase Map Summary
18
-
19
- **Generated At:** <YYYY-MM-DD HH:mm>
20
- **Mode:** <full|fast|focus|paths|status|diff>
21
- **Profile:** <profile-or-unknown>
22
- **Commit:** <sha-or-unknown>
23
-
24
- ## Project Snapshot
25
-
26
- <项目一句话说明>
27
-
28
- ## Key Stack
29
-
30
- - Language: <language and version>
31
- - Framework: <framework>
32
- - Build: <build tool>
33
- - Database: <database or none/unknown>
34
-
35
- ## Main Modules
36
-
37
- - `<path>` — <purpose>
38
-
39
- ## Entry Points
40
-
41
- - `<path>` — <purpose>
42
-
43
- ## Testing
44
-
45
- - Command: <test command or unknown>
46
- - Test location: `<path or unknown>`
47
-
48
- ## Concerns
49
-
50
- - <risk or concern>
51
-
52
- ## Detailed Documents
53
-
54
- - `.harness/codebase/map/STACK.md`
55
- - `.harness/codebase/map/INTEGRATIONS.md`
56
- - `.harness/codebase/map/ARCHITECTURE.md`
57
- - `.harness/codebase/map/STRUCTURE.md`
58
- - `.harness/codebase/map/CONVENTIONS.md`
59
- - `.harness/codebase/map/TESTING.md`
60
- - `.harness/codebase/map/CONCERNS.md`
61
-
62
- ## Notes for AI Agents
63
-
64
- - Read this summary first, then open the detailed document that matches the current task.
@@ -1,246 +0,0 @@
1
- ---
2
- name: harness-knowledge-ingest
3
- description: "从 .harness/archive 归档整理、同步和维护项目知识索引。适用场景:ingest knowledge、sync knowledge、rebuild knowledge index、promote knowledge、确认知识条目、检查知识库是否过期。"
4
- argument-hint: "auto | sync | ingest | audit | promote <entry-id> | demote <entry-id> | mcp"
5
- effort: medium
6
- allowed-tools: [Bash(powershell.exe:*), Read, Write, Edit, Glob, Grep]
7
- disallowed-tools:
8
- - Bash(git *)
9
- - Bash(mvn *)
10
- - Bash(ls *)
11
- - Bash(find *)
12
- - Bash(grep *)
13
- - Bash(cat *)
14
- - Bash(cp *)
15
- - Bash(mv *)
16
- - Bash(rm *)
17
- - Bash(mkdir *)
18
- - Bash(touch *)
19
- - Bash(sed *)
20
- - Bash(awk *)
21
- - Bash(curl *)
22
- ---
23
- <!-- generated by harness_deploy.py; core=76dd32302df53f0b; overlay=none; do not edit -->
24
- # harness-knowledge-ingest
25
-
26
- 从 `.harness/archive/**/reports/final/summary-data.json` 抽取项目知识,生成并维护本地 `.harness/knowledge/` 索引。
27
-
28
- 当前实现是本地、离线、无 LLM、无外部服务的 SQLite FTS MVP,已经支持基础生命周期:`candidate`、`stale`、`active`、`superseded`、`conflicted`。按新需求查询历史由独立的 `harness-knowledge-query` 负责。
29
-
30
- ## Triggers
31
-
32
- - ingest knowledge
33
- - sync knowledge
34
- - rebuild knowledge index
35
- - promote knowledge
36
- - 确认知识条目
37
- - 从归档生成知识索引
38
- - 刷新项目知识库
39
- - 检查知识库是否过期
40
-
41
- ## Required context
42
-
43
- - AGENTS.md / CLAUDE.md
44
- - `.harness/archive/**/reports/final/summary-data.json`
45
- - `.harness/knowledge/index.json`
46
- - `.harness/codebase/map-summary.md`(如存在)
47
- - design.md
48
-
49
- ## Purpose
50
-
51
- 解决两个问题:
52
-
53
- 1. **整理知识库内容**:把归档里的 `businessGoal`、`changedFiles`、`maintenanceNotes`、`knownRisks`、`manualActions`、`verification`、`reviewSummary` 抽成知识条目。
54
- 2. **维护知识生命周期**:检查索引是否过期,保留 active 条目;高价值 candidate 可经人工确认提升,也可由 `auto` 首次写入的 `autoPromote` 配置按置信度门槛自动提升。
55
-
56
- ## Outputs
57
-
58
- ```text
59
- .harness/knowledge/index.json
60
- .harness/knowledge/index.sqlite
61
- .harness/knowledge/entries/candidate/*.json
62
- .harness/knowledge/entries/active/*.json
63
- .harness/knowledge/entries/stale/*.json
64
- .harness/knowledge/entries/superseded/*.json
65
- .harness/knowledge/entries/conflicted/*.json
66
- .harness/knowledge/cache/archive-entries/*.json
67
- .harness/knowledge/reports/ingest-report-YYYYMMDD-HHmmss.md
68
- .harness/knowledge/reports/verification-report-YYYYMMDD-HHmmss.md
69
- .harness/knowledge/reports/validator-suggestions-YYYYMMDD-HHmmss.md
70
- .harness/knowledge/reports/audit-report-YYYYMMDD-HHmmss.md
71
- .harness/knowledge/views/knowledge-dashboard.md
72
- .harness/knowledge/views/by-file.md
73
- .harness/knowledge/views/stale-items.md
74
- .harness/knowledge/views/superseded-items.md
75
- .harness/knowledge/views/conflicted-items.md
76
- .harness/knowledge/views/active-review.md
77
- .harness/knowledge/views/knowledge.base
78
- .harness/knowledge/context-packs/*.md
79
- ```
80
-
81
- ## Commands
82
-
83
- `<skill-dir>` 指本 skill 目录。所有 python 脚本命令通过 `powershell.exe -Command "..."` 执行。完整命令示例与 config.json 配置见 `reference.md`「Commands 详细」。
84
-
85
- | 命令 | 用途 |
86
- |---|---|
87
- | `auto` | 一键防腐:首建 config、sync --update、suggest-validators、verify、audit;首次自动写 autoPromote 配置并提升高 confidence 条目 |
88
- | `ingest` | 重建/刷新知识索引,抽取 candidate;`--no-incremental` 强制全量重抽取 |
89
- | `sync` | 检查 index 与 archive/HEAD 一致性;`--update` 自动刷新 |
90
- | `promote` | candidate→active(人工确认或 autoPromote 触发) |
91
- | `demote` | active→stale/candidate(人工复核后) |
92
- | `audit` | 生成 Candidate/Stale/Superseded/Conflict/Active Review 报告 |
93
- | `verify` | 执行 entry validators,刷新 lifecycle.validation,生成 verification-report |
94
- | `suggest-validators` | 生成 file_exists/file_contains validator 建议;`--apply` 写回 entry |
95
- | `mcp` | FastMCP stdio 入口,暴露 9 个工具(见 reference.md) |
96
-
97
- config.json 配置项(autoPromote / confidence / activeLifecycle / knowledgeValidation)详见 `reference.md`「Commands 详细」。
98
-
99
- ## Workflow
100
-
101
- ### Phase 0:确认项目根目录
102
-
103
- 项目根目录必须包含 `.harness/`。如果 `.harness/archive/` 不存在或没有 `summary-data.json`,报告当前项目暂无可索引归档,不要伪造知识。
104
-
105
- ### Phase 1:重建本地知识索引
106
-
107
- 运行:
108
-
109
- ```powershell
110
- powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' ingest --project '<project-root>'"
111
- ```
112
-
113
- 生成:
114
-
115
- - `index.json`:人类可读 manifest。
116
- - `index.sqlite`:SQLite FTS5 检索索引。
117
- - `entries/candidate/`:自动抽取、待确认知识。
118
- - `entries/stale/`:来源 commit 缺失、无法比较,或来源 commit 后相关文件变化的知识。
119
- - `entries/active/`:人工确认后可长期引用的知识。
120
- - `views/`:Obsidian 友好的浏览视图。
121
- - `reports/`:本次 ingest 报告。
122
-
123
- ### Phase 2:同步检查
124
-
125
- ```powershell
126
- powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' sync --project '<project-root>'"
127
- ```
128
-
129
- 当 `upToDate=false` 时,应优先运行 `sync --update` 或 `ingest`,再交给 `harness-knowledge-query` 查询。
130
-
131
- ### Phase 3:人工确认高价值知识
132
-
133
- 如果某条 candidate 已确认仍然有效,并且会反复影响后续需求,可运行 `promote` 将其提升为 active。
134
-
135
- active 条目适合保存:
136
-
137
- - 需求约束
138
- - 架构决策
139
- - API contract
140
- - 反复踩坑点
141
- - 测试或发布前置条件
142
-
143
- 不要把一次性实现细节、过期临时方案、未验证结论提升为 active。
144
-
145
- ### Phase 4:解释同步结果
146
-
147
- 回复用户或交给后续 skill 前,应说明:
148
-
149
- - 索引是否最新。
150
- - 如需刷新,具体原因是 archive 增删、checksum 变化、sqlite 缺失,还是 HEAD 改变。
151
- - 本次是否自动刷新。
152
- - 当前 `active` / `candidate` / `stale` 的数量。
153
-
154
- ## Knowledge extraction rules
155
-
156
- - Detect duplicate IDs, duplicate content, and conflicting active facts.
157
- - Keep project-local entries excluded from any global index unless explicitly selected.
158
- - Validate lifecycle relationships.
159
- - Default generated entries are `candidate`; only config-gated `autoPromote` may promote high-confidence long-lived entries to `active`.
160
- - Preserve provenance: every entry must include source archive, summary path, source commit, and source files when available.
161
- - Do not edit `.harness/archive/**` during ingest.
162
- - Do not copy secrets into `.harness/knowledge`.
163
-
164
- ## Lifecycle rules
165
-
166
- - `candidate`:自动抽取但未人工确认。
167
- - `active`:人工确认、显式 promote,或配置允许的高置信度 autoPromote 后可用。
168
- - `stale`:来源 commit 缺失、来源 commit 后相关文件变化,或当前代码无法证明旧结论仍有效。
169
- - `superseded`:被后续归档/决策取代。
170
- - `conflicted`:与另一条 active/candidate 知识冲突。
171
-
172
- ## Forbidden actions
173
-
174
- - auto_promote_candidate_knowledge_without_config_and_confidence_gate
175
- - erase_conflicts
176
- - include_project_local_by_default
177
- - mutate_archive_evidence
178
- - store_secrets
179
- - treat_stale_knowledge_as_current_fact
180
-
181
- ## Allowed capabilities
182
-
183
- - read
184
- - search
185
- - write_candidate_knowledge
186
- - write_active_knowledge_after_manual_confirmation
187
- - write_confidence_scores
188
- - auto_promote_high_confidence_knowledge_when_configured
189
- - write_knowledge_index
190
- - write_obsidian_views
191
-
192
- ## Verification
193
-
194
- 本 skill 自带最小测试:
195
-
196
- ```powershell
197
- powershell.exe -Command "python -m unittest '<skill-dir>\tests\test_harness_knowledge.py'"
198
- ```
199
-
200
- 完成脚本修改后必须至少运行该测试。若在真实项目中验证,还应运行:
201
-
202
- ```powershell
203
- powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' auto --project '<real-project-root>'"
204
- powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' ingest --project '<real-project-root>'"
205
- powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' suggest-validators --project '<real-project-root>' --limit 20"
206
- powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' verify --project '<real-project-root>'"
207
- powershell.exe -Command "python '<skill-dir>\scripts\harness_knowledge.py' sync --project '<real-project-root>'"
208
- ```
209
-
210
- 并确认 `index.json`、`index.sqlite`、`views/knowledge-dashboard.md`、`reports/verification-report-*.md` 存在,且 sync 输出 `upToDate=true`。
211
-
212
- ## P0 执行可信度规则
213
-
214
- - 命令结果不得靠猜测;普通 Bash 被拒 → 立即改用等价 PowerShell 重试一次
215
- - 仅 PowerShell 成功且有明确证据(构建/git/测试输出、文件存在、exit 0)时可标 ✅OK;否则 ❌FAIL 或 🟡WARN
216
- - 禁止把 hook 拒绝、静态验证、无输出、用户跳过说成成功 → 详见 [[../protocols/powershell-protocol.md|powershell-protocol]]、[[../protocols/evidence-based-reporting-protocol.md|evidence-based-reporting-protocol]]
217
-
218
- ## Output Format
219
-
220
- 执行完成后展示:
221
-
222
- - 本次命令(ingest/sync/promote)与目标项目根。
223
- - `upToDate` 及 `reasons`(sync)或新增/覆盖条目数(ingest/promote)。
224
- - 当前 `active` / `candidate` / `stale` 数量统计。
225
- - 产物路径(`index.json`、`index.sqlite`、`views/`、`reports/`)。
226
- - 下一步建议(`upToDate=false` → `sync --update`;有 candidate → 人工确认后 `promote`,或项目启用 `autoPromote` 后让高置信度长期知识自动提升;查询历史 → `/harness-knowledge-query`)。
227
-
228
- ## 渐进披露
229
-
230
- - **Read `reference.md`** 仅在执行命令或查阅 config.json 配置时 — 含 Commands 详细示例(9 命令的 powershell 示例 + config.json 配置)与变更日志(v1.7–v1.13 补充能力)。
231
-
232
- ## 交互白名单
233
-
234
- **仅当** `.harness/config/harness.json` 中 `knowledge.manualReview=true` 时,promote/demote 高价值条目需 AskUserQuestion;否则按 skill 默认策略 + `decision` 事件。
235
-
236
- ## 执行日志
237
-
238
- `events.ndjson` 为唯一事实源(schema_version 2,`note` 承载人类可读摘要);`logs/execution-log.md` 由 `harness_events.py` 渲染,**禁止手工 Edit**。结构 → [[../protocols/report-pipeline-protocol.md|report-pipeline-protocol]]
239
-
240
- ```powershell
241
- python <skills-root>/scripts/harness_events.py append --change-dir ".harness/changes/<change-name>" --phase <phase> --type phase.start --note "<触发指令>"
242
- ```
243
-
244
- > **脚本接线**:`harness_events.py append`;`harness_archive.py finalize`;`harness_preflight.py check`;`harness_ledger.py can-reuse`;`harness_service.py ensure/stop`(须 `--files`/`serviceStart.inputFiles`)。JSON 输出按 D13 护栏解读。
245
-
246
- > **Task 4 §6.1 写入契约**:普通 `append` = 加锁 -> 追加一行 -> fsync -> 解锁,**不 load 历史、不渲染**(O(1),跨进程锁 `events.ndjson.lock`,UUID 用完整 `uuid4().hex` 无需去重扫描)。仅 `--type phase.end` append 在追加成功后渲染一次 `execution-log.md`;显式 `harness_events.py render` 随时从完整 events 重建;`harness_archive.py finalize` 在 collect 前强制 render 一次。高频 command append 期间 log 可能滞后,phase 边界保持最新。