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.
- {maintainability_agent-4.3.0/src/maintainability_agent.egg-info → maintainability_agent-4.3.1}/PKG-INFO +3 -3
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/README.md +2 -2
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1/src/maintainability_agent.egg-info}/PKG-INFO +3 -3
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_agent.egg-info/SOURCES.txt +2 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/__init__.py +1 -1
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_mcp_audit.py +1 -1
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_mcp_gate.py +1 -1
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_metrics_types.py +1 -1
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_test_execution.py +2 -2
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/duplication.py +1 -1
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_authorship_gates.py +39 -2
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_behaviour_suites_are_tests.py +2 -2
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_clone_group_class.py +1 -1
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_consent_is_per_repository.py +1 -1
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_coverage_formats.py +1 -1
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_direct_runner_availability_class.py +2 -2
- maintainability_agent-4.3.1/tests/test_every_job_tests_the_pinned_oracle.py +39 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_html_executive.py +1 -1
- maintainability_agent-4.3.1/tests/test_no_private_names.py +145 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_setup_precondition.py +2 -2
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_report_is_saved_not_sent.py +1 -1
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_work_order.py +1 -1
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/LICENSE +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/pyproject.toml +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/setup.cfg +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_agent.egg-info/dependency_links.txt +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_agent.egg-info/entry_points.txt +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_agent.egg-info/requires.txt +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_agent.egg-info/top_level.txt +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/__main__.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_adapters.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_analysis.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_analyzer_sections.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_anchor.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_arguments.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_aspects.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_assets/analyzer-catalog.json +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_assets/standard.md +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_attestation.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_backfill.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_bands.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_banner.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_built_ins.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_calibration.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_catalog.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_changed_code_policy.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_charts.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_cognitive.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_config_defaults.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_conformance.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_corroborate.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_coverage_notes.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_criteria_scope.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_delegated_pillar.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_derive.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_discovery.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_documents.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_economics.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_economics_view.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_environment.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_evidence_reader.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_evidence_view.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_finding_match.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_first_run.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_formula.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_gates.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_generic.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_grammar.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_grant_ledger.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_handoff.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_history_view.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_hostile_prompt.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_hotspots.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_html_report_sections.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_html_view.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_identity.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_in_loop.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_in_loop_view.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_jvm_adapters.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_markdown_sections.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_masking.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_mcp_grants.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_mcp_refusals.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_mcp_resources.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_mcp_setup.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_metric_adapters.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_operator_reads.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_oracle.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_pillars.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_practice.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_precommit.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_precommit_install.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_precommit_view.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_pressures.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_prompt_sections.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_c.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_cobol.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_core.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_cpp.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_csharp.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_fortran.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_go.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_java.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_js.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_kotlin.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_php.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_ruby.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_rust.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_shell.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ranges_swift.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ratchet.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_ratio_adapters.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_recurrence.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_run_comparison.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_runner.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_running_version.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_safe_write.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_scan_history.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_scan_view.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_second_source.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_security_delegate.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_security_work_order.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_selection.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_semantic.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_semantic_policy.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_semantic_ts.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_semantic_view.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_setup_errors.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_setup_persist.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_skill_data/SKILL.md +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_skill_data/agents/anthropic.yaml +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_skill_data/agents/copilot.yaml +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_skill_data/agents/openai.yaml +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_skill_data/copilot/maintainability-agent.prompt.md +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_skill_data/references/finding-taxonomy.md +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_skill_install.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_stored_grants.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_tdd_view.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_test_commands.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_test_pairing.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_tokens.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_tool_adapters.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_trends.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_user_config.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_verdict_adapters.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_verification.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_work_order.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_work_order_view.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_work_order_weights.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_xml.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/baseline.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/cli.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/config.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/deadcode.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/declarations.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/evidence.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/git_tools.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/history.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/idioms.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/instructions.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/mcp_server.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/metrics.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/prompts.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/renderers.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/report.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/sarif.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/scoring.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/similarity.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/source.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_a_clone_names_every_copy.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_a_dangling_source_link_is_named_not_fatal.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_a_format_override_is_disclosed.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_a_matching_format_stays_silent.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_a_published_question_offers_what_it_accepts.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_a_rendered_docs_site_is_not_scored_as_source.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_a_setup_question_keeps_its_contract.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_acquisition_trust.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_adapter_docs.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_adapter_recordings.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_adapters.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_added_lines.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_an_absent_work_order_renders_nothing.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_an_unmeasured_pillar_reports_no_number.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analysis_coverage.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analysis_execution.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_bridge.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_config_isolation.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_estimate_claims.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_file_lists_are_batched.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_pinning.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_primary_estimate.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_provenance.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_provenance_exclusions.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_scoring_path.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_spread_range.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzer_xml_bounds.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzers_against_the_real_tools.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_analyzers_report_what_actually_failed.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_anchor_and_mode.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_anchor_caveat_and_counts_follow_the_run.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_anchor_disclosure.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_annotations_match_behaviour.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_anticipated_refusals.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_architecture.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_artifact_write_route_class.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_aspect_coverage.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_asset_snapshot_class.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_ast_reading_resolves_spellings.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_attestation.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_audit_components.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_authorization_freshness.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_backfill.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_band_concealment_class.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_band_concealment_p3.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_band_pressures.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_bands.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_body_or_signature_class.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_both_setup_paths_ask_the_same_stage.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_build_output_is_not_the_repositorys_code.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_c_declarations.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_calibration_corpus.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_calibration_drift.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_calibration_tooling.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_catalog_selection.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_catalog_tier_promise.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_changed_code_policy.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_chat_leads_with_the_work_order.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_chat_primary_docs.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_check_refuses_plus_only_fragments.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_checkstyle_adapter.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_checkstyle_catalog.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_child_sandbox.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_ci_history_recipe.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_ci_installs_the_analyzer_pool.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_claimed_languages.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_clean_sees_the_weakened_oracle.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_cli.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_cobol_declarations.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_code_scanning_gets_alerts_not_the_record.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_cognitive_complexity.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_cohesion_with_nothing_to_read_is_not_applicable.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_cohort_statistics.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_concealment_properties.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_config_shape.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_conformance_reads_the_operators_ask.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_consent_and_grant.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_consent_survives_setup_and_is_asked.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_consent_without_command_has_a_remedy.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_consumer_migration.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_contract_claims.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_corpus_note_counts_come_from_the_corpus.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_corroborate.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_coverage_by_language.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_coverage_config_reaches_children.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_cpp_declarations.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_criteria_completion.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_csharp_declarations.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_current_state_docs_name_every_parsed_language.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_d15_composition.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_d15_goal_directed.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_dead_code.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_declaration_criteria_scope.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_declaration_edge_cases.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_declaration_grading.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_declaration_ranges.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_declaration_source.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_declarative_parsers.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_declared_capabilities_match_the_delegate.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_declared_imports.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_delegated_security_pillar.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_demo_tree.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_derivation_mix.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_determinism.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_dimension_ratchet.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_discovery.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_doc_claims.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_docs_links.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_economic_context.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_empty_output_not_clean.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_empty_output_not_clean_adapters.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_environment_work_order.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_every_built_presentation_is_offered.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_every_language_counts_its_own_loop.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_every_language_has_a_loop_fixture.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_every_pool_install_is_the_same_pool.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_every_question_can_be_answered.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_every_surface_says_what_the_run_found.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_evidence_invariants.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_evidence_normalization.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_evidence_properties.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_example_config_opens_claimed_languages.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_exclude_additional_keeps_the_defaults.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_exclusion_dialects.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_exposure_never_outranks_band.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_falsifier_standard.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_file_list_cap_class.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_finding_identity.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_first_run_elicitation.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_first_run_prompt.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_first_run_reelicitation.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_first_stage_setup_wording_holds.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_fix_breadth_window.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_fixed_form_fortran.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_format_ask.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_fortran_declarations.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_fortran_metrics.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_fortran_practice.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_git_argv.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_git_read_only.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_git_readonly_class.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_go_declarations.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_grammar_constructs.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_grammar_token_coverage.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_grant_only_user_tier.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_grok_audit_of_3_11.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_history.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_history_boundary.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_history_manifest.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_history_schema2.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_history_window.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_hostile_prompt.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_html_section_parity_class.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_identity_docs.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_identity_resolution.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_idiom_divergence.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_in_loop_budgets.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_in_loop_check.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_installed_wheel_runtime.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_instruction_targets.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_java_range_guard.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_java_ranges.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_java_scored.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_java_wiring.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_js_complexity_operators.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_js_declarations.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_kotlin_declarations.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_kotlin_metrics.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_language_coverage.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_language_support_honesty.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_list_tools_publishes_the_answer_path.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_maintenance_signals.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_mcp_baseline_payload.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_mcp_format_contract.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_mcp_history.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_mcp_server.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_mcp_start_failure_names_what_is_installed.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_migration_1_0.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_missing_security_scanners_are_named_before_the_run.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_mutation_recorded.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_near_duplicates.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_network_disclosure.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_one_setup_across_surfaces_class.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_operator_named_paths.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_operator_named_reads.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_oracle_weakening_precision_bar.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_pairing_reads_imports.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_pattern_budget.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_phase6_claims.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_php_declarations.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_pillars_and_practice.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_platform_claim.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_pmd_adapter.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_pmd_audit_closures.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_policy_claims.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_pool_runs_by_config.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_population_floors.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_practice_nested_gates_class.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_precommit_staged.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_preflight_before_consent_runs_nothing_from_the_tree.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_presentation_refusals.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_previous_release_reached_pypi.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_promises.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_prompt_does_not_issue_rates_when_unscored.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_prompt_escalation_once.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_prompt_honesty.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_prompt_location_escalation_class.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_prove_falsifiers.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_python_complexity.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_python_declarations.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_read_boundary.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_readme_claims.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_recurrence.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_regular_file_reads_work_without_o_nonblock.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_release_needs_an_empty_ledger.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_release_plan.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_release_plan_status.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_rendered_docs.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_report_remedy_copy.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_root_grants.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_rubric_ignores_project_lint_config.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_ruby_declarations.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_run_comparison.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_runner.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_rust_declarations.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_sarif.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_scan_history.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_scan_scope.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_scanner_fingerprint_covers_the_measurement_path.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_scanner_unsafe_direction.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_scanning.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_schema_fidelity.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_scope_conformance.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_scoring_calibration.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_security_delegate_versions_agree.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_security_findings_keep_their_handoff.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_security_pillar_asserts_a_scanner_set.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_security_pillar_runs_and_shows.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_selection_covers_every_parsed_language.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_semantic_findings_stay_inside_the_audited_files.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_semantic_policy.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_setup_answers_are_the_same_setup.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_setup_gate_completeness.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_setup_gate_independent_contract.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_setup_instruction_describes_its_own_reply.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_setup_writes_a_valid_config.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_shell_declarations.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_shell_metrics.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_skill_install.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_sonar_resolve.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_source_index.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_spotbugs_adapter.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_spotbugs_catalog.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_stage8_contract.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_stamped_documents_stay_honest.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_stdout_outputs.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_suite_isolation.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_swift_declarations.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_tdd_structure.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_terminal_asks_the_same_questions.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_test_commands.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_test_execution_class.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_agent_knows_when_it_is_stale.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_changelog_covers_the_shipping_version.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_chat_payload_has_a_budget.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_condition_says_what_it_measured.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_handoff_rules_are_their_own_module.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_pillar_row_reads_cleanly.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_presentation_question_stays_answerable.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_previous_release_was_tagged.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_prompt_does_not_take_back_what_it_withheld.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_prompt_keeps_listing_what_it_did_not_withhold.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_release_process_describes_itself.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_release_record_stays_well_formed.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_security_run_has_a_configurable_limit.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_security_work_order_is_drawn.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_suite_names_the_program_it_ran.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_tree_cannot_redirect_a_read.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_the_version_has_one_source.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_three_presentations.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_tool_resolution.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_tree_cannot_opt_the_host_in.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_tree_chosen_spawn.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_tree_reads_use_the_primitive.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_trends.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_type_fields_not_functions_class.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_uat_falsifiers.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_unanchored_set_matches_corpus.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_unread_code.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_user_config_tier.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_verification_audit_closures.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_verified_grade.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_version_claim.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_version_stamping.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_wheel_contents.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_withheld_work_keeps_its_boundary.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_work_items_state_their_own_finding.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_work_order_binds_to_this_interpreter.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_work_order_items.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_work_order_selection.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_workflow_supply_chain.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_write_boundary.py +0 -0
- {maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_write_route_class.py +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_mcp_audit.py
RENAMED
|
@@ -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
|
|
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:
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_mcp_gate.py
RENAMED
|
@@ -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
|
-
#
|
|
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
|
|
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
|
|
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) —
|
|
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
|
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/duplication.py
RENAMED
|
@@ -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
|
-
(
|
|
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
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_behaviour_suites_are_tests.py
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""A behaviour suite under `acceptance/` is test code, not production code.
|
|
2
2
|
|
|
3
|
-
Found auditing
|
|
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
|
|
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 (
|
|
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
|
"""
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_consent_is_per_repository.py
RENAMED
|
@@ -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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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) == []
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/tests/test_setup_precondition.py
RENAMED
|
@@ -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": "
|
|
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": "
|
|
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
|
-
|
|
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
|
-
|
|
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 = [
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/__main__.py
RENAMED
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_adapters.py
RENAMED
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_analysis.py
RENAMED
|
File without changes
|
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_anchor.py
RENAMED
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_arguments.py
RENAMED
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_aspects.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_backfill.py
RENAMED
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_bands.py
RENAMED
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_banner.py
RENAMED
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_built_ins.py
RENAMED
|
File without changes
|
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_catalog.py
RENAMED
|
File without changes
|
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_charts.py
RENAMED
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_cognitive.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_derive.py
RENAMED
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_discovery.py
RENAMED
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_documents.py
RENAMED
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_economics.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{maintainability_agent-4.3.0 → maintainability_agent-4.3.1}/src/maintainability_audit/_first_run.py
RENAMED
|
File without changes
|