maintainability-agent 3.7.4__tar.gz → 3.7.6__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 (394) hide show
  1. {maintainability_agent-3.7.4/src/maintainability_agent.egg-info → maintainability_agent-3.7.6}/PKG-INFO +4 -4
  2. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/README.md +3 -3
  3. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/pyproject.toml +1 -1
  4. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6/src/maintainability_agent.egg-info}/PKG-INFO +4 -4
  5. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_agent.egg-info/SOURCES.txt +1 -2
  6. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/__init__.py +1 -1
  7. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_analysis.py +1 -1
  8. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_anchor.py +1 -1
  9. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_backfill.py +1 -1
  10. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_cognitive.py +1 -1
  11. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_economics.py +1 -1
  12. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_first_run.py +1 -1
  13. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_html_view.py +1 -1
  14. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_in_loop.py +1 -1
  15. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_in_loop_view.py +1 -1
  16. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_markdown_sections.py +1 -1
  17. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_mcp_audit.py +2 -2
  18. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_mcp_setup.py +2 -3
  19. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_pressures.py +1 -1
  20. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_prompt_sections.py +1 -1
  21. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_ranges_core.py +1 -1
  22. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_ranges_js.py +3 -3
  23. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_runner.py +4 -4
  24. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_safe_write.py +3 -3
  25. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_security_delegate.py +10 -4
  26. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_semantic_ts.py +1 -1
  27. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_verification.py +2 -2
  28. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_work_order.py +1 -1
  29. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/baseline.py +1 -1
  30. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/cli.py +1 -1
  31. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/config.py +1 -1
  32. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/duplication.py +1 -1
  33. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/instructions.py +1 -1
  34. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_artifact_write_route_class.py +1 -1
  35. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_authorship_gates.py +31 -45
  36. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_body_or_signature_class.py +1 -1
  37. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_chat_leads_with_the_work_order.py +5 -5
  38. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_chat_primary_docs.py +1 -1
  39. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_child_sandbox.py +3 -3
  40. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_ci_installs_the_analyzer_pool.py +1 -1
  41. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_claimed_languages.py +3 -3
  42. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_d15_composition.py +1 -1
  43. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_d15_goal_directed.py +3 -3
  44. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_demo_tree.py +6 -6
  45. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_direct_runner_availability_class.py +2 -2
  46. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_every_surface_says_what_the_run_found.py +1 -1
  47. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_first_run_elicitation.py +2 -2
  48. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_html_executive.py +1 -1
  49. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_html_section_parity_class.py +1 -1
  50. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_in_loop_budgets.py +2 -2
  51. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_mcp_format_contract.py +2 -2
  52. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_mcp_server.py +1 -1
  53. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_migration_1_0.py +1 -1
  54. maintainability_agent-3.7.6/tests/test_mutation_recorded.py +79 -0
  55. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_one_setup_across_surfaces_class.py +1 -1
  56. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_platform_claim.py +3 -4
  57. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_precommit_staged.py +1 -1
  58. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_presentation_refusals.py +1 -1
  59. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_prove_falsifiers.py +3 -3
  60. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_readme_claims.py +1 -1
  61. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_security_findings_keep_their_handoff.py +1 -1
  62. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_security_pillar_runs_and_shows.py +6 -1
  63. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_semantic_findings_stay_inside_the_audited_files.py +1 -1
  64. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_skill_install.py +1 -1
  65. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_spotbugs_adapter.py +1 -1
  66. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_stage8_contract.py +1 -1
  67. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_uat_falsifiers.py +2 -9
  68. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_withheld_work_keeps_its_boundary.py +1 -1
  69. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_written_record.py +9 -11
  70. maintainability_agent-3.7.4/tests/test_declared_authorship.py +0 -65
  71. maintainability_agent-3.7.4/tests/test_roles_recorded.py +0 -169
  72. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/LICENSE +0 -0
  73. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/setup.cfg +0 -0
  74. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_agent.egg-info/dependency_links.txt +0 -0
  75. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_agent.egg-info/entry_points.txt +0 -0
  76. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_agent.egg-info/requires.txt +0 -0
  77. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_agent.egg-info/top_level.txt +0 -0
  78. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/__main__.py +0 -0
  79. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_adapters.py +0 -0
  80. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_analyzer_sections.py +0 -0
  81. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_arguments.py +0 -0
  82. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_aspects.py +0 -0
  83. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_assets/analyzer-catalog.json +0 -0
  84. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_assets/standard.md +0 -0
  85. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_attestation.py +0 -0
  86. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_bands.py +0 -0
  87. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_banner.py +0 -0
  88. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_built_ins.py +0 -0
  89. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_calibration.py +0 -0
  90. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_catalog.py +0 -0
  91. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_charts.py +0 -0
  92. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_config_defaults.py +0 -0
  93. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_conformance.py +0 -0
  94. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_corroborate.py +0 -0
  95. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_coverage_notes.py +0 -0
  96. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_criteria_scope.py +0 -0
  97. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_delegated_pillar.py +0 -0
  98. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_derive.py +0 -0
  99. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_discovery.py +0 -0
  100. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_documents.py +0 -0
  101. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_economics_view.py +0 -0
  102. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_environment.py +0 -0
  103. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_evidence_reader.py +0 -0
  104. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_evidence_view.py +0 -0
  105. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_finding_match.py +0 -0
  106. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_formula.py +0 -0
  107. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_gates.py +0 -0
  108. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_generic.py +0 -0
  109. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_grammar.py +0 -0
  110. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_grant_ledger.py +0 -0
  111. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_history_view.py +0 -0
  112. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_hostile_prompt.py +0 -0
  113. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_hotspots.py +0 -0
  114. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_html_report_sections.py +0 -0
  115. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_identity.py +0 -0
  116. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_jvm_adapters.py +0 -0
  117. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_masking.py +0 -0
  118. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_mcp_gate.py +0 -0
  119. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_mcp_grants.py +0 -0
  120. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_mcp_refusals.py +0 -0
  121. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_mcp_resources.py +0 -0
  122. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_metric_adapters.py +0 -0
  123. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_metrics_types.py +0 -0
  124. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_operator_reads.py +0 -0
  125. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_pillars.py +0 -0
  126. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_practice.py +0 -0
  127. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_precommit.py +0 -0
  128. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_precommit_install.py +0 -0
  129. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_precommit_view.py +0 -0
  130. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_ranges_c.py +0 -0
  131. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_ranges_cobol.py +0 -0
  132. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_ranges_cpp.py +0 -0
  133. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_ranges_csharp.py +0 -0
  134. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_ranges_fortran.py +0 -0
  135. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_ranges_go.py +0 -0
  136. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_ranges_java.py +0 -0
  137. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_ranges_php.py +0 -0
  138. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_ranges_ruby.py +0 -0
  139. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_ranges_rust.py +0 -0
  140. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_ranges_swift.py +0 -0
  141. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_ratchet.py +0 -0
  142. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_ratio_adapters.py +0 -0
  143. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_recurrence.py +0 -0
  144. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_run_comparison.py +0 -0
  145. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_scan_history.py +0 -0
  146. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_scan_view.py +0 -0
  147. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_second_source.py +0 -0
  148. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_security_work_order.py +0 -0
  149. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_selection.py +0 -0
  150. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_semantic.py +0 -0
  151. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_semantic_policy.py +0 -0
  152. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_semantic_view.py +0 -0
  153. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_setup_errors.py +0 -0
  154. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_setup_persist.py +0 -0
  155. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_skill_data/SKILL.md +0 -0
  156. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_skill_data/agents/anthropic.yaml +0 -0
  157. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_skill_data/agents/copilot.yaml +0 -0
  158. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_skill_data/agents/openai.yaml +0 -0
  159. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_skill_data/copilot/maintainability-agent.prompt.md +0 -0
  160. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_skill_data/references/finding-taxonomy.md +0 -0
  161. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_skill_install.py +0 -0
  162. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_stored_grants.py +0 -0
  163. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_tdd_view.py +0 -0
  164. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_test_commands.py +0 -0
  165. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_test_execution.py +0 -0
  166. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_test_pairing.py +0 -0
  167. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_tokens.py +0 -0
  168. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_tool_adapters.py +0 -0
  169. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_trends.py +0 -0
  170. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_user_config.py +0 -0
  171. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_verdict_adapters.py +0 -0
  172. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_work_order_view.py +0 -0
  173. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_work_order_weights.py +0 -0
  174. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/_xml.py +0 -0
  175. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/deadcode.py +0 -0
  176. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/declarations.py +0 -0
  177. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/evidence.py +0 -0
  178. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/git_tools.py +0 -0
  179. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/history.py +0 -0
  180. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/idioms.py +0 -0
  181. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/mcp_server.py +0 -0
  182. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/metrics.py +0 -0
  183. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/prompts.py +0 -0
  184. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/renderers.py +0 -0
  185. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/report.py +0 -0
  186. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/sarif.py +0 -0
  187. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/scoring.py +0 -0
  188. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/similarity.py +0 -0
  189. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/src/maintainability_audit/source.py +0 -0
  190. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_acquisition_trust.py +0 -0
  191. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_adapter_docs.py +0 -0
  192. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_adapter_recordings.py +0 -0
  193. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_adapters.py +0 -0
  194. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_added_lines.py +0 -0
  195. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_analysis_coverage.py +0 -0
  196. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_analysis_execution.py +0 -0
  197. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_analyzer_bridge.py +0 -0
  198. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_analyzer_config_isolation.py +0 -0
  199. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_analyzer_estimate_claims.py +0 -0
  200. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_analyzer_pinning.py +0 -0
  201. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_analyzer_primary_estimate.py +0 -0
  202. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_analyzer_provenance.py +0 -0
  203. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_analyzer_provenance_exclusions.py +0 -0
  204. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_analyzer_scoring_path.py +0 -0
  205. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_analyzer_spread_range.py +0 -0
  206. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_analyzer_xml_bounds.py +0 -0
  207. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_anchor_and_mode.py +0 -0
  208. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_anchor_caveat_and_counts_follow_the_run.py +0 -0
  209. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_anchor_disclosure.py +0 -0
  210. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_annotations_match_behaviour.py +0 -0
  211. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_anticipated_refusals.py +0 -0
  212. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_architecture.py +0 -0
  213. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_aspect_coverage.py +0 -0
  214. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_asset_snapshot_class.py +0 -0
  215. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_ast_reading_resolves_spellings.py +0 -0
  216. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_attestation.py +0 -0
  217. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_audit_components.py +0 -0
  218. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_authorization_freshness.py +0 -0
  219. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_backfill.py +0 -0
  220. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_band_concealment_class.py +0 -0
  221. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_band_concealment_p3.py +0 -0
  222. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_band_pressures.py +0 -0
  223. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_bands.py +0 -0
  224. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_build_output_is_not_the_repositorys_code.py +0 -0
  225. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_c_declarations.py +0 -0
  226. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_calibration_corpus.py +0 -0
  227. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_calibration_drift.py +0 -0
  228. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_calibration_tooling.py +0 -0
  229. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_catalog_selection.py +0 -0
  230. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_catalog_tier_promise.py +0 -0
  231. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_check_refuses_plus_only_fragments.py +0 -0
  232. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_checkstyle_adapter.py +0 -0
  233. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_checkstyle_catalog.py +0 -0
  234. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_ci_history_recipe.py +0 -0
  235. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_cli.py +0 -0
  236. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_clone_group_class.py +0 -0
  237. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_cobol_declarations.py +0 -0
  238. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_cognitive_complexity.py +0 -0
  239. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_cohort_statistics.py +0 -0
  240. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_concealment_properties.py +0 -0
  241. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_config_shape.py +0 -0
  242. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_consent_and_grant.py +0 -0
  243. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_consumer_migration.py +0 -0
  244. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_contract_claims.py +0 -0
  245. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_corroborate.py +0 -0
  246. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_coverage_by_language.py +0 -0
  247. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_cpp_declarations.py +0 -0
  248. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_criteria_completion.py +0 -0
  249. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_csharp_declarations.py +0 -0
  250. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_dead_code.py +0 -0
  251. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_declaration_criteria_scope.py +0 -0
  252. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_declaration_edge_cases.py +0 -0
  253. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_declaration_grading.py +0 -0
  254. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_declaration_ranges.py +0 -0
  255. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_declaration_source.py +0 -0
  256. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_declarative_parsers.py +0 -0
  257. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_declared_imports.py +0 -0
  258. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_delegated_security_pillar.py +0 -0
  259. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_derivation_mix.py +0 -0
  260. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_determinism.py +0 -0
  261. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_dimension_ratchet.py +0 -0
  262. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_discovery.py +0 -0
  263. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_doc_claims.py +0 -0
  264. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_docs_links.py +0 -0
  265. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_economic_context.py +0 -0
  266. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_empty_output_not_clean.py +0 -0
  267. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_empty_output_not_clean_adapters.py +0 -0
  268. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_environment_work_order.py +0 -0
  269. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_evidence_invariants.py +0 -0
  270. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_evidence_normalization.py +0 -0
  271. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_evidence_properties.py +0 -0
  272. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_example_config_opens_claimed_languages.py +0 -0
  273. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_exclusion_dialects.py +0 -0
  274. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_exposure_never_outranks_band.py +0 -0
  275. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_falsifier_standard.py +0 -0
  276. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_file_list_cap_class.py +0 -0
  277. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_finding_identity.py +0 -0
  278. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_first_run_prompt.py +0 -0
  279. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_first_run_reelicitation.py +0 -0
  280. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_fix_breadth_window.py +0 -0
  281. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_fixed_form_fortran.py +0 -0
  282. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_format_ask.py +0 -0
  283. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_fortran_declarations.py +0 -0
  284. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_fortran_metrics.py +0 -0
  285. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_fortran_practice.py +0 -0
  286. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_git_argv.py +0 -0
  287. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_git_read_only.py +0 -0
  288. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_git_readonly_class.py +0 -0
  289. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_go_declarations.py +0 -0
  290. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_grammar_constructs.py +0 -0
  291. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_grammar_token_coverage.py +0 -0
  292. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_grant_only_user_tier.py +0 -0
  293. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_history.py +0 -0
  294. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_history_boundary.py +0 -0
  295. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_history_manifest.py +0 -0
  296. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_history_schema2.py +0 -0
  297. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_history_window.py +0 -0
  298. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_hostile_prompt.py +0 -0
  299. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_identity_docs.py +0 -0
  300. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_identity_resolution.py +0 -0
  301. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_idiom_divergence.py +0 -0
  302. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_in_loop_check.py +0 -0
  303. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_installed_wheel_runtime.py +0 -0
  304. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_instruction_targets.py +0 -0
  305. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_java_range_guard.py +0 -0
  306. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_java_ranges.py +0 -0
  307. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_java_scored.py +0 -0
  308. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_java_wiring.py +0 -0
  309. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_js_complexity_operators.py +0 -0
  310. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_js_declarations.py +0 -0
  311. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_language_coverage.py +0 -0
  312. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_language_support_honesty.py +0 -0
  313. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_mcp_baseline_payload.py +0 -0
  314. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_mcp_history.py +0 -0
  315. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_mcp_start_failure_names_what_is_installed.py +0 -0
  316. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_near_duplicates.py +0 -0
  317. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_network_disclosure.py +0 -0
  318. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_operator_named_paths.py +0 -0
  319. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_operator_named_reads.py +0 -0
  320. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_pairing_reads_imports.py +0 -0
  321. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_pattern_budget.py +0 -0
  322. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_phase6_claims.py +0 -0
  323. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_php_declarations.py +0 -0
  324. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_pillars_and_practice.py +0 -0
  325. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_pmd_adapter.py +0 -0
  326. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_pmd_audit_closures.py +0 -0
  327. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_policy_claims.py +0 -0
  328. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_pool_runs_by_config.py +0 -0
  329. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_population_floors.py +0 -0
  330. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_practice_nested_gates_class.py +0 -0
  331. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_promises.py +0 -0
  332. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_prompt_does_not_issue_rates_when_unscored.py +0 -0
  333. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_prompt_escalation_once.py +0 -0
  334. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_prompt_honesty.py +0 -0
  335. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_prompt_location_escalation_class.py +0 -0
  336. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_python_complexity.py +0 -0
  337. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_python_declarations.py +0 -0
  338. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_read_boundary.py +0 -0
  339. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_recurrence.py +0 -0
  340. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_release_needs_an_empty_ledger.py +0 -0
  341. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_release_plan.py +0 -0
  342. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_release_plan_status.py +0 -0
  343. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_report_remedy_copy.py +0 -0
  344. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_root_grants.py +0 -0
  345. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_rubric_ignores_project_lint_config.py +0 -0
  346. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_ruby_declarations.py +0 -0
  347. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_run_comparison.py +0 -0
  348. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_runner.py +0 -0
  349. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_rust_declarations.py +0 -0
  350. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_sarif.py +0 -0
  351. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_scan_history.py +0 -0
  352. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_scan_scope.py +0 -0
  353. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_scanner_unsafe_direction.py +0 -0
  354. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_scanning.py +0 -0
  355. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_schema_fidelity.py +0 -0
  356. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_scope_conformance.py +0 -0
  357. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_scoring_calibration.py +0 -0
  358. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_security_delegate_versions_agree.py +0 -0
  359. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_semantic_policy.py +0 -0
  360. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_setup_gate_completeness.py +0 -0
  361. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_setup_gate_independent_contract.py +0 -0
  362. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_setup_precondition.py +0 -0
  363. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_sonar_resolve.py +0 -0
  364. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_source_index.py +0 -0
  365. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_spotbugs_catalog.py +0 -0
  366. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_stdout_outputs.py +0 -0
  367. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_suite_isolation.py +0 -0
  368. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_swift_declarations.py +0 -0
  369. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_tdd_structure.py +0 -0
  370. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_terminal_asks_the_same_questions.py +0 -0
  371. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_test_commands.py +0 -0
  372. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_test_execution_class.py +0 -0
  373. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_three_presentations.py +0 -0
  374. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_tool_resolution.py +0 -0
  375. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_tree_cannot_opt_the_host_in.py +0 -0
  376. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_tree_chosen_spawn.py +0 -0
  377. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_tree_reads_use_the_primitive.py +0 -0
  378. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_trends.py +0 -0
  379. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_type_fields_not_functions_class.py +0 -0
  380. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_unanchored_set_matches_corpus.py +0 -0
  381. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_unread_code.py +0 -0
  382. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_user_config_tier.py +0 -0
  383. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_verification_audit_closures.py +0 -0
  384. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_verified_grade.py +0 -0
  385. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_version_claim.py +0 -0
  386. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_wheel_contents.py +0 -0
  387. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_work_items_state_their_own_finding.py +0 -0
  388. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_work_order.py +0 -0
  389. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_work_order_binds_to_this_interpreter.py +0 -0
  390. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_work_order_items.py +0 -0
  391. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_work_order_selection.py +0 -0
  392. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_workflow_supply_chain.py +0 -0
  393. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_write_boundary.py +0 -0
  394. {maintainability_agent-3.7.4 → maintainability_agent-3.7.6}/tests/test_write_route_class.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: maintainability-agent
