maintainability-agent 3.7.6__tar.gz → 3.7.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 (392) hide show
  1. {maintainability_agent-3.7.6/src/maintainability_agent.egg-info → maintainability_agent-3.7.7}/PKG-INFO +6 -6
  2. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/README.md +5 -5
  3. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/pyproject.toml +1 -1
  4. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7/src/maintainability_agent.egg-info}/PKG-INFO +6 -6
  5. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/__init__.py +1 -1
  6. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_delegated_pillar.py +8 -5
  7. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/config.py +1 -1
  8. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_authorship_gates.py +103 -4
  9. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_installed_wheel_runtime.py +21 -2
  10. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_readme_claims.py +17 -0
  11. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/LICENSE +0 -0
  12. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/setup.cfg +0 -0
  13. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_agent.egg-info/SOURCES.txt +0 -0
  14. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_agent.egg-info/dependency_links.txt +0 -0
  15. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_agent.egg-info/entry_points.txt +0 -0
  16. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_agent.egg-info/requires.txt +0 -0
  17. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_agent.egg-info/top_level.txt +0 -0
  18. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/__main__.py +0 -0
  19. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_adapters.py +0 -0
  20. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_analysis.py +0 -0
  21. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_analyzer_sections.py +0 -0
  22. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_anchor.py +0 -0
  23. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_arguments.py +0 -0
  24. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_aspects.py +0 -0
  25. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_assets/analyzer-catalog.json +0 -0
  26. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_assets/standard.md +0 -0
  27. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_attestation.py +0 -0
  28. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_backfill.py +0 -0
  29. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_bands.py +0 -0
  30. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_banner.py +0 -0
  31. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_built_ins.py +0 -0
  32. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_calibration.py +0 -0
  33. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_catalog.py +0 -0
  34. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_charts.py +0 -0
  35. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_cognitive.py +0 -0
  36. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_config_defaults.py +0 -0
  37. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_conformance.py +0 -0
  38. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_corroborate.py +0 -0
  39. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_coverage_notes.py +0 -0
  40. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_criteria_scope.py +0 -0
  41. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_derive.py +0 -0
  42. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_discovery.py +0 -0
  43. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_documents.py +0 -0
  44. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_economics.py +0 -0
  45. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_economics_view.py +0 -0
  46. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_environment.py +0 -0
  47. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_evidence_reader.py +0 -0
  48. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_evidence_view.py +0 -0
  49. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_finding_match.py +0 -0
  50. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_first_run.py +0 -0
  51. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_formula.py +0 -0
  52. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_gates.py +0 -0
  53. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_generic.py +0 -0
  54. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_grammar.py +0 -0
  55. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_grant_ledger.py +0 -0
  56. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_history_view.py +0 -0
  57. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_hostile_prompt.py +0 -0
  58. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_hotspots.py +0 -0
  59. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_html_report_sections.py +0 -0
  60. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_html_view.py +0 -0
  61. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_identity.py +0 -0
  62. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_in_loop.py +0 -0
  63. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_in_loop_view.py +0 -0
  64. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_jvm_adapters.py +0 -0
  65. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_markdown_sections.py +0 -0
  66. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_masking.py +0 -0
  67. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_mcp_audit.py +0 -0
  68. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_mcp_gate.py +0 -0
  69. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_mcp_grants.py +0 -0
  70. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_mcp_refusals.py +0 -0
  71. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_mcp_resources.py +0 -0
  72. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_mcp_setup.py +0 -0
  73. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_metric_adapters.py +0 -0
  74. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_metrics_types.py +0 -0
  75. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_operator_reads.py +0 -0
  76. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_pillars.py +0 -0
  77. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_practice.py +0 -0
  78. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_precommit.py +0 -0
  79. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_precommit_install.py +0 -0
  80. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_precommit_view.py +0 -0
  81. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_pressures.py +0 -0
  82. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_prompt_sections.py +0 -0
  83. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_ranges_c.py +0 -0
  84. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_ranges_cobol.py +0 -0
  85. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_ranges_core.py +0 -0
  86. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_ranges_cpp.py +0 -0
  87. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_ranges_csharp.py +0 -0
  88. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_ranges_fortran.py +0 -0
  89. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_ranges_go.py +0 -0
  90. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_ranges_java.py +0 -0
  91. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_ranges_js.py +0 -0
  92. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_ranges_php.py +0 -0
  93. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_ranges_ruby.py +0 -0
  94. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_ranges_rust.py +0 -0
  95. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_ranges_swift.py +0 -0
  96. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_ratchet.py +0 -0
  97. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_ratio_adapters.py +0 -0
  98. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_recurrence.py +0 -0
  99. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_run_comparison.py +0 -0
  100. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_runner.py +0 -0
  101. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_safe_write.py +0 -0
  102. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_scan_history.py +0 -0
  103. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_scan_view.py +0 -0
  104. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_second_source.py +0 -0
  105. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_security_delegate.py +0 -0
  106. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_security_work_order.py +0 -0
  107. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_selection.py +0 -0
  108. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_semantic.py +0 -0
  109. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_semantic_policy.py +0 -0
  110. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_semantic_ts.py +0 -0
  111. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_semantic_view.py +0 -0
  112. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_setup_errors.py +0 -0
  113. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_setup_persist.py +0 -0
  114. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_skill_data/SKILL.md +0 -0
  115. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_skill_data/agents/anthropic.yaml +0 -0
  116. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_skill_data/agents/copilot.yaml +0 -0
  117. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_skill_data/agents/openai.yaml +0 -0
  118. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_skill_data/copilot/maintainability-agent.prompt.md +0 -0
  119. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_skill_data/references/finding-taxonomy.md +0 -0
  120. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_skill_install.py +0 -0
  121. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_stored_grants.py +0 -0
  122. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_tdd_view.py +0 -0
  123. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_test_commands.py +0 -0
  124. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_test_execution.py +0 -0
  125. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_test_pairing.py +0 -0
  126. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_tokens.py +0 -0
  127. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_tool_adapters.py +0 -0
  128. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_trends.py +0 -0
  129. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_user_config.py +0 -0
  130. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_verdict_adapters.py +0 -0
  131. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_verification.py +0 -0
  132. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_work_order.py +0 -0
  133. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_work_order_view.py +0 -0
  134. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_work_order_weights.py +0 -0
  135. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/_xml.py +0 -0
  136. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/baseline.py +0 -0
  137. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/cli.py +0 -0
  138. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/deadcode.py +0 -0
  139. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/declarations.py +0 -0
  140. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/duplication.py +0 -0
  141. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/evidence.py +0 -0
  142. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/git_tools.py +0 -0
  143. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/history.py +0 -0
  144. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/idioms.py +0 -0
  145. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/instructions.py +0 -0
  146. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/mcp_server.py +0 -0
  147. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/metrics.py +0 -0
  148. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/prompts.py +0 -0
  149. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/renderers.py +0 -0
  150. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/report.py +0 -0
  151. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/sarif.py +0 -0
  152. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/scoring.py +0 -0
  153. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/similarity.py +0 -0
  154. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/src/maintainability_audit/source.py +0 -0
  155. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_acquisition_trust.py +0 -0
  156. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_adapter_docs.py +0 -0
  157. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_adapter_recordings.py +0 -0
  158. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_adapters.py +0 -0
  159. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_added_lines.py +0 -0
  160. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_analysis_coverage.py +0 -0
  161. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_analysis_execution.py +0 -0
  162. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_analyzer_bridge.py +0 -0
  163. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_analyzer_config_isolation.py +0 -0
  164. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_analyzer_estimate_claims.py +0 -0
  165. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_analyzer_pinning.py +0 -0
  166. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_analyzer_primary_estimate.py +0 -0
  167. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_analyzer_provenance.py +0 -0
  168. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_analyzer_provenance_exclusions.py +0 -0
  169. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_analyzer_scoring_path.py +0 -0
  170. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_analyzer_spread_range.py +0 -0
  171. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_analyzer_xml_bounds.py +0 -0
  172. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_anchor_and_mode.py +0 -0
  173. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_anchor_caveat_and_counts_follow_the_run.py +0 -0
  174. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_anchor_disclosure.py +0 -0
  175. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_annotations_match_behaviour.py +0 -0
  176. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_anticipated_refusals.py +0 -0
  177. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_architecture.py +0 -0
  178. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_artifact_write_route_class.py +0 -0
  179. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_aspect_coverage.py +0 -0
  180. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_asset_snapshot_class.py +0 -0
  181. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_ast_reading_resolves_spellings.py +0 -0
  182. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_attestation.py +0 -0
  183. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_audit_components.py +0 -0
  184. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_authorization_freshness.py +0 -0
  185. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_backfill.py +0 -0
  186. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_band_concealment_class.py +0 -0
  187. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_band_concealment_p3.py +0 -0
  188. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_band_pressures.py +0 -0
  189. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_bands.py +0 -0
  190. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_body_or_signature_class.py +0 -0
  191. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_build_output_is_not_the_repositorys_code.py +0 -0
  192. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_c_declarations.py +0 -0
  193. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_calibration_corpus.py +0 -0
  194. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_calibration_drift.py +0 -0
  195. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_calibration_tooling.py +0 -0
  196. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_catalog_selection.py +0 -0
  197. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_catalog_tier_promise.py +0 -0
  198. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_chat_leads_with_the_work_order.py +0 -0
  199. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_chat_primary_docs.py +0 -0
  200. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_check_refuses_plus_only_fragments.py +0 -0
  201. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_checkstyle_adapter.py +0 -0
  202. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_checkstyle_catalog.py +0 -0
  203. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_child_sandbox.py +0 -0
  204. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_ci_history_recipe.py +0 -0
  205. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_ci_installs_the_analyzer_pool.py +0 -0
  206. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_claimed_languages.py +0 -0
  207. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_cli.py +0 -0
  208. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_clone_group_class.py +0 -0
  209. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_cobol_declarations.py +0 -0
  210. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_cognitive_complexity.py +0 -0
  211. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_cohort_statistics.py +0 -0
  212. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_concealment_properties.py +0 -0
  213. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_config_shape.py +0 -0
  214. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_consent_and_grant.py +0 -0
  215. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_consumer_migration.py +0 -0
  216. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_contract_claims.py +0 -0
  217. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_corroborate.py +0 -0
  218. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_coverage_by_language.py +0 -0
  219. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_cpp_declarations.py +0 -0
  220. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_criteria_completion.py +0 -0
  221. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_csharp_declarations.py +0 -0
  222. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_d15_composition.py +0 -0
  223. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_d15_goal_directed.py +0 -0
  224. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_dead_code.py +0 -0
  225. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_declaration_criteria_scope.py +0 -0
  226. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_declaration_edge_cases.py +0 -0
  227. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_declaration_grading.py +0 -0
  228. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_declaration_ranges.py +0 -0
  229. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_declaration_source.py +0 -0
  230. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_declarative_parsers.py +0 -0
  231. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_declared_imports.py +0 -0
  232. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_delegated_security_pillar.py +0 -0
  233. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_demo_tree.py +0 -0
  234. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_derivation_mix.py +0 -0
  235. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_determinism.py +0 -0
  236. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_dimension_ratchet.py +0 -0
  237. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_direct_runner_availability_class.py +0 -0
  238. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_discovery.py +0 -0
  239. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_doc_claims.py +0 -0
  240. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_docs_links.py +0 -0
  241. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_economic_context.py +0 -0
  242. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_empty_output_not_clean.py +0 -0
  243. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_empty_output_not_clean_adapters.py +0 -0
  244. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_environment_work_order.py +0 -0
  245. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_every_surface_says_what_the_run_found.py +0 -0
  246. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_evidence_invariants.py +0 -0
  247. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_evidence_normalization.py +0 -0
  248. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_evidence_properties.py +0 -0
  249. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_example_config_opens_claimed_languages.py +0 -0
  250. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_exclusion_dialects.py +0 -0
  251. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_exposure_never_outranks_band.py +0 -0
  252. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_falsifier_standard.py +0 -0
  253. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_file_list_cap_class.py +0 -0
  254. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_finding_identity.py +0 -0
  255. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_first_run_elicitation.py +0 -0
  256. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_first_run_prompt.py +0 -0
  257. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_first_run_reelicitation.py +0 -0
  258. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_fix_breadth_window.py +0 -0
  259. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_fixed_form_fortran.py +0 -0
  260. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_format_ask.py +0 -0
  261. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_fortran_declarations.py +0 -0
  262. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_fortran_metrics.py +0 -0
  263. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_fortran_practice.py +0 -0
  264. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_git_argv.py +0 -0
  265. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_git_read_only.py +0 -0
  266. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_git_readonly_class.py +0 -0
  267. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_go_declarations.py +0 -0
  268. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_grammar_constructs.py +0 -0
  269. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_grammar_token_coverage.py +0 -0
  270. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_grant_only_user_tier.py +0 -0
  271. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_history.py +0 -0
  272. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_history_boundary.py +0 -0
  273. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_history_manifest.py +0 -0
  274. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_history_schema2.py +0 -0
  275. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_history_window.py +0 -0
  276. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_hostile_prompt.py +0 -0
  277. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_html_executive.py +0 -0
  278. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_html_section_parity_class.py +0 -0
  279. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_identity_docs.py +0 -0
  280. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_identity_resolution.py +0 -0
  281. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_idiom_divergence.py +0 -0
  282. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_in_loop_budgets.py +0 -0
  283. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_in_loop_check.py +0 -0
  284. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_instruction_targets.py +0 -0
  285. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_java_range_guard.py +0 -0
  286. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_java_ranges.py +0 -0
  287. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_java_scored.py +0 -0
  288. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_java_wiring.py +0 -0
  289. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_js_complexity_operators.py +0 -0
  290. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_js_declarations.py +0 -0
  291. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_language_coverage.py +0 -0
  292. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_language_support_honesty.py +0 -0
  293. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_mcp_baseline_payload.py +0 -0
  294. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_mcp_format_contract.py +0 -0
  295. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_mcp_history.py +0 -0
  296. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_mcp_server.py +0 -0
  297. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_mcp_start_failure_names_what_is_installed.py +0 -0
  298. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_migration_1_0.py +0 -0
  299. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_mutation_recorded.py +0 -0
  300. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_near_duplicates.py +0 -0
  301. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_network_disclosure.py +0 -0
  302. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_one_setup_across_surfaces_class.py +0 -0
  303. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_operator_named_paths.py +0 -0
  304. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_operator_named_reads.py +0 -0
  305. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_pairing_reads_imports.py +0 -0
  306. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_pattern_budget.py +0 -0
  307. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_phase6_claims.py +0 -0
  308. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_php_declarations.py +0 -0
  309. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_pillars_and_practice.py +0 -0
  310. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_platform_claim.py +0 -0
  311. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_pmd_adapter.py +0 -0
  312. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_pmd_audit_closures.py +0 -0
  313. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_policy_claims.py +0 -0
  314. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_pool_runs_by_config.py +0 -0
  315. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_population_floors.py +0 -0
  316. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_practice_nested_gates_class.py +0 -0
  317. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_precommit_staged.py +0 -0
  318. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_presentation_refusals.py +0 -0
  319. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_promises.py +0 -0
  320. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_prompt_does_not_issue_rates_when_unscored.py +0 -0
  321. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_prompt_escalation_once.py +0 -0
  322. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_prompt_honesty.py +0 -0
  323. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_prompt_location_escalation_class.py +0 -0
  324. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_prove_falsifiers.py +0 -0
  325. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_python_complexity.py +0 -0
  326. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_python_declarations.py +0 -0
  327. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_read_boundary.py +0 -0
  328. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_recurrence.py +0 -0
  329. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_release_needs_an_empty_ledger.py +0 -0
  330. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_release_plan.py +0 -0
  331. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_release_plan_status.py +0 -0
  332. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_report_remedy_copy.py +0 -0
  333. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_root_grants.py +0 -0
  334. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_rubric_ignores_project_lint_config.py +0 -0
  335. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_ruby_declarations.py +0 -0
  336. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_run_comparison.py +0 -0
  337. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_runner.py +0 -0
  338. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_rust_declarations.py +0 -0
  339. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_sarif.py +0 -0
  340. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_scan_history.py +0 -0
  341. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_scan_scope.py +0 -0
  342. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_scanner_unsafe_direction.py +0 -0
  343. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_scanning.py +0 -0
  344. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_schema_fidelity.py +0 -0
  345. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_scope_conformance.py +0 -0
  346. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_scoring_calibration.py +0 -0
  347. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_security_delegate_versions_agree.py +0 -0
  348. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_security_findings_keep_their_handoff.py +0 -0
  349. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_security_pillar_runs_and_shows.py +0 -0
  350. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_semantic_findings_stay_inside_the_audited_files.py +0 -0
  351. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_semantic_policy.py +0 -0
  352. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_setup_gate_completeness.py +0 -0
  353. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_setup_gate_independent_contract.py +0 -0
  354. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_setup_precondition.py +0 -0
  355. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_skill_install.py +0 -0
  356. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_sonar_resolve.py +0 -0
  357. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_source_index.py +0 -0
  358. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_spotbugs_adapter.py +0 -0
  359. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_spotbugs_catalog.py +0 -0
  360. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_stage8_contract.py +0 -0
  361. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_stdout_outputs.py +0 -0
  362. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_suite_isolation.py +0 -0
  363. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_swift_declarations.py +0 -0
  364. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_tdd_structure.py +0 -0
  365. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_terminal_asks_the_same_questions.py +0 -0
  366. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_test_commands.py +0 -0
  367. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_test_execution_class.py +0 -0
  368. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_three_presentations.py +0 -0
  369. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_tool_resolution.py +0 -0
  370. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_tree_cannot_opt_the_host_in.py +0 -0
  371. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_tree_chosen_spawn.py +0 -0
  372. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_tree_reads_use_the_primitive.py +0 -0
  373. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_trends.py +0 -0
  374. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_type_fields_not_functions_class.py +0 -0
  375. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_uat_falsifiers.py +0 -0
  376. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_unanchored_set_matches_corpus.py +0 -0
  377. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_unread_code.py +0 -0
  378. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_user_config_tier.py +0 -0
  379. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_verification_audit_closures.py +0 -0
  380. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_verified_grade.py +0 -0
  381. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_version_claim.py +0 -0
  382. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_wheel_contents.py +0 -0
  383. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_withheld_work_keeps_its_boundary.py +0 -0
  384. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_work_items_state_their_own_finding.py +0 -0
  385. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_work_order.py +0 -0
  386. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_work_order_binds_to_this_interpreter.py +0 -0
  387. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_work_order_items.py +0 -0
  388. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_work_order_selection.py +0 -0
  389. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_workflow_supply_chain.py +0 -0
  390. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_write_boundary.py +0 -0
  391. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_write_route_class.py +0 -0
  392. {maintainability_agent-3.7.6 → maintainability_agent-3.7.7}/tests/test_written_record.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: maintainability-agent
