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
devflow_engine/prompts/integration/red_review/past_prompts/20260417T212300/red_review/prompt.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Red Review
|
|
2
|
+
|
|
3
|
+
RedReview is a real GenAI node: critique red integration proofs for alignment, adequacy, and workflow-side-effect coverage.
|
|
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
|
+
- Review every red package against its workflow and side effect.
|
|
14
|
+
- Find overreach, under-assertion, poor interaction-point anchoring, and missing actor-route coverage.
|
|
15
|
+
- Return reviewed_packages as the red packages after critique, plus findings and repair_directions per workflow.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Red Review
|
|
2
|
+
|
|
3
|
+
Review red integration proof packages for alignment, adequacy, and coverage.
|
|
4
|
+
|
|
5
|
+
- Review every red package against its workflow and side effect.
|
|
6
|
+
- Find overreach, under-assertion, weak interaction-point anchoring, and missing actor-route coverage.
|
|
7
|
+
- Return reviewed_packages plus findings and repair_directions per workflow.
|
|
8
|
+
- Keep critiques evidence-based; do not invent unsupported failures.
|
|
9
|
+
- Return JSON only.
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# Resolve node assembled payloads
|
|
2
|
+
|
|
3
|
+
## Provenance
|
|
4
|
+
|
|
5
|
+
This file is **reconstructed from code**, not copied from a captured integration agent run.
|
|
6
|
+
|
|
7
|
+
Concrete sources used:
|
|
8
|
+
|
|
9
|
+
- stage prompt bullets:
|
|
10
|
+
- `prompts/integration/resolve/resolve_side_effects/prompt.md`
|
|
11
|
+
- `prompts/integration/resolve/resolve_implicated_users/prompt.md`
|
|
12
|
+
- runtime context assembly:
|
|
13
|
+
- `src/devflow_engine/integration/dag.py` (`run_integration_agent_step(... context_payload=...)` for resolve)
|
|
14
|
+
- prompt envelope assembly:
|
|
15
|
+
- `src/devflow_engine/agentic_runtime.py` → `_build_prompt(...)`
|
|
16
|
+
- output schema source:
|
|
17
|
+
- `src/devflow_engine/integration/dag.py` → `SideEffectsArtifact`, `ImplicatedUsersArtifact`
|
|
18
|
+
|
|
19
|
+
## Stable doctrine vs actual payload
|
|
20
|
+
|
|
21
|
+
- Stable node doctrine file: `prompts/integration/resolve/node_config/prompt.md`
|
|
22
|
+
- Actual `instructions` in the model payload come from the stage prompt files above.
|
|
23
|
+
- Actual `context` comes from `integration/dag.py`.
|
|
24
|
+
- Current integration path injects no skills and no tools here.
|
|
25
|
+
|
|
26
|
+
## Assembled payload: `integration_resolve_side_effects`
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"task": "integration_resolve_side_effects",
|
|
31
|
+
"instructions": [
|
|
32
|
+
"Use only supported evidence from the implemented idea, implemented stories, code evidence, and source docs.",
|
|
33
|
+
"Return every side effect the implementation actually accomplishes.",
|
|
34
|
+
"For each side effect, include concise rationale and supported story_ids.",
|
|
35
|
+
"Include concrete interaction_points when implemented; otherwise use needed_interaction_points.",
|
|
36
|
+
"Populate alignment_context with brief counts or notes that help downstream validation.",
|
|
37
|
+
"Return JSON only."
|
|
38
|
+
],
|
|
39
|
+
"context": {
|
|
40
|
+
"idea_id": "idea_checkout_recovery_v1",
|
|
41
|
+
"implemented_idea": {
|
|
42
|
+
"idea_id": "idea_checkout_recovery_v1",
|
|
43
|
+
"title": "Recover abandoned checkout carts",
|
|
44
|
+
"summary": "Detect abandoned carts and send recovery reminders when consent is present."
|
|
45
|
+
},
|
|
46
|
+
"implemented_stories": [
|
|
47
|
+
{
|
|
48
|
+
"story_id": "STORY-cart-abandonment-detection",
|
|
49
|
+
"title": "Detect abandoned carts",
|
|
50
|
+
"side_effect_ids": ["se_cart_marked_abandoned"]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"story_id": "STORY-recovery-email-send",
|
|
54
|
+
"title": "Send recovery reminder email",
|
|
55
|
+
"side_effect_ids": ["se_recovery_email_sent"]
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"code_evidence": [
|
|
59
|
+
{ "path": "src/cart/recovery.py", "side_effect_ids": [], "interaction_points": [] },
|
|
60
|
+
{ "path": "src/jobs/recovery_email_job.py", "side_effect_ids": [], "interaction_points": [] }
|
|
61
|
+
],
|
|
62
|
+
"source_docs": [
|
|
63
|
+
{ "path": "ai_docs/context/v2/project_docs/user_workflows.md" },
|
|
64
|
+
{ "path": "ai_docs/context/v2/project_docs/domain_entities.md" }
|
|
65
|
+
],
|
|
66
|
+
"canonical_actor_allowed_combinations": [
|
|
67
|
+
["human", "customer_account", "self"],
|
|
68
|
+
["human", "organization_workspace", "admin"],
|
|
69
|
+
["system", "organization_workspace", "service"],
|
|
70
|
+
["system", "platform", "service"]
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
"output_schema": "SideEffectsArtifact.model_json_schema() from src/devflow_engine/integration/dag.py",
|
|
74
|
+
"return_format": "json_only"
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Assembled payload: `integration_resolve_implicated_users`
|
|
79
|
+
|
|
80
|
+
Same runtime context fields, but different stage prompt bullets and different output schema:
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"task": "integration_resolve_implicated_users",
|
|
85
|
+
"instructions": [
|
|
86
|
+
"Use only supported evidence from the implemented idea, implemented stories, code evidence, and source docs.",
|
|
87
|
+
"Resolve implicated users into the canonical actor model only: kind, scope, authority, rationale.",
|
|
88
|
+
"Only emit canonical actor combinations allowed by the provided context.",
|
|
89
|
+
"Put rejected combinations in denied_candidates with explicit reasons.",
|
|
90
|
+
"Do not invent story-local role labels or unsupported actors.",
|
|
91
|
+
"Return JSON only."
|
|
92
|
+
],
|
|
93
|
+
"context": "same field set and sources as integration_resolve_side_effects",
|
|
94
|
+
"output_schema": "ImplicatedUsersArtifact.model_json_schema() from src/devflow_engine/integration/dag.py",
|
|
95
|
+
"return_format": "json_only"
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Transport/runtime config that is separate from the prompt body
|
|
100
|
+
|
|
101
|
+
At `run_agent_step(...)` call time:
|
|
102
|
+
|
|
103
|
+
- `delivery_model="streaming"`
|
|
104
|
+
- `interaction_model="agentic"`
|
|
105
|
+
- `response_contract="json_only"`
|
|
106
|
+
|
|
107
|
+
If Anthropic API transport is selected later by `invoke_llm(...)`, the HTTP payload uses:
|
|
108
|
+
|
|
109
|
+
- `system_prompt=""`
|
|
110
|
+
- one user message containing the JSON prompt above
|
|
111
|
+
- `tools=[]`
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Resolve Node Contract
|
|
2
|
+
|
|
3
|
+
Identify implemented side effects and implicated canonical actors from the provided evidence.
|
|
4
|
+
|
|
5
|
+
## What this file is
|
|
6
|
+
|
|
7
|
+
This file is the stable node doctrine for the Resolve node.
|
|
8
|
+
|
|
9
|
+
It is loaded by:
|
|
10
|
+
|
|
11
|
+
- `src/devflow_engine/integration/prompts.py` → `load_integration_node_instruction("resolve")`
|
|
12
|
+
- `src/devflow_engine/integration/dag.py` → `ResolveSideEffectsAndImplicatedUsersNode.get_agent_config()`
|
|
13
|
+
|
|
14
|
+
## What this file is not
|
|
15
|
+
|
|
16
|
+
It is **not** the literal prompt body sent to the model by the current integration runtime.
|
|
17
|
+
|
|
18
|
+
The current model-facing prompt is assembled from:
|
|
19
|
+
|
|
20
|
+
- stage prompt bullets in:
|
|
21
|
+
- `prompts/integration/resolve/resolve_side_effects/prompt.md`
|
|
22
|
+
- `prompts/integration/resolve/resolve_implicated_users/prompt.md`
|
|
23
|
+
- runtime `context_payload` built in `src/devflow_engine/integration/dag.py`
|
|
24
|
+
- `output_schema` injected by `src/devflow_engine/agentic_runtime.py`
|
|
25
|
+
- `return_format: "json_only"` injected by `src/devflow_engine/agentic_runtime.py`
|
|
26
|
+
|
|
27
|
+
## Real injected runtime components for this node
|
|
28
|
+
|
|
29
|
+
### Resolve side effects stage
|
|
30
|
+
|
|
31
|
+
`context_payload` fields:
|
|
32
|
+
|
|
33
|
+
- `idea_id` ← `event.idea_id`
|
|
34
|
+
- `implemented_idea` ← `event.implemented_idea`
|
|
35
|
+
- `implemented_stories` ← `event.implemented_stories`
|
|
36
|
+
- `code_evidence` ← `event.code_evidence`
|
|
37
|
+
- `source_docs` ← `event.source_docs`
|
|
38
|
+
- `canonical_actor_allowed_combinations` ← sorted `CANONICAL_ACTOR_ALLOWED_COMBINATIONS`
|
|
39
|
+
|
|
40
|
+
`instructions` source:
|
|
41
|
+
|
|
42
|
+
- bullets parsed from `prompts/integration/resolve/resolve_side_effects/prompt.md`
|
|
43
|
+
|
|
44
|
+
`output_schema` source:
|
|
45
|
+
|
|
46
|
+
- `SideEffectsArtifact.model_json_schema()`
|
|
47
|
+
|
|
48
|
+
### Resolve implicated users stage
|
|
49
|
+
|
|
50
|
+
Same `context_payload` sources as above.
|
|
51
|
+
|
|
52
|
+
`instructions` source:
|
|
53
|
+
|
|
54
|
+
- bullets parsed from `prompts/integration/resolve/resolve_implicated_users/prompt.md`
|
|
55
|
+
|
|
56
|
+
`output_schema` source:
|
|
57
|
+
|
|
58
|
+
- `ImplicatedUsersArtifact.model_json_schema()`
|
|
59
|
+
|
|
60
|
+
## Tools / skills / config
|
|
61
|
+
|
|
62
|
+
- No integration-specific skills are injected here.
|
|
63
|
+
- No tool definitions are assembled here.
|
|
64
|
+
- Runtime model/provider selection is handled separately by `src/devflow_engine/llm/invoke.py`.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Resolve Node Contract
|
|
2
|
+
|
|
3
|
+
Resolve implemented idea side effects and implicated canonical actors from implementation evidence.
|
|
4
|
+
|
|
5
|
+
## What this file is
|
|
6
|
+
|
|
7
|
+
This file is the stable node doctrine for the Resolve node.
|
|
8
|
+
|
|
9
|
+
It is loaded by:
|
|
10
|
+
|
|
11
|
+
- `src/devflow_engine/integration/prompts.py` → `load_integration_node_instruction("resolve")`
|
|
12
|
+
- `src/devflow_engine/integration/dag.py` → `ResolveSideEffectsAndImplicatedUsersNode.get_agent_config()`
|
|
13
|
+
|
|
14
|
+
## What this file is not
|
|
15
|
+
|
|
16
|
+
It is **not** the literal prompt body sent to the model by the current integration runtime.
|
|
17
|
+
|
|
18
|
+
The current model-facing prompt is assembled from:
|
|
19
|
+
|
|
20
|
+
- stage prompt bullets in:
|
|
21
|
+
- `prompts/integration/resolve/resolve_side_effects/prompt.md`
|
|
22
|
+
- `prompts/integration/resolve/resolve_implicated_users/prompt.md`
|
|
23
|
+
- runtime `context_payload` built in `src/devflow_engine/integration/dag.py`
|
|
24
|
+
- `output_schema` injected by `src/devflow_engine/agentic_runtime.py`
|
|
25
|
+
- `return_format: "json_only"` injected by `src/devflow_engine/agentic_runtime.py`
|
|
26
|
+
|
|
27
|
+
## Real injected runtime components for this node
|
|
28
|
+
|
|
29
|
+
### Resolve side effects stage
|
|
30
|
+
|
|
31
|
+
`context_payload` fields:
|
|
32
|
+
|
|
33
|
+
- `idea_id` ← `event.idea_id`
|
|
34
|
+
- `implemented_idea` ← `event.implemented_idea`
|
|
35
|
+
- `implemented_stories` ← `event.implemented_stories`
|
|
36
|
+
- `code_evidence` ← `event.code_evidence`
|
|
37
|
+
- `source_docs` ← `event.source_docs`
|
|
38
|
+
- `canonical_actor_allowed_combinations` ← sorted `CANONICAL_ACTOR_ALLOWED_COMBINATIONS`
|
|
39
|
+
|
|
40
|
+
`instructions` source:
|
|
41
|
+
|
|
42
|
+
- bullets parsed from `prompts/integration/resolve/resolve_side_effects/prompt.md`
|
|
43
|
+
|
|
44
|
+
`output_schema` source:
|
|
45
|
+
|
|
46
|
+
- `SideEffectsArtifact.model_json_schema()`
|
|
47
|
+
|
|
48
|
+
### Resolve implicated users stage
|
|
49
|
+
|
|
50
|
+
Same `context_payload` sources as above.
|
|
51
|
+
|
|
52
|
+
`instructions` source:
|
|
53
|
+
|
|
54
|
+
- bullets parsed from `prompts/integration/resolve/resolve_implicated_users/prompt.md`
|
|
55
|
+
|
|
56
|
+
`output_schema` source:
|
|
57
|
+
|
|
58
|
+
- `ImplicatedUsersArtifact.model_json_schema()`
|
|
59
|
+
|
|
60
|
+
## Tools / skills / config
|
|
61
|
+
|
|
62
|
+
- No integration-specific skills are injected here.
|
|
63
|
+
- No tool definitions are assembled here.
|
|
64
|
+
- Runtime model/provider selection is handled separately by `src/devflow_engine/llm/invoke.py`.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Resolve Implicated Users
|
|
2
|
+
|
|
3
|
+
Resolve implemented idea side effects and implicated canonical actors from implementation evidence.
|
|
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
|
+
- Resolve implicated users into the canonical actor model only: kind, scope, authority, rationale.
|
|
14
|
+
- Reject non-listed canonical actor combinations into denied_candidates with explicit reasons.
|
|
15
|
+
- Do not invent story-local role labels as canonical actor classes.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Resolve Side Effects
|
|
2
|
+
|
|
3
|
+
Resolve implemented idea side effects and implicated canonical actors from implementation evidence.
|
|
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
|
+
- Identify the implemented idea's real accomplished outcomes as side effects.
|
|
14
|
+
- Return every side effect with rationale, story_ids when supported, and interaction_points or needed_interaction_points where evidence supports them.
|
|
15
|
+
- Populate alignment_context with counts or notes that help downstream validation.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Resolve Implicated Users
|
|
2
|
+
|
|
3
|
+
Identify implicated canonical actors from the provided evidence.
|
|
4
|
+
|
|
5
|
+
- Use only supported evidence from the implemented idea, implemented stories, code evidence, and source docs.
|
|
6
|
+
- Resolve implicated users into the canonical actor model only: kind, scope, authority, rationale.
|
|
7
|
+
- Only emit canonical actor combinations allowed by the provided context.
|
|
8
|
+
- Put rejected combinations in denied_candidates with explicit reasons.
|
|
9
|
+
- Do not invent story-local role labels or unsupported actors.
|
|
10
|
+
- Return JSON only.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Resolve Side Effects
|
|
2
|
+
|
|
3
|
+
Identify implemented side effects from the provided evidence.
|
|
4
|
+
|
|
5
|
+
- Use only supported evidence from the implemented idea, implemented stories, code evidence, and source docs.
|
|
6
|
+
- Return every side effect the implementation actually accomplishes.
|
|
7
|
+
- For each side effect, include concise rationale and supported story_ids.
|
|
8
|
+
- Include concrete interaction_points when implemented; otherwise use needed_interaction_points.
|
|
9
|
+
- Populate alignment_context with brief counts or notes that help downstream validation.
|
|
10
|
+
- Return JSON only.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# VEG Idea Acceptance Coverage Builder
|
|
2
|
+
|
|
3
|
+
Build an evidence-backed idea-acceptance coverage artifact in VEG and return workflows ready for deterministic gating.
|
|
4
|
+
|
|
5
|
+
- Return exactly one enriched_workflow per input workflow and preserve every workflow_id + side-effect anchor.
|
|
6
|
+
- Build idea_acceptance_coverage with exactly one criterion entry per implemented IDEA acceptance criterion.
|
|
7
|
+
- For each criterion, map the supporting story_ids, workflow_ids, side_effect_ids, evidence_refs, and a concrete proof_summary.
|
|
8
|
+
- Mark verdict as covered only when the implemented stories collectively prove the criterion through real workflow seams and cited evidence.
|
|
9
|
+
- If proof is weak, missing, or seamless, mark the criterion partial or uncovered and explain the exact gaps / missing_seams. Do not soft-pass.
|
|
10
|
+
- protected_sections and do_not_touch should preserve already-proven criteria/workflows so later repair stays scoped.
|
|
11
|
+
- Make unsupported or inconsistent workflow claims explicit in findings instead of inventing facts.
|
|
12
|
+
- Return JSON only.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Validate Code Repair
|
|
2
|
+
|
|
3
|
+
Repair product code for the current validation failure.
|
|
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_workflows, repair_sources, and code_evidence_files; keep edits there unless the same failure forces one adjacent file.
|
|
7
|
+
- Treat protected_sections as immutable context and obey every item in do_not_touch.
|
|
8
|
+
- Prefer files already named in code_evidence_files, workflow backing, or the failing interaction seam.
|
|
9
|
+
- Update updated_workflows only when the repaired code changes workflow truth.
|
|
10
|
+
- Do not repair red-package artifacts here. Do not edit engine, runtime, orchestration, or prompt-loading layers unless the failure explicitly originates there.
|
|
11
|
+
- If the issue is workflow-only, artifact-only, or runtime-only, leave code unchanged and explain it in unresolvable_failures.
|
|
12
|
+
- Return only changed files with full contents, updated_workflows, and unresolvable_failures.
|
|
13
|
+
- Return JSON only.
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Validate node assembled payloads
|
|
2
|
+
|
|
3
|
+
## Provenance
|
|
4
|
+
|
|
5
|
+
Reconstructed from:
|
|
6
|
+
|
|
7
|
+
- `prompts/integration/validate/validate_enrich_gate/prompt.md`
|
|
8
|
+
- `prompts/integration/validate/code_repair/prompt.md`
|
|
9
|
+
- `src/devflow_engine/integration/dag.py` validate gate + code repair calls
|
|
10
|
+
- `src/devflow_engine/agentic_runtime.py`
|
|
11
|
+
- `ValidateEnrichArtifact` and `CodeRepairArtifact` in `src/devflow_engine/integration/dag.py`
|
|
12
|
+
|
|
13
|
+
Not copied from a persisted past-run integration prompt.
|
|
14
|
+
|
|
15
|
+
## Stable doctrine vs actual payload
|
|
16
|
+
|
|
17
|
+
- Stable node doctrine file: `prompts/integration/validate/node_config/prompt.md`
|
|
18
|
+
- Actual `instructions` come from stage prompt markdown plus the runtime repair-iteration line on repair passes
|
|
19
|
+
- Actual `context` comes from validate-time artifacts and repair-time derived data in `integration/dag.py`
|
|
20
|
+
- No skills or tools are injected here
|
|
21
|
+
|
|
22
|
+
## Assembled payload: `integration_validate_enrich_gate`
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"task": "integration_validate_enrich_gate",
|
|
27
|
+
"instructions": [
|
|
28
|
+
"Review every workflow and return exactly one enriched_workflow per input workflow.",
|
|
29
|
+
"Preserve workflow identity and side-effect anchoring.",
|
|
30
|
+
"Improve rationale, backing, sequencing, branches, resulting artifacts, and interaction-point descriptions only where the evidence supports it.",
|
|
31
|
+
"Make unsupported, inconsistent, or under-supported areas explicit in findings.",
|
|
32
|
+
"Do not invent seams, actors, or implementation facts.",
|
|
33
|
+
"Return JSON only."
|
|
34
|
+
],
|
|
35
|
+
"context": {
|
|
36
|
+
"idea_id": "idea_checkout_recovery_v1",
|
|
37
|
+
"side_effects_artifact": {
|
|
38
|
+
"idea_id": "idea_checkout_recovery_v1",
|
|
39
|
+
"side_effects": [
|
|
40
|
+
{
|
|
41
|
+
"id": "se_recovery_email_sent",
|
|
42
|
+
"interaction_points": [
|
|
43
|
+
{ "kind": "endpoint", "name": "POST /api/carts/{cart_id}/recover", "implemented": true }
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"implicated_users_artifact": {
|
|
49
|
+
"idea_id": "idea_checkout_recovery_v1",
|
|
50
|
+
"implicated_users": [
|
|
51
|
+
{ "kind": "human", "scope": "customer_account", "authority": "self", "rationale": "customer receives reminder" }
|
|
52
|
+
],
|
|
53
|
+
"denied_candidates": []
|
|
54
|
+
},
|
|
55
|
+
"workflows": [
|
|
56
|
+
{
|
|
57
|
+
"workflow_id": "wf_recovery_email_sent",
|
|
58
|
+
"idea_id": "idea_checkout_recovery_v1",
|
|
59
|
+
"side_effect": { "id": "se_recovery_email_sent", "name": "Recovery email sent" },
|
|
60
|
+
"implicated_users": [
|
|
61
|
+
{ "kind": "human", "scope": "customer_account", "authority": "self" }
|
|
62
|
+
],
|
|
63
|
+
"story_backing": [
|
|
64
|
+
{ "story_id": "STORY-recovery-email-send", "title": "Send recovery reminder email" }
|
|
65
|
+
],
|
|
66
|
+
"code_backing": [
|
|
67
|
+
{ "path": "src/jobs/recovery_email_job.py" }
|
|
68
|
+
],
|
|
69
|
+
"source_doc_backing": [
|
|
70
|
+
{ "path": "ai_docs/context/v2/project_docs/user_workflows.md" }
|
|
71
|
+
],
|
|
72
|
+
"interaction_points": [
|
|
73
|
+
{ "kind": "endpoint", "name": "POST /api/carts/{cart_id}/recover", "implemented": true }
|
|
74
|
+
],
|
|
75
|
+
"needed_interaction_points": [],
|
|
76
|
+
"process_sequence": ["cart abandoned", "job scheduled", "email sent"],
|
|
77
|
+
"branches": [],
|
|
78
|
+
"resulting_artifacts": ["queued recovery email job"],
|
|
79
|
+
"mermaid": null
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"implemented_stories": [
|
|
83
|
+
{ "story_id": "STORY-recovery-email-send", "title": "Send recovery reminder email", "side_effect_ids": ["se_recovery_email_sent"], "required_planes": [] }
|
|
84
|
+
],
|
|
85
|
+
"code_evidence": [
|
|
86
|
+
{ "path": "src/jobs/recovery_email_job.py", "side_effect_ids": [], "interaction_points": [] }
|
|
87
|
+
],
|
|
88
|
+
"source_docs": [
|
|
89
|
+
{ "path": "ai_docs/context/v2/project_docs/user_workflows.md" }
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
"output_schema": "ValidateEnrichArtifact.model_json_schema()",
|
|
93
|
+
"return_format": "json_only"
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Assembled payload: `integration_code_repair_iter1` (validate repair mode)
|
|
98
|
+
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"task": "integration_code_repair_iter1",
|
|
102
|
+
"instructions": [
|
|
103
|
+
"Patch the smallest real code change that fixes the current failing workflow surface.",
|
|
104
|
+
"Choose one primary failing seam from validation_errors, failing_workflows, and code_evidence_files; keep edits there unless the same failure forces one adjacent file.",
|
|
105
|
+
"Prefer files already named in code_evidence_files, workflow backing, or the failing interaction seam.",
|
|
106
|
+
"Update updated_workflows only when the repaired code changes workflow truth.",
|
|
107
|
+
"Do not repair red-package artifacts here. Do not edit engine, runtime, orchestration, or prompt-loading layers unless the failure explicitly originates there.",
|
|
108
|
+
"If the issue is workflow-only, artifact-only, or runtime-only, leave code unchanged and explain it in unresolvable_failures.",
|
|
109
|
+
"Return only changed files with full contents, updated_workflows, and unresolvable_failures.",
|
|
110
|
+
"This is repair iteration 1. Stay on the current failing seam. Do not revisit clean surfaces.",
|
|
111
|
+
"Return JSON only."
|
|
112
|
+
],
|
|
113
|
+
"context": {
|
|
114
|
+
"failing_workflows": [
|
|
115
|
+
{
|
|
116
|
+
"workflow_id": "wf_recovery_email_sent",
|
|
117
|
+
"side_effect": { "id": "se_recovery_email_sent", "name": "Recovery email sent" },
|
|
118
|
+
"needed_interaction_points": [
|
|
119
|
+
{ "kind": "endpoint", "name": "POST /api/carts/{cart_id}/recover" }
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
"validation_errors": [
|
|
124
|
+
"wf_recovery_email_sent: MISSING_INTERACTION_POINTS endpoint route not declared"
|
|
125
|
+
],
|
|
126
|
+
"code_evidence_files": [
|
|
127
|
+
{
|
|
128
|
+
"path": "src/cart/recovery.py",
|
|
129
|
+
"content": "def recover_cart(cart_id: str):
|
|
130
|
+
queue_recovery_email(cart_id)
|
|
131
|
+
"
|
|
132
|
+
}
|
|
133
|
+
],
|
|
134
|
+
"side_effects_artifact": { "idea_id": "idea_checkout_recovery_v1", "side_effects": [{ "id": "se_recovery_email_sent" }] },
|
|
135
|
+
"implicated_users_artifact": { "idea_id": "idea_checkout_recovery_v1", "implicated_users": [{ "kind": "human", "scope": "customer_account", "authority": "self", "rationale": "customer receives reminder" }], "denied_candidates": [] },
|
|
136
|
+
"implemented_stories": [
|
|
137
|
+
{ "story_id": "STORY-recovery-email-send", "title": "Send recovery reminder email", "side_effect_ids": ["se_recovery_email_sent"], "required_planes": [] }
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
"output_schema": "CodeRepairArtifact.model_json_schema()",
|
|
141
|
+
"return_format": "json_only"
|
|
142
|
+
}
|
|
143
|
+
```
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Validate / VEG Node Contract
|
|
2
|
+
|
|
3
|
+
Agentic VEG builder + deterministic gate for idea-acceptance validation.
|
|
4
|
+
|
|
5
|
+
## What this file is
|
|
6
|
+
|
|
7
|
+
Stable node doctrine loaded by:
|
|
8
|
+
|
|
9
|
+
- `load_integration_node_instruction("validate")`
|
|
10
|
+
- `BuildIdeaAcceptanceCoverageNode.get_agent_config()`
|
|
11
|
+
|
|
12
|
+
## What actually reaches the model
|
|
13
|
+
|
|
14
|
+
The current integration runtime uses two validate-area model-facing prompt shapes:
|
|
15
|
+
|
|
16
|
+
1. VEG idea-acceptance builder (`integration_build_idea_acceptance_coverage`)
|
|
17
|
+
2. validate repair pass (`integration_validate_repair`)
|
|
18
|
+
|
|
19
|
+
The checker/gate itself is deterministic Python (`ValidateEnrichGateNode`) and is not model-backed.
|
|
20
|
+
|
|
21
|
+
## Real injected runtime components
|
|
22
|
+
|
|
23
|
+
### VEG idea-acceptance builder
|
|
24
|
+
|
|
25
|
+
`context_payload` fields:
|
|
26
|
+
|
|
27
|
+
- `idea_id`
|
|
28
|
+
- `implemented_idea`
|
|
29
|
+
- `implemented_stories`
|
|
30
|
+
- `side_effects_artifact`
|
|
31
|
+
- `implicated_users_artifact`
|
|
32
|
+
- `workflows`
|
|
33
|
+
- `code_evidence`
|
|
34
|
+
- `source_docs`
|
|
35
|
+
|
|
36
|
+
`instructions` source:
|
|
37
|
+
|
|
38
|
+
- bullets parsed from `prompts/integration/validate/build_idea_acceptance_coverage/prompt.md`
|
|
39
|
+
|
|
40
|
+
`output_schema` source:
|
|
41
|
+
|
|
42
|
+
- `VegIdeaAcceptanceBuilderArtifact.model_json_schema()`
|
|
43
|
+
|
|
44
|
+
### Validate repair pass
|
|
45
|
+
|
|
46
|
+
`context_payload` fields:
|
|
47
|
+
|
|
48
|
+
- `enriched_workflows`
|
|
49
|
+
- `idea_acceptance_coverage`
|
|
50
|
+
- `failing_workflows`
|
|
51
|
+
- `failing_idea_acceptance_criteria`
|
|
52
|
+
- `deterministic_errors`
|
|
53
|
+
- `repair_sources`
|
|
54
|
+
- `protected_sections`
|
|
55
|
+
- `do_not_touch`
|
|
56
|
+
|
|
57
|
+
`instructions` source:
|
|
58
|
+
|
|
59
|
+
- bullets parsed from `prompts/integration/validate/validate_repair/prompt.md`
|
|
60
|
+
|
|
61
|
+
`output_schema` source:
|
|
62
|
+
|
|
63
|
+
- `VegIdeaAcceptanceBuilderArtifact.model_json_schema()`
|
|
64
|
+
|
|
65
|
+
### Validate code repair pass
|
|
66
|
+
|
|
67
|
+
`context_payload` fields:
|
|
68
|
+
|
|
69
|
+
- `failing_workflows`
|
|
70
|
+
- `validation_errors`
|
|
71
|
+
- `repair_sources`
|
|
72
|
+
- `protected_sections`
|
|
73
|
+
- `do_not_touch`
|
|
74
|
+
- `code_evidence_files`
|
|
75
|
+
- `side_effects_artifact`
|
|
76
|
+
- `implicated_users_artifact`
|
|
77
|
+
- `implemented_stories`
|
|
78
|
+
- `idea_acceptance_coverage`
|
|
79
|
+
- `failing_idea_acceptance_criteria`
|
|
80
|
+
|
|
81
|
+
`instructions` source:
|
|
82
|
+
|
|
83
|
+
- bullets parsed from `prompts/integration/validate/code_repair/prompt.md`
|
|
84
|
+
|
|
85
|
+
`output_schema` source:
|
|
86
|
+
|
|
87
|
+
- `CodeRepairArtifact.model_json_schema()`
|
devflow_engine/prompts/integration/validate/past_prompts/20260417T212300/code_repair/prompt.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Validate 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).
|