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.
- devflow_engine/__init__.py +3 -0
- devflow_engine/agentic_prompts.py +100 -0
- devflow_engine/agentic_runtime.py +398 -0
- devflow_engine/api_key_flow_harness.py +539 -0
- devflow_engine/api_keys.py +357 -0
- devflow_engine/bootstrap/__init__.py +2 -0
- devflow_engine/bootstrap/provision_from_template.py +84 -0
- devflow_engine/cli/__init__.py +0 -0
- devflow_engine/cli/app.py +7270 -0
- devflow_engine/core/__init__.py +0 -0
- devflow_engine/core/config.py +86 -0
- devflow_engine/core/logging.py +29 -0
- devflow_engine/core/paths.py +45 -0
- devflow_engine/core/toml_kv.py +33 -0
- devflow_engine/devflow_event_worker.py +1292 -0
- devflow_engine/devflow_state.py +201 -0
- devflow_engine/devin2/__init__.py +9 -0
- devflow_engine/devin2/agent_definition.py +120 -0
- devflow_engine/devin2/pi_runner.py +204 -0
- devflow_engine/devin_orchestration.py +69 -0
- devflow_engine/docs/prompts/anti-patterns.md +42 -0
- devflow_engine/docs/prompts/devin-agent-prompt.md +55 -0
- devflow_engine/docs/prompts/devin2-agent-prompt.md +81 -0
- devflow_engine/docs/prompts/examples/devin-vapi-clone-reference-exchange.json +85 -0
- devflow_engine/doctor/__init__.py +2 -0
- devflow_engine/doctor/triage.py +140 -0
- devflow_engine/error/__init__.py +0 -0
- devflow_engine/error/remediation.py +21 -0
- devflow_engine/errors/error_solver_dag.py +522 -0
- devflow_engine/errors/runtime_observability.py +67 -0
- devflow_engine/idea/__init__.py +4 -0
- devflow_engine/idea/actors.py +481 -0
- devflow_engine/idea/agentic.py +465 -0
- devflow_engine/idea/analyze.py +93 -0
- devflow_engine/idea/devin_chat_dag.py +1 -0
- devflow_engine/idea/diff.py +99 -0
- devflow_engine/idea/drafts.py +446 -0
- devflow_engine/idea/idea_creation_dag.py +643 -0
- devflow_engine/idea/ideation_enrichment.py +355 -0
- devflow_engine/idea/ideation_enrichment_worker.py +19 -0
- devflow_engine/idea/paths.py +28 -0
- devflow_engine/idea/promote.py +53 -0
- devflow_engine/idea/redaction.py +27 -0
- devflow_engine/idea/repo_tools.py +1277 -0
- devflow_engine/idea/response_mode.py +30 -0
- devflow_engine/idea/story_pipeline.py +1585 -0
- devflow_engine/idea/sufficiency.py +376 -0
- devflow_engine/idea/traditional_stories.py +1257 -0
- devflow_engine/implementation/__init__.py +0 -0
- devflow_engine/implementation/alembic_preflight.py +700 -0
- devflow_engine/implementation/dag.py +8450 -0
- devflow_engine/implementation/green_gate.py +93 -0
- devflow_engine/implementation/prompts.py +108 -0
- devflow_engine/implementation/test_runtime.py +623 -0
- devflow_engine/integration/__init__.py +19 -0
- devflow_engine/integration/agentic.py +66 -0
- devflow_engine/integration/dag.py +3539 -0
- devflow_engine/integration/prompts.py +114 -0
- devflow_engine/integration/supabase_schema.sql +31 -0
- devflow_engine/integration/supabase_sync.py +177 -0
- devflow_engine/llm/__init__.py +1 -0
- devflow_engine/llm/cli_one_shot.py +84 -0
- devflow_engine/llm/cli_stream.py +371 -0
- devflow_engine/llm/execution_context.py +26 -0
- devflow_engine/llm/invoke.py +1322 -0
- devflow_engine/llm/provider_api.py +304 -0
- devflow_engine/llm/repo_knowledge.py +588 -0
- devflow_engine/llm_primitives.py +315 -0
- devflow_engine/orchestration.py +62 -0
- devflow_engine/planning/__init__.py +0 -0
- devflow_engine/planning/analyze_repo.py +92 -0
- devflow_engine/planning/render_drafts.py +133 -0
- devflow_engine/playground/__init__.py +0 -0
- devflow_engine/playground/hooks.py +26 -0
- devflow_engine/playwright_workflow/__init__.py +5 -0
- devflow_engine/playwright_workflow/dag.py +1317 -0
- devflow_engine/process/__init__.py +5 -0
- devflow_engine/process/dag.py +59 -0
- devflow_engine/project_registration/__init__.py +3 -0
- devflow_engine/project_registration/dag.py +1581 -0
- devflow_engine/project_registry.py +109 -0
- devflow_engine/prompts/devin/generic/prompt.md +6 -0
- devflow_engine/prompts/devin/ideation/prompt.md +263 -0
- devflow_engine/prompts/devin/ideation/scenarios.md +5 -0
- devflow_engine/prompts/devin/ideation_loop/prompt.md +6 -0
- devflow_engine/prompts/devin/insight/prompt.md +11 -0
- devflow_engine/prompts/devin/insight/scenarios.md +5 -0
- devflow_engine/prompts/devin/intake/prompt.md +15 -0
- devflow_engine/prompts/devin/iterate/prompt.md +12 -0
- devflow_engine/prompts/devin/shared/eval_doctrine.md +9 -0
- devflow_engine/prompts/devin/shared/principles.md +246 -0
- devflow_engine/prompts/devin_eval/assessment/prompt.md +18 -0
- devflow_engine/prompts/idea/api_ideation_agent/prompt.md +8 -0
- devflow_engine/prompts/idea/api_insight_agent/prompt.md +8 -0
- devflow_engine/prompts/idea/response_doctrine/prompt.md +18 -0
- devflow_engine/prompts/implementation/dependency_assessment/prompt.md +12 -0
- devflow_engine/prompts/implementation/green/green/prompt.md +11 -0
- devflow_engine/prompts/implementation/green/node_config/prompt.md +3 -0
- devflow_engine/prompts/implementation/green_review/outcome_review/prompt.md +5 -0
- devflow_engine/prompts/implementation/green_review/prior_run_review/prompt.md +5 -0
- devflow_engine/prompts/implementation/red/prompt.md +27 -0
- devflow_engine/prompts/implementation/redreview/prompt.md +23 -0
- devflow_engine/prompts/implementation/redreview_repair/prompt.md +16 -0
- devflow_engine/prompts/implementation/setupdoc/prompt.md +10 -0
- devflow_engine/prompts/implementation/story_planning/prompt.md +13 -0
- devflow_engine/prompts/implementation/test_design/prompt.md +27 -0
- devflow_engine/prompts/integration/README.md +185 -0
- devflow_engine/prompts/integration/green/example.md +67 -0
- devflow_engine/prompts/integration/green/green/prompt.md +10 -0
- devflow_engine/prompts/integration/green/node_config/prompt.md +42 -0
- devflow_engine/prompts/integration/green/past_prompts/20260417T212300/green/prompt.md +15 -0
- devflow_engine/prompts/integration/green/past_prompts/20260417T212300/node_config/prompt.md +42 -0
- devflow_engine/prompts/integration/green_enrich/example.md +79 -0
- devflow_engine/prompts/integration/green_enrich/green_enrich/prompt.md +9 -0
- devflow_engine/prompts/integration/green_enrich/node_config/prompt.md +41 -0
- devflow_engine/prompts/integration/green_enrich/past_prompts/20260417T212300/green_enrich/prompt.md +14 -0
- devflow_engine/prompts/integration/green_enrich/past_prompts/20260417T212300/node_config/prompt.md +41 -0
- devflow_engine/prompts/integration/red/code_repair/prompt.md +12 -0
- devflow_engine/prompts/integration/red/example.md +152 -0
- devflow_engine/prompts/integration/red/node_config/prompt.md +86 -0
- devflow_engine/prompts/integration/red/past_prompts/20260417T212300/code_repair/prompt.md +19 -0
- devflow_engine/prompts/integration/red/past_prompts/20260417T212300/node_config/prompt.md +84 -0
- devflow_engine/prompts/integration/red/past_prompts/20260417T212300/red/prompt.md +16 -0
- devflow_engine/prompts/integration/red/past_prompts/20260417T212300/red_repair/prompt.md +15 -0
- devflow_engine/prompts/integration/red/past_prompts/20260417T215032/code_repair/prompt.md +10 -0
- devflow_engine/prompts/integration/red/past_prompts/20260417T215032/node_config/prompt.md +84 -0
- devflow_engine/prompts/integration/red/past_prompts/20260417T215032/red_repair/prompt.md +11 -0
- devflow_engine/prompts/integration/red/red/prompt.md +11 -0
- devflow_engine/prompts/integration/red/red_repair/prompt.md +12 -0
- devflow_engine/prompts/integration/red_review/example.md +71 -0
- devflow_engine/prompts/integration/red_review/node_config/prompt.md +41 -0
- devflow_engine/prompts/integration/red_review/past_prompts/20260417T212300/node_config/prompt.md +41 -0
- devflow_engine/prompts/integration/red_review/past_prompts/20260417T212300/red_review/prompt.md +15 -0
- devflow_engine/prompts/integration/red_review/red_review/prompt.md +9 -0
- devflow_engine/prompts/integration/resolve/example.md +111 -0
- devflow_engine/prompts/integration/resolve/node_config/prompt.md +64 -0
- devflow_engine/prompts/integration/resolve/past_prompts/20260417T212300/node_config/prompt.md +64 -0
- devflow_engine/prompts/integration/resolve/past_prompts/20260417T212300/resolve_implicated_users/prompt.md +15 -0
- devflow_engine/prompts/integration/resolve/past_prompts/20260417T212300/resolve_side_effects/prompt.md +15 -0
- devflow_engine/prompts/integration/resolve/resolve_implicated_users/prompt.md +10 -0
- devflow_engine/prompts/integration/resolve/resolve_side_effects/prompt.md +10 -0
- devflow_engine/prompts/integration/validate/build_idea_acceptance_coverage/prompt.md +12 -0
- devflow_engine/prompts/integration/validate/code_repair/prompt.md +13 -0
- devflow_engine/prompts/integration/validate/example.md +143 -0
- devflow_engine/prompts/integration/validate/node_config/prompt.md +87 -0
- devflow_engine/prompts/integration/validate/past_prompts/20260417T212300/code_repair/prompt.md +19 -0
- devflow_engine/prompts/integration/validate/past_prompts/20260417T212300/node_config/prompt.md +67 -0
- devflow_engine/prompts/integration/validate/past_prompts/20260417T212300/validate_enrich_gate/prompt.md +17 -0
- devflow_engine/prompts/integration/validate/past_prompts/20260417T212300/validate_repair/prompt.md +16 -0
- devflow_engine/prompts/integration/validate/past_prompts/20260417T215032/code_repair/prompt.md +10 -0
- devflow_engine/prompts/integration/validate/past_prompts/20260417T215032/node_config/prompt.md +67 -0
- devflow_engine/prompts/integration/validate/past_prompts/20260417T215032/validate_repair/prompt.md +9 -0
- devflow_engine/prompts/integration/validate/validate_enrich_gate/prompt.md +10 -0
- devflow_engine/prompts/integration/validate/validate_repair/prompt.md +20 -0
- devflow_engine/prompts/integration/write_workflows/example.md +100 -0
- devflow_engine/prompts/integration/write_workflows/node_config/prompt.md +44 -0
- devflow_engine/prompts/integration/write_workflows/past_prompts/20260417T212300/node_config/prompt.md +44 -0
- devflow_engine/prompts/integration/write_workflows/past_prompts/20260417T212300/write_workflows/prompt.md +17 -0
- devflow_engine/prompts/integration/write_workflows/write_workflows/prompt.md +11 -0
- devflow_engine/prompts/iterate/README.md +7 -0
- devflow_engine/prompts/iterate/coder/prompt.md +11 -0
- devflow_engine/prompts/iterate/framer/prompt.md +11 -0
- devflow_engine/prompts/iterate/iterator/prompt.md +13 -0
- devflow_engine/prompts/iterate/observer/prompt.md +11 -0
- devflow_engine/prompts/recovery/diagnosis/prompt.md +7 -0
- devflow_engine/prompts/recovery/execution/prompt.md +8 -0
- devflow_engine/prompts/recovery/execution_verification/prompt.md +7 -0
- devflow_engine/prompts/recovery/failure_investigation/prompt.md +10 -0
- devflow_engine/prompts/recovery/preflight_health_repo_repair/prompt.md +8 -0
- devflow_engine/prompts/recovery/remediation_execution/prompt.md +11 -0
- devflow_engine/prompts/recovery/root_cause_investigation/prompt.md +12 -0
- devflow_engine/prompts/scope_idea/doctrine/prompt.md +7 -0
- devflow_engine/prompts/source_doc_eval/document/prompt.md +6 -0
- devflow_engine/prompts/source_doc_eval/targeted_mutation/prompt.md +9 -0
- devflow_engine/prompts/source_doc_mutation/domain_entities/prompt.md +6 -0
- devflow_engine/prompts/source_doc_mutation/product_brief/prompt.md +6 -0
- devflow_engine/prompts/source_doc_mutation/project_doc_coherence/prompt.md +7 -0
- devflow_engine/prompts/source_doc_mutation/project_doc_render/prompt.md +9 -0
- devflow_engine/prompts/source_doc_mutation/source_doc_coherence/prompt.md +5 -0
- devflow_engine/prompts/source_doc_mutation/source_doc_enrichment_coherence/prompt.md +6 -0
- devflow_engine/prompts/source_doc_mutation/user_workflows/prompt.md +6 -0
- devflow_engine/prompts/source_scope/doctrine/prompt.md +10 -0
- devflow_engine/prompts/ui_grounding/doctrine/prompt.md +7 -0
- devflow_engine/recovery/__init__.py +3 -0
- devflow_engine/recovery/dag.py +2609 -0
- devflow_engine/recovery/models.py +220 -0
- devflow_engine/refactor.py +93 -0
- devflow_engine/registry/__init__.py +1 -0
- devflow_engine/registry/cards.py +238 -0
- devflow_engine/registry/domain_normalize.py +60 -0
- devflow_engine/registry/effects.py +65 -0
- devflow_engine/registry/enforce_report.py +150 -0
- devflow_engine/registry/module_cards_classify.py +164 -0
- devflow_engine/registry/module_cards_draft.py +184 -0
- devflow_engine/registry/module_cards_gate.py +59 -0
- devflow_engine/registry/packages.py +347 -0
- devflow_engine/registry/pathways.py +323 -0
- devflow_engine/review/__init__.py +11 -0
- devflow_engine/review/dag.py +588 -0
- devflow_engine/review/review_story.py +67 -0
- devflow_engine/scope_idea/__init__.py +3 -0
- devflow_engine/scope_idea/agentic.py +39 -0
- devflow_engine/scope_idea/dag.py +1069 -0
- devflow_engine/scope_idea/models.py +175 -0
- devflow_engine/skills/builtins/devflow/queue_failure_investigation/SKILL.md +112 -0
- devflow_engine/skills/builtins/devflow/queue_idea_to_story/SKILL.md +120 -0
- devflow_engine/skills/builtins/devflow/queue_integration/SKILL.md +105 -0
- devflow_engine/skills/builtins/devflow/queue_recovery/SKILL.md +108 -0
- devflow_engine/skills/builtins/devflow/queue_runtime_core/SKILL.md +155 -0
- devflow_engine/skills/builtins/devflow/queue_story_implementation/SKILL.md +122 -0
- devflow_engine/skills/builtins/devin/idea_to_story_handoff/SKILL.md +120 -0
- devflow_engine/skills/builtins/devin/ideation/SKILL.md +168 -0
- devflow_engine/skills/builtins/devin/ideation/state-and-phrasing-reference.md +18 -0
- devflow_engine/skills/builtins/devin/insight/SKILL.md +22 -0
- devflow_engine/skills/registry.example.yaml +42 -0
- devflow_engine/source_doc_assumptions.py +291 -0
- devflow_engine/source_doc_mutation_dag.py +1606 -0
- devflow_engine/source_doc_mutation_eval.py +417 -0
- devflow_engine/source_doc_mutation_worker.py +25 -0
- devflow_engine/source_docs_schema.py +207 -0
- devflow_engine/source_docs_updater.py +309 -0
- devflow_engine/source_scope/__init__.py +15 -0
- devflow_engine/source_scope/agentic.py +45 -0
- devflow_engine/source_scope/dag.py +1626 -0
- devflow_engine/source_scope/models.py +177 -0
- devflow_engine/stores/__init__.py +0 -0
- devflow_engine/stores/execution_store.py +3534 -0
- devflow_engine/story/__init__.py +0 -0
- devflow_engine/story/contracts.py +160 -0
- devflow_engine/story/discovery.py +47 -0
- devflow_engine/story/evidence.py +118 -0
- devflow_engine/story/hashing.py +27 -0
- devflow_engine/story/implemented_queue_purge.py +148 -0
- devflow_engine/story/indexer.py +105 -0
- devflow_engine/story/io.py +20 -0
- devflow_engine/story/markdown_contracts.py +298 -0
- devflow_engine/story/reconciliation.py +408 -0
- devflow_engine/story/validate_stories.py +149 -0
- devflow_engine/story/validate_tests_story.py +512 -0
- devflow_engine/story/validation.py +133 -0
- devflow_engine/ui_grounding/__init__.py +11 -0
- devflow_engine/ui_grounding/agentic.py +31 -0
- devflow_engine/ui_grounding/dag.py +874 -0
- devflow_engine/ui_grounding/models.py +224 -0
- devflow_engine/ui_grounding/pencil_bridge.py +247 -0
- devflow_engine/vendor/__init__.py +0 -0
- devflow_engine/vendor/datalumina_genai/__init__.py +11 -0
- devflow_engine/vendor/datalumina_genai/core/__init__.py +0 -0
- devflow_engine/vendor/datalumina_genai/core/exceptions.py +9 -0
- devflow_engine/vendor/datalumina_genai/core/nodes/__init__.py +0 -0
- devflow_engine/vendor/datalumina_genai/core/nodes/agent.py +48 -0
- devflow_engine/vendor/datalumina_genai/core/nodes/agent_streaming_node.py +26 -0
- devflow_engine/vendor/datalumina_genai/core/nodes/base.py +89 -0
- devflow_engine/vendor/datalumina_genai/core/nodes/concurrent.py +30 -0
- devflow_engine/vendor/datalumina_genai/core/nodes/router.py +69 -0
- devflow_engine/vendor/datalumina_genai/core/schema.py +72 -0
- devflow_engine/vendor/datalumina_genai/core/task.py +52 -0
- devflow_engine/vendor/datalumina_genai/core/validate.py +139 -0
- devflow_engine/vendor/datalumina_genai/core/workflow.py +200 -0
- devflow_engine/worker.py +1086 -0
- devflow_engine/worker_guard.py +233 -0
- devflow_engine-1.0.0.dist-info/METADATA +235 -0
- devflow_engine-1.0.0.dist-info/RECORD +393 -0
- devflow_engine-1.0.0.dist-info/WHEEL +4 -0
- devflow_engine-1.0.0.dist-info/entry_points.txt +3 -0
- devin/__init__.py +6 -0
- devin/dag.py +58 -0
- devin/dag_two_arm.py +138 -0
- devin/devin_chat_scenario_catalog.json +588 -0
- devin/devin_eval.py +677 -0
- devin/nodes/__init__.py +0 -0
- devin/nodes/ideation/__init__.py +0 -0
- devin/nodes/ideation/node.py +195 -0
- devin/nodes/ideation/playground.py +267 -0
- devin/nodes/ideation/prompt.md +65 -0
- devin/nodes/ideation/scenarios/continue_refinement.py +13 -0
- devin/nodes/ideation/scenarios/continue_refinement_evals.py +18 -0
- devin/nodes/ideation/scenarios/idea_fits_existing_patterns.py +17 -0
- devin/nodes/ideation/scenarios/idea_fits_existing_patterns_evals.py +16 -0
- devin/nodes/ideation/scenarios/large_idea_split.py +4 -0
- devin/nodes/ideation/scenarios/large_idea_split_evals.py +17 -0
- devin/nodes/ideation/scenarios/source_documentation_added.py +4 -0
- devin/nodes/ideation/scenarios/source_documentation_added_evals.py +16 -0
- devin/nodes/ideation/scenarios/user_says_create_it.py +30 -0
- devin/nodes/ideation/scenarios/user_says_create_it_evals.py +23 -0
- devin/nodes/ideation/scenarios/vague_idea.py +16 -0
- devin/nodes/ideation/scenarios/vague_idea_evals.py +47 -0
- devin/nodes/ideation/tools.json +312 -0
- devin/nodes/insight/__init__.py +0 -0
- devin/nodes/insight/node.py +49 -0
- devin/nodes/insight/playground.py +154 -0
- devin/nodes/insight/prompt.md +61 -0
- devin/nodes/insight/scenarios/architecture_pattern_query.py +15 -0
- devin/nodes/insight/scenarios/architecture_pattern_query_evals.py +25 -0
- devin/nodes/insight/scenarios/codebase_exploration.py +15 -0
- devin/nodes/insight/scenarios/codebase_exploration_evals.py +23 -0
- devin/nodes/insight/scenarios/devin_ideation_routing.py +19 -0
- devin/nodes/insight/scenarios/devin_ideation_routing_evals.py +39 -0
- devin/nodes/insight/scenarios/devin_insight_routing.py +20 -0
- devin/nodes/insight/scenarios/devin_insight_routing_evals.py +40 -0
- devin/nodes/insight/scenarios/operational_debugging.py +15 -0
- devin/nodes/insight/scenarios/operational_debugging_evals.py +23 -0
- devin/nodes/insight/scenarios/operational_question.py +9 -0
- devin/nodes/insight/scenarios/operational_question_evals.py +8 -0
- devin/nodes/insight/scenarios/queue_status.py +15 -0
- devin/nodes/insight/scenarios/queue_status_evals.py +23 -0
- devin/nodes/insight/scenarios/source_doc_explanation.py +14 -0
- devin/nodes/insight/scenarios/source_doc_explanation_evals.py +21 -0
- devin/nodes/insight/scenarios/worker_state_check.py +15 -0
- devin/nodes/insight/scenarios/worker_state_check_evals.py +22 -0
- devin/nodes/insight/tools.json +126 -0
- devin/nodes/intake/__init__.py +0 -0
- devin/nodes/intake/node.py +27 -0
- devin/nodes/intake/playground.py +47 -0
- devin/nodes/intake/prompt.md +12 -0
- devin/nodes/intake/scenarios/ideation_routing.py +4 -0
- devin/nodes/intake/scenarios/ideation_routing_evals.py +5 -0
- devin/nodes/intake/scenarios/insight_routing.py +4 -0
- devin/nodes/intake/scenarios/insight_routing_evals.py +5 -0
- devin/nodes/iterate/README.md +44 -0
- devin/nodes/iterate/__init__.py +1 -0
- devin/nodes/iterate/_archived_design_stages/01-objectives-requirements.md +112 -0
- devin/nodes/iterate/_archived_design_stages/02-evals.md +131 -0
- devin/nodes/iterate/_archived_design_stages/03-tools-and-boundaries.md +110 -0
- devin/nodes/iterate/_archived_design_stages/04-harness-and-playground.md +32 -0
- devin/nodes/iterate/_archived_design_stages/05-prompt-deferred.md +11 -0
- devin/nodes/iterate/_archived_design_stages/coder_agent_design/01-objectives-requirements.md +20 -0
- devin/nodes/iterate/_archived_design_stages/coder_agent_design/02-evals.md +8 -0
- devin/nodes/iterate/_archived_design_stages/coder_agent_design/03-tools-and-boundaries.md +14 -0
- devin/nodes/iterate/_archived_design_stages/coder_agent_design/04-harness-and-playground.md +12 -0
- devin/nodes/iterate/_archived_design_stages/framer_agent_design/01-objectives-requirements.md +20 -0
- devin/nodes/iterate/_archived_design_stages/framer_agent_design/02-evals.md +8 -0
- devin/nodes/iterate/_archived_design_stages/framer_agent_design/03-tools-and-boundaries.md +13 -0
- devin/nodes/iterate/_archived_design_stages/framer_agent_design/04-harness-and-playground.md +12 -0
- devin/nodes/iterate/_archived_design_stages/iterator_agent_design/01-objectives-requirements.md +25 -0
- devin/nodes/iterate/_archived_design_stages/iterator_agent_design/02-evals.md +9 -0
- devin/nodes/iterate/_archived_design_stages/iterator_agent_design/03-tools-and-boundaries.md +14 -0
- devin/nodes/iterate/_archived_design_stages/iterator_agent_design/04-harness-and-playground.md +12 -0
- devin/nodes/iterate/_archived_design_stages/observer_agent_design/01-objectives-requirements.md +20 -0
- devin/nodes/iterate/_archived_design_stages/observer_agent_design/02-evals.md +8 -0
- devin/nodes/iterate/_archived_design_stages/observer_agent_design/03-tools-and-boundaries.md +14 -0
- devin/nodes/iterate/_archived_design_stages/observer_agent_design/04-harness-and-playground.md +13 -0
- devin/nodes/iterate/agent-roles.md +89 -0
- devin/nodes/iterate/agents/README.md +10 -0
- devin/nodes/iterate/artifacts.md +504 -0
- devin/nodes/iterate/contract.md +100 -0
- devin/nodes/iterate/eval-plan.md +74 -0
- devin/nodes/iterate/node.py +100 -0
- devin/nodes/iterate/pipeline/README.md +13 -0
- devin/nodes/iterate/playground-contract.md +76 -0
- devin/nodes/iterate/prompt.md +11 -0
- devin/nodes/iterate/scenarios/README.md +38 -0
- devin/nodes/iterate/scenarios/artifact-and-loop-scenarios.md +101 -0
- devin/nodes/iterate/scenarios/coder_artifact_alignment.py +32 -0
- devin/nodes/iterate/scenarios/coder_artifact_alignment_evals.py +45 -0
- devin/nodes/iterate/scenarios/coder_bounded_fix.py +27 -0
- devin/nodes/iterate/scenarios/coder_bounded_fix_evals.py +45 -0
- devin/nodes/iterate/scenarios/devin_iterate_routing.py +21 -0
- devin/nodes/iterate/scenarios/devin_iterate_routing_evals.py +36 -0
- devin/nodes/iterate/scenarios/framer_scope_boundary.py +25 -0
- devin/nodes/iterate/scenarios/framer_scope_boundary_evals.py +57 -0
- devin/nodes/iterate/scenarios/framer_task_framing.py +25 -0
- devin/nodes/iterate/scenarios/framer_task_framing_evals.py +58 -0
- devin/nodes/iterate/scenarios/iterate_error_fix.py +21 -0
- devin/nodes/iterate/scenarios/iterate_error_fix_evals.py +39 -0
- devin/nodes/iterate/scenarios/iterate_quick_change.py +21 -0
- devin/nodes/iterate/scenarios/iterate_quick_change_evals.py +35 -0
- devin/nodes/iterate/scenarios/iterate_to_idea_promotion.py +23 -0
- devin/nodes/iterate/scenarios/iterate_to_idea_promotion_evals.py +53 -0
- devin/nodes/iterate/scenarios/iterate_to_insight_reroute.py +23 -0
- devin/nodes/iterate/scenarios/iterate_to_insight_reroute_evals.py +53 -0
- devin/nodes/iterate/scenarios/observer_evidence_seam.py +28 -0
- devin/nodes/iterate/scenarios/observer_evidence_seam_evals.py +55 -0
- devin/nodes/iterate/scenarios/observer_repro_creation.py +28 -0
- devin/nodes/iterate/scenarios/observer_repro_creation_evals.py +45 -0
- devin/nodes/iterate/scenarios/routing-matrix.md +45 -0
- devin/nodes/shared/__init__.py +0 -0
- devin/nodes/shared/filemaker_expert.md +80 -0
- devin/nodes/shared/filemaker_expert.py +354 -0
- devin/nodes/shared/filemaker_expert_eval/runner.py +176 -0
- devin/nodes/shared/filemaker_expert_eval/scenarios.json +65 -0
- devin/nodes/shared/goldilocks_advisor_eval/runner.py +214 -0
- devin/nodes/shared/goldilocks_advisor_eval/scenarios.json +58 -0
- devin/nodes/shared/helpers.py +156 -0
- devin/nodes/shared/idea_compliance_advisor_eval/runner.py +252 -0
- devin/nodes/shared/idea_compliance_advisor_eval/scenarios.json +75 -0
- devin/nodes/shared/models.py +44 -0
- devin/nodes/shared/post.py +40 -0
- devin/nodes/shared/router.py +107 -0
- devin/nodes/shared/tools.py +191 -0
- devin/shared/devin-chat-rubric.md +237 -0
- devin/shared/devin-chat-scenario-suite.md +90 -0
- devin/shared/eval_doctrine.md +9 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# Integration prompt assembly: concrete runtime shape
|
|
2
|
+
|
|
3
|
+
This directory contains two different kinds of prompt artifacts, and they do **not** play the same role.
|
|
4
|
+
|
|
5
|
+
## 1) Stable node doctrine (`node_config/prompt.md`)
|
|
6
|
+
|
|
7
|
+
For each integration node, `node_config/prompt.md` is loaded by:
|
|
8
|
+
|
|
9
|
+
- `src/devflow_engine/integration/prompts.py` → `load_integration_node_instruction(node)`
|
|
10
|
+
- consumed in `src/devflow_engine/integration/dag.py` via `get_agent_config()`
|
|
11
|
+
|
|
12
|
+
Example:
|
|
13
|
+
|
|
14
|
+
- `ResolveSideEffectsAndImplicatedUsersNode.get_agent_config()` loads `prompts/integration/resolve/node_config/prompt.md`
|
|
15
|
+
- `ValidateEnrichGateNode.get_agent_config()` loads `prompts/integration/validate/node_config/prompt.md`
|
|
16
|
+
|
|
17
|
+
**Current code-grounded reality:** this node doctrine is stored on `AgentConfig.instructions`, but the current integration runtime path does **not** inject that string into the JSON prompt envelope built by `run_agent_step(...)`.
|
|
18
|
+
|
|
19
|
+
The vendored `AgentNode`/`AgentConfig` surface is currently a compatibility stub in:
|
|
20
|
+
|
|
21
|
+
- `src/devflow_engine/vendor/datalumina_genai/core/nodes/agent.py`
|
|
22
|
+
|
|
23
|
+
So `node_config/prompt.md` is best understood as **stable node doctrine / node contract documentation**, not as the literal prompt body the model sees.
|
|
24
|
+
|
|
25
|
+
## 2) Stable stage prompt bullets (`<stage>/<prompt.md>`)
|
|
26
|
+
|
|
27
|
+
These files *do* feed the assembled model payload.
|
|
28
|
+
|
|
29
|
+
They are loaded by:
|
|
30
|
+
|
|
31
|
+
- `src/devflow_engine/integration/prompts.py` → `load_integration_stage_guidance(stage_name)`
|
|
32
|
+
- called from `src/devflow_engine/integration/agentic.py` → `run_integration_agent_step(...)`
|
|
33
|
+
- passed into `src/devflow_engine/agentic_runtime.py` → `run_agent_step(...)`
|
|
34
|
+
- serialized into the prompt envelope as `instructions`
|
|
35
|
+
|
|
36
|
+
Examples:
|
|
37
|
+
|
|
38
|
+
- `prompts/integration/resolve/resolve_side_effects/prompt.md`
|
|
39
|
+
- `prompts/integration/validate/validate_enrich_gate/prompt.md`
|
|
40
|
+
- `prompts/integration/red/red/prompt.md`
|
|
41
|
+
- `prompts/integration/red/code_repair/prompt.md`
|
|
42
|
+
|
|
43
|
+
## 3) Runtime-built context (`context_payload`)
|
|
44
|
+
|
|
45
|
+
This is the largest injected component, and it is built in `src/devflow_engine/integration/dag.py` immediately before each agent call.
|
|
46
|
+
|
|
47
|
+
Concrete examples:
|
|
48
|
+
|
|
49
|
+
- Resolve node injects:
|
|
50
|
+
- `idea_id`
|
|
51
|
+
- `implemented_idea`
|
|
52
|
+
- `implemented_stories`
|
|
53
|
+
- `code_evidence`
|
|
54
|
+
- `source_docs`
|
|
55
|
+
- `canonical_actor_allowed_combinations`
|
|
56
|
+
- Write Workflows injects:
|
|
57
|
+
- `idea_id`
|
|
58
|
+
- `side_effects_artifact`
|
|
59
|
+
- `implicated_users_artifact`
|
|
60
|
+
- `implemented_stories`
|
|
61
|
+
- `code_evidence`
|
|
62
|
+
- `source_docs`
|
|
63
|
+
- Validate enrich injects:
|
|
64
|
+
- `idea_id`
|
|
65
|
+
- `side_effects_artifact`
|
|
66
|
+
- `implicated_users_artifact`
|
|
67
|
+
- `workflows`
|
|
68
|
+
- `implemented_stories`
|
|
69
|
+
- `code_evidence`
|
|
70
|
+
- `source_docs`
|
|
71
|
+
- Validate code repair injects:
|
|
72
|
+
- `failing_workflows`
|
|
73
|
+
- `validation_errors`
|
|
74
|
+
- `code_evidence_files`
|
|
75
|
+
- `side_effects_artifact`
|
|
76
|
+
- `implicated_users_artifact`
|
|
77
|
+
- `implemented_stories`
|
|
78
|
+
- Red injects:
|
|
79
|
+
- `idea_id`
|
|
80
|
+
- `validated_workflows`
|
|
81
|
+
- `validation_report`
|
|
82
|
+
- `side_effects_artifact`
|
|
83
|
+
- `implicated_users_artifact`
|
|
84
|
+
- `code_evidence`
|
|
85
|
+
- Red code repair injects:
|
|
86
|
+
- `failing_packages`
|
|
87
|
+
- `validation_errors`
|
|
88
|
+
- `failing_workflows`
|
|
89
|
+
- `side_effects_artifact`
|
|
90
|
+
- `implicated_users_artifact`
|
|
91
|
+
- `code_evidence`
|
|
92
|
+
- Red review injects:
|
|
93
|
+
- `idea_id`
|
|
94
|
+
- `validated_workflows`
|
|
95
|
+
- `red_artifact`
|
|
96
|
+
- `validation_report`
|
|
97
|
+
- Green injects:
|
|
98
|
+
- `idea_id`
|
|
99
|
+
- `validated_workflows`
|
|
100
|
+
- `red_review_artifact`
|
|
101
|
+
- `code_evidence`
|
|
102
|
+
- `implemented_stories`
|
|
103
|
+
- Green enrich injects:
|
|
104
|
+
- `idea_id`
|
|
105
|
+
- `validated_workflows`
|
|
106
|
+
- `green_artifact`
|
|
107
|
+
- `red_review_artifact`
|
|
108
|
+
|
|
109
|
+
Those fields are sourced from a mix of:
|
|
110
|
+
|
|
111
|
+
- the incoming integration event (`event.idea_id`, `event.implemented_idea`, `event.implemented_stories`, `event.code_evidence`, `event.source_docs`)
|
|
112
|
+
- prior node outputs stored in `task_context.metadata`
|
|
113
|
+
- repo files loaded earlier in the pipeline (for example via prepared integration payloads and written artifacts)
|
|
114
|
+
- repair-time file reads such as `_load_code_evidence_for_workflows(...)`
|
|
115
|
+
|
|
116
|
+
## 4) Output schema contract
|
|
117
|
+
|
|
118
|
+
`run_agent_step(...)` always injects the expected output schema as:
|
|
119
|
+
|
|
120
|
+
- `output_schema = output_model.model_json_schema()`
|
|
121
|
+
|
|
122
|
+
For integration, the concrete model classes live in `src/devflow_engine/integration/dag.py`:
|
|
123
|
+
|
|
124
|
+
- `SideEffectsArtifact`
|
|
125
|
+
- `ImplicatedUsersArtifact`
|
|
126
|
+
- `WorkflowSetArtifact`
|
|
127
|
+
- `ValidateEnrichArtifact`
|
|
128
|
+
- `CodeRepairArtifact`
|
|
129
|
+
- `RedArtifact`
|
|
130
|
+
- `RedReviewArtifact`
|
|
131
|
+
- `GreenArtifact`
|
|
132
|
+
- `GreenEnrichArtifact`
|
|
133
|
+
|
|
134
|
+
## 5) Return-format contract
|
|
135
|
+
|
|
136
|
+
`src/devflow_engine/agentic_runtime.py` injects:
|
|
137
|
+
|
|
138
|
+
- `return_format: "json_only"`
|
|
139
|
+
|
|
140
|
+
and calls `invoke_llm(...)` with:
|
|
141
|
+
|
|
142
|
+
- `response_contract="json_only"`
|
|
143
|
+
- `interaction_model="agentic"`
|
|
144
|
+
- `delivery_model="streaming"`
|
|
145
|
+
|
|
146
|
+
## 6) Tools / skills / runtime config: what actually applies here
|
|
147
|
+
|
|
148
|
+
For the **current integration runtime path**:
|
|
149
|
+
|
|
150
|
+
- No integration-specific skill bundle is injected into the prompt payload.
|
|
151
|
+
- No tool list is assembled by `integration/agentic.py` or `agentic_runtime.py`.
|
|
152
|
+
- If the provider path is Anthropic API, `src/devflow_engine/llm/invoke.py` calls `anthropic_messages_create(...)` with:
|
|
153
|
+
- `system_prompt=""`
|
|
154
|
+
- `messages=[{"role": "user", "content": <assembled JSON prompt>}]`
|
|
155
|
+
- `tools=[]`
|
|
156
|
+
- Model/provider/base command selection is runtime config, not prompt doctrine. It is resolved in `src/devflow_engine/llm/invoke.py` from `LlmInvocationRequest(...)` plus global LLM config/tier config.
|
|
157
|
+
|
|
158
|
+
So for integration, the useful separation is:
|
|
159
|
+
|
|
160
|
+
- **Stable node doctrine:** `node_config/prompt.md`
|
|
161
|
+
- **Stable prompt text that actually reaches the model:** stage `prompt.md` bullet lines
|
|
162
|
+
- **Runtime-built context:** `context_payload` from `integration/dag.py`
|
|
163
|
+
- **Runtime config:** provider/model/CLI/API transport chosen by `invoke_llm(...)`
|
|
164
|
+
- **Tools/skills:** none currently injected by the integration path
|
|
165
|
+
|
|
166
|
+
## 7) Size-management behavior
|
|
167
|
+
|
|
168
|
+
If the prompt envelope is too large, `src/devflow_engine/agentic_runtime.py` may:
|
|
169
|
+
|
|
170
|
+
1. compact large strings/lists/dicts in `context`, or
|
|
171
|
+
2. persist the full context to `.devflow/agent_debug/context_artifacts/<stage>_context.json`
|
|
172
|
+
and replace inline `context` with:
|
|
173
|
+
- `context_artifact_path`
|
|
174
|
+
- `context_artifact_note`
|
|
175
|
+
|
|
176
|
+
## 8) Example files
|
|
177
|
+
|
|
178
|
+
Each integration node directory includes an `example.md` showing the **assembled payload shape** the model actually receives for that node.
|
|
179
|
+
|
|
180
|
+
Each example explicitly labels:
|
|
181
|
+
|
|
182
|
+
- what came from stable stage prompt markdown
|
|
183
|
+
- what came from runtime-built context
|
|
184
|
+
- what schema/model contract was injected
|
|
185
|
+
- what was reconstructed from code rather than copied from a captured past run
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Green node assembled payload
|
|
2
|
+
|
|
3
|
+
## Provenance
|
|
4
|
+
|
|
5
|
+
Reconstructed from:
|
|
6
|
+
|
|
7
|
+
- `prompts/integration/green/green/prompt.md`
|
|
8
|
+
- `src/devflow_engine/integration/dag.py` green agent call
|
|
9
|
+
- `src/devflow_engine/agentic_runtime.py`
|
|
10
|
+
- `GreenArtifact` 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/green/node_config/prompt.md`
|
|
17
|
+
- Actual `instructions` come from `green/green/prompt.md`
|
|
18
|
+
- Actual `context` comes from `task_context.metadata` + `event.*`
|
|
19
|
+
- No skills or tools are injected here
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"task": "integration_green",
|
|
24
|
+
"instructions": [
|
|
25
|
+
"Produce exactly one green package per reviewed workflow package.",
|
|
26
|
+
"Distinguish implementation changes, harness support changes, passing strategy, and proof artifacts.",
|
|
27
|
+
"Keep proposed changes aligned to the validated workflow, red review, and available evidence.",
|
|
28
|
+
"If a required seam or observable is missing, say so explicitly.",
|
|
29
|
+
"Do not fake passability.",
|
|
30
|
+
"Return JSON only."
|
|
31
|
+
],
|
|
32
|
+
"context": {
|
|
33
|
+
"idea_id": "idea_checkout_recovery_v1",
|
|
34
|
+
"validated_workflows": [
|
|
35
|
+
{
|
|
36
|
+
"workflow_id": "wf_recovery_email_sent",
|
|
37
|
+
"side_effect": { "id": "se_recovery_email_sent", "name": "Recovery email sent" },
|
|
38
|
+
"interaction_points": [
|
|
39
|
+
{ "kind": "endpoint", "name": "POST /api/carts/{cart_id}/recover", "implemented": true }
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"red_review_artifact": {
|
|
44
|
+
"idea_id": "idea_checkout_recovery_v1",
|
|
45
|
+
"summary": "One package needs stronger observability.",
|
|
46
|
+
"reviewed_packages": [],
|
|
47
|
+
"findings": [
|
|
48
|
+
{
|
|
49
|
+
"workflow_id": "wf_recovery_email_sent",
|
|
50
|
+
"verdict": "needs_repair",
|
|
51
|
+
"findings": ["Current proof does not observe durable email-delivery completion."],
|
|
52
|
+
"repair_directions": ["Add a delivery-status artifact or background observer seam."]
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"code_evidence": [
|
|
57
|
+
{ "path": "src/jobs/recovery_email_job.py", "side_effect_ids": [], "interaction_points": [] },
|
|
58
|
+
{ "path": "src/notifications/email_delivery.py", "side_effect_ids": [], "interaction_points": [] }
|
|
59
|
+
],
|
|
60
|
+
"implemented_stories": [
|
|
61
|
+
{ "story_id": "STORY-recovery-email-send", "title": "Send recovery reminder email", "side_effect_ids": ["se_recovery_email_sent"], "required_planes": [] }
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
"output_schema": "GreenArtifact.model_json_schema()",
|
|
65
|
+
"return_format": "json_only"
|
|
66
|
+
}
|
|
67
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Green
|
|
2
|
+
|
|
3
|
+
Specify the legitimate implementation and harness changes required to make reviewed red proofs pass.
|
|
4
|
+
|
|
5
|
+
- Produce exactly one green package per reviewed workflow package.
|
|
6
|
+
- Distinguish implementation changes, harness support changes, passing strategy, and proof artifacts.
|
|
7
|
+
- Keep proposed changes aligned to the validated workflow, red review, and available evidence.
|
|
8
|
+
- If a required seam or observable is missing, say so explicitly.
|
|
9
|
+
- Do not fake passability.
|
|
10
|
+
- Return JSON only.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Green Node Contract
|
|
2
|
+
|
|
3
|
+
Specify the legitimate implementation and harness changes required to make reviewed red proofs pass.
|
|
4
|
+
|
|
5
|
+
## What this file is
|
|
6
|
+
|
|
7
|
+
Stable node doctrine loaded by:
|
|
8
|
+
|
|
9
|
+
- `load_integration_node_instruction("green")`
|
|
10
|
+
- `GreenNode.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/green/green/prompt.md`
|
|
17
|
+
- runtime `context_payload` from `src/devflow_engine/integration/dag.py`
|
|
18
|
+
- `GreenArtifact.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_review_artifact` ← `task_context.metadata["red_review_artifact"]`
|
|
28
|
+
- `code_evidence` ← `event.code_evidence`
|
|
29
|
+
- `implemented_stories` ← `event.implemented_stories`
|
|
30
|
+
|
|
31
|
+
`instructions` source:
|
|
32
|
+
|
|
33
|
+
- bullets parsed from `prompts/integration/green/green/prompt.md`
|
|
34
|
+
|
|
35
|
+
`output_schema` source:
|
|
36
|
+
|
|
37
|
+
- `GreenArtifact.model_json_schema()`
|
|
38
|
+
|
|
39
|
+
## Tools / skills / config
|
|
40
|
+
|
|
41
|
+
- No integration-specific skills are injected.
|
|
42
|
+
- No tool definitions are injected.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Green
|
|
2
|
+
|
|
3
|
+
Green is a real GenAI node: specify the implementation and harness changes required for the reviewed red integration proofs to pass legitimately.
|
|
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
|
+
- Produce one green package per reviewed workflow package.
|
|
14
|
+
- Describe legitimate implementation changes, harness support changes, and proof artifacts needed to make red pass.
|
|
15
|
+
- Do not fake passability; if a seam must be added, say so explicitly.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Green Node Contract
|
|
2
|
+
|
|
3
|
+
Green is a real GenAI node: specify the implementation and harness changes required for the reviewed red integration proofs to pass legitimately.
|
|
4
|
+
|
|
5
|
+
## What this file is
|
|
6
|
+
|
|
7
|
+
Stable node doctrine loaded by:
|
|
8
|
+
|
|
9
|
+
- `load_integration_node_instruction("green")`
|
|
10
|
+
- `GreenNode.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/green/green/prompt.md`
|
|
17
|
+
- runtime `context_payload` from `src/devflow_engine/integration/dag.py`
|
|
18
|
+
- `GreenArtifact.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_review_artifact` ← `task_context.metadata["red_review_artifact"]`
|
|
28
|
+
- `code_evidence` ← `event.code_evidence`
|
|
29
|
+
- `implemented_stories` ← `event.implemented_stories`
|
|
30
|
+
|
|
31
|
+
`instructions` source:
|
|
32
|
+
|
|
33
|
+
- bullets parsed from `prompts/integration/green/green/prompt.md`
|
|
34
|
+
|
|
35
|
+
`output_schema` source:
|
|
36
|
+
|
|
37
|
+
- `GreenArtifact.model_json_schema()`
|
|
38
|
+
|
|
39
|
+
## Tools / skills / config
|
|
40
|
+
|
|
41
|
+
- No integration-specific skills are injected.
|
|
42
|
+
- No tool definitions are injected.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Green Enrich node assembled payload
|
|
2
|
+
|
|
3
|
+
## Provenance
|
|
4
|
+
|
|
5
|
+
Reconstructed from:
|
|
6
|
+
|
|
7
|
+
- `prompts/integration/green_enrich/green_enrich/prompt.md`
|
|
8
|
+
- `src/devflow_engine/integration/dag.py` green-enrich agent call
|
|
9
|
+
- `src/devflow_engine/agentic_runtime.py`
|
|
10
|
+
- `GreenEnrichArtifact` 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/green_enrich/node_config/prompt.md`
|
|
17
|
+
- Actual `instructions` come from `green_enrich/green_enrich/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_green_enrich",
|
|
24
|
+
"instructions": [
|
|
25
|
+
"Strengthen each workflow package using the validated workflows, green artifact, and red review artifact.",
|
|
26
|
+
"Improve assertions, anchors, and observability only where the evidence supports it.",
|
|
27
|
+
"Reduce brittleness explicitly.",
|
|
28
|
+
"Do not merely restate the green package or invent unsupported seams.",
|
|
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
|
+
"green_artifact": {
|
|
43
|
+
"idea_id": "idea_checkout_recovery_v1",
|
|
44
|
+
"summary": "Green package proposes observability improvements.",
|
|
45
|
+
"packages": [
|
|
46
|
+
{
|
|
47
|
+
"workflow_id": "wf_recovery_email_sent",
|
|
48
|
+
"side_effect_id": "se_recovery_email_sent",
|
|
49
|
+
"implementation_changes": [
|
|
50
|
+
{ "path": "src/notifications/email_delivery.py", "change": "persist delivery status by cart_id" }
|
|
51
|
+
],
|
|
52
|
+
"harness_support_changes": [
|
|
53
|
+
{ "kind": "background_observer", "change": "observe durable delivery completion event" }
|
|
54
|
+
],
|
|
55
|
+
"passing_strategy": ["assert endpoint acceptance", "assert durable delivery artifact"],
|
|
56
|
+
"proof_artifacts": [
|
|
57
|
+
{ "kind": "artifact_probe", "name": "delivery_status.json" }
|
|
58
|
+
]
|
|
59
|
+
}
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
"red_review_artifact": {
|
|
63
|
+
"idea_id": "idea_checkout_recovery_v1",
|
|
64
|
+
"summary": "One package needs stronger observability.",
|
|
65
|
+
"reviewed_packages": [],
|
|
66
|
+
"findings": [
|
|
67
|
+
{
|
|
68
|
+
"workflow_id": "wf_recovery_email_sent",
|
|
69
|
+
"verdict": "needs_repair",
|
|
70
|
+
"findings": ["Current proof relies on brittle log inspection."],
|
|
71
|
+
"repair_directions": ["Replace log-only proof with durable observable artifact."]
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"output_schema": "GreenEnrichArtifact.model_json_schema()",
|
|
77
|
+
"return_format": "json_only"
|
|
78
|
+
}
|
|
79
|
+
```
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Green Enrich
|
|
2
|
+
|
|
3
|
+
Strengthen the green proof plan with sharper assertions and less brittle observability.
|
|
4
|
+
|
|
5
|
+
- Strengthen each workflow package using the validated workflows, green artifact, and red review artifact.
|
|
6
|
+
- Improve assertions, anchors, and observability only where the evidence supports it.
|
|
7
|
+
- Reduce brittleness explicitly.
|
|
8
|
+
- Do not merely restate the green package or invent unsupported seams.
|
|
9
|
+
- Return JSON only.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Green Enrich Node Contract
|
|
2
|
+
|
|
3
|
+
Strengthen the green proof plan with sharper assertions and less brittle observability.
|
|
4
|
+
|
|
5
|
+
## What this file is
|
|
6
|
+
|
|
7
|
+
Stable node doctrine loaded by:
|
|
8
|
+
|
|
9
|
+
- `load_integration_node_instruction("green_enrich")`
|
|
10
|
+
- `GreenEnrichNode.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/green_enrich/green_enrich/prompt.md`
|
|
17
|
+
- runtime `context_payload` from `src/devflow_engine/integration/dag.py`
|
|
18
|
+
- `GreenEnrichArtifact.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
|
+
- `green_artifact` ← `task_context.metadata["green_artifact"]`
|
|
28
|
+
- `red_review_artifact` ← `task_context.metadata["red_review_artifact"]`
|
|
29
|
+
|
|
30
|
+
`instructions` source:
|
|
31
|
+
|
|
32
|
+
- bullets parsed from `prompts/integration/green_enrich/green_enrich/prompt.md`
|
|
33
|
+
|
|
34
|
+
`output_schema` source:
|
|
35
|
+
|
|
36
|
+
- `GreenEnrichArtifact.model_json_schema()`
|
|
37
|
+
|
|
38
|
+
## Tools / skills / config
|
|
39
|
+
|
|
40
|
+
- No integration-specific skills are injected.
|
|
41
|
+
- No tool definitions are injected.
|
devflow_engine/prompts/integration/green_enrich/past_prompts/20260417T212300/green_enrich/prompt.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Green Enrich
|
|
2
|
+
|
|
3
|
+
GreenEnrich is a real GenAI node: strengthen the integration proof, assertions, and observability while reducing brittleness.
|
|
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
|
+
- Strengthen proof artifacts per workflow with better assertions, sharper anchors, and observability support.
|
|
14
|
+
- Reduce brittleness explicitly; do not merely restate the green package.
|
devflow_engine/prompts/integration/green_enrich/past_prompts/20260417T212300/node_config/prompt.md
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Green Enrich Node Contract
|
|
2
|
+
|
|
3
|
+
GreenEnrich is a real GenAI node: strengthen the integration proof, assertions, and observability while reducing brittleness.
|
|
4
|
+
|
|
5
|
+
## What this file is
|
|
6
|
+
|
|
7
|
+
Stable node doctrine loaded by:
|
|
8
|
+
|
|
9
|
+
- `load_integration_node_instruction("green_enrich")`
|
|
10
|
+
- `GreenEnrichNode.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/green_enrich/green_enrich/prompt.md`
|
|
17
|
+
- runtime `context_payload` from `src/devflow_engine/integration/dag.py`
|
|
18
|
+
- `GreenEnrichArtifact.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
|
+
- `green_artifact` ← `task_context.metadata["green_artifact"]`
|
|
28
|
+
- `red_review_artifact` ← `task_context.metadata["red_review_artifact"]`
|
|
29
|
+
|
|
30
|
+
`instructions` source:
|
|
31
|
+
|
|
32
|
+
- bullets parsed from `prompts/integration/green_enrich/green_enrich/prompt.md`
|
|
33
|
+
|
|
34
|
+
`output_schema` source:
|
|
35
|
+
|
|
36
|
+
- `GreenEnrichArtifact.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,12 @@
|
|
|
1
|
+
# Red Code Repair
|
|
2
|
+
|
|
3
|
+
Repair product code only when a red proof failure exposes a real code seam problem.
|
|
4
|
+
|
|
5
|
+
- Patch the smallest real code change that fixes the current failing workflow surface.
|
|
6
|
+
- 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.
|
|
7
|
+
- Prefer files already named by the failing workflow, package interaction point, or code evidence.
|
|
8
|
+
- Update updated_workflows only when the repaired code changes workflow truth.
|
|
9
|
+
- Do not repair proof-package artifacts here. Do not edit engine, runtime, orchestration, or prompt-loading layers unless the failure explicitly originates there.
|
|
10
|
+
- If the failure is artifact-only, harness-only, or runtime-only, leave code unchanged and explain it in unresolvable_failures.
|
|
11
|
+
- Return only changed files with full contents, updated_workflows, and unresolvable_failures.
|
|
12
|
+
- Return JSON only.
|