3
- Version: 3.7.6
3
+ Version: 3.7.7
4
4
  Summary: Maintainability gate and AI remediation prompt generator for CI.
5
5
  Author: Marshall Guillory
6
6
  License: MIT
@@ -46,7 +46,7 @@ Dynamic: license-file
46
46
  **A deterministic, offline maintainability audit whose output is a _bounded
47
47
  work order_ for an AI coding agent** — a copy-paste prompt, per finding, that
48
48
  says *fix exactly these and refactor nothing else*. Chat-primary; CLI for CI.
49
- Version **3.7.6**.
49
+ Version **3.7.7**.
50
50
 
51
51
  **Languages parsed:** Python, Java, C, C++, C#, Go, Rust, PHP, Ruby, Swift,
52
52
  COBOL, Fortran (free-form *and* fixed-form), and the JS/TS/HTML family — each
@@ -424,13 +424,13 @@ it was generated against — a provenance record, not a claim about HEAD.
424
424
 
425
425
  | Metric | Value |
426
426
  |---|---:|
427
- | Maintainability estimate | 4.5 / 5 |
427
+ | Maintainability estimate | 4.4 / 5 |
428
428
  | Verified grade | B |
429
- | Files scanned | 511 |
429
+ | Files scanned | 498 |
430
430
  | Hard gate failures | 0 |
