maintainability-agent 4.3.0__tar.gz → 4.3.1__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 (473) hide show
  1. {maintainability_agent-4.3.0/src/maintainability_agent.egg-info → maintainability_agent-4.3.1}/PKG-INFO +3 -3
  2. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/README.md +2 -2
  3. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1/src/maintainability_agent.egg-info}/PKG-INFO +3 -3
  4. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_agent.egg-info/SOURCES.txt +2 -0
  5. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/__init__.py +1 -1
  6. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_mcp_audit.py +1 -1
  7. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_mcp_gate.py +1 -1
  8. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_metrics_types.py +1 -1
  9. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_test_execution.py +2 -2
  10. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/duplication.py +1 -1
  11. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_authorship_gates.py +39 -2
  12. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_behaviour_suites_are_tests.py +2 -2
  13. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_clone_group_class.py +1 -1
  14. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_consent_is_per_repository.py +1 -1
  15. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_coverage_formats.py +1 -1
  16. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_direct_runner_availability_class.py +2 -2
  17. maintainability_agent-4.3.1/tests/test_every_job_tests_the_pinned_oracle.py +39 -0
  18. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_html_executive.py +1 -1
  19. maintainability_agent-4.3.1/tests/test_no_private_names.py +145 -0
  20. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_setup_precondition.py +2 -2
  21. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_report_is_saved_not_sent.py +1 -1
  22. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_work_order.py +1 -1
  23. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/LICENSE +0 -0
  24. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/pyproject.toml +0 -0
  25. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/setup.cfg +0 -0
  26. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_agent.egg-info/dependency_links.txt +0 -0
  27. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_agent.egg-info/entry_points.txt +0 -0
  28. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_agent.egg-info/requires.txt +0 -0
  29. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_agent.egg-info/top_level.txt +0 -0
  30. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/__main__.py +0 -0
  31. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_adapters.py +0 -0
  32. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_analysis.py +0 -0
  33. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_analyzer_sections.py +0 -0
  34. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_anchor.py +0 -0
  35. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_arguments.py +0 -0
  36. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_aspects.py +0 -0
  37. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_assets/analyzer-catalog.json +0 -0
  38. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_assets/standard.md +0 -0
  39. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_attestation.py +0 -0
  40. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_backfill.py +0 -0
  41. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_bands.py +0 -0
  42. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_banner.py +0 -0
  43. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_built_ins.py +0 -0
  44. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_calibration.py +0 -0
  45. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_catalog.py +0 -0
  46. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_changed_code_policy.py +0 -0
  47. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_charts.py +0 -0
  48. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_cognitive.py +0 -0
  49. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_config_defaults.py +0 -0
  50. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_conformance.py +0 -0
  51. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_corroborate.py +0 -0
  52. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_coverage_notes.py +0 -0
  53. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_criteria_scope.py +0 -0
  54. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_delegated_pillar.py +0 -0
  55. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_derive.py +0 -0
  56. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_discovery.py +0 -0
  57. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_documents.py +0 -0
  58. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_economics.py +0 -0
  59. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_economics_view.py +0 -0
  60. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_environment.py +0 -0
  61. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_evidence_reader.py +0 -0
  62. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_evidence_view.py +0 -0
  63. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_finding_match.py +0 -0
  64. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_first_run.py +0 -0
  65. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_formula.py +0 -0
  66. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_gates.py +0 -0
  67. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_generic.py +0 -0
  68. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_grammar.py +0 -0
  69. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_grant_ledger.py +0 -0
  70. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_handoff.py +0 -0
  71. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_history_view.py +0 -0
  72. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_hostile_prompt.py +0 -0
  73. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_hotspots.py +0 -0
  74. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_html_report_sections.py +0 -0
  75. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_html_view.py +0 -0
  76. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_identity.py +0 -0
  77. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_in_loop.py +0 -0
  78. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_in_loop_view.py +0 -0
  79. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_jvm_adapters.py +0 -0
  80. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_markdown_sections.py +0 -0
  81. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_masking.py +0 -0
  82. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_mcp_grants.py +0 -0
  83. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_mcp_refusals.py +0 -0
  84. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_mcp_resources.py +0 -0
  85. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_mcp_setup.py +0 -0
  86. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_metric_adapters.py +0 -0
  87. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_operator_reads.py +0 -0
  88. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_oracle.py +0 -0
  89. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_pillars.py +0 -0
  90. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_practice.py +0 -0
  91. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_precommit.py +0 -0
  92. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_precommit_install.py +0 -0
  93. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_precommit_view.py +0 -0
  94. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_pressures.py +0 -0
  95. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_prompt_sections.py +0 -0
  96. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_c.py +0 -0
  97. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_cobol.py +0 -0
  98. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_core.py +0 -0
  99. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_cpp.py +0 -0
  100. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_csharp.py +0 -0
  101. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_fortran.py +0 -0
  102. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_go.py +0 -0
  103. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_java.py +0 -0
  104. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_js.py +0 -0
  105. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_kotlin.py +0 -0
  106. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_php.py +0 -0
  107. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_ruby.py +0 -0
  108. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_rust.py +0 -0
  109. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_shell.py +0 -0
  110. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_swift.py +0 -0
  111. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ratchet.py +0 -0
  112. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ratio_adapters.py +0 -0
  113. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_recurrence.py +0 -0
  114. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_run_comparison.py +0 -0
  115. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_runner.py +0 -0
  116. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_running_version.py +0 -0
  117. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_safe_write.py +0 -0
  118. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_scan_history.py +0 -0
  119. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_scan_view.py +0 -0
  120. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_second_source.py +0 -0
  121. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_security_delegate.py +0 -0
  122. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_security_work_order.py +0 -0
  123. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_selection.py +0 -0
  124. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_semantic.py +0 -0
  125. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_semantic_policy.py +0 -0
  126. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_semantic_ts.py +0 -0
  127. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_semantic_view.py +0 -0
  128. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_setup_errors.py +0 -0
  129. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_setup_persist.py +0 -0
  130. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_skill_data/SKILL.md +0 -0
  131. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_skill_data/agents/anthropic.yaml +0 -0
  132. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_skill_data/agents/copilot.yaml +0 -0
  133. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_skill_data/agents/openai.yaml +0 -0
  134. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_skill_data/copilot/maintainability-agent.prompt.md +0 -0
  135. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_skill_data/references/finding-taxonomy.md +0 -0
  136. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_skill_install.py +0 -0
  137. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_stored_grants.py +0 -0
  138. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_tdd_view.py +0 -0
  139. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_test_commands.py +0 -0
  140. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_test_pairing.py +0 -0
  141. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_tokens.py +0 -0
  142. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_tool_adapters.py +0 -0
  143. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_trends.py +0 -0
  144. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_user_config.py +0 -0
  145. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_verdict_adapters.py +0 -0
  146. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_verification.py +0 -0
  147. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_work_order.py +0 -0
  148. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_work_order_view.py +0 -0
  149. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_work_order_weights.py +0 -0
  150. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_xml.py +0 -0
  151. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/baseline.py +0 -0
  152. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/cli.py +0 -0
  153. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/config.py +0 -0
  154. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/deadcode.py +0 -0
  155. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/declarations.py +0 -0
  156. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/evidence.py +0 -0
  157. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/git_tools.py +0 -0
  158. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/history.py +0 -0
  159. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/idioms.py +0 -0
  160. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/instructions.py +0 -0
  161. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/mcp_server.py +0 -0
  162. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/metrics.py +0 -0
  163. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/prompts.py +0 -0
  164. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/renderers.py +0 -0
  165. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/report.py +0 -0
  166. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/sarif.py +0 -0
  167. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/scoring.py +0 -0
  168. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/similarity.py +0 -0
  169. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/source.py +0 -0
  170. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_a_clone_names_every_copy.py +0 -0
  171. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_a_dangling_source_link_is_named_not_fatal.py +0 -0
  172. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_a_format_override_is_disclosed.py +0 -0
  173. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_a_matching_format_stays_silent.py +0 -0
  174. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_a_published_question_offers_what_it_accepts.py +0 -0
  175. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_a_rendered_docs_site_is_not_scored_as_source.py +0 -0
  176. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_a_setup_question_keeps_its_contract.py +0 -0
  177. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_acquisition_trust.py +0 -0
  178. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_adapter_docs.py +0 -0
  179. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_adapter_recordings.py +0 -0
  180. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_adapters.py +0 -0
  181. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_added_lines.py +0 -0
  182. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_an_absent_work_order_renders_nothing.py +0 -0
  183. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_an_unmeasured_pillar_reports_no_number.py +0 -0
  184. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analysis_coverage.py +0 -0
  185. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analysis_execution.py +0 -0
  186. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_bridge.py +0 -0
  187. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_config_isolation.py +0 -0
  188. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_estimate_claims.py +0 -0
  189. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_file_lists_are_batched.py +0 -0
  190. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_pinning.py +0 -0
  191. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_primary_estimate.py +0 -0
  192. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_provenance.py +0 -0
  193. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_provenance_exclusions.py +0 -0
  194. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_scoring_path.py +0 -0
  195. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_spread_range.py +0 -0
  196. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_xml_bounds.py +0 -0
  197. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzers_against_the_real_tools.py +0 -0
  198. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzers_report_what_actually_failed.py +0 -0
  199. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_anchor_and_mode.py +0 -0
  200. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_anchor_caveat_and_counts_follow_the_run.py +0 -0
  201. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_anchor_disclosure.py +0 -0
  202. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_annotations_match_behaviour.py +0 -0
  203. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_anticipated_refusals.py +0 -0
  204. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_architecture.py +0 -0
  205. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_artifact_write_route_class.py +0 -0
  206. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_aspect_coverage.py +0 -0
  207. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_asset_snapshot_class.py +0 -0
  208. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_ast_reading_resolves_spellings.py +0 -0
  209. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_attestation.py +0 -0
  210. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_audit_components.py +0 -0
  211. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_authorization_freshness.py +0 -0
  212. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_backfill.py +0 -0
  213. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_band_concealment_class.py +0 -0
  214. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_band_concealment_p3.py +0 -0
  215. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_band_pressures.py +0 -0
  216. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_bands.py +0 -0
  217. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_body_or_signature_class.py +0 -0
  218. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_both_setup_paths_ask_the_same_stage.py +0 -0
  219. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_build_output_is_not_the_repositorys_code.py +0 -0
  220. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_c_declarations.py +0 -0
  221. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_calibration_corpus.py +0 -0
  222. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_calibration_drift.py +0 -0
  223. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_calibration_tooling.py +0 -0
  224. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_catalog_selection.py +0 -0
  225. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_catalog_tier_promise.py +0 -0
  226. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_changed_code_policy.py +0 -0
  227. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_chat_leads_with_the_work_order.py +0 -0
  228. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_chat_primary_docs.py +0 -0
  229. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_check_refuses_plus_only_fragments.py +0 -0
  230. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_checkstyle_adapter.py +0 -0
  231. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_checkstyle_catalog.py +0 -0
  232. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_child_sandbox.py +0 -0
  233. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_ci_history_recipe.py +0 -0
  234. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_ci_installs_the_analyzer_pool.py +0 -0
  235. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_claimed_languages.py +0 -0
  236. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_clean_sees_the_weakened_oracle.py +0 -0
  237. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_cli.py +0 -0
  238. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_cobol_declarations.py +0 -0
  239. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_code_scanning_gets_alerts_not_the_record.py +0 -0
  240. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_cognitive_complexity.py +0 -0
  241. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_cohesion_with_nothing_to_read_is_not_applicable.py +0 -0
  242. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_cohort_statistics.py +0 -0
  243. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_concealment_properties.py +0 -0
  244. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_config_shape.py +0 -0
  245. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_conformance_reads_the_operators_ask.py +0 -0
  246. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_consent_and_grant.py +0 -0
  247. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_consent_survives_setup_and_is_asked.py +0 -0
  248. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_consent_without_command_has_a_remedy.py +0 -0
  249. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_consumer_migration.py +0 -0
  250. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_contract_claims.py +0 -0
  251. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_corpus_note_counts_come_from_the_corpus.py +0 -0
  252. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_corroborate.py +0 -0
  253. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_coverage_by_language.py +0 -0
  254. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_coverage_config_reaches_children.py +0 -0
  255. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_cpp_declarations.py +0 -0
  256. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_criteria_completion.py +0 -0
  257. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_csharp_declarations.py +0 -0
  258. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_current_state_docs_name_every_parsed_language.py +0 -0
  259. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_d15_composition.py +0 -0
  260. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_d15_goal_directed.py +0 -0
  261. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_dead_code.py +0 -0
  262. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_declaration_criteria_scope.py +0 -0
  263. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_declaration_edge_cases.py +0 -0
  264. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_declaration_grading.py +0 -0
  265. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_declaration_ranges.py +0 -0
  266. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_declaration_source.py +0 -0
  267. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_declarative_parsers.py +0 -0
  268. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_declared_capabilities_match_the_delegate.py +0 -0
  269. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_declared_imports.py +0 -0
  270. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_delegated_security_pillar.py +0 -0
  271. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_demo_tree.py +0 -0
  272. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_derivation_mix.py +0 -0
  273. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_determinism.py +0 -0
  274. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_dimension_ratchet.py +0 -0
  275. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_discovery.py +0 -0
  276. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_doc_claims.py +0 -0
  277. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_docs_links.py +0 -0
  278. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_economic_context.py +0 -0
  279. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_empty_output_not_clean.py +0 -0
  280. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_empty_output_not_clean_adapters.py +0 -0
  281. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_environment_work_order.py +0 -0
  282. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_every_built_presentation_is_offered.py +0 -0
  283. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_every_language_counts_its_own_loop.py +0 -0
  284. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_every_language_has_a_loop_fixture.py +0 -0
  285. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_every_pool_install_is_the_same_pool.py +0 -0
  286. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_every_question_can_be_answered.py +0 -0
  287. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_every_surface_says_what_the_run_found.py +0 -0
  288. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_evidence_invariants.py +0 -0
  289. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_evidence_normalization.py +0 -0
  290. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_evidence_properties.py +0 -0
  291. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_example_config_opens_claimed_languages.py +0 -0
  292. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_exclude_additional_keeps_the_defaults.py +0 -0
  293. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_exclusion_dialects.py +0 -0
  294. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_exposure_never_outranks_band.py +0 -0
  295. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_falsifier_standard.py +0 -0
  296. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_file_list_cap_class.py +0 -0
  297. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_finding_identity.py +0 -0
  298. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_first_run_elicitation.py +0 -0
  299. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_first_run_prompt.py +0 -0
  300. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_first_run_reelicitation.py +0 -0
  301. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_first_stage_setup_wording_holds.py +0 -0
  302. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_fix_breadth_window.py +0 -0
  303. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_fixed_form_fortran.py +0 -0
  304. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_format_ask.py +0 -0
  305. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_fortran_declarations.py +0 -0
  306. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_fortran_metrics.py +0 -0
  307. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_fortran_practice.py +0 -0
  308. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_git_argv.py +0 -0
  309. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_git_read_only.py +0 -0
  310. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_git_readonly_class.py +0 -0
  311. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_go_declarations.py +0 -0
  312. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_grammar_constructs.py +0 -0
  313. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_grammar_token_coverage.py +0 -0
  314. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_grant_only_user_tier.py +0 -0
  315. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_grok_audit_of_3_11.py +0 -0
  316. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_history.py +0 -0
  317. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_history_boundary.py +0 -0
  318. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_history_manifest.py +0 -0
  319. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_history_schema2.py +0 -0
  320. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_history_window.py +0 -0
  321. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_hostile_prompt.py +0 -0
  322. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_html_section_parity_class.py +0 -0
  323. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_identity_docs.py +0 -0
  324. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_identity_resolution.py +0 -0
  325. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_idiom_divergence.py +0 -0
  326. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_in_loop_budgets.py +0 -0
  327. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_in_loop_check.py +0 -0
  328. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_installed_wheel_runtime.py +0 -0
  329. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_instruction_targets.py +0 -0
  330. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_java_range_guard.py +0 -0
  331. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_java_ranges.py +0 -0
  332. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_java_scored.py +0 -0
  333. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_java_wiring.py +0 -0
  334. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_js_complexity_operators.py +0 -0
  335. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_js_declarations.py +0 -0
  336. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_kotlin_declarations.py +0 -0
  337. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_kotlin_metrics.py +0 -0
  338. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_language_coverage.py +0 -0
  339. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_language_support_honesty.py +0 -0
  340. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_list_tools_publishes_the_answer_path.py +0 -0
  341. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_maintenance_signals.py +0 -0
  342. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_mcp_baseline_payload.py +0 -0
  343. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_mcp_format_contract.py +0 -0
  344. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_mcp_history.py +0 -0
  345. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_mcp_server.py +0 -0
  346. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_mcp_start_failure_names_what_is_installed.py +0 -0
  347. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_migration_1_0.py +0 -0
  348. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_missing_security_scanners_are_named_before_the_run.py +0 -0
  349. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_mutation_recorded.py +0 -0
  350. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_near_duplicates.py +0 -0
  351. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_network_disclosure.py +0 -0
  352. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_one_setup_across_surfaces_class.py +0 -0
  353. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_operator_named_paths.py +0 -0
  354. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_operator_named_reads.py +0 -0
  355. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_oracle_weakening_precision_bar.py +0 -0
  356. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_pairing_reads_imports.py +0 -0
  357. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_pattern_budget.py +0 -0
  358. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_phase6_claims.py +0 -0
  359. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_php_declarations.py +0 -0
  360. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_pillars_and_practice.py +0 -0
  361. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_platform_claim.py +0 -0
  362. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_pmd_adapter.py +0 -0
  363. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_pmd_audit_closures.py +0 -0
  364. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_policy_claims.py +0 -0
  365. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_pool_runs_by_config.py +0 -0
  366. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_population_floors.py +0 -0
  367. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_practice_nested_gates_class.py +0 -0
  368. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_precommit_staged.py +0 -0
  369. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_preflight_before_consent_runs_nothing_from_the_tree.py +0 -0
  370. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_presentation_refusals.py +0 -0
  371. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_previous_release_reached_pypi.py +0 -0
  372. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_promises.py +0 -0
  373. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_prompt_does_not_issue_rates_when_unscored.py +0 -0
  374. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_prompt_escalation_once.py +0 -0
  375. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_prompt_honesty.py +0 -0
  376. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_prompt_location_escalation_class.py +0 -0
  377. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_prove_falsifiers.py +0 -0
  378. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_python_complexity.py +0 -0
  379. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_python_declarations.py +0 -0
  380. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_read_boundary.py +0 -0
  381. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_readme_claims.py +0 -0
  382. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_recurrence.py +0 -0
  383. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_regular_file_reads_work_without_o_nonblock.py +0 -0
  384. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_release_needs_an_empty_ledger.py +0 -0
  385. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_release_plan.py +0 -0
  386. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_release_plan_status.py +0 -0
  387. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_rendered_docs.py +0 -0
  388. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_report_remedy_copy.py +0 -0
  389. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_root_grants.py +0 -0
  390. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_rubric_ignores_project_lint_config.py +0 -0
  391. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_ruby_declarations.py +0 -0
  392. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_run_comparison.py +0 -0
  393. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_runner.py +0 -0
  394. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_rust_declarations.py +0 -0
  395. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_sarif.py +0 -0
  396. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_scan_history.py +0 -0
  397. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_scan_scope.py +0 -0
  398. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_scanner_fingerprint_covers_the_measurement_path.py +0 -0
  399. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_scanner_unsafe_direction.py +0 -0
  400. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_scanning.py +0 -0
  401. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_schema_fidelity.py +0 -0
  402. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_scope_conformance.py +0 -0
  403. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_scoring_calibration.py +0 -0
  404. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_security_delegate_versions_agree.py +0 -0
  405. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_security_findings_keep_their_handoff.py +0 -0
  406. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_security_pillar_asserts_a_scanner_set.py +0 -0
  407. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_security_pillar_runs_and_shows.py +0 -0
  408. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_selection_covers_every_parsed_language.py +0 -0
  409. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_semantic_findings_stay_inside_the_audited_files.py +0 -0
  410. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_semantic_policy.py +0 -0
  411. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_setup_answers_are_the_same_setup.py +0 -0
  412. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_setup_gate_completeness.py +0 -0
  413. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_setup_gate_independent_contract.py +0 -0
  414. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_setup_instruction_describes_its_own_reply.py +0 -0
  415. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_setup_writes_a_valid_config.py +0 -0
  416. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_shell_declarations.py +0 -0
  417. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_shell_metrics.py +0 -0
  418. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_skill_install.py +0 -0
  419. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_sonar_resolve.py +0 -0
  420. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_source_index.py +0 -0
  421. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_spotbugs_adapter.py +0 -0
  422. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_spotbugs_catalog.py +0 -0
  423. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_stage8_contract.py +0 -0
  424. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_stamped_documents_stay_honest.py +0 -0
  425. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_stdout_outputs.py +0 -0
  426. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_suite_isolation.py +0 -0
  427. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_swift_declarations.py +0 -0
  428. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_tdd_structure.py +0 -0
  429. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_terminal_asks_the_same_questions.py +0 -0
  430. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_test_commands.py +0 -0
  431. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_test_execution_class.py +0 -0
  432. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_agent_knows_when_it_is_stale.py +0 -0
  433. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_changelog_covers_the_shipping_version.py +0 -0
  434. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_chat_payload_has_a_budget.py +0 -0
  435. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_condition_says_what_it_measured.py +0 -0
  436. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_handoff_rules_are_their_own_module.py +0 -0
  437. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_pillar_row_reads_cleanly.py +0 -0
  438. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_presentation_question_stays_answerable.py +0 -0
  439. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_previous_release_was_tagged.py +0 -0
  440. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_prompt_does_not_take_back_what_it_withheld.py +0 -0
  441. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_prompt_keeps_listing_what_it_did_not_withhold.py +0 -0
  442. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_release_process_describes_itself.py +0 -0
  443. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_release_record_stays_well_formed.py +0 -0
  444. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_security_run_has_a_configurable_limit.py +0 -0
  445. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_security_work_order_is_drawn.py +0 -0
  446. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_suite_names_the_program_it_ran.py +0 -0
  447. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_tree_cannot_redirect_a_read.py +0 -0
  448. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_version_has_one_source.py +0 -0
  449. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_three_presentations.py +0 -0
  450. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_tool_resolution.py +0 -0
  451. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_tree_cannot_opt_the_host_in.py +0 -0
  452. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_tree_chosen_spawn.py +0 -0
  453. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_tree_reads_use_the_primitive.py +0 -0
  454. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_trends.py +0 -0
  455. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_type_fields_not_functions_class.py +0 -0
  456. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_uat_falsifiers.py +0 -0
  457. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_unanchored_set_matches_corpus.py +0 -0
  458. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_unread_code.py +0 -0
  459. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_user_config_tier.py +0 -0
  460. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_verification_audit_closures.py +0 -0
  461. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_verified_grade.py +0 -0
  462. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_version_claim.py +0 -0
  463. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_version_stamping.py +0 -0
  464. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_wheel_contents.py +0 -0
  465. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_withheld_work_keeps_its_boundary.py +0 -0
  466. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_work_items_state_their_own_finding.py +0 -0
  467. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_work_order_binds_to_this_interpreter.py +0 -0
  468. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_work_order_items.py +0 -0
  469. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_work_order_selection.py +0 -0
  470. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_workflow_supply_chain.py +0 -0
  471. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_write_boundary.py +0 -0
  472. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_write_route_class.py +0 -0
  473. {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_written_record.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: maintainability-agent
3
- Version: 4.3.0
3
+ Version: 4.3.1
4
4
  Summary: Maintainability gate and AI remediation prompt generator for CI.
5
5
  Author: Marshall Guillory
6
6
  License: MIT
@@ -47,7 +47,7 @@ Dynamic: license-file
47
47
  **A deterministic, offline maintainability audit whose output is a _bounded
48
48
  work order_ for an AI coding agent** — a copy-paste prompt, per finding, that
49
49
  says *fix exactly these and refactor nothing else*. Chat-primary; CLI for CI.
50
- Version **4.3.0**.
50
+ Version **4.3.1**.
51
51
 
52
52
  > ## **Calibrated against 201 mature open-source repositories in fifteen languages.**
53
53
  >
@@ -509,7 +509,7 @@ instead of an invokable skill:
509
509
  This repo ships `action.yml`, usable as a composite action:
510
510
 
511
511
  ```yaml
512
- - uses: marshallguillory86/maintainability-agent@v4.3.0
512
+ - uses: marshallguillory86/maintainability-agent@v4.3.1
513
513
  with:
514
514
  config: maintainability-agent.json
515
515
  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 **4.3.0**.
8
+ Version **4.3.1**.
9
9
 
10
10
  > ## **Calibrated against 201 mature open-source repositories in fifteen languages.**
11
11
  >
@@ -467,7 +467,7 @@ instead of an invokable skill:
467
467
  This repo ships `action.yml`, usable as a composite action:
468
468
 
469
469
  ```yaml
470
- - uses: marshallguillory86/maintainability-agent@v4.3.0
470
+ - uses: marshallguillory86/maintainability-agent@v4.3.1
471
471
  with:
472
472
  config: maintainability-agent.json
473
473
  changed-only: main...HEAD
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: maintainability-agent
3
- Version: 4.3.0
3
+ Version: 4.3.1
4
4
  Summary: Maintainability gate and AI remediation prompt generator for CI.
5
5
  Author: Marshall Guillory
6
6
  License: MIT
@@ -47,7 +47,7 @@ Dynamic: license-file
47
47
  **A deterministic, offline maintainability audit whose output is a _bounded
48
48
  work order_ for an AI coding agent** — a copy-paste prompt, per finding, that
49
49
  says *fix exactly these and refactor nothing else*. Chat-primary; CLI for CI.
50
- Version **4.3.0**.
50
+ Version **4.3.1**.
51
51
 
52
52
  > ## **Calibrated against 201 mature open-source repositories in fifteen languages.**
53
53
  >
@@ -509,7 +509,7 @@ instead of an invokable skill:
509
509
  This repo ships `action.yml`, usable as a composite action:
510
510
 
511
511
  ```yaml
512
- - uses: marshallguillory86/maintainability-agent@v4.3.0
512
+ - uses: marshallguillory86/maintainability-agent@v4.3.1
513
513
  with:
514
514
  config: maintainability-agent.json
515
515
  changed-only: main...HEAD
@@ -272,6 +272,7 @@ tests/test_empty_output_not_clean.py
272
272
  tests/test_empty_output_not_clean_adapters.py
273
273
  tests/test_environment_work_order.py
274
274
  tests/test_every_built_presentation_is_offered.py
275
+ tests/test_every_job_tests_the_pinned_oracle.py
275
276
  tests/test_every_language_counts_its_own_loop.py
276
277
  tests/test_every_language_has_a_loop_fixture.py
277
278
  tests/test_every_pool_install_is_the_same_pool.py
@@ -342,6 +343,7 @@ tests/test_missing_security_scanners_are_named_before_the_run.py
342
343
  tests/test_mutation_recorded.py
343
344
  tests/test_near_duplicates.py
344
345
  tests/test_network_disclosure.py
346
+ tests/test_no_private_names.py
345
347
  tests/test_one_setup_across_surfaces_class.py
346
348
  tests/test_operator_named_paths.py
347
349
  tests/test_operator_named_reads.py
@@ -1,3 +1,3 @@
1
1
  """Maintainability Audit CI."""
2
2
 
3
- __version__ = "4.3.0"
3
+ __version__ = "4.3.1"
@@ -600,7 +600,7 @@ def _finish_result(result: dict[str, Any], format: str, root: Path,
600
600
  else:
601
601
  # Chat always gets the bounded view, whatever was chosen. A chosen
602
602
  # file format is the complete report and is *saved*, never sent:
603
- # 3.9.0 sent html inline beside this, 309 KB on Scrollwork's first
603
+ # 3.9.0 sent html inline beside this, 309 KB on a private application's first
604
604
  # run, which the host refused and nobody received (D216).
605
605
  result["report_markdown"] = render_markdown(report, complete=False)
606
606
  if target is not None:
@@ -103,7 +103,7 @@ def _choose_next(root: Path) -> dict[str, Any]:
103
103
  # a forced re-ask (that would break the configured-repo contract every
104
104
  # test and CI run depends on) — a discovery line, so `reconfigure` (which
105
105
  # does ask it) is a choice the operator knows to make. This is why a
106
- # bighound configured pre-Class-5 was never offered the option.
106
+ # A repository configured pre-Class-5 was never offered the option.
107
107
  if run_tests_pending(root):
108
108
  prompt += (
109
109
  " New since this repository was configured: an opt-in to run its "
@@ -520,7 +520,7 @@ class Finding:
520
520
  #: test code. `_discovery` reads this list too, plus the one name it
521
521
  #: declares for itself (`DISCOVERY_ONLY_TEST_DIRECTORIES`).
522
522
  #:
523
- #: `acceptance` and `e2e` joined in 3.9.1, after Scrollwork's sixty
523
+ #: `acceptance` and `e2e` joined in 3.9.1, after a private application's sixty
524
524
  #: behaviour suites under `acceptance/` were graded as production: most
525
525
  #: of its duplication and oversized files, and 106 production files
526
526
  #: reported unpaired while those suites covered them at 98%. Only those
@@ -128,7 +128,7 @@ def opted_in_command(root: Path) -> list[str]:
128
128
  **Per repository.** The tier held one `expected_commands.test`, so
129
129
  consent given while setting up one repository ran that program in
130
130
  every repository audited afterwards — this project's own `pytest
131
- --cov=maintainability_audit` against Scrollwork's JavaScript. The
131
+ --cov=maintainability_audit` against a private application's JavaScript. The
132
132
  command is now recorded against the repository it was consented for,
133
133
  and read only there.
134
134
  """
@@ -280,7 +280,7 @@ def run_test_suite(root: Path, config: dict[str, Any]) -> dict[str, Any] | None:
280
280
 
281
281
  #: Coverage artifacts this reads, in order, each with its parser. Cobertura
282
282
  #: XML is what Python's coverage writes; `lcov.info` is what JavaScript's
283
- #: tools write (c8, nyc, jest, vitest) — Scrollwork measured with V8 and
283
+ #: tools write (c8, nyc, jest, vitest) — a private application measured with V8 and
284
284
  #: left `test_effectiveness` unscored because only the first was read.
285
285
  COVERAGE_ARTIFACTS: tuple[str, ...] = ("coverage.xml", "coverage/lcov.info", "lcov.info")
286
286
 
@@ -92,7 +92,7 @@ def _clone_groups(
92
92
  A duplicated 200-line block appears as ~200 near-identical windows,
93
93
  each a distinct fingerprint sharing the same files at consecutive
94
94
  lines. Reported one row per window it was 861 line-items of one clone
95
- (bighound field test, plan-81dc6870 Class 4); reported one row per
95
+ (field test on a private repository, plan-81dc6870 Class 4); reported one row per
96
96
  clone it is a single finding carrying the occurrence count and the
97
97
  span. Two windows join the same group when they share a file at lines
98
98
  within ``block_size`` — overlapping or adjacent — so genuinely
@@ -78,6 +78,7 @@ def _step_scripts() -> dict[str, str]:
78
78
  "Each commit carries the repository's commit identity",
79
79
  "Each commit is signed",
80
80
  "Commit messages name only the commit identity",
81
+ "No private repository's name anywhere in the tree",
81
82
  "No forbidden term in the change",
82
83
  }
83
84
  return scripts
@@ -88,6 +89,8 @@ SCRIPTS = _step_scripts()
88
89
  #: Stands in for the FORBIDDEN_TERMS secret. A made-up term, deliberately:
89
90
  #: the real terms live only in the secret and must never be written here.
90
91
  EXAMPLE_TERM = "example-forbidden-term"
92
+ #: The tree check's tool, resolved to this checkout (D227).
93
+ TOOL = WORKFLOW.parents[2] / "tools" / "check_private_names.py"
91
94
 
92
95
 
93
96
  def _run_gate(
@@ -98,11 +101,12 @@ def _run_gate(
98
101
  ``terms`` is what the secret would hold; an empty string is the secret
99
102
  being unset.
100
103
  """
101
- script = SCRIPTS[name].replace("${{ github.base_ref }}", "main")
104
+ script = (SCRIPTS[name].replace("${{ github.base_ref }}", "main")
105
+ .replace("tools/check_private_names.py", str(TOOL)))
102
106
  return subprocess.run(
103
107
  ["bash", "-c", script],
104
108
  cwd=repo,
105
- env={**os.environ, "FORBIDDEN_TERMS": terms},
109
+ env={**os.environ, "FORBIDDEN_TERMS": terms, "PRIVATE_NAMES": terms},
106
110
  text=True,
107
111
  capture_output=True,
108
112
  check=False,
@@ -424,3 +428,36 @@ def test_the_forbidden_term_check_fails_closed_without_the_secret(
424
428
 
425
429
  assert result.returncode == 1
426
430
  assert "this check proved nothing" in result.stdout
431
+
432
+
433
+ TREE_GATE = "No private repository's name anywhere in the tree"
434
+
435
+
436
+ def test_a_name_already_in_the_tree_fails_though_the_change_never_touched_it(
437
+ signed_repo: tuple[Path, Callable[..., str]],
438
+ ) -> None:
439
+ """The gap D227 closes: the step below it reads only the lines a change adds."""
440
+ repo, commit = signed_repo
441
+ (repo / "old.md").write_text(f"written long ago: {EXAMPLE_TERM}\n", encoding="utf-8")
442
+ _require_git(repo, "add", "old.md")
443
+ _require_git(repo, "commit", "-qm", "older")
444
+ _require_git(repo, "update-ref", "refs/remotes/origin/main", "HEAD")
445
+ commit()
446
+
447
+ result = _run_gate(repo, TREE_GATE)
448
+
449
+ assert result.returncode == 1, result.stdout + result.stderr
450
+ assert "old.md:1" in result.stdout
451
+ assert EXAMPLE_TERM not in (result.stdout + result.stderr).lower()
452
+
453
+
454
+ def test_the_tree_check_fails_closed_without_the_secrets(
455
+ signed_repo: tuple[Path, Callable[..., str]],
456
+ ) -> None:
457
+ repo, commit = signed_repo
458
+ commit()
459
+
460
+ result = _run_gate(repo, TREE_GATE, terms="")
461
+
462
+ assert result.returncode == 2
463
+ assert "this check proved nothing" in result.stderr
@@ -1,6 +1,6 @@
1
1
  """A behaviour suite under `acceptance/` is test code, not production code.
2
2
 
3
- Found auditing Scrollwork: more than sixty suites in `acceptance/<suite>/
3
+ Found auditing a private application: more than sixty suites in `acceptance/<suite>/
4
4
  run.mjs`, each importing and driving the production handlers, were
5
5
  graded as production. 18 of 25 duplicate blocks and most oversized files
6
6
  were in them, and 106 production files were reported unpaired while those
@@ -82,7 +82,7 @@ def test_the_classifiers_agree_outside_the_list_too(name: str) -> None:
82
82
 
83
83
 
84
84
  def test_a_handler_driven_by_an_acceptance_suite_is_paired(tmp_path: Path) -> None:
85
- """The closing test the defect asked for, on Scrollwork's own shape."""
85
+ """The closing test the defect asked for, on that application's own shape."""
86
86
  suite = tmp_path / "acceptance" / "login"
87
87
  suite.mkdir(parents=True)
88
88
  (suite / "run.mjs").write_text(
@@ -2,7 +2,7 @@
2
2
 
3
3
  A duplicated block appears as many overlapping windows, each a distinct
4
4
  fingerprint at consecutive lines. Reported one row per window it was 861
5
- line-items of a single clone (bighound field test); reported one row per
5
+ line-items of a single clone (field test on a private repository); reported one row per
6
6
  clone it is one finding carrying the occurrence count and the span.
7
7
  Genuinely separate clones stay separate.
8
8
  """
@@ -1,6 +1,6 @@
1
1
  """Consent to run a test command is given for one repository, not for every one.
2
2
 
3
- Found auditing Scrollwork: the audit ran this project's own suite —
3
+ Found auditing a private application: the audit ran this project's own suite —
4
4
  `pytest -n auto --cov=maintainability_audit …` — against a JavaScript
5
5
  and Python tree it has nothing to do with, because the person's tier
6
6
  held a single `expected_commands.test`. Consent given while setting up
@@ -1,6 +1,6 @@
1
1
  """Coverage is read from lcov as well as Cobertura XML.
2
2
 
3
- Found auditing Scrollwork: its suite measures with V8 and writes lcov, not
3
+ Found auditing a private application: its suite measures with V8 and writes lcov, not
4
4
  `coverage.xml`, so even the right command would have left
5
5
  `test_effectiveness` unscored. JavaScript's coverage tools — c8, nyc, jest,
6
6
  vitest — write `coverage/lcov.info` by convention. The same provenance rule
@@ -140,7 +140,7 @@ def test_a_clean_tsc_run_still_reports_available_with_no_diagnostics(
140
140
 
141
141
  def _workspace_repo(tmp_path: Path, *, with_local_tsc: bool) -> Path:
142
142
  """A monorepo whose TypeScript lives in `web/`, not the root — the
143
- bighound UAT layout. Optionally with a project-local `tsc`."""
143
+ field-test UAT layout. Optionally with a project-local `tsc`."""
144
144
  web = tmp_path / "web"
145
145
  web.mkdir()
146
146
  (web / "tsconfig.json").write_text("{}", encoding="utf-8")
@@ -154,7 +154,7 @@ def _workspace_repo(tmp_path: Path, *, with_local_tsc: bool) -> Path:
154
154
  def test_a_workspace_tsconfig_and_local_tsc_are_found_and_paths_re_rooted(
155
155
  tmp_path: Path, monkeypatch,
156
156
  ) -> None:
157
- """The bighound defect, minus the half that was a security hole.
157
+ """The field-test defect, minus the half that was a security hole.
158
158
 
159
159
  What is still required: a TS config in `web/` rather than at the root
160
160
  is discovered, and a diagnostic tsc reports as `src/app.ts` from that
@@ -0,0 +1,39 @@
1
+ """Every CI job that installs the dev extras installs them under the pool's pins.
2
+
3
+ `lizard` is both a dev extra (`lizard>=1.17`) and a pinned analyzer
4
+ (`constraints/analyzers.txt`), and `tests/test_grammar_constructs.py` checks
5
+ the scanner against it, declaring the constructs where the two are known to
6
+ differ. A job that installed the dev extras without the pins took lizard
7
+ 1.24.1, which counts Rust match arms as the scanner does, so the declared
8
+ divergence vanished and the test failed — on macOS, and then in the release
9
+ job, which refused to publish 4.3.1. One oracle, one version, every job.
10
+
11
+ The jobs are read from the workflow files, not listed here, so a job added
12
+ later is held to the same rule.
13
+ """
14
+
15
+ from __future__ import annotations
16
+
17
+ import re
18
+ from pathlib import Path
19
+
20
+ ROOT = Path(__file__).resolve().parents[1]
21
+ WORKFLOWS = sorted((ROOT / ".github" / "workflows").glob("*.yml"))
22
+ CONSTRAINTS = "constraints/analyzers.txt"
23
+
24
+
25
+ def _jobs(text: str) -> dict[str, str]:
26
+ """Each job's body under `jobs:`, keyed by its id."""
27
+ body = text.split("\njobs:\n", 1)[1]
28
+ parts = re.split(r"^ ([A-Za-z0-9_-]+):\s*$", body, flags=re.M)
29
+ return dict(zip(parts[1::2], parts[2::2], strict=True))
30
+
31
+
32
+ def test_every_job_installing_the_dev_extras_applies_the_pins() -> None:
33
+ installing = {f"{wf.name}:{job}": body for wf in WORKFLOWS
34
+ for job, body in _jobs(wf.read_text(encoding="utf-8")).items()
35
+ if re.search(r"pip install[^\n]*\.\[dev\]", body)}
36
+ # A parser that found no jobs would pass this vacuously.
37
+ assert len(installing) >= 5, sorted(installing)
38
+ unpinned = [name for name, body in installing.items() if CONSTRAINTS not in body]
39
+ assert unpinned == [], f"these jobs test against an unpinned lizard: {unpinned}"
@@ -352,7 +352,7 @@ def _assert_full_ladder(html: str) -> None:
352
352
  def test_charts_are_readable_legend_clear_dated_and_laddered(
353
353
  executive_report: tuple[dict, list],
354
354
  ) -> None:
355
- """The three defects the bighound UAT named, encoded so they cannot come
355
+ """The three defects a private repository's UAT named, encoded so they cannot come
356
356
  back: legend clear of the plot, a dated x-axis, and the full 0-5 ladder.
357
357
  """
358
358
  _report, records = executive_report
@@ -0,0 +1,145 @@
1
+ """No private repository's name appears in this public one.
2
+
3
+ This repository is public, and its owner's other repositories are not. A
4
+ private product's name reached the tree anyway — in the changelog, the defect
5
+ register, a document's file name, code comments, test docstrings and the scan
6
+ history — because the guard that existed checked only the lines a change
7
+ added, against a term list that had never been given the name. Nothing
8
+ looked at what was already there.
9
+
10
+ `tools/check_private_names.py` reads every tracked file and every tracked
11
+ path, and on request every commit message in a range, against the names it
12
+ is given. The names never live in this tree: they come from the
13
+ `FORBIDDEN_TERMS` and `PRIVATE_NAMES` environment variables (CI secrets) and
14
+ from `~/.config/private-names`, which is generated from the owner's private
15
+ repositories. A match is reported by file and line, never by the text that
16
+ matched, and a run with no names fails rather than passing having checked
17
+ nothing.
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ import importlib.util
23
+ import subprocess
24
+ from pathlib import Path
25
+
26
+ import pytest
27
+
28
+ ROOT = Path(__file__).resolve().parents[1]
29
+
30
+ # Loaded from this checkout's file, not from whichever `tools/` is on the
31
+ # path: the falsifier prover runs with the original checkout's `tools/` on
32
+ # it, so an import by name reached the tool its proof had removed.
33
+ _SPEC = importlib.util.spec_from_file_location("check_private_names", ROOT / "tools" / "check_private_names.py")
34
+ guard = importlib.util.module_from_spec(_SPEC)
35
+ _SPEC.loader.exec_module(guard)
36
+
37
+ # A made-up name: the real ones must never be written here.
38
+ NAME = "Quillfeather"
39
+
40
+
41
+ def _git(root: Path, *args: str) -> None:
42
+ subprocess.run(["git", "-C", str(root), *args], check=True, capture_output=True)
43
+
44
+
45
+ def _repo(tmp_path: Path, files: dict[str, str]) -> Path:
46
+ root = tmp_path / "repo"
47
+ root.mkdir()
48
+ _git(root, "init", "-q", "-b", "main")
49
+ for path, text in files.items():
50
+ (root / path).parent.mkdir(parents=True, exist_ok=True)
51
+ (root / path).write_text(text, encoding="utf-8")
52
+ _git(root, "add", ".")
53
+ _git(root, "-c", "user.email=t@t", "-c", "user.name=t", "commit", "-qm", "base")
54
+ return root
55
+
56
+
57
+ def test_a_name_anywhere_in_a_tracked_file_is_found_whatever_its_case(tmp_path: Path) -> None:
58
+ root = _repo(tmp_path, {"a.md": "fine\nsee quillFEATHER's audit\n", "b.py": "x = 1\n"})
59
+
60
+ assert guard.scan(root, [NAME]) == [("a.md", 2)]
61
+
62
+
63
+ def test_a_name_in_a_file_name_is_found(tmp_path: Path) -> None:
64
+ root = _repo(tmp_path, {"docs/defects-from-quillfeather.md": "nothing here\n"})
65
+
66
+ assert guard.scan(root, [NAME]) == [("docs/defects-from-quillfeather.md", 0)]
67
+
68
+
69
+ def test_a_name_inside_an_office_document_is_found(tmp_path: Path) -> None:
70
+ """A .docx is a zip of XML: read as text it is binary, and was skipped.
71
+
72
+ That is how a document naming a forbidden term sat in the tree past the
73
+ first version of this check.
74
+ """
75
+ import zipfile
76
+
77
+ root = _repo(tmp_path, {"keep.md": "fine\n"})
78
+ with zipfile.ZipFile(root / "case.docx", "w", zipfile.ZIP_DEFLATED) as docx:
79
+ docx.writestr("word/document.xml", "<w:t>the Quillfeather case</w:t>")
80
+ _git(root, "add", "case.docx")
81
+ _git(root, "-c", "user.email=t@t", "-c", "user.name=t", "commit", "-qm", "doc")
82
+
83
+ assert guard.scan(root, [NAME]) == [("case.docx", 0)]
84
+
85
+
86
+ def test_a_commit_message_in_the_range_is_found(tmp_path: Path) -> None:
87
+ root = _repo(tmp_path, {"a.md": "fine\n"})
88
+ (root / "a.md").write_text("still fine\n", encoding="utf-8")
89
+ _git(root, "-c", "user.email=t@t", "-c", "user.name=t", "commit", "-qam", "fix the Quillfeather defects")
90
+
91
+ hits = guard.scan_messages(root, "HEAD~1..HEAD", [NAME])
92
+
93
+ assert len(hits) == 1 and len(hits[0]) == 40
94
+
95
+
96
+ def test_the_report_never_repeats_the_name(tmp_path: Path, capsys, monkeypatch) -> None:
97
+ root = _repo(tmp_path, {"a.md": "Quillfeather\n"})
98
+ monkeypatch.setenv("PRIVATE_NAMES", NAME)
99
+ monkeypatch.delenv("FORBIDDEN_TERMS", raising=False)
100
+
101
+ code = guard.main(["--root", str(root), "--no-default-file"])
102
+
103
+ out = capsys.readouterr()
104
+ assert code == 1
105
+ assert "a.md:1" in out.out
106
+ assert NAME.lower() not in (out.out + out.err).lower()
107
+
108
+
109
+ def test_no_names_fails_rather_than_passing(tmp_path: Path, monkeypatch) -> None:
110
+ root = _repo(tmp_path, {"a.md": "anything\n"})
111
+ monkeypatch.delenv("PRIVATE_NAMES", raising=False)
112
+ monkeypatch.delenv("FORBIDDEN_TERMS", raising=False)
113
+
114
+ assert guard.main(["--root", str(root), "--no-default-file"]) == 2
115
+
116
+
117
+ def test_names_come_from_both_variables_and_the_file_and_comments_are_ignored(tmp_path: Path, monkeypatch) -> None:
118
+ names = tmp_path / "private-names"
119
+ names.write_text("# generated\nalpha-repo\n\n Beta \n", encoding="utf-8")
120
+ monkeypatch.setenv("FORBIDDEN_TERMS", "gamma\n")
121
+ monkeypatch.setenv("PRIVATE_NAMES", "delta")
122
+
123
+ assert guard.load_names([names]) == ["alpha-repo", "beta", "delta", "gamma"]
124
+
125
+
126
+ def test_a_clean_tree_passes(tmp_path: Path, monkeypatch) -> None:
127
+ root = _repo(tmp_path, {"a.md": "nothing private\n"})
128
+ monkeypatch.setenv("PRIVATE_NAMES", NAME)
129
+
130
+ assert guard.main(["--root", str(root), "--no-default-file"]) == 0
131
+
132
+
133
+ def test_this_repository_names_no_private_repository() -> None:
134
+ """The real tree, against the real names, wherever they are available.
135
+
136
+ On a machine without `~/.config/private-names` there is nothing to check
137
+ against, which is reported as a skip rather than a pass. In CI the
138
+ required "Commit identity and signatures" job runs the same tool with the
139
+ names from secrets, and there their absence fails the job.
140
+ """
141
+ names = guard.load_names([guard.DEFAULT_FILE])
142
+ if not names:
143
+ pytest.skip(f"no private names on this machine ({guard.DEFAULT_FILE} is absent)")
144
+
145
+ assert guard.scan(ROOT, names) == []
@@ -221,7 +221,7 @@ def test_reconfigure_preserves_hand_tuned_config_the_wizard_never_asks_about(
221
221
  "hard_gates": {"require_readme": True},
222
222
  "expected_commands": {"test": ["pytest", "-q"]},
223
223
  "risk_patterns": [{"name": "eval", "pattern": "eval\\("}],
224
- "instruction_pack": {"project_name": "Bighound"},
224
+ "instruction_pack": {"project_name": "Fixture"},
225
225
  }
226
226
  (root / CONFIG_FILENAME).write_text(json.dumps(tuned), encoding="utf-8")
227
227
 
@@ -237,7 +237,7 @@ def test_reconfigure_preserves_hand_tuned_config_the_wizard_never_asks_about(
237
237
  assert saved["hard_gates"] == {"require_readme": True}
238
238
  assert saved["expected_commands"] == {"test": ["pytest", "-q"]}
239
239
  assert saved["risk_patterns"] == [{"name": "eval", "pattern": "eval\\("}]
240
- assert saved["instruction_pack"] == {"project_name": "Bighound"}
240
+ assert saved["instruction_pack"] == {"project_name": "Fixture"}
241
241
  # Analyzer sub-keys beyond the three the wizard sets are preserved.
242
242
  assert saved["analyzers"]["concerns"] == ["all"]
243
243
  assert saved["analyzers"]["timeout_seconds"] == 120
@@ -2,7 +2,7 @@
2
2
 
3
3
  The report — HTML or Markdown — is the complete record, with the history
4
4
  charts drawn from the audit series. Chat is the bounded view. Found on
5
- Scrollwork's first chat-door run with 3.9.0: `format: "html"` returned
5
+ A private application's first chat-door run with 3.9.0: `format: "html"` returned
6
6
  the whole 257 KB HTML inline beside the Markdown and work orders, 309 KB
7
7
  in one result. The host refused it for size and nothing was saved, so
8
8
  the report and its charts reached nobody.
@@ -358,7 +358,7 @@ def test_within_a_class_the_worst_offender_leads(tmp_path: Path) -> None:
358
358
  def test_prompt_items_keep_severe_inside_the_bounded_subset() -> None:
359
359
  """Economics may reorder the table; the agent paste cannot drop risk 5.
360
360
 
361
- bighound 2026-08-30: tokens.py absence-as-zero was Severe, then 13th
361
+ A private repository, 2026-08-30: tokens.py absence-as-zero was Severe, then 13th
362
362
  after churn reorder, then missing from prompt_items[:12].
363
363
  """
364
364
  items = [