@hunter-harness/workflow-harness 0.2.0 → 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 (130) hide show
  1. package/harness/bundles/general/claude-code/.harness-build.json +1 -1
  2. package/harness/bundles/general/claude-code/harness-archive/SKILL.md +1 -1
  3. package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +1 -1
  4. package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +35 -21
  5. package/harness/bundles/general/claude-code/harness-knowledge-ingest/reference.md +53 -7
  6. package/harness/bundles/general/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +47 -3
  7. package/harness/bundles/general/claude-code/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +2 -2
  8. package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +1 -1
  9. package/harness/bundles/general/claude-code/harness-plan/SKILL.md +1 -1
  10. package/harness/bundles/general/claude-code/harness-review/SKILL.md +1 -1
  11. package/harness/bundles/general/claude-code/harness-run/SKILL.md +1 -1
  12. package/harness/bundles/general/claude-code/harness-submit/SKILL.md +1 -1
  13. package/harness/bundles/general/claude-code/harness-sync/SKILL.md +2 -2
  14. package/harness/bundles/general/claude-code/harness-test/SKILL.md +1 -1
  15. package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
  16. package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +1 -1
  17. package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
  18. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +35 -21
  19. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/reference.md +53 -7
  20. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +47 -3
  21. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +2 -2
  22. package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  23. package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +1 -1
  24. package/harness/bundles/general/codebuddy/harness-review/SKILL.md +1 -1
  25. package/harness/bundles/general/codebuddy/harness-run/SKILL.md +1 -1
  26. package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +1 -1
  27. package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +2 -2
  28. package/harness/bundles/general/codebuddy/harness-test/SKILL.md +1 -1
  29. package/harness/bundles/general/codex/.harness-build.json +1 -1
  30. package/harness/bundles/general/codex/harness-archive/SKILL.md +1 -1
  31. package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
  32. package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +35 -21
  33. package/harness/bundles/general/codex/harness-knowledge-ingest/reference.md +53 -7
  34. package/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +47 -3
  35. package/harness/bundles/general/codex/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +2 -2
  36. package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +1 -1
  37. package/harness/bundles/general/codex/harness-plan/SKILL.md +1 -1
  38. package/harness/bundles/general/codex/harness-review/SKILL.md +1 -1
  39. package/harness/bundles/general/codex/harness-run/SKILL.md +1 -1
  40. package/harness/bundles/general/codex/harness-submit/SKILL.md +1 -1
  41. package/harness/bundles/general/codex/harness-sync/SKILL.md +2 -2
  42. package/harness/bundles/general/codex/harness-test/SKILL.md +1 -1
  43. package/harness/bundles/general/cursor/.harness-build.json +1 -1
  44. package/harness/bundles/general/cursor/harness-archive/SKILL.md +1 -1
  45. package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
  46. package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +35 -21
  47. package/harness/bundles/general/cursor/harness-knowledge-ingest/reference.md +53 -7
  48. package/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +47 -3
  49. package/harness/bundles/general/cursor/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +2 -2
  50. package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +1 -1
  51. package/harness/bundles/general/cursor/harness-plan/SKILL.md +1 -1
  52. package/harness/bundles/general/cursor/harness-review/SKILL.md +1 -1
  53. package/harness/bundles/general/cursor/harness-run/SKILL.md +1 -1
  54. package/harness/bundles/general/cursor/harness-submit/SKILL.md +1 -1
  55. package/harness/bundles/general/cursor/harness-sync/SKILL.md +2 -2
  56. package/harness/bundles/general/cursor/harness-test/SKILL.md +1 -1
  57. package/harness/bundles/java/claude-code/.harness-build.json +1 -1
  58. package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +1 -1
  59. package/harness/bundles/java/claude-code/harness-archive/SKILL.md +1 -1
  60. package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
  61. package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +35 -21
  62. package/harness/bundles/java/claude-code/harness-knowledge-ingest/reference.md +53 -7
  63. package/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge.py +47 -3
  64. package/harness/bundles/java/claude-code/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +2 -2
  65. package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +1 -1
  66. package/harness/bundles/java/claude-code/harness-package/SKILL.md +1 -1
  67. package/harness/bundles/java/claude-code/harness-plan/SKILL.md +1 -1
  68. package/harness/bundles/java/claude-code/harness-review/SKILL.md +1 -1
  69. package/harness/bundles/java/claude-code/harness-run/SKILL.md +1 -1
  70. package/harness/bundles/java/claude-code/harness-submit/SKILL.md +1 -1
  71. package/harness/bundles/java/claude-code/harness-sync/SKILL.md +2 -2
  72. package/harness/bundles/java/claude-code/harness-test/SKILL.md +1 -1
  73. package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
  74. package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +1 -1
  75. package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +1 -1
  76. package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
  77. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +35 -21
  78. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/reference.md +53 -7
  79. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge.py +47 -3
  80. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +2 -2
  81. package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  82. package/harness/bundles/java/codebuddy/harness-package/SKILL.md +1 -1
  83. package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +1 -1
  84. package/harness/bundles/java/codebuddy/harness-review/SKILL.md +1 -1
  85. package/harness/bundles/java/codebuddy/harness-run/SKILL.md +1 -1
  86. package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +1 -1
  87. package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +2 -2
  88. package/harness/bundles/java/codebuddy/harness-test/SKILL.md +1 -1
  89. package/harness/bundles/java/codex/.harness-build.json +1 -1
  90. package/harness/bundles/java/codex/harness-apidoc/SKILL.md +1 -1
  91. package/harness/bundles/java/codex/harness-archive/SKILL.md +1 -1
  92. package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
  93. package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +35 -21
  94. package/harness/bundles/java/codex/harness-knowledge-ingest/reference.md +53 -7
  95. package/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge.py +47 -3
  96. package/harness/bundles/java/codex/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +2 -2
  97. package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +1 -1
  98. package/harness/bundles/java/codex/harness-package/SKILL.md +1 -1
  99. package/harness/bundles/java/codex/harness-plan/SKILL.md +1 -1
  100. package/harness/bundles/java/codex/harness-review/SKILL.md +1 -1
  101. package/harness/bundles/java/codex/harness-run/SKILL.md +1 -1
  102. package/harness/bundles/java/codex/harness-submit/SKILL.md +1 -1
  103. package/harness/bundles/java/codex/harness-sync/SKILL.md +2 -2
  104. package/harness/bundles/java/codex/harness-test/SKILL.md +1 -1
  105. package/harness/bundles/java/cursor/.harness-build.json +1 -1
  106. package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +1 -1
  107. package/harness/bundles/java/cursor/harness-archive/SKILL.md +1 -1
  108. package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
  109. package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +35 -21
  110. package/harness/bundles/java/cursor/harness-knowledge-ingest/reference.md +53 -7
  111. package/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge.py +47 -3
  112. package/harness/bundles/java/cursor/harness-knowledge-ingest/scripts/harness_knowledge_mcp.py +2 -2
  113. package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +1 -1
  114. package/harness/bundles/java/cursor/harness-package/SKILL.md +1 -1
  115. package/harness/bundles/java/cursor/harness-plan/SKILL.md +1 -1
  116. package/harness/bundles/java/cursor/harness-review/SKILL.md +1 -1
  117. package/harness/bundles/java/cursor/harness-run/SKILL.md +1 -1
  118. package/harness/bundles/java/cursor/harness-submit/SKILL.md +1 -1
  119. package/harness/bundles/java/cursor/harness-sync/SKILL.md +2 -2
  120. package/harness/bundles/java/cursor/harness-test/SKILL.md +1 -1
  121. package/harness/manifests/general/claude-code.json +15 -15
  122. package/harness/manifests/general/codebuddy.json +15 -15
  123. package/harness/manifests/general/codex.json +15 -15
  124. package/harness/manifests/general/cursor.json +15 -15
  125. package/harness/manifests/java/claude-code.json +17 -17
  126. package/harness/manifests/java/codebuddy.json +17 -17
  127. package/harness/manifests/java/codex.json +17 -17
  128. package/harness/manifests/java/cursor.json +17 -17
  129. package/hunter-workflow-family.json +1 -1
  130. package/package.json +1 -1