431
431
 
432
432
  A **B**, and the report says why: the grade is verified against the evidence
433
- *floor* of 4.2 rather than the 4.5 point estimate, because an unmeasured aspect
433
+ *floor* of 4.1 rather than the 4.4 point estimate, because an unmeasured aspect
434
434
  prices at 0 when a grade has to be defended. Every threshold gate is opted
435
435
  **on** for this repository's own CI, so drifting below the bar fails the build
436
436
  rather than the README.
@@ -473,7 +473,7 @@ instead of an invokable skill:
473
473
  This repo ships `action.yml`, usable as a composite action:
474
474
 
475
475
  ```yaml
476
- - uses: marshallguillory86/maintainability-agent@v1.0.0
476
+ - uses: marshallguillory86/maintainability-agent@v3.7.7
477
477
  with:
478
478
  config: maintainability-agent.json
479
479
  changed-only: main...HEAD
@@ -5,7 +5,7 @@
5
5
  **A deterministic, offline maintainability audit whose output is a _bounded
6
6
  work order_ for an AI coding agent** — a copy-paste prompt, per finding, that
7
7
  says *fix exactly these and refactor nothing else*. Chat-primary; CLI for CI.
8
- Version **3.7.6**.
8
+ Version **3.7.7**.
9
9
 
10
10
  **Languages parsed:** Python, Java, C, C++, C#, Go, Rust, PHP, Ruby, Swift,
11
11
  COBOL, Fortran (free-form *and* fixed-form), and the JS/TS/HTML family — each
@@ -383,13 +383,13 @@ it was generated against — a provenance record, not a claim about HEAD.
383
383
 
384
384
  | Metric | Value |
385
385
  |---|---:|
386
- | Maintainability estimate | 4.5 / 5 |
386
+ | Maintainability estimate | 4.4 / 5 |
387
387
  | Verified grade | B |
388
- | Files scanned | 511 |
388
+ | Files scanned | 498 |
389
389
  | Hard gate failures | 0 |
390
390
 
391
391
  A **B**, and the report says why: the grade is verified against the evidence
392
- *floor* of 4.2 rather than the 4.5 point estimate, because an unmeasured aspect
392
+ *floor* of 4.1 rather than the 4.4 point estimate, because an unmeasured aspect
393
393
  prices at 0 when a grade has to be defended. Every threshold gate is opted
394
394
  **on** for this repository's own CI, so drifting below the bar fails the build
395
395
  rather than the README.
@@ -432,7 +432,7 @@ instead of an invokable skill:
432
432
  This repo ships `action.yml`, usable as a composite action:
433
433
 
434
434
  ```yaml
