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