@@ -58,6 +58,20 @@ DEFAULT_AUTO_KNOWLEDGE_CONFIG = {
58
58
  "supersededPenalty": 0.8,
59
59
  "conflictPenalty": 0.8,
60
60
  },
61
+ "activeLifecycle": {
62
+ "autoDemote": True,
63
+ "targetStatus": "stale",
64
+ },
65
+ "knowledgeValidation": {
66
+ "enabled": True,
67
+ "autoDemoteActive": True,
68
+ "defaultTargetStatus": "stale",
69
+ "allowCommandValidators": False,
70
+ "commandTimeoutSeconds": 60,
71
+ },
72
+ "judge": {
73
+ "maxCandidatesPerRun": 100,
74
+ },
61
75
  }
62
76
 
63
77
 
@@ -106,6 +120,9 @@ def ensure_auto_knowledge_config(knowledge: Path) -> dict[str, Any]:
106
120
  "path": str(config_path),
107
121
  "created": False,
108
122
  "autoPromoteEnabled": auto_promote_config(config)["enabled"],
123
+ "autoDemoteEnabled": active_lifecycle_config(config)["autoDemote"],
124
+ "autoDemoteActiveEnabled": knowledge_validation_config(config)["autoDemoteActive"],
125
+ "maxCandidatesPerRun": judge_config(config)["maxCandidatesPerRun"],
109
126
  "appliedBy": "existing",
110
127
  "candidateAutoPromoted": None,
111
128
  }
@@ -115,6 +132,9 @@ def ensure_auto_knowledge_config(knowledge: Path) -> dict[str, Any]:
115
132
  "path": str(config_path),
116
133
  "created": True,
117
134
  "autoPromoteEnabled": True,
135
+ "autoDemoteEnabled": True,
136
+ "autoDemoteActiveEnabled": True,
137
+ "maxCandidatesPerRun": judge_config(config)["maxCandidatesPerRun"],
118
138
  "appliedBy": None,
119
139
  "candidateAutoPromoted": None,
120
140
  }
@@ -185,6 +205,16 @@ def auto_promote_config(config: dict[str, Any]) -> dict[str, Any]:
185
205
  }
186
206
 
187
207
 