435
- - uses: marshallguillory86/maintainability-agent@v1.0.0
435
+ - uses: marshallguillory86/maintainability-agent@v3.7.7
436
436
  with:
437
437
  config: maintainability-agent.json
438
438
  changed-only: main...HEAD
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "maintainability-agent"
7
- version = "3.7.6"
7
+ version = "3.7.7"
8
8
  description = "Maintainability gate and AI remediation prompt generator for CI."
9
9
  readme = "README.md"
10
10
  # 3.11, not 3.10. `_discovery`, `_pillars` and `_runner` all import
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: maintainability-agent
3
- Version: 3.7.6
3
+ Version: 3.7.7
4
4
  Summary: Maintainability gate and AI remediation prompt generator for CI.
5
5
  Author: Marshall Guillory
6
6
  License: MIT
@@ -46,7 +46,7 @@ Dynamic: license-file
46
46
  **A deterministic, offline maintainability audit whose output is a _bounded
47
47
  work order_ for an AI coding agent** — a copy-paste prompt, per finding, that
48
48
  says *fix exactly these and refactor nothing else*. Chat-primary; CLI for CI.
49
- Version **3.7.6**.
49
+ Version **3.7.7**.
50
50
 
51
51
  **Languages parsed:** Python, Java, C, C++, C#, Go, Rust, PHP, Ruby, Swift,
