devagent-ai 0.8.6__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.6/devagent_ai.egg-info → devagent_ai-0.8.7}/PKG-INFO +173 -3
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/README.md +173 -3
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/__init__.py +1 -1
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/cli.py +156 -30
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_models.py +27 -1
- {devagent_ai-0.8.6 → 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.6 → 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.6 → devagent_ai-0.8.7/devagent_ai.egg-info}/PKG-INFO +173 -3
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent_ai.egg-info/SOURCES.txt +9 -0
- {devagent_ai-0.8.6 → 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.6 → devagent_ai-0.8.7}/tests/test_production_v040.py +1 -1
- devagent_ai-0.8.6/devagent/plc/siemens_cli_install_v1.py +0 -38
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/LICENSE +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/NOTICE +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/agent/__init__.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/agent/llm.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/agent/loop.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/agent/memory.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/agent/prompts.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/agent/tools.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/__main__.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/artifacts.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/automations.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/autonomy.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/browser.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/cli.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/config.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/discovery.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/entrypoint.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/evaluation.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/memory.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/models.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/orchestrator.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/__init__.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/agent_harness_install_v15.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/agent_harness_v15.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/analysis.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/execution_trust.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/fat_procedure_v12.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/four_contract_v13.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/inspect_cli.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/models.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/plc_dispatch.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_ai.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_evidence.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_readiness.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_readiness_v5.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_regression.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_report.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_review.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_utils.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_v5.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_verification.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/professional_report_v14.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/release_policy.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/report.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/report_clarity_install_v16.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/requirements.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_action_requirements.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_alias_hardening.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_branch_coverage_v16.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_closeout.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_closeout_gate_hardening.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_compare.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_compare_hardening.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_compare_reachability_hardening.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_core_review_v12.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_echo.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_echo_gate.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_entrypoint_hardening.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_general_actions.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_l5x.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_motion_runtime_v11.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_regression_case_compat_v12.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_regression_evidence_hardening.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_requirement_hardening.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_risk_hardening.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_semantic_capabilities.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_st_case_v11.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_st_v10.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_standard_catalog.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_state_machine_v11.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_stateful_runtime.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_structure.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_system_service_install_v17.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_system_service_report_install_v17.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_system_service_v17.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_v10_semantics.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/safe_analysis.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/semantic_coverage.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/semantic_coverage_report.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_call_graph_v3.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_flgnet_extended_hardening_v4.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_flgnet_extended_v4.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_flgnet_hardening_v4.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_flgnet_v4.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_integration_v1.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_interlock_permissive_v6.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_recovery_v7.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_scl_control_flow_hardening_v2.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_scl_control_flow_v2.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_state_machine_hardening_v5.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_state_machine_v5.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_tia_v1.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_v5_bindings_v1.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/signature_trust.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/trusted_snapshot.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/v2_guardrails.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/v2_semantics.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/provider_benchmark.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/providers.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/qualification.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/realworld.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/report.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/retrieval.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/routing.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/runtime.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/safety.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/skills.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/source_control.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/state_machine.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/tasking.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/technical_review.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/workspace.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/worktree.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent_ai.egg-info/dependency_links.txt +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent_ai.egg-info/entry_points.txt +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent_ai.egg-info/requires.txt +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent_ai.egg-info/top_level.txt +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/setup.cfg +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_acceptance_contract.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_benchmark_catalog.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_browser_verification.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_capability_discovery.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_cli.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_cli_progress.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_developer_review_report.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_discovery_memory.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_e2e_fake_provider.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_evaluation_harness.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_evaluation_matrix.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_evaluation_regression_evidence.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_functional_qualification.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_huge_monorepo_v070.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_migration_e2e_v070.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_model_routing.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_multilang_technical_review.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_multistack_devagent_e2e.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_multistack_qualification.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_packaging_metadata.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plan_verification_normalization.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_agent_harness_trace_v15.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_agent_harness_v15.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_execution_trust.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_four_contract_v13.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_product_contract_v12.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_production.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_production_v5.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_release_policy.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_boolean_alias_proof.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_canonical_risks.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_closeout_v9.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_closeout_v9_guardrails.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_closeout_v9_review_regressions.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_compare_v8.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_compare_v8_aliases.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_compare_v8_hardening.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_compare_v8_identity_assertions.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_compare_v8_review_regressions.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_echo_cli_v6.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_echo_v6.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_hardening.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_semantics_v7.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v1.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_action_requirements.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_arbitrary_project_qualification.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_echo_compatibility.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_general_actions.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_general_semantics.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_inspect_cli.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_semantic_coverage.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_st_safe_functions.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_stateful_runtime.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v11_reporting.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v11_st_motion.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v11_state_machine.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v16_semantic_hardening.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v17_system_service_fat.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v17_system_service_generic.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v2.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v9_entry_edgecases.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v9_final_codex.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v9_merge_gates.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v9_reachable_writers.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_siemens_v1.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_siemens_v2.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_siemens_v3_call_graph.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_siemens_v4_extended.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_siemens_v4_flgnet.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_siemens_v5_state_machine.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_siemens_v6_v7.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_signature_trust.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_v5_security_floor.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_v5_toctou.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_preservation_contradiction.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_production_hardening.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_realworld_benchmark.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_requirement_compiler_v082.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_requirement_intelligence_v083.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_retrieval.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_runtime_sandbox.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_safety_workspace.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_source_control_publish.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_structural_devagent_e2e_v070.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_structural_operations.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_structured_provider_contract.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_tasking_state.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_v070_engineering_breadth.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_v080_autonomy.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_v080_provider_benchmark.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_v080_skills_automations.py +0 -0
- {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_workspace_environment.py +0 -0
- {devagent_ai-0.8.6 → 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
|
|
@@ -254,6 +254,173 @@ devagent --input ../specs/release.requirement
|
|
|
254
254
|
|
|
255
255
|
Binary data, invalid UTF-8, secret-like paths, and files above the input-size bound are refused.
|
|
256
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
|
+
|
|
257
424
|
## Practical examples
|
|
258
425
|
|
|
259
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.
|
|
@@ -369,6 +536,7 @@ devagent setup --help
|
|
|
369
536
|
devagent doctor
|
|
370
537
|
devagent models
|
|
371
538
|
devagent status
|
|
539
|
+
devagent plc --help
|
|
372
540
|
devagent benchmark --help
|
|
373
541
|
```
|
|
374
542
|
|
|
@@ -540,13 +708,15 @@ Automated provider tests normally use deterministic or mocked clients and do not
|
|
|
540
708
|
|
|
541
709
|
## Project status
|
|
542
710
|
|
|
543
|
-
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**.
|
|
544
712
|
|
|
545
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.
|
|
546
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
|
+
|
|
547
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.
|
|
548
718
|
|
|
549
|
-
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.
|
|
550
720
|
|
|
551
721
|
The project intentionally prioritizes trustworthy outcomes, reproducible evidence, and safe engineering behavior over feature count or unsupported "best agent" claims.
|
|
552
722
|
|
|
@@ -221,6 +221,173 @@ devagent --input ../specs/release.requirement
|
|
|
221
221
|
|
|
222
222
|
Binary data, invalid UTF-8, secret-like paths, and files above the input-size bound are refused.
|
|
223
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
|
+
|
|
224
391
|
## Practical examples
|
|
225
392
|
|
|
226
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.
|
|
@@ -336,6 +503,7 @@ devagent setup --help
|
|
|
336
503
|
devagent doctor
|
|
337
504
|
devagent models
|
|
338
505
|
devagent status
|
|
506
|
+
devagent plc --help
|
|
339
507
|
devagent benchmark --help
|
|
340
508
|
```
|
|
341
509
|
|
|
@@ -507,13 +675,15 @@ Automated provider tests normally use deterministic or mocked clients and do not
|
|
|
507
675
|
|
|
508
676
|
## Project status
|
|
509
677
|
|
|
510
|
-
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**.
|
|
511
679
|
|
|
512
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.
|
|
513
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
|
+
|
|
514
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.
|
|
515
685
|
|
|
516
|
-
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.
|
|
517
687
|
|
|
518
688
|
The project intentionally prioritizes trustworthy outcomes, reproducible evidence, and safe engineering behavior over feature count or unsupported "best agent" claims.
|
|
519
689
|
|
|
@@ -550,4 +720,4 @@ DevAgent is open source under the [MIT License](LICENSE).
|
|
|
550
720
|
Copyright (c) 2026 Tom Ha
|
|
551
721
|
```
|
|
552
722
|
|
|
553
|
-
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.
|