thehood 0.1.0-preview.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/CODE_OF_CONDUCT.md +21 -0
  2. package/CONTRIBUTING.md +58 -0
  3. package/LICENSE +21 -0
  4. package/PRIVACY.md +49 -0
  5. package/README.md +264 -0
  6. package/SECURITY.md +31 -0
  7. package/dist/bridges/chatgptWebBridge.d.ts +2 -0
  8. package/dist/bridges/chatgptWebBridge.js +981 -0
  9. package/dist/bridges/chatgptWebBridge.js.map +1 -0
  10. package/dist/cli/args.d.ts +9 -0
  11. package/dist/cli/args.js +82 -0
  12. package/dist/cli/args.js.map +1 -0
  13. package/dist/cli/format.d.ts +56 -0
  14. package/dist/cli/format.js +752 -0
  15. package/dist/cli/format.js.map +1 -0
  16. package/dist/cli/main.d.ts +2 -0
  17. package/dist/cli/main.js +996 -0
  18. package/dist/cli/main.js.map +1 -0
  19. package/dist/cli/mcpConfig.d.ts +36 -0
  20. package/dist/cli/mcpConfig.js +98 -0
  21. package/dist/cli/mcpConfig.js.map +1 -0
  22. package/dist/index.d.ts +37 -0
  23. package/dist/index.js +38 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/mcp/protocol.d.ts +44 -0
  26. package/dist/mcp/protocol.js +33 -0
  27. package/dist/mcp/protocol.js.map +1 -0
  28. package/dist/mcp/server.d.ts +1 -0
  29. package/dist/mcp/server.js +106 -0
  30. package/dist/mcp/server.js.map +1 -0
  31. package/dist/mcp/tools.d.ts +10 -0
  32. package/dist/mcp/tools.js +2200 -0
  33. package/dist/mcp/tools.js.map +1 -0
  34. package/dist/mcp/validation.d.ts +8 -0
  35. package/dist/mcp/validation.js +67 -0
  36. package/dist/mcp/validation.js.map +1 -0
  37. package/dist/providers/chatgptWeb.d.ts +2 -0
  38. package/dist/providers/chatgptWeb.js +26 -0
  39. package/dist/providers/chatgptWeb.js.map +1 -0
  40. package/dist/providers/claudeCode.d.ts +4 -0
  41. package/dist/providers/claudeCode.js +32 -0
  42. package/dist/providers/claudeCode.js.map +1 -0
  43. package/dist/providers/codexCli.d.ts +6 -0
  44. package/dist/providers/codexCli.js +25 -0
  45. package/dist/providers/codexCli.js.map +1 -0
  46. package/dist/providers/codexCliModels.d.ts +23 -0
  47. package/dist/providers/codexCliModels.js +147 -0
  48. package/dist/providers/codexCliModels.js.map +1 -0
  49. package/dist/providers/localCommand.d.ts +26 -0
  50. package/dist/providers/localCommand.js +614 -0
  51. package/dist/providers/localCommand.js.map +1 -0
  52. package/dist/providers/markdownPayload.d.ts +7 -0
  53. package/dist/providers/markdownPayload.js +29 -0
  54. package/dist/providers/markdownPayload.js.map +1 -0
  55. package/dist/providers/responseSchema.d.ts +3 -0
  56. package/dist/providers/responseSchema.js +187 -0
  57. package/dist/providers/responseSchema.js.map +1 -0
  58. package/dist/providers/router.d.ts +3 -0
  59. package/dist/providers/router.js +21 -0
  60. package/dist/providers/router.js.map +1 -0
  61. package/dist/providers/stub.d.ts +2 -0
  62. package/dist/providers/stub.js +177 -0
  63. package/dist/providers/stub.js.map +1 -0
  64. package/dist/providers/types.d.ts +37 -0
  65. package/dist/providers/types.js +2 -0
  66. package/dist/providers/types.js.map +1 -0
  67. package/dist/runtime/agentBoard.d.ts +79 -0
  68. package/dist/runtime/agentBoard.js +166 -0
  69. package/dist/runtime/agentBoard.js.map +1 -0
  70. package/dist/runtime/agentBoardArtifact.d.ts +9 -0
  71. package/dist/runtime/agentBoardArtifact.js +171 -0
  72. package/dist/runtime/agentBoardArtifact.js.map +1 -0
  73. package/dist/runtime/agentRunner.d.ts +17 -0
  74. package/dist/runtime/agentRunner.js +92 -0
  75. package/dist/runtime/agentRunner.js.map +1 -0
  76. package/dist/runtime/approvalInbox.d.ts +54 -0
  77. package/dist/runtime/approvalInbox.js +143 -0
  78. package/dist/runtime/approvalInbox.js.map +1 -0
  79. package/dist/runtime/approvalPolicy.d.ts +11 -0
  80. package/dist/runtime/approvalPolicy.js +58 -0
  81. package/dist/runtime/approvalPolicy.js.map +1 -0
  82. package/dist/runtime/artifacts.d.ts +23 -0
  83. package/dist/runtime/artifacts.js +48 -0
  84. package/dist/runtime/artifacts.js.map +1 -0
  85. package/dist/runtime/browserManager.d.ts +37 -0
  86. package/dist/runtime/browserManager.js +356 -0
  87. package/dist/runtime/browserManager.js.map +1 -0
  88. package/dist/runtime/canonicalMemory.d.ts +23 -0
  89. package/dist/runtime/canonicalMemory.js +134 -0
  90. package/dist/runtime/canonicalMemory.js.map +1 -0
  91. package/dist/runtime/chatGptPageReadiness.d.ts +16 -0
  92. package/dist/runtime/chatGptPageReadiness.js +74 -0
  93. package/dist/runtime/chatGptPageReadiness.js.map +1 -0
  94. package/dist/runtime/commandRunner.d.ts +18 -0
  95. package/dist/runtime/commandRunner.js +115 -0
  96. package/dist/runtime/commandRunner.js.map +1 -0
  97. package/dist/runtime/commandSafety.d.ts +7 -0
  98. package/dist/runtime/commandSafety.js +61 -0
  99. package/dist/runtime/commandSafety.js.map +1 -0
  100. package/dist/runtime/config.d.ts +10 -0
  101. package/dist/runtime/config.js +107 -0
  102. package/dist/runtime/config.js.map +1 -0
  103. package/dist/runtime/crewLanes.d.ts +2 -0
  104. package/dist/runtime/crewLanes.js +123 -0
  105. package/dist/runtime/crewLanes.js.map +1 -0
  106. package/dist/runtime/criticPolicy.d.ts +17 -0
  107. package/dist/runtime/criticPolicy.js +50 -0
  108. package/dist/runtime/criticPolicy.js.map +1 -0
  109. package/dist/runtime/defaults.d.ts +5 -0
  110. package/dist/runtime/defaults.js +100 -0
  111. package/dist/runtime/defaults.js.map +1 -0
  112. package/dist/runtime/directives.d.ts +3 -0
  113. package/dist/runtime/directives.js +218 -0
  114. package/dist/runtime/directives.js.map +1 -0
  115. package/dist/runtime/doctor.d.ts +36 -0
  116. package/dist/runtime/doctor.js +185 -0
  117. package/dist/runtime/doctor.js.map +1 -0
  118. package/dist/runtime/errors.d.ts +20 -0
  119. package/dist/runtime/errors.js +41 -0
  120. package/dist/runtime/errors.js.map +1 -0
  121. package/dist/runtime/externalTransfer.d.ts +20 -0
  122. package/dist/runtime/externalTransfer.js +156 -0
  123. package/dist/runtime/externalTransfer.js.map +1 -0
  124. package/dist/runtime/fanout.d.ts +64 -0
  125. package/dist/runtime/fanout.js +263 -0
  126. package/dist/runtime/fanout.js.map +1 -0
  127. package/dist/runtime/gitEvidence.d.ts +10 -0
  128. package/dist/runtime/gitEvidence.js +80 -0
  129. package/dist/runtime/gitEvidence.js.map +1 -0
  130. package/dist/runtime/handoffs.d.ts +32 -0
  131. package/dist/runtime/handoffs.js +100 -0
  132. package/dist/runtime/handoffs.js.map +1 -0
  133. package/dist/runtime/ids.d.ts +2 -0
  134. package/dist/runtime/ids.js +4 -0
  135. package/dist/runtime/ids.js.map +1 -0
  136. package/dist/runtime/localStateIgnore.d.ts +9 -0
  137. package/dist/runtime/localStateIgnore.js +98 -0
  138. package/dist/runtime/localStateIgnore.js.map +1 -0
  139. package/dist/runtime/loop.d.ts +14 -0
  140. package/dist/runtime/loop.js +1863 -0
  141. package/dist/runtime/loop.js.map +1 -0
  142. package/dist/runtime/loopRecommendation.d.ts +109 -0
  143. package/dist/runtime/loopRecommendation.js +566 -0
  144. package/dist/runtime/loopRecommendation.js.map +1 -0
  145. package/dist/runtime/loopResponsibilities.d.ts +2 -0
  146. package/dist/runtime/loopResponsibilities.js +395 -0
  147. package/dist/runtime/loopResponsibilities.js.map +1 -0
  148. package/dist/runtime/loopRunner.d.ts +28 -0
  149. package/dist/runtime/loopRunner.js +81 -0
  150. package/dist/runtime/loopRunner.js.map +1 -0
  151. package/dist/runtime/operatorNextActions.d.ts +2 -0
  152. package/dist/runtime/operatorNextActions.js +344 -0
  153. package/dist/runtime/operatorNextActions.js.map +1 -0
  154. package/dist/runtime/paths.d.ts +9 -0
  155. package/dist/runtime/paths.js +14 -0
  156. package/dist/runtime/paths.js.map +1 -0
  157. package/dist/runtime/permissions.d.ts +9 -0
  158. package/dist/runtime/permissions.js +73 -0
  159. package/dist/runtime/permissions.js.map +1 -0
  160. package/dist/runtime/progressPacket.d.ts +12 -0
  161. package/dist/runtime/progressPacket.js +512 -0
  162. package/dist/runtime/progressPacket.js.map +1 -0
  163. package/dist/runtime/protectedPaths.d.ts +6 -0
  164. package/dist/runtime/protectedPaths.js +48 -0
  165. package/dist/runtime/protectedPaths.js.map +1 -0
  166. package/dist/runtime/providers.d.ts +13 -0
  167. package/dist/runtime/providers.js +60 -0
  168. package/dist/runtime/providers.js.map +1 -0
  169. package/dist/runtime/reconciliation.d.ts +17 -0
  170. package/dist/runtime/reconciliation.js +283 -0
  171. package/dist/runtime/reconciliation.js.map +1 -0
  172. package/dist/runtime/redaction.d.ts +1 -0
  173. package/dist/runtime/redaction.js +5 -0
  174. package/dist/runtime/redaction.js.map +1 -0
  175. package/dist/runtime/remoteRepoContext.d.ts +77 -0
  176. package/dist/runtime/remoteRepoContext.js +316 -0
  177. package/dist/runtime/remoteRepoContext.js.map +1 -0
  178. package/dist/runtime/repoContext.d.ts +50 -0
  179. package/dist/runtime/repoContext.js +399 -0
  180. package/dist/runtime/repoContext.js.map +1 -0
  181. package/dist/runtime/repoGateway.d.ts +64 -0
  182. package/dist/runtime/repoGateway.js +308 -0
  183. package/dist/runtime/repoGateway.js.map +1 -0
  184. package/dist/runtime/responseContracts.d.ts +3 -0
  185. package/dist/runtime/responseContracts.js +86 -0
  186. package/dist/runtime/responseContracts.js.map +1 -0
  187. package/dist/runtime/reviewLanes.d.ts +2 -0
  188. package/dist/runtime/reviewLanes.js +343 -0
  189. package/dist/runtime/reviewLanes.js.map +1 -0
  190. package/dist/runtime/reviewRouting.d.ts +51 -0
  191. package/dist/runtime/reviewRouting.js +152 -0
  192. package/dist/runtime/reviewRouting.js.map +1 -0
  193. package/dist/runtime/revisionPacket.d.ts +38 -0
  194. package/dist/runtime/revisionPacket.js +144 -0
  195. package/dist/runtime/revisionPacket.js.map +1 -0
  196. package/dist/runtime/revisionTrail.d.ts +2 -0
  197. package/dist/runtime/revisionTrail.js +162 -0
  198. package/dist/runtime/revisionTrail.js.map +1 -0
  199. package/dist/runtime/role-assignment.d.ts +4 -0
  200. package/dist/runtime/role-assignment.js +21 -0
  201. package/dist/runtime/role-assignment.js.map +1 -0
  202. package/dist/runtime/roleRoster.d.ts +28 -0
  203. package/dist/runtime/roleRoster.js +96 -0
  204. package/dist/runtime/roleRoster.js.map +1 -0
  205. package/dist/runtime/runInsights.d.ts +121 -0
  206. package/dist/runtime/runInsights.js +305 -0
  207. package/dist/runtime/runInsights.js.map +1 -0
  208. package/dist/runtime/runMonitor.d.ts +33 -0
  209. package/dist/runtime/runMonitor.js +143 -0
  210. package/dist/runtime/runMonitor.js.map +1 -0
  211. package/dist/runtime/runtime.d.ts +15 -0
  212. package/dist/runtime/runtime.js +199 -0
  213. package/dist/runtime/runtime.js.map +1 -0
  214. package/dist/runtime/runtimeInfo.d.ts +9 -0
  215. package/dist/runtime/runtimeInfo.js +76 -0
  216. package/dist/runtime/runtimeInfo.js.map +1 -0
  217. package/dist/runtime/store.d.ts +4 -0
  218. package/dist/runtime/store.js +48 -0
  219. package/dist/runtime/store.js.map +1 -0
  220. package/dist/runtime/summons.d.ts +25 -0
  221. package/dist/runtime/summons.js +403 -0
  222. package/dist/runtime/summons.js.map +1 -0
  223. package/dist/runtime/teamPresets.d.ts +14 -0
  224. package/dist/runtime/teamPresets.js +153 -0
  225. package/dist/runtime/teamPresets.js.map +1 -0
  226. package/dist/runtime/types.d.ts +505 -0
  227. package/dist/runtime/types.js +28 -0
  228. package/dist/runtime/types.js.map +1 -0
  229. package/dist/runtime/validationCommands.d.ts +18 -0
  230. package/dist/runtime/validationCommands.js +106 -0
  231. package/dist/runtime/validationCommands.js.map +1 -0
  232. package/dist/tui/dashboard.d.ts +41 -0
  233. package/dist/tui/dashboard.js +1115 -0
  234. package/dist/tui/dashboard.js.map +1 -0
  235. package/docs/ARCHITECTURE.md +277 -0
  236. package/docs/CLI_SPEC.md +396 -0
  237. package/docs/CODEX_SETUP.md +288 -0
  238. package/docs/COMPLETION_CONTRACT.md +52 -0
  239. package/docs/CONTRIBUTOR_GUIDE.md +70 -0
  240. package/docs/DEMO.md +62 -0
  241. package/docs/GLOSSARY.md +46 -0
  242. package/docs/GOAL_LOOP_SCHEDULE.md +50 -0
  243. package/docs/KNOWN_LIMITATIONS.md +29 -0
  244. package/docs/LICENSING.md +21 -0
  245. package/docs/LOOP_RECIPES.md +290 -0
  246. package/docs/LOOP_SELECTION_UX.md +118 -0
  247. package/docs/MCP_SPEC.md +689 -0
  248. package/docs/MEMORY_AND_RECONCILIATION.md +222 -0
  249. package/docs/NPM_PUBLISHING.md +51 -0
  250. package/docs/OPEN_DECISIONS.md +81 -0
  251. package/docs/PROMPT_SCHEMAS.md +411 -0
  252. package/docs/PROVIDER_ADAPTERS.md +323 -0
  253. package/docs/PROVIDER_MATRIX.md +21 -0
  254. package/docs/PUBLIC_REPO_READINESS.md +49 -0
  255. package/docs/RESEARCH_NOTES.md +92 -0
  256. package/docs/ROADMAP.md +94 -0
  257. package/docs/ROLE_CONTRACTS.md +252 -0
  258. package/docs/RUNTIME_LOOP.md +240 -0
  259. package/docs/SECURITY_AND_PRIVACY.md +161 -0
  260. package/docs/TESTING_AND_VERIFICATION.md +180 -0
  261. package/docs/TRUST_MODEL.md +65 -0
  262. package/docs/decisions/0001-runtime-first-cli-and-mcp.md +23 -0
  263. package/docs/decisions/0002-provider-neutral-role-mapping.md +43 -0
  264. package/docs/decisions/0003-separate-implementation-and-verification.md +27 -0
  265. package/docs/product/README.md +14 -0
  266. package/docs/product/model-selection.md +88 -0
  267. package/docs/product/positioning.md +37 -0
  268. package/docs/product/pro-usage-modes.md +70 -0
  269. package/docs/product/roadmap.md +57 -0
  270. package/docs/product/role-policy.md +89 -0
  271. package/docs/product/runtime-invariants.md +44 -0
  272. package/docs/release/v0.1.0-preview.0.md +48 -0
  273. package/examples/stub-demo/README.md +25 -0
  274. package/package.json +55 -0