52
52
  COBOL, Fortran (free-form *and* fixed-form), and the JS/TS/HTML family — each
@@ -424,13 +424,13 @@ it was generated against — a provenance record, not a claim about HEAD.
424
424
 
425
425
  | Metric | Value |
426
426
  |---|---:|
427
- | Maintainability estimate | 4.5 / 5 |
427
+ | Maintainability estimate | 4.4 / 5 |
428
428
  | Verified grade | B |
429
- | Files scanned | 511 |
429
+ | Files scanned | 498 |
430
430
  | Hard gate failures | 0 |
431
431
 
432
432
  A **B**, and the report says why: the grade is verified against the evidence
433
- *floor* of 4.2 rather than the 4.5 point estimate, because an unmeasured aspect
433
+ *floor* of 4.1 rather than the 4.4 point estimate, because an unmeasured aspect
434
434
  prices at 0 when a grade has to be defended. Every threshold gate is opted
435
435
  **on** for this repository's own CI, so drifting below the bar fails the build
436
436
  rather than the README.
@@ -473,7 +473,7 @@ instead of an invokable skill:
473
473
  This repo ships `action.yml`, usable as a composite action:
474
474
 
475
475
  ```yaml
476
- - uses: marshallguillory86/maintainability-agent@v1.0.0
476
+ - uses: marshallguillory86/maintainability-agent@v3.7.7
477
477
  with:
478
478
  config: maintainability-agent.json
479
479
  changed-only: main...HEAD
@@ -1,3 +1,3 @@
1
1
  """Maintainability Audit CI."""
2
2
 
3
- __version__ = "3.7.6"
3
+ __version__ = "3.7.7"
@@ -23,10 +23,12 @@ number: a delegated pillar's numbers belong to the tool that measured
23
23
  them, and a consumer that recomputed anything would be a second opinion
24
24
  nobody asked for.
25
25
 
26
- **Absence is the normal case and stays the documented one.** No file
27
- means the pillar reports exactly what it reported before — delegated,
28
- `NotApplicable`, naming the other tool. That path is not a failure and
29
- does not warn: most repositories run one tool.
26
+ **Absence is stated, never silent.** Since D177 every audit runs
27
+ secure-code-agent itself; this reader serves `--security-pillar PATH`,
28
+ where a pipeline hands over a document the delegate already wrote. A
29
+ document that is missing or cannot be trusted yields `None`, and the
30
+ caller records why in the pillar entry rather than reporting an empty
31
+ pillar as a clean one.
30
32
 
31
33
  **A file that cannot be trusted is refused rather than partly believed.**
32
34
  Wrong schema, unreadable JSON, a shape that is not an object — each
@@ -108,7 +110,8 @@ def read_delegated(root: Path, relative: str = DEFAULT_PILLAR_PATH) -> dict[str,
108
110
  the file is absent, it is not a regular file, it does not parse, it
109
111
  is not an object, or it announces a schema this tool does not know.
110
112
  All five collapse to one answer because the caller does the same
111
- thing with each — keep the placeholder that names the other tool.
113
+ thing with each — it states that the handed-over document was absent
114
+ or could not be trusted.
112
115
 
113
116
  Read through the regular-file primitive like every other path the
114
117
  audited tree chooses (D145): a FIFO here would hang the audit rather
@@ -20,7 +20,7 @@ from ._operator_reads import (
20
20
  # still the door every caller comes through.
21
21
  __all__ = ["DEFAULT_CONFIG", "DEFAULT_IDIOM_GROUPS", "PROJECT_URL", "VERSION"]
22
22
 
23
- VERSION = "3.7.6"
23
+ VERSION = "3.7.7"
24
24
 
25
25
  PROJECT_URL = "https://github.com/marshallguillory86/maintainability-agent"
26
26
 
@@ -77,19 +77,32 @@ def _step_scripts() -> dict[str, str]:
77
77
  assert scripts.keys() == {
78
78
  "Each commit carries the repository's commit identity",
79
79
  "Each commit is signed",
80
+ "Commit messages name only the commit identity",
81
+ "No forbidden term in the change",
80
82
  }
81
83
  return scripts
82
84
 
83
85
 
84
86
  SCRIPTS = _step_scripts()
85
87
 
88
+ #: Stands in for the FORBIDDEN_TERMS secret. A made-up term, deliberately:
89
+ #: the real terms live only in the secret and must never be written here.
90
+ EXAMPLE_TERM = "example-forbidden-term"
86
91
 
87
- def _run_gate(repo: Path, name: str) -> subprocess.CompletedProcess[str]:
88
- """Substitute the only Actions expression used by the checked script."""
92
+
93
+ def _run_gate(
94
+ repo: Path, name: str, *, terms: str = EXAMPLE_TERM,
95
+ ) -> subprocess.CompletedProcess[str]:
96
+ """Substitute the only Actions expression used by the checked script.
97
+
98
+ ``terms`` is what the secret would hold; an empty string is the secret
99
+ being unset.
100
+ """
89
101
  script = SCRIPTS[name].replace("${{ github.base_ref }}", "main")
90
102
  return subprocess.run(
91
103
  ["bash", "-c", script],
92
104
  cwd=repo,
105
+ env={**os.environ, "FORBIDDEN_TERMS": terms},
93
106
  text=True,
94
107
  capture_output=True,
95
108
  check=False,
@@ -131,10 +144,13 @@ def signed_repo(tmp_path: Path) -> tuple[Path, Callable[..., str]]:
131
144
  signed: bool = True,
132
145
  author: str = COMMIT_IDENTITY,
133
146
  committer: str = COMMIT_IDENTITY,
147
+ message: str | None = None,
148
+ content: str | None = None,
134
149
  ) -> str:
135
150
  nonlocal counter
136
151
  counter += 1
137
- (repo / f"change-{counter}").write_text(f"{counter}\n", encoding="utf-8")
152
+ (repo / f"change-{counter}").write_text(
153
+ content if content is not None else f"{counter}\n", encoding="utf-8")
138
154
  _require_git(repo, "add", ".")
139
155
  result = _git(
140
156
  repo,
@@ -147,7 +163,7 @@ def signed_repo(tmp_path: Path) -> tuple[Path, Callable[..., str]]:
147
163
  "--author",
148
164
  f"Marshall Guillory <{author}>",
149
165
  "-m",
150
- f"change {counter}",
166
+ message if message is not None else f"change {counter}",
151
167
  env={**os.environ, "GIT_IDENTITY_OVERRIDE": "1"}
152
168
  if committer != COMMIT_IDENTITY
153
169
  else None,
@@ -325,3 +341,86 @@ def test_the_signature_gate_still_checks_merge_commits() -> None:
325
341
  "the conflict resolution its author wrote; rebase a stale branch "
326
342
  "rather than weakening this to make 'Update branch' pass (D105)."
327
343
  )
344
+
345
+
346
+ def test_a_trailer_naming_another_address_fails(
347
+ signed_repo: tuple[Path, Callable[..., str]],
348
+ ) -> None:
349
+ """A co-author trailer is where an outside address reached history before.
350
+
351
+ The identity step reads author and committer only, so a trailer in the
352
+ message passed every check and landed on the protected branch.
353
+ """
354
+ repo, commit = signed_repo
355
+ commit(message="change\n\nCo-authored-by: Someone Else <someone@example.com>")
356
+
357
+ result = _run_gate(repo, "Commit messages name only the commit identity")
358
+
359
+ assert result.returncode == 1, result.stdout
360
+ assert "names an address other than the commit identity" in result.stdout
361
+
362
+
363
+ def test_a_message_naming_only_the_commit_identity_passes(
364
+ signed_repo: tuple[Path, Callable[..., str]],
365
+ ) -> None:
366
+ """The allowlist is the identity itself, so naming it is not a failure."""
367
+ repo, commit = signed_repo
368
+ commit(message=f"change\n\nCo-authored-by: Marshall Guillory <{COMMIT_IDENTITY}>")
369
+
370
+ result = _run_gate(repo, "Commit messages name only the commit identity")
371
+
372
+ assert result.returncode == 0, result.stdout
373
+
374
+
375
+ def test_a_forbidden_term_in_a_message_fails_in_any_case(
376
+ signed_repo: tuple[Path, Callable[..., str]],
377
+ ) -> None:
378
+ repo, commit = signed_repo
379
+ commit(message=f"change mentioning {EXAMPLE_TERM.upper()}")
380
+
381
+ result = _run_gate(repo, "No forbidden term in the change")
382
+
383
+ assert result.returncode == 1, result.stdout
384
+ assert "identity or message contains a forbidden term" in result.stdout
385
+
386
+
387
+ def test_a_forbidden_term_added_to_a_file_fails_without_printing_it(
388
+ signed_repo: tuple[Path, Callable[..., str]],
389
+ ) -> None:
390
+ """The failure names the file, never the matched text.
391
+
392
+ A check that echoed the term into a public CI log would publish the
393
+ thing it exists to keep out.
394
+ """
395
+ repo, commit = signed_repo
396
+ commit(content=f"a line carrying {EXAMPLE_TERM}\n")
397
+
398
+ result = _run_gate(repo, "No forbidden term in the change")
399
+
400
+ assert result.returncode == 1, result.stdout
401
+ assert "adds a forbidden term" in result.stdout
402
+ assert EXAMPLE_TERM not in (result.stdout + result.stderr).lower()
403
+
404
+
405
+ def test_a_clean_change_passes_the_forbidden_term_check(
406
+ signed_repo: tuple[Path, Callable[..., str]],
407
+ ) -> None:
408
+ repo, commit = signed_repo
409
+ commit()
410
+
411
+ result = _run_gate(repo, "No forbidden term in the change")
412
+
413
+ assert result.returncode == 0, result.stdout
414
+
415
+
416
+ def test_the_forbidden_term_check_fails_closed_without_the_secret(
417
+ signed_repo: tuple[Path, Callable[..., str]],
418
+ ) -> None:
419
+ """An unset secret must not read as a clean change."""
420
+ repo, commit = signed_repo
421
+ commit()
422
+
423
+ result = _run_gate(repo, "No forbidden term in the change", terms="")
424
+
425
+ assert result.returncode == 1
426
+ assert "this check proved nothing" in result.stdout
@@ -4,6 +4,7 @@ from __future__ import annotations
4
4
 
5
5
  import json
6
6
  import os
7
+ import shutil
7
8
  import subprocess
8
9
  import sys
9
10
  import venv
@@ -105,8 +106,26 @@ def _run(command: list[str], *, cwd: Path, env: dict[str, str]) -> subprocess.Co
105
106
 
106
107
  @pytest.fixture(scope="module")
107
108
  def built_wheel(tmp_path_factory: pytest.TempPathFactory) -> Path:
108
- """Build the actual PEP 517 wheel; backend failure is a test failure."""
109
+ """Build the actual PEP 517 wheel; backend failure is a test failure.
110
+
111
+ Built from a private copy of what the build reads, never from the
112
+ checkout itself. setuptools writes `build/` and `*.egg-info` into the
113
+ source it is given, and this fixture is module-scoped, so under
114
+ `pytest -n auto` each worker that draws a test from this file builds
115
+ its own wheel. Two of them building from the checkout at once raced in
116
+ those shared directories and one failed with "wheel build failed",
117
+ intermittently, on a tree with nothing wrong in it.
118
+ """
109
119
  work = tmp_path_factory.mktemp("installed-wheel-build")
120
+ source = work / "source"
121
+ source.mkdir()
122
+ for name in ("pyproject.toml", "README.md", "LICENSE"):
123
+ if (ROOT / name).exists():
124
+ shutil.copy2(ROOT / name, source / name)
125
+ shutil.copytree(
126
+ ROOT / "src", source / "src",
127
+ ignore=shutil.ignore_patterns("__pycache__", "*.egg-info"),
128
+ )
110
129
  result = _run(
111
130
  [
112
131
  sys.executable,
@@ -116,7 +135,7 @@ def built_wheel(tmp_path_factory: pytest.TempPathFactory) -> Path:
116
135
  "--no-deps",
117
136
  "--wheel-dir",
118
137
  str(work),
119
- str(ROOT),
138
+ str(source),
120
139
  ],
121
140
  cwd=work,
122
141
  env=_clean_env(work),
@@ -45,6 +45,23 @@ def test_the_readme_names_the_shipped_version() -> None:
45
45
  )
46
46
 
47
47
 
48
+
49
+ def test_the_readme_action_example_pins_the_shipped_version() -> None:
50
+ """The copy-paste Action example installs whatever tag it names.
51
+
52
+ `action.yml` runs `pip install -e "$GITHUB_ACTION_PATH"`, so the pin is
53
+ the version a reader actually gets. It named `v1.0.0` through every
54
+ release from 1.0.1 to 3.7.5 while the version line above it was kept
55
+ current, because only that line had a guard.
56
+ """
57
+ from maintainability_audit.config import VERSION
58
+
59
+ readme = _read(ROOT / "README.md")
60
+ assert f"maintainability-agent@v{VERSION}" in readme, (
61
+ f"the README's GitHub Action example does not pin v{VERSION}; a "
62
+ "reader copying it installs an older release"
63
+ )
64
+
48
65
  def test_the_report_names_the_corpus_its_anchor_is_drawn_from() -> None:
49
66
  """Every multiple is against a corpus; the report must say which one.
50
67