drift-analyzer 2.9.2__tar.gz → 2.9.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.9.2 → drift_analyzer-2.9.4}/.githooks/pre-push +38 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/labels.yml +4 -0
- drift_analyzer-2.9.4/.github/prompts/drift-30-day-roi-plan.prompt.md +178 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/drift-actionability-review.prompt.md +36 -1
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/drift-first-run-dropoffs.prompt.md +37 -1
- drift_analyzer-2.9.4/.github/prompts/drift-integration-priorities.prompt.md +142 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/drift-positioning-review.prompt.md +36 -1
- drift_analyzer-2.9.4/.github/prompts/drift-repo-segment-fit.prompt.md +139 -0
- drift_analyzer-2.9.4/.github/prompts/drift-role-based-review.prompt.md +154 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/drift-shareability-review.prompt.md +36 -1
- drift_analyzer-2.9.4/.github/prompts/drift-signal-clarity.prompt.md +137 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/drift-trust-review.prompt.md +36 -1
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/drift-commit-push/SKILL.md +18 -4
- drift_analyzer-2.9.4/.github/workflows/issue-claim-timeout.yml +73 -0
- drift_analyzer-2.9.4/.github/workflows/issue-claim.yml +145 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/CHANGELOG.md +43 -1
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/CITATION.cff +1 -1
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/Makefile +7 -1
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/PKG-INFO +47 -4
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/README.md +46 -3
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/history.json +3 -4
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/oracle_repos.json +21 -1
- drift_analyzer-2.9.4/decisions/ADR-047-fix-plan-tty-rich-output.md +73 -0
- drift_analyzer-2.9.4/decisions/ADR-047-maz-security-tier-rich-output.md +63 -0
- drift_analyzer-2.9.4/decisions/ADR-048-eds-exposition-filter.md +66 -0
- drift_analyzer-2.9.4/decisions/ADR-049-pfs-canonical-code-snippet.md +73 -0
- drift_analyzer-2.9.4/decisions/ADR-050-avs-churn-urgency-gating.md +71 -0
- drift_analyzer-2.9.4/decisions/ADR-051-ccc-commit-context-test-template.md +76 -0
- drift_analyzer-2.9.4/decisions/ADR-052-pr-comment-output-format.md +88 -0
- drift_analyzer-2.9.4/decisions/ADR-053-import-external-reports.md +72 -0
- drift_analyzer-2.9.4/decisions/ADR-054-file-discovery-manifest-cache.md +53 -0
- drift_analyzer-2.9.4/decisions/ADR-055-dependency-aware-signal-cache-keying.md +63 -0
- drift_analyzer-2.9.4/decisions/ADR-056-hsc-fp-reduction-env-marker-fixtures.md +86 -0
- drift_analyzer-2.9.4/decisions/ADR-057-centralized-test-file-detection-and-context.md +54 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/MAINTAINER_RUNBOOK.md +1 -0
- drift_analyzer-2.9.4/docs/guides/first-week.md +119 -0
- drift_analyzer-2.9.4/docs/guides/troubleshooting.md +109 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/language-support-matrix.md +2 -2
- drift_analyzer-2.9.4/docs/reference/signals-cheatsheet.md +76 -0
- drift_analyzer-2.9.4/docs-site/guides/configuration-profiles.md +160 -0
- drift_analyzer-2.9.4/docs-site/guides/first-week.md +110 -0
- drift_analyzer-2.9.4/docs-site/guides/onboarding-troubleshooting.md +116 -0
- drift_analyzer-2.9.4/docs-site/reference/signals-cheatsheet.md +76 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/drift.example.yaml +4 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/drift.output.schema.json +27 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/drift.schema.json +399 -363
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/drift.yaml +12 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/llms.txt +1 -1
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/mkdocs.yml +5 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/pyproject.toml +1 -1
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/analyzer.py +3 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/api/brief.py +165 -70
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/api/nudge.py +1 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/api/validate.py +6 -1
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/cache.py +45 -1
- drift_analyzer-2.9.4/src/drift/ci_detect.py +74 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/cli.py +7 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/analyze.py +39 -2
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/badge.py +11 -2
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/check.py +29 -1
- drift_analyzer-2.9.4/src/drift/commands/ci.py +203 -0
- drift_analyzer-2.9.4/src/drift/commands/completions.py +46 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/explain.py +61 -4
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/fix_plan.py +33 -3
- drift_analyzer-2.9.4/src/drift/commands/import_cmd.py +178 -0
- drift_analyzer-2.9.4/src/drift/commands/setup.py +281 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/start.py +15 -2
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/status.py +42 -18
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/config.py +33 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/finding_context.py +6 -0
- drift_analyzer-2.9.4/src/drift/ingestion/external_report.py +183 -0
- drift_analyzer-2.9.4/src/drift/ingestion/file_discovery.py +490 -0
- drift_analyzer-2.9.4/src/drift/ingestion/test_detection.py +63 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/ingestion/ts_parser.py +92 -2
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/mcp_server.py +23 -14
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/models.py +22 -1
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/negative_context/__init__.py +2 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/output/csv_output.py +7 -1
- drift_analyzer-2.9.4/src/drift/output/fix_plan_rich.py +108 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/output/guided_output.py +112 -7
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/output/json_output.py +31 -2
- drift_analyzer-2.9.4/src/drift/output/junit_output.py +44 -0
- drift_analyzer-2.9.4/src/drift/output/llm_output.py +43 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/output/markdown_report.py +4 -2
- drift_analyzer-2.9.4/src/drift/output/pr_comment.py +166 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/output/prompt_generator.py +1 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/output/rich_output.py +121 -2
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/pipeline.py +115 -11
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/precision.py +8 -1
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/_utils.py +3 -18
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/architecture_violation.py +11 -2
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/base.py +3 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/co_change_coupling.py +31 -6
- drift_analyzer-2.9.4/src/drift/signals/cognitive_complexity.py +409 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/dead_code_accumulation.py +9 -1
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/explainability_deficit.py +21 -10
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/hardcoded_secret.py +218 -22
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/insecure_default.py +115 -15
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/missing_authorization.py +77 -8
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/naming_contract_violation.py +308 -337
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/pattern_fragmentation.py +29 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/type_safety_bypass.py +15 -3
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/conftest.py +138 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/ground_truth.py +1063 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/golden/corpus_snapshot.json +427 -206
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/golden/corpus_snapshot.sarif +183 -88
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_badge_command.py +25 -0
- drift_analyzer-2.9.4/tests/test_ci_detect.py +82 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_co_change_coupling.py +22 -1
- drift_analyzer-2.9.4/tests/test_completions.py +37 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_copilot_context_coverage.py +2 -0
- drift_analyzer-2.9.4/tests/test_coverage_boost_10_ast_parser.py +378 -0
- drift_analyzer-2.9.4/tests/test_coverage_boost_11_explain_cmd.py +140 -0
- drift_analyzer-2.9.4/tests/test_coverage_boost_12_scoring_engine.py +268 -0
- drift_analyzer-2.9.4/tests/test_coverage_boost_13_api_validate_scan.py +237 -0
- drift_analyzer-2.9.4/tests/test_coverage_boost_14_signal_helpers.py +356 -0
- drift_analyzer-2.9.4/tests/test_coverage_boost_15_signals_misc.py +395 -0
- drift_analyzer-2.9.4/tests/test_coverage_boost_16_cache_mds_ecd.py +489 -0
- drift_analyzer-2.9.4/tests/test_coverage_boost_17_misc.py +398 -0
- drift_analyzer-2.9.4/tests/test_coverage_boost_18_pipeline_diff_analyzer.py +452 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_coverage_boost_6_fix_plan_api.py +80 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_csv_output.py +21 -3
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_dead_code_accumulation.py +19 -1
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_file_discovery.py +65 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_finding_context.py +1 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_guided_mode.py +1 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_hardcoded_secret.py +67 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_hsc_helpers_coverage.py +39 -0
- drift_analyzer-2.9.4/tests/test_import_command.py +239 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_incremental.py +16 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_integration.py +21 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_json_output.py +42 -0
- drift_analyzer-2.9.4/tests/test_junit_output.py +128 -0
- drift_analyzer-2.9.4/tests/test_llm_output.py +112 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_missing_authorization.py +127 -4
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_naming_contract_violation.py +299 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_nbv_helpers_coverage.py +23 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_output_golden.py +2 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_pipeline_components.py +86 -1
- drift_analyzer-2.9.4/tests/test_pr_comment.py +141 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_signal_utils.py +3 -0
- drift_analyzer-2.9.4/tests/test_test_detection.py +26 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_ts_naming_consistency.py +7 -16
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_ts_signals_phase2.py +61 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_type_safety_bypass.py +57 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_typescript_parser.py +32 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_workspace_value.py +5 -3
- drift_analyzer-2.9.2/src/drift/commands/setup.py +0 -204
- drift_analyzer-2.9.2/src/drift/ingestion/file_discovery.py +0 -224
- drift_analyzer-2.9.2/src/drift/signals/cognitive_complexity.py +0 -220
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.detect-secrets.cfg +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.devcontainer/devcontainer.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.dockerignore +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.drift-baseline.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.githooks/commit-msg +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.githooks/pre-commit +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/AGENTS.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/CODEOWNERS +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/DISCUSSION_TEMPLATE/ideas.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/DISCUSSION_TEMPLATE/questions.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/FUNDING.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/ISSUE_TEMPLATE/contribution_proposal.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/ISSUE_TEMPLATE/doc_drift.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/ISSUE_TEMPLATE/false_positive.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/ISSUE_TEMPLATE/good_first_issue.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/ISSUE_TEMPLATE/real_repo_evaluation.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/ISSUE_TEMPLATE/study_finding_rating.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/ISSUE_TEMPLATE/study_repo_benchmark.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/ISSUE_TEMPLATE/study_self_analysis.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/copilot-instructions.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/dependabot.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/instructions/drift-context-routing.instructions.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/instructions/drift-policy.instructions.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/instructions/drift-push-gates.instructions.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/instructions/drift-quality-workflow.instructions.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/instructions/drift-release-automation.instructions.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/instructions/drift-release-mandatory.instructions.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/labeler.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/PR-Orchestrator.prompt.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/README.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/_partials/bewertungs-taxonomie.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/_partials/issue-filing-external.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/_partials/issue-filing.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/_partials/konventionen.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/_partials/review-checkliste.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/drift-agent-ux.prompt.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/drift-agent-workflow-test.prompt.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/drift-ai-integration.prompt.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/drift-ci-gate.prompt.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/drift-fix-loop.prompt.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/drift-fp-reduction.prompt.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/drift-onboarding.prompt.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/drift-signal-quality.prompt.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/field-tests/README.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/field-tests/drift-context-eval.prompt.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/field-tests/drift-field-test.prompt.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/field-tests/drift-finding-audit.prompt.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/release.prompt.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/release-drafter.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/repo-guard.blocklist +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/repo-root-allowlist +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/drift-adr-workflow/SKILL.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/drift-agent-prompt-authoring/SKILL.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/drift-effective-usage/SKILL.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/drift-ground-truth-fixture-development/SKILL.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/drift-pr-review/SKILL.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/drift-release/SKILL.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/drift-risk-audit-artifact-updates/SKILL.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/drift-security-triage/SKILL.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/drift-signal-development-full-lifecycle/SKILL.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/fix-failing-actions/SKILL.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/gif-creation/SKILL.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/gif-creation/references/windows-gif-workflow.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/posthog-analytics/SKILL.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/posthog-analytics/references/posthog-implementation.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/svg-distribution-design/SKILL.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/skills/svg-distribution-design/references/distribution-svg-guidelines.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/README.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/ci.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/codeql.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/dependency-review.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/doc-consistency.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/docker.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/docs.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/fp-oracle-audit.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/install-smoke.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/labeler.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/labels-sync.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/package-kpis.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/perf-regression-loop.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/publish.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/release-action.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/release.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/repo-guard.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/security-hygiene.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/stale.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/validate-release.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/welcome.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/workflows/workflow-sanity.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.gitignore +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.markdownlint-cli2.jsonc +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.pre-commit-config.yaml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.pre-commit-hooks.yaml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.secrets.baseline +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.shellcheckrc +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.vscode/mcp.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.vscode/settings.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.vscode/tasks.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/CODE_OF_CONDUCT.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/CONTRIBUTING.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/DEVELOPER.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/Dockerfile +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/Formula/drift-analyzer.rb +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/LICENSE +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/POLICY.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/ROADMAP.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/SECURITY.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/SUPPORT.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/action.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/01611cd8233f2aa70c571f9e8c4ebdc2.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/1e7cd9a98b3290c41e5e10dec26e35ea.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/1f2d1a22e9791d9b2f3078612aa0f786.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/226ac9d816e43df5ddc2a1f105ddc628.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/2a5d4c9a80c6ea7a6d71ccf7c05c4ad2.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/2baf118e8a0d13742b95d19cfcfa2e02.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/3ea99d008b13c9720d79eb1aa60ee1ee.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/4a8a215b34caf38fa4855682a7e35be5.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/59d0360c97970456beb61a677362a68a.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/5e610090f38b99b552831f348dfbdfff.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/6186fe9a4dbfaeaef44654495863e533.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/78756d46421bd849ad69b53db46cd81b.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/cb6867a7470df13c2227fef55eb91904.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/ce1b0ac9777a398ce99594f664bcd978.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/d784163017a2693256dad9b1540716ae.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/e174dbe14bbe023518432fa603b5f4b1.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/e3b0c44298fc1c149afbf4c8996fb924.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/e6c7265a3e1a5c08fcae73860b077763.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/e914253ffba0b698dc7b3ca2da261100.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/parse/ec975ed99470aaa822b6caf0fa31ffc6.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/architecture_violation_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/broad_exception_monoculture_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/bypass_accumulation_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/circular_import_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/co_change_coupling_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/cognitive_complexity_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/cohesion_deficit_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/dead_code_accumulation_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/doc_impl_drift_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/exception_contract_drift_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/explainability_deficit_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/fan_out_explosion_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/guard_clause_deficit_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/hardcoded_secret_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/insecure_default_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/missing_authorization_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/mutant_duplicate_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/naming_contract_violation_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/pattern_fragmentation_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/phantom_reference_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/system_misalignment_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/temporal_volatility_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/test_polarity_deficit_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/ts_architecture_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/.drift-cache-golden/signals/type_safety_bypass_fe095dfc4f508032_e2453b10bd54639f593783c294ce3751.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/README.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/manifest.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/connectors/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/connectors/db.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/handler_v1.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/handler_v2.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/handlers/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/handlers/auth.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/handlers/orders.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/handlers/payments.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/handlers/shipping.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/models/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/models/core.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/models/enriched.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/outlier_module.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/processors/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/processors/pricing.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/processors/transform.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/processors/validator.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/service_a.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/service_b.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/utils/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/utils/formatting.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/utils/helpers.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/src/myapp/utils/naming.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/tests/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/benchmarks/corpus/tests/test_api.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/conda.recipe/meta.yaml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/CHANGELOG.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/METRICS.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/README.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/broad_exception_001/broad_exception_001.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/broad_exception_001/cache.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/broad_exception_001/db.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/broad_exception_001/queue.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/broad_exception_002/broad_exception_002.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/broad_exception_002/ftp_client.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/broad_exception_002/http_client.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/broad_exception_002/smtp_client.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/explainability_deficit_001.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/explainability_deficit_001.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/explainability_deficit_002.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/explainability_deficit_002.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/guard_clause_deficit_001.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/guard_clause_deficit_001.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/guard_clause_deficit_002.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/guard_clause_deficit_002.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/mutant_duplicate_001/formatters.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/mutant_duplicate_001/money.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/mutant_duplicate_001/mutant_duplicate_001.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/mutant_duplicate_002/customer_service.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/mutant_duplicate_002/mutant_duplicate_002.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/mutant_duplicate_002/user_service.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/mutant_duplicate_003/module_a.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/mutant_duplicate_003/module_b.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/mutant_duplicate_003/module_c.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/mutant_duplicate_003/mutant_duplicate_003.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/naming_violation_001.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/naming_violation_001.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/pattern_fragmentation_001/handler_a.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/pattern_fragmentation_001/handler_b.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/pattern_fragmentation_001/handler_c.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/pattern_fragmentation_001/pattern_fragmentation_001.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/pattern_fragmentation_002/api_validator.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/pattern_fragmentation_002/form_validator.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/pattern_fragmentation_002/input_validator.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/pattern_fragmentation_002/pattern_fragmentation_002.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/patterns/pattern_fragmentation_002/payload_validator.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/data/negative-patterns/schema.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-010-finding-context-triage-policy.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-011-csv-output-format.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-012-copilot-context-actionability-pfs-nbv.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-013-scan-signal-filtering-and-per-signal-cap.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-014-mds-precision-first-scoring-readiness.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-016-security-signals-wave2-calibration.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-017-dia-false-positive-reduction.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-018-avs-co-change-precision-hardening.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-019-pfs-return-pattern-extraction.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-020-agent-fix-loop-optimization.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-021-batch-dominant-fix-loop-orchestration.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-022-mcp-session-management.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-023-canonical-examples-in-agent-output.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-024-next-step-contracts.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-025-orchestration-layer-workflow-plans-handoffs.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-025-task-queue-leasing.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-026-a2a-agent-card-http-serve.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-027-finding-status-for-suppression-transparency.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-028-analyzer-warning-channel.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-029-agent-effectiveness-features.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-029-preflight-diagnosis-and-markdown-report-export.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-030-cod-avs-eds-fp-reduction.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-031-agent-context-layer.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-032-hard-completion-gate-false-fix-relocation.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-033-phantom-reference-signal.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-034-causal-attribution.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-035-per-repo-signal-calibration.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-036-avs-models-omnilayer-and-configurable-dirs.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-037-dia-configurable-auxiliary-dirs-and-keywords.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-038-mds-name-distance-and-protocol-awareness.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-039-activate-agent-safety-signals.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-039-ast-logical-location.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-040-phr-import-resolver.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-040-signal-scoring-promotion-phr-hsc-foe.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-041-phr-runtime-validation.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-041-scoring-dampening-and-breadth-cap.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-042-schema-evolution-and-finding-id.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-043-guided-mode-status-setup.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-044-architecture-boundary-presets.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-045-mcp-http-transport.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/ADR-046-markdown-output-format.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/templates/README.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/templates/adr-template.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/decisions/templates/signal-design-template.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/EPISTEMICS.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/OUTREACH.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/PRODUCT_STRATEGY.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/REPOSITORY_GOVERNANCE.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/ROOT_POLICY.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/STUDY.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/adr/001-deterministic-analysis-pipeline.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/adr/002-ast-fingerprinting-for-patterns.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/adr/003-composite-scoring-model.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/adr/004-subprocess-git-parsing.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/adr/005-delta-first-score-interpretation.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/adr/006-context-tagging.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/adr/007-consistency-proxy-signals.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/adr/008-intention-contract-proxy-signals.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/assets/banner.svg +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/concepts/baseline.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/concepts/diagnosis-vs-navigation.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/concepts/scoring.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/concepts/signals.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/distribution/README.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/distribution/awesome-submissions.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/distribution/channel-rules.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/distribution/devto-hashnode-5-repos.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/distribution/ide-discovery-mvp-spec.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/distribution/website-post-checklist.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/distribution/week1-rollout-runbook.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/drift-architecture-erosion-analysis.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/guides/agent-workflow.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/guides/ci-integration.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/guides/health-over-time.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/guides/quickstart.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/index.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/language-roadmap.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/migration.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/python-baseline.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/python-rule-inventory.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/reference/commands.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs/reference/configuration.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/algorithms/deep-dive.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/algorithms/scoring.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/algorithms/signals.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/assets/logo.svg +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/assets/og-image.svg +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/assets/readme-overview.svg +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/benchmarking.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/case-studies/django.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/case-studies/fastapi.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/case-studies/index.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/case-studies/paramiko.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/case-studies/pydantic.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/changelog.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/comparisons/drift-vs-architecture-conformance.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/comparisons/drift-vs-ruff.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/comparisons/drift-vs-semgrep-codeql.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/comparisons/index.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/contributing.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/drift-bot.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/faq.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/getting-started/configuration.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/getting-started/finding-triage.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/getting-started/installation.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/getting-started/prompts.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/getting-started/quickstart.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/getting-started/team-rollout.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/getting-started/troubleshooting.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/getting-started/vibe-coding-problems.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/glossary.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/guides/configuration-levels.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/guides/cursor-mcp-setup.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/guides/feedback-calibration.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/guides/guided-mode.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/guides/negative-context-agents.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/index.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/integrations.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/javascripts/prove-viewer.js +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/product/example-findings.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/product/press-brand.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/product-strategy.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/prove-it.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/api-outputs.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/commands.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/negative-context.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/performance.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/avs.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/bat.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/bem.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/ccc.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/cir.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/cod.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/cxs.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/dca.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/dia.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/ecm.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/eds.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/foe.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/gcd.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/hsc.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/isd.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/maz.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/mds.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/nbv.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/pfs.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/phr.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/sms.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/tpd.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/tsa.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/reference/signals/tvs.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/roadmap-poll.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/stability.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/start-here.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/study.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/stylesheets/drift.css +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/trust-evidence.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/use-cases/architectural-linter-ai-teams.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/use-cases/architecture-drift-python.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/use-cases/ci-architecture-checks-sarif.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/use-cases/index.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/use-cases/technical-debt-ai-codebases.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/docs-site/what-is-architectural-drift.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/drift-guided-mode-prd-v2.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/demo-project/README.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/demo-project/api/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/demo-project/api/routes.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/demo-project/db/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/demo-project/db/models.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/demo-project/services/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/demo-project/services/email_service.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/demo-project/services/order_service.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/demo-project/services/user_service.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/demo-project/utils/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/demo-project/utils/validators.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/demo_fastapi.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/drift-check.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/package-kpis/README.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/package-kpis/defects.csv +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/package-kpis/kpi-thresholds.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/package-kpis/usage.csv +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/vibe-coding/README.md +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/vibe-coding/claude_desktop_config.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/vibe-coding/drift-gate.yml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/vibe-coding/drift.yaml +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/vibe-coding/mcp.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/vibe-coding/pre-push +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/vibe-coding/setup-baseline.sh +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/examples/vibe-coding/weekly-check.sh +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/hooks/docs_version.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/overrides/404.html +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/overrides/home.html +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/overrides/main.html +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/__main__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/analyzers/typescript/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/analyzers/typescript/_path_utils.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/analyzers/typescript/alias_resolver.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/analyzers/typescript/barrel_resolver.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/analyzers/typescript/import_graph.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/analyzers/typescript/shared.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/analyzers/typescript/workspace_boundaries.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/api/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/api/_config.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/api/_util.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/api/diff.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/api/drift_map_api.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/api/explain.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/api/fix_plan.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/api/neg_context.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/api/scan.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/api_helpers.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/attribution.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/baseline.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/calibration/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/calibration/feedback.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/calibration/github_correlator.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/calibration/history.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/calibration/outcome_correlator.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/calibration/profile_builder.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/calibration/threshold_adapter.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/_io.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/baseline.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/brief.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/calibrate.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/config_cmd.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/copilot_context.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/diff_cmd.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/export_context.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/feedback.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/init_cmd.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/mcp.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/patterns.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/precision_cmd.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/preset.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/roi_estimate.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/scan.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/self_analyze.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/serve.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/session_report.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/timeline.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/trend.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/validate_cmd.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/visualize.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/commands/watch.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/context_tags.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/copilot_context.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/embeddings.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/errors.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/finding_rendering.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/guardrails.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/incremental.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/ingestion/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/ingestion/ast_parser.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/ingestion/git_blame.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/ingestion/git_history.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/ingestion/github_api.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/logical_location.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/mcp_catalog.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/mcp_enrichment.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/mcp_orchestration.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/negative_context/core.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/negative_context/export.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/negative_context/generators.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/negative_context.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/negative_context_export.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/next_step_contract.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/output/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/output/agent_tasks.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/output/badge_svg.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/output/github_format.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/output/grouping.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/output/session_renderer.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/output/tui_renderer.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/plugins.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/preflight.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/profiles.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/py.typed +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/quality_gate.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/recommendations.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/response_shaping.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/rules/tsjs/circular_module_detection.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/rules/tsjs/cross_package_import_ban.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/rules/tsjs/layer_leak_detection.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/rules/tsjs/ui_to_infra_import_ban.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/scope_resolver.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/scoring/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/scoring/engine.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/serve/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/serve/a2a_router.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/serve/agent_card.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/serve/app.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/serve/models.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/session.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signal_mapping.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signal_registry.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/broad_exception_monoculture.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/bypass_accumulation.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/circular_import.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/cohesion_deficit.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/doc_impl_drift.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/exception_contract_drift.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/fan_out_explosion.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/guard_clause_deficit.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/mutant_duplicates.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/phantom_reference.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/system_misalignment.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/temporal_volatility.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/test_polarity_deficit.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/signals/ts_architecture.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/situational_hints.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/suppression.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/task_graph.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/task_spec.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/telemetry.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/timeline.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/tool_metadata.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/trend_history.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/src/drift/types.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/__init__.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/study_samples/debt_correlation.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/study_samples/rater_matrix.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/study_samples/self_analysis_reports.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_alias_resolution/src/app.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_alias_resolution/src/core/logger.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_alias_resolution/src/shared/config.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_alias_resolution/tsconfig.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_alias_resolution_extends/src/app.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_alias_resolution_extends/src/base/logger.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_alias_resolution_extends/src/leaf/feature.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_alias_resolution_extends/src/mid/util.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_alias_resolution_extends/src/override/config.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_alias_resolution_extends/src/shared/config.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_alias_resolution_extends/tsconfig.base.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_alias_resolution_extends/tsconfig.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_alias_resolution_extends/tsconfig.mid.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_barrel_resolution/src/app.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_barrel_resolution/src/app_tsx.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_barrel_resolution/src/button.tsx +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_barrel_resolution/src/index.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_barrel_resolution/src/view/card.tsx +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_barrel_resolution/src/view/index.tsx +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_graph_relative/app.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_graph_relative/components/button.tsx +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_graph_relative/components/index.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_graph_relative/lib/util.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_cross_package/negative/cross_package_import_ban.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_cross_package/negative/package.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_cross_package/negative/packages/app/src/main.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_cross_package/negative/packages/ui/src/button.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_cross_package/positive/cross_package_import_ban.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_cross_package/positive/package.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_cross_package/positive/packages/app/src/main.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_cross_package/positive/packages/ui/src/button.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_cycles/negative/src/a.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_cycles/negative/src/b.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_cycles/positive/src/a.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_cycles/positive/src/b.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_layer_leak/negative/layer_leak_detection.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_layer_leak/negative/src/infra/storage.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_layer_leak/negative/src/ui/view.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_layer_leak/positive/layer_leak_detection.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_layer_leak/positive/src/infra/storage.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_layer_leak/positive/src/ui/view.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_ui_to_infra/negative/src/infra/storage.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_ui_to_infra/negative/src/ui/components/button.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_ui_to_infra/negative/src/ui/view.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_ui_to_infra/negative/ui_to_infra_import_ban.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_ui_to_infra/positive/src/infra/storage.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_ui_to_infra/positive/src/ui/view.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_rule_ui_to_infra/positive/ui_to_infra_import_ban.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_workspace_boundaries/package.json +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_workspace_boundaries/packages/app/src/main.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_workspace_boundaries/packages/ui/src/button.tsx +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/tsjs_workspace_boundaries/vite.config.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/typescript/export_detection/exports.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/typescript/export_detection/no_exports.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/typescript/interface_extraction/complex_interfaces.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/typescript/interface_extraction/empty.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/typescript/interface_extraction/user_service.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/typescript/naming_consistency/enum_mixed_casing.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/typescript/naming_consistency/generics_mixed.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/typescript/naming_consistency/i_prefix_dominant.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/typescript/naming_consistency/no_prefix_consistent.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/typescript/react_hooks/clean_effect.tsx +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/typescript/react_hooks/missing_deps.tsx +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/typescript/react_hooks/services/auth.tsx +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/typescript/react_hooks/stale_closure.tsx +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/typescript/type_safety_bypass/clean.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/typescript/type_safety_bypass/moderate.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/fixtures/typescript/type_safety_bypass/severe.ts +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_a2a_serve.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_ablation.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_advisory_semantic.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_agent_context_formats.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_agent_context_layer.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_agent_effectiveness.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_agent_native_cli.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_agent_tasks.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_ai_tool_indicators.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_analysis_degradation.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_analysis_edge_cases.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_api_and_ts_arch_boost.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_api_helpers_coverage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_api_quick_wins_coverage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_architecture_violation.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_ast_parser.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_ast_parser_helpers_coverage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_attribution.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_audit_content_validation.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_avs_enhanced.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_avs_helpers_coverage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_avs_missing_patterns_evidence.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_avs_mutations.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_baseline.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_batch_metadata.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_benchmark_label_keys.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_benchmark_structure.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_brief.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_bypass_accumulation.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_cache_resilience.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_calibrate_precision_self_setup.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_calibration.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_ci_reality.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_circular_import.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_cli_runtime.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_cognitive_complexity.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_cohesion_deficit.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_command_and_router_coverage_boost2.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_compat.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_config.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_config_schema.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_config_validate.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_consistency_proxies.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_console_scripts.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_context_tags.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_copilot_context_actionability.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_copilot_ctx_branches.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_coverage_boost_1_embeddings.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_coverage_boost_2_git_blame.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_coverage_boost_3_alias_resolver.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_coverage_boost_4_scope_resolver.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_coverage_boost_5_calibrate_cli.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_coverage_boost_7_check_cmd.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_coverage_boost_8_analyze_cmd.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_coverage_boost_9_negative_context.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_coverage_pipeline_and_helpers.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_coverage_signals.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_delta_first.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_dia_enhanced.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_dia_helpers_coverage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_diagnostic_hypothesis_contract.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_dx_features.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_ecm_coverage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_eds_api_corresponding_tests.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_embeddings.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_enterprise_governance_assets.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_exception_contract_drift.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_fan_out_explosion.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_fetch_github_usage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_fetch_pypistats.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_fix_actionability.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_gcd_ecd_helpers_coverage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_git_history_edge_cases.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_git_history_safety.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_github_api_correlator_and_export.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_golden_snapshot.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_grouping.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_guard_clause_deficit.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_init_cmd.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_insecure_default.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_issue_138_139_140.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_logical_location.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_low_modules_boost3.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_malformed_history.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_mcp_copilot.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_mcp_hardening.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_mcp_orchestration_coverage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_mcp_server_task_tools_boost.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_mds_coverage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_mds_helpers_coverage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_mirofish_signal_improvements.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_model_consistency.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_module_entrypoint.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_mutant_duplicates_edge_cases.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_negative_context.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_negative_context_coverage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_negative_context_export.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_negative_context_legacy_module.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_nudge.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_orchestration_extensions.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_orchestration_pipeline_coverage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_output_minimal_and_signal_labels.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_package_kpis.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_parse_file_resilience.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_path_overrides.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_pattern_fragmentation.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_patterns_command.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_phantom_reference.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_phr_coverage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_phr_rich_coverage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_plugin_api.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_policy_gate.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_precision_coverage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_precision_recall.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_preflight_and_report.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_preset.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_property_based.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_quality_gate.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_recommendations.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_recommendations_edge_cases.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_release_automation.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_release_discipline.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_repo_hygiene.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_rich_output_boost.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_roi_estimate.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_rule_ids.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_sarif_contract.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_scan_diversity.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_scope_resolver.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_scope_resolver_extended.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_scoring.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_scoring_edge_cases.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_scoring_engine_coverage.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_self_command.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_session.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_session_report.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_setup_watch_boost.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_signal_contract.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_signal_crash_guard.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_signal_thresholds.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_situational_hints.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_smoke_real_repos.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_study_infrastructure.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_suppression.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_task_graph.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_task_graph_contracts_types.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_task_queue.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_task_spec.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_telemetry.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_test_polarity_deficit.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_timeline.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_timeline_command.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_tool_metadata.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_trend_chart.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_trend_command_history.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_ts_export_detection.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_ts_interface_extraction.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_ts_react_hooks.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_ts_signals_phase3.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_tsjs_alias_resolution.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_tsjs_barrel_resolution.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_tsjs_import_graph_relative.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_tsjs_rule_circular_module_detection.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_tsjs_rule_cross_package_import_ban.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_tsjs_rule_layer_leak_detection.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_tsjs_rule_ui_to_infra_import_ban.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_tsjs_workspace_boundaries.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_visualize.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/tests/test_watch.py +0 -0
- {drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/uv.lock +0 -0
|
@@ -29,6 +29,9 @@ if [ -z "$PYTHON_CMD" ]; then
|
|
|
29
29
|
exit 1
|
|
30
30
|
fi
|
|
31
31
|
|
|
32
|
+
GIT_DIR_PATH=$(git rev-parse --git-dir 2>/dev/null || echo ".git")
|
|
33
|
+
LAST_SUCCESS_SHA_FILE="$GIT_DIR_PATH/.drift-prepush-last-success"
|
|
34
|
+
|
|
32
35
|
# Escape hatches (export VAR=1 to skip a specific gate):
|
|
33
36
|
# DRIFT_SKIP_CHANGELOG, DRIFT_SKIP_VERSION_BUMP,
|
|
34
37
|
# DRIFT_SKIP_LOCKFILE, DRIFT_SKIP_DOCSTRING, DRIFT_SKIP_RISK_AUDIT
|
|
@@ -454,6 +457,37 @@ else
|
|
|
454
457
|
enforce_risk_audit_gate
|
|
455
458
|
fi
|
|
456
459
|
|
|
460
|
+
can_reuse_previous_local_ci_success=0
|
|
461
|
+
current_head_sha=$(git rev-parse HEAD 2>/dev/null || true)
|
|
462
|
+
if [ -n "$current_head_sha" ] && [ -f "$LAST_SUCCESS_SHA_FILE" ]; then
|
|
463
|
+
last_success_sha=$(cat "$LAST_SUCCESS_SHA_FILE" | tr -d '\r\n')
|
|
464
|
+
if [ "$last_success_sha" = "$current_head_sha" ]; then
|
|
465
|
+
all_updates_match_head=1
|
|
466
|
+
while IFS='|' read -r local_sha remote_sha; do
|
|
467
|
+
if [ -z "$local_sha" ] || [ -z "$remote_sha" ]; then
|
|
468
|
+
continue
|
|
469
|
+
fi
|
|
470
|
+
if [ "$local_sha" != "$current_head_sha" ]; then
|
|
471
|
+
all_updates_match_head=0
|
|
472
|
+
break
|
|
473
|
+
fi
|
|
474
|
+
done <<EOF
|
|
475
|
+
$push_ref_updates
|
|
476
|
+
EOF
|
|
477
|
+
|
|
478
|
+
if [ "$all_updates_match_head" -eq 1 ]; then
|
|
479
|
+
can_reuse_previous_local_ci_success=1
|
|
480
|
+
fi
|
|
481
|
+
fi
|
|
482
|
+
fi
|
|
483
|
+
|
|
484
|
+
if [ "$can_reuse_previous_local_ci_success" -eq 1 ]; then
|
|
485
|
+
echo ">>> [pre-push] Reusing successful local CI checks for unchanged commit $current_head_sha."
|
|
486
|
+
echo ">>> [pre-push] Gates were re-evaluated; expensive checks are skipped for this retry."
|
|
487
|
+
echo ">>> [pre-push] Push continues."
|
|
488
|
+
exit 0
|
|
489
|
+
fi
|
|
490
|
+
|
|
457
491
|
echo ">>> [pre-push] Starting local CI checks..."
|
|
458
492
|
|
|
459
493
|
# Unset git context variables that git injects when running hooks.
|
|
@@ -499,4 +533,8 @@ fi
|
|
|
499
533
|
echo ">>> [5/6] Running self-analysis..."
|
|
500
534
|
drift analyze --repo . --format json --exit-zero > /dev/null
|
|
501
535
|
|
|
536
|
+
if [ -n "$current_head_sha" ]; then
|
|
537
|
+
printf "%s\n" "$current_head_sha" > "$LAST_SUCCESS_SHA_FILE"
|
|
538
|
+
fi
|
|
539
|
+
|
|
502
540
|
echo ">>> [pre-push] All checks passed. Push continues."
|
|
@@ -10,6 +10,10 @@
|
|
|
10
10
|
color: "0e8a16"
|
|
11
11
|
description: Extra attention is needed
|
|
12
12
|
|
|
13
|
+
- name: claimed
|
|
14
|
+
color: "0E8A16"
|
|
15
|
+
description: Issue is reserved for one confirmed contributor
|
|
16
|
+
|
|
13
17
|
- name: needs reproduction
|
|
14
18
|
color: "fbca04"
|
|
15
19
|
description: A minimal reproducing case is needed before work can start
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Drift 30-Day ROI Plan"
|
|
3
|
+
description: "Erstellt eine belastbare, priorisierte Liste von Drift-Verbesserungen mit maximalem ROI innerhalb von 30 Tagen. Fokus auf First-Run-Value, Adoption, Vertrauen und Handlungsfähigkeit."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Drift 30-Day ROI Plan
|
|
7
|
+
|
|
8
|
+
Du erstellst eine belastbare Priorisierung der Drift-Verbesserungen mit dem größten kombinierten Effekt auf First-Run-Value, Adoption, Vertrauen und Handlungsfähigkeit innerhalb von 30 Tagen.
|
|
9
|
+
|
|
10
|
+
> **Pflicht:** Vor Ausführung dieses Prompts das Drift Policy Gate durchlaufen
|
|
11
|
+
> (siehe `.github/prompts/_partials/konventionen.md` und `.github/instructions/drift-policy.instructions.md`).
|
|
12
|
+
|
|
13
|
+
## Relevante Referenzen
|
|
14
|
+
|
|
15
|
+
- **Instruction:** `.github/instructions/drift-policy.instructions.md`
|
|
16
|
+
- **Bewertungssystem:** `.github/prompts/_partials/bewertungs-taxonomie.md`
|
|
17
|
+
- **Issue-Filing:** `.github/prompts/_partials/issue-filing.md`
|
|
18
|
+
- **Verwandte Prompts:** Alle anderen Drift-Review-Prompts (`drift-first-run-dropoffs.prompt.md`, `drift-actionability-review.prompt.md`, `drift-shareability-review.prompt.md`, `drift-positioning-review.prompt.md`, `drift-trust-review.prompt.md`, `drift-signal-clarity.prompt.md`, `drift-integration-priorities.prompt.md`, `drift-repo-segment-fit.prompt.md`, `drift-role-based-review.prompt.md`)
|
|
19
|
+
- **Roadmap:** `ROADMAP.md`
|
|
20
|
+
- **Backlog:** `.internal/BACKLOG.md`
|
|
21
|
+
|
|
22
|
+
## Arbeitsmodus
|
|
23
|
+
|
|
24
|
+
- Bewerte Maßnahmen nach Impact, Aufwand, Risiko, Abhängigkeiten und Zeit bis Wirkung.
|
|
25
|
+
- Bevorzuge wenige hochwirksame Hebel statt vieler kleiner Optimierungen.
|
|
26
|
+
- Keine Wunschliste — ein realistischer, umsetzbarer Plan.
|
|
27
|
+
- Berücksichtige bestehende Roadmap und Backlog.
|
|
28
|
+
|
|
29
|
+
## Ziel
|
|
30
|
+
|
|
31
|
+
Liefere einen konkreten 30-Tage-Umsetzungsplan für Drift, der die wirksamsten Verbesserungen in der richtigen Reihenfolge priorisiert.
|
|
32
|
+
|
|
33
|
+
## Erfolgskriterien
|
|
34
|
+
|
|
35
|
+
Die Aufgabe ist erst abgeschlossen, wenn du beantworten kannst:
|
|
36
|
+
- Welche Maßnahme hätte den höchsten Gesamthebel?
|
|
37
|
+
- Welche Maßnahme wäre der beste kleine Einstieg?
|
|
38
|
+
- Welche Maßnahme würde am meisten Vertrauen schaffen?
|
|
39
|
+
- Welche Maßnahme würde Adoption am stärksten erhöhen?
|
|
40
|
+
- Welche Maßnahme wäre verführerisch, aber aktuell falsch priorisiert?
|
|
41
|
+
|
|
42
|
+
## Arbeitsregeln
|
|
43
|
+
|
|
44
|
+
- Konsolidiere relevante Schwächen über Produkt, Output, Doku, Workflow, Vertrauen und Adoption.
|
|
45
|
+
- Jede Maßnahme muss realistisch in 30 Tagen umsetzbar sein.
|
|
46
|
+
- Falls Artefakte von Schwester-Prompts existieren, nutze sie als Input.
|
|
47
|
+
- Keine allgemeinen Strategieempfehlungen — nur umsetzbare Drift-Maßnahmen.
|
|
48
|
+
- Unsicherheiten explizit benennen.
|
|
49
|
+
|
|
50
|
+
## Reasoning-Anforderungen
|
|
51
|
+
|
|
52
|
+
### Spannungsfelder
|
|
53
|
+
|
|
54
|
+
Navigiere aktiv folgende Spannungen — mache deine Abwägung transparent:
|
|
55
|
+
|
|
56
|
+
- **Kurzfristiger Quick Win vs. langfristiger Strukturhebel:** Ein Quick Win zeigt sofort Wirkung, baut aber keine Substanz auf. Ein Strukturhebel braucht Zeit, wirkt aber nachhaltiger. Priorisiere bewusst.
|
|
57
|
+
- **Vertrauen vs. Adoption:** Vertrauens-Maßnahmen (weniger FP, bessere Erklärungen) können Adoption verlangsamen (weniger aggressive Findings). Wie gehst du damit um?
|
|
58
|
+
- **Sichtbare vs. fundamentale Verbesserung:** Nutzer bemerken UI-Improvements sofort, aber Backend-Fixes können langfristig wichtiger sein. Wie balancierst du wahrgenommenen vs. realen Fortschritt?
|
|
59
|
+
|
|
60
|
+
### Vor-Schlussfolgerungs-Checks
|
|
61
|
+
|
|
62
|
+
Bevor du eine Maßnahme in den 30-Tage-Plan aufnimmst:
|
|
63
|
+
- Ist sie wirklich in 30 Tagen umsetzbar — oder sagst du dir „bestimmt machbar“ ohne echte Aufwandsschätzung?
|
|
64
|
+
- Welche versteckten Abhängigkeiten oder Vorarbeit erfordert die Maßnahme?
|
|
65
|
+
- Ist die erwartete Wirkung ein messbares Ergebnis oder nur ein gutes Gefühl?
|
|
66
|
+
|
|
67
|
+
### Konfidenz-Kalibrierung
|
|
68
|
+
|
|
69
|
+
Gib für den Gesamtplan an:
|
|
70
|
+
- **Plan-Konfidenz:** hoch / mittel / niedrig — dass der Plan als Ganzes umsetzbar und wirksam ist
|
|
71
|
+
- **Schwächstes Glied:** Welche einzelne Maßnahme hat die niedrigste Konfidenz und warum?
|
|
72
|
+
- **Plan B:** Was wäre der Kern-3-Maßnahmen-Plan, falls die Hälfte der Maßnahmen scheitert?
|
|
73
|
+
|
|
74
|
+
### Fehlerschluss-Wächter
|
|
75
|
+
|
|
76
|
+
Prüfe aktiv gegen:
|
|
77
|
+
- **Planungs-Optimismus:** Du planst als KI ohne Kontextwechsel, Meetings, Debugging und Unvorhergesehenes. Puffere realistisch.
|
|
78
|
+
- **Impact-Überschätzung:** „Verbessert Adoption um X%“ ist nicht messbar. Formuliere konkrete, beobachtbare Erfolgskriterien.
|
|
79
|
+
- **Vollständigkeits-Bias:** Ein 30-Tage-Plan mit 15 Maßnahmen ist kein Plan, sondern eine Überforderung. Weniger Maßnahmen, dafür tiefer durchdacht.
|
|
80
|
+
- **Recency Bias:** Priorisiere nicht nur, was dir gerade einfällt, sondern prüfe gegen die existierende Roadmap und den Backlog.
|
|
81
|
+
|
|
82
|
+
## Bewertungs-Labels
|
|
83
|
+
|
|
84
|
+
Verwende ausschließlich Labels aus `.github/prompts/_partials/bewertungs-taxonomie.md`:
|
|
85
|
+
|
|
86
|
+
- **Ergebnis-Bewertung:** `pass` / `review` / `fail`
|
|
87
|
+
- **Risiko-Level:** `low` / `medium` / `high` / `critical`
|
|
88
|
+
|
|
89
|
+
## Artefakte
|
|
90
|
+
|
|
91
|
+
Erstelle Artefakte unter `work_artifacts/roi_30_day_plan_<YYYY-MM-DD>/`:
|
|
92
|
+
|
|
93
|
+
1. `summary.md` — Gesamtbewertung
|
|
94
|
+
2. `ranked_initiatives.md` — Bewertete und geordnete Maßnahmen
|
|
95
|
+
3. `30_day_plan.md` — Konkreter Umsetzungsplan
|
|
96
|
+
|
|
97
|
+
## Workflow
|
|
98
|
+
|
|
99
|
+
### Phase 1: Schwächen konsolidieren
|
|
100
|
+
|
|
101
|
+
Sammle Drift-Verbesserungspotenziale aus:
|
|
102
|
+
- eigener Analyse von Produkt, CLI, Output, Doku, MCP
|
|
103
|
+
- vorhandenen `work_artifacts/` von Schwester-Prompts (falls verfügbar)
|
|
104
|
+
- `ROADMAP.md` und `.internal/BACKLOG.md`
|
|
105
|
+
- eigener Nutzungserfahrung
|
|
106
|
+
|
|
107
|
+
### Phase 2: Maßnahmen definieren
|
|
108
|
+
|
|
109
|
+
Erstelle eine Liste von 10 bis 15 realistischen Maßnahmen.
|
|
110
|
+
|
|
111
|
+
Für jede Maßnahme:
|
|
112
|
+
- Beschreibung
|
|
113
|
+
- Zielgröße: First-Run-Value / Adoption / Vertrauen / Handlungsfähigkeit
|
|
114
|
+
- Art: Produktarbeit / CLI / Output / MCP / Doku / Integration / Distribution
|
|
115
|
+
|
|
116
|
+
### Phase 3: Scoring
|
|
117
|
+
|
|
118
|
+
Bewerte jede Maßnahme in `ranked_initiatives.md`:
|
|
119
|
+
|
|
120
|
+
| Maßnahme | Zielgröße | Impact (1–5) | Aufwand (1–5) | Risiko (1–5) | Abhängigkeiten | Zeit bis Wirkung | Score | Kategorie |
|
|
121
|
+
|----------|----------|-------------|--------------|-------------|---------------|-----------------|-------|-----------|
|
|
122
|
+
| | | | | | | | | Quick Win / Mittelfristiger Hebel / Strategische Wette |
|
|
123
|
+
|
|
124
|
+
Score-Formel: `(Impact × 2) / (Aufwand + Risiko)`
|
|
125
|
+
|
|
126
|
+
### Phase 4: Reihenfolge und Abhängigkeiten
|
|
127
|
+
|
|
128
|
+
Ordne die Maßnahmen in eine realistische 30-Tage-Reihenfolge:
|
|
129
|
+
- Woche 1: Quick Wins mit sofortiger Wirkung
|
|
130
|
+
- Woche 2: Mittelfristige Hebel aufsetzen
|
|
131
|
+
- Woche 3: Größere Verbesserungen umsetzen
|
|
132
|
+
- Woche 4: Verfeinern, validieren, abschließen
|
|
133
|
+
|
|
134
|
+
Dokumentiere Abhängigkeiten zwischen Maßnahmen.
|
|
135
|
+
|
|
136
|
+
### Phase 5: 30-Tage-Plan
|
|
137
|
+
|
|
138
|
+
Erstelle `30_day_plan.md`:
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
## Woche 1: [Fokus]
|
|
142
|
+
- [ ] Maßnahme A — [Kurzbeschreibung]
|
|
143
|
+
- [ ] Maßnahme B — [Kurzbeschreibung]
|
|
144
|
+
|
|
145
|
+
## Woche 2: [Fokus]
|
|
146
|
+
- [ ] Maßnahme C — [Kurzbeschreibung]
|
|
147
|
+
...
|
|
148
|
+
|
|
149
|
+
## Woche 3: [Fokus]
|
|
150
|
+
...
|
|
151
|
+
|
|
152
|
+
## Woche 4: [Fokus]
|
|
153
|
+
...
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Phase 6: Negativfilter
|
|
157
|
+
|
|
158
|
+
Dokumentiere explizit:
|
|
159
|
+
- Maßnahmen, die verführerisch, aber aktuell falsch priorisiert wären
|
|
160
|
+
- Maßnahmen, die mehr Aufwand als Wirkung erzeugen
|
|
161
|
+
- Maßnahmen, die Drift komplexer machen, ohne Kernwert zu steigern
|
|
162
|
+
|
|
163
|
+
## Abschlussentscheidung
|
|
164
|
+
|
|
165
|
+
Liefere:
|
|
166
|
+
- den besten Quick Win
|
|
167
|
+
- den stärksten Vertrauenshebel
|
|
168
|
+
- den stärksten Adoptionshebel
|
|
169
|
+
- die verführerische, aber aktuell falsche Priorität
|
|
170
|
+
|
|
171
|
+
Zusätzlich:
|
|
172
|
+
1. **Steelman der Nicht-Handlung:** Formuliere das stärkste Argument dafür, in den nächsten 30 Tagen überhaupt nichts an den hier identifizierten Punkten zu ändern und stattdessen nur Kernentwicklung zu betreiben.
|
|
173
|
+
2. **Falsifikation:** Was wäre nach 30 Tagen beobachtbar, wenn der Plan gescheitert ist? Definiere konkrete Failure-Kriterien.
|
|
174
|
+
3. **Sequenz-Sensitivität:** Wie stark ändert sich das Gesamtergebnis, wenn du die Reihenfolge der Maßnahmen umkehrst? Sind Reihenfolge-Abhängigkeiten real oder kosmetisch?
|
|
175
|
+
4. **Konfidenz-Statement:** Wie sicher bist du, dass deine Top-3-Maßnahmen die richtigen sind? Was fehlt dir an Information?
|
|
176
|
+
|
|
177
|
+
Beantworte abschließend:
|
|
178
|
+
Wenn Drift in den nächsten 30 Tagen nur 3 Dinge umsetzen dürfte, welche wären das und warum?
|
{drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/drift-actionability-review.prompt.md
RENAMED
|
@@ -45,6 +45,37 @@ Die Aufgabe ist erst abgeschlossen, wenn du beantworten kannst:
|
|
|
45
45
|
- Analysiere echte Finding-Texte auf Klarheit, Priorisierung und Next-Step-Qualität.
|
|
46
46
|
- Keine allgemeinen Schreibtipps — nur Drift-spezifische Output-Verbesserungen.
|
|
47
47
|
|
|
48
|
+
## Reasoning-Anforderungen
|
|
49
|
+
|
|
50
|
+
### Spannungsfelder
|
|
51
|
+
|
|
52
|
+
Navigiere aktiv folgende Spannungen — mache deine Abwägung transparent:
|
|
53
|
+
|
|
54
|
+
- **Diagnosetiefe vs. Handlungsdruck:** Je tiefer die Analyse, desto weniger klar oft der nächste Schritt. Wo endet Diagnose und wo beginnt Handlungsfähigkeit?
|
|
55
|
+
- **Allgemeingültigkeit vs. Kontextspezifik:** Eine universelle Empfehlung trifft nie ganz. Eine kontextspezifische ist nicht portabel. Wo ist der Optimalpunkt?
|
|
56
|
+
- **Automatisierbarkeit vs. Urteilsbedarf:** Manche Findings brauchen menschliches Urteil. Ist das ein Mängel des Findings oder ein Merkmal des Problems?
|
|
57
|
+
|
|
58
|
+
### Vor-Schlussfolgerungs-Checks
|
|
59
|
+
|
|
60
|
+
Bevor du ein Finding als „nicht handlungsfähig“ klassifizierst:
|
|
61
|
+
- Liegt es am Finding-Text oder an der Natur des Problems? (Nicht jedes Problem hat eine einfache nächste Aktion.)
|
|
62
|
+
- Wäre das Finding für eine andere Rolle (Staff Engineer vs. Junior Dev) doch handlungsfähig?
|
|
63
|
+
- Verwechselst du „handlungsfähig“ mit „sofort automatisierbar“?
|
|
64
|
+
|
|
65
|
+
### Konfidenz-Kalibrierung
|
|
66
|
+
|
|
67
|
+
Gib für jede Actionability-Lücke an:
|
|
68
|
+
- **Konfidenz:** hoch / mittel / niedrig — dass die Lücke real ist
|
|
69
|
+
- **Evidenz:** Woran machst du fest, dass ein Maintainer hier nicht handeln würde?
|
|
70
|
+
- **Entkräftung:** In welchem Kontext wäre dieses Finding doch ausreichend handlungsfähig?
|
|
71
|
+
|
|
72
|
+
### Fehlerschluss-Wächter
|
|
73
|
+
|
|
74
|
+
Prüfe aktiv gegen:
|
|
75
|
+
- **Illusion of Actionability:** Ein Finding klingt operativ („refactor X“), führt aber zu keiner klaren, scoped Aktion. Prüfe ob „handlungsfähig“ wirklich „durchführbar“ bedeutet.
|
|
76
|
+
- **Metric Fixation:** Actionability-Score als Selbstzweck statt als Proxy für reales Handeln.
|
|
77
|
+
- **Expert Bias:** Du bewertest als KI mit Vollzugriff auf den Code. Ein Maintainer hat 5 Minuten. Kalibriere darauf.
|
|
78
|
+
|
|
48
79
|
## Bewertungs-Labels
|
|
49
80
|
|
|
50
81
|
Verwende ausschließlich Labels aus `.github/prompts/_partials/bewertungs-taxonomie.md`:
|
|
@@ -108,4 +139,8 @@ Für jede Empfehlung:
|
|
|
108
139
|
|
|
109
140
|
## Abschlussentscheidung
|
|
110
141
|
|
|
111
|
-
Formuliere die 5 stärksten Änderungen, mit denen Drift-Findings deutlich operativer und priorisierbarer würden.
|
|
142
|
+
1. Formuliere die 5 stärksten Änderungen, mit denen Drift-Findings deutlich operativer und priorisierbarer würden.
|
|
143
|
+
2. **Gegenposition:** Für welche deiner Top-5-Empfehlungen gibt es ein starkes Gegenargument? Formuliere es.
|
|
144
|
+
3. **Grenzfall:** Nenne ein Finding, bei dem du unsicher bist, ob mangelnde Actionability ein Bug oder ein Feature ist.
|
|
145
|
+
4. **Falsifikation:** Wie könnte man empirisch testen, ob deine Empfehlungen tatsächlich zu mehr Handlung führen?
|
|
146
|
+
5. **Was du nicht beurteilen kannst:** Welche Aspekte der Handlungsfähigkeit liegen außerhalb deiner Beurteilungsfähigkeit (z.B. Team-Dynamik, Organisationskultur)?
|
{drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/drift-first-run-dropoffs.prompt.md
RENAMED
|
@@ -46,6 +46,37 @@ Die Aufgabe ist erst abgeschlossen, wenn du beantworten kannst:
|
|
|
46
46
|
- Keine allgemeinen UX-Ratschläge — nur Drift-spezifische Beobachtungen.
|
|
47
47
|
- Unsicherheiten explizit benennen.
|
|
48
48
|
|
|
49
|
+
## Reasoning-Anforderungen
|
|
50
|
+
|
|
51
|
+
### Spannungsfelder
|
|
52
|
+
|
|
53
|
+
Navigiere aktiv folgende Spannungen — löse sie nicht vorschnell auf, sondern mache deine Abwägung transparent:
|
|
54
|
+
|
|
55
|
+
- **Einfachheit vs. Vollständigkeit:** Ein einfacher Quickstart lässt Features aus. Ein vollständiger Einstieg überfordert. Wo liegt der Optimalpunkt für Drift?
|
|
56
|
+
- **Kürze vs. Überzeugungskraft:** Schneller erster Output ≠ überzeugender erster Output. Was braucht der Nutzer zuerst — Speed oder Aha-Moment?
|
|
57
|
+
- **Selbsterklärender Output vs. Dokumentationsbedarf:** Wenn der Output Erklärung braucht, ist er dann schlecht oder ist das Feature komplex?
|
|
58
|
+
|
|
59
|
+
### Vor-Schlussfolgerungs-Checks
|
|
60
|
+
|
|
61
|
+
Bevor du eine Empfehlung finalisierst, prüfe:
|
|
62
|
+
- Welche Abbruchpunkte könntest du systematisch übersehen, weil du Drift bereits kennst?
|
|
63
|
+
- Gibt es Abbruchpunkte, die nur bei bestimmten Repo-Typen oder Nutzergruppen auftreten?
|
|
64
|
+
- Verwechselst du persönliche Irritation mit einem realen Nutzerproblem?
|
|
65
|
+
|
|
66
|
+
### Konfidenz-Kalibrierung
|
|
67
|
+
|
|
68
|
+
Gib für jeden identifizierten Abbruchpunkt an:
|
|
69
|
+
- **Konfidenz:** hoch / mittel / niedrig — dass er real ist (nicht nur theoretisch)
|
|
70
|
+
- **Evidenz:** Woraus leitest du ab, dass hier Nutzer tatsächlich abspringen?
|
|
71
|
+
- **Entkräftung:** Was müsste wahr sein, damit dieser Punkt kein echtes Problem ist?
|
|
72
|
+
|
|
73
|
+
### Fehlerschluss-Wächter
|
|
74
|
+
|
|
75
|
+
Prüfe aktiv gegen:
|
|
76
|
+
- **Curse of Knowledge:** Du kennst Drift. Erstnutzer nicht. Prüfe bei jeder Bewertung: Wüsste jemand ohne Vorwissen, was gemeint ist?
|
|
77
|
+
- **Survivorship Bias:** Du beobachtest nur die Punkte, die du selbst erlebst. Welche Stellen könnten Nutzer zum stillen Abbruch bringen, bevor sie überhaupt klicken?
|
|
78
|
+
- **Solutionism:** Schlage keine Lösung vor, bevor du das Problem vollständig artikuliert hast.
|
|
79
|
+
|
|
49
80
|
## Bewertungs-Labels
|
|
50
81
|
|
|
51
82
|
Verwende ausschließlich Labels aus `.github/prompts/_partials/bewertungs-taxonomie.md`:
|
|
@@ -127,4 +158,9 @@ Für jeden Fix:
|
|
|
127
158
|
## Abschlussentscheidung
|
|
128
159
|
|
|
129
160
|
Beantworte abschließend:
|
|
130
|
-
|
|
161
|
+
|
|
162
|
+
1. Wenn Drift nur 3 Abbruchpunkte beseitigen dürfte, welche wären das und warum?
|
|
163
|
+
2. **Gegenposition:** Argumentiere, warum der von dir am höchsten priorisierte Abbruchpunkt möglicherweise gar keiner ist. Was spricht dagegen?
|
|
164
|
+
3. **Falsifikation:** Was müsste beobachtbar sein, um deine Empfehlung zu widerlegen?
|
|
165
|
+
4. **Konfidenz-Statement:** Wie sicher bist du dir bei deinem Ranking? Was fehlt dir an Information, um sicherer zu sein?
|
|
166
|
+
5. **Blinder Fleck:** Welche Art von Abbruchpunkt könntest du mit deiner Methodik prinzipiell nicht entdecken?
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Drift Integration Priorities"
|
|
3
|
+
description: "Bewertet Integrationen nach realem Adoptionseffekt statt nach Vollständigkeit. Liefert eine priorisierte Matrix der 3 wirksamsten Integrationen für Drift."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Drift Integration Priorities
|
|
7
|
+
|
|
8
|
+
Du analysierst, welche Integrationen Drift am stärksten von „interessant" zu „regelmäßig genutzt" bewegen würden.
|
|
9
|
+
|
|
10
|
+
> **Pflicht:** Vor Ausführung dieses Prompts das Drift Policy Gate durchlaufen
|
|
11
|
+
> (siehe `.github/prompts/_partials/konventionen.md` und `.github/instructions/drift-policy.instructions.md`).
|
|
12
|
+
|
|
13
|
+
## Relevante Referenzen
|
|
14
|
+
|
|
15
|
+
- **Instruction:** `.github/instructions/drift-policy.instructions.md`
|
|
16
|
+
- **Bewertungssystem:** `.github/prompts/_partials/bewertungs-taxonomie.md`
|
|
17
|
+
- **Issue-Filing:** `.github/prompts/_partials/issue-filing.md`
|
|
18
|
+
- **Verwandte Prompts:** `drift-ci-gate.prompt.md`, `drift-shareability-review.prompt.md`
|
|
19
|
+
- **Aktuelle Integrationen:** `action.yml`, `src/drift/output/`, `src/drift/mcp_server.py`
|
|
20
|
+
|
|
21
|
+
## Arbeitsmodus
|
|
22
|
+
|
|
23
|
+
- Bewerte jede Integration nach Adoptionseffekt, Aufwand, Team-Fit und Anschlussfähigkeit.
|
|
24
|
+
- Bevorzuge wenige starke Hebel statt breiter Wunschliste.
|
|
25
|
+
- Trenne zwischen Demo-Attraktivität und realer täglicher Nutzung.
|
|
26
|
+
- Sammle nicht möglichst viele Integrationen, sondern priorisiere die wenigen mit echtem Wirkungspotenzial.
|
|
27
|
+
|
|
28
|
+
## Ziel
|
|
29
|
+
|
|
30
|
+
Identifiziere die Integrationen, die Drift am stärksten in tägliche Entwickler-Workflows verankern würden, und liefere eine belastbare Priorisierung.
|
|
31
|
+
|
|
32
|
+
## Erfolgskriterien
|
|
33
|
+
|
|
34
|
+
Die Aufgabe ist erst abgeschlossen, wenn du beantworten kannst:
|
|
35
|
+
- Welche Integrationen würden Drift am ehesten in tägliche Abläufe bringen?
|
|
36
|
+
- Welche Integrationen sind attraktiv, aber überschätzt?
|
|
37
|
+
- Welche verbessern First-Run-Value kaum, aber langfristige Adoption stark?
|
|
38
|
+
- Welche helfen Teams beim Weiterleiten, Diskutieren und Handeln?
|
|
39
|
+
- Welche 3 haben das beste Verhältnis aus Wirkung zu Aufwand?
|
|
40
|
+
|
|
41
|
+
## Arbeitsregeln
|
|
42
|
+
|
|
43
|
+
- Bewerte bestehende und denkbare Integrationen.
|
|
44
|
+
- Prüfe den aktuellen Stand: `action.yml`, SARIF-Output, MCP-Server, JSON-Output, Badge.
|
|
45
|
+
- Keine allgemeinen Integrations-Empfehlungen — nur Drift-spezifische Bewertungen.
|
|
46
|
+
- Unsicherheiten explizit benennen.
|
|
47
|
+
|
|
48
|
+
## Reasoning-Anforderungen
|
|
49
|
+
|
|
50
|
+
### Spannungsfelder
|
|
51
|
+
|
|
52
|
+
Navigiere aktiv folgende Spannungen — mache deine Abwägung transparent:
|
|
53
|
+
|
|
54
|
+
- **Breite Erreichbarkeit vs. Tiefe in wenigen Workflows:** Viele leichte Integrationen vs. wenige tiefe. Was bewegt Adoption stärker?
|
|
55
|
+
- **Demo-Attraktivität vs. täglicher Nutzen:** Manche Integrationen sehen in Demos spektakulär aus, werden aber selten genutzt. Prüfe für jede Empfehlung: Würde sie nach der Demo-Phase weiterleben?
|
|
56
|
+
- **Build vs. Leverage:** Eigene Integration vs. Andocken an bestehende Ökosysteme (z.B. GitHub Actions Marketplace, IDE-Plugins). Wo hat Drift einen Own-Build-Vorteil?
|
|
57
|
+
|
|
58
|
+
### Vor-Schlussfolgerungs-Checks
|
|
59
|
+
|
|
60
|
+
Bevor du eine Integration priorisierst:
|
|
61
|
+
- Hast du das Second-Order-Problem bedacht? (Eine CI-Integration erfordert auch: Dokumentation, Defaults, Error-Handling, Edge Cases.)
|
|
62
|
+
- Hast du geprüft, ob die Integration ein Pull-Mechanismus ist (Nutzer wollen es) oder ein Push-Mechanismus (wir glauben, sie sollten es wollen)?
|
|
63
|
+
- Gibt es eine bestehende Integration, die ausgebaut werden könnte statt eine neue zu bauen?
|
|
64
|
+
|
|
65
|
+
### Konfidenz-Kalibrierung
|
|
66
|
+
|
|
67
|
+
Gib für jede Integrations-Empfehlung an:
|
|
68
|
+
- **Konfidenz:** hoch / mittel / niedrig — dass sie tatsächlich Adoption steigert
|
|
69
|
+
- **Evidenz:** Woraus schließt du auf Nachfrage? (Feature-Requests, Vergleichstools, Workflow-Analyse?)
|
|
70
|
+
- **Entkräftung:** Was müsste wahr sein, damit diese Integration keinen Adoptionseffekt hat?
|
|
71
|
+
|
|
72
|
+
### Fehlerschluss-Wächter
|
|
73
|
+
|
|
74
|
+
Prüfe aktiv gegen:
|
|
75
|
+
- **Integration Laundry List:** Viele Integrationen auflisten ≠ die richtige priorisieren. Weniger ist meistens mehr.
|
|
76
|
+
- **Supply-Side-Thinking:** „Wir können das bauen, also sollten wir“ ist kein Priorisierungsgrund.
|
|
77
|
+
- **Survivorship Bias bei Vergleichs-Tools:** Nur weil SonarQube eine IDE-Integration hat, heißt das nicht, dass Drift eine braucht. Prüfe ob die Zielgruppen vergleichbar sind.
|
|
78
|
+
|
|
79
|
+
## Bewertungs-Labels
|
|
80
|
+
|
|
81
|
+
Verwende ausschließlich Labels aus `.github/prompts/_partials/bewertungs-taxonomie.md`:
|
|
82
|
+
|
|
83
|
+
- **Ergebnis-Bewertung:** `pass` / `review` / `fail`
|
|
84
|
+
- **Risiko-Level:** `low` / `medium` / `high` / `critical`
|
|
85
|
+
|
|
86
|
+
## Artefakte
|
|
87
|
+
|
|
88
|
+
Erstelle Artefakte unter `work_artifacts/integration_priorities_<YYYY-MM-DD>/`:
|
|
89
|
+
|
|
90
|
+
1. `summary.md` — Gesamtbewertung
|
|
91
|
+
2. `integration_matrix.md` — Bewertete Matrix aller relevanten Integrationen
|
|
92
|
+
3. `top_3_integrations.md` — Die 3 priorisierten Empfehlungen
|
|
93
|
+
|
|
94
|
+
## Workflow
|
|
95
|
+
|
|
96
|
+
### Phase 1: Bestandsaufnahme
|
|
97
|
+
|
|
98
|
+
Dokumentiere bestehende Integrationen:
|
|
99
|
+
- GitHub Action (`action.yml`)
|
|
100
|
+
- SARIF-Output
|
|
101
|
+
- JSON-Output
|
|
102
|
+
- MCP-Server
|
|
103
|
+
- Badge-Generierung
|
|
104
|
+
- CLI-Automation
|
|
105
|
+
|
|
106
|
+
### Phase 2: Kandidaten-Analyse
|
|
107
|
+
|
|
108
|
+
Untersuche zusätzlich denkbare Integrationen:
|
|
109
|
+
- PR-Kommentierung
|
|
110
|
+
- CI-Gating mit Schwellwerten
|
|
111
|
+
- GitHub Checks API
|
|
112
|
+
- Slack- oder Webhook-Integration
|
|
113
|
+
- IDE-Integration
|
|
114
|
+
- Dashboard oder Trend-Report
|
|
115
|
+
- Package-Vergleich oder Dependency-Kontext
|
|
116
|
+
|
|
117
|
+
### Phase 3: Integrations-Matrix
|
|
118
|
+
|
|
119
|
+
Erstelle `integration_matrix.md`:
|
|
120
|
+
|
|
121
|
+
| Integration | Status | Zielnutzer | Zielworkflow | Adoptionseffekt | Aufwand | Team-Fit | Risiko | Priorität |
|
|
122
|
+
|-------------|--------|-----------|-------------|----------------|---------|---------|--------|----------|
|
|
123
|
+
|
|
124
|
+
### Phase 4: Top 3 Empfehlungen
|
|
125
|
+
|
|
126
|
+
Erstelle `top_3_integrations.md`:
|
|
127
|
+
|
|
128
|
+
Für jede der 3 Empfehlungen:
|
|
129
|
+
- Integration
|
|
130
|
+
- Warum gerade diese
|
|
131
|
+
- erwarteter Adoptionseffekt
|
|
132
|
+
- Aufwand
|
|
133
|
+
- Risiken
|
|
134
|
+
- empfohlener erster Schritt
|
|
135
|
+
|
|
136
|
+
## Abschlussentscheidung
|
|
137
|
+
|
|
138
|
+
1. Empfiehl genau 3 Integrationen, die Drift jetzt priorisieren sollte. Begründe jede mit Wirkung, Aufwand und Risiko.
|
|
139
|
+
2. **Anti-Empfehlung:** Nenne 1 Integration, die verlockendes Potenzial hat, aber aktuell falsch priorisiert wäre. Erkläre warum und wann der richtige Zeitpunkt wäre.
|
|
140
|
+
3. **Steelman Nicht-Bauen:** Formuliere das stärkste Argument dafür, gar keine neue Integration zu bauen und stattdessen die bestehenden zu vertiefen.
|
|
141
|
+
4. **Sequenzierung:** In welcher Reihenfolge sollten die 3 Empfehlungen umgesetzt werden und warum? Gibt es Abhängigkeiten?
|
|
142
|
+
5. **Prüfbares Kriterium:** Woran erkennt man nach 4 Wochen, ob die priorisierte Integration den erwarteten Adoptionseffekt hat?
|
{drift_analyzer-2.9.2 → drift_analyzer-2.9.4}/.github/prompts/drift-positioning-review.prompt.md
RENAMED
|
@@ -45,6 +45,37 @@ Die Aufgabe ist erst abgeschlossen, wenn du beantworten kannst:
|
|
|
45
45
|
- Keine allgemeinen Marketing-Tipps — nur Drift-spezifische Produktkommunikation.
|
|
46
46
|
- Unsicherheiten explizit benennen.
|
|
47
47
|
|
|
48
|
+
## Reasoning-Anforderungen
|
|
49
|
+
|
|
50
|
+
### Spannungsfelder
|
|
51
|
+
|
|
52
|
+
Navigiere aktiv folgende Spannungen — mache deine Abwägung transparent:
|
|
53
|
+
|
|
54
|
+
- **Technische Präzision vs. Zugänglichkeit:** „Architektonische Kohärenzerosion“ ist präzise, aber schreckt ab. „Code-Gesundheits-Check“ ist zugänglich, aber unscharf. Wo liegt der Drift-Optimalpunkt?
|
|
55
|
+
- **Differenzierung vs. Vergleichbarkeit:** Zu einzigartig = schwer einzuordnen („Is this like SonarQube?“). Zu vergleichbar = austauschbar. Finde die Balance.
|
|
56
|
+
- **Nische vs. Breitenwirkung:** Präzise Positionierung für eine Zielgruppe vs. breitere Ansprache für Wachstum. Was braucht Drift jetzt?
|
|
57
|
+
|
|
58
|
+
### Vor-Schlussfolgerungs-Checks
|
|
59
|
+
|
|
60
|
+
Bevor du eine Positionierung empfiehlst:
|
|
61
|
+
- Funktioniert sie für jemanden, der Drift noch nie gesehen hat? Teste mental mit einem konkreten Leserprofil.
|
|
62
|
+
- Ist deine Empfehlung eine echte Repositionierung oder nur bessere Formulierung des Status Quo?
|
|
63
|
+
- Verwechselst du „ich verstehe, was gemeint ist“ mit „ein Erstleser versteht, was gemeint ist“?
|
|
64
|
+
|
|
65
|
+
### Konfidenz-Kalibrierung
|
|
66
|
+
|
|
67
|
+
Gib für jede Kommunikations-Empfehlung an:
|
|
68
|
+
- **Konfidenz:** hoch / mittel / niedrig — dass sie First-Run-Konversion erhöht
|
|
69
|
+
- **Evidenz:** Woraus leitest du die Überlegenheit deiner Formulierung ab?
|
|
70
|
+
- **Entkräftung:** Für welche Zielgruppe könnte die aktuelle Positionierung besser funktionieren als dein Vorschlag?
|
|
71
|
+
|
|
72
|
+
### Fehlerschluss-Wächter
|
|
73
|
+
|
|
74
|
+
Prüfe aktiv gegen:
|
|
75
|
+
- **Narrative Bias:** Eine schöne Geschichte ≠ wahre Positionierung. Prüfe ob deine Empfehlung das reale Produkt ehrlich repräsentiert.
|
|
76
|
+
- **Benchmarking-Falle:** Andere Tools kopieren ist kein Positionierungs-Ansatz. Was ist Drifts eigene, ungewöhnliche Stärke?
|
|
77
|
+
- **Über-Vereinfachung:** Wenn du Drift in einem Satz erklären kannst, hast du möglicherweise das Wesentliche verloren. Prüfe, ob Einfachheit auf Kosten der Richtigkeit geht.
|
|
78
|
+
|
|
48
79
|
## Bewertungs-Labels
|
|
49
80
|
|
|
50
81
|
Verwende ausschließlich Labels aus `.github/prompts/_partials/bewertungs-taxonomie.md`:
|
|
@@ -110,4 +141,8 @@ Erstelle `rewritten_positioning.md`:
|
|
|
110
141
|
|
|
111
142
|
## Abschlussentscheidung
|
|
112
143
|
|
|
113
|
-
Schreibe die empfohlene Kurzpositionierung für Drift in 5 Sätzen und nenne die 3 wichtigsten README-Änderungen.
|
|
144
|
+
1. Schreibe die empfohlene Kurzpositionierung für Drift in 5 Sätzen und nenne die 3 wichtigsten README-Änderungen.
|
|
145
|
+
2. **Steelman der aktuellen Positionierung:** Formuliere das stärkste Argument, warum die aktuelle Positionierung besser sein könnte als dein Vorschlag.
|
|
146
|
+
3. **Zielgruppen-Spannungstest:** Würde deine Empfehlung bei allen drei primären Zielgruppen (Individual Maintainer, Tech Lead, OSS-Newcomer) gleich gut funktionieren? Falls nein: Welche Zielgruppe opferst du und warum?
|
|
147
|
+
4. **Risiko-Assessment:** Was geht verloren, wenn Drift deiner Empfehlung folgt? Was geht verloren, wenn nicht?
|
|
148
|
+
5. **Prüfbares Kriterium:** Woran erkennt man in 8 Wochen, ob die Repositionierung funktioniert hat?
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "Drift Repo Segment Fit"
|
|
3
|
+
description: "Analysiert, für welche Repository-Typen Drift heute stark wirkt und welche Segmente priorisiert werden sollten. Liefert eine Segment-Matrix und Positionierungsempfehlungen."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Drift Repo Segment Fit
|
|
7
|
+
|
|
8
|
+
Du analysierst, für welche Repository-Typen Drift heute bereits stark ist und für welche Segmente der Fit noch schwach oder unscharf wirkt.
|
|
9
|
+
|
|
10
|
+
> **Pflicht:** Vor Ausführung dieses Prompts das Drift Policy Gate durchlaufen
|
|
11
|
+
> (siehe `.github/prompts/_partials/konventionen.md` und `.github/instructions/drift-policy.instructions.md`).
|
|
12
|
+
|
|
13
|
+
## Relevante Referenzen
|
|
14
|
+
|
|
15
|
+
- **Instruction:** `.github/instructions/drift-policy.instructions.md`
|
|
16
|
+
- **Bewertungssystem:** `.github/prompts/_partials/bewertungs-taxonomie.md`
|
|
17
|
+
- **Issue-Filing:** `.github/prompts/_partials/issue-filing.md`
|
|
18
|
+
- **Verwandte Prompts:** `drift-positioning-review.prompt.md`, `drift-first-run-dropoffs.prompt.md`
|
|
19
|
+
- **Benchmark-Daten:** `benchmark_results/`, `benchmarks/oracle_repos.json`
|
|
20
|
+
|
|
21
|
+
## Arbeitsmodus
|
|
22
|
+
|
|
23
|
+
- Beurteile Segment-Fit nach Nutzenklarheit, First-Run-Value, Handlungskraft der Findings und realistischer Adoption.
|
|
24
|
+
- Trenne zwischen gut analysierbar und gut positionierbar.
|
|
25
|
+
- Keine universelle Positionierung für alle denkbaren Repos.
|
|
26
|
+
- Verwende reale oder gut simulierte Repo-Profile.
|
|
27
|
+
|
|
28
|
+
## Ziel
|
|
29
|
+
|
|
30
|
+
Schaffe Klarheit darüber, wo Drift bereits überzeugend ist, wo das Produktversprechen schwächer wird und welche Zielsegmente Drift aktiv priorisieren sollte.
|
|
31
|
+
|
|
32
|
+
## Erfolgskriterien
|
|
33
|
+
|
|
34
|
+
Die Aufgabe ist erst abgeschlossen, wenn du beantworten kannst:
|
|
35
|
+
- Für welche Repo-Typen ist Drift heute am überzeugendsten?
|
|
36
|
+
- Wo ist der Nutzen schwerer nachweisbar?
|
|
37
|
+
- Wo müssten Positionierung, Defaults oder Output angepasst werden?
|
|
38
|
+
- Welche Segmente sollten aktiv priorisiert werden?
|
|
39
|
+
- Welche Segmente sollten eher nicht im Vordergrund stehen?
|
|
40
|
+
|
|
41
|
+
## Arbeitsregeln
|
|
42
|
+
|
|
43
|
+
- Bewerte mindestens 8 verschiedene Repo-Typen.
|
|
44
|
+
- Nutze wenn möglich echte Drift-Analysen oder Benchmark-Daten.
|
|
45
|
+
- Keine bloße Aufzählung — jede Bewertung braucht Begründung.
|
|
46
|
+
- Unsicherheiten explizit benennen.
|
|
47
|
+
|
|
48
|
+
## Reasoning-Anforderungen
|
|
49
|
+
|
|
50
|
+
### Spannungsfelder
|
|
51
|
+
|
|
52
|
+
Navigiere aktiv folgende Spannungen — mache deine Abwägung transparent:
|
|
53
|
+
|
|
54
|
+
- **Derzeitige Stärken optimieren vs. neue Segmente erschließen:** Drift bei aktuellen Kernnutzern verbessern vs. neue Zielgruppen adressieren. Was bringt mehr Adoption pro Aufwand?
|
|
55
|
+
- **Breite Positionierung vs. Nischenfokus:** „Funktioniert überall“ ist nichts wert als Positionierung. „Nur für X“ schränkt ein. Wo ist der Sweet Spot?
|
|
56
|
+
- **Segment-Fit vs. Segment-Nachfrage:** Drift passt möglicherweise gut zu Segment X, aber Segment X hat keinen Bedarf (oder weiß noch nichts davon). Trenne Fit von Marktpotenzial.
|
|
57
|
+
|
|
58
|
+
### Vor-Schlussfolgerungs-Checks
|
|
59
|
+
|
|
60
|
+
Bevor du ein Segment als „stark“ oder „schwach“ bewertest:
|
|
61
|
+
- Basiert dein Urteil auf einer echten oder einer imaginären Drift-Analyse für diesen Repo-Typ?
|
|
62
|
+
- Könnte ein Segment nur deswegen schwach wirken, weil die Defaults für diesen Typ falsch konfiguriert sind? (Kein Fitness-Problem, sondern ein Config-Problem.)
|
|
63
|
+
- Hast du zwischen „Drift liefert hier wenig Findings“ und „Drift liefert hier irrelevante Findings“ unterschieden?
|
|
64
|
+
|
|
65
|
+
### Konfidenz-Kalibrierung
|
|
66
|
+
|
|
67
|
+
Gib für jede Segment-Bewertung an:
|
|
68
|
+
- **Konfidenz:** hoch / mittel / niedrig — basierend auf realer Evidenz
|
|
69
|
+
- **Evidenzquelle:** echte Drift-Analyse / Benchmark-Daten / Hypothese?
|
|
70
|
+
- **Entkräftung:** Was müsste wahr sein, damit deine Bewertung dieses Segments falsch ist?
|
|
71
|
+
|
|
72
|
+
### Fehlerschluss-Wächter
|
|
73
|
+
|
|
74
|
+
Prüfe aktiv gegen:
|
|
75
|
+
- **Availability Bias:** Du kennst bestimmte Repo-Typen besser als andere. Kompensiere durch explizite Unsicherheitsmarker.
|
|
76
|
+
- **Segment-Romantik:** Ein Segment klingt attraktiv („AI-Agent-Repos!“), aber Drift hat dort möglicherweise keinen echten Hebel. Prüfe nüchtern.
|
|
77
|
+
- **False Generalization:** Ein positives Ergebnis bei einem Repo ≠ guter Fit für das gesamte Segment.
|
|
78
|
+
|
|
79
|
+
## Bewertungs-Labels
|
|
80
|
+
|
|
81
|
+
Verwende ausschließlich Labels aus `.github/prompts/_partials/bewertungs-taxonomie.md`:
|
|
82
|
+
|
|
83
|
+
- **Ergebnis-Bewertung:** `pass` / `review` / `fail`
|
|
84
|
+
- **Risiko-Level:** `low` / `medium` / `high` / `critical`
|
|
85
|
+
|
|
86
|
+
## Artefakte
|
|
87
|
+
|
|
88
|
+
Erstelle Artefakte unter `work_artifacts/repo_segment_fit_<YYYY-MM-DD>/`:
|
|
89
|
+
|
|
90
|
+
1. `summary.md` — Gesamtbewertung
|
|
91
|
+
2. `segment_matrix.md` — Bewertete Matrix pro Segment
|
|
92
|
+
3. `priority_segments.md` — Priorisierte Segmente mit Empfehlungen
|
|
93
|
+
|
|
94
|
+
## Workflow
|
|
95
|
+
|
|
96
|
+
### Phase 1: Segment-Definition
|
|
97
|
+
|
|
98
|
+
Definiere mindestens diese Repo-Typen:
|
|
99
|
+
- kleines Python-Tool (< 5 000 LOC)
|
|
100
|
+
- Python-Bibliothek
|
|
101
|
+
- Framework
|
|
102
|
+
- Monorepo
|
|
103
|
+
- AI-Agent-Repo
|
|
104
|
+
- CLI-Tool
|
|
105
|
+
- Infra- oder Plattform-Repo
|
|
106
|
+
- Security-nahes Repo
|
|
107
|
+
- stark wachsendes OSS-Projekt
|
|
108
|
+
|
|
109
|
+
### Phase 2: Segment-Bewertung
|
|
110
|
+
|
|
111
|
+
Bewerte Drift für jedes Segment:
|
|
112
|
+
|
|
113
|
+
| Segment | Nutzenklarheit | First-Run-Value | Handlungskraft der Findings | Signal-Relevanz | Adoptions-Wahrscheinlichkeit | Gesamtfit |
|
|
114
|
+
|---------|---------------|----------------|---------------------------|----------------|----------------------------|----------|
|
|
115
|
+
|
|
116
|
+
### Phase 3: Stärken und Schwächen
|
|
117
|
+
|
|
118
|
+
Für jedes Segment:
|
|
119
|
+
- Was funktioniert gut?
|
|
120
|
+
- Was funktioniert schlecht?
|
|
121
|
+
- Welche Signale sind besonders relevant?
|
|
122
|
+
- Welche Signale sind irrelevant oder störend?
|
|
123
|
+
- Welche Defaults müssten angepasst werden?
|
|
124
|
+
|
|
125
|
+
### Phase 4: Positionierungsempfehlungen
|
|
126
|
+
|
|
127
|
+
Erstelle `priority_segments.md`:
|
|
128
|
+
- Die 3 attraktivsten Zielsegmente mit Begründung
|
|
129
|
+
- Empfohlene Narrative pro Segment
|
|
130
|
+
- Empfohlene Default-Anpassungen pro Segment
|
|
131
|
+
- Segmente, die bewusst nicht priorisiert werden sollten
|
|
132
|
+
|
|
133
|
+
## Abschlussentscheidung
|
|
134
|
+
|
|
135
|
+
1. Nenne die 3 Repo-Typen, für die Drift zuerst in Kommunikation und Produktarbeit optimiert werden sollte. Begründe die Reihenfolge.
|
|
136
|
+
2. **Gegenposition:** Formuliere das stärkste Argument für eine völlig andere Segment-Priorisierung als deine Empfehlung.
|
|
137
|
+
3. **Fit vs. Nachfrage:** Für welches deiner Top-Segmente ist der Drift-Fit stark, aber die Marktnachfrage unklar? Wie würde man die Nachfrage validieren?
|
|
138
|
+
4. **Mutigster Vorschlag:** Welches Segment würde niemand erwarten, könnte aber der stärkste Wachstumshebel sein? Begründe, selbst wenn die Konfidenz niedrig ist.
|
|
139
|
+
5. **Expliziter Verzicht:** Welche 2 Segmente sollte Drift bewusst nicht priorisieren und warum?
|