devagent-ai 0.8.5__tar.gz → 0.8.7__tar.gz
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.
- {devagent_ai-0.8.5/devagent_ai.egg-info → devagent_ai-0.8.7}/PKG-INFO +193 -3
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/README.md +193 -3
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/__init__.py +1 -1
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/cli.py +156 -30
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/production_models.py +27 -1
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/professional_report_install_v14.py +9 -0
- devagent_ai-0.8.7/devagent/plc/report_levels.py +558 -0
- devagent_ai-0.8.7/devagent/plc/siemens_cli_install_v1.py +99 -0
- devagent_ai-0.8.7/devagent/plc/siemens_closeout_v9.py +318 -0
- devagent_ai-0.8.7/devagent/plc/siemens_identity_types_v8.py +526 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/siemens_v6_v7_token_hardening.py +21 -0
- devagent_ai-0.8.7/devagent/plc/siemens_v8_v9_compat_hardening.py +317 -0
- devagent_ai-0.8.7/devagent/plc/top_engineering_risks_v1.py +290 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7/devagent_ai.egg-info}/PKG-INFO +193 -3
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent_ai.egg-info/SOURCES.txt +9 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/pyproject.toml +1 -1
- devagent_ai-0.8.7/tests/test_plc_cli_live_progress.py +123 -0
- devagent_ai-0.8.7/tests/test_plc_report_levels.py +112 -0
- devagent_ai-0.8.7/tests/test_plc_siemens_v8_v9.py +262 -0
- devagent_ai-0.8.7/tests/test_plc_top_engineering_risks.py +153 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_production_v040.py +1 -1
- devagent_ai-0.8.5/devagent/plc/siemens_cli_install_v1.py +0 -38
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/LICENSE +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/NOTICE +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/agent/__init__.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/agent/llm.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/agent/loop.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/agent/memory.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/agent/prompts.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/agent/tools.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/__main__.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/artifacts.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/automations.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/autonomy.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/browser.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/cli.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/config.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/discovery.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/entrypoint.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/evaluation.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/memory.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/models.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/orchestrator.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/__init__.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/agent_harness_install_v15.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/agent_harness_v15.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/analysis.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/execution_trust.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/fat_procedure_v12.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/four_contract_v13.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/inspect_cli.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/models.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/plc_dispatch.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/production.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/production_ai.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/production_evidence.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/production_readiness.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/production_readiness_v5.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/production_regression.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/production_report.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/production_review.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/production_utils.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/production_v5.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/production_verification.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/professional_report_v14.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/release_policy.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/report.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/report_clarity_install_v16.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/requirements.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_action_requirements.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_alias_hardening.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_branch_coverage_v16.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_closeout.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_closeout_gate_hardening.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_compare.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_compare_hardening.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_compare_reachability_hardening.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_core_review_v12.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_echo.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_echo_gate.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_entrypoint_hardening.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_general_actions.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_l5x.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_motion_runtime_v11.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_regression_case_compat_v12.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_regression_evidence_hardening.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_requirement_hardening.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_risk_hardening.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_semantic_capabilities.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_st_case_v11.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_st_v10.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_standard_catalog.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_state_machine_v11.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_stateful_runtime.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_structure.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_system_service_install_v17.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_system_service_report_install_v17.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_system_service_v17.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/rockwell_v10_semantics.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/safe_analysis.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/semantic_coverage.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/semantic_coverage_report.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/siemens_call_graph_v3.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/siemens_flgnet_extended_hardening_v4.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/siemens_flgnet_extended_v4.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/siemens_flgnet_hardening_v4.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/siemens_flgnet_v4.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/siemens_integration_v1.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/siemens_interlock_permissive_v6.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/siemens_recovery_v7.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/siemens_scl_control_flow_hardening_v2.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/siemens_scl_control_flow_v2.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/siemens_state_machine_hardening_v5.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/siemens_state_machine_v5.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/siemens_tia_v1.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/siemens_v5_bindings_v1.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/signature_trust.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/trusted_snapshot.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/v2_guardrails.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/plc/v2_semantics.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/provider_benchmark.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/providers.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/qualification.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/realworld.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/report.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/retrieval.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/routing.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/runtime.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/safety.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/skills.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/source_control.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/state_machine.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/tasking.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/technical_review.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/workspace.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent/worktree.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent_ai.egg-info/dependency_links.txt +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent_ai.egg-info/entry_points.txt +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent_ai.egg-info/requires.txt +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/devagent_ai.egg-info/top_level.txt +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/setup.cfg +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_acceptance_contract.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_benchmark_catalog.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_browser_verification.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_capability_discovery.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_cli.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_cli_progress.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_developer_review_report.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_discovery_memory.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_e2e_fake_provider.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_evaluation_harness.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_evaluation_matrix.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_evaluation_regression_evidence.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_functional_qualification.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_huge_monorepo_v070.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_migration_e2e_v070.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_model_routing.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_multilang_technical_review.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_multistack_devagent_e2e.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_multistack_qualification.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_packaging_metadata.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plan_verification_normalization.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_agent_harness_trace_v15.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_agent_harness_v15.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_execution_trust.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_four_contract_v13.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_product_contract_v12.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_production.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_production_v5.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_release_policy.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_boolean_alias_proof.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_canonical_risks.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_closeout_v9.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_closeout_v9_guardrails.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_closeout_v9_review_regressions.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_compare_v8.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_compare_v8_aliases.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_compare_v8_hardening.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_compare_v8_identity_assertions.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_compare_v8_review_regressions.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_echo_cli_v6.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_echo_v6.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_hardening.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_semantics_v7.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v1.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_action_requirements.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_arbitrary_project_qualification.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_echo_compatibility.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_general_actions.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_general_semantics.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_inspect_cli.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_semantic_coverage.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_st_safe_functions.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_stateful_runtime.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v11_reporting.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v11_st_motion.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v11_state_machine.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v16_semantic_hardening.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v17_system_service_fat.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v17_system_service_generic.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v2.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v9_entry_edgecases.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v9_final_codex.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v9_merge_gates.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v9_reachable_writers.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_siemens_v1.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_siemens_v2.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_siemens_v3_call_graph.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_siemens_v4_extended.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_siemens_v4_flgnet.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_siemens_v5_state_machine.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_siemens_v6_v7.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_signature_trust.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_v5_security_floor.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_plc_v5_toctou.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_preservation_contradiction.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_production_hardening.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_realworld_benchmark.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_requirement_compiler_v082.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_requirement_intelligence_v083.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_retrieval.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_runtime_sandbox.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_safety_workspace.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_source_control_publish.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_structural_devagent_e2e_v070.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_structural_operations.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_structured_provider_contract.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_tasking_state.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_v070_engineering_breadth.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_v080_autonomy.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_v080_provider_benchmark.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_v080_skills_automations.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_workspace_environment.py +0 -0
- {devagent_ai-0.8.5 → devagent_ai-0.8.7}/tests/test_worktree.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: devagent-ai
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.7
|
|
4
4
|
Summary: Evidence-driven local autonomous software engineering agent
|
|
5
5
|
Author: Tom Ha
|
|
6
6
|
Maintainer: Tom Ha
|
|
@@ -37,11 +37,14 @@ Dynamic: license-file
|
|
|
37
37
|
[](https://www.python.org/)
|
|
38
38
|
[](#project-status)
|
|
39
39
|
[](https://github.com/tomha85/devagent/actions/workflows/ci.yml)
|
|
40
|
+
[](https://github.com/sponsors/tomha85)
|
|
40
41
|
|
|
41
42
|
**A local, evidence-driven software engineering agent that turns a requirement into a tested, independently reviewed patch, prints a developer-grade engineering report, and only publishes a branch when the result is `VERIFIED`.**
|
|
42
43
|
|
|
43
44
|
> **From requirement to evidence-backed verified branch.**
|
|
44
45
|
|
|
46
|
+
> ❤️ **DevAgent is free during public beta.** If DevAgent saves you engineering time, consider [sponsoring continued development](https://github.com/sponsors/tomha85).
|
|
47
|
+
|
|
45
48
|
DevAgent runs against a developer's local repository. It discovers the application, gathers source evidence, compiles explicit acceptance criteria, plans a bounded change, creates backups, implements the minimum necessary patch, runs repository-supported verification, independently reviews the final diff, and decides `VERIFIED`, `PARTIALLY_VERIFIED`, or `BLOCKED` from evidence rather than model confidence.
|
|
46
49
|
|
|
47
50
|
For a normal verified run the deterministic harness prints the complete engineering report first, then commits reviewed paths and fast-forward pushes the developer's current non-protected branch. If the developer starts on `main`, `master`, or `trunk`, DevAgent creates a new safe branch instead. Runtime DevAgent never creates a pull request, merges, rebases, force-pushes, or deploys.
|
|
@@ -251,6 +254,173 @@ devagent --input ../specs/release.requirement
|
|
|
251
254
|
|
|
252
255
|
Binary data, invalid UTF-8, secret-like paths, and files above the input-size bound are refused.
|
|
253
256
|
|
|
257
|
+
## PLC engineer quick start
|
|
258
|
+
|
|
259
|
+
DevAgent also provides an **offline PLC engineering review, requirement-verification, regression-analysis, risk-review, and FAT-planning workflow** through `devagent plc`.
|
|
260
|
+
|
|
261
|
+
The PLC workflow is intended for controls/PLC engineers who want to review exported engineering artifacts before FAT, site travel, commissioning, or release. DevAgent does **not** connect to, upload to, download to, force, start, stop, or control a PLC, TIA Portal, Studio 5000, PLCSIM, Logix Echo, HIL bench, or production machine. Runtime FAT and commissioning execution remain owned by the PLC engineer.
|
|
262
|
+
|
|
263
|
+
### 1. Export the PLC project
|
|
264
|
+
|
|
265
|
+
**Rockwell Studio 5000:** export the full controller project as `.L5X`.
|
|
266
|
+
|
|
267
|
+
```text
|
|
268
|
+
Line1_Controller.L5X
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
**Siemens TIA Portal:** provide a TIA Openness/XML/generated-source file or export directory. Supported engineering inputs include `.scl`, `.db`, `.udt`, `.xml`, `.stl`, and `.awl`. Proprietary `.ap*` / `.zap*` project archives must be exported from TIA Portal first.
|
|
272
|
+
|
|
273
|
+
#### Siemens `.zapXX` archived projects
|
|
274
|
+
|
|
275
|
+
Files such as `.zap17`, `.zap18`, `.zap19`, and `.zap20` are **TIA Portal archived projects**, not direct DevAgent static-analysis inputs. Do not point `devagent plc` directly at a `.zapXX` archive and assume the internal archive contents are equivalent to a supported engineering export.
|
|
276
|
+
|
|
277
|
+
Example:
|
|
278
|
+
|
|
279
|
+
```text
|
|
280
|
+
LearningFactory_4_0_24V_Task07_HighBayWarehouseHBW_V18.zap18
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
For this example, use **TIA Portal V18** to retrieve/open the `.zap18` archive, then export the engineering information that DevAgent can analyze. Prefer the matching TIA Portal version for the archive whenever practical.
|
|
284
|
+
|
|
285
|
+
Recommended flow:
|
|
286
|
+
|
|
287
|
+
```text
|
|
288
|
+
LearningFactory_4_0_24V_Task07_HighBayWarehouseHBW_V18.zap18
|
|
289
|
+
↓
|
|
290
|
+
TIA Portal V18 Retrieve/Open
|
|
291
|
+
↓
|
|
292
|
+
Restored TIA project
|
|
293
|
+
↓
|
|
294
|
+
Export engineering information
|
|
295
|
+
↓
|
|
296
|
+
OB / FB / FC / DB / UDT / SCL / LAD / FBD XML
|
|
297
|
+
↓
|
|
298
|
+
One export folder
|
|
299
|
+
↓
|
|
300
|
+
devagent plc ./HBW_V18_export/
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
For the strongest review, export as much related controller engineering evidence as available, including OB/FB/FC logic, DBs, UDT/data types, generated SCL/STL/AWL sources, LAD/FBD Openness XML, and relevant symbolic/tag information.
|
|
304
|
+
|
|
305
|
+
A typical export folder might look like:
|
|
306
|
+
|
|
307
|
+
```text
|
|
308
|
+
HBW_V18_export/
|
|
309
|
+
├── OB1.xml
|
|
310
|
+
├── Main.scl
|
|
311
|
+
├── FB_Conveyor.xml
|
|
312
|
+
├── FB_HighBayCrane.xml
|
|
313
|
+
├── FC_Positioning.xml
|
|
314
|
+
├── DB_HBW.xml
|
|
315
|
+
├── DB_IO.xml
|
|
316
|
+
├── MotorData.udt
|
|
317
|
+
└── Alarms.xml
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
Then run:
|
|
321
|
+
|
|
322
|
+
```bash
|
|
323
|
+
devagent plc ./HBW_V18_export/ \
|
|
324
|
+
--ai \
|
|
325
|
+
--output-dir ./HBW_review
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
Or include machine/customer requirements:
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
devagent plc ./HBW_V18_export/ \
|
|
332
|
+
--requirements ./HBW_requirements.md \
|
|
333
|
+
--ai \
|
|
334
|
+
--output-dir ./HBW_review
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
**Do not rely on manually renaming or unzipping `.zapXX` archives as the production engineering workflow.** DevAgent's qualified Siemens path is based on exported TIA engineering artifacts and explicit support accounting, not undocumented assumptions about Siemens archive internals.
|
|
338
|
+
|
|
339
|
+
For Siemens, include the related OB/FB/FC logic, DB/UDT/type evidence, generated sources, and Openness XML used by the controller whenever available. A complete export gives DevAgent a stronger project-wide call/data/identity/support-boundary view than isolated snippets.
|
|
340
|
+
|
|
341
|
+
### 2. Add customer or machine requirements
|
|
342
|
+
|
|
343
|
+
`--requirements` is repeatable and accepts `.txt`, `.md`, `.csv`, `.json`, `.docx`, and `.pdf` when PDF support is installed.
|
|
344
|
+
|
|
345
|
+
Example:
|
|
346
|
+
|
|
347
|
+
```markdown
|
|
348
|
+
- Conveyor shall not run unless the main guard circuit is healthy.
|
|
349
|
+
- A safety fault shall prevent the motor run output.
|
|
350
|
+
- Reset shall not automatically restart the conveyor.
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### 3. Run the engineering review
|
|
354
|
+
|
|
355
|
+
Rockwell:
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
devagent plc ./exports/Line1_Controller.L5X \
|
|
359
|
+
--requirements ./requirements/line1.md \
|
|
360
|
+
--ai \
|
|
361
|
+
--output-dir ./plc-review/line1-current
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
Siemens:
|
|
365
|
+
|
|
366
|
+
```bash
|
|
367
|
+
devagent plc ./exports/TIA_Line1/ \
|
|
368
|
+
--requirements ./requirements/line1.md \
|
|
369
|
+
--ai \
|
|
370
|
+
--output-dir ./plc-review/line1-current
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
`--ai` enables the evidence-constrained AI engineering-review layer. It is optional; the deterministic PLC analysis and FAT-planning path still runs without it.
|
|
374
|
+
|
|
375
|
+
### 4. Compare a PLC revision
|
|
376
|
+
|
|
377
|
+
Use `--baseline` with a previous export from the same vendor to identify changed logic, affected requirements, changed risks, and FAT tests that should be repeated.
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
devagent plc ./exports/new/TIA_Line1/ \
|
|
381
|
+
--baseline ./exports/old/TIA_Line1/ \
|
|
382
|
+
--requirements ./requirements/line1.md \
|
|
383
|
+
--ai \
|
|
384
|
+
--output-dir ./plc-review/line1-revision
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
The same pattern works for Rockwell using current and previous `.L5X` files.
|
|
388
|
+
|
|
389
|
+
### 5. Review the evidence package
|
|
390
|
+
|
|
391
|
+
A written run includes `fat_report.md` plus machine-readable evidence such as canonical IR, dependency graph, static verification, requirement verification, FAT tests/plans, risks, optimizations, regression impact, recommendations, evidence manifest, release readiness, and an exact run manifest.
|
|
392
|
+
|
|
393
|
+
The engineer should pay special attention to four kinds of results:
|
|
394
|
+
|
|
395
|
+
- **statically proven behavior** — supported semantics with the required identity, writer ownership, reachability, call binding, and source evidence;
|
|
396
|
+
- **`PARTIAL` / `OPAQUE` / `PROTECTED` support regions** — behavior that DevAgent intentionally refuses to overclaim from available exported source;
|
|
397
|
+
- **`FAT_REQUIRED` behavior** — timing, counting, hardware, external I/O/device, system-service, scheduling, unsupported-logic, or other runtime evidence that must be exercised by an engineer;
|
|
398
|
+
- **revision impact** — requirements, risks, logic areas, and FAT tests whose previous evidence may no longer be valid after a PLC change.
|
|
399
|
+
|
|
400
|
+
A passing static check does **not** replace FAT when the report requires runtime evidence.
|
|
401
|
+
|
|
402
|
+
Recommended workflow:
|
|
403
|
+
|
|
404
|
+
```text
|
|
405
|
+
EXPORT PLC PROJECT
|
|
406
|
+
↓
|
|
407
|
+
DEVAGENT PLC ENGINEERING REVIEW
|
|
408
|
+
↓
|
|
409
|
+
REQUIREMENT + LOGIC + RISK REVIEW
|
|
410
|
+
↓
|
|
411
|
+
GENERATED FAT PROCEDURES
|
|
412
|
+
↓
|
|
413
|
+
ENGINEER EXECUTES REQUIRED FAT EXTERNALLY
|
|
414
|
+
↓
|
|
415
|
+
CAPTURE / IMPORT TRUSTED EVIDENCE WHEN APPLICABLE
|
|
416
|
+
↓
|
|
417
|
+
ENGINEERING APPROVAL
|
|
418
|
+
↓
|
|
419
|
+
SITE COMMISSIONING / RELEASE PROCESS
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
For signed runtime-result, policy, trust-store, and approval workflows, and a complete explanation of Rockwell/Siemens evidence boundaries, see **[PLC Engineer Guide](docs/plc-engineer-guide.md)**.
|
|
423
|
+
|
|
254
424
|
## Practical examples
|
|
255
425
|
|
|
256
426
|
DevAgent is intended for real repository work, not only one-line code generation. Run it from the repository you want to change and describe the engineering outcome you need.
|
|
@@ -366,6 +536,7 @@ devagent setup --help
|
|
|
366
536
|
devagent doctor
|
|
367
537
|
devagent models
|
|
368
538
|
devagent status
|
|
539
|
+
devagent plc --help
|
|
369
540
|
devagent benchmark --help
|
|
370
541
|
```
|
|
371
542
|
|
|
@@ -537,16 +708,35 @@ Automated provider tests normally use deterministic or mocked clients and do not
|
|
|
537
708
|
|
|
538
709
|
## Project status
|
|
539
710
|
|
|
540
|
-
DevAgent 0.8.
|
|
711
|
+
DevAgent 0.8.6 is **beta software with a verified core release baseline**. The exact v0.8 merge revision on `main` passed Production CI across Python 3.10/3.11/3.12, clean wheel installation, real Linux bubblewrap sandbox execution, production qualification v4 (**70/70**), and autonomy qualification v5 (**9/9**), for **79/79 cumulative required qualification cases**.
|
|
541
712
|
|
|
542
713
|
The current core includes evidence-backed `VERIFIED` / `PARTIALLY_VERIFIED` / `BLOCKED` outcomes, backup-first editing, isolated worktrees, bounded structural file operations, repository-native verification, independent review, safe branch publication, provider/model choice, Java and .NET engineering discovery/execution, SQLite migration forward/rollback verification, large-monorepo deep-manifest discovery, bounded parallel agents, repository-local skills, foreground automations, Linux OS sandboxing, bounded browser/local-UI verification, and real-provider structured-contract benchmarking.
|
|
543
714
|
|
|
715
|
+
Current `main` also includes vendor-dispatched PLC engineering review for **Rockwell Studio 5000 full-project `.L5X`** and **Siemens TIA Portal exported engineering artifacts**, with separate production qualification workflows and fail-closed evidence boundaries. The Siemens qualification is cumulative through V9 and covers the bounded supported SCL/LAD/FBD, call/interface, state/interlock/recovery, canonical identity/type, support-accounting, malformed-input, revision, and large-project fixture surfaces. Unsupported, protected, ambiguous, or runtime-dependent behavior is withheld from static proof and routed to explicit limitations and engineer-executed FAT rather than silently reported as verified.
|
|
716
|
+
|
|
544
717
|
These results are **bounded engineering claims**, not universal-correctness or market-superiority claims. They are tied to explicit qualification cases, pinned revisions, deterministic fixtures/external oracles where applicable, and the environments actually exercised by CI.
|
|
545
718
|
|
|
546
|
-
Remaining work is primarily **breadth and external validation**, not missing core architecture: a larger public corpus of pinned upstream repositories and tasks; broader browser/UI coverage across dynamic applications and multiple browser environments; a wider Java/Gradle, .NET test-framework, and PostgreSQL/MySQL migration matrix beyond the current qualified fixtures; larger and more diverse monorepo stress cases beyond the current >12,000-file deep-manifest case; more real-world multi-agent workload studies;
|
|
719
|
+
Remaining work is primarily **breadth and external validation**, not missing core architecture: a larger public corpus of pinned upstream repositories and tasks; broader browser/UI coverage across dynamic applications and multiple browser environments; a wider Java/Gradle, .NET test-framework, and PostgreSQL/MySQL migration matrix beyond the current qualified fixtures; larger and more diverse monorepo stress cases beyond the current >12,000-file deep-manifest case; more real-world multi-agent workload studies; continuous paid real-provider benchmarking across a broader set of model/provider combinations; and additional real license-safe Siemens/Rockwell customer export qualification beyond deterministic repository fixtures. GitHub branch protection/rulesets are external repository settings and must be configured separately; DevAgent does not claim to configure them itself.
|
|
547
720
|
|
|
548
721
|
The project intentionally prioritizes trustworthy outcomes, reproducible evidence, and safe engineering behavior over feature count or unsupported "best agent" claims.
|
|
549
722
|
|
|
723
|
+
## ❤️ Support DevAgent
|
|
724
|
+
|
|
725
|
+
DevAgent is currently free to use during public beta.
|
|
726
|
+
|
|
727
|
+
If DevAgent saves you engineering time or helps you deliver safer, better-verified software or PLC engineering work, you can support continued development through [GitHub Sponsors](https://github.com/sponsors/tomha85).
|
|
728
|
+
|
|
729
|
+
Your sponsorship helps fund:
|
|
730
|
+
|
|
731
|
+
- new engineering and PLC capabilities;
|
|
732
|
+
- Siemens and Rockwell verification;
|
|
733
|
+
- additional AI provider support;
|
|
734
|
+
- regression and production qualification;
|
|
735
|
+
- documentation and examples;
|
|
736
|
+
- continued free public releases.
|
|
737
|
+
|
|
738
|
+
[](https://github.com/sponsors/tomha85)
|
|
739
|
+
|
|
550
740
|
## Contributing
|
|
551
741
|
|
|
552
742
|
Contributions are welcome. Read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request. Changes to safety, verification, reporting, acceptance semantics, providers, or bounded publication behavior should include regression evidence and must not give model-generated actions unrestricted Git publishing authority.
|
|
@@ -4,11 +4,14 @@
|
|
|
4
4
|
[](https://www.python.org/)
|
|
5
5
|
[](#project-status)
|
|
6
6
|
[](https://github.com/tomha85/devagent/actions/workflows/ci.yml)
|
|
7
|
+
[](https://github.com/sponsors/tomha85)
|
|
7
8
|
|
|
8
9
|
**A local, evidence-driven software engineering agent that turns a requirement into a tested, independently reviewed patch, prints a developer-grade engineering report, and only publishes a branch when the result is `VERIFIED`.**
|
|
9
10
|
|
|
10
11
|
> **From requirement to evidence-backed verified branch.**
|
|
11
12
|
|
|
13
|
+
> ❤️ **DevAgent is free during public beta.** If DevAgent saves you engineering time, consider [sponsoring continued development](https://github.com/sponsors/tomha85).
|
|
14
|
+
|
|
12
15
|
DevAgent runs against a developer's local repository. It discovers the application, gathers source evidence, compiles explicit acceptance criteria, plans a bounded change, creates backups, implements the minimum necessary patch, runs repository-supported verification, independently reviews the final diff, and decides `VERIFIED`, `PARTIALLY_VERIFIED`, or `BLOCKED` from evidence rather than model confidence.
|
|
13
16
|
|
|
14
17
|
For a normal verified run the deterministic harness prints the complete engineering report first, then commits reviewed paths and fast-forward pushes the developer's current non-protected branch. If the developer starts on `main`, `master`, or `trunk`, DevAgent creates a new safe branch instead. Runtime DevAgent never creates a pull request, merges, rebases, force-pushes, or deploys.
|
|
@@ -218,6 +221,173 @@ devagent --input ../specs/release.requirement
|
|
|
218
221
|
|
|
219
222
|
Binary data, invalid UTF-8, secret-like paths, and files above the input-size bound are refused.
|
|
220
223
|
|
|
224
|
+
## PLC engineer quick start
|
|
225
|
+
|
|
226
|
+
DevAgent also provides an **offline PLC engineering review, requirement-verification, regression-analysis, risk-review, and FAT-planning workflow** through `devagent plc`.
|
|
227
|
+
|
|
228
|
+
The PLC workflow is intended for controls/PLC engineers who want to review exported engineering artifacts before FAT, site travel, commissioning, or release. DevAgent does **not** connect to, upload to, download to, force, start, stop, or control a PLC, TIA Portal, Studio 5000, PLCSIM, Logix Echo, HIL bench, or production machine. Runtime FAT and commissioning execution remain owned by the PLC engineer.
|
|
229
|
+
|
|
230
|
+
### 1. Export the PLC project
|
|
231
|
+
|
|
232
|
+
**Rockwell Studio 5000:** export the full controller project as `.L5X`.
|
|
233
|
+
|
|
234
|
+
```text
|
|
235
|
+
Line1_Controller.L5X
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
**Siemens TIA Portal:** provide a TIA Openness/XML/generated-source file or export directory. Supported engineering inputs include `.scl`, `.db`, `.udt`, `.xml`, `.stl`, and `.awl`. Proprietary `.ap*` / `.zap*` project archives must be exported from TIA Portal first.
|
|
239
|
+
|
|
240
|
+
#### Siemens `.zapXX` archived projects
|
|
241
|
+
|
|
242
|
+
Files such as `.zap17`, `.zap18`, `.zap19`, and `.zap20` are **TIA Portal archived projects**, not direct DevAgent static-analysis inputs. Do not point `devagent plc` directly at a `.zapXX` archive and assume the internal archive contents are equivalent to a supported engineering export.
|
|
243
|
+
|
|
244
|
+
Example:
|
|
245
|
+
|
|
246
|
+
```text
|
|
247
|
+
LearningFactory_4_0_24V_Task07_HighBayWarehouseHBW_V18.zap18
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
For this example, use **TIA Portal V18** to retrieve/open the `.zap18` archive, then export the engineering information that DevAgent can analyze. Prefer the matching TIA Portal version for the archive whenever practical.
|
|
251
|
+
|
|
252
|
+
Recommended flow:
|
|
253
|
+
|
|
254
|
+
```text
|
|
255
|
+
LearningFactory_4_0_24V_Task07_HighBayWarehouseHBW_V18.zap18
|
|
256
|
+
↓
|
|
257
|
+
TIA Portal V18 Retrieve/Open
|
|
258
|
+
↓
|
|
259
|
+
Restored TIA project
|
|
260
|
+
↓
|
|
261
|
+
Export engineering information
|
|
262
|
+
↓
|
|
263
|
+
OB / FB / FC / DB / UDT / SCL / LAD / FBD XML
|
|
264
|
+
↓
|
|
265
|
+
One export folder
|
|
266
|
+
↓
|
|
267
|
+
devagent plc ./HBW_V18_export/
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
For the strongest review, export as much related controller engineering evidence as available, including OB/FB/FC logic, DBs, UDT/data types, generated SCL/STL/AWL sources, LAD/FBD Openness XML, and relevant symbolic/tag information.
|
|
271
|
+
|
|
272
|
+
A typical export folder might look like:
|
|
273
|
+
|
|
274
|
+
```text
|
|
275
|
+
HBW_V18_export/
|
|
276
|
+
├── OB1.xml
|
|
277
|
+
├── Main.scl
|
|
278
|
+
├── FB_Conveyor.xml
|
|
279
|
+
├── FB_HighBayCrane.xml
|
|
280
|
+
├── FC_Positioning.xml
|
|
281
|
+
├── DB_HBW.xml
|
|
282
|
+
├── DB_IO.xml
|
|
283
|
+
├── MotorData.udt
|
|
284
|
+
└── Alarms.xml
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Then run:
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
devagent plc ./HBW_V18_export/ \
|
|
291
|
+
--ai \
|
|
292
|
+
--output-dir ./HBW_review
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
Or include machine/customer requirements:
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
devagent plc ./HBW_V18_export/ \
|
|
299
|
+
--requirements ./HBW_requirements.md \
|
|
300
|
+
--ai \
|
|
301
|
+
--output-dir ./HBW_review
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
**Do not rely on manually renaming or unzipping `.zapXX` archives as the production engineering workflow.** DevAgent's qualified Siemens path is based on exported TIA engineering artifacts and explicit support accounting, not undocumented assumptions about Siemens archive internals.
|
|
305
|
+
|
|
306
|
+
For Siemens, include the related OB/FB/FC logic, DB/UDT/type evidence, generated sources, and Openness XML used by the controller whenever available. A complete export gives DevAgent a stronger project-wide call/data/identity/support-boundary view than isolated snippets.
|
|
307
|
+
|
|
308
|
+
### 2. Add customer or machine requirements
|
|
309
|
+
|
|
310
|
+
`--requirements` is repeatable and accepts `.txt`, `.md`, `.csv`, `.json`, `.docx`, and `.pdf` when PDF support is installed.
|
|
311
|
+
|
|
312
|
+
Example:
|
|
313
|
+
|
|
314
|
+
```markdown
|
|
315
|
+
- Conveyor shall not run unless the main guard circuit is healthy.
|
|
316
|
+
- A safety fault shall prevent the motor run output.
|
|
317
|
+
- Reset shall not automatically restart the conveyor.
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### 3. Run the engineering review
|
|
321
|
+
|
|
322
|
+
Rockwell:
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
devagent plc ./exports/Line1_Controller.L5X \
|
|
326
|
+
--requirements ./requirements/line1.md \
|
|
327
|
+
--ai \
|
|
328
|
+
--output-dir ./plc-review/line1-current
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
Siemens:
|
|
332
|
+
|
|
333
|
+
```bash
|
|
334
|
+
devagent plc ./exports/TIA_Line1/ \
|
|
335
|
+
--requirements ./requirements/line1.md \
|
|
336
|
+
--ai \
|
|
337
|
+
--output-dir ./plc-review/line1-current
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
`--ai` enables the evidence-constrained AI engineering-review layer. It is optional; the deterministic PLC analysis and FAT-planning path still runs without it.
|
|
341
|
+
|
|
342
|
+
### 4. Compare a PLC revision
|
|
343
|
+
|
|
344
|
+
Use `--baseline` with a previous export from the same vendor to identify changed logic, affected requirements, changed risks, and FAT tests that should be repeated.
|
|
345
|
+
|
|
346
|
+
```bash
|
|
347
|
+
devagent plc ./exports/new/TIA_Line1/ \
|
|
348
|
+
--baseline ./exports/old/TIA_Line1/ \
|
|
349
|
+
--requirements ./requirements/line1.md \
|
|
350
|
+
--ai \
|
|
351
|
+
--output-dir ./plc-review/line1-revision
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
The same pattern works for Rockwell using current and previous `.L5X` files.
|
|
355
|
+
|
|
356
|
+
### 5. Review the evidence package
|
|
357
|
+
|
|
358
|
+
A written run includes `fat_report.md` plus machine-readable evidence such as canonical IR, dependency graph, static verification, requirement verification, FAT tests/plans, risks, optimizations, regression impact, recommendations, evidence manifest, release readiness, and an exact run manifest.
|
|
359
|
+
|
|
360
|
+
The engineer should pay special attention to four kinds of results:
|
|
361
|
+
|
|
362
|
+
- **statically proven behavior** — supported semantics with the required identity, writer ownership, reachability, call binding, and source evidence;
|
|
363
|
+
- **`PARTIAL` / `OPAQUE` / `PROTECTED` support regions** — behavior that DevAgent intentionally refuses to overclaim from available exported source;
|
|
364
|
+
- **`FAT_REQUIRED` behavior** — timing, counting, hardware, external I/O/device, system-service, scheduling, unsupported-logic, or other runtime evidence that must be exercised by an engineer;
|
|
365
|
+
- **revision impact** — requirements, risks, logic areas, and FAT tests whose previous evidence may no longer be valid after a PLC change.
|
|
366
|
+
|
|
367
|
+
A passing static check does **not** replace FAT when the report requires runtime evidence.
|
|
368
|
+
|
|
369
|
+
Recommended workflow:
|
|
370
|
+
|
|
371
|
+
```text
|
|
372
|
+
EXPORT PLC PROJECT
|
|
373
|
+
↓
|
|
374
|
+
DEVAGENT PLC ENGINEERING REVIEW
|
|
375
|
+
↓
|
|
376
|
+
REQUIREMENT + LOGIC + RISK REVIEW
|
|
377
|
+
↓
|
|
378
|
+
GENERATED FAT PROCEDURES
|
|
379
|
+
↓
|
|
380
|
+
ENGINEER EXECUTES REQUIRED FAT EXTERNALLY
|
|
381
|
+
↓
|
|
382
|
+
CAPTURE / IMPORT TRUSTED EVIDENCE WHEN APPLICABLE
|
|
383
|
+
↓
|
|
384
|
+
ENGINEERING APPROVAL
|
|
385
|
+
↓
|
|
386
|
+
SITE COMMISSIONING / RELEASE PROCESS
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
For signed runtime-result, policy, trust-store, and approval workflows, and a complete explanation of Rockwell/Siemens evidence boundaries, see **[PLC Engineer Guide](docs/plc-engineer-guide.md)**.
|
|
390
|
+
|
|
221
391
|
## Practical examples
|
|
222
392
|
|
|
223
393
|
DevAgent is intended for real repository work, not only one-line code generation. Run it from the repository you want to change and describe the engineering outcome you need.
|
|
@@ -333,6 +503,7 @@ devagent setup --help
|
|
|
333
503
|
devagent doctor
|
|
334
504
|
devagent models
|
|
335
505
|
devagent status
|
|
506
|
+
devagent plc --help
|
|
336
507
|
devagent benchmark --help
|
|
337
508
|
```
|
|
338
509
|
|
|
@@ -504,16 +675,35 @@ Automated provider tests normally use deterministic or mocked clients and do not
|
|
|
504
675
|
|
|
505
676
|
## Project status
|
|
506
677
|
|
|
507
|
-
DevAgent 0.8.
|
|
678
|
+
DevAgent 0.8.6 is **beta software with a verified core release baseline**. The exact v0.8 merge revision on `main` passed Production CI across Python 3.10/3.11/3.12, clean wheel installation, real Linux bubblewrap sandbox execution, production qualification v4 (**70/70**), and autonomy qualification v5 (**9/9**), for **79/79 cumulative required qualification cases**.
|
|
508
679
|
|
|
509
680
|
The current core includes evidence-backed `VERIFIED` / `PARTIALLY_VERIFIED` / `BLOCKED` outcomes, backup-first editing, isolated worktrees, bounded structural file operations, repository-native verification, independent review, safe branch publication, provider/model choice, Java and .NET engineering discovery/execution, SQLite migration forward/rollback verification, large-monorepo deep-manifest discovery, bounded parallel agents, repository-local skills, foreground automations, Linux OS sandboxing, bounded browser/local-UI verification, and real-provider structured-contract benchmarking.
|
|
510
681
|
|
|
682
|
+
Current `main` also includes vendor-dispatched PLC engineering review for **Rockwell Studio 5000 full-project `.L5X`** and **Siemens TIA Portal exported engineering artifacts**, with separate production qualification workflows and fail-closed evidence boundaries. The Siemens qualification is cumulative through V9 and covers the bounded supported SCL/LAD/FBD, call/interface, state/interlock/recovery, canonical identity/type, support-accounting, malformed-input, revision, and large-project fixture surfaces. Unsupported, protected, ambiguous, or runtime-dependent behavior is withheld from static proof and routed to explicit limitations and engineer-executed FAT rather than silently reported as verified.
|
|
683
|
+
|
|
511
684
|
These results are **bounded engineering claims**, not universal-correctness or market-superiority claims. They are tied to explicit qualification cases, pinned revisions, deterministic fixtures/external oracles where applicable, and the environments actually exercised by CI.
|
|
512
685
|
|
|
513
|
-
Remaining work is primarily **breadth and external validation**, not missing core architecture: a larger public corpus of pinned upstream repositories and tasks; broader browser/UI coverage across dynamic applications and multiple browser environments; a wider Java/Gradle, .NET test-framework, and PostgreSQL/MySQL migration matrix beyond the current qualified fixtures; larger and more diverse monorepo stress cases beyond the current >12,000-file deep-manifest case; more real-world multi-agent workload studies;
|
|
686
|
+
Remaining work is primarily **breadth and external validation**, not missing core architecture: a larger public corpus of pinned upstream repositories and tasks; broader browser/UI coverage across dynamic applications and multiple browser environments; a wider Java/Gradle, .NET test-framework, and PostgreSQL/MySQL migration matrix beyond the current qualified fixtures; larger and more diverse monorepo stress cases beyond the current >12,000-file deep-manifest case; more real-world multi-agent workload studies; continuous paid real-provider benchmarking across a broader set of model/provider combinations; and additional real license-safe Siemens/Rockwell customer export qualification beyond deterministic repository fixtures. GitHub branch protection/rulesets are external repository settings and must be configured separately; DevAgent does not claim to configure them itself.
|
|
514
687
|
|
|
515
688
|
The project intentionally prioritizes trustworthy outcomes, reproducible evidence, and safe engineering behavior over feature count or unsupported "best agent" claims.
|
|
516
689
|
|
|
690
|
+
## ❤️ Support DevAgent
|
|
691
|
+
|
|
692
|
+
DevAgent is currently free to use during public beta.
|
|
693
|
+
|
|
694
|
+
If DevAgent saves you engineering time or helps you deliver safer, better-verified software or PLC engineering work, you can support continued development through [GitHub Sponsors](https://github.com/sponsors/tomha85).
|
|
695
|
+
|
|
696
|
+
Your sponsorship helps fund:
|
|
697
|
+
|
|
698
|
+
- new engineering and PLC capabilities;
|
|
699
|
+
- Siemens and Rockwell verification;
|
|
700
|
+
- additional AI provider support;
|
|
701
|
+
- regression and production qualification;
|
|
702
|
+
- documentation and examples;
|
|
703
|
+
- continued free public releases.
|
|
704
|
+
|
|
705
|
+
[](https://github.com/sponsors/tomha85)
|
|
706
|
+
|
|
517
707
|
## Contributing
|
|
518
708
|
|
|
519
709
|
Contributions are welcome. Read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request. Changes to safety, verification, reporting, acceptance semantics, providers, or bounded publication behavior should include regression evidence and must not give model-generated actions unrestricted Git publishing authority.
|
|
@@ -530,4 +720,4 @@ DevAgent is open source under the [MIT License](LICENSE).
|
|
|
530
720
|
Copyright (c) 2026 Tom Ha
|
|
531
721
|
```
|
|
532
722
|
|
|
533
|
-
DevAgent was created by **Tom Ha**. Original repository: **https://github.com/tomha85/devagent**. See [NOTICE](NOTICE) and [COPYRIGHT](COPYRIGHT) for project attribution.
|
|
723
|
+
DevAgent was created by **Tom Ha**. Original repository: **https://github.com/tomha85/devagent**. See [NOTICE](NOTICE) and [COPYRIGHT](COPYRIGHT) for project attribution.
|