@@ -0,0 +1,411 @@
1
+ # Prompt Schemas
2
+
3
+ TheHood prompts should be schema-bound. The goal is to make model outputs actionable and auditable rather than conversational.
4
+
5
+ This document defines the first prompt variables and output contracts. The current implementation builds executable directives in `src/runtime/directives.ts` and validates normalized provider responses in `src/runtime/responseContracts.ts`.
6
+
7
+ ## AgentResponse Envelope
8
+
9
+ Provider responses use JSON for the mechanical runtime contract, not for every human-facing detail.
10
+
11
+ Every provider returns:
12
+
13
+ ```yaml
14
+ agent_response:
15
+ status: ok | blocked | failed
16
+ summary: string
17
+ data:
18
+ <required_data_key>:
19
+ <required control fields>: string | number | boolean | object
20
+ markdown: string
21
+ thehoodDirectiveAck:
22
+ runId: string
23
+ nonce: string
24
+ responseField: thehoodDirectiveAck
25
+ ```
26
+
27
+ The runtime validates `status`, `summary`, the required role payload key, role control fields such as `action`, `status`, or `verdict`, and the current directive acknowledgement. Long plans, reports, reviews, critique, rationale, acceptance criteria, and next-step writeups should go in the optional `markdown` string inside the role payload.
28
+
29
+ Do not encode a long plan or report as deep nested JSON. Use GitHub-flavored Markdown lists, sections, and tables inside `markdown`, while keeping small runtime control fields outside that string.
30
+
31
+ ## Run Variables
32
+
33
+ ```yaml
34
+ run:
35
+ run_id: string
36
+ user_goal: string
37
+ mode: plan | implement | review | research
38
+ repo_path: string
39
+ current_state_summary: string
40
+ constraints:
41
+ - string
42
+ approval_policy:
43
+ edit_requires_approval: boolean
44
+ dependency_install_requires_approval: boolean
45
+ network_requires_approval: boolean
46
+ protected_test_paths:
47
+ - string
48
+ max_iterations: number
49
+ token_budget: number | null
50
+ time_budget_seconds: number | null
51
+ stop_conditions:
52
+ - string
53
+ success_criteria:
54
+ - string
55
+ output_contract: string
56
+ ```
57
+
58
+ ## Orchestrator Variables
59
+
60
+ ```yaml
61
+ orchestrator:
62
+ role: orchestrator
63
+ provider: string
64
+ model: string
65
+ available_worker_types:
66
+ - planner
67
+ - researcher
68
+ - implementer
69
+ - qa
70
+ - verifier
71
+ - critic
72
+ available_tools:
73
+ - read_state
74
+ - delegate
75
+ - request_approval
76
+ - request_verification
77
+ - request_critique
78
+ allowed_paths:
79
+ - string
80
+ disallowed_paths:
81
+ - string
82
+ risk_level: low | medium | high
83
+ delegation_rules:
84
+ - string
85
+ effort_scaling_rules:
86
+ - string
87
+ prior_findings:
88
+ - string
89
+ verifier_results:
90
+ - verdict: approve | revise | abort | ask_user
91
+ summary: string
92
+ open_questions:
93
+ - string
94
+ ```
95
+
96
+ ## Worker Variables
97
+
98
+ ```yaml
99
+ worker:
100
+ role: planner | researcher | implementer | qa | verifier | critic
101
+ objective: string
102
+ scope:
103
+ allowed_paths:
104
+ - string
105
+ disallowed_paths:
106
+ - string
107
+ protected_paths:
108
+ - string
109
+ relevant_files:
110
+ - path: string
111
+ reason: string
112
+ allowed_tools:
113
+ - string
114
+ disallowed_tools:
115
+ - string
116
+ expected_output_format: string
117
+ evidence_required:
118
+ - string
119
+ max_tool_calls: number
120
+ max_turns: number
121
+ done_definition:
122
+ - string
123
+ ```
124
+
125
+ ## Verifier Variables
126
+
127
+ ```yaml
128
+ verifier:
129
+ role: verifier
130
+ claimed_changes:
131
+ - string
132
+ acceptance_criteria:
133
+ - string
134
+ changed_files:
135
+ - string
136
+ diff_summary: string
137
+ raw_diff_ref: string
138
+ test_commands:
139
+ - command: string
140
+ cwd: string
141
+ expected_tool_trajectory:
142
+ - string
143
+ actual_logs:
144
+ - command: string
145
+ exit_code: number
146
+ stdout_ref: string
147
+ stderr_ref: string
148
+ failure_classification:
149
+ - test_failure
150
+ - lint_failure
151
+ - typecheck_failure
152
+ - build_failure
153
+ - schema_failure
154
+ - permission_denied
155
+ - provider_error
156
+ - unknown_failure
157
+ recommendation: approve | revise | abort | ask_user
158
+ ```
159
+
160
+ ## Memory Variables
161
+
162
+ ```yaml
163
+ memory:
164
+ canonical_refs:
165
+ - kind: run | plan | directive | response | diff | log | validation | verifier_verdict | final_report | reconciliation
166
+ ref: string
167
+ summary: string
168
+ repo_state:
169
+ git_head: string | null
170
+ dirty: boolean
171
+ changed_files:
172
+ - string
173
+ plan_state:
174
+ plan_ref: string | null
175
+ completed_items:
176
+ - string
177
+ open_items:
178
+ - string
179
+ superseded_by: string | null
180
+ retrieval_policy:
181
+ source_artifacts_are_authoritative: true
182
+ summaries_are_non_authoritative: true
183
+ ignore_provider_session_memory: true
184
+ ```
185
+
186
+ ## Reconciliation Variables
187
+
188
+ ```yaml
189
+ reconciliation:
190
+ role: orchestrator | planner
191
+ original_plan_ref: string
192
+ latest_plan_state_ref: string | null
193
+ progress_packet_ref: string
194
+ implementation_refs:
195
+ - string
196
+ validation_refs:
197
+ - string
198
+ verifier_refs:
199
+ - string
200
+ acceptance_criteria:
201
+ - string
202
+ open_questions:
203
+ - string
204
+ ```
205
+
206
+ ## Orchestrator Output
207
+
208
+ ```yaml
209
+ decision:
210
+ action: delegate | verify | critique | request_approval | revise_plan | complete | abort
211
+ reason: string
212
+ markdown: string | null
213
+ confidence: low | medium | high
214
+ next_role: planner | researcher | implementer | qa | verifier | critic | integrator | null
215
+ task:
216
+ objective: string
217
+ allowed_paths:
218
+ - string
219
+ disallowed_paths:
220
+ - string
221
+ acceptance_criteria:
222
+ - string
223
+ tool_permissions:
224
+ read: boolean
225
+ edit: boolean
226
+ shell: boolean
227
+ network: boolean
228
+ approval_request:
229
+ required: boolean
230
+ reason: string | null
231
+ options:
232
+ - approve
233
+ - reject
234
+ - revise
235
+ stop:
236
+ should_stop: boolean
237
+ reason: string | null
238
+ ```
239
+
240
+ ## Implementer Output
241
+
242
+ ```yaml
243
+ implementation_result:
244
+ status: changed | no_change | blocked | failed
245
+ markdown: string | null
246
+ changed_files:
247
+ - path: string
248
+ change_type: added | modified | deleted | renamed
249
+ summary: string
250
+ protected_file_changes:
251
+ - path: string
252
+ reason: string
253
+ commands_run:
254
+ - command: string
255
+ exit_code: number
256
+ summary: string
257
+ notes:
258
+ - string
259
+ unresolved_risks:
260
+ - string
261
+ ```
262
+
263
+ ## QA Tester Output
264
+
265
+ ```yaml
266
+ qa_result:
267
+ verdict: pass | needs_revision | needs_more_evidence | blocked
268
+ summary: string
269
+ markdown: string | null
270
+ suggested_commands:
271
+ - string
272
+ risks:
273
+ - string
274
+ thehoodDirectiveAck:
275
+ runId: string
276
+ nonce: string
277
+ responseField: thehoodDirectiveAck
278
+ ```
279
+
280
+ The QA tester output is advisory. It can recommend deterministic validation and identify missed cases, but it cannot satisfy the runtime QA/validation lane.
281
+
282
+ ## Verifier Output
283
+
284
+ ```yaml
285
+ verification_result:
286
+ verdict: approve | revise | abort | ask_user
287
+ summary: string
288
+ markdown: string | null
289
+ evidence:
290
+ - kind: diff | test_log | lint_log | typecheck_log | file_read | runtime_metadata
291
+ ref: string
292
+ finding: string
293
+ failed_criteria:
294
+ - string
295
+ risks:
296
+ - severity: low | medium | high
297
+ description: string
298
+ next_action:
299
+ role: orchestrator | implementer | user | none
300
+ instruction: string
301
+ ```
302
+
303
+ ## Critic Output
304
+
305
+ ```yaml
306
+ critique_result:
307
+ verdict: acceptable | needs_revision | unsafe | unclear
308
+ markdown: string | null
309
+ blocking_concerns:
310
+ - string
311
+ non_blocking_concerns:
312
+ - string
313
+ alternative_paths:
314
+ - string
315
+ recommended_next_action: string
316
+ ```
317
+
318
+ ## Critic Trigger Artifact
319
+
320
+ ```yaml
321
+ critic_trigger:
322
+ schemaVersion: 1
323
+ kind: critic_trigger
324
+ runId: string
325
+ called: true
326
+ reasonCode: qa_failed | qa_inconclusive | verifier_failed | verifier_inconclusive | validation_mismatch
327
+ reason: string
328
+ sourceRoles:
329
+ - qa | verifier
330
+ evidenceRefs:
331
+ - string
332
+ criticResponseRef: string
333
+ ```
334
+
335
+ This artifact is written by the runtime. Providers may inspect it as context, but they do not decide whether it exists.
336
+
337
+ ## Revision Packet Artifact
338
+
339
+ ```yaml
340
+ revision_packet:
341
+ schemaVersion: 1
342
+ kind: revision_packet
343
+ runId: string
344
+ createdAt: string
345
+ sourceRole: qa | verifier | critic
346
+ reasonCode: qa_needs_revision | verifier_revise | critic_needs_revision | critic_blocking_concerns
347
+ reason: string
348
+ repairObjective: string
349
+ acceptanceCriteria:
350
+ - string
351
+ evidenceRefs:
352
+ - string
353
+ sourceResponseRef: string
354
+ criticTriggerRef: string | null
355
+ ```
356
+
357
+ This artifact is written by the runtime before a repair pass. Implementers may use it as a narrow brief; reviewers do not gain edit authority, and post-repair QA/verifier evidence must be captured again.
358
+
359
+ ## Fan-Out Artifact
360
+
361
+ ```yaml
362
+ fanout:
363
+ schemaVersion: 1
364
+ kind: fanout
365
+ runId: string
366
+ createdAt: string
367
+ status: completed | blocked | failed
368
+ bounds:
369
+ requestedItems: number
370
+ maxItems: number
371
+ hardMaxItems: number
372
+ executedItems: number
373
+ execution: sequential
374
+ safety:
375
+ sidecarOnly: true
376
+ readOnlyRolesOnly: true
377
+ canSatisfyRequiredGates: false
378
+ instruction: string
379
+ items:
380
+ - index: number
381
+ role: orchestrator | planner | researcher | qa | verifier | critic
382
+ summonKind: string
383
+ status: completed | blocked | failed
384
+ responseArtifact:
385
+ ref: string
386
+ ```
387
+
388
+ This artifact is written by the runtime after a bounded group of same-run summons. It summarizes advisory evidence refs only; it does not satisfy required verifier, runtime QA, approval, or completion gates.
389
+
390
+ ## Reconciliation Output
391
+
392
+ ```yaml
393
+ reconciliation_result:
394
+ status: complete | partial | off_plan | blocked
395
+ markdown: string | null
396
+ completed_plan_items:
397
+ - string
398
+ satisfied_criteria:
399
+ - string
400
+ missing_plan_items:
401
+ - string
402
+ deviations:
403
+ - string
404
+ next_recommended_slice:
405
+ objective: string
406
+ rationale: string
407
+ acceptance_criteria:
408
+ - string
409
+ needs_user_decision: boolean
410
+ user_decision_reason: string | null
411
+ ```