208
+ def judge_config(config: dict[str, Any]) -> dict[str, Any]:
209
+ raw = config.get("judge")
210
+ if not isinstance(raw, dict):
211
+ raw = {}
212
+ max_candidates = int(raw.get("maxCandidatesPerRun") or 100)
213
+ return {
214
+ "maxCandidatesPerRun": max(1, max_candidates),
215
+ }
216
+
217
+
188
218
  def sha256_file(path: Path) -> str:
189
219
  h = hashlib.sha256()
190
220
  with path.open("rb") as f:
@@ -2513,7 +2543,7 @@ def auto_knowledge(
2513
2543
  *,
2514
2544
  limit: int = 20,
2515
2545
  suggest_statuses: list[str] | None = None,
2516
- apply_suggestions: bool = False,
2546
+ apply_suggestions: bool = True,
2517
2547
  incremental: bool = True,
2518
2548
  audit_limit: int = 10,
2519
2549
  ) -> dict[str, Any]:
@@ -2539,6 +2569,7 @@ def auto_knowledge(
2539
2569
  )
2540
2570
  verification = verify_knowledge(project)
2541
2571
  audit = audit_entries(project, limit=audit_limit)
2572
+ ingest_mode = sync.get("index", {}).get("ingestMode", {}) if isinstance(sync.get("index"), dict) else {}
2542
2573
  return {
2543
2574
  "project": str(project),
2544
2575
  "generatedAt": now_iso(),
@@ -2578,6 +2609,15 @@ def auto_knowledge(
2578
2609
  "conflictReview": len(audit["conflictReview"]),
2579
2610
  "activeReview": len(audit["activeReview"]),
2580
2611
  },
2612
+ "lifecycle": {
2613
+ "validatorsApplied": suggestions["applied"],
2614
+ "candidateAutoPromoted": ingest_mode.get(
2615
+ "candidateAutoPromoted", config_summary.get("candidateAutoPromoted") or 0
2616
+ ),
2617
+ "activeAutoDemoted": ingest_mode.get("activeAutoDemoted", 0),
2618
+ "validationAutoDemoted": ingest_mode.get("validationAutoDemoted", verification["autoDemoted"]),
2619
+ "pendingAgentJudge": len(audit["conflictReview"]) + len(audit["candidateReview"]),
2620
+ },
2581
2621
  }
2582
2622
 
2583
2623
 
@@ -3902,7 +3942,11 @@ def main(argv: list[str] | None = None) -> int:
3902
3942
  default=[],
3903
3943
  help="Only suggest validators for this lifecycle status",
3904
3944
  )
3905
- auto.add_argument("--apply-suggestions", action="store_true", help="Write validator suggestions into entry JSON files")
3945
+ auto.add_argument(
3946
+ "--no-apply-suggestions",
3947
+ action="store_true",
3948
+ help="Do not write validator suggestions into entry JSON files (default applies them)",
3949
+ )
3906
3950
  auto.add_argument("--no-incremental", action="store_true", help="Refresh without reusing the archive entry cache")
3907
3951
 
3908
3952
  audit = sub.add_parser("audit", help="Generate review lists for candidate, stale, and superseded entries")
@@ -3999,7 +4043,7 @@ def main(argv: list[str] | None = None) -> int:
3999
4043
  Path(args.project),
4000
4044
  limit=args.limit,
4001
4045
  suggest_statuses=args.suggest_statuses,
4002
- apply_suggestions=args.apply_suggestions,
4046
+ apply_suggestions=not args.no_apply_suggestions,
4003
4047
  incremental=not args.no_incremental,
4004
4048
  audit_limit=args.audit_limit,
4005
4049
  )
@@ -52,7 +52,7 @@ TOOL_DESCRIPTIONS: list[dict[str, Any]] = [
52
52
  "project": {"type": "string", "description": "Project root containing .harness/archive."},
53
53
  "limit": {"type": "integer", "default": 20, "minimum": 1, "maximum": 100},
54
54
  "suggest_statuses": {"type": "array", "items": {"type": "string"}, "default": []},
55
- "apply_suggestions": {"type": "boolean", "default": False, "description": "Write validator suggestions into entry JSON files."},
55
+ "apply_suggestions": {"type": "boolean", "default": True, "description": "Write validator suggestions into entry JSON files (default on)."},
56
56
  "incremental": {"type": "boolean", "default": True, "description": "Reuse cached archive extraction results when refreshing."},
57
57
  "audit_limit": {"type": "integer", "default": 10, "minimum": 1, "maximum": 100},
58
58
  },
@@ -181,7 +181,7 @@ def create_server() -> Any:
181
181
  project: str,
182
182
  limit: int = 20,
183
183
  suggest_statuses: list[str] | None = None,
184
- apply_suggestions: bool = False,
184
+ apply_suggestions: bool = True,
185
185
  incremental: bool = True,
186
186
  audit_limit: int = 10,
187
187
  ) -> dict[str, Any]:
@@ -3,7 +3,7 @@ name: harness-knowledge-query
3
3
  description: 根据新需求、设计任务、代码修改请求或问题排查,在规划和编码前查询 .harness/knowledge
4
4
  历史上下文。适用场景:query knowledge、查找历史需求、根据归档理解需求、继续之前类似开发、生成需求上下文包。
5
5
  ---
