@hunter-harness/workflow-harness 0.2.67 → 0.2.69

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 (146) hide show
  1. package/harness/bundles/general/claude-code/.harness-build.json +1 -1
  2. package/harness/bundles/general/claude-code/contracts/workflow-policy.json +401 -88
  3. package/harness/bundles/general/claude-code/harness-archive/SKILL.md +1 -1
  4. package/harness/bundles/general/claude-code/harness-codebase-map/SKILL.md +1 -1
  5. package/harness/bundles/general/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  6. package/harness/bundles/general/claude-code/harness-knowledge-query/SKILL.md +1 -1
  7. package/harness/bundles/general/claude-code/harness-plan/SKILL.md +2 -2
  8. package/harness/bundles/general/claude-code/harness-plan/reference.md +1 -1
  9. package/harness/bundles/general/claude-code/harness-pull/SKILL.md +73 -0
  10. package/harness/bundles/general/claude-code/harness-push/SKILL.md +73 -0
  11. package/harness/bundles/general/claude-code/harness-review/SKILL.md +1 -1
  12. package/harness/bundles/general/claude-code/harness-run/SKILL.md +1 -1
  13. package/harness/bundles/general/claude-code/harness-submit/SKILL.md +1 -1
  14. package/harness/bundles/general/claude-code/harness-sync/SKILL.md +1 -1
  15. package/harness/bundles/general/claude-code/harness-test/SKILL.md +1 -1
  16. package/harness/bundles/general/claude-code/scripts/harness_plan_finalize.py +119 -0
  17. package/harness/bundles/general/codebuddy/.harness-build.json +1 -1
  18. package/harness/bundles/general/codebuddy/contracts/workflow-policy.json +401 -88
  19. package/harness/bundles/general/codebuddy/harness-archive/SKILL.md +1 -1
  20. package/harness/bundles/general/codebuddy/harness-codebase-map/SKILL.md +1 -1
  21. package/harness/bundles/general/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  22. package/harness/bundles/general/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  23. package/harness/bundles/general/codebuddy/harness-plan/SKILL.md +2 -2
  24. package/harness/bundles/general/codebuddy/harness-plan/reference.md +1 -1
  25. package/harness/bundles/general/codebuddy/harness-pull/SKILL.md +55 -0
  26. package/harness/bundles/general/codebuddy/harness-push/SKILL.md +55 -0
  27. package/harness/bundles/general/codebuddy/harness-review/SKILL.md +1 -1
  28. package/harness/bundles/general/codebuddy/harness-run/SKILL.md +1 -1
  29. package/harness/bundles/general/codebuddy/harness-submit/SKILL.md +1 -1
  30. package/harness/bundles/general/codebuddy/harness-sync/SKILL.md +1 -1
  31. package/harness/bundles/general/codebuddy/harness-test/SKILL.md +1 -1
  32. package/harness/bundles/general/codebuddy/scripts/harness_plan_finalize.py +119 -0
  33. package/harness/bundles/general/codex/.harness-build.json +1 -1
  34. package/harness/bundles/general/codex/contracts/workflow-policy.json +401 -88
  35. package/harness/bundles/general/codex/harness-archive/SKILL.md +1 -1
  36. package/harness/bundles/general/codex/harness-codebase-map/SKILL.md +1 -1
  37. package/harness/bundles/general/codex/harness-knowledge-ingest/SKILL.md +1 -1
  38. package/harness/bundles/general/codex/harness-knowledge-query/SKILL.md +1 -1
  39. package/harness/bundles/general/codex/harness-plan/SKILL.md +2 -2
  40. package/harness/bundles/general/codex/harness-plan/reference.md +1 -1
  41. package/harness/bundles/general/codex/harness-pull/SKILL.md +55 -0
  42. package/harness/bundles/general/codex/harness-push/SKILL.md +55 -0
  43. package/harness/bundles/general/codex/harness-review/SKILL.md +1 -1
  44. package/harness/bundles/general/codex/harness-run/SKILL.md +1 -1
  45. package/harness/bundles/general/codex/harness-submit/SKILL.md +1 -1
  46. package/harness/bundles/general/codex/harness-sync/SKILL.md +1 -1
  47. package/harness/bundles/general/codex/harness-test/SKILL.md +1 -1
  48. package/harness/bundles/general/codex/scripts/harness_plan_finalize.py +119 -0
  49. package/harness/bundles/general/cursor/.harness-build.json +1 -1
  50. package/harness/bundles/general/cursor/contracts/workflow-policy.json +401 -88
  51. package/harness/bundles/general/cursor/harness-archive/SKILL.md +1 -1
  52. package/harness/bundles/general/cursor/harness-codebase-map/SKILL.md +1 -1
  53. package/harness/bundles/general/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  54. package/harness/bundles/general/cursor/harness-knowledge-query/SKILL.md +1 -1
  55. package/harness/bundles/general/cursor/harness-plan/SKILL.md +2 -2
  56. package/harness/bundles/general/cursor/harness-plan/reference.md +1 -1
  57. package/harness/bundles/general/cursor/harness-pull/SKILL.md +55 -0
  58. package/harness/bundles/general/cursor/harness-push/SKILL.md +55 -0
  59. package/harness/bundles/general/cursor/harness-review/SKILL.md +1 -1
  60. package/harness/bundles/general/cursor/harness-run/SKILL.md +1 -1
  61. package/harness/bundles/general/cursor/harness-submit/SKILL.md +1 -1
  62. package/harness/bundles/general/cursor/harness-sync/SKILL.md +1 -1
  63. package/harness/bundles/general/cursor/harness-test/SKILL.md +1 -1
  64. package/harness/bundles/general/cursor/scripts/harness_plan_finalize.py +119 -0
  65. package/harness/bundles/java/claude-code/.harness-build.json +1 -1
  66. package/harness/bundles/java/claude-code/contracts/workflow-policy.json +401 -88
  67. package/harness/bundles/java/claude-code/harness-apidoc/SKILL.md +1 -1
  68. package/harness/bundles/java/claude-code/harness-archive/SKILL.md +1 -1
  69. package/harness/bundles/java/claude-code/harness-codebase-map/SKILL.md +1 -1
  70. package/harness/bundles/java/claude-code/harness-knowledge-ingest/SKILL.md +1 -1
  71. package/harness/bundles/java/claude-code/harness-knowledge-query/SKILL.md +1 -1
  72. package/harness/bundles/java/claude-code/harness-package/SKILL.md +1 -1
  73. package/harness/bundles/java/claude-code/harness-plan/SKILL.md +2 -2
  74. package/harness/bundles/java/claude-code/harness-plan/reference.md +1 -1
  75. package/harness/bundles/java/claude-code/harness-pull/SKILL.md +73 -0
  76. package/harness/bundles/java/claude-code/harness-push/SKILL.md +73 -0
  77. package/harness/bundles/java/claude-code/harness-review/SKILL.md +1 -1
  78. package/harness/bundles/java/claude-code/harness-run/SKILL.md +1 -1
  79. package/harness/bundles/java/claude-code/harness-submit/SKILL.md +1 -1
  80. package/harness/bundles/java/claude-code/harness-sync/SKILL.md +1 -1
  81. package/harness/bundles/java/claude-code/harness-test/SKILL.md +1 -1
  82. package/harness/bundles/java/claude-code/scripts/harness_plan_finalize.py +119 -0
  83. package/harness/bundles/java/codebuddy/.harness-build.json +1 -1
  84. package/harness/bundles/java/codebuddy/contracts/workflow-policy.json +401 -88
  85. package/harness/bundles/java/codebuddy/harness-apidoc/SKILL.md +1 -1
  86. package/harness/bundles/java/codebuddy/harness-archive/SKILL.md +1 -1
  87. package/harness/bundles/java/codebuddy/harness-codebase-map/SKILL.md +1 -1
  88. package/harness/bundles/java/codebuddy/harness-knowledge-ingest/SKILL.md +1 -1
  89. package/harness/bundles/java/codebuddy/harness-knowledge-query/SKILL.md +1 -1
  90. package/harness/bundles/java/codebuddy/harness-package/SKILL.md +1 -1
  91. package/harness/bundles/java/codebuddy/harness-plan/SKILL.md +2 -2
  92. package/harness/bundles/java/codebuddy/harness-plan/reference.md +1 -1
  93. package/harness/bundles/java/codebuddy/harness-pull/SKILL.md +55 -0
  94. package/harness/bundles/java/codebuddy/harness-push/SKILL.md +55 -0
  95. package/harness/bundles/java/codebuddy/harness-review/SKILL.md +1 -1
  96. package/harness/bundles/java/codebuddy/harness-run/SKILL.md +1 -1
  97. package/harness/bundles/java/codebuddy/harness-submit/SKILL.md +1 -1
  98. package/harness/bundles/java/codebuddy/harness-sync/SKILL.md +1 -1
  99. package/harness/bundles/java/codebuddy/harness-test/SKILL.md +1 -1
  100. package/harness/bundles/java/codebuddy/scripts/harness_plan_finalize.py +119 -0
  101. package/harness/bundles/java/codex/.harness-build.json +1 -1
  102. package/harness/bundles/java/codex/contracts/workflow-policy.json +401 -88
  103. package/harness/bundles/java/codex/harness-apidoc/SKILL.md +1 -1
  104. package/harness/bundles/java/codex/harness-archive/SKILL.md +1 -1
  105. package/harness/bundles/java/codex/harness-codebase-map/SKILL.md +1 -1
  106. package/harness/bundles/java/codex/harness-knowledge-ingest/SKILL.md +1 -1
  107. package/harness/bundles/java/codex/harness-knowledge-query/SKILL.md +1 -1
  108. package/harness/bundles/java/codex/harness-package/SKILL.md +1 -1
  109. package/harness/bundles/java/codex/harness-plan/SKILL.md +2 -2
  110. package/harness/bundles/java/codex/harness-plan/reference.md +1 -1
  111. package/harness/bundles/java/codex/harness-pull/SKILL.md +55 -0
  112. package/harness/bundles/java/codex/harness-push/SKILL.md +55 -0
  113. package/harness/bundles/java/codex/harness-review/SKILL.md +1 -1
  114. package/harness/bundles/java/codex/harness-run/SKILL.md +1 -1
  115. package/harness/bundles/java/codex/harness-submit/SKILL.md +1 -1
  116. package/harness/bundles/java/codex/harness-sync/SKILL.md +1 -1
  117. package/harness/bundles/java/codex/harness-test/SKILL.md +1 -1
  118. package/harness/bundles/java/codex/scripts/harness_plan_finalize.py +119 -0
  119. package/harness/bundles/java/cursor/.harness-build.json +1 -1
  120. package/harness/bundles/java/cursor/contracts/workflow-policy.json +401 -88
  121. package/harness/bundles/java/cursor/harness-apidoc/SKILL.md +1 -1
  122. package/harness/bundles/java/cursor/harness-archive/SKILL.md +1 -1
  123. package/harness/bundles/java/cursor/harness-codebase-map/SKILL.md +1 -1
  124. package/harness/bundles/java/cursor/harness-knowledge-ingest/SKILL.md +1 -1
  125. package/harness/bundles/java/cursor/harness-knowledge-query/SKILL.md +1 -1
  126. package/harness/bundles/java/cursor/harness-package/SKILL.md +1 -1
  127. package/harness/bundles/java/cursor/harness-plan/SKILL.md +2 -2
  128. package/harness/bundles/java/cursor/harness-plan/reference.md +1 -1
  129. package/harness/bundles/java/cursor/harness-pull/SKILL.md +55 -0
  130. package/harness/bundles/java/cursor/harness-push/SKILL.md +55 -0
  131. package/harness/bundles/java/cursor/harness-review/SKILL.md +1 -1
  132. package/harness/bundles/java/cursor/harness-run/SKILL.md +1 -1
  133. package/harness/bundles/java/cursor/harness-submit/SKILL.md +1 -1
  134. package/harness/bundles/java/cursor/harness-sync/SKILL.md +1 -1
  135. package/harness/bundles/java/cursor/harness-test/SKILL.md +1 -1
  136. package/harness/bundles/java/cursor/scripts/harness_plan_finalize.py +119 -0
  137. package/harness/manifests/general/claude-code.json +27 -17
  138. package/harness/manifests/general/codebuddy.json +27 -17
  139. package/harness/manifests/general/codex.json +27 -17
  140. package/harness/manifests/general/cursor.json +27 -17
  141. package/harness/manifests/java/claude-code.json +29 -19
  142. package/harness/manifests/java/codebuddy.json +29 -19
  143. package/harness/manifests/java/codex.json +29 -19
  144. package/harness/manifests/java/cursor.json +29 -19
  145. package/hunter-workflow-family.json +11 -7
  146. package/package.json +1 -1
