devflow-engine 1.0.0__py3-none-any.whl

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 (393) hide show
  1. devflow_engine/__init__.py +3 -0
  2. devflow_engine/agentic_prompts.py +100 -0
  3. devflow_engine/agentic_runtime.py +398 -0
  4. devflow_engine/api_key_flow_harness.py +539 -0
  5. devflow_engine/api_keys.py +357 -0
  6. devflow_engine/bootstrap/__init__.py +2 -0
  7. devflow_engine/bootstrap/provision_from_template.py +84 -0
  8. devflow_engine/cli/__init__.py +0 -0
  9. devflow_engine/cli/app.py +7270 -0
  10. devflow_engine/core/__init__.py +0 -0
  11. devflow_engine/core/config.py +86 -0
  12. devflow_engine/core/logging.py +29 -0
  13. devflow_engine/core/paths.py +45 -0
  14. devflow_engine/core/toml_kv.py +33 -0
  15. devflow_engine/devflow_event_worker.py +1292 -0
  16. devflow_engine/devflow_state.py +201 -0
  17. devflow_engine/devin2/__init__.py +9 -0
  18. devflow_engine/devin2/agent_definition.py +120 -0
  19. devflow_engine/devin2/pi_runner.py +204 -0
  20. devflow_engine/devin_orchestration.py +69 -0
  21. devflow_engine/docs/prompts/anti-patterns.md +42 -0
  22. devflow_engine/docs/prompts/devin-agent-prompt.md +55 -0
  23. devflow_engine/docs/prompts/devin2-agent-prompt.md +81 -0
  24. devflow_engine/docs/prompts/examples/devin-vapi-clone-reference-exchange.json +85 -0
  25. devflow_engine/doctor/__init__.py +2 -0
  26. devflow_engine/doctor/triage.py +140 -0
  27. devflow_engine/error/__init__.py +0 -0
  28. devflow_engine/error/remediation.py +21 -0
  29. devflow_engine/errors/error_solver_dag.py +522 -0
  30. devflow_engine/errors/runtime_observability.py +67 -0
  31. devflow_engine/idea/__init__.py +4 -0
  32. devflow_engine/idea/actors.py +481 -0
  33. devflow_engine/idea/agentic.py +465 -0
  34. devflow_engine/idea/analyze.py +93 -0
  35. devflow_engine/idea/devin_chat_dag.py +1 -0
  36. devflow_engine/idea/diff.py +99 -0
  37. devflow_engine/idea/drafts.py +446 -0
  38. devflow_engine/idea/idea_creation_dag.py +643 -0
  39. devflow_engine/idea/ideation_enrichment.py +355 -0
  40. devflow_engine/idea/ideation_enrichment_worker.py +19 -0
  41. devflow_engine/idea/paths.py +28 -0
  42. devflow_engine/idea/promote.py +53 -0
  43. devflow_engine/idea/redaction.py +27 -0
  44. devflow_engine/idea/repo_tools.py +1277 -0
  45. devflow_engine/idea/response_mode.py +30 -0
  46. devflow_engine/idea/story_pipeline.py +1585 -0
  47. devflow_engine/idea/sufficiency.py +376 -0
  48. devflow_engine/idea/traditional_stories.py +1257 -0
  49. devflow_engine/implementation/__init__.py +0 -0
  50. devflow_engine/implementation/alembic_preflight.py +700 -0
  51. devflow_engine/implementation/dag.py +8450 -0
  52. devflow_engine/implementation/green_gate.py +93 -0
  53. devflow_engine/implementation/prompts.py +108 -0
  54. devflow_engine/implementation/test_runtime.py +623 -0
  55. devflow_engine/integration/__init__.py +19 -0
  56. devflow_engine/integration/agentic.py +66 -0
  57. devflow_engine/integration/dag.py +3539 -0
  58. devflow_engine/integration/prompts.py +114 -0
  59. devflow_engine/integration/supabase_schema.sql +31 -0
  60. devflow_engine/integration/supabase_sync.py +177 -0
  61. devflow_engine/llm/__init__.py +1 -0
  62. devflow_engine/llm/cli_one_shot.py +84 -0
  63. devflow_engine/llm/cli_stream.py +371 -0
  64. devflow_engine/llm/execution_context.py +26 -0
  65. devflow_engine/llm/invoke.py +1322 -0
  66. devflow_engine/llm/provider_api.py +304 -0
  67. devflow_engine/llm/repo_knowledge.py +588 -0
  68. devflow_engine/llm_primitives.py +315 -0
  69. devflow_engine/orchestration.py +62 -0
  70. devflow_engine/planning/__init__.py +0 -0
  71. devflow_engine/planning/analyze_repo.py +92 -0
  72. devflow_engine/planning/render_drafts.py +133 -0
  73. devflow_engine/playground/__init__.py +0 -0
  74. devflow_engine/playground/hooks.py +26 -0
  75. devflow_engine/playwright_workflow/__init__.py +5 -0
  76. devflow_engine/playwright_workflow/dag.py +1317 -0
  77. devflow_engine/process/__init__.py +5 -0
  78. devflow_engine/process/dag.py +59 -0
  79. devflow_engine/project_registration/__init__.py +3 -0
  80. devflow_engine/project_registration/dag.py +1581 -0
  81. devflow_engine/project_registry.py +109 -0
  82. devflow_engine/prompts/devin/generic/prompt.md +6 -0
  83. devflow_engine/prompts/devin/ideation/prompt.md +263 -0
  84. devflow_engine/prompts/devin/ideation/scenarios.md +5 -0
  85. devflow_engine/prompts/devin/ideation_loop/prompt.md +6 -0
  86. devflow_engine/prompts/devin/insight/prompt.md +11 -0
  87. devflow_engine/prompts/devin/insight/scenarios.md +5 -0
  88. devflow_engine/prompts/devin/intake/prompt.md +15 -0
  89. devflow_engine/prompts/devin/iterate/prompt.md +12 -0
  90. devflow_engine/prompts/devin/shared/eval_doctrine.md +9 -0
  91. devflow_engine/prompts/devin/shared/principles.md +246 -0
  92. devflow_engine/prompts/devin_eval/assessment/prompt.md +18 -0
  93. devflow_engine/prompts/idea/api_ideation_agent/prompt.md +8 -0
  94. devflow_engine/prompts/idea/api_insight_agent/prompt.md +8 -0
  95. devflow_engine/prompts/idea/response_doctrine/prompt.md +18 -0
  96. devflow_engine/prompts/implementation/dependency_assessment/prompt.md +12 -0
  97. devflow_engine/prompts/implementation/green/green/prompt.md +11 -0
  98. devflow_engine/prompts/implementation/green/node_config/prompt.md +3 -0
  99. devflow_engine/prompts/implementation/green_review/outcome_review/prompt.md +5 -0
  100. devflow_engine/prompts/implementation/green_review/prior_run_review/prompt.md +5 -0
  101. devflow_engine/prompts/implementation/red/prompt.md +27 -0
  102. devflow_engine/prompts/implementation/redreview/prompt.md +23 -0
  103. devflow_engine/prompts/implementation/redreview_repair/prompt.md +16 -0
  104. devflow_engine/prompts/implementation/setupdoc/prompt.md +10 -0
  105. devflow_engine/prompts/implementation/story_planning/prompt.md +13 -0
  106. devflow_engine/prompts/implementation/test_design/prompt.md +27 -0
  107. devflow_engine/prompts/integration/README.md +185 -0
  108. devflow_engine/prompts/integration/green/example.md +67 -0
  109. devflow_engine/prompts/integration/green/green/prompt.md +10 -0
  110. devflow_engine/prompts/integration/green/node_config/prompt.md +42 -0
  111. devflow_engine/prompts/integration/green/past_prompts/20260417T212300/green/prompt.md +15 -0
  112. devflow_engine/prompts/integration/green/past_prompts/20260417T212300/node_config/prompt.md +42 -0
  113. devflow_engine/prompts/integration/green_enrich/example.md +79 -0
  114. devflow_engine/prompts/integration/green_enrich/green_enrich/prompt.md +9 -0
  115. devflow_engine/prompts/integration/green_enrich/node_config/prompt.md +41 -0
  116. devflow_engine/prompts/integration/green_enrich/past_prompts/20260417T212300/green_enrich/prompt.md +14 -0
  117. devflow_engine/prompts/integration/green_enrich/past_prompts/20260417T212300/node_config/prompt.md +41 -0
  118. devflow_engine/prompts/integration/red/code_repair/prompt.md +12 -0
  119. devflow_engine/prompts/integration/red/example.md +152 -0
  120. devflow_engine/prompts/integration/red/node_config/prompt.md +86 -0
  121. devflow_engine/prompts/integration/red/past_prompts/20260417T212300/code_repair/prompt.md +19 -0
  122. devflow_engine/prompts/integration/red/past_prompts/20260417T212300/node_config/prompt.md +84 -0
  123. devflow_engine/prompts/integration/red/past_prompts/20260417T212300/red/prompt.md +16 -0
  124. devflow_engine/prompts/integration/red/past_prompts/20260417T212300/red_repair/prompt.md +15 -0
  125. devflow_engine/prompts/integration/red/past_prompts/20260417T215032/code_repair/prompt.md +10 -0
  126. devflow_engine/prompts/integration/red/past_prompts/20260417T215032/node_config/prompt.md +84 -0
  127. devflow_engine/prompts/integration/red/past_prompts/20260417T215032/red_repair/prompt.md +11 -0
  128. devflow_engine/prompts/integration/red/red/prompt.md +11 -0
  129. devflow_engine/prompts/integration/red/red_repair/prompt.md +12 -0
  130. devflow_engine/prompts/integration/red_review/example.md +71 -0
  131. devflow_engine/prompts/integration/red_review/node_config/prompt.md +41 -0
  132. devflow_engine/prompts/integration/red_review/past_prompts/20260417T212300/node_config/prompt.md +41 -0
  133. devflow_engine/prompts/integration/red_review/past_prompts/20260417T212300/red_review/prompt.md +15 -0
  134. devflow_engine/prompts/integration/red_review/red_review/prompt.md +9 -0
  135. devflow_engine/prompts/integration/resolve/example.md +111 -0
  136. devflow_engine/prompts/integration/resolve/node_config/prompt.md +64 -0
  137. devflow_engine/prompts/integration/resolve/past_prompts/20260417T212300/node_config/prompt.md +64 -0
  138. devflow_engine/prompts/integration/resolve/past_prompts/20260417T212300/resolve_implicated_users/prompt.md +15 -0
  139. devflow_engine/prompts/integration/resolve/past_prompts/20260417T212300/resolve_side_effects/prompt.md +15 -0
  140. devflow_engine/prompts/integration/resolve/resolve_implicated_users/prompt.md +10 -0
  141. devflow_engine/prompts/integration/resolve/resolve_side_effects/prompt.md +10 -0
  142. devflow_engine/prompts/integration/validate/build_idea_acceptance_coverage/prompt.md +12 -0
  143. devflow_engine/prompts/integration/validate/code_repair/prompt.md +13 -0
  144. devflow_engine/prompts/integration/validate/example.md +143 -0
  145. devflow_engine/prompts/integration/validate/node_config/prompt.md +87 -0
  146. devflow_engine/prompts/integration/validate/past_prompts/20260417T212300/code_repair/prompt.md +19 -0
  147. devflow_engine/prompts/integration/validate/past_prompts/20260417T212300/node_config/prompt.md +67 -0
  148. devflow_engine/prompts/integration/validate/past_prompts/20260417T212300/validate_enrich_gate/prompt.md +17 -0
  149. devflow_engine/prompts/integration/validate/past_prompts/20260417T212300/validate_repair/prompt.md +16 -0
  150. devflow_engine/prompts/integration/validate/past_prompts/20260417T215032/code_repair/prompt.md +10 -0
  151. devflow_engine/prompts/integration/validate/past_prompts/20260417T215032/node_config/prompt.md +67 -0
  152. devflow_engine/prompts/integration/validate/past_prompts/20260417T215032/validate_repair/prompt.md +9 -0
  153. devflow_engine/prompts/integration/validate/validate_enrich_gate/prompt.md +10 -0
  154. devflow_engine/prompts/integration/validate/validate_repair/prompt.md +20 -0
  155. devflow_engine/prompts/integration/write_workflows/example.md +100 -0
  156. devflow_engine/prompts/integration/write_workflows/node_config/prompt.md +44 -0
  157. devflow_engine/prompts/integration/write_workflows/past_prompts/20260417T212300/node_config/prompt.md +44 -0
  158. devflow_engine/prompts/integration/write_workflows/past_prompts/20260417T212300/write_workflows/prompt.md +17 -0
  159. devflow_engine/prompts/integration/write_workflows/write_workflows/prompt.md +11 -0
  160. devflow_engine/prompts/iterate/README.md +7 -0
  161. devflow_engine/prompts/iterate/coder/prompt.md +11 -0
  162. devflow_engine/prompts/iterate/framer/prompt.md +11 -0
  163. devflow_engine/prompts/iterate/iterator/prompt.md +13 -0
  164. devflow_engine/prompts/iterate/observer/prompt.md +11 -0
  165. devflow_engine/prompts/recovery/diagnosis/prompt.md +7 -0
  166. devflow_engine/prompts/recovery/execution/prompt.md +8 -0
  167. devflow_engine/prompts/recovery/execution_verification/prompt.md +7 -0
  168. devflow_engine/prompts/recovery/failure_investigation/prompt.md +10 -0
  169. devflow_engine/prompts/recovery/preflight_health_repo_repair/prompt.md +8 -0
  170. devflow_engine/prompts/recovery/remediation_execution/prompt.md +11 -0
  171. devflow_engine/prompts/recovery/root_cause_investigation/prompt.md +12 -0
  172. devflow_engine/prompts/scope_idea/doctrine/prompt.md +7 -0
  173. devflow_engine/prompts/source_doc_eval/document/prompt.md +6 -0
  174. devflow_engine/prompts/source_doc_eval/targeted_mutation/prompt.md +9 -0
  175. devflow_engine/prompts/source_doc_mutation/domain_entities/prompt.md +6 -0
  176. devflow_engine/prompts/source_doc_mutation/product_brief/prompt.md +6 -0
  177. devflow_engine/prompts/source_doc_mutation/project_doc_coherence/prompt.md +7 -0
  178. devflow_engine/prompts/source_doc_mutation/project_doc_render/prompt.md +9 -0
  179. devflow_engine/prompts/source_doc_mutation/source_doc_coherence/prompt.md +5 -0
  180. devflow_engine/prompts/source_doc_mutation/source_doc_enrichment_coherence/prompt.md +6 -0
  181. devflow_engine/prompts/source_doc_mutation/user_workflows/prompt.md +6 -0
  182. devflow_engine/prompts/source_scope/doctrine/prompt.md +10 -0
  183. devflow_engine/prompts/ui_grounding/doctrine/prompt.md +7 -0
  184. devflow_engine/recovery/__init__.py +3 -0
  185. devflow_engine/recovery/dag.py +2609 -0
  186. devflow_engine/recovery/models.py +220 -0
  187. devflow_engine/refactor.py +93 -0
  188. devflow_engine/registry/__init__.py +1 -0
  189. devflow_engine/registry/cards.py +238 -0
  190. devflow_engine/registry/domain_normalize.py +60 -0
  191. devflow_engine/registry/effects.py +65 -0
  192. devflow_engine/registry/enforce_report.py +150 -0
  193. devflow_engine/registry/module_cards_classify.py +164 -0
  194. devflow_engine/registry/module_cards_draft.py +184 -0
  195. devflow_engine/registry/module_cards_gate.py +59 -0
  196. devflow_engine/registry/packages.py +347 -0
  197. devflow_engine/registry/pathways.py +323 -0
  198. devflow_engine/review/__init__.py +11 -0
  199. devflow_engine/review/dag.py +588 -0
  200. devflow_engine/review/review_story.py +67 -0
  201. devflow_engine/scope_idea/__init__.py +3 -0
  202. devflow_engine/scope_idea/agentic.py +39 -0
  203. devflow_engine/scope_idea/dag.py +1069 -0
  204. devflow_engine/scope_idea/models.py +175 -0
  205. devflow_engine/skills/builtins/devflow/queue_failure_investigation/SKILL.md +112 -0
  206. devflow_engine/skills/builtins/devflow/queue_idea_to_story/SKILL.md +120 -0
  207. devflow_engine/skills/builtins/devflow/queue_integration/SKILL.md +105 -0
  208. devflow_engine/skills/builtins/devflow/queue_recovery/SKILL.md +108 -0
  209. devflow_engine/skills/builtins/devflow/queue_runtime_core/SKILL.md +155 -0
  210. devflow_engine/skills/builtins/devflow/queue_story_implementation/SKILL.md +122 -0
  211. devflow_engine/skills/builtins/devin/idea_to_story_handoff/SKILL.md +120 -0
  212. devflow_engine/skills/builtins/devin/ideation/SKILL.md +168 -0
  213. devflow_engine/skills/builtins/devin/ideation/state-and-phrasing-reference.md +18 -0
  214. devflow_engine/skills/builtins/devin/insight/SKILL.md +22 -0
  215. devflow_engine/skills/registry.example.yaml +42 -0
  216. devflow_engine/source_doc_assumptions.py +291 -0
  217. devflow_engine/source_doc_mutation_dag.py +1606 -0
  218. devflow_engine/source_doc_mutation_eval.py +417 -0
  219. devflow_engine/source_doc_mutation_worker.py +25 -0
  220. devflow_engine/source_docs_schema.py +207 -0
  221. devflow_engine/source_docs_updater.py +309 -0
  222. devflow_engine/source_scope/__init__.py +15 -0
  223. devflow_engine/source_scope/agentic.py +45 -0
  224. devflow_engine/source_scope/dag.py +1626 -0
  225. devflow_engine/source_scope/models.py +177 -0
  226. devflow_engine/stores/__init__.py +0 -0
  227. devflow_engine/stores/execution_store.py +3534 -0
  228. devflow_engine/story/__init__.py +0 -0
  229. devflow_engine/story/contracts.py +160 -0
  230. devflow_engine/story/discovery.py +47 -0
  231. devflow_engine/story/evidence.py +118 -0
  232. devflow_engine/story/hashing.py +27 -0
  233. devflow_engine/story/implemented_queue_purge.py +148 -0
  234. devflow_engine/story/indexer.py +105 -0
  235. devflow_engine/story/io.py +20 -0
  236. devflow_engine/story/markdown_contracts.py +298 -0
  237. devflow_engine/story/reconciliation.py +408 -0
  238. devflow_engine/story/validate_stories.py +149 -0
  239. devflow_engine/story/validate_tests_story.py +512 -0
  240. devflow_engine/story/validation.py +133 -0
  241. devflow_engine/ui_grounding/__init__.py +11 -0
  242. devflow_engine/ui_grounding/agentic.py +31 -0
  243. devflow_engine/ui_grounding/dag.py +874 -0
  244. devflow_engine/ui_grounding/models.py +224 -0
  245. devflow_engine/ui_grounding/pencil_bridge.py +247 -0
  246. devflow_engine/vendor/__init__.py +0 -0
  247. devflow_engine/vendor/datalumina_genai/__init__.py +11 -0
  248. devflow_engine/vendor/datalumina_genai/core/__init__.py +0 -0
  249. devflow_engine/vendor/datalumina_genai/core/exceptions.py +9 -0
  250. devflow_engine/vendor/datalumina_genai/core/nodes/__init__.py +0 -0
  251. devflow_engine/vendor/datalumina_genai/core/nodes/agent.py +48 -0
  252. devflow_engine/vendor/datalumina_genai/core/nodes/agent_streaming_node.py +26 -0
  253. devflow_engine/vendor/datalumina_genai/core/nodes/base.py +89 -0
  254. devflow_engine/vendor/datalumina_genai/core/nodes/concurrent.py +30 -0
  255. devflow_engine/vendor/datalumina_genai/core/nodes/router.py +69 -0
  256. devflow_engine/vendor/datalumina_genai/core/schema.py +72 -0
  257. devflow_engine/vendor/datalumina_genai/core/task.py +52 -0
  258. devflow_engine/vendor/datalumina_genai/core/validate.py +139 -0
  259. devflow_engine/vendor/datalumina_genai/core/workflow.py +200 -0
  260. devflow_engine/worker.py +1086 -0
  261. devflow_engine/worker_guard.py +233 -0
  262. devflow_engine-1.0.0.dist-info/METADATA +235 -0
  263. devflow_engine-1.0.0.dist-info/RECORD +393 -0
  264. devflow_engine-1.0.0.dist-info/WHEEL +4 -0
  265. devflow_engine-1.0.0.dist-info/entry_points.txt +3 -0
  266. devin/__init__.py +6 -0
  267. devin/dag.py +58 -0
  268. devin/dag_two_arm.py +138 -0
  269. devin/devin_chat_scenario_catalog.json +588 -0
  270. devin/devin_eval.py +677 -0
  271. devin/nodes/__init__.py +0 -0
  272. devin/nodes/ideation/__init__.py +0 -0
  273. devin/nodes/ideation/node.py +195 -0
  274. devin/nodes/ideation/playground.py +267 -0
  275. devin/nodes/ideation/prompt.md +65 -0
  276. devin/nodes/ideation/scenarios/continue_refinement.py +13 -0
  277. devin/nodes/ideation/scenarios/continue_refinement_evals.py +18 -0
  278. devin/nodes/ideation/scenarios/idea_fits_existing_patterns.py +17 -0
  279. devin/nodes/ideation/scenarios/idea_fits_existing_patterns_evals.py +16 -0
  280. devin/nodes/ideation/scenarios/large_idea_split.py +4 -0
  281. devin/nodes/ideation/scenarios/large_idea_split_evals.py +17 -0
  282. devin/nodes/ideation/scenarios/source_documentation_added.py +4 -0
  283. devin/nodes/ideation/scenarios/source_documentation_added_evals.py +16 -0
  284. devin/nodes/ideation/scenarios/user_says_create_it.py +30 -0
  285. devin/nodes/ideation/scenarios/user_says_create_it_evals.py +23 -0
  286. devin/nodes/ideation/scenarios/vague_idea.py +16 -0
  287. devin/nodes/ideation/scenarios/vague_idea_evals.py +47 -0
  288. devin/nodes/ideation/tools.json +312 -0
  289. devin/nodes/insight/__init__.py +0 -0
  290. devin/nodes/insight/node.py +49 -0
  291. devin/nodes/insight/playground.py +154 -0
  292. devin/nodes/insight/prompt.md +61 -0
  293. devin/nodes/insight/scenarios/architecture_pattern_query.py +15 -0
  294. devin/nodes/insight/scenarios/architecture_pattern_query_evals.py +25 -0
  295. devin/nodes/insight/scenarios/codebase_exploration.py +15 -0
  296. devin/nodes/insight/scenarios/codebase_exploration_evals.py +23 -0
  297. devin/nodes/insight/scenarios/devin_ideation_routing.py +19 -0
  298. devin/nodes/insight/scenarios/devin_ideation_routing_evals.py +39 -0
  299. devin/nodes/insight/scenarios/devin_insight_routing.py +20 -0
  300. devin/nodes/insight/scenarios/devin_insight_routing_evals.py +40 -0
  301. devin/nodes/insight/scenarios/operational_debugging.py +15 -0
  302. devin/nodes/insight/scenarios/operational_debugging_evals.py +23 -0
  303. devin/nodes/insight/scenarios/operational_question.py +9 -0
  304. devin/nodes/insight/scenarios/operational_question_evals.py +8 -0
  305. devin/nodes/insight/scenarios/queue_status.py +15 -0
  306. devin/nodes/insight/scenarios/queue_status_evals.py +23 -0
  307. devin/nodes/insight/scenarios/source_doc_explanation.py +14 -0
  308. devin/nodes/insight/scenarios/source_doc_explanation_evals.py +21 -0
  309. devin/nodes/insight/scenarios/worker_state_check.py +15 -0
  310. devin/nodes/insight/scenarios/worker_state_check_evals.py +22 -0
  311. devin/nodes/insight/tools.json +126 -0
  312. devin/nodes/intake/__init__.py +0 -0
  313. devin/nodes/intake/node.py +27 -0
  314. devin/nodes/intake/playground.py +47 -0
  315. devin/nodes/intake/prompt.md +12 -0
  316. devin/nodes/intake/scenarios/ideation_routing.py +4 -0
  317. devin/nodes/intake/scenarios/ideation_routing_evals.py +5 -0
  318. devin/nodes/intake/scenarios/insight_routing.py +4 -0
  319. devin/nodes/intake/scenarios/insight_routing_evals.py +5 -0
  320. devin/nodes/iterate/README.md +44 -0
  321. devin/nodes/iterate/__init__.py +1 -0
  322. devin/nodes/iterate/_archived_design_stages/01-objectives-requirements.md +112 -0
  323. devin/nodes/iterate/_archived_design_stages/02-evals.md +131 -0
  324. devin/nodes/iterate/_archived_design_stages/03-tools-and-boundaries.md +110 -0
  325. devin/nodes/iterate/_archived_design_stages/04-harness-and-playground.md +32 -0
  326. devin/nodes/iterate/_archived_design_stages/05-prompt-deferred.md +11 -0
  327. devin/nodes/iterate/_archived_design_stages/coder_agent_design/01-objectives-requirements.md +20 -0
  328. devin/nodes/iterate/_archived_design_stages/coder_agent_design/02-evals.md +8 -0
  329. devin/nodes/iterate/_archived_design_stages/coder_agent_design/03-tools-and-boundaries.md +14 -0
  330. devin/nodes/iterate/_archived_design_stages/coder_agent_design/04-harness-and-playground.md +12 -0
  331. devin/nodes/iterate/_archived_design_stages/framer_agent_design/01-objectives-requirements.md +20 -0
  332. devin/nodes/iterate/_archived_design_stages/framer_agent_design/02-evals.md +8 -0
  333. devin/nodes/iterate/_archived_design_stages/framer_agent_design/03-tools-and-boundaries.md +13 -0
  334. devin/nodes/iterate/_archived_design_stages/framer_agent_design/04-harness-and-playground.md +12 -0
  335. devin/nodes/iterate/_archived_design_stages/iterator_agent_design/01-objectives-requirements.md +25 -0
  336. devin/nodes/iterate/_archived_design_stages/iterator_agent_design/02-evals.md +9 -0
  337. devin/nodes/iterate/_archived_design_stages/iterator_agent_design/03-tools-and-boundaries.md +14 -0
  338. devin/nodes/iterate/_archived_design_stages/iterator_agent_design/04-harness-and-playground.md +12 -0
  339. devin/nodes/iterate/_archived_design_stages/observer_agent_design/01-objectives-requirements.md +20 -0
  340. devin/nodes/iterate/_archived_design_stages/observer_agent_design/02-evals.md +8 -0
  341. devin/nodes/iterate/_archived_design_stages/observer_agent_design/03-tools-and-boundaries.md +14 -0
  342. devin/nodes/iterate/_archived_design_stages/observer_agent_design/04-harness-and-playground.md +13 -0
  343. devin/nodes/iterate/agent-roles.md +89 -0
  344. devin/nodes/iterate/agents/README.md +10 -0
  345. devin/nodes/iterate/artifacts.md +504 -0
  346. devin/nodes/iterate/contract.md +100 -0
  347. devin/nodes/iterate/eval-plan.md +74 -0
  348. devin/nodes/iterate/node.py +100 -0
  349. devin/nodes/iterate/pipeline/README.md +13 -0
  350. devin/nodes/iterate/playground-contract.md +76 -0
  351. devin/nodes/iterate/prompt.md +11 -0
  352. devin/nodes/iterate/scenarios/README.md +38 -0
  353. devin/nodes/iterate/scenarios/artifact-and-loop-scenarios.md +101 -0
  354. devin/nodes/iterate/scenarios/coder_artifact_alignment.py +32 -0
  355. devin/nodes/iterate/scenarios/coder_artifact_alignment_evals.py +45 -0
  356. devin/nodes/iterate/scenarios/coder_bounded_fix.py +27 -0
  357. devin/nodes/iterate/scenarios/coder_bounded_fix_evals.py +45 -0
  358. devin/nodes/iterate/scenarios/devin_iterate_routing.py +21 -0
  359. devin/nodes/iterate/scenarios/devin_iterate_routing_evals.py +36 -0
  360. devin/nodes/iterate/scenarios/framer_scope_boundary.py +25 -0
  361. devin/nodes/iterate/scenarios/framer_scope_boundary_evals.py +57 -0
  362. devin/nodes/iterate/scenarios/framer_task_framing.py +25 -0
  363. devin/nodes/iterate/scenarios/framer_task_framing_evals.py +58 -0
  364. devin/nodes/iterate/scenarios/iterate_error_fix.py +21 -0
  365. devin/nodes/iterate/scenarios/iterate_error_fix_evals.py +39 -0
  366. devin/nodes/iterate/scenarios/iterate_quick_change.py +21 -0
  367. devin/nodes/iterate/scenarios/iterate_quick_change_evals.py +35 -0
  368. devin/nodes/iterate/scenarios/iterate_to_idea_promotion.py +23 -0
  369. devin/nodes/iterate/scenarios/iterate_to_idea_promotion_evals.py +53 -0
  370. devin/nodes/iterate/scenarios/iterate_to_insight_reroute.py +23 -0
  371. devin/nodes/iterate/scenarios/iterate_to_insight_reroute_evals.py +53 -0
  372. devin/nodes/iterate/scenarios/observer_evidence_seam.py +28 -0
  373. devin/nodes/iterate/scenarios/observer_evidence_seam_evals.py +55 -0
  374. devin/nodes/iterate/scenarios/observer_repro_creation.py +28 -0
  375. devin/nodes/iterate/scenarios/observer_repro_creation_evals.py +45 -0
  376. devin/nodes/iterate/scenarios/routing-matrix.md +45 -0
  377. devin/nodes/shared/__init__.py +0 -0
  378. devin/nodes/shared/filemaker_expert.md +80 -0
  379. devin/nodes/shared/filemaker_expert.py +354 -0
  380. devin/nodes/shared/filemaker_expert_eval/runner.py +176 -0
  381. devin/nodes/shared/filemaker_expert_eval/scenarios.json +65 -0
  382. devin/nodes/shared/goldilocks_advisor_eval/runner.py +214 -0
  383. devin/nodes/shared/goldilocks_advisor_eval/scenarios.json +58 -0
  384. devin/nodes/shared/helpers.py +156 -0
  385. devin/nodes/shared/idea_compliance_advisor_eval/runner.py +252 -0
  386. devin/nodes/shared/idea_compliance_advisor_eval/scenarios.json +75 -0
  387. devin/nodes/shared/models.py +44 -0
  388. devin/nodes/shared/post.py +40 -0
  389. devin/nodes/shared/router.py +107 -0
  390. devin/nodes/shared/tools.py +191 -0
  391. devin/shared/devin-chat-rubric.md +237 -0
  392. devin/shared/devin-chat-scenario-suite.md +90 -0
  393. devin/shared/eval_doctrine.md +9 -0