6
- <!-- generated by harness_deploy.py; core=daf3768564fda6eb; overlay=java; agent=cursor; do not edit -->
6
+ <!-- generated by harness_deploy.py; core=7b81effe1faaef85; overlay=java; agent=cursor; do not edit -->
7
7
  # harness-knowledge-query
8
8
 
9
9
  根据用户的新需求或排查问题,从项目本地 `.harness/knowledge` 中检索历史需求、决策、实现、风险和测试证据,并生成 AI 可读的 context pack。
@@ -2,7 +2,7 @@
2
2
  name: harness-package
3
3
  description: 增量模块打包:拉取最新→编译验证→mvn package→汇总 jar/war。使用场景:打包、package、发版准备
4
4
  ---
5
- <!-- generated by harness_deploy.py; core=daf3768564fda6eb; overlay=java; agent=cursor; do not edit -->
5
+ <!-- generated by harness_deploy.py; core=7b81effe1faaef85; overlay=java; agent=cursor; do not edit -->
6
6
  # harness-package — 增量模块打包(Java overlay)
7
7
 
8
8
  ## Purpose
@@ -2,7 +2,7 @@
2
2
  name: harness-plan
3
3
  description: 将需求转化为设计文档+实施计划+完整测试场景表,必须在编码前完成。使用场景:需求分析、feature plan、技术方案设计、实现方案规划
4
4
  ---
5
- <!-- generated by harness_deploy.py; core=daf3768564fda6eb; overlay=java; agent=cursor; do not edit -->
5
+ <!-- generated by harness_deploy.py; core=7b81effe1faaef85; overlay=java; agent=cursor; do not edit -->
6
6
  # harness-plan — 需求规划
7
7
 
8
8
  ## Purpose
@@ -3,7 +3,7 @@ name: harness-review
3
3
  description: 6维度代码审查(架构/安全/规范/兼容/测试/性能),对照项目规则(见
4
4
  .harness/context-index.json)和测试场景表,在隔离上下文运行。使用场景:代码审查、提交前检查、合并评审
5
5
  ---
6
- <!-- generated by harness_deploy.py; core=daf3768564fda6eb; overlay=java; agent=cursor; do not edit -->
6
+ <!-- generated by harness_deploy.py; core=7b81effe1faaef85; overlay=java; agent=cursor; do not edit -->
7
7
  # harness-review — 代码审查
8
8
 
9
9
  ## Purpose
@@ -2,7 +2,7 @@
2
2
  name: harness-run
3
3
  description: 按变更簇执行 TDD 编码循环(RED→GREEN→REFACTOR→编译验证),逐变更簇实现计划中的任务。使用场景:开始编码、实现功能、写代码、TDD 编码
4
4
  ---
5
- <!-- generated by harness_deploy.py; core=daf3768564fda6eb; overlay=java; agent=cursor; do not edit -->
5
+ <!-- generated by harness_deploy.py; core=7b81effe1faaef85; overlay=java; agent=cursor; do not edit -->
6
6
  # harness-run — 需求编码
7
7
 
8
8
  ## Purpose
@@ -3,7 +3,7 @@ name: harness-submit
3
3
  description: 最终提交封装:验证→中文 commit→提交/推送;worktree 模式含 --no-ff
4
4
  合并回主分支。使用场景:提交代码、commit、push、合并分支、merge to main、完成开发
5
5
  ---
6
- <!-- generated by harness_deploy.py; core=daf3768564fda6eb; overlay=java; agent=cursor; do not edit -->
6
+ <!-- generated by harness_deploy.py; core=7b81effe1faaef85; overlay=java; agent=cursor; do not edit -->
7
7
  # harness-submit — 最终提交(含 worktree 合并)
8
8
 
9
9
  ## Purpose
@@ -2,7 +2,7 @@
2
2
  name: harness-sync
3
3
  description: 检查并更新项目AI元数据(CodeGraph索引、harness-codebase-map分析、CLAUDE.md、AGENTS.md、.harness/完整性),确保Claude对代码库的理解与最新代码一致。当用户说'同步/更新索引/刷新元数据/检查一致性'时使用
4
4
  ---
5
- <!-- generated by harness_deploy.py; core=daf3768564fda6eb; overlay=java; agent=cursor; do not edit -->
5
+ <!-- generated by harness_deploy.py; core=7b81effe1faaef85; overlay=java; agent=cursor; do not edit -->
6
6
  # harness-sync — 元数据同步
7
7
 
8
8
  ## Purpose