@@ -8,7 +8,10 @@
8
8
  "processTreeCleanup": true,
9
9
  "detachedProcessPreflight": true,
10
10
  "confirmationFlag": "--confirm-resource-intensive",
11
- "confirmationRequiredProfiles": ["system", "full"],
11
+ "confirmationRequiredProfiles": [
12
+ "system",
13
+ "full"
14
+ ],
12
15
  "resourceIntensiveModules": [
13
16
  "test_harness_integration.py",
14
17
  "test_harness_service.py"
@@ -34,140 +37,392 @@
34
37
  "riskTiers": {
35
38
  "fast": {
36
39
  "description": "Low-risk docs/comments/non-behavioral config; no API/DB/security/concurrency. Policy notes: checkpointRules apply only when meta/implementation-checkpoints.json defines the entry for this change; missing file/entry = disabled (gate must not require --task).",
37
- "defaultPhases": ["plan", "run", "archive"],
38
- "requiredValidations": ["unitTest"],
39
- "conditionalStages": ["review", "package", "apidoc"],
40
- "upgradeTriggers": ["api-change", "security", "migration", "concurrency", "breaking-contract"]
40
+ "defaultPhases": [
41
+ "plan",
42
+ "run",
43
+ "archive"
44
+ ],
45
+ "requiredValidations": [
46
+ "unitTest"
47
+ ],
48
+ "conditionalStages": [
49
+ "review",
50
+ "package",
51
+ "apidoc"
52
+ ],
53
+ "upgradeTriggers": [
54
+ "api-change",
55
+ "security",
56
+ "migration",
57
+ "concurrency",
58
+ "breaking-contract"
59
+ ]
41
60
  },
42
61
  "standard": {
43
62
  "description": "Ordinary production code and non-breaking API/features. Policy notes: requiredValidations may close DEGRADED when ledger status=NOT_RUN and evidence starts with 'DEGRADED: <reason>' (close code CLOSED_DEGRADED, phase status <= WARN); do not fake OK with unrelated tests.",
44
- "defaultPhases": ["plan", "run", "test", "submit", "archive"],
45
- "requiredValidations": ["compile", "unitTest", "unitTestFull"],
46
- "conditionalStages": ["review", "package", "apidoc"],
47
- "upgradeTriggers": ["auth", "security", "delete", "migration", "concurrency", "artifact-protocol", "shared-state", "breaking-api"]
63
+ "defaultPhases": [
64
+ "plan",
65
+ "run",
66
+ "test",
67
+ "submit",
68
+ "archive"
69
+ ],
70
+ "requiredValidations": [
71
+ "compile",
72
+ "unitTest",
73
+ "unitTestFull"
74
+ ],
75
+ "conditionalStages": [
76
+ "review",
77
+ "package",
78
+ "apidoc"
79
+ ],
80
+ "upgradeTriggers": [
81
+ "auth",
82
+ "security",
83
+ "delete",
84
+ "migration",
85
+ "concurrency",
86
+ "artifact-protocol",
87
+ "shared-state",
88
+ "breaking-api"
89
+ ]
48
90
  },
49
91
  "full": {
50
92
  "description": "Auth/security/delete/migration/concurrency/service protocol/shared state/breaking contracts. Policy notes: (1) DEGRADED close — ledger status=NOT_RUN and evidence 'DEGRADED: <reason>' → CLOSED_DEGRADED with phase <= WARN; never fake OK with unrelated tests. (2) checkpointRules — only when plan created meta/implementation-checkpoints.json entry; missing file/entry = not enabled, gate must not require --task.",
51
- "defaultPhases": ["plan", "run", "test", "review", "submit", "archive"],
52
- "requiredValidations": ["compile", "unitTest", "unitTestFull", "apiTest"],
53
- "conditionalStages": ["package", "apidoc"],
93
+ "defaultPhases": [
94
+ "plan",
95
+ "run",
96
+ "test",
97
+ "review",
98
+ "submit",
99
+ "archive"
100
+ ],
101
+ "requiredValidations": [
102
+ "compile",
103
+ "unitTest",
104
+ "unitTestFull",
105
+ "apiTest"
106
+ ],
107
+ "conditionalStages": [
108
+ "package",
109
+ "apidoc"
110
+ ],
54
111
  "upgradeTriggers": []
55
112
  }
56
113
  },
57
114
  "skills": {
58
115
  "harness-plan": {
59
116
  "phase": "plan",
60
- "inputs": ["requirements", "change-context"],
61
- "artifacts": ["plans", "spec", "test-scenarios", "implementation-detail"],
62
- "events": ["phase.start", "phase.end", "decision"],
117
+ "inputs": [
118
+ "requirements",
119
+ "change-context"
120
+ ],
121
+ "artifacts": [
122
+ "plans",
123
+ "spec",
124
+ "test-scenarios",
125
+ "implementation-detail"
126
+ ],
127
+ "events": [
128
+ "phase.start",
129
+ "phase.end",
130
+ "decision"
131
+ ],
63
132
  "allowedInteractions": [],
64
- "capabilities": ["risk-classify-plan"]
133
+ "capabilities": [
134
+ "risk-classify-plan"
135
+ ]
65
136
  },
66
137
  "harness-run": {
67
138
  "phase": "run",
68
- "inputs": ["implementation-detail", "state-snapshot"],
69
- "artifacts": ["code", "verification-ledger"],
70
- "events": ["phase.start", "phase.end", "command", "verification"],
139
+ "inputs": [
140
+ "implementation-detail",
141
+ "state-snapshot"
142
+ ],
143
+ "artifacts": [
144
+ "code",
145
+ "verification-ledger"
146
+ ],
147
+ "events": [
148
+ "phase.start",
149
+ "phase.end",
150
+ "command",
151
+ "verification"
152
+ ],
71
153
  "allowedInteractions": [],
72
- "capabilities": ["gate-begin", "gate-close", "ledger-record"]
154
+ "capabilities": [
155
+ "gate-begin",
156
+ "gate-close",
157
+ "ledger-record"
158
+ ]
73
159
  },
74
160
  "harness-test": {
75
161
  "phase": "test",
76
- "inputs": ["test-scenarios", "verification-ledger"],
77
- "artifacts": ["test-reports", "verification-ledger"],
78
- "events": ["phase.start", "phase.end", "command", "verification"],
79
- "allowedInteractions": ["resource-intensive-test-confirmation"],
80
- "capabilities": ["gate-begin", "gate-close", "test-guard", "ledger-record", "resource-safe-test-runner"]
162
+ "inputs": [
163
+ "test-scenarios",
164
+ "verification-ledger"
165
+ ],
166
+ "artifacts": [
167
+ "test-reports",
168
+ "verification-ledger"
169
+ ],
170
+ "events": [
171
+ "phase.start",
172
+ "phase.end",
173
+ "command",
174
+ "verification"
175
+ ],
176
+ "allowedInteractions": [
177
+ "resource-intensive-test-confirmation"
178
+ ],
179
+ "capabilities": [
180
+ "gate-begin",
181
+ "gate-close",
182
+ "test-guard",
183
+ "ledger-record",
184
+ "resource-safe-test-runner"
185
+ ]
81
186
  },
82
187
  "harness-review": {
83
188
  "phase": "review",
84
- "inputs": ["diff", "verification-ledger", "test-reports"],
85
- "artifacts": ["review-report"],
86
- "events": ["phase.start", "phase.end", "issue", "artifact"],
189
+ "inputs": [
190
+ "diff",
191
+ "verification-ledger",
192
+ "test-reports"
193
+ ],
194
+ "artifacts": [
195
+ "review-report"
196
+ ],
197
+ "events": [
198
+ "phase.start",
199
+ "phase.end",
200
+ "issue",
201
+ "artifact"
202
+ ],
87
203
  "allowedInteractions": [],
88
- "capabilities": ["gate-begin", "gate-close"]
204
+ "capabilities": [
205
+ "gate-begin",
206
+ "gate-close"
207
+ ]
89
208
  },
90
209
  "harness-submit": {
91
210
  "phase": "submit",
92
- "inputs": ["verification-ledger", "test-tracking"],
93
- "artifacts": ["git-integration"],
94
- "events": ["phase.start", "phase.end", "command", "artifact"],
95
- "allowedInteractions": ["merge-conflict-resolution"],
96
- "capabilities": ["gate-begin", "gate-close", "integration-lock", "test-guard-stage"]
211
+ "inputs": [
212
+ "verification-ledger",
213
+ "test-tracking"
214
+ ],
215
+ "artifacts": [
216
+ "git-integration"
217
+ ],
218
+ "events": [
219
+ "phase.start",
220
+ "phase.end",
221
+ "command",
222
+ "artifact"
223
+ ],
224
+ "allowedInteractions": [
225
+ "merge-conflict-resolution"
226
+ ],
227
+ "capabilities": [
228
+ "gate-begin",
229
+ "gate-close",
230
+ "integration-lock",
231
+ "test-guard-stage"
232
+ ]
97
233
  },
98
234
  "harness-package": {
99
- "profiles": ["java"],
235
+ "profiles": [
236
+ "java"
237
+ ],
100
238
  "phase": "package",
101
- "inputs": ["verification-ledger", "final-commit"],
102
- "artifacts": ["deploy-artifact"],
103
- "events": ["phase.start", "phase.end", "command", "verification"],
239
+ "inputs": [
240
+ "verification-ledger",
241
+ "final-commit"
242
+ ],
243
+ "artifacts": [
244
+ "deploy-artifact"
245
+ ],
246
+ "events": [
247
+ "phase.start",
248
+ "phase.end",
249
+ "command",
250
+ "verification"
251
+ ],
104
252
  "allowedInteractions": [],
105
- "capabilities": ["gate-begin", "gate-close", "ledger-can-reuse"]
253
+ "capabilities": [
254
+ "gate-begin",
255
+ "gate-close",
256
+ "ledger-can-reuse"
257
+ ]
106
258
  },
107
259
  "harness-archive": {
108
260
  "phase": "archive",
109
- "inputs": ["events", "verification-ledger", "reports"],
110
- "artifacts": ["summary-data", "archive-manifest"],
111
- "events": ["phase.start", "phase.end", "artifact"],
261
+ "inputs": [
262
+ "events",
263
+ "verification-ledger",
264
+ "reports"
265
+ ],
266
+ "artifacts": [
267
+ "summary-data",
268
+ "archive-manifest"
269
+ ],
270
+ "events": [
271
+ "phase.start",
272
+ "phase.end",
273
+ "artifact"
274
+ ],
112
275
  "allowedInteractions": [],
113
276
  "capabilities": []
114
277
  },
115
278
  "harness-sync": {
116
279
  "phase": "sync",
117
- "inputs": ["canonical-harness"],
118
- "artifacts": ["bundle-projection"],
119
- "events": ["phase.start", "phase.end", "command"],
280
+ "inputs": [
281
+ "canonical-harness"
282
+ ],
283
+ "artifacts": [
284
+ "bundle-projection"
285
+ ],
286
+ "events": [
287
+ "phase.start",
288
+ "phase.end",
289
+ "command"
290
+ ],
120
291
  "allowedInteractions": [],
121
292
  "capabilities": []
122
293
  },
123
294
  "harness-codebase-map": {
124
295
  "phase": "codebase-map",
125
- "inputs": ["project-root"],
126
- "artifacts": ["codebase-map"],
127
- "events": ["phase.start", "phase.end"],
296
+ "inputs": [
297
+ "project-root"
298
+ ],
299
+ "artifacts": [
300
+ "codebase-map"
301
+ ],
302
+ "events": [
303
+ "phase.start",
304
+ "phase.end"
305
+ ],
128
306
  "allowedInteractions": [],
129
307
  "capabilities": []
130
308
  },
131
309
  "harness-knowledge-query": {
132
310
  "phase": "knowledge-query",
133
- "inputs": ["knowledge-index"],
311
+ "inputs": [
312
+ "knowledge-index"
313
+ ],
134
314
  "artifacts": [],
135
- "events": ["phase.start", "phase.end"],
315
+ "events": [
316
+ "phase.start",
317
+ "phase.end"
318
+ ],
136
319
  "allowedInteractions": [],
137
- "capabilities": ["read-only"]
320
+ "capabilities": [
321
+ "read-only"
322
+ ]
138
323
  },
139
324
  "harness-knowledge-ingest": {
140
325
  "phase": "knowledge-ingest",
141
- "inputs": ["archive-evidence"],
142
- "artifacts": ["knowledge-index"],
143
- "events": ["phase.start", "phase.end", "command"],
326
+ "inputs": [
327
+ "archive-evidence"
328
+ ],
329
+ "artifacts": [
330
+ "knowledge-index"
331
+ ],
332
+ "events": [
333
+ "phase.start",
334
+ "phase.end",
335
+ "command"
336
+ ],
144
337
  "allowedInteractions": [],
145
338
  "capabilities": []
146
339
  },
147
340
  "harness-apidoc": {
148
- "profiles": ["java"],
341
+ "profiles": [
342
+ "java"
343
+ ],
149
344
  "phase": "apidoc",
150
- "inputs": ["api-diff"],
151
- "artifacts": ["api-contract-summary"],
152
- "events": ["phase.start", "phase.end", "artifact"],
345
+ "inputs": [
346
+ "api-diff"
347
+ ],
348
+ "artifacts": [
349
+ "api-contract-summary"
350
+ ],
351
+ "events": [
352
+ "phase.start",
353
+ "phase.end",
354
+ "artifact"
355
+ ],
153
356
  "allowedInteractions": [],
154
- "capabilities": ["gate-begin", "gate-close"]
357
+ "capabilities": [
358
+ "gate-begin",
359
+ "gate-close"
360
+ ]
361
+ },
362
+ "harness-push": {
363
+ "phase": "sync",
364
+ "inputs": [
365
+ "remote-baseline",
366
+ "local-content"
367
+ ],
368
+ "artifacts": [
369
+ "push-receipt"
370
+ ],
371
+ "events": [],
372
+ "allowedInteractions": [
373
+ "upload-confirmation"
374
+ ],
375
+ "capabilities": [
376
+ "remote-sync-push@1"
377
+ ]
378
+ },
379
+ "harness-pull": {
380
+ "phase": "sync",
381
+ "inputs": [
382
+ "remote-snapshot"
383
+ ],
384
+ "artifacts": [
385
+ "pull-receipt"
386
+ ],
387
+ "events": [],
388
+ "allowedInteractions": [
389
+ "conflict-decision"
390
+ ],
391
+ "capabilities": [
392
+ "remote-sync-pull@1"
393
+ ]
155
394
  }
156
395
  },
157
396
  "requiredArtifacts": {
158
- "plan": ["plans", "spec"],
397
+ "plan": [
398
+ "plans",
399
+ "spec"
400
+ ],
159
401
  "run": [],
160
- "test": ["tests/test-report-*.md"],
161
- "review": ["reports/review/review-report-*.md"],
402
+ "test": [
403
+ "tests/test-report-*.md"
404
+ ],
405
+ "review": [
406
+ "reports/review/review-report-*.md"
407
+ ],
162
408
  "submit": [],
163
409
  "package": [],
164
- "archive": ["reports/final/summary-data.json"]
410
+ "archive": [
411
+ "reports/final/summary-data.json"
412
+ ]
165
413
  },
166
414
  "requiredValidations": {
167
- "run": ["compile", "unitTest"],
168
- "test": ["unitTestFull"],
415
+ "run": [
416
+ "compile",
417
+ "unitTest"
418
+ ],
419
+ "test": [
420
+ "unitTestFull"
421
+ ],
169
422
  "submit": [],
170
- "package": ["package"]
423
+ "package": [
424
+ "package"
425
+ ]
171
426
  },
172
427
  "validationPhases": {
173
428
  "compile": "run",
@@ -180,50 +435,108 @@
180
435
  },
181
436
  "capabilityGates": {
182
437
  "deployment": {
183
- "signals": ["deploy-required"],
184
- "requiredStages": ["package"],
185
- "requiredValidations": ["package"]
438
+ "signals": [
439
+ "deploy-required"
440
+ ],
441
+ "requiredStages": [
442
+ "package"
443
+ ],
444
+ "requiredValidations": [
445
+ "package"
446
+ ]
186
447
  },
187
448
  "container": {
188
- "signals": ["install-verification"],
189
- "requiredStages": ["package"],
190
- "requiredValidations": ["package"]
449
+ "signals": [
450
+ "install-verification"
451
+ ],
452
+ "requiredStages": [
453
+ "package"
454
+ ],
455
+ "requiredValidations": [
456
+ "package"
457
+ ]
191
458
  },
192
459
  "api": {
193
- "signals": ["api-diff-present"],
194
- "requiredStages": ["apidoc"],
195
- "requiredValidations": ["apiTest"]
460
+ "signals": [
461
+ "api-diff-present"
462
+ ],
463
+ "requiredStages": [
464
+ "apidoc"
465
+ ],
466
+ "requiredValidations": [
467
+ "apiTest"
468
+ ]
196
469
  },
197
470
  "database": {
198
- "signals": ["migration"],
471
+ "signals": [
472
+ "migration"
473
+ ],
199
474
  "requiredStages": [],
200
- "requiredValidations": ["dbCompatibility"]
475
+ "requiredValidations": [
476
+ "dbCompatibility"
477
+ ]
201
478
  }
202
479
  },
203
480
  "conditionalStages": {
204
481
  "review": {
205
- "tiers": ["standard", "full"],
206
- "signals": ["security", "auth", "breaking-api", "shared-state"]
482
+ "tiers": [
483
+ "standard",
484
+ "full"
485
+ ],
486
+ "signals": [
487
+ "security",
488
+ "auth",
489
+ "breaking-api",
490
+ "shared-state"
491
+ ]
207
492
  },
208
493
  "package": {
209
- "tiers": ["standard", "full"],
210
- "signals": ["deploy-required", "install-verification"]
494
+ "tiers": [
495
+ "standard",
496
+ "full"
497
+ ],
498
+ "signals": [
499
+ "deploy-required",
500
+ "install-verification"
501
+ ]
211
502
  },
212
503
  "apidoc": {
213
- "tiers": ["standard", "full"],
214
- "signals": ["api-diff-present"]
504
+ "tiers": [
505
+ "standard",
506
+ "full"
507
+ ],
508
+ "signals": [
509
+ "api-diff-present"
510
+ ]
215
511
  }
216
512
  },
217
513
  "interactionWhitelist": {
218
514
  "global": [],
219
- "harness-test": ["resource-intensive-test-confirmation"],
220
- "harness-submit": ["merge-conflict-resolution"],
221
- "harness-plan": ["risk-confirmation"]
515
+ "harness-test": [
516
+ "resource-intensive-test-confirmation"
517
+ ],
518
+ "harness-submit": [
519
+ "merge-conflict-resolution"
520
+ ],
521
+ "harness-plan": [
522
+ "risk-confirmation"
523
+ ]
222
524
  },
223
525
  "checkpointRules": {
224
526
  "foundation-gate": {
225
- "afterTasks": [1, 2, 3, 4],
226
- "beforeTasks": [6, 7, 8, 9, 10],
527
+ "afterTasks": [
528
+ 1,
529
+ 2,
530
+ 3,
531
+ 4
532
+ ],
533
+ "beforeTasks": [
534
+ 6,
535
+ 7,
536
+ 8,
537
+ 9,
538
+ 10
539
+ ],
227
540
  "blocking": true,
228
541
  "requiredReport": "reports/review/foundation-gate-review.md",
229
542
  "reviewerTool": "codex"
@@ -3,7 +3,7 @@ name: harness-archive
3
3
  description: 归档所有变更产出(计划/测试报告/审查/SQL/API文档)到 .harness/archive/,含归档元数据。仅当用户显式调用
4
4
  /harness-archive 时使用;不得被其他阶段 skill 自动接续触发。
5
5
  ---
6
- <!-- generated by harness_deploy.py; core=45223df609c53354; overlay=none; agent=codex; do not edit -->
6
+ <!-- generated by harness_deploy.py; core=afd4467d2eb5fe62; overlay=none; agent=codex; do not edit -->
7
7
  # harness-archive — 变更归档
8
8
 
9
9
  ## Purpose
@@ -3,7 +3,7 @@ name: harness-codebase-map
3
3
  description: 分析现有代码库并生成 .harness/codebase/map/
4
4
  下的结构化代码库地图。用于陌生项目理解、重大改造前梳理、harness-sync 提示 map 过期后的人工刷新。
5
5
  ---
6
- <!-- generated by harness_deploy.py; core=45223df609c53354; overlay=none; agent=codex; do not edit -->
6
+ <!-- generated by harness_deploy.py; core=afd4467d2eb5fe62; overlay=none; agent=codex; do not edit -->
7
7
  # harness-codebase-map — 代码库地图
8
8
 
9
9
  ## Purpose
@@ -2,7 +2,7 @@
2
2
  name: harness-knowledge-ingest
3
3
  description: 确认归档 ZIP 已上传并由 Hunter Platform 在服务端解包、校验和入库。客户端不再构建或维护本地知识索引。
4
4
  ---
5
- <!-- generated by harness_deploy.py; core=45223df609c53354; overlay=none; agent=codex; do not edit -->
5
+ <!-- generated by harness_deploy.py; core=afd4467d2eb5fe62; overlay=none; agent=codex; do not edit -->
6
6
  # harness-knowledge-ingest
7
7
 
8
8
  知识 ingest 完全由 Hunter Platform 负责。归档完成时,客户端生成一个确定性 ZIP;
@@ -2,7 +2,7 @@
2
2
  name: harness-knowledge-query
3
3
  description: 在规划、实现或排查前,通过 hunter-harness CLI 查询远端项目知识库。远端不可用时直接报告不可用,不建立本地索引或离线回退。
4
4
  ---
5
- <!-- generated by harness_deploy.py; core=45223df609c53354; overlay=none; agent=codex; do not edit -->
5
+ <!-- generated by harness_deploy.py; core=afd4467d2eb5fe62; overlay=none; agent=codex; do not edit -->
6
6
  # harness-knowledge-query
7
7
 
8
8
  项目知识以 Hunter Platform 的服务端索引为唯一真源。客户端只提交查询并消费结果:
@@ -3,7 +3,7 @@ name: harness-plan
3
3
  description: 将需求转化为设计文档+实施计划+完整测试场景表,必须在编码前完成。仅当用户显式调用 /harness-plan 或明确要求进入
4
4
  Harness 规划阶段时使用;不得因用户描述需求就自动触发。
5
5
  ---
6
- <!-- generated by harness_deploy.py; core=45223df609c53354; overlay=none; agent=codex; do not edit -->
6
+ <!-- generated by harness_deploy.py; core=afd4467d2eb5fe62; overlay=none; agent=codex; do not edit -->
7
7
  # harness-plan — 需求规划
8
8
 
9
9
  ## Purpose
@@ -66,7 +66,7 @@ description: 将需求转化为设计文档+实施计划+完整测试场景表
66
66
  | 阶段 | 动作 |
67
67
  |------|------|
68
68
  | 0 | 用当前解释器运行 `harness_runtime.py doctor`,后续消费绝对 argv;git status;脏工作区 → baseline 隔离 + `decision`,不询问 |
69
- | 0.5 | 确定英文 `change-name` 后,根据需求生成一次简洁的中文展示标题(建议 6~24 个可见字符,保留必要产品名),执行 `harness_context.py prepare --phase plan --executor <tool> [--change <id>] --title "<中文标题>" --json`;英文名继续作为目录与稳定标识。立即运行一次 `harness_state.py capture --project . --change-dir "<executionRoot>" --json`,把此时 HEAD 固定为不可变 `changeBase`。以其唯一 change/executionRoot 初始化 plan-run-id 与 attempt(首次为 1),用同一身份追加 `phase.start`;从第一条知识查询起保留事件证据,并在 finalizer 中复用该身份 |
69
+ | 0.5 | 确定英文 `change-name` 后,根据需求生成一次简洁的中文展示标题(建议 6~24 个可见字符,保留必要产品名),执行 `harness_context.py prepare --phase plan --executor <tool> [--change <id>] --title "<中文标题>" --json`;英文名继续作为目录与稳定标识。立即运行一次 `harness_state.py capture --project . --change-dir "<executionRoot>" --json`,把此时 HEAD 固定为不可变 `changeBase`。以其唯一 change/executionRoot 初始化 plan-run-id 与 attempt(首次为 1);run-id 必须小写字母开头(v2 identity 规则,裸 UUID 有 10/16 概率数字开头被拒)——统一用 `plan_<uuid>` 形状(contracts `createPlanRunId()`),用同一身份追加 `phase.start`;从第一条知识查询起保留事件证据,并在 finalizer 中复用该身份 |
70
70
  | 0.6 | 使用 `classify` 返回的默认阶段和项目能力生成 `plannedPhases`,向用户用中文说明可选阶段;确认后运行 `harness_context.py configure-plan --project . --change <id> --phases "plan,run,...,archive" --operator <tool> --reason "<中文原因>" --json`。无 Git 或不需要提交时不得加入 `submit`;快速迭代默认 `plan,run,archive`。省略项由脚本写入 `skippedPhases`,不得伪造阶段事件 |
71
71
  | 1 | 直接执行一次 `npx hunter-harness knowledge query "<用户需求原文>" --limit 10 --json`。这是唯一执行入口,不扫描技能目录、不查找其他脚本;失败记 `issue` 并继续,不建立本地索引或离线回退 |
72
72
  | 2 | 歧义优先检查 + 复杂度分级;先确认会改变实现方向的语义歧义 |
@@ -299,7 +299,7 @@ status: approved
299
299
 
300
300
  > 如果 frontmatter 缺失,后续 run/test/review/submit/archive 不得依赖模型猜测 change-name。
301
301
 
302
- 4. **初始化结构化事件**:确定 change-name 后,立即生成稳定的 `<plan-run-id>`(同一次 plan 尝试内不得改变;首次 `<attempt>` 为 `1`),运行 `harness_events.py append --change-dir ... --phase plan --type phase.start --run-id <plan-run-id> --attempt <attempt>`。finalizer 必须复用完全相同的 `--run-id` / `--attempt`,否则 verify 会按生命周期身份 fail-closed。脚本负责建立父目录和 `events.ndjson`;执行日志在 `phase.end` 时由完整事件流渲染,任何阶段都不得直接用 Write/Edit 维护该投影。
302
+ 4. **初始化结构化事件**:确定 change-name 后,立即生成稳定的 `<plan-run-id>`(必须小写字母开头:v2 identity 规则,裸 UUID 有 10/16 概率数字开头被拒——统一用 `plan_<uuid>` 形状,contracts `createPlanRunId()`;同一次 plan 尝试内不得改变;首次 `<attempt>` 为 `1`),运行 `harness_events.py append --change-dir ... --phase plan --type phase.start --run-id <plan-run-id> --attempt <attempt>`。finalizer 必须复用完全相同的 `--run-id` / `--attempt`,否则 verify 会按生命周期身份 fail-closed。脚本负责建立父目录和 `events.ndjson`;执行日志在 `phase.end` 时由完整事件流渲染,任何阶段都不得直接用 Write/Edit 维护该投影。
303
303
 
304
304
  5. **保存计划文件**:计划文件包含 YAML frontmatter(含 change-name),保存到:
305
305
  - `.harness/changes/<change-name>/plans/<change-name>-plan.md`(简洁任务表)