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.
Files changed (234) hide show
  1. {devagent_ai-0.8.6/devagent_ai.egg-info → devagent_ai-0.8.7}/PKG-INFO +173 -3
  2. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/README.md +173 -3
  3. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/__init__.py +1 -1
  4. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/cli.py +156 -30
  5. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_models.py +27 -1
  6. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/professional_report_install_v14.py +9 -0
  7. devagent_ai-0.8.7/devagent/plc/report_levels.py +558 -0
  8. devagent_ai-0.8.7/devagent/plc/siemens_cli_install_v1.py +99 -0
  9. devagent_ai-0.8.7/devagent/plc/siemens_closeout_v9.py +318 -0
  10. devagent_ai-0.8.7/devagent/plc/siemens_identity_types_v8.py +526 -0
  11. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_v6_v7_token_hardening.py +21 -0
  12. devagent_ai-0.8.7/devagent/plc/siemens_v8_v9_compat_hardening.py +317 -0
  13. devagent_ai-0.8.7/devagent/plc/top_engineering_risks_v1.py +290 -0
  14. {devagent_ai-0.8.6 → devagent_ai-0.8.7/devagent_ai.egg-info}/PKG-INFO +173 -3
  15. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent_ai.egg-info/SOURCES.txt +9 -0
  16. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/pyproject.toml +1 -1
  17. devagent_ai-0.8.7/tests/test_plc_cli_live_progress.py +123 -0
  18. devagent_ai-0.8.7/tests/test_plc_report_levels.py +112 -0
  19. devagent_ai-0.8.7/tests/test_plc_siemens_v8_v9.py +262 -0
  20. devagent_ai-0.8.7/tests/test_plc_top_engineering_risks.py +153 -0
  21. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_production_v040.py +1 -1
  22. devagent_ai-0.8.6/devagent/plc/siemens_cli_install_v1.py +0 -38
  23. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/LICENSE +0 -0
  24. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/NOTICE +0 -0
  25. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/agent/__init__.py +0 -0
  26. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/agent/llm.py +0 -0
  27. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/agent/loop.py +0 -0
  28. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/agent/memory.py +0 -0
  29. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/agent/prompts.py +0 -0
  30. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/agent/tools.py +0 -0
  31. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/__main__.py +0 -0
  32. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/artifacts.py +0 -0
  33. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/automations.py +0 -0
  34. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/autonomy.py +0 -0
  35. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/browser.py +0 -0
  36. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/cli.py +0 -0
  37. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/config.py +0 -0
  38. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/discovery.py +0 -0
  39. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/entrypoint.py +0 -0
  40. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/evaluation.py +0 -0
  41. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/memory.py +0 -0
  42. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/models.py +0 -0
  43. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/orchestrator.py +0 -0
  44. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/__init__.py +0 -0
  45. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/agent_harness_install_v15.py +0 -0
  46. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/agent_harness_v15.py +0 -0
  47. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/analysis.py +0 -0
  48. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/execution_trust.py +0 -0
  49. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/fat_procedure_v12.py +0 -0
  50. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/four_contract_v13.py +0 -0
  51. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/inspect_cli.py +0 -0
  52. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/models.py +0 -0
  53. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/plc_dispatch.py +0 -0
  54. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production.py +0 -0
  55. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_ai.py +0 -0
  56. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_evidence.py +0 -0
  57. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_readiness.py +0 -0
  58. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_readiness_v5.py +0 -0
  59. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_regression.py +0 -0
  60. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_report.py +0 -0
  61. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_review.py +0 -0
  62. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_utils.py +0 -0
  63. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_v5.py +0 -0
  64. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/production_verification.py +0 -0
  65. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/professional_report_v14.py +0 -0
  66. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/release_policy.py +0 -0
  67. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/report.py +0 -0
  68. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/report_clarity_install_v16.py +0 -0
  69. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/requirements.py +0 -0
  70. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_action_requirements.py +0 -0
  71. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_alias_hardening.py +0 -0
  72. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_branch_coverage_v16.py +0 -0
  73. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_closeout.py +0 -0
  74. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_closeout_gate_hardening.py +0 -0
  75. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_compare.py +0 -0
  76. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_compare_hardening.py +0 -0
  77. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_compare_reachability_hardening.py +0 -0
  78. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_core_review_v12.py +0 -0
  79. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_echo.py +0 -0
  80. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_echo_gate.py +0 -0
  81. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_entrypoint_hardening.py +0 -0
  82. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_general_actions.py +0 -0
  83. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_l5x.py +0 -0
  84. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_motion_runtime_v11.py +0 -0
  85. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_regression_case_compat_v12.py +0 -0
  86. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_regression_evidence_hardening.py +0 -0
  87. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_requirement_hardening.py +0 -0
  88. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_risk_hardening.py +0 -0
  89. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_semantic_capabilities.py +0 -0
  90. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_st_case_v11.py +0 -0
  91. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_st_v10.py +0 -0
  92. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_standard_catalog.py +0 -0
  93. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_state_machine_v11.py +0 -0
  94. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_stateful_runtime.py +0 -0
  95. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_structure.py +0 -0
  96. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_system_service_install_v17.py +0 -0
  97. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_system_service_report_install_v17.py +0 -0
  98. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_system_service_v17.py +0 -0
  99. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/rockwell_v10_semantics.py +0 -0
  100. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/safe_analysis.py +0 -0
  101. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/semantic_coverage.py +0 -0
  102. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/semantic_coverage_report.py +0 -0
  103. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_call_graph_v3.py +0 -0
  104. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_flgnet_extended_hardening_v4.py +0 -0
  105. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_flgnet_extended_v4.py +0 -0
  106. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_flgnet_hardening_v4.py +0 -0
  107. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_flgnet_v4.py +0 -0
  108. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_integration_v1.py +0 -0
  109. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_interlock_permissive_v6.py +0 -0
  110. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_recovery_v7.py +0 -0
  111. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_scl_control_flow_hardening_v2.py +0 -0
  112. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_scl_control_flow_v2.py +0 -0
  113. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_state_machine_hardening_v5.py +0 -0
  114. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_state_machine_v5.py +0 -0
  115. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_tia_v1.py +0 -0
  116. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/siemens_v5_bindings_v1.py +0 -0
  117. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/signature_trust.py +0 -0
  118. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/trusted_snapshot.py +0 -0
  119. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/v2_guardrails.py +0 -0
  120. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/plc/v2_semantics.py +0 -0
  121. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/provider_benchmark.py +0 -0
  122. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/providers.py +0 -0
  123. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/qualification.py +0 -0
  124. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/realworld.py +0 -0
  125. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/report.py +0 -0
  126. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/retrieval.py +0 -0
  127. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/routing.py +0 -0
  128. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/runtime.py +0 -0
  129. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/safety.py +0 -0
  130. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/skills.py +0 -0
  131. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/source_control.py +0 -0
  132. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/state_machine.py +0 -0
  133. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/tasking.py +0 -0
  134. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/technical_review.py +0 -0
  135. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/workspace.py +0 -0
  136. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent/worktree.py +0 -0
  137. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent_ai.egg-info/dependency_links.txt +0 -0
  138. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent_ai.egg-info/entry_points.txt +0 -0
  139. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent_ai.egg-info/requires.txt +0 -0
  140. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/devagent_ai.egg-info/top_level.txt +0 -0
  141. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/setup.cfg +0 -0
  142. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_acceptance_contract.py +0 -0
  143. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_benchmark_catalog.py +0 -0
  144. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_browser_verification.py +0 -0
  145. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_capability_discovery.py +0 -0
  146. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_cli.py +0 -0
  147. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_cli_progress.py +0 -0
  148. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_developer_review_report.py +0 -0
  149. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_discovery_memory.py +0 -0
  150. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_e2e_fake_provider.py +0 -0
  151. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_evaluation_harness.py +0 -0
  152. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_evaluation_matrix.py +0 -0
  153. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_evaluation_regression_evidence.py +0 -0
  154. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_functional_qualification.py +0 -0
  155. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_huge_monorepo_v070.py +0 -0
  156. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_migration_e2e_v070.py +0 -0
  157. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_model_routing.py +0 -0
  158. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_multilang_technical_review.py +0 -0
  159. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_multistack_devagent_e2e.py +0 -0
  160. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_multistack_qualification.py +0 -0
  161. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_packaging_metadata.py +0 -0
  162. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plan_verification_normalization.py +0 -0
  163. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_agent_harness_trace_v15.py +0 -0
  164. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_agent_harness_v15.py +0 -0
  165. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_execution_trust.py +0 -0
  166. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_four_contract_v13.py +0 -0
  167. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_product_contract_v12.py +0 -0
  168. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_production.py +0 -0
  169. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_production_v5.py +0 -0
  170. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_release_policy.py +0 -0
  171. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_boolean_alias_proof.py +0 -0
  172. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_canonical_risks.py +0 -0
  173. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_closeout_v9.py +0 -0
  174. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_closeout_v9_guardrails.py +0 -0
  175. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_closeout_v9_review_regressions.py +0 -0
  176. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_compare_v8.py +0 -0
  177. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_compare_v8_aliases.py +0 -0
  178. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_compare_v8_hardening.py +0 -0
  179. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_compare_v8_identity_assertions.py +0 -0
  180. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_compare_v8_review_regressions.py +0 -0
  181. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_echo_cli_v6.py +0 -0
  182. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_echo_v6.py +0 -0
  183. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_hardening.py +0 -0
  184. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_semantics_v7.py +0 -0
  185. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v1.py +0 -0
  186. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_action_requirements.py +0 -0
  187. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_arbitrary_project_qualification.py +0 -0
  188. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_echo_compatibility.py +0 -0
  189. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_general_actions.py +0 -0
  190. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_general_semantics.py +0 -0
  191. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_inspect_cli.py +0 -0
  192. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_semantic_coverage.py +0 -0
  193. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_st_safe_functions.py +0 -0
  194. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v10_stateful_runtime.py +0 -0
  195. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v11_reporting.py +0 -0
  196. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v11_st_motion.py +0 -0
  197. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v11_state_machine.py +0 -0
  198. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v16_semantic_hardening.py +0 -0
  199. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v17_system_service_fat.py +0 -0
  200. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v17_system_service_generic.py +0 -0
  201. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v2.py +0 -0
  202. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v9_entry_edgecases.py +0 -0
  203. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v9_final_codex.py +0 -0
  204. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v9_merge_gates.py +0 -0
  205. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_rockwell_v9_reachable_writers.py +0 -0
  206. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_siemens_v1.py +0 -0
  207. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_siemens_v2.py +0 -0
  208. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_siemens_v3_call_graph.py +0 -0
  209. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_siemens_v4_extended.py +0 -0
  210. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_siemens_v4_flgnet.py +0 -0
  211. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_siemens_v5_state_machine.py +0 -0
  212. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_siemens_v6_v7.py +0 -0
  213. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_signature_trust.py +0 -0
  214. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_v5_security_floor.py +0 -0
  215. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_plc_v5_toctou.py +0 -0
  216. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_preservation_contradiction.py +0 -0
  217. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_production_hardening.py +0 -0
  218. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_realworld_benchmark.py +0 -0
  219. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_requirement_compiler_v082.py +0 -0
  220. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_requirement_intelligence_v083.py +0 -0
  221. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_retrieval.py +0 -0
  222. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_runtime_sandbox.py +0 -0
  223. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_safety_workspace.py +0 -0
  224. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_source_control_publish.py +0 -0
  225. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_structural_devagent_e2e_v070.py +0 -0
  226. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_structural_operations.py +0 -0
  227. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_structured_provider_contract.py +0 -0
  228. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_tasking_state.py +0 -0
  229. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_v070_engineering_breadth.py +0 -0
  230. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_v080_autonomy.py +0 -0
  231. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_v080_provider_benchmark.py +0 -0
  232. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_v080_skills_automations.py +0 -0
  233. {devagent_ai-0.8.6 → devagent_ai-0.8.7}/tests/test_workspace_environment.py +0 -0
  234. {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.6
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.0 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**.
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; and continuous paid real-provider benchmarking across a broader set of model/provider combinations. GitHub branch protection/rulesets are external repository settings and must be configured separately; DevAgent does not claim to configure them itself.
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.0 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**.
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; and continuous paid real-provider benchmarking across a broader set of model/provider combinations. GitHub branch protection/rulesets are external repository settings and must be configured separately; DevAgent does not claim to configure them itself.
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.
@@ -1,3 +1,3 @@
1
1
  """DevAgent: evidence-driven local software engineering automation."""
2
2
 
3
- __version__ = "0.8.6"
3
+ __version__ = "0.8.7"