@@ -21,7 +21,7 @@ description: 检查并更新项目AI元数据(CodeGraph索引、harness-codeba
21
21
  | 1 | git log/diff 感知变更量 |
22
22
  | 2 | CodeGraph 索引是否需重建 |
23
23
  | 3 | `.harness/codebase/map/` 是否过期 → 报告建议 `/harness-codebase-map` |
24
- | 3.5 | `harness_knowledge.py sync`;可 `sync --update`;失败不得假装可用 |
24
+ | 3.5 | `harness_knowledge.py sync`;可 `sync --update`;失败不得假装可用。**知识闭环主入口**是 `/harness-knowledge-ingest auto`(含 Agent judge),sync 不重复列人工知识待办 |
25
25
  | 3.6 | 扫描 `.harness/knowledge/maintenance-outbox/{pending,failed}`;对每项运行 `harness_knowledge.py maintain --project . --archive-id <id> --json`(§8.2:archive close 只 enqueue,sync 异步推进 outbox 到 completed/completed_rules_pending_judge) |
26
26
  | 4 | CLAUDE.md 完整性/行数 → 超限 AskUserQuestion 瘦身 |
27
27
  | 5 | AGENTS.md 与 CLAUDE.md 一致 |
@@ -2,7 +2,7 @@
2
2
  name: harness-test
3
3
  description: 测试执行:读取场景表,执行单元测试+API接口测试+数据兼容验证,输出测试报告。当用户说'跑测试/验证/跑用例/接口测试/单元测试'时使用
4
4
  ---
5
- <!-- generated by harness_deploy.py; core=daf3768564fda6eb; overlay=java; agent=cursor; do not edit -->
5
+ <!-- generated by harness_deploy.py; core=7b81effe1faaef85; overlay=java; agent=cursor; do not edit -->
6
6
  # harness-test — 测试执行
7
7
 
8
8
  ## Purpose
@@ -2,12 +2,12 @@
2
2
  "schema_version": 2,
3
3
  "profile": "general",
4
4
  "adapter": "claude-code",
5
- "bundle_version": "0.2.0",
5
+ "bundle_version": "0.2.1",
6
6
  "generator": "harness_deploy.py",
7
7
  "files": [
8
8
  {
9
9
  "path": ".harness-build.json",
10
- "sha256": "216257ca0cbb11df301252861225676058ddd11ecd259f7541388f9df58fceaf"
10
+ "sha256": "64e4da848546c5e0a981c898fa592a816d238bada07b757b3fa255f5c9634cb8"
11
11
  },
12
12
  {
13
13
  "path": "agents/harness-evaluator.md",
@@ -39,7 +39,7 @@
39
39
  },
40
40
  {
41
41
  "path": "harness-archive/SKILL.md",
42
- "sha256": "ab423201ea2016a02de136381395628885562d9c28deb83897d4fe4b61ca8941"
42
+ "sha256": "e67451281532cc9e469553cf099c8228ac071dfeee8b77d138f29dc30b4e11dd"
43
43
  },
44
44
  {
45
45
  "path": "harness-archive/templates/render-summary.mjs",
@@ -59,7 +59,7 @@
59
59
  },
60
60
  {
61
61
  "path": "harness-codebase-map/SKILL.md",
62
- "sha256": "25fdb18ca0255f01597b93f2e9ffbe4dcd3c78aabe3e26df4ba2c5dc04e99bb5"
62
+ "sha256": "f4ca574346918ecefd828f074e86aa85f5cb0a473c3f8fa92c82dc39f7b603a8"
63
63
  },
64
64
  {
65
65
  "path": "harness-codebase-map/templates/ARCHITECTURE.md",
@@ -111,23 +111,23 @@
111
111
  },
112
112
  {
113
113
  "path": "harness-knowledge-ingest/reference.md",
114
- "sha256": "d7230a0a382224a854c375e006e2ec93b1a8a33554d18efa3161b657373139a8"
114
+ "sha256": "28665f8be71787e0eb67cf3f2d6ec8511ca484a228cd914e36c4082e05bd5d38"
115
115
  },
116
116
  {
117
117
  "path": "harness-knowledge-ingest/scripts/harness_knowledge_mcp.py",
118
- "sha256": "7aa14a266b1e93dc7f5e65809d6a113153d8290c0c188420fb625ef101bbe49b"
118
+ "sha256": "5a6efd08a4a8f46f92d715051904bf118b4159d76199c318d8accb0122a2e20f"
119
119
  },
120
120
  {
121
121
  "path": "harness-knowledge-ingest/scripts/harness_knowledge.py",
122
- "sha256": "2e880e3f925413def3921262bc33e30c1efdc4b9f26d838447cdea51ceb6bda2"
122
+ "sha256": "cfd728bcacf91576d57aebd3ad38559067a569771058d4466f125222dccc1f4a"
123
123
  },
124
124
  {
125
125
  "path": "harness-knowledge-ingest/SKILL.md",
126
- "sha256": "cdd02075f2a656c4326e3e871866c834c9eb0ab6603d1d95d8d353709b5a66d4"
126
+ "sha256": "79c764561bc3eb1a62fb15dade5a9a60194be560118973dc0668a6aeeee875a9"
127
127
  },
128
128
  {
129
129
  "path": "harness-knowledge-query/SKILL.md",
130
- "sha256": "783526f861f1bae6bcee84e0f4e1a0db064cc4eb76e41ea0be60a30e124d0c38"
130
+ "sha256": "10dd0961530c48c9fe068ce32b4a190f1ad74522f28088394fa64c016fb2273e"
131
131
  },
132
132
  {
133
133
  "path": "harness-plan/checklist.md",
@@ -143,7 +143,7 @@
143
143
  },
144
144
  {
145
145
  "path": "harness-plan/SKILL.md",
146
- "sha256": "31b09610cd445819fc9bd68f4113450c287b8b0be3a239843453faf87c5f4f9f"
146
+ "sha256": "453ddf7e370938dc8b1f077b1881937a2b2b671e0a0f8524a188133cfef29708"
147
147
  },
148
148
  {
149
149
  "path": "harness-review/checklist.md",
@@ -159,7 +159,7 @@
159
159
  },
160
160
  {
161
161
  "path": "harness-review/SKILL.md",
162
- "sha256": "958e2fc25d43c7834265077670cf96b420dff8da12d9bb3ec92469ac5275b579"
162
+ "sha256": "e37f7bcab62e1dcd9c653cbb954374c273858f351619de2c402002f594a75754"
163
163
  },
164
164
  {
165
165
  "path": "harness-run/checklist.md",
@@ -175,7 +175,7 @@
175
175
  },
176
176
  {
177
177
  "path": "harness-run/SKILL.md",
178
- "sha256": "0a4722d318e8a6290729c62224838347a011304f7a27f960345ef232a4080bee"
178
+ "sha256": "2abebccdeecc0ea3f45d77dd56a37234ad1f1b9c82a25f990bb053155ceaaf01"
179
179
  },
180
180
  {
181
181
  "path": "harness-submit/checklist.md",
@@ -187,7 +187,7 @@
187
187
  },
188
188
  {
189
189
  "path": "harness-submit/SKILL.md",
190
- "sha256": "fdb2ba41012350bbe213fb9efc3f86cfea70954076f0a4620457c871e9e0795f"
190
+ "sha256": "dd9b83b5e26ddace7caf79b670d7b4963e10da5a8b066280f5c5b058d36d77fa"
191
191
  },
192
192
  {
193
193
  "path": "harness-sync/reference.md",
@@ -195,7 +195,7 @@
195
195
  },
196
196
  {
197
197
  "path": "harness-sync/SKILL.md",
198
- "sha256": "8d76a6e0e472fd0d604e3e89fae364e69ea46caed47bde6598ae6fee432f80c7"
198
+ "sha256": "52556224223824cf85d425c25b6b425ac6f68dc15845fb24d37e2e0c25bc45d4"
199
199
  },
200
200
  {
201
201
  "path": "harness-test/checklist.md",
@@ -211,7 +211,7 @@
211
211
  },
212
212
  {
213
213
  "path": "harness-test/SKILL.md",
214
- "sha256": "d19d852d86351e9efef1a3989b3243c658a4d47cff8969d137111a831f6061e6"
214
+ "sha256": "e55385e714b2e2ab6404c84ff1502390b271d37217b2504f84fb62e8b79a879e"
215
215
  },
216
216
  {
217
217
  "path": "protocols/archive-report-protocol.md",
@@ -2,12 +2,12 @@
2
2
  "schema_version": 2,
3
3
  "profile": "general",
4
4
  "adapter": "codebuddy",
5
- "bundle_version": "0.2.0",
5
+ "bundle_version": "0.2.1",
6
6
  "generator": "harness_deploy.py",
7
7
  "files": [
8
8
  {
9
9
  "path": ".harness-build.json",
10
- "sha256": "2a78a0a29d94bc6658b79c6d0d847077cbe028b5ce7b4a44333d8dba35f1af4e"
10
+ "sha256": "a1a615f6682097dde505dd9fac23a20ffba311b692afabe2531e3b85b9cfdf88"
11
11
  },
12
12
  {
13
13
  "path": "agents/harness-evaluator.md",
@@ -39,7 +39,7 @@
39
39
  },
40
40
  {
41
41
  "path": "harness-archive/SKILL.md",
42
- "sha256": "788465053ad3638bbff3161ef30f2b9ae4d3ff956be9daf578c52f6e30bb8e62"
42
+ "sha256": "1930820ccf8ba61bacf9216fc8222e947e325eeb074373c1a474e7a2528687c4"
43
43
  },
44
44
  {
45
45
  "path": "harness-archive/templates/render-summary.mjs",
@@ -59,7 +59,7 @@
59
59
  },
60
60
  {
61
61
  "path": "harness-codebase-map/SKILL.md",
62
- "sha256": "66edc24586bf7f491f2789517fb09514a850160b2f66a85237dd7368f0bdfae5"
62
+ "sha256": "c5e96c34348c3a127537e5178dacb103f318ae80dd66b793b277c3f6c00f7d32"
63
63
  },
64
64
  {
65
65
  "path": "harness-codebase-map/templates/ARCHITECTURE.md",
@@ -111,23 +111,23 @@
111
111
  },
112
112
  {
113
113
  "path": "harness-knowledge-ingest/reference.md",
114
- "sha256": "d7230a0a382224a854c375e006e2ec93b1a8a33554d18efa3161b657373139a8"
114
+ "sha256": "28665f8be71787e0eb67cf3f2d6ec8511ca484a228cd914e36c4082e05bd5d38"
115
115
  },
116
116
  {
117
117
  "path": "harness-knowledge-ingest/scripts/harness_knowledge_mcp.py",
118
- "sha256": "7aa14a266b1e93dc7f5e65809d6a113153d8290c0c188420fb625ef101bbe49b"
118
+ "sha256": "5a6efd08a4a8f46f92d715051904bf118b4159d76199c318d8accb0122a2e20f"
119
119
  },
120
120
  {
121
121
  "path": "harness-knowledge-ingest/scripts/harness_knowledge.py",
122
- "sha256": "2e880e3f925413def3921262bc33e30c1efdc4b9f26d838447cdea51ceb6bda2"
122
+ "sha256": "cfd728bcacf91576d57aebd3ad38559067a569771058d4466f125222dccc1f4a"
123
123
  },
124
124
  {
125
125
  "path": "harness-knowledge-ingest/SKILL.md",
126
- "sha256": "a8a8bfc5b08e6cbc45e527a851689c9f0a114e38b789f05b00bda5058784059e"
126
+ "sha256": "e35a58ac61d6f6c247594f3f2b9018bf0ffcf34392ff7a865ffdd4d795907cde"
127
127
  },
128
128
  {
129
129
  "path": "harness-knowledge-query/SKILL.md",
130
- "sha256": "1dab2d3622585a0f3b4b9a74d8ecf968ea28ae3ecba2af4fa0289b5ef3b1bb41"
130
+ "sha256": "8f04e1994bb85d85c16ee215111108252c8f93a62a01dcb8ed3ffce0ffb6d54a"
131
131
  },
132
132
  {
133
133
  "path": "harness-plan/checklist.md",
@@ -143,7 +143,7 @@
143
143
  },
144
144
  {
145
145
  "path": "harness-plan/SKILL.md",
146
- "sha256": "ec70578327ce8f15b9bb5b5151566b43839799241e169fe639e14976249ecff5"
146
+ "sha256": "cd8701b3735453d87f95cafa8a8c66e0c13876fa992ad600beda52e0f84946c2"
147
147
  },
148
148
  {
149
149
  "path": "harness-review/checklist.md",
@@ -159,7 +159,7 @@
159
159
  },
160
160
  {
161
161
  "path": "harness-review/SKILL.md",
162
- "sha256": "040abebf884a368d72fc408fe30187f9bb85363a4ca82af523b4268c81347289"
162
+ "sha256": "2b70da1b619490af0839af3b18b2d1cd46d203df4d27a8869a1ce1bf470800c9"
163
163
  },
164
164
  {
165
165
  "path": "harness-run/checklist.md",
@@ -175,7 +175,7 @@
175
175
  },
176
176
  {
177
177
  "path": "harness-run/SKILL.md",
178
- "sha256": "72ef546da755a1f81ef9aac48d79358f51d75b14c99170ffbaa1a432988cbfd8"
178
+ "sha256": "39a24d551486e0142c28736d73e0527638cabb14c49cdd214bdbeec1010b2646"
179
179
  },
180
180
  {
181
181
  "path": "harness-submit/checklist.md",
@@ -187,7 +187,7 @@
187
187
  },
188
188
  {
189
189
  "path": "harness-submit/SKILL.md",
190
- "sha256": "58da7f280bc9e80065136a49368838b7ed272b469f46cebe2d7e07dbe6978798"
190
+ "sha256": "6fe8b137299a41f00149bf874fc8930ae9b0ce6a1dc92824066747c44b88b655"
191
191
  },
192
192
  {
193
193
  "path": "harness-sync/reference.md",
@@ -195,7 +195,7 @@
195
195
  },
196
196
  {
197
197
  "path": "harness-sync/SKILL.md",
198
- "sha256": "2fef340c29356841a5c50e52a346db36d31316503168d29473a2b615de46c2ac"
198
+ "sha256": "d56ef25e221a927bf082639ca9bb1139e81397d8c9ce01bc103e0d9deacbdfe4"
199
199
  },
200
200
  {
201
201
  "path": "harness-test/checklist.md",
@@ -211,7 +211,7 @@
211
211
  },
212
212
  {
213
213
  "path": "harness-test/SKILL.md",
214
- "sha256": "40889e88d686af216a17d115e042eda548e233b257b2a88f88de40bdb74be395"
214
+ "sha256": "f394f002cc23cb12739ec726b3b59df7a987b48ee812db6b72c4943b9674cfd8"
215
215
  },
216
216
  {
217
217
  "path": "protocols/archive-report-protocol.md",
@@ -2,12 +2,12 @@
2
2
  "schema_version": 2,
3
3
  "profile": "general",
4
4
  "adapter": "codex",
5
- "bundle_version": "0.2.0",
5
+ "bundle_version": "0.2.1",
6
6
  "generator": "harness_deploy.py",
7
7
  "files": [
8
8
  {
9
9
  "path": ".harness-build.json",
10
- "sha256": "17afe319f8a2c55cbc4b8ba219c8525474fbfccfade5ab5d83a3eeeb9c561ac7"
10
+ "sha256": "88cca1ffc7d71278e086603862647ff980277320db67b5fd1dcffcbc9b9fc641"
11
11
  },
12
12
  {
13
13
  "path": "CONTEXT.md",
@@ -27,7 +27,7 @@
27
27
  },
28
28
  {
29
29
  "path": "harness-archive/SKILL.md",
30
- "sha256": "8de5f1e47ddae3bb4adb0c8e5ea77a041ee6f34617fc82658bee74341aa21266"
30
+ "sha256": "b1ed5cb029a64d86ea34e216cca6d4fefbc4fe0c8e418299a216d14e52c26f1c"
31
31
  },
32
32
  {
33
33
  "path": "harness-archive/templates/render-summary.mjs",
@@ -47,7 +47,7 @@
47
47
  },
48
48
  {
49
49
  "path": "harness-codebase-map/SKILL.md",
50
- "sha256": "90bf21ee49baef8fe3f846dea21128d432647f15feb8486bec2422d225aee668"
50
+ "sha256": "069d4e8c13a1d76a88f24f27665daa94bb8596e1ebe5308eb55cd0a675107e7d"
51
51
  },
52
52
  {
53
53
  "path": "harness-codebase-map/templates/ARCHITECTURE.md",
@@ -99,23 +99,23 @@
99
99
  },
100
100
  {
101
101
  "path": "harness-knowledge-ingest/reference.md",
102
- "sha256": "d7230a0a382224a854c375e006e2ec93b1a8a33554d18efa3161b657373139a8"
102
+ "sha256": "28665f8be71787e0eb67cf3f2d6ec8511ca484a228cd914e36c4082e05bd5d38"
103
103
  },
104
104
  {
105
105
  "path": "harness-knowledge-ingest/scripts/harness_knowledge_mcp.py",
106
- "sha256": "7aa14a266b1e93dc7f5e65809d6a113153d8290c0c188420fb625ef101bbe49b"
106
+ "sha256": "5a6efd08a4a8f46f92d715051904bf118b4159d76199c318d8accb0122a2e20f"
107
107
  },
108
108
  {
109
109
  "path": "harness-knowledge-ingest/scripts/harness_knowledge.py",
110
- "sha256": "2e880e3f925413def3921262bc33e30c1efdc4b9f26d838447cdea51ceb6bda2"
110
+ "sha256": "cfd728bcacf91576d57aebd3ad38559067a569771058d4466f125222dccc1f4a"
111
111
  },
112
112
  {
113
113
  "path": "harness-knowledge-ingest/SKILL.md",
114
- "sha256": "d229ce92db718d7962ad174ec6e7776c908c8ebb8e59193caa345d8c8a0fd8da"
114
+ "sha256": "de1d740afc648c7316ab37de81be19e9be2257e880abde5c82cb24292e0269ad"
115
115
  },
116
116
  {
117
117
  "path": "harness-knowledge-query/SKILL.md",
118
- "sha256": "84052f346676dccf8470382ac1e8723fe64b6d778fd504a0f36551e9bad21ec9"
118
+ "sha256": "c999d5ca9cd8cad09e004f53bcb8fd64ad35eeb22c1626851c2b52a4065d51a5"
119
119
  },
120
120
  {
121
121
  "path": "harness-plan/checklist.md",
@@ -131,7 +131,7 @@
131
131
  },
132
132
  {
133
133
  "path": "harness-plan/SKILL.md",
134
- "sha256": "e25ca06f00db4e1e1ab93951fcab804db36b7aa6779c870c79d5d4ae1bff63b6"
134
+ "sha256": "29c51ab15ca041d8446714f176768c3fbaafd919b09cd565e6827c3db7bc98f0"
135
135
  },
136
136
  {
137
137
  "path": "harness-review/checklist.md",
@@ -147,7 +147,7 @@
147
147
  },
148
148
  {
149
149
  "path": "harness-review/SKILL.md",
150
- "sha256": "6296eb9428f2b69cedb245cdfc1d5ddb0cdd94246d81993ee3c15efc430cef9a"
150
+ "sha256": "0908e4df79fef5753047ed565181f0a6e87617720c05a9b982362fcea72aa89e"
151
151
  },
152
152
  {
153
153
  "path": "harness-run/checklist.md",
@@ -163,7 +163,7 @@
163
163
  },
164
164
  {
165
165
  "path": "harness-run/SKILL.md",
166
- "sha256": "37f3f1c0bbf9839afe672edcefbd1b9547f7632d034b1e3a038b6e002b538688"
166
+ "sha256": "a7df737694bf3713c6926a048d9ca53975909724e81945040f538fcb27845dc1"
167
167
  },
168
168
  {
169
169
  "path": "harness-submit/checklist.md",
@@ -175,7 +175,7 @@
175
175
  },
176
176
  {
177
177
  "path": "harness-submit/SKILL.md",
178
- "sha256": "0aff298a8a9a6d7e15e970eb312f8a6ca2dc8e83043797d0f891820eabeafcbd"
178
+ "sha256": "768c92b16762e7ff54d53b9bc737c036f413760c5673e1f71ef5ebe1708cf908"
179
179
  },
180
180
  {
181
181
  "path": "harness-sync/reference.md",
@@ -183,7 +183,7 @@
183
183
  },
184
184
  {
185
185
  "path": "harness-sync/SKILL.md",
186
- "sha256": "110ed0ff15123234393afb73814e4adf17feb7a1f6a17afeaa055dd63d143f83"
186
+ "sha256": "8b901db7d57de35008b1c9854ec53f57c75ed9ffb9d8bd9b7d85e3cb5a978cdb"
187
187
  },
188
188
  {
189
189
  "path": "harness-test/checklist.md",
@@ -199,7 +199,7 @@
199
199
  },
200
200
  {
201
201
  "path": "harness-test/SKILL.md",
202
- "sha256": "9c3ae72188db70317ca47bace7d21e916e02810e03f744610b9183ad71870934"
202
+ "sha256": "699dcb8d881d6f8057101143bf58a188d5c542ede8555eea89a44d102920c71d"
203
203
  },
204
204
  {
205
205
  "path": "protocols/archive-report-protocol.md",