ado-git-repo-insights 2.7.5__tar.gz → 3.2.0__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.
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/.gitattributes +16 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/.gitignore +1 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/CHANGELOG.md +96 -0
- ado_git_repo_insights-3.2.0/DEFERRED-PHASE5.md +207 -0
- {ado_git_repo_insights-2.7.5/src/ado_git_repo_insights.egg-info → ado_git_repo_insights-3.2.0}/PKG-INFO +13 -1
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/README.md +12 -0
- ado_git_repo_insights-3.2.0/VERSION +1 -0
- ado_git_repo_insights-3.2.0/docs/DEFAULT-DASHBOARD-ENHANCEMENT-PLAN.md +472 -0
- ado_git_repo_insights-3.2.0/docs/INSTALLATION.md +433 -0
- ado_git_repo_insights-3.2.0/extension/overview.md +129 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tasks/extract-prs/task.json +2 -2
- ado_git_repo_insights-3.2.0/extension/tests/api-patterns.test.js +124 -0
- ado_git_repo_insights-3.2.0/extension/tests/cross-project-settings.test.js +133 -0
- ado_git_repo_insights-3.2.0/extension/tests/dashboard.test.js +2122 -0
- ado_git_repo_insights-3.2.0/extension/tests/pipeline-artifact-url.test.js +141 -0
- ado_git_repo_insights-3.2.0/extension/tests/production-issues.test.js +988 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/ui/artifact-client.js +110 -10
- ado_git_repo_insights-3.2.0/extension/ui/dashboard.js +2077 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/ui/error-types.js +9 -3
- ado_git_repo_insights-3.2.0/extension/ui/index.html +282 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/ui/settings.html +25 -6
- ado_git_repo_insights-3.2.0/extension/ui/settings.js +554 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/ui/styles.css +600 -1
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/vss-extension.json +2 -1
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/package-lock.json +2 -2
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/package.json +1 -1
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0/src/ado_git_repo_insights.egg-info}/PKG-INFO +13 -1
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights.egg-info/SOURCES.txt +6 -0
- ado_git_repo_insights-2.7.5/VERSION +0 -1
- ado_git_repo_insights-2.7.5/extension/overview.md +0 -70
- ado_git_repo_insights-2.7.5/extension/tests/api-patterns.test.js +0 -114
- ado_git_repo_insights-2.7.5/extension/tests/dashboard.test.js +0 -568
- ado_git_repo_insights-2.7.5/extension/ui/dashboard.js +0 -1032
- ado_git_repo_insights-2.7.5/extension/ui/index.html +0 -176
- ado_git_repo_insights-2.7.5/extension/ui/settings.js +0 -240
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/.editorconfig +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/.github/scripts/check-baseline-integrity.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/.github/scripts/validate-test-results.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/.github/workflows/ci.yml +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/.github/workflows/release.yml +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/.gitleaks.toml +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/.husky/pre-commit +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/.husky/pre-push +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/.pre-commit-config.yaml +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/.releaserc.json +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/LICENSE +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/MERMAID.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/agents/INVARIANTS.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/agents/definition-of-done.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/agents/victory-gates.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/config.example.yaml +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/docs/EXTENSION.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/docs/MANUAL_WALKTHROUGH.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/docs/PHASE5.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/docs/PHASE6.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/docs/SESSION.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/docs/SUMMARY.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/docs/ado-pipeline-smoke-check.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/docs/dataset-contract.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/docs/phase5-contract-notes.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/docs/rollout-plan.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/docs/runbook.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/images/README.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/images/icon.png +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/images/icon.png.placeholder +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/jest.config.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/package-lock.json +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/package.json +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/scripts/copy-vss-sdk.sh +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/scripts/update-perf-baseline.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tasks/extract-prs/index.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tasks/extract-prs/index.test.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tasks/extract-prs/package-lock.json +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tasks/extract-prs/package.json +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/test-output.txt +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/test-results.json +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/ado-sdk.test.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/auth-pattern.test.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/chunked-loading.test.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/dataset-loader.test.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/date-range-warning.test.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/error-codes.test.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/fixtures/aggregates/dimensions.json +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/fixtures/aggregates/weekly_rollups/2026-W02.json +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/fixtures/dataset-manifest.json +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/fixtures/insights/summary.json +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/fixtures/perf-baselines.json +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/fixtures/predictions/trends.json +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/fixtures.test.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/metrics.test.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/mocks/ado-sdk.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/performance.test.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/sdk-bundling.test.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/setup.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/tests/synthetic-fixtures.test.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/ui/VSS.SDK.min.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/ui/dataset-loader.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension/ui/error-codes.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/extension-verification-test.yml +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/insights-verification-test.yml +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/pr-insights-pipeline.yml +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/pyproject.toml +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/sample-pipeline.yml +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/schemas/dataset-manifest.schema.json +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/schemas/insights.schema.json +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/schemas/predictions.schema.json +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/scripts/check-version-unchanged.sh +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/scripts/csv_diff.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/scripts/generate-synthetic-dataset.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/scripts/stamp-extension-version.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/scripts/validate-task-inputs.js +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/setup.cfg +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/__init__.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/cli.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/config.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/extractor/__init__.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/extractor/ado_client.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/extractor/pr_extractor.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/ml/__init__.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/ml/date_utils.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/ml/forecaster.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/ml/insights.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/persistence/__init__.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/persistence/database.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/persistence/models.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/persistence/repository.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/transform/__init__.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/transform/aggregators.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/transform/csv_generator.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/utils/__init__.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/utils/datetime_utils.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/utils/logging_config.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights/utils/run_summary.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights.egg-info/dependency_links.txt +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights.egg-info/entry_points.txt +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights.egg-info/requires.txt +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/src/ado_git_repo_insights.egg-info/top_level.txt +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/__init__.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/fixtures/README.md +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/integration/__init__.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/integration/test_backfill_convergence.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/integration/test_db_open_failure.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/integration/test_golden_outputs.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/integration/test_incremental_run.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/integration/test_multi_project_scoping.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/test_redaction.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/__init__.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_ado_client_pagination.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_aggregators.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_artifacts_dir.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_chunk_selection.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_cli_args.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_cli_exit_code.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_comments_cli.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_comments_extraction.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_completed_only.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_config_validation.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_csv_contract.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_csv_determinism.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_date_range_defaults.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_datetime_utils.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_forecaster_contract.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_insights_contract.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_insights_id_stability.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_insights_schema.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_logging_config.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_ml_cli_flags.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_monday_alignment.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_operational_summary.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_predictions_schema.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_retry_policy.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_run_summary.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_secret_redaction.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_summary_drift_guard.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_synthetic_dataset.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_team_extraction.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_upsert_keys.py +0 -0
- {ado_git_repo_insights-2.7.5 → ado_git_repo_insights-3.2.0}/tests/unit/test_version_validation.py +0 -0
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
# Default: auto-detect text files, normalize to LF in repo
|
|
2
2
|
* text=auto eol=lf
|
|
3
3
|
|
|
4
|
+
# ─────────────────────────────────────────────────────────
|
|
5
|
+
# GIT CONFIGURATION FILES: Always LF
|
|
6
|
+
# ─────────────────────────────────────────────────────────
|
|
7
|
+
.gitattributes text eol=lf
|
|
8
|
+
.gitignore text eol=lf
|
|
9
|
+
.gitmodules text eol=lf
|
|
10
|
+
|
|
4
11
|
# ─────────────────────────────────────────────────────────
|
|
5
12
|
# SCRIPTS: Must always be LF (executed in Unix CI)
|
|
6
13
|
# ─────────────────────────────────────────────────────────
|
|
@@ -11,6 +18,13 @@
|
|
|
11
18
|
.github/** text eol=lf
|
|
12
19
|
scripts/** text eol=lf
|
|
13
20
|
|
|
21
|
+
# ─────────────────────────────────────────────────────────
|
|
22
|
+
# CI/CD CONFIGURATION: LF for cross-platform CI
|
|
23
|
+
# ─────────────────────────────────────────────────────────
|
|
24
|
+
Dockerfile text eol=lf
|
|
25
|
+
docker-compose*.yml text eol=lf
|
|
26
|
+
Makefile text eol=lf
|
|
27
|
+
|
|
14
28
|
# ─────────────────────────────────────────────────────────
|
|
15
29
|
# CODE: LF for cross-platform consistency
|
|
16
30
|
# ─────────────────────────────────────────────────────────
|
|
@@ -21,6 +35,8 @@ scripts/** text eol=lf
|
|
|
21
35
|
*.yml text eol=lf
|
|
22
36
|
*.yaml text eol=lf
|
|
23
37
|
*.md text eol=lf
|
|
38
|
+
*.txt text eol=lf
|
|
39
|
+
LICENSE text eol=lf
|
|
24
40
|
*.html text eol=lf
|
|
25
41
|
*.css text eol=lf
|
|
26
42
|
|
|
@@ -1,3 +1,99 @@
|
|
|
1
|
+
# [3.2.0](https://github.com/oddessentials/ado-git-repo-insights/compare/v3.1.0...v3.2.0) (2026-01-18)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **dashboard:** accept PartiallySucceeded builds and handle stale settings ([f6c3135](https://github.com/oddessentials/ado-git-repo-insights/commit/f6c3135012a857b74c3d8d22a3a8032a470bde56))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **dashboard:** add feature flag for Phase 5 tabs with Coming Soon state ([a604462](https://github.com/oddessentials/ado-git-repo-insights/commit/a604462a8edf1f2059a8d23f736d4b26486154a4))
|
|
12
|
+
|
|
13
|
+
# [3.1.0](https://github.com/oddessentials/ado-git-repo-insights/compare/v3.0.4...v3.1.0) (2026-01-17)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
* **dashboard:** add comparison mode and export functionality (Sprint 5) ([e3fde36](https://github.com/oddessentials/ado-git-repo-insights/commit/e3fde3600f8fd67b13086333abe0c4b54b9b8412))
|
|
19
|
+
* **dashboard:** add cycle time trend and reviewer activity charts (Sprint 4) ([93e14dd](https://github.com/oddessentials/ado-git-repo-insights/commit/93e14dd3118d61922293edacc43762ddc0f21fdc))
|
|
20
|
+
* **dashboard:** add dimension filter bar with dropdowns (Sprint 2) ([393ede3](https://github.com/oddessentials/ado-git-repo-insights/commit/393ede3b8b44f8e9270bbabd03d9146d5f231385))
|
|
21
|
+
* **dashboard:** add raw data ZIP download for pipeline CSV artifacts ([5785d18](https://github.com/oddessentials/ado-git-repo-insights/commit/5785d18aaa33eda95c7c252e266e2cd9c87fd9e2))
|
|
22
|
+
* **dashboard:** add sparklines and trend line overlay (Sprint 3) ([8781ddb](https://github.com/oddessentials/ado-git-repo-insights/commit/8781ddb7bbaab71cd9e2dcd5de383a1563f41a7c))
|
|
23
|
+
* **dashboard:** add trend deltas and reviewers card (Sprint 1) ([660546d](https://github.com/oddessentials/ado-git-repo-insights/commit/660546d526632998f184c3d698a5c030e7f46d82))
|
|
24
|
+
|
|
25
|
+
## [3.0.4](https://github.com/oddessentials/ado-git-repo-insights/compare/v3.0.3...v3.0.4) (2026-01-17)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Bug Fixes
|
|
29
|
+
|
|
30
|
+
* white spacing ([29f5f4d](https://github.com/oddessentials/ado-git-repo-insights/commit/29f5f4d413492f0e41b486d2762932e754b1e95d))
|
|
31
|
+
|
|
32
|
+
## [3.0.3](https://github.com/oddessentials/ado-git-repo-insights/compare/v3.0.2...v3.0.3) (2026-01-17)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
### Bug Fixes
|
|
36
|
+
|
|
37
|
+
* **artifact:** use downloadUrl with format=file&subPath (verified working) ([be53de4](https://github.com/oddessentials/ado-git-repo-insights/commit/be53de426619285a782f97f96556cb41836c3846))
|
|
38
|
+
|
|
39
|
+
## [3.0.2](https://github.com/oddessentials/ado-git-repo-insights/compare/v3.0.1...v3.0.2) (2026-01-17)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
### Bug Fixes
|
|
43
|
+
|
|
44
|
+
* **artifact:** remove duplicated aggregates/ prefix from file paths ([d19688e](https://github.com/oddessentials/ado-git-repo-insights/commit/d19688eb27652de571273922ed496f56c5d6410f))
|
|
45
|
+
* **artifact:** try Container API for PipelineArtifacts first ([63376ca](https://github.com/oddessentials/ado-git-repo-insights/commit/63376caf8aca5b0aee281b10b7f7e9f53aa4ceb4))
|
|
46
|
+
|
|
47
|
+
## [3.0.1](https://github.com/oddessentials/ado-git-repo-insights/compare/v3.0.0...v3.0.1) (2026-01-17)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### Bug Fixes
|
|
51
|
+
|
|
52
|
+
* **artifact:** correct Pipeline Artifact file URL construction ([9eb9b3c](https://github.com/oddessentials/ado-git-repo-insights/commit/9eb9b3c28406c0307d1704d71d25ff94700ec5a3))
|
|
53
|
+
|
|
54
|
+
# [3.0.0](https://github.com/oddessentials/ado-git-repo-insights/compare/v2.8.2...v3.0.0) (2026-01-17)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
### Bug Fixes
|
|
58
|
+
|
|
59
|
+
* **artifact:** use getArtifacts lookup instead of broken SDK getArtifact ([6f6ad55](https://github.com/oddessentials/ado-git-repo-insights/commit/6f6ad559eb6c7f5f2f98840122b95b61b119153e))
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
### BREAKING CHANGES
|
|
63
|
+
|
|
64
|
+
* **artifact:** Replaced SDK-based artifact metadata retrieval with
|
|
65
|
+
direct API lookup. This fixes cross-project artifact access but changes
|
|
66
|
+
the internal implementation approach.
|
|
67
|
+
|
|
68
|
+
## [2.8.2](https://github.com/oddessentials/ado-git-repo-insights/compare/v2.8.1...v2.8.2) (2026-01-17)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
### Bug Fixes
|
|
72
|
+
|
|
73
|
+
* **artifact:** use resource.url directly for container file access ([92f6f85](https://github.com/oddessentials/ado-git-repo-insights/commit/92f6f8523fd4bc219f2b0108d5727b7f2990b9d2))
|
|
74
|
+
|
|
75
|
+
## [2.8.1](https://github.com/oddessentials/ado-git-repo-insights/compare/v2.8.0...v2.8.1) (2026-01-17)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
### Bug Fixes
|
|
79
|
+
|
|
80
|
+
* **artifact:** use SDK-based file access to resolve 401 errors ([f81c884](https://github.com/oddessentials/ado-git-repo-insights/commit/f81c884cbdf39589e2a877885bed5e328c07e63d))
|
|
81
|
+
|
|
82
|
+
# [2.8.0](https://github.com/oddessentials/ado-git-repo-insights/compare/v2.7.6...v2.8.0) (2026-01-16)
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
### Features
|
|
86
|
+
|
|
87
|
+
* **dashboard:** use configured source project for cross-project access ([54fa822](https://github.com/oddessentials/ado-git-repo-insights/commit/54fa822231dc5f00ed32fa2aeb74206bef2bca48))
|
|
88
|
+
* **settings:** add cross-project support with graceful degradation ([bfb8009](https://github.com/oddessentials/ado-git-repo-insights/commit/bfb8009087dd21605a617ec0699109c42df88811))
|
|
89
|
+
|
|
90
|
+
## [2.7.6](https://github.com/oddessentials/ado-git-repo-insights/compare/v2.7.5...v2.7.6) (2026-01-16)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
### Bug Fixes
|
|
94
|
+
|
|
95
|
+
* **extension:** add queryOrder to all getDefinitions calls ([b74be8a](https://github.com/oddessentials/ado-git-repo-insights/commit/b74be8a0ea42d4b8bf81e73e31d088a504133ecd))
|
|
96
|
+
|
|
1
97
|
## [2.7.5](https://github.com/oddessentials/ado-git-repo-insights/compare/v2.7.4...v2.7.5) (2026-01-16)
|
|
2
98
|
|
|
3
99
|
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# Deferred Work: Phase 5 (Predictions & AI Insights)
|
|
2
|
+
|
|
3
|
+
This document outlines the work required to enable Phase 5 features (Predictions and AI Insights tabs) in the PR Insights dashboard. These features are currently disabled via feature flag.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Current State
|
|
8
|
+
|
|
9
|
+
- **Feature Flag**: `ENABLE_PHASE5_FEATURES = false` in `extension/ui/dashboard.js`
|
|
10
|
+
- **Tabs**: Hidden by default, showing "Coming Soon" state when manually revealed
|
|
11
|
+
- **ML Code**: Exists in `src/ado_git_repo_insights/ml/` but not integrated with pipeline task
|
|
12
|
+
- **Pipeline Task**: Does not expose `enablePredictions` or `enableInsights` inputs
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Prerequisites for Enablement
|
|
17
|
+
|
|
18
|
+
### 1. Python Dependencies
|
|
19
|
+
|
|
20
|
+
The ML features require additional Python packages not currently in the base requirements:
|
|
21
|
+
|
|
22
|
+
```python
|
|
23
|
+
# Forecaster (predictions/trends.json)
|
|
24
|
+
prophet>=1.1.0 # Facebook Prophet for time series forecasting
|
|
25
|
+
|
|
26
|
+
# AI Insights (insights/summary.json)
|
|
27
|
+
openai>=1.0.0 # OpenAI API client (optional, for AI-powered insights)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Files to update**:
|
|
31
|
+
- `setup.py` - Add optional extras_require for ML features
|
|
32
|
+
- `pyproject.toml` - Add optional dependency group
|
|
33
|
+
|
|
34
|
+
### 2. Pipeline Task Inputs
|
|
35
|
+
|
|
36
|
+
The `ExtractPullRequests@2` task needs new inputs to enable ML features:
|
|
37
|
+
|
|
38
|
+
```yaml
|
|
39
|
+
# Proposed new inputs for extension/tasks/extract-prs/task.json
|
|
40
|
+
{
|
|
41
|
+
"name": "enablePredictions",
|
|
42
|
+
"type": "boolean",
|
|
43
|
+
"label": "Generate ML Predictions",
|
|
44
|
+
"defaultValue": "false",
|
|
45
|
+
"required": false,
|
|
46
|
+
"helpMarkDown": "Generate time series forecasts for cycle time and throughput"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"name": "enableInsights",
|
|
50
|
+
"type": "boolean",
|
|
51
|
+
"label": "Generate AI Insights",
|
|
52
|
+
"defaultValue": "false",
|
|
53
|
+
"required": false,
|
|
54
|
+
"helpMarkDown": "Generate AI-powered analysis (requires OpenAI API key)"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"name": "openaiApiKey",
|
|
58
|
+
"type": "string",
|
|
59
|
+
"label": "OpenAI API Key",
|
|
60
|
+
"required": false,
|
|
61
|
+
"helpMarkDown": "API key for AI insights generation (required if enableInsights is true)"
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Files to update**:
|
|
66
|
+
- `extension/tasks/extract-prs/task.json` - Add input definitions
|
|
67
|
+
- `extension/tasks/extract-prs/index.js` - Pass inputs to Python CLI
|
|
68
|
+
- CLI command builder to include `--enable-predictions` and `--enable-insights` flags
|
|
69
|
+
|
|
70
|
+
### 3. CLI Integration
|
|
71
|
+
|
|
72
|
+
The CLI already has flags for predictions/insights but they need to be wired through:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Current CLI flags (cli.py)
|
|
76
|
+
--enable-predictions # Generate predictions/trends.json
|
|
77
|
+
--enable-insights # Generate insights/summary.json
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Files to verify**:
|
|
81
|
+
- `src/ado_git_repo_insights/cli.py` - Flags exist at lines 612-613
|
|
82
|
+
- `src/ado_git_repo_insights/ml/forecaster.py` - Prophet-based forecasting
|
|
83
|
+
- `src/ado_git_repo_insights/ml/insights.py` - AI insights generation
|
|
84
|
+
|
|
85
|
+
### 4. Dataset Contract Updates
|
|
86
|
+
|
|
87
|
+
The aggregates output needs to include predictions and insights when enabled:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
aggregates/
|
|
91
|
+
├── dataset-manifest.json # Must include predictions/insights flags
|
|
92
|
+
├── weekly_rollups/
|
|
93
|
+
├── distributions/
|
|
94
|
+
├── predictions/ # NEW: when enablePredictions=true
|
|
95
|
+
│ └── trends.json
|
|
96
|
+
└── insights/ # NEW: when enableInsights=true
|
|
97
|
+
└── summary.json
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Files to update**:
|
|
101
|
+
- `docs/dataset-contract.md` - Document predictions/insights schema
|
|
102
|
+
- Aggregator code to conditionally generate these files
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Implementation Tasks
|
|
107
|
+
|
|
108
|
+
### Phase 5.1: Dependencies & CLI Wiring
|
|
109
|
+
|
|
110
|
+
1. [ ] Add Prophet to optional dependencies in setup.py/pyproject.toml
|
|
111
|
+
2. [ ] Add OpenAI to optional dependencies
|
|
112
|
+
3. [ ] Verify CLI flags work end-to-end locally
|
|
113
|
+
4. [ ] Add integration tests for predictions generation
|
|
114
|
+
5. [ ] Add integration tests for insights generation
|
|
115
|
+
|
|
116
|
+
### Phase 5.2: Pipeline Task Integration
|
|
117
|
+
|
|
118
|
+
1. [ ] Add `enablePredictions` input to task.json
|
|
119
|
+
2. [ ] Add `enableInsights` input to task.json
|
|
120
|
+
3. [ ] Add `openaiApiKey` input to task.json
|
|
121
|
+
4. [ ] Update index.js to pass new inputs to CLI
|
|
122
|
+
5. [ ] Test in hosted agent environment (Prophet installation)
|
|
123
|
+
6. [ ] Document agent requirements (Prophet needs C++ compiler)
|
|
124
|
+
|
|
125
|
+
### Phase 5.3: Dashboard Integration
|
|
126
|
+
|
|
127
|
+
1. [ ] Verify `loadPredictions()` in dataset-loader.js works with real data
|
|
128
|
+
2. [ ] Verify `loadInsights()` in dataset-loader.js works with real data
|
|
129
|
+
3. [ ] Update `renderPredictions()` for production data format
|
|
130
|
+
4. [ ] Update `renderInsights()` for production data format
|
|
131
|
+
5. [ ] Add loading states for async prediction/insight loading
|
|
132
|
+
|
|
133
|
+
### Phase 5.4: Documentation & Enablement
|
|
134
|
+
|
|
135
|
+
1. [ ] Create "Enable ML Features" documentation page
|
|
136
|
+
2. [ ] Document OpenAI API key setup
|
|
137
|
+
3. [ ] Document Prophet installation requirements
|
|
138
|
+
4. [ ] Update INSTALLATION.md with ML features section
|
|
139
|
+
5. [ ] Set `ENABLE_PHASE5_FEATURES = true` in dashboard.js
|
|
140
|
+
6. [ ] Update tests to expect tabs visible by default
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Key Files Reference
|
|
145
|
+
|
|
146
|
+
### Python ML Code
|
|
147
|
+
- `src/ado_git_repo_insights/ml/__init__.py` - ML module exports
|
|
148
|
+
- `src/ado_git_repo_insights/ml/forecaster.py` - Prophet-based cycle time forecasting
|
|
149
|
+
- `src/ado_git_repo_insights/ml/insights.py` - AI-powered insights generation
|
|
150
|
+
- `src/ado_git_repo_insights/ml/date_utils.py` - Date utilities for forecasting
|
|
151
|
+
|
|
152
|
+
### Pipeline Task
|
|
153
|
+
- `extension/tasks/extract-prs/task.json` - Task input definitions
|
|
154
|
+
- `extension/tasks/extract-prs/index.js` - Task execution wrapper
|
|
155
|
+
|
|
156
|
+
### Dashboard
|
|
157
|
+
- `extension/ui/dashboard.js` - Feature flag and initialization
|
|
158
|
+
- `extension/ui/dataset-loader.js` - Data loading for predictions/insights
|
|
159
|
+
- `extension/ui/index.html` - Tab HTML structure
|
|
160
|
+
|
|
161
|
+
### Tests
|
|
162
|
+
- `extension/tests/production-issues.test.js` - Feature flag tests
|
|
163
|
+
- Need to add: ML integration tests
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Risks & Considerations
|
|
168
|
+
|
|
169
|
+
### Prophet Installation
|
|
170
|
+
- Prophet requires C++ compiler and additional build tools
|
|
171
|
+
- May fail on some self-hosted agents without proper toolchain
|
|
172
|
+
- Consider: Pre-built wheel distribution or Docker-based execution
|
|
173
|
+
|
|
174
|
+
### OpenAI API Costs
|
|
175
|
+
- AI insights require OpenAI API calls (paid service)
|
|
176
|
+
- Need rate limiting and cost estimation in documentation
|
|
177
|
+
- Consider: Local LLM alternative for privacy-conscious users
|
|
178
|
+
|
|
179
|
+
### Data Volume
|
|
180
|
+
- Forecasting on large datasets (10k+ PRs) may be slow
|
|
181
|
+
- Consider: Caching, incremental updates, time limits
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## When to Enable
|
|
186
|
+
|
|
187
|
+
Enable Phase 5 features when:
|
|
188
|
+
|
|
189
|
+
1. All Phase 5.1-5.4 tasks are complete
|
|
190
|
+
2. Integration tests pass in CI
|
|
191
|
+
3. Documentation is complete
|
|
192
|
+
4. At least one production user has tested successfully
|
|
193
|
+
|
|
194
|
+
To enable:
|
|
195
|
+
```javascript
|
|
196
|
+
// extension/ui/dashboard.js line 34
|
|
197
|
+
const ENABLE_PHASE5_FEATURES = true;
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Contact
|
|
203
|
+
|
|
204
|
+
For questions about Phase 5 implementation, see:
|
|
205
|
+
- `docs/phase5-contract-notes.md` - Original design notes
|
|
206
|
+
- `agents/INVARIANTS.md` - System invariants to preserve
|
|
207
|
+
- GitHub Issues - For tracking specific tasks
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ado-git-repo-insights
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 3.2.0
|
|
4
4
|
Summary: Extract Azure DevOps Pull Request metrics to SQLite and generate PowerBI-compatible CSVs.
|
|
5
5
|
Author-email: "Odd Essentials, LLC" <admin@oddessentials.com>
|
|
6
6
|
License: MIT
|
|
@@ -41,6 +41,18 @@ Dynamic: license-file
|
|
|
41
41
|
|
|
42
42
|
Extract Azure DevOps Pull Request metrics to SQLite and generate PowerBI-compatible CSVs.
|
|
43
43
|
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 🚀 Get Started
|
|
47
|
+
|
|
48
|
+
**Install from the Azure DevOps Marketplace:**
|
|
49
|
+
|
|
50
|
+
[](https://marketplace.visualstudio.com/items?itemName=OddEssentials.ado-git-repo-insights)
|
|
51
|
+
|
|
52
|
+
👉 **New to this extension?** Follow the **[Installation Guide](docs/INSTALLATION.md)** for step-by-step setup instructions.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
44
56
|
## Overview
|
|
45
57
|
|
|
46
58
|
This tool replaces the MongoDB-based `ado-pull-request-metrics` with a lightweight, file-based solution that:
|
|
@@ -7,6 +7,18 @@
|
|
|
7
7
|
|
|
8
8
|
Extract Azure DevOps Pull Request metrics to SQLite and generate PowerBI-compatible CSVs.
|
|
9
9
|
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 🚀 Get Started
|
|
13
|
+
|
|
14
|
+
**Install from the Azure DevOps Marketplace:**
|
|
15
|
+
|
|
16
|
+
[](https://marketplace.visualstudio.com/items?itemName=OddEssentials.ado-git-repo-insights)
|
|
17
|
+
|
|
18
|
+
👉 **New to this extension?** Follow the **[Installation Guide](docs/INSTALLATION.md)** for step-by-step setup instructions.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
10
22
|
## Overview
|
|
11
23
|
|
|
12
24
|
This tool replaces the MongoDB-based `ado-pull-request-metrics` with a lightweight, file-based solution that:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.2.0
|