@@ -0,0 +1,152 @@
1
+ # Red node assembled payloads
2
+
3
+ ## Provenance
4
+
5
+ Reconstructed from:
6
+
7
+ - `prompts/integration/red/red/prompt.md`
8
+ - `prompts/integration/red/red_repair/prompt.md`
9
+ - `prompts/integration/red/code_repair/prompt.md`
10
+ - `src/devflow_engine/integration/dag.py` red generation / repair / re-generation calls
11
+ - `src/devflow_engine/agentic_runtime.py`
12
+ - `RedArtifact` and `CodeRepairArtifact` in `src/devflow_engine/integration/dag.py`
13
+
14
+ Not copied from a persisted past-run integration prompt.
15
+
16
+ ## Stable doctrine vs actual payload
17
+
18
+ - Stable node doctrine file: `prompts/integration/red/node_config/prompt.md`
19
+ - Actual `instructions` come from stage prompt markdown; repair mode also gets a runtime-appended iteration line
20
+ - Actual `context` comes from validation outputs, workflow artifacts, and repair selections in `integration/dag.py`
21
+ - No skills or tools are injected here
22
+
23
+ ## Assembled payload: `integration_red`
24
+
25
+ ```json
26
+ {
27
+ "task": "integration_red",
28
+ "instructions": [
29
+ "Emit exactly one red package per validated workflow.",
30
+ "Anchor each package to the workflow's side effect and the strongest real interaction point.",
31
+ "Use only these harness_kind values: playwright, endpoint_harness, cli_harness, artifact_probe, background_observer, integration_harness.",
32
+ "Use integration_harness only when no concrete interaction point kind fits.",
33
+ "If a required interaction point is missing, keep the package failing and make the gap explicit in harness_selection.gap_explicit and gap_notes.",
34
+ "Failing artifacts and assertions must prove the side effect, not implementation trivia.",
35
+ "Return JSON only."
36
+ ],
37
+ "context": {
38
+ "idea_id": "idea_checkout_recovery_v1",
39
+ "validated_workflows": [
40
+ {
41
+ "workflow_id": "wf_recovery_email_sent",
42
+ "side_effect": { "id": "se_recovery_email_sent", "name": "Recovery email sent" },
43
+ "interaction_points": [
44
+ { "kind": "endpoint", "name": "POST /api/carts/{cart_id}/recover", "implemented": true }
45
+ ]
46
+ }
47
+ ],
48
+ "validation_report": { "passed": true, "errors": [] },
49
+ "side_effects_artifact": { "idea_id": "idea_checkout_recovery_v1", "side_effects": [{ "id": "se_recovery_email_sent" }] },
50
+ "implicated_users_artifact": { "idea_id": "idea_checkout_recovery_v1", "implicated_users": [{ "kind": "human", "scope": "customer_account", "authority": "self", "rationale": "customer receives reminder" }], "denied_candidates": [] },
51
+ "code_evidence": [
52
+ { "path": "src/jobs/recovery_email_job.py", "side_effect_ids": [], "interaction_points": [] }
53
+ ]
54
+ },
55
+ "output_schema": "RedArtifact.model_json_schema()",
56
+ "return_format": "json_only"
57
+ }
58
+ ```
59
+
60
+ ## Assembled payload: `integration_code_repair_iter1` (red repair mode)
61
+
62
+ ```json
63
+ {
64
+ "task": "integration_code_repair_iter1",
65
+ "instructions": [
66
+ "Patch the smallest real code change that fixes the current failing workflow surface.",
67
+ "Choose one primary failing seam from validation_errors, failing_packages, failing_workflows, and code_evidence; keep edits there unless the same failure forces one adjacent file.",
68
+ "Prefer files already named by the failing workflow, package interaction point, or code evidence.",
69
+ "Update updated_workflows only when the repaired code changes workflow truth.",
70
+ "Do not repair proof-package artifacts here. Do not edit engine, runtime, orchestration, or prompt-loading layers unless the failure explicitly originates there.",
71
+ "If the failure is artifact-only, harness-only, or runtime-only, leave code unchanged and explain it in unresolvable_failures.",
72
+ "Return only changed files with full contents, updated_workflows, and unresolvable_failures.",
73
+ "This is repair iteration 1. Stay on the current failing seam. Do not revisit clean surfaces.",
74
+ "Return JSON only."
75
+ ],
76
+ "context": {
77
+ "failing_packages": [
78
+ {
79
+ "workflow_id": "wf_recovery_email_sent",
80
+ "side_effect_id": "se_recovery_email_sent",
81
+ "status": "failing",
82
+ "harness_selection": {
83
+ "harness_kind": "integration_harness",
84
+ "interaction_point_ref": "POST /api/carts/{cart_id}/recover",
85
+ "interaction_point_kind": "endpoint",
86
+ "rationale": "placeholder harness selection",
87
+ "gap_explicit": false
88
+ },
89
+ "failing_artifacts": [],
90
+ "expected_assertions": [],
91
+ "implicated_user_routes": [],
92
+ "gap_notes": []
93
+ }
94
+ ],
95
+ "validation_errors": [
96
+ "red harness mismatch for wf_recovery_email_sent: expected endpoint_harness"
97
+ ],
98
+ "failing_workflows": [
99
+ {
100
+ "workflow_id": "wf_recovery_email_sent",
101
+ "interaction_points": [
102
+ { "kind": "endpoint", "name": "POST /api/carts/{cart_id}/recover", "implemented": true }
103
+ ]
104
+ }
105
+ ],
106
+ "side_effects_artifact": { "idea_id": "idea_checkout_recovery_v1", "side_effects": [{ "id": "se_recovery_email_sent" }] },
107
+ "implicated_users_artifact": { "idea_id": "idea_checkout_recovery_v1", "implicated_users": [{ "kind": "human", "scope": "customer_account", "authority": "self", "rationale": "customer receives reminder" }], "denied_candidates": [] },
108
+ "code_evidence": [
109
+ { "path": "src/jobs/recovery_email_job.py", "side_effect_ids": [], "interaction_points": [] }
110
+ ]
111
+ },
112
+ "output_schema": "CodeRepairArtifact.model_json_schema()",
113
+ "return_format": "json_only"
114
+ }
115
+ ```
116
+
117
+ ## Assembled payload: `integration_red_repair_iter1`
118
+
119
+ ```json
120
+ {
121
+ "task": "integration_red_repair_iter1",
122
+ "instructions": [
123
+ "Repair the current failing package surface with the smallest package delta.",
124
+ "Keep each package anchored to the same workflow side effect and the strongest supported interaction point.",
125
+ "Treat the package's current failing interaction point as the primary seam; if none is credible, make the gap explicit instead of broadening the package.",
126
+ "Do not revisit passing packages, settled claims, or unrelated workflows.",
127
+ "Do not turn artifact repair into product-code repair or runtime repair.",
128
+ "Keep missing interaction-point gaps explicit instead of implying passability.",
129
+ "Failing artifacts and assertions must still prove the side effect, not implementation trivia.",
130
+ "Return JSON only."
131
+ ],
132
+ "context": {
133
+ "idea_id": "idea_checkout_recovery_v1",
134
+ "validated_workflows": [
135
+ {
136
+ "workflow_id": "wf_recovery_email_sent",
137
+ "interaction_points": [
138
+ { "kind": "endpoint", "name": "POST /api/carts/{cart_id}/recover", "implemented": true }
139
+ ]
140
+ }
141
+ ],
142
+ "validation_report": { "passed": true, "errors": [] },
143
+ "side_effects_artifact": { "idea_id": "idea_checkout_recovery_v1", "side_effects": [{ "id": "se_recovery_email_sent" }] },
144
+ "implicated_users_artifact": { "idea_id": "idea_checkout_recovery_v1", "implicated_users": [{ "kind": "human", "scope": "customer_account", "authority": "self", "rationale": "customer receives reminder" }], "denied_candidates": [] },
145
+ "code_evidence": [
146
+ { "path": "src/jobs/recovery_email_job.py", "side_effect_ids": [], "interaction_points": [] }
147
+ ]
148
+ },
149
+ "output_schema": "RedArtifact.model_json_schema()",
150
+ "return_format": "json_only"
151
+ }
152
+ ```
@@ -0,0 +1,86 @@
1
+ # Red Node Contract
2
+
3
+ Generate failing integration proof packages for the validated workflows.
4
+
5
+ ## What this file is
6
+
7
+ Stable node doctrine loaded by:
8
+
9
+ - `load_integration_node_instruction("red")`
10
+ - `RedNode.get_agent_config()`
11
+
12
+ ## What actually reaches the model
13
+
14
+ The current runtime uses three red-related model payloads:
15
+
16
+ 1. red generation pass (`integration_red`)
17
+ 2. red code repair pass (`integration_code_repair_iter<N>` when red mode is active)
18
+ 3. red re-generation pass (`integration_red_repair_iter<N>`)
19
+
20
+ ## Real injected runtime components
21
+
22
+ ### Red generation pass
23
+
24
+ `context_payload` fields:
25
+
26
+ - `idea_id` ← `event.idea_id`
27
+ - `validated_workflows` ← `task_context.metadata["workflows"]`
28
+ - `validation_report` ← `task_context.metadata["validation_report"]`
29
+ - `side_effects_artifact` ← `task_context.metadata["side_effects_artifact"]`
30
+ - `implicated_users_artifact` ← `task_context.metadata["implicated_users_artifact"]`
31
+ - `code_evidence` ← `event.code_evidence`
32
+
33
+ `instructions` source:
34
+
35
+ - bullets parsed from `prompts/integration/red/red/prompt.md`
36
+
37
+ `output_schema` source:
38
+
39
+ - `RedArtifact.model_json_schema()`
40
+
41
+ ### Red code repair pass
42
+
43
+ `context_payload` fields:
44
+
45
+ - `failing_packages` ← selected from invalid red packages
46
+ - `validation_errors` ← `report["errors"]`
47
+ - `failing_workflows` ← workflows matching failing packages
48
+ - `side_effects_artifact` ← `task_context.metadata["side_effects_artifact"]`
49
+ - `implicated_users_artifact` ← `task_context.metadata["implicated_users_artifact"]`
50
+ - `code_evidence` ← `event.code_evidence`
51
+
52
+ `instructions` source:
53
+
54
+ - bullets parsed from `prompts/integration/red/code_repair/prompt.md`
55
+ - plus runtime-appended line: `This is repair iteration <N>. Stay on the current failing seam. Do not revisit clean surfaces.`
56
+
57
+ `output_schema` source:
58
+
59
+ - `CodeRepairArtifact.model_json_schema()`
60
+
61
+ Current runtime does not inject explicit `likely_next_seam`, `do_not_revisit`, or allowed-edit-root fields; repair must infer focus from the failing packages, failing workflows, and provided evidence.
62
+
63
+ ### Red re-generation pass
64
+
65
+ `context_payload` fields:
66
+
67
+ - `idea_id` ← `event.idea_id`
68
+ - `validated_workflows` ← failing workflows only
69
+ - `validation_report` ← `task_context.metadata["validation_report"]`
70
+ - `side_effects_artifact` ← `task_context.metadata["side_effects_artifact"]`
71
+ - `implicated_users_artifact` ← `task_context.metadata["implicated_users_artifact"]`
72
+ - `code_evidence` ← `event.code_evidence`
73
+
74
+ `instructions` source:
75
+
76
+ - bullets parsed from `prompts/integration/red/red_repair/prompt.md`
77
+
78
+ `output_schema` source:
79
+
80
+ - `RedArtifact.model_json_schema()`
81
+
82
+ ## Tools / skills / config
83
+
84
+ - No integration-specific skills are injected.
85
+ - No tool definitions are injected.
86
+ - Repair operates by returning full-file patches in JSON, not by model tool calls.
@@ -0,0 +1,19 @@
1
+ # Red Code Repair
2
+
3
+ You are the Integration Code Repair agent. Validation failed. Repair the code so it passes.
4
+
5
+ - This is a real GenAI DAG. Return JSON only.
6
+ - Node 1 and Node 2 must be genuinely model-backed; do not simulate agentic behavior with deterministic shortcuts.
7
+ - Workflows are anchored to side effects, not users.
8
+ - Attach implicated users to workflows using the canonical actor model: kind x scope x authority.
9
+ - Reject denied canonical actor combinations by listing them under denied_candidates with explicit reasons.
10
+ - Treat interaction points as first-class. Reference implemented seams when they exist; mark needed interaction points when required but missing.
11
+ - Preserve alignment to implemented stories, implementation evidence, and source docs.
12
+ - Do not overclaim unsupported implementation. Keep rationale explicit.
13
+ - You are the Integration Code Repair agent. Validation failed. Repair the code so it passes.
14
+ - For MISSING_INTERACTION_POINTS: inspect the code evidence for the side effect, find or create the actual seam interfaces, write the code. Declare the interaction_points in the updated workflow.
15
+ - For STORY_ALIGNMENT_MISMATCH: inspect the code evidence against the story contract. Patch the code so it satisfies the story intent. Update the workflow to correctly describe the implementation.
16
+ - For MISSING_CODE_BACKING: implement the missing code seam for the side effect. Write real implementation code, not stubs.
17
+ - Write only the files that need to change. Return full file content for each patched file.
18
+ - Return updated_workflows with corrected interaction_points and story_backing for every workflow you repaired.
19
+ - In unresolvable_failures list any failure you cannot fix with code changes (e.g. fundamentally undefined story contract).
@@ -0,0 +1,84 @@
1
+ # Red Node Contract
2
+
3
+ Red is a real GenAI node: generate failing integration proof artifacts anchored to validated workflows and real interaction points.
4
+
5
+ ## What this file is
6
+
7
+ Stable node doctrine loaded by:
8
+
9
+ - `load_integration_node_instruction("red")`
10
+ - `RedNode.get_agent_config()`
11
+
12
+ ## What actually reaches the model
13
+
14
+ The current runtime uses three red-related model payloads:
15
+
16
+ 1. red generation pass (`integration_red`)
17
+ 2. red code repair pass (`integration_code_repair_iter<N>` when red mode is active)
18
+ 3. red re-generation pass (`integration_red_repair_iter<N>`)
19
+
20
+ ## Real injected runtime components
21
+
22
+ ### Red generation pass
23
+
24
+ `context_payload` fields:
25
+
26
+ - `idea_id` ← `event.idea_id`
27
+ - `validated_workflows` ← `task_context.metadata["workflows"]`
28
+ - `validation_report` ← `task_context.metadata["validation_report"]`
29
+ - `side_effects_artifact` ← `task_context.metadata["side_effects_artifact"]`
30
+ - `implicated_users_artifact` ← `task_context.metadata["implicated_users_artifact"]`
31
+ - `code_evidence` ← `event.code_evidence`
32
+
33
+ `instructions` source:
34
+
35
+ - bullets parsed from `prompts/integration/red/red/prompt.md`
36
+
37
+ `output_schema` source:
38
+
39
+ - `RedArtifact.model_json_schema()`
40
+
41
+ ### Red code repair pass
42
+
43
+ `context_payload` fields:
44
+
45
+ - `failing_packages` ← selected from invalid red packages
46
+ - `validation_errors` ← `report["errors"]`
47
+ - `failing_workflows` ← workflows matching failing packages
48
+ - `side_effects_artifact` ← `task_context.metadata["side_effects_artifact"]`
49
+ - `implicated_users_artifact` ← `task_context.metadata["implicated_users_artifact"]`
50
+ - `code_evidence` ← `event.code_evidence`
51
+
52
+ `instructions` source:
53
+
54
+ - bullets parsed from `prompts/integration/red/code_repair/prompt.md`
55
+ - plus runtime-appended repair-iteration line
56
+
57
+ `output_schema` source:
58
+
59
+ - `CodeRepairArtifact.model_json_schema()`
60
+
61
+ ### Red re-generation pass
62
+
63
+ `context_payload` fields:
64
+
65
+ - `idea_id` ← `event.idea_id`
66
+ - `validated_workflows` ← failing workflows only
67
+ - `validation_report` ← `task_context.metadata["validation_report"]`
68
+ - `side_effects_artifact` ← `task_context.metadata["side_effects_artifact"]`
69
+ - `implicated_users_artifact` ← `task_context.metadata["implicated_users_artifact"]`
70
+ - `code_evidence` ← `event.code_evidence`
71
+
72
+ `instructions` source:
73
+
74
+ - bullets parsed from `prompts/integration/red/red_repair/prompt.md`
75
+
76
+ `output_schema` source:
77
+
78
+ - `RedArtifact.model_json_schema()`
79
+
80
+ ## Tools / skills / config
81
+
82
+ - No integration-specific skills are injected.
83
+ - No tool definitions are injected.
84
+ - Repair operates by returning full-file patches in JSON, not by model tool calls.
@@ -0,0 +1,16 @@
1
+ # Red
2
+
3
+ Red is a real GenAI node: generate failing integration proof artifacts anchored to validated workflows and real interaction points.
4
+
5
+ - This is a real GenAI DAG. Return JSON only.
6
+ - Node 1 and Node 2 must be genuinely model-backed; do not simulate agentic behavior with deterministic shortcuts.
7
+ - Workflows are anchored to side effects, not users.
8
+ - Attach implicated users to workflows using the canonical actor model: kind x scope x authority.
9
+ - Reject denied canonical actor combinations by listing them under denied_candidates with explicit reasons.
10
+ - Treat interaction points as first-class. Reference implemented seams when they exist; mark needed interaction points when required but missing.
11
+ - Preserve alignment to implemented stories, implementation evidence, and source docs.
12
+ - Do not overclaim unsupported implementation. Keep rationale explicit.
13
+ - Emit one red package per validated workflow.
14
+ - Choose harnesses from the real interaction points. Use ONLY these canonical harness_kind values: playwright (UI), endpoint_harness (API/HTTP/REST/GraphQL/health-check/webhook endpoints), cli_harness (CLI), artifact_probe (file artifacts), background_observer (background jobs/events/queues). Use integration_harness only when no interaction point kind is recognizable.
15
+ - If only needed/missing interaction points exist, keep the package failing and make the gap explicit in harness_selection.gap_explicit and gap_notes.
16
+ - Failing artifacts must prove side effects, not implementation trivia.
@@ -0,0 +1,15 @@
1
+ # Red Repair
2
+
3
+ Red is a real GenAI node: generate failing integration proof artifacts anchored to validated workflows and real interaction points.
4
+
5
+ - This is a real GenAI DAG. Return JSON only.
6
+ - Node 1 and Node 2 must be genuinely model-backed; do not simulate agentic behavior with deterministic shortcuts.
7
+ - Workflows are anchored to side effects, not users.
8
+ - Attach implicated users to workflows using the canonical actor model: kind x scope x authority.
9
+ - Reject denied canonical actor combinations by listing them under denied_candidates with explicit reasons.
10
+ - Treat interaction points as first-class. Reference implemented seams when they exist; mark needed interaction points when required but missing.
11
+ - Preserve alignment to implemented stories, implementation evidence, and source docs.
12
+ - Do not overclaim unsupported implementation. Keep rationale explicit.
13
+ - Emit one red package per validated workflow.
14
+ - Choose harnesses from the real interaction points. Use ONLY these canonical harness_kind values: playwright, endpoint_harness, cli_harness, artifact_probe, background_observer, integration_harness.
15
+ - This is a repair re-generation pass.
@@ -0,0 +1,10 @@
1
+ # Red Code Repair
2
+
3
+ Repair the code so the listed failing workflows can pass validation.
4
+
5
+ - Use validation_errors and the provided code evidence to identify the minimal real code changes.
6
+ - For MISSING_INTERACTION_POINTS, create or declare the real seam and update interaction_points in the repaired workflow.
7
+ - For STORY_ALIGNMENT_MISMATCH, patch the code and workflow description to match supported story intent.
8
+ - For MISSING_CODE_BACKING, implement the missing seam with real code, not stubs.
9
+ - Return only changed files with full contents, updated_workflows for repaired workflows, and unresolvable_failures for anything code cannot fix.
10
+ - Return JSON only.
@@ -0,0 +1,84 @@
1
+ # Red Node Contract
2
+
3
+ Generate failing integration proof packages for the validated workflows.
4
+
5
+ ## What this file is
6
+
7
+ Stable node doctrine loaded by:
8
+
9
+ - `load_integration_node_instruction("red")`
10
+ - `RedNode.get_agent_config()`
11
+
12
+ ## What actually reaches the model
13
+
14
+ The current runtime uses three red-related model payloads:
15
+
16
+ 1. red generation pass (`integration_red`)
17
+ 2. red code repair pass (`integration_code_repair_iter<N>` when red mode is active)
18
+ 3. red re-generation pass (`integration_red_repair_iter<N>`)
19
+
20
+ ## Real injected runtime components
21
+
22
+ ### Red generation pass
23
+
24
+ `context_payload` fields:
25
+
26
+ - `idea_id` ← `event.idea_id`
27
+ - `validated_workflows` ← `task_context.metadata["workflows"]`
28
+ - `validation_report` ← `task_context.metadata["validation_report"]`
29
+ - `side_effects_artifact` ← `task_context.metadata["side_effects_artifact"]`
30
+ - `implicated_users_artifact` ← `task_context.metadata["implicated_users_artifact"]`
31
+ - `code_evidence` ← `event.code_evidence`
32
+
33
+ `instructions` source:
34
+
35
+ - bullets parsed from `prompts/integration/red/red/prompt.md`
36
+
37
+ `output_schema` source:
38
+
39
+ - `RedArtifact.model_json_schema()`
40
+
41
+ ### Red code repair pass
42
+
43
+ `context_payload` fields:
44
+
45
+ - `failing_packages` ← selected from invalid red packages
46
+ - `validation_errors` ← `report["errors"]`
47
+ - `failing_workflows` ← workflows matching failing packages
48
+ - `side_effects_artifact` ← `task_context.metadata["side_effects_artifact"]`
49
+ - `implicated_users_artifact` ← `task_context.metadata["implicated_users_artifact"]`
50
+ - `code_evidence` ← `event.code_evidence`
51
+
52
+ `instructions` source:
53
+
54
+ - bullets parsed from `prompts/integration/red/code_repair/prompt.md`
55
+ - plus runtime-appended repair-iteration line
56
+
57
+ `output_schema` source:
58
+
59
+ - `CodeRepairArtifact.model_json_schema()`
60
+
61
+ ### Red re-generation pass
62
+
63
+ `context_payload` fields:
64
+
65
+ - `idea_id` ← `event.idea_id`
66
+ - `validated_workflows` ← failing workflows only
67
+ - `validation_report` ← `task_context.metadata["validation_report"]`
68
+ - `side_effects_artifact` ← `task_context.metadata["side_effects_artifact"]`
69
+ - `implicated_users_artifact` ← `task_context.metadata["implicated_users_artifact"]`
70
+ - `code_evidence` ← `event.code_evidence`
71
+
72
+ `instructions` source:
73
+
74
+ - bullets parsed from `prompts/integration/red/red_repair/prompt.md`
75
+
76
+ `output_schema` source:
77
+
78
+ - `RedArtifact.model_json_schema()`
79
+
80
+ ## Tools / skills / config
81
+
82
+ - No integration-specific skills are injected.
83
+ - No tool definitions are injected.
84
+ - Repair operates by returning full-file patches in JSON, not by model tool calls.
@@ -0,0 +1,11 @@
1
+ # Red Repair
2
+
3
+ Re-generate failing integration proof packages for repaired workflows.
4
+
5
+ - Emit exactly one red package per validated workflow.
6
+ - Anchor each package to the workflow's side effect and the strongest real interaction point.
7
+ - Use only these harness_kind values: playwright, endpoint_harness, cli_harness, artifact_probe, background_observer, integration_harness.
8
+ - Use integration_harness only when no concrete interaction point kind fits.
9
+ - Keep missing interaction-point gaps explicit instead of implying passability.
10
+ - Failing artifacts and assertions must still prove the side effect, not implementation trivia.
11
+ - Return JSON only.
@@ -0,0 +1,11 @@
1
+ # Red
2
+
3
+ Generate failing integration proof packages for the validated workflows.
4
+
5
+ - Emit exactly one red package per validated workflow.
6
+ - Anchor each package to the workflow's side effect and the strongest real interaction point.
7
+ - Use only these harness_kind values: playwright, endpoint_harness, cli_harness, artifact_probe, background_observer, integration_harness.
8
+ - Use integration_harness only when no concrete interaction point kind fits.
9
+ - If a required interaction point is missing, keep the package failing and make the gap explicit in harness_selection.gap_explicit and gap_notes.
10
+ - Failing artifacts and assertions must prove the side effect, not implementation trivia.
11
+ - Return JSON only.
@@ -0,0 +1,12 @@
1
+ # Red Repair
2
+
3
+ Re-generate only the failing red proof packages.
4
+
5
+ - Repair the current failing package surface with the smallest package delta.
6
+ - Keep each package anchored to the same workflow side effect and the strongest supported interaction point.
7
+ - Treat the package's current failing interaction point as the primary seam; if none is credible, make the gap explicit instead of broadening the package.
8
+ - Do not revisit passing packages, settled claims, or unrelated workflows.
9
+ - Do not turn artifact repair into product-code repair or runtime repair.
10
+ - Keep missing interaction-point gaps explicit instead of implying passability.
11
+ - Failing artifacts and assertions must still prove the side effect, not implementation trivia.
12
+ - Return JSON only.
@@ -0,0 +1,71 @@
1
+ # Red Review node assembled payload
2
+
3
+ ## Provenance
4
+
5
+ Reconstructed from:
6
+
7
+ - `prompts/integration/red_review/red_review/prompt.md`
8
+ - `src/devflow_engine/integration/dag.py` red review agent call
9
+ - `src/devflow_engine/agentic_runtime.py`
10
+ - `RedReviewArtifact` in `src/devflow_engine/integration/dag.py`
11
+
12
+ Not copied from a persisted past-run integration prompt.
13
+
14
+ ## Stable doctrine vs actual payload
15
+
16
+ - Stable node doctrine file: `prompts/integration/red_review/node_config/prompt.md`
17
+ - Actual `instructions` come from `red_review/red_review/prompt.md`
18
+ - Actual `context` comes from `task_context.metadata` + `event.idea_id`
19
+ - No skills or tools are injected here
20
+
21
+ ```json
22
+ {
23
+ "task": "integration_red_review",
24
+ "instructions": [
25
+ "Review every red package against its workflow and side effect.",
26
+ "Find overreach, under-assertion, weak interaction-point anchoring, and missing actor-route coverage.",
27
+ "Return reviewed_packages plus findings and repair_directions per workflow.",
28
+ "Keep critiques evidence-based; do not invent unsupported failures.",
29
+ "Return JSON only."
30
+ ],
31
+ "context": {
32
+ "idea_id": "idea_checkout_recovery_v1",
33
+ "validated_workflows": [
34
+ {
35
+ "workflow_id": "wf_recovery_email_sent",
36
+ "side_effect": { "id": "se_recovery_email_sent", "name": "Recovery email sent" },
37
+ "interaction_points": [
38
+ { "kind": "endpoint", "name": "POST /api/carts/{cart_id}/recover", "implemented": true }
39
+ ]
40
+ }
41
+ ],
42
+ "red_artifact": {
43
+ "idea_id": "idea_checkout_recovery_v1",
44
+ "summary": "Generated one failing package.",
45
+ "packages": [
46
+ {
47
+ "workflow_id": "wf_recovery_email_sent",
48
+ "side_effect_id": "se_recovery_email_sent",
49
+ "status": "failing",
50
+ "harness_selection": {
51
+ "harness_kind": "endpoint_harness",
52
+ "interaction_point_ref": "POST /api/carts/{cart_id}/recover",
53
+ "interaction_point_kind": "endpoint",
54
+ "rationale": "Workflow is entered through an API endpoint.",
55
+ "gap_explicit": false
56
+ },
57
+ "failing_artifacts": [],
58
+ "expected_assertions": [
59
+ { "assertion_id": "assert_response_accepted", "summary": "response indicates recovery request accepted", "evidence_anchor": "HTTP 202" }
60
+ ],
61
+ "implicated_user_routes": [],
62
+ "gap_notes": []
63
+ }
64
+ ]
65
+ },
66
+ "validation_report": { "passed": true, "errors": [] }
67
+ },
68
+ "output_schema": "RedReviewArtifact.model_json_schema()",
69
+ "return_format": "json_only"
70
+ }
71
+ ```
@@ -0,0 +1,41 @@
1
+ # Red Review Node Contract
2
+
3
+ Review red integration proof packages for alignment, adequacy, and coverage.
4
+
5
+ ## What this file is
6
+
7
+ Stable node doctrine loaded by:
8
+
9
+ - `load_integration_node_instruction("red_review")`
10
+ - `RedReviewNode.get_agent_config()`
11
+
12
+ ## What actually reaches the model
13
+
14
+ The model-facing payload is assembled from:
15
+
16
+ - stage bullets in `prompts/integration/red_review/red_review/prompt.md`
17
+ - runtime `context_payload` from `src/devflow_engine/integration/dag.py`
18
+ - `RedReviewArtifact.model_json_schema()`
19
+ - `return_format: "json_only"`
20
+
21
+ ## Real injected runtime components
22
+
23
+ `context_payload` fields:
24
+
25
+ - `idea_id` ← `event.idea_id`
26
+ - `validated_workflows` ← `task_context.metadata["workflows"]`
27
+ - `red_artifact` ← `task_context.metadata["red_artifact"]`
28
+ - `validation_report` ← `task_context.metadata["validation_report"]`
29
+
30
+ `instructions` source:
31
+
32
+ - bullets parsed from `prompts/integration/red_review/red_review/prompt.md`
33
+
34
+ `output_schema` source:
35
+
36
+ - `RedReviewArtifact.model_json_schema()`
37
+
38
+ ## Tools / skills / config
39
+
40
+ - No integration-specific skills are injected.
41
+ - No tool definitions are injected.
@@ -0,0 +1,41 @@
1
+ # Red Review Node Contract
2
+
3
+ RedReview is a real GenAI node: critique red integration proofs for alignment, adequacy, and workflow-side-effect coverage.
4
+
5
+ ## What this file is
6
+
7
+ Stable node doctrine loaded by:
8
+
9
+ - `load_integration_node_instruction("red_review")`
10
+ - `RedReviewNode.get_agent_config()`
11
+
12
+ ## What actually reaches the model
13
+
14
+ The model-facing payload is assembled from:
15
+
16
+ - stage bullets in `prompts/integration/red_review/red_review/prompt.md`
17
+ - runtime `context_payload` from `src/devflow_engine/integration/dag.py`
18
+ - `RedReviewArtifact.model_json_schema()`
19
+ - `return_format: "json_only"`
20
+
21
+ ## Real injected runtime components
22
+
23
+ `context_payload` fields:
24
+
25
+ - `idea_id` ← `event.idea_id`
26
+ - `validated_workflows` ← `task_context.metadata["workflows"]`
27
+ - `red_artifact` ← `task_context.metadata["red_artifact"]`
28
+ - `validation_report` ← `task_context.metadata["validation_report"]`
29
+
30
+ `instructions` source:
31
+
32
+ - bullets parsed from `prompts/integration/red_review/red_review/prompt.md`
33
+
34
+ `output_schema` source:
35
+
36
+ - `RedReviewArtifact.model_json_schema()`
37
+
38
+ ## Tools / skills / config
39
+
40
+ - No integration-specific skills are injected.
41
+ - No tool definitions are injected.