3
- Version: 3.7.4
3
+ Version: 3.7.6
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.4**.
49
+ Version **3.7.6**.
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
@@ -84,11 +84,11 @@ you what it could not measure.
84
84
  installed alongside rather than as a dependency, so the two tools release
85
85
  independently. Without it the report says the security pillar was not measured
86
86
  and gives this command. Its scanners decide what it can grade — see
87
- [machine setup](docs/machine-setup.md#4-toolchain) for which to install, and
87
+ [machine setup](docs/machine-setup.md#3-toolchain) for which to install, and
88
88
  don't add its `[mcp]` extra to this environment (it pins `mcp<2`).
89
89
 
90
90
  ```bash
91
- pip install 'secure-code-agent>=0.12.1'
91
+ pip install 'secure-code-agent>=0.12.2'
92
92
  brew install gitleaks osv-scanner semgrep checkov # its scanners; pip install bandit
93
93
  ```
94
94
 
@@ -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.4**.
8
+ Version **3.7.6**.
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
@@ -43,11 +43,11 @@ you what it could not measure.
43
43
  installed alongside rather than as a dependency, so the two tools release
44
44
  independently. Without it the report says the security pillar was not measured
45
45
  and gives this command. Its scanners decide what it can grade — see
46
- [machine setup](docs/machine-setup.md#4-toolchain) for which to install, and
46
+ [machine setup](docs/machine-setup.md#3-toolchain) for which to install, and
47
47
  don't add its `[mcp]` extra to this environment (it pins `mcp<2`).
48
48
 
49
49
  ```bash
50
- pip install 'secure-code-agent>=0.12.1'
50
+ pip install 'secure-code-agent>=0.12.2'
51
51
  brew install gitleaks osv-scanner semgrep checkov # its scanners; pip install bandit
52
52
  ```
53
53
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "maintainability-agent"
7
- version = "3.7.4"
7
+ version = "3.7.6"
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.4
3
+ Version: 3.7.6
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.4**.
49
+ Version **3.7.6**.
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
@@ -84,11 +84,11 @@ you what it could not measure.
84
84
  installed alongside rather than as a dependency, so the two tools release
85
85
  independently. Without it the report says the security pillar was not measured
86
86
  and gives this command. Its scanners decide what it can grade — see
87
- [machine setup](docs/machine-setup.md#4-toolchain) for which to install, and
87
+ [machine setup](docs/machine-setup.md#3-toolchain) for which to install, and
88
88
  don't add its `[mcp]` extra to this environment (it pins `mcp<2`).
89
89
 
90
90
  ```bash
91
- pip install 'secure-code-agent>=0.12.1'
91
+ pip install 'secure-code-agent>=0.12.2'
92
92
  brew install gitleaks osv-scanner semgrep checkov # its scanners; pip install bandit
93
93
  ```
94
94
 
@@ -224,7 +224,6 @@ tests/test_declaration_grading.py
224
224
  tests/test_declaration_ranges.py
225
225
  tests/test_declaration_source.py
226
226
  tests/test_declarative_parsers.py
227
- tests/test_declared_authorship.py
228
227
  tests/test_declared_imports.py
229
228
  tests/test_delegated_security_pillar.py
230
229
  tests/test_demo_tree.py
@@ -294,6 +293,7 @@ tests/test_mcp_history.py
294
293
  tests/test_mcp_server.py
295
294
  tests/test_mcp_start_failure_names_what_is_installed.py
296
295
  tests/test_migration_1_0.py
296
+ tests/test_mutation_recorded.py
297
297
  tests/test_near_duplicates.py
298
298
  tests/test_network_disclosure.py
299
299
  tests/test_one_setup_across_surfaces_class.py
@@ -328,7 +328,6 @@ tests/test_release_needs_an_empty_ledger.py
328
328
  tests/test_release_plan.py
329
329
  tests/test_release_plan_status.py
330
330
  tests/test_report_remedy_copy.py
331
- tests/test_roles_recorded.py
332
331
  tests/test_root_grants.py
333
332
  tests/test_rubric_ignores_project_lint_config.py
334
333
  tests/test_ruby_declarations.py
@@ -1,3 +1,3 @@
1
1
  """Maintainability Audit CI."""
2
2
 
3
- __version__ = "3.7.4"
3
+ __version__ = "3.7.6"
@@ -77,7 +77,7 @@ class ToolCoverage:
77
77
  # True when the language inventory (not a probe, not a spawn)
78
78
  # decided this tool had nothing to read — the selection-stage fact
79
79
  # D15 requires to be visible as selection, not only as a coverage
80
- # outcome (Codex audit on 43c0d13, H1).
80
+ # outcome (audit of `43c0d13`, H1).
81
81
  inventory_filtered: bool = False
82
82
  # The catalog languages this tool reads, in the catalog's vocabulary.
83
83
  # Carried on the record because coverage is claimed per language: a
@@ -16,7 +16,7 @@ obsolete again at the next one.
16
16
  What is *not* policy is silence about it where the grade is read. The
17
17
  report carried `score.reference` and the note said the corpus spanned
18
18
  "every language this scanner parses" — which was true when it was written
19
- and false from 2.4.0 onward, for three releases. A Grok audit on
19
+ and false from 2.4.0 onward, for three releases. An audit on
20
20
  2026-09-04 named it as the second instance of a shape this project had
21
21
  already shipped once: a limit disclosed only in JSON is disclosed nowhere
22
22
  that matters.
@@ -62,7 +62,7 @@ def _git(root: Path, *args: str) -> str:
62
62
  # tree instead -- and backfill's `worktree add` re-hashes
63
63
  # content, which is exactly what runs a `clean` filter. `run_git`
64
64
  # got this; this spawner, living outside `git_tools`, did not
65
- # (Grok e88b429 audit; the D92 sweep only read `git_tools.py`).
65
+ # (audit of `e88b429`; the D92 sweep only read `git_tools.py`).
66
66
  ["git", *READ_ONLY_GIT_CONFIG, *_attr_tree_config(root),
67
67
  "-C", str(root), *args],
68
68
  capture_output=True, text=True, check=False,
@@ -216,7 +216,7 @@ def cobol_cognitive(lines: list[str]) -> int:
216
216
  no `PROCEDURE DIVISION` — so re-masking blanked the whole thing and
217
217
  every COBOL paragraph in production scored exactly 0, including deeply
218
218
  nested ones. The souvenir test passed throughout because it called this
219
- with a whole file. Found by a Grok audit on 2026-09-04.
219
+ with a whole file. Found by an audit on 2026-09-04.
220
220
  """
221
221
  masked = lines
222
222
  score = 0
@@ -172,7 +172,7 @@ def _affected_changes_per_year(report: dict[str, Any]) -> tuple[float, str]:
172
172
  # Once per file, not once per row. A file with several work-order
173
173
  # items -- a long function and dead code in the same module --
174
174
  # has one churn history, and summing it per row multiplied that
175
- # file's yearly changes by its finding count (Grok e88b429 audit).
175
+ # file's yearly changes by its finding count (audit of `e88b429`).
176
176
  touched = sum(churn.get(path, 0) for path in {item.get("path") or "" for item in items})
177
177
  if touched:
178
178
  return float(touched), (
@@ -44,7 +44,7 @@ def maybe_prompt_first_run(root: Path, explicit_config: str | None) -> None:
44
44
  "chat-path twin"). The CLI had drifted to a depth/license-only subset
45
45
  that never answered pool execution, so the mere existence of the file
46
46
  it wrote defaulted the pool on and marked setup complete for a
47
- decision nobody made (Grok 63ab820 audit). Asking `run_pool` and
47
+ decision nobody made (audit of `63ab820`). Asking `run_pool` and
48
48
  `record_scan_history` here, and persisting through `apply_answers`,
49
49
  makes a repository configured at a terminal identical to one
50
50
  configured in chat.
@@ -143,7 +143,7 @@ def _comparable_tail(records: list[Any]) -> list[Any]:
143
143
  The HTML skin walked every stored record instead, so a first-vs-last
144
144
  estimate straddling a break read as "Improving across N scans" when
145
145
  the two numbers were produced by different instruments and cannot be
146
- compared at all (Grok e88b429 audit). Restricting to the last segment
146
+ compared at all (audit of `e88b429`). Restricting to the last segment
147
147
  puts the HTML skin on the same comparability rule as the others.
148
148
  """
149
149
  from ._scan_history import segments
@@ -174,7 +174,7 @@ def _breaches_for(metric: Any, thresholds: dict[str, int]) -> list[dict[str, Any
174
174
  version subtracted `max_function_lines` from the line count whatever
175
175
  had failed. A short, complex function then rendered as "-71 over" —
176
176
  a negative overage of a budget it was comfortably inside, printed for
177
- a breach that was real (Grok's audit). A figure has to be about the
177
+ a breach that was real (found by audit). A figure has to be about the
178
178
  thing that failed or it is worse than no figure.
179
179
  """
180
180
  lines_limit, _ = _budget_for(metric.kind, thresholds)
@@ -102,7 +102,7 @@ def check_json(result: dict[str, Any]) -> str:
102
102
  # Read from the result, never written as a constant. A
103
103
  # literal `False` here says "not scored" whatever the check
104
104
  # actually did, so the field would keep reassuring a caller
105
- # through the exact bug it exists to disclose (Grok's audit).
105
+ # through the exact bug it exists to disclose (found by audit).
106
106
  "scored": result["scored"],
107
107
  "scored_reason": result["scored_reason"],
108
108
  },
@@ -93,7 +93,7 @@ def render_history_markdown(report: dict[str, Any]) -> list[str]:
93
93
  # complete" with nothing about the window at all, while the
94
94
  # scoring layer had already marked every history rate
95
95
  # not-applicable. P8: the report states what examined each value
96
- # (D56, reopened by Codex).
96
+ # (D56, reopened).
97
97
  return [
98
98
  "### History",
99
99
  "",
@@ -136,7 +136,7 @@ def authorize_config(config_path: str | None, root: Path) -> str | None:
136
136
  So the two doors onto one rule disagreed: `repository_path` refused
137
137
  `link/…` and this returned the target. The baseline seam below
138
138
  already carries a comment recording this same escape being found and
139
- closed *there*; this door was never revisited (Grok, 673e667).
139
+ closed *there*; this door was never revisited (audit of `673e667`).
140
140
  """
141
141
  if config_path is None:
142
142
  return None
@@ -375,7 +375,7 @@ def _baseline_workflow(report: dict[str, Any], root: Path,
375
375
  # resolves and this then bounded the resolved path, so an inward
376
376
  # `.maintainability -> src` symlink kept the target inside the root and
377
377
  # the write landed in source -- the D34 escape history refused and
378
- # baseline did not (Grok e88b429 audit). `repository_path` refuses a
378
+ # baseline did not (audit of `e88b429`). `repository_path` refuses a
379
379
  # symlink anywhere on the route and keeps the same boundary check.
380
380
  target = repository_path(root, baseline_path, str(DEFAULT_BASELINE_PATH))
381
381
  if write:
@@ -341,9 +341,8 @@ def setup_schema(root: Path | None = None):
341
341
  """The elicitation model for whichever stage this repository is in.
342
342
 
343
343
  Two stages, because the three labor rates are only wanted by
344
- someone who said yes to the gate. Asking them of everyone is what
345
- Marshall called basic logic broken, and he was right: the default
346
- answer to the gate is "skip".
344
+ someone who said yes to the gate. Asking them of everyone was broken
345
+ logic: the default answer to the gate is "skip".
347
346
  """
348
347
  if root is not None and economics_bounds_pending(root):
349
348
  return _schema_for(economics_bound_questions())
@@ -99,7 +99,7 @@ def _banded(banded_state: object, population: float | None,
99
99
  # refinement that can only *add* pressure over the count rate (a
100
100
  # warn at complexity 12 is worse than a plain warn), so falling
101
101
  # back to the count rate when the band is withheld only improved
102
- # the score -- the P3 hole Grok's e88b429 audit named. Dropping the
102
+ # the score -- the P3 hole the `e88b429` audit named. Dropping the
103
103
  # dimension is no better: averaging over the rest can still improve
104
104
  # the estimate when the withheld dimension was worse than its
105
105
  # peers. `SEVERE` is the only value that cannot improve any
@@ -437,7 +437,7 @@ def prompt_focus_sections(report: dict[str, Any]) -> list[str]:
437
437
  # Risk findings honour the same escalation as the hotspots and large
438
438
  # files above: a design-review candidate is announced as withheld in
439
439
  # the escalation note, so listing it here too presented it twice and
440
- # contradicted that note (P5, Grok e88b429 audit). The rule was
440
+ # contradicted that note (P5, audit of `e88b429`). The rule was
441
441
  # enforced on every focus category except this one.
442
442
  risk_ids = risk_identities(report)
443
443
  risks = [
@@ -141,7 +141,7 @@ def _is_bare_signature(masked: list[str], start: int, end: int) -> bool:
141
141
  """A declaration that terminates without opening a body or an arrow
142
142
  value: `declare function f(): void;`, a TS overload signature, an
143
143
  abstract method. No body to measure, so counting one mints a member
144
- with no code behind it (Grok 63ab820 audit). A real function/method
144
+ with no code behind it (audit of `63ab820`). A real function/method
145
145
  opens a block `{`; an expression member carries `=>`; neither, closed
146
146
  on `;`, is signature only. `f() {}` and `g = () => x;` still count.
147
147
  """
@@ -75,8 +75,8 @@ _PROPERTY_RE = re.compile(
75
75
  # field of type T; a value would need `name = ...`, so `name: (...) => X`
76
76
  # can only be a function-type annotation, with X a return type and no
77
77
  # body. D93 skipped these inside `interface`/`type` blocks but not inside
78
- # a class, so class fields still minted a declaration population (Grok
79
- # e88b429 audit). The `;` terminator and the absence of a block `{` after
78
+ # a class, so class fields still minted a declaration population (audit
79
+ # of `e88b429`). The `;` terminator and the absence of a block `{` after
80
80
  # the arrow are what tell an annotation from a real arrow-valued property
81
81
  # (`onSave: (a) => { ... }`), which keeps its body and stays counted.
82
82
  _FUNCTION_TYPE_ANNOTATION_RE = re.compile(
@@ -142,7 +142,7 @@ def _is_method(tail: str, match: re.Match[str]) -> bool:
142
142
 
143
143
  When the paren closes on the line, a real method opens a body brace
144
144
  after it -- run-on (`f(x) {`) or single-line (`f(x) { return x }`). A
145
- trailing-`{` test missed the single-line one (Grok 63ab820 audit); a
145
+ trailing-`{` test missed the single-line one (audit of `63ab820`); a
146
146
  call (`foo(x);`) or a signature (`foo(): T;`) has no brace and stays out.
147
147
  """
148
148
  trimmed = tail.rstrip()
@@ -218,9 +218,9 @@ def analyzer_env() -> dict[str, str]:
218
218
  # `registry=https://evil/` silently redirects that fetch. Forcing
219
219
  # the registry through the environment -- which npm ranks above a
220
220
  # project `.npmrc` -- pins it to the value the user configured for
221
- # themselves, read below where the tree cannot vote. Marshall's
222
- # call, 2026-08-29: let the user pull tools, do not let the tree
223
- # pick the source.
221
+ # themselves, read below where the tree cannot vote. Decided
222
+ # 2026-08-29: let the user pull tools, do not let the tree pick the
223
+ # source.
224
224
  env["npm_config_registry"] = registry
225
225
  return env
226
226
 
@@ -301,7 +301,7 @@ def _probe(slug: str, argv: tuple[str, ...]) -> ToolResult:
301
301
  #: a pin that changes with a tool's colour choices, not its version. The
302
302
  #: determinism suite stripped these before comparing, which hid that the
303
303
  #: stored value carried them; stripping at capture makes the recorded pin
304
- #: the version and nothing else (Grok e88b429 audit).
304
+ #: the version and nothing else (audit of `e88b429`).
305
305
  _ANSI_ESCAPE = re.compile(r"\x1b\[[0-?]*[ -/]*[@-~]")
306
306
 
307
307
 
@@ -102,7 +102,7 @@ def write_artifact(
102
102
  tree. So when the named path falls within the grant the write goes
103
103
  through ``write_bounded`` and inherits the lexical route refusal --
104
104
  ``.maintainability -> src`` on both ``/var`` and ``/private/var``
105
- spellings of the same macOS path (Grok 63ab820 audit; the earlier
105
+ spellings of the same macOS path (audit of `63ab820`; the earlier
106
106
  ``write_bounded(target.parent, target)`` bound the check to the
107
107
  symlink itself and checked nothing). A path outside the grant is on
108
108
  ground the audited tree does not control; only the final component
@@ -117,7 +117,7 @@ def write_artifact(
117
117
  grant_real = os.path.realpath(grant_root)
118
118
  # Membership is decided on the *real* path so a ``/var`` spelling of
119
119
  # the target and a ``/private/var`` spelling of the grant name the
120
- # same tree (Grok 63ab820 audit). In-tree, the write is bound to the
120
+ # same tree (audit of `63ab820`). In-tree, the write is bound to the
121
121
  # grant and inherits its lexical route refusal (the ``.maintainability
122
122
  # -> src`` link the real path erased); out-of-tree, it is bound to the
123
123
  # operator's own directory -- ground the audited tree cannot plant a
@@ -213,7 +213,7 @@ def _stage_and_replace(target: Path, body: str) -> Path:
213
213
  The staging name is unique per call. A fixed `.{name}.incoming` was
214
214
  guessable, and the audited tree could plant that exact file: `O_EXCL`
215
215
  then raised `FileExistsError` and took the write primitive down with a
216
- crash the tree chose the timing of (Grok e88b429 audit). `mkstemp`
216
+ crash the tree chose the timing of (audit of `e88b429`). `mkstemp`
217
217
  creates an exclusive file under a random name in the same directory,
218
218
  so nothing the tree pre-places can collide with it, and it still lands
219
219
  on the same filesystem for an atomic `os.replace`.
@@ -5,8 +5,8 @@
5
5
  tool wrote `security-pillar.json` and this one read it if it happened to be
6
6
  there. Nothing ran it, so every audit that did not follow a manual or CI run
7
7
  of the other tool reported the pillar as unmeasured — including every audit
8
- through the chat door, which cannot run it at all. Decided 2026-09-13 with
9
- Marshall: the pillar is complete, so the audit runs it.
8
+ through the chat door, which cannot run it at all. Decided 2026-09-13: the
9
+ pillar is complete, so the audit runs it.
10
10
 
11
11
  **What the child writes.** Every report `secure-code-agent` can produce is
12
12
  redirected into a temporary directory this process owns: the Markdown and
@@ -55,9 +55,15 @@ from ._runner import Invocation, Outcome, run
55
55
  #: whichever release is installed, when it falls in this range, and says so
56
56
  #: when it does not. The ceiling is the next major: within 0.x the pillar
57
57
  #: document is versioned by its own `schema_version`, which the reader checks.
58
- SUPPORTED_FLOOR = (0, 12, 1)
58
+ #:
59
+ #: **The floor is 0.12.2, not the first release with this contract (D182).**
60
+ #: 0.12.1 writes the same schema v2 document, and matches `.scignore.yaml`
61
+ #: `paths:` globs against absolute finding paths. This audit always hands it an
62
+ #: absolute root, so under 0.12.1 every reviewed `paths:` suppression is ignored
63
+ #: and its finding counts as live in the pillar every skin shows (D179).
64
+ SUPPORTED_FLOOR = (0, 12, 2)
59
65
  SUPPORTED_CEILING = (1,)
60
- REQUIREMENT = "secure-code-agent>=0.12.1,<1"
66
+ REQUIREMENT = "secure-code-agent>=0.12.2,<1"
61
67
 
62
68
  #: How long the child may run before the pillar is reported as unmeasured.
63
69
  DEFAULT_TIMEOUT_SECONDS = 300
@@ -86,7 +86,7 @@ def local_tsc_analysis(root: Path) -> dict[str, Any] | None:
86
86
  *unknown*, not clean: a config error (FAILED, exit 3+) or a findings
87
87
  exit with an empty body (NOT_WORKING) both leave `stdout` empty, and
88
88
  reading that as a violation-free type check is the absence-as-a-pass
89
- the class ADR 001 forbids (Grok 63ab820 audit). Only a usable run
89
+ the class ADR 001 forbids (audit of `63ab820`). Only a usable run
90
90
  counts; a RAN with no output is the real "compiled, no type errors".
91
91
  CLI output carries no boundary facts, so `typed_boundaries` is empty.
92
92
  """
@@ -91,7 +91,7 @@ DEFAULT_V1_REQUIRED: frozenset[str] = frozenset({
91
91
  # The 3.2 band pressures. Score-bearing: the band matrix prices a
92
92
  # complexity-12 warn above a plain warn, so it can only add pressure
93
93
  # over the count rate. Withholding one therefore only improves the
94
- # score -- the P3 hole Grok's e88b429 audit named -- so an absent band
94
+ # score -- the P3 hole the `e88b429` audit named -- so an absent band
95
95
  # withholds the grade rather than quietly falling back to the coarser
96
96
  # count rate. `_pressures._banded` no longer prices an Unknown band at
97
97
  # the count rate for the same reason.
@@ -107,7 +107,7 @@ DEFAULT_V1_REQUIRED: frozenset[str] = frozenset({
107
107
  #
108
108
  # The four 3.2 band pressures used to live here, on the reasoning that a
109
109
  # missing band predated the wiring and the count-rate fallback was a
110
- # coarser-but-verifiable number. Grok's e88b429 audit showed that was a
110
+ # coarser-but-verifiable number. The `e88b429` audit showed that was a
111
111
  # P3 hole: the band can only add pressure over the count rate, so
112
112
  # withholding it only ever improved the score, and this list kept the
113
113
  # concealment sweep from ever noticing. They are now required (above).
@@ -251,7 +251,7 @@ def _items_from_idioms(report: dict[str, Any]) -> list[dict[str, Any]]:
251
251
 
252
252
 
253
253
  def _locate(finding: dict[str, Any]) -> tuple[str | None, int | None]:
254
- """Path/line; a duplicate block carries only `locations`, which the old path/line read dropped (Grok e88b429)."""
254
+ """Path/line; a duplicate block carries only `locations`, which the old path/line read dropped (audit of `e88b429`)."""
255
255
  path = finding.get("path") or finding.get("first_path")
256
256
  line = finding.get("line") or finding.get("first_line") or finding.get("start_line")
257
257
  if path is None and (locs := finding.get("locations")):
@@ -133,7 +133,7 @@ def write_baseline(path: str, report: dict[str, Any]) -> None:
133
133
  # baseline's own parent directory: `write_bounded(target.parent, ...)`
134
134
  # bound the symlink check to the symlink itself and so checked
135
135
  # nothing, which is how `.maintainability -> src` still redirected the
136
- # baseline into source (Grok 63ab820 audit). `write_artifact` keeps
136
+ # baseline into source (audit of `63ab820`). `write_artifact` keeps
137
137
  # the predating contract that a baseline may live outside the tree —
138
138
  # a path outside the grant is written on the operator's own ground —
139
139
  # while a path inside the grant inherits the lexical route refusal,
@@ -112,7 +112,7 @@ def write_outputs(args: argparse.Namespace, report: dict, rendered: str) -> None
112
112
  # Every rendered output the operator asks for is a product-artifact
113
113
  # write: a raw `Path(name).write_text` followed the tree's symlink
114
114
  # into source, so each goes through `write_artifact`, bound to the
115
- # repository the report was taken in (Grok 63ab820 audit).
115
+ # repository the report was taken in (audit of `63ab820`).
116
116
  root = Path(report["root"])
117
117
  if args.output:
118
118
  _emit(root, args.output, rendered + "\n")
@@ -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.4"
23
+ VERSION = "3.7.6"
24
24
 
25
25
  PROJECT_URL = "https://github.com/marshallguillory86/maintainability-agent"
26
26
 
@@ -58,7 +58,7 @@ def duplicate_blocks(
58
58
  # The index into this filtered list is not a source line: reporting
59
59
  # `idx + 1` pointed a reader at the Nth non-comment line, not line N
60
60
  # of the file, so every duplicate location was off by however many
61
- # comments and blanks preceded it (Grok e88b429 audit).
61
+ # comments and blanks preceded it (audit of `e88b429`).
62
62
  useful = [
63
63
  (number, line)
64
64
  for number, line in enumerate(lines, start=1)
@@ -142,7 +142,7 @@ def write_instruction_pack(
142
142
  # Each instruction file is a product-artifact write: `output_dir`
143
143
  # comes from a person (`--instructions-output-dir`), so the write is
144
144
  # bound to that directory and refuses a symlinked route the audited
145
- # tree could plant beneath it (Grok 63ab820 audit).
145
+ # tree could plant beneath it (audit of `63ab820`).
146
146
  from ._safe_write import write_artifact
147
147
 
148
148
  written: list[str] = []
@@ -1,4 +1,4 @@
1
- """Class A (Grok 63ab820): every product-artifact write refuses a route the
1
+ """Class A (audit of `63ab820`): every product-artifact write refuses a route the
2
2
  audited tree could redirect, on both ``/var`` and ``/private/var`` spellings,
3
3
  and refuses to truncate a file that is not one of ours.
4
4