drift-analyzer 2.4.3__tar.gz → 2.4.4__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.
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.pre-commit-config.yaml +1 -1
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/CHANGELOG.md +2 -1
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/PKG-INFO +1 -1
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/llms.txt +1 -1
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/pyproject.toml +1 -1
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/mcp_server.py +14 -16
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_brief.py +16 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_golden_snapshot.py +8 -2
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.detect-secrets.cfg +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.devcontainer/devcontainer.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.githooks/commit-msg +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.githooks/pre-commit +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.githooks/pre-push +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/AGENTS.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/CODEOWNERS +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/DISCUSSION_TEMPLATE/questions.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/FUNDING.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/ISSUE_TEMPLATE/contribution_proposal.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/ISSUE_TEMPLATE/doc_drift.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/ISSUE_TEMPLATE/false_positive.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/ISSUE_TEMPLATE/good_first_issue.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/ISSUE_TEMPLATE/study_finding_rating.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/ISSUE_TEMPLATE/study_repo_benchmark.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/ISSUE_TEMPLATE/study_self_analysis.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/copilot-instructions.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/dependabot.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/instructions/drift-policy.instructions.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/instructions/drift-push-gates.instructions.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/instructions/drift-release-automation.instructions.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/instructions/drift-release-mandatory.instructions.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/labeler.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/labels.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/PR-Orchestrator.prompt.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/README.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/_partials/bewertungs-taxonomie.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/_partials/issue-filing-external.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/_partials/issue-filing.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/_partials/konventionen.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/drift-agent-ux.prompt.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/drift-agent-workflow-test.prompt.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/drift-ai-integration.prompt.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/drift-ci-gate.prompt.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/drift-onboarding.prompt.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/drift-signal-quality.prompt.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/field-tests/README.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/field-tests/drift-context-eval.prompt.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/field-tests/drift-field-test.prompt.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/field-tests/drift-finding-audit.prompt.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/release.prompt.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/repo-guard.blocklist +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/repo-root-allowlist +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/skills/drift-effective-usage/SKILL.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/skills/drift-pr-review/SKILL.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/skills/drift-release/SKILL.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/skills/drift-security-triage/SKILL.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/README.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/ci.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/codeql.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/dependency-review.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/doc-consistency.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/docs.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/fp-oracle-audit.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/install-smoke.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/labeler.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/package-kpis.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/perf-regression-loop.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/publish.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/release.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/repo-guard.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/security-hygiene.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/stale.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/validate-release.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/welcome.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/workflows/workflow-sanity.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.gitignore +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.markdownlint-cli2.jsonc +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.pre-commit-hooks.yaml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.secrets.baseline +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.shellcheckrc +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.vscode/mcp.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.vscode/settings.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.vscode/tasks.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/CITATION.cff +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/CLAUDE.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/CODE_OF_CONDUCT.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/CONTRIBUTING.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/DEVELOPER.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/LICENSE +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/Makefile +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/POLICY.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/README.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/ROADMAP.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/SECURITY.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/SUPPORT.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/action.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/history.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/01611cd8233f2aa70c571f9e8c4ebdc2.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/1e7cd9a98b3290c41e5e10dec26e35ea.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/1f2d1a22e9791d9b2f3078612aa0f786.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/226ac9d816e43df5ddc2a1f105ddc628.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/2a5d4c9a80c6ea7a6d71ccf7c05c4ad2.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/2baf118e8a0d13742b95d19cfcfa2e02.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/3ea99d008b13c9720d79eb1aa60ee1ee.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/4a8a215b34caf38fa4855682a7e35be5.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/59d0360c97970456beb61a677362a68a.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/5e610090f38b99b552831f348dfbdfff.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/6186fe9a4dbfaeaef44654495863e533.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/78756d46421bd849ad69b53db46cd81b.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/cb6867a7470df13c2227fef55eb91904.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/ce1b0ac9777a398ce99594f664bcd978.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/d784163017a2693256dad9b1540716ae.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/e174dbe14bbe023518432fa603b5f4b1.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/e3b0c44298fc1c149afbf4c8996fb924.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/e6c7265a3e1a5c08fcae73860b077763.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/e914253ffba0b698dc7b3ca2da261100.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/parse/ec975ed99470aaa822b6caf0fa31ffc6.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/architecture_violation_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/broad_exception_monoculture_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/bypass_accumulation_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/circular_import_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/co_change_coupling_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/cognitive_complexity_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/cohesion_deficit_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/dead_code_accumulation_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/doc_impl_drift_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/exception_contract_drift_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/explainability_deficit_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/fan_out_explosion_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/guard_clause_deficit_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/hardcoded_secret_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/insecure_default_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/missing_authorization_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/mutant_duplicate_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/naming_contract_violation_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/pattern_fragmentation_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/system_misalignment_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/temporal_volatility_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/test_polarity_deficit_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/signals/ts_architecture_c23495de147fbcf1_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/README.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/manifest.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/connectors/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/connectors/db.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/handler_v1.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/handler_v2.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/handlers/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/handlers/auth.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/handlers/orders.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/handlers/payments.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/handlers/shipping.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/models/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/models/core.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/models/enriched.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/outlier_module.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/processors/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/processors/pricing.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/processors/transform.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/processors/validator.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/service_a.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/service_b.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/utils/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/utils/formatting.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/utils/helpers.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/utils/naming.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/tests/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/tests/test_api.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/oracle_repos.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/conda.recipe/meta.yaml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/decisions/ADR-010-finding-context-triage-policy.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/decisions/ADR-011-csv-output-format.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/decisions/ADR-012-copilot-context-actionability-pfs-nbv.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/decisions/templates/README.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/decisions/templates/adr-template.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/decisions/templates/signal-design-template.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/EPISTEMICS.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/LAUNCH_CHECKLIST.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/OUTREACH.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/PRODUCT_STRATEGY.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/ROOT_POLICY.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/STUDY.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/adr/001-deterministic-analysis-pipeline.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/adr/002-ast-fingerprinting-for-patterns.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/adr/003-composite-scoring-model.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/adr/004-subprocess-git-parsing.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/adr/005-delta-first-score-interpretation.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/adr/006-context-tagging.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/adr/007-consistency-proxy-signals.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/adr/008-intention-contract-proxy-signals.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/distribution/README.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/distribution/awesome-submissions.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/distribution/devto-hashnode-5-repos.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/distribution/ide-discovery-mvp-spec.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/distribution/week1-rollout-runbook.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/drift-architecture-erosion-analysis.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/go-mvp-scope.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/language-roadmap.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/language-support-matrix.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/migration.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/python-baseline.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/python-rule-inventory.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs/tsjs-mvp-scope.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/algorithms/deep-dive.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/algorithms/scoring.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/algorithms/signals.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/assets/logo.svg +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/benchmarking.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/case-studies/django.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/case-studies/fastapi.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/case-studies/index.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/case-studies/pydantic.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/changelog.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/comparisons/drift-vs-architecture-conformance.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/comparisons/drift-vs-ruff.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/comparisons/drift-vs-semgrep-codeql.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/comparisons/index.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/contributing.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/faq.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/getting-started/configuration.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/getting-started/finding-triage.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/getting-started/installation.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/getting-started/quickstart.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/getting-started/team-rollout.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/getting-started/troubleshooting.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/glossary.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/index.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/integrations.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/product/example-findings.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/product/press-brand.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/product-strategy.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/reference/api-outputs.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/reference/negative-context.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/reference/performance.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/reference/signals/pfs.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/stability.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/start-here.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/study.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/trust-evidence.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/use-cases/architectural-linter-ai-teams.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/use-cases/architecture-drift-python.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/use-cases/ci-architecture-checks-sarif.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/use-cases/index.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/docs-site/use-cases/technical-debt-ai-codebases.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/drift.example.yaml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/demo-project/README.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/demo-project/api/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/demo-project/api/routes.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/demo-project/db/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/demo-project/db/models.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/demo-project/services/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/demo-project/services/email_service.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/demo-project/services/order_service.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/demo-project/services/user_service.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/demo-project/utils/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/demo-project/utils/validators.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/demo_fastapi.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/drift-check.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/package-kpis/README.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/package-kpis/defects.csv +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/package-kpis/kpi-thresholds.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/package-kpis/usage.csv +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/vibe-coding/README.md +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/vibe-coding/drift-gate.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/vibe-coding/drift.yaml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/vibe-coding/mcp.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/vibe-coding/pre-push +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/vibe-coding/setup-baseline.sh +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/examples/vibe-coding/weekly-check.sh +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/mkdocs.yml +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/overrides/home.html +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/overrides/main.html +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/__main__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/analyzer.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/analyzers/typescript/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/analyzers/typescript/_path_utils.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/analyzers/typescript/alias_resolver.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/analyzers/typescript/barrel_resolver.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/analyzers/typescript/import_graph.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/analyzers/typescript/shared.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/analyzers/typescript/workspace_boundaries.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/api.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/api_helpers.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/baseline.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/cache.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/cli.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/_io.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/analyze.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/badge.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/baseline.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/brief.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/check.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/config_cmd.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/copilot_context.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/diff_cmd.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/explain.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/export_context.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/fix_plan.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/init_cmd.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/mcp.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/patterns.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/scan.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/self_analyze.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/timeline.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/trend.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/commands/validate_cmd.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/config.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/context_tags.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/copilot_context.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/embeddings.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/errors.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/finding_context.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/guardrails.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/incremental.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/ingestion/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/ingestion/ast_parser.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/ingestion/file_discovery.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/ingestion/git_history.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/ingestion/ts_parser.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/models.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/negative_context.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/negative_context_export.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/output/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/output/agent_tasks.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/output/csv_output.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/output/github_format.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/output/json_output.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/output/rich_output.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/pipeline.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/profiles.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/py.typed +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/recommendations.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/rules/tsjs/circular_module_detection.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/rules/tsjs/cross_package_import_ban.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/rules/tsjs/layer_leak_detection.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/rules/tsjs/ui_to_infra_import_ban.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/scope_resolver.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/scoring/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/scoring/engine.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/_utils.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/architecture_violation.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/base.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/broad_exception_monoculture.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/bypass_accumulation.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/circular_import.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/co_change_coupling.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/cognitive_complexity.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/cohesion_deficit.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/dead_code_accumulation.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/doc_impl_drift.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/exception_contract_drift.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/explainability_deficit.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/fan_out_explosion.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/guard_clause_deficit.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/hardcoded_secret.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/insecure_default.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/missing_authorization.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/mutant_duplicates.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/naming_contract_violation.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/pattern_fragmentation.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/system_misalignment.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/temporal_volatility.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/test_polarity_deficit.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/signals/ts_architecture.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/suppression.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/telemetry.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/timeline.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/src/drift/trend_history.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/conftest.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/__init__.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/ground_truth.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/study_samples/debt_correlation.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/study_samples/rater_matrix.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/study_samples/self_analysis_reports.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_alias_resolution/src/app.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_alias_resolution/src/core/logger.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_alias_resolution/src/shared/config.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_alias_resolution/tsconfig.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_alias_resolution_extends/src/app.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_alias_resolution_extends/src/base/logger.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_alias_resolution_extends/src/leaf/feature.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_alias_resolution_extends/src/mid/util.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_alias_resolution_extends/src/override/config.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_alias_resolution_extends/src/shared/config.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_alias_resolution_extends/tsconfig.base.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_alias_resolution_extends/tsconfig.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_alias_resolution_extends/tsconfig.mid.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_barrel_resolution/src/app.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_barrel_resolution/src/app_tsx.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_barrel_resolution/src/button.tsx +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_barrel_resolution/src/index.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_barrel_resolution/src/view/card.tsx +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_barrel_resolution/src/view/index.tsx +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_graph_relative/app.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_graph_relative/components/button.tsx +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_graph_relative/components/index.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_graph_relative/lib/util.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_cross_package/negative/cross_package_import_ban.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_cross_package/negative/package.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_cross_package/negative/packages/app/src/main.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_cross_package/negative/packages/ui/src/button.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_cross_package/positive/cross_package_import_ban.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_cross_package/positive/package.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_cross_package/positive/packages/app/src/main.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_cross_package/positive/packages/ui/src/button.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_cycles/negative/src/a.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_cycles/negative/src/b.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_cycles/positive/src/a.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_cycles/positive/src/b.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_layer_leak/negative/layer_leak_detection.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_layer_leak/negative/src/infra/storage.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_layer_leak/negative/src/ui/view.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_layer_leak/positive/layer_leak_detection.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_layer_leak/positive/src/infra/storage.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_layer_leak/positive/src/ui/view.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_ui_to_infra/negative/src/infra/storage.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_ui_to_infra/negative/src/ui/components/button.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_ui_to_infra/negative/src/ui/view.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_ui_to_infra/negative/ui_to_infra_import_ban.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_ui_to_infra/positive/src/infra/storage.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_ui_to_infra/positive/src/ui/view.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_rule_ui_to_infra/positive/ui_to_infra_import_ban.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_workspace_boundaries/package.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_workspace_boundaries/packages/app/src/main.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_workspace_boundaries/packages/ui/src/button.tsx +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/fixtures/tsjs_workspace_boundaries/vite.config.ts +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/golden/corpus_snapshot.json +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/golden/corpus_snapshot.sarif +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_ablation.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_agent_native_cli.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_agent_tasks.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_ai_tool_indicators.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_analysis_degradation.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_analysis_edge_cases.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_architecture_violation.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_ast_parser.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_avs_enhanced.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_avs_missing_patterns_evidence.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_avs_mutations.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_badge_command.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_baseline.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_benchmark_label_keys.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_benchmark_structure.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_bypass_accumulation.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_cache_resilience.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_ci_reality.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_circular_import.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_cli_runtime.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_co_change_coupling.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_cognitive_complexity.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_cohesion_deficit.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_compat.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_config.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_config_validate.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_consistency_proxies.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_console_scripts.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_context_tags.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_copilot_context_actionability.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_copilot_context_coverage.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_csv_output.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_dead_code_accumulation.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_delta_first.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_dia_enhanced.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_dx_features.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_embeddings.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_enterprise_governance_assets.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_exception_contract_drift.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_fan_out_explosion.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_fetch_github_usage.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_fetch_pypistats.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_file_discovery.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_finding_context.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_fix_actionability.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_git_history_edge_cases.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_git_history_safety.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_guard_clause_deficit.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_hardcoded_secret.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_incremental.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_init_cmd.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_insecure_default.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_integration.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_json_output.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_malformed_history.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_mcp_copilot.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_mcp_hardening.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_mirofish_signal_improvements.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_missing_authorization.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_model_consistency.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_module_entrypoint.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_mutant_duplicates_edge_cases.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_naming_contract_violation.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_negative_context.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_negative_context_export.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_nudge.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_output_golden.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_output_minimal_and_signal_labels.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_package_kpis.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_parse_file_resilience.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_path_overrides.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_pattern_fragmentation.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_pipeline_components.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_precision_recall.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_property_based.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_recommendations.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_recommendations_edge_cases.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_release_automation.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_release_discipline.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_repo_hygiene.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_rule_ids.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_sarif_contract.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_scan_diversity.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_scope_resolver.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_scoring.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_scoring_edge_cases.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_self_command.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_signal_contract.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_signal_thresholds.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_signal_utils.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_smoke_real_repos.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_study_infrastructure.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_suppression.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_telemetry.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_test_polarity_deficit.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_timeline.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_trend_chart.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_trend_command_history.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_ts_signals_phase2.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_ts_signals_phase3.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_tsjs_alias_resolution.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_tsjs_barrel_resolution.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_tsjs_import_graph_relative.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_tsjs_rule_circular_module_detection.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_tsjs_rule_cross_package_import_ban.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_tsjs_rule_layer_leak_detection.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_tsjs_rule_ui_to_infra_import_ban.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_tsjs_workspace_boundaries.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_typescript_parser.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/tests/test_workspace_value.py +0 -0
- {drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/uv.lock +0 -0
|
@@ -19,7 +19,7 @@ repos:
|
|
|
19
19
|
rev: v1.5.0
|
|
20
20
|
hooks:
|
|
21
21
|
- id: detect-secrets
|
|
22
|
-
exclude: "(^|/)(tests/test_hardcoded_secret\\.py|tests/test_insecure_default\\.py|tests/golden/corpus_snapshot\\.json|\\.github/instructions/drift-release-automation\\.instructions\\.md)$"
|
|
22
|
+
exclude: "(^|/)(tests/test_hardcoded_secret\\.py|tests/test_insecure_default\\.py|tests/golden/corpus_snapshot\\.json|src/drift/negative_context\\.py|\\.github/instructions/drift-release-automation\\.instructions\\.md)$"
|
|
23
23
|
args:
|
|
24
24
|
- --baseline
|
|
25
25
|
- .secrets.baseline
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
- Standardize drift score precision to 3 decimal places across all surfaces (copilot-context, export-context, API, raw JSON) to eliminate score inconsistency between commands (#124).
|
|
24
24
|
- Fix MCP schema `--schema` output leaking `type: "Annotated"` for all parameters instead of actual JSON Schema types (`string`, `integer`, `boolean`) by properly unwrapping `typing.Annotated` wrappers (#126).
|
|
25
25
|
- Negative context generators now use actual variable names, endpoint names, and file:line references from findings instead of generic template code in DO NOT / INSTEAD examples (#127).
|
|
26
|
+
- Unblock CI by making MCP thread-offloaded tool returns explicit `str` for mypy across Python 3.11-3.13 and excluding known secret-like test fixtures (`tests/test_insecure_default.py`, `tests/golden/corpus_snapshot.json`) plus template-heavy `src/drift/negative_context.py` from detect-secrets hook false positives.
|
|
26
27
|
- Reduce DIA false positives by requiring structural context for plain markdown slash-tokens (e.g. `async/`, `scan/`, `connectors/`) before emitting missing-directory findings, while preserving explicit path references in code spans/backticks (#121).
|
|
27
28
|
- Add trailing newlines in CSV formatter and CSV tests to satisfy lint gate requirements and keep pre-push checks green.
|
|
28
29
|
- Surface file I/O errors in `analyze`, `check`, and `scan` commands as structured `DRIFT-2003` errors with exit code 2 instead of unhandled `OSError` tracebacks.
|
|
@@ -44,7 +45,7 @@
|
|
|
44
45
|
- Map git-root-relative paths to repo-relative paths in `analyze_diff` and `parse_git_history` so `--repo` on nested subdirectories no longer leaks parent-repo file scope (#117).
|
|
45
46
|
- `drift self` error guidance now suggests valid next actions (`drift scan`/`drift analyze`) instead of invalid `--repo` flag (#120).
|
|
46
47
|
|
|
47
|
-
## [2.4.
|
|
48
|
+
## [2.4.3] - 2026-04-04
|
|
48
49
|
|
|
49
50
|
Short version: Align release metadata with current project version.
|
|
50
51
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: drift-analyzer
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.4
|
|
4
4
|
Summary: Deterministic architectural drift detection for AI-accelerated Python repositories through cross-file coherence analysis
|
|
5
5
|
Project-URL: Homepage, https://mick-gsk.github.io/drift/
|
|
6
6
|
Project-URL: Repository, https://github.com/mick-gsk/drift
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> Deterministic architectural drift detection for AI-accelerated Python codebases. Drift is a static analyzer for architecture erosion analysis and cross-file coherence detection, covering pattern fragmentation, architecture violations, dependency cycles, mutant duplicates, and structural technical debt. No LLM in the detection pipeline.
|
|
4
4
|
|
|
5
|
-
Release status: v2.4.
|
|
5
|
+
Release status: v2.4.3
|
|
6
6
|
|
|
7
7
|
Package: drift-analyzer
|
|
8
8
|
Install: pip install -q drift-analyzer (add -q for quiet output, hiding verbose dependency chains)
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "drift-analyzer"
|
|
7
|
-
version = "2.4.
|
|
7
|
+
version = "2.4.4"
|
|
8
8
|
description = "Deterministic architectural drift detection for AI-accelerated Python repositories through cross-file coherence analysis"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -24,7 +24,9 @@ import json
|
|
|
24
24
|
import os
|
|
25
25
|
import re as _re
|
|
26
26
|
from pathlib import Path
|
|
27
|
-
from typing import Annotated, Any
|
|
27
|
+
from typing import Annotated, Any, cast
|
|
28
|
+
|
|
29
|
+
import anyio
|
|
28
30
|
|
|
29
31
|
MCPFastMCPImpl: Any
|
|
30
32
|
|
|
@@ -235,8 +237,7 @@ async def drift_scan(
|
|
|
235
237
|
error["tool"] = "drift_scan"
|
|
236
238
|
return json.dumps(error, default=str)
|
|
237
239
|
|
|
238
|
-
|
|
239
|
-
return payload
|
|
240
|
+
return cast(str, await anyio.to_thread.run_sync(_sync))
|
|
240
241
|
|
|
241
242
|
|
|
242
243
|
@mcp.tool()
|
|
@@ -300,8 +301,7 @@ async def drift_diff(
|
|
|
300
301
|
error["tool"] = "drift_diff"
|
|
301
302
|
return json.dumps(error, default=str)
|
|
302
303
|
|
|
303
|
-
|
|
304
|
-
return payload
|
|
304
|
+
return cast(str, await anyio.to_thread.run_sync(_sync))
|
|
305
305
|
|
|
306
306
|
|
|
307
307
|
@mcp.tool()
|
|
@@ -340,8 +340,7 @@ async def drift_explain(
|
|
|
340
340
|
error["tool"] = "drift_explain"
|
|
341
341
|
return json.dumps(error, default=str)
|
|
342
342
|
|
|
343
|
-
|
|
344
|
-
return payload
|
|
343
|
+
return cast(str, await anyio.to_thread.run_sync(_sync))
|
|
345
344
|
|
|
346
345
|
|
|
347
346
|
@mcp.tool()
|
|
@@ -408,8 +407,7 @@ async def drift_fix_plan(
|
|
|
408
407
|
error["tool"] = "drift_fix_plan"
|
|
409
408
|
return json.dumps(error, default=str)
|
|
410
409
|
|
|
411
|
-
|
|
412
|
-
return payload
|
|
410
|
+
return cast(str, await anyio.to_thread.run_sync(_sync))
|
|
413
411
|
|
|
414
412
|
|
|
415
413
|
@mcp.tool()
|
|
@@ -444,8 +442,7 @@ async def drift_validate(
|
|
|
444
442
|
error["tool"] = "drift_validate"
|
|
445
443
|
return json.dumps(error, default=str)
|
|
446
444
|
|
|
447
|
-
|
|
448
|
-
return payload
|
|
445
|
+
return cast(str, await anyio.to_thread.run_sync(_sync))
|
|
449
446
|
|
|
450
447
|
|
|
451
448
|
@mcp.tool()
|
|
@@ -507,8 +504,7 @@ async def drift_nudge(
|
|
|
507
504
|
error["tool"] = "drift_nudge"
|
|
508
505
|
return json.dumps(error, default=str)
|
|
509
506
|
|
|
510
|
-
|
|
511
|
-
return payload
|
|
507
|
+
return cast(str, await anyio.to_thread.run_sync(_sync))
|
|
512
508
|
|
|
513
509
|
|
|
514
510
|
@mcp.tool()
|
|
@@ -659,9 +655,11 @@ async def drift_negative_context(
|
|
|
659
655
|
return json.dumps(result, default=str)
|
|
660
656
|
|
|
661
657
|
try:
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
658
|
+
with anyio.fail_after(_NEGATIVE_CONTEXT_TIMEOUT_SECONDS):
|
|
659
|
+
return cast(
|
|
660
|
+
str,
|
|
661
|
+
await anyio.to_thread.run_sync(_sync, abandon_on_cancel=True),
|
|
662
|
+
)
|
|
665
663
|
except TimeoutError:
|
|
666
664
|
timeout_response = _negative_context_timeout_response(
|
|
667
665
|
path=path,
|
|
@@ -14,6 +14,22 @@ from drift.guardrails import (
|
|
|
14
14
|
guardrails_to_prompt_block,
|
|
15
15
|
)
|
|
16
16
|
|
|
17
|
+
|
|
18
|
+
def _make_runner() -> CliRunner:
|
|
19
|
+
"""Create a CliRunner compatible with older/newer Click versions."""
|
|
20
|
+
try:
|
|
21
|
+
return CliRunner(mix_stderr=False)
|
|
22
|
+
except TypeError:
|
|
23
|
+
return CliRunner()
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def _parse_json_from_output(output: str) -> dict:
|
|
27
|
+
"""Parse JSON payload even when noisy prelude text is present."""
|
|
28
|
+
start = output.find("{")
|
|
29
|
+
end = output.rfind("}")
|
|
30
|
+
assert start != -1 and end != -1 and end >= start, output
|
|
31
|
+
return json.loads(output[start : end + 1])
|
|
32
|
+
|
|
17
33
|
# ---------------------------------------------------------------------------
|
|
18
34
|
# API-layer tests
|
|
19
35
|
# ---------------------------------------------------------------------------
|
|
@@ -133,7 +133,10 @@ class TestJsonGoldenSnapshot:
|
|
|
133
133
|
"Run: pytest tests/test_golden_snapshot.py --update-golden"
|
|
134
134
|
)
|
|
135
135
|
|
|
136
|
-
expected =
|
|
136
|
+
expected = _canonical_json(
|
|
137
|
+
self.GOLDEN.read_text(encoding="utf-8"),
|
|
138
|
+
_strip_volatile,
|
|
139
|
+
)
|
|
137
140
|
if canonical != expected:
|
|
138
141
|
# Provide actionable diff summary
|
|
139
142
|
actual_data = json.loads(canonical)
|
|
@@ -171,7 +174,10 @@ class TestSarifGoldenSnapshot:
|
|
|
171
174
|
"Run: pytest tests/test_golden_snapshot.py --update-golden"
|
|
172
175
|
)
|
|
173
176
|
|
|
174
|
-
expected =
|
|
177
|
+
expected = _canonical_json(
|
|
178
|
+
self.GOLDEN.read_text(encoding="utf-8"),
|
|
179
|
+
_strip_volatile_sarif,
|
|
180
|
+
)
|
|
175
181
|
if canonical != expected:
|
|
176
182
|
actual_data = json.loads(canonical)
|
|
177
183
|
expected_data = json.loads(expected)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/ISSUE_TEMPLATE/contribution_proposal.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/ISSUE_TEMPLATE/study_finding_rating.md
RENAMED
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/ISSUE_TEMPLATE/study_repo_benchmark.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/instructions/drift-policy.instructions.md
RENAMED
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/instructions/drift-push-gates.instructions.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/_partials/bewertungs-taxonomie.md
RENAMED
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/_partials/issue-filing-external.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/drift-agent-workflow-test.prompt.md
RENAMED
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/drift-ai-integration.prompt.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/drift-signal-quality.prompt.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/.github/prompts/field-tests/drift-field-test.prompt.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/.drift-cache-golden/history.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/connectors/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/handlers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/handlers/orders.py
RENAMED
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/handlers/payments.py
RENAMED
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/handlers/shipping.py
RENAMED
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/models/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/models/enriched.py
RENAMED
|
File without changes
|
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/processors/__init__.py
RENAMED
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/processors/pricing.py
RENAMED
|
File without changes
|
{drift_analyzer-2.4.3 → drift_analyzer-2.4.4}/benchmarks/corpus/src/myapp/processors/transform.py
RENAMED
|
File without changes
|