<!-- loopover:mcp-release-due --> ## Summary An MCP release appears due. - Proposed version: `4.0.0` - Latest MCP tag: `mcp-v3.0.0` - npm latest: `0.9.0` - MCP package version in repo: `3.0.0` - Unreleased MCP-related commits: `84` ## Unreleased MCP-Related Commits - `a42f0cb` docs\(core\): rename gittensory prose to loopover in signals/selfhost/services - `3175d74` feat\(gate\): configurable advisory check\-runs so a stuck external status never freezes the gate \(\#4372\) - `6b5b020` fix\(rebrand\): rename gittensory\-repo\-focus\-manifest\.ts module - `6e059b0` feat\(mcp\): expose skipped\-PR audit trail as a maintainer MCP tool - `f7266c4` feat\(mcp\): expose repo registration readiness as a read\-only MCP tool - `4076df1` fix\(signals\): filter public\-unsafe wantedPaths/preferredLabels from manifest findings \(\#5967\) - `46581d7` fix\(signals\): filter wantedPaths before interpolating focus\-area PR guidance \(\#5987\) - `df54527` fix\(review\): make size\-gate file/line thresholds configurable - `15e15a4` fix\(mcp\): make decision\-pack and repo\-decision CLI commands honor \-\-help \(\#5995\) - `3912e7d` feat\(mcp\): expose \.loopover\.yml config recommendations as a read\-only MCP tool \(\#6016\) - `a8acb4c` fix\(mcp\): document LOOPOVER\_LOGIN / GITHUB\_LOGIN in loopover\-mcp \-\-help \(\#6052\) - `cabc706` feat\(mcp\): add loopover\_set\_agent\_paused and loopover\_set\_action\_autonomy tools \(\#6102\) - `0ad33b7` fix\(webhook\): don't trust a sparse first\-ever sync as confirmed no linked issue - `cf1e22c` fix\(mcp\): make loopover\-mcp CLI failures respect \-\-json \(\#6113\) - `653b621` feat\(mcp\): register 4 maintainer/repo\-owner intake tools in packages/loopover\-mcp \(\#6199\) - `6f4713b` feat\(mcp\): add loopover\_get\_pr\_reviewability tool on both MCP servers - `2fbfd52` docs\(mcp\): clarify ambiguous loopover\-mcp stdio tool descriptions for LLM selection \(\#6270\) - `0d722ca` fix\(mcp\): complete tab\-completion for \`cache list\` \(\#6298\) - `7c81b73` feat\(mcp\): compute loopover\_lint\_pr\_text in\-process from the shared engine \(\#6308\) - `44570d0` feat\(mcp\): add \`tools search <query\>\` for fuzzy tool discovery \(\#6317\) - `860f777` fix\(mcp\): honor \-\-help for analyze\-branch and preflight - `c23639b` feat\(mcp\): compute loopover\_check\_slop\_risk in\-process from the shared engine \(\#6329\) - `f642d91` feat\(mcp\): categorize and group loopover\-mcp tools output \(\#6301\) \(\#6336\) - `bc7993c` refactor\(mcp\): consolidate local\-path redaction into one shared module \(\#6339\) - `a2f762a` fix\(mcp\): align env token precedence with the documented order \(\#6342\) - `03a43e9` feat\(mcp\): add telemetry enable/disable CLI command with persisted opt\-in \(\#6348\) - `d6fa47a` feat\(mcp\): add a typed posthog telemetry wrapper for the remote server \(\#6355\) - `11eaf1c` feat\(mcp\): instrument the remote tool\-dispatch chokepoint with PostHog events \(\#6358\) - `dec04c1` feat\(mcp\): enhance API compatibility status output for unparseable minimum version - `88b7684` fix\(mcp\): redact a parenthesis/bracket/colon\-prefixed local path in redactLocalPath - `40706e1` feat\(mcp\): add a typed PostHog wrapper module for packages/loopover\-mcp - `2e33517` fix\(mcp\): treat a bare \`help\` positional as \-\-help in parseOptions \(\#6257\) \(\#6362\) - `71151ff` feat\(loopover\)\!: full production cutover to loopover\.ai, retire gittensory\.aethereal\.dev routes - `572a5a7` fix\(mcp\): drop autonomy levels the server removed in \#4620 from the CLI \(\#6378\) - `aa83a48` feat\(mcp\): register the maintain REST surface as local stdio tools \(\#6382\) - `bc2f899` feat\(selfhost\): make LOOPOVER\_REVIEW\_OPS and LOOPOVER\_PUBLIC\_STATS \.loopover\.yml\-controllable - `9197680` feat\(mcp\): register the 8 miner write\-tools on the local stdio server \(\#6390\) - `7506cda` fix\(mcp\): sanitize every terminal path that prints API\-controlled text - `0d3f4cb` feat\(selfhost\): make LOOPOVER\_REVIEW\_DRAFT and LOOPOVER\_AUTO\_FILE\_DRIFT\_ISSUES \.loopover\.yml\-controllable - `fdd0a96` chore\(mcp\): remove dead referenceScorePreviewCommand export in local\-branch\.js - `ab11e8b` fix\(ci\): derive version\-copy floor from single source of truth - `354f3e9` docs: cover MCP tool\-call telemetry in the privacy boundary - `22faecf` feat\(mcp\): validate \.loopover\.yml offline by extracting buildFocusManifestValidation into @loopover/engine \(\#6425\) - `45fe399` feat\(mcp\): record local stdio tool calls at the dispatch chokepoint \(\#6432\) - `f096969` feat\(mcp\): register plan\-DAG tools \+ local scorer in packages/loopover\-mcp - `f82d2ca` chore: rename npm package metadata from gittensory to loopover - `53ce7b2` feat\(orb\): export a signed, anonymized federated calibration bundle \(opt\-in\) \(\#6505\) - `e4b0f8c` fix\(config\): scrub remaining pre\-rename gittensory references - `8ab3472` feat\(orb\): add the opt\-in federated collector transport client \(push/pull\) \(\#6537\) - `7ca394a` feat\(selfhost\): make LOOPOVER\_SWEEP\_WATCHDOG and LOOPOVER\_PR\_RECONCILIATION \.loopover\.yml\-controllable - `2ef93c0` fix\(mcp\): honor free\-text tests evidence in loopover\_check\_test\_evidence \(\#6618\) \(\#6657\) - `986a12a` fix\(ci\): stop draft PRs from wasting CI/review\-pipeline resources \(\#6670\) - `885336a` feat\(api\): add a REST route \+ CLI mirror for loopover\_get\_pr\_ai\_review\_findings \(\#6676\) - `7dbe357` docs\(mcp\): fix stale 'NOT WIRED YET' comment in telemetry\.ts \(\#6617\) - `bb028ec` feat\(mcp\): REST route \+ CLI mirror for loopover\_get\_eligibility\_plan \(\#6692\) - `b0677cd` feat\(mcp\): REST routes \+ CLI resource mirrors for finding\-taxonomy and enrichment\-analyzers \(\#6709\) - `cfd08ef` refactor\(gate\): delete the dead firstTimeContributorGrace surface end\-to\-end \(\#6714\) - `3f6591d` feat\(mcp\): register loopover\_close\_pr write\-tool in both MCP surfaces \(\#6615\) \(\#6715\) - `b9de572` refactor: consolidate duplicate bounded\-concurrency helpers onto mapWithConcurrency \(\#6602\) - `4d9d6c4` fix\(mcp\): rename enrichment\-analyzers resource URI to loopover:// - `544cb31` feat\(mcp\): mirror loopover\_monitor\_open\_prs to the stdio wrapper and CLI \(\#6789\) - `f8d1628` feat\(api\): add a REST route \+ CLI mirror for loopover\_evaluate\_escalation \(\#6805\) - `d45d8fd` feat\(api\): add a REST route \+ CLI mirror for loopover\_check\_test\_evidence \(\#6810\) - `1c566a0` fix\(auth\): give device\-flow polling its own rate\-limit budget - `a00c984` docs\(packages\): fix stale gittensory prose and audit citations - `4d5212e` feat\(api\): add a REST route \+ CLI mirror for loopover\_suggest\_boundary\_tests - `3287ab3` fix\(apps\): update remaining gittensory references across loopover\-miner\-ui, loopover\-ui, and loopover\-miner\-extension - `7f7ea50` feat\(api\): REST \+ CLI mirror for loopover\_build\_results\_payload \(\#6904\) - `96ee9c4` feat\(mcp\): add maintain onboarding\-pack CLI mirror \(\#6913\) - `68b8694` feat\(api\): add a REST route \+ CLI mirror for loopover\_simulate\_open\_pr\_pressure \(\#6915\) - `f1fb812` feat\(api\): REST \+ CLI mirror for loopover\_intake\_idea \(\#6916\) - `5347291` feat\(mcp\): add a maintain audit\-feed CLI mirror for loopover\_get\_agent\_audit\_feed \(\#6733\) \(\#6933\) - `71bc183` feat\(mcp\): add a loopover\_get\_maintainer\_lane CLI mirror \(\#6942\) - `d6cf892` feat\(api\): REST \+ stdio mirror for loopover\_build\_progress\_snapshot \(\#6943\) - `8fa47d1` feat\(api\): REST \+ stdio mirror for loopover\_plan\_idea\_claims \(\#6952\) - `7733371` feat\(mcp\): add a loopover\_get\_bounty\_advisory CLI mirror \(\#6954\) - `27c7c59` feat\(api\): REST \+ CLI mirror for loopover\_check\_improvement\_potential \(\#6955\) - `a4310f1` feat\(mcp\): add a maintain outcome\-calibration CLI mirror \(\#6960\) - `484c9c8` feat\(mcp\): add a contributor\-profile CLI command \(\#6961\) - `244988b` feat\(mcp\): CLI stdio mirror for loopover\_get\_repo\_outcome\_patterns \(\#6962\) - `c566906` feat\(api\): add GET /v1/repos/:owner/:repo/automation\-state \+ CLI mirror \(\#6742\) \(\#6964\) - `4966070` feat\(mcp\): CLI mirror for loopover\_explain\_gate\_disposition \(\#6966\) - `13bd48b` feat\(mcp\): CLI mirror for loopover\_draft\_pr\_body \(\#6974\) - `f1e9632` feat\(api\): add POST /v1/repos/:owner/:repo/repo\-docs/refresh \+ CLI mirror \(\#6973\) ## Changed Files - `.github/ISSUE_TEMPLATE/config.yml` - `.github/workflows/gittensor-impact.yml` - `.github/workflows/release-selfhost.yml` - `.github/workflows/selfhost.yml` - `.github/workflows/ui-preview.yml` - `.loopover.yml.example` - `apps/loopover-miner-extension/test/background.test.ts` - `apps/loopover-miner-extension/test/opportunity-badge.test.ts` - `apps/loopover-miner-ui/src/chat-api.test.ts` - `apps/loopover-miner-ui/src/governor.test.tsx` - `apps/loopover-miner-ui/src/ledgers.test.tsx` - `apps/loopover-miner-ui/src/lib/governor.ts` - `apps/loopover-miner-ui/src/lib/portfolio-queue-actions.ts` - `apps/loopover-miner-ui/src/portfolio-queue-actions.test.tsx` - `apps/loopover-miner-ui/src/portfolio-queue.test.tsx` - `apps/loopover-miner-ui/src/styles.css` - `apps/loopover-miner-ui/vite-attempt-api.ts` - `apps/loopover-miner-ui/vite-auth.ts` - `apps/loopover-miner-ui/vite-chat-api.ts` - `apps/loopover-miner-ui/vite-discover-api.ts` - `apps/loopover-miner-ui/vite-governor-api.ts` - `apps/loopover-miner-ui/vite-ledgers-api.ts` - `apps/loopover-miner-ui/vite-portfolio-queue-actions-api.ts` - `apps/loopover-miner-ui/vite-portfolio-queue-api.ts` - `apps/loopover-miner-ui/vite-ranked-candidates-api.ts` - `apps/loopover-miner-ui/vite-run-state-api.ts` - `apps/loopover-miner-ui/vite.config.ts` - `apps/loopover-ui/content/docs/self-hosting-configuration.mdx` - `apps/loopover-ui/content/docs/self-hosting-operations.mdx` - `apps/loopover-ui/public/openapi.json` - `apps/loopover-ui/src/components/site/app-panels/gate-ramp-control.test.tsx` - `apps/loopover-ui/src/components/site/app-panels/maintainer-settings.tsx` - `apps/loopover-ui/src/components/site/github-stats-chip.test.tsx` - `apps/loopover-ui/src/components/site/github-stats-chip.tsx` - `apps/loopover-ui/src/components/site/proof-of-power-stats.test.tsx` - `apps/loopover-ui/src/lib/browser-sentry.test.ts` - `apps/loopover-ui/src/lib/maintainer-settings-editable.test.ts` - `apps/loopover-ui/src/lib/maintainer-settings-editable.ts` - `apps/loopover-ui/wrangler.jsonc` - `config/examples/loopover.full.yml` - `grafana/dashboards/github-prs.json` - `grafana/dashboards/resource-hub.json` - `migrations/0152_pull_request_body_observed_at.sql` - `migrations/0161_drop_first_time_contributor_grace.sql` - `package-lock.json` - `package.json` - `packages/loopover-engine/package.json` - `packages/loopover-engine/README.md` - `packages/loopover-engine/src/advisory/gate-advisory.ts` - `packages/loopover-engine/src/config-lint.ts` - `packages/loopover-engine/src/focus-manifest-validation.ts` - `packages/loopover-engine/src/focus-manifest.ts` - `packages/loopover-engine/src/index.ts` - `packages/loopover-engine/src/pr-body-draft.ts` - `packages/loopover-engine/src/predicted-gate.ts` - `packages/loopover-engine/src/signals/change-guardrail.ts` - `packages/loopover-engine/src/signals/engine.ts` - `packages/loopover-engine/src/signals/pr-text-lint.ts` - `packages/loopover-engine/src/signals/test-evidence.ts` - `packages/loopover-engine/src/types/manifest-deps-types.ts` - `packages/loopover-engine/src/types/predicted-gate-types.ts` - `packages/loopover-engine/test/gate-dispositions.test.ts` - `packages/loopover-mcp/bin/loopover-mcp.js` - `packages/loopover-mcp/lib/cli-error.js` - `packages/loopover-mcp/lib/local-branch.js` - `packages/loopover-mcp/lib/redact-local-path.js` - `packages/loopover-mcp/lib/telemetry.js` - `packages/loopover-mcp/package.json` - `packages/loopover-mcp/README.md` - `packages/loopover-miner/lib/github-token-resolution.js` - `packages/loopover-miner/package.json` - `packages/loopover-ui-kit/package.json` - `packages/loopover-ui-kit/src/theme.css` - `README.md` - `review-enrichment/Dockerfile` - `review-enrichment/README.md` - `review-enrichment/src/upload-sourcemaps.ts` - `review-enrichment/test/sentry-upload.test.ts` - `scripts/check-docs-drift.mjs` - `scripts/check-manifest-drift.mjs` - `scripts/check-mcp-package.mjs` - `scripts/check-ui-mcp-version-copy.d.mts` - `scripts/check-ui-mcp-version-copy.mjs` - `scripts/loopover-config-lint.ts` - `src/api/routes.ts` - `src/auth/rate-limit.ts` - `src/config/gittensory-repo-focus-manifest.ts` - `src/config/loopover-repo-focus-manifest.ts` - `src/db/repositories.ts` - `src/db/schema.ts` - `src/env.d.ts` - `src/github/backfill.ts` - `src/index.ts` - `src/mcp/server.ts` - `src/mcp/telemetry.ts` - `src/openapi/schemas.ts` - `src/openapi/spec.ts` - `src/orb/analytics.ts` - `src/orb/federated-bundle.ts` - `src/orb/federated-collector.ts` - `src/queue/ci-resolution.ts` - `src/queue/gate-checks.ts` - `src/queue/job-dispatch.ts` - `src/queue/patchless-secret-scan.ts` - `src/queue/processors.ts` - `src/review/enrichment-analyzers-taxonomy.ts` - `src/review/maintainer-recap-wire.ts` - `src/review/ops-wire.ts` - `src/review/pr-reconciliation.ts` - `src/review/public-stats.ts` - `src/review/repo-agnostic-capability-audit.md` - `src/review/sweep-watchdog.ts` - `src/rules/advisory.ts` - `src/selfhost/ai.ts` - `src/selfhost/audit.ts` - `src/selfhost/config-lint.ts` - `src/selfhost/d1-adapter.ts` - `src/selfhost/d1-size-probe.ts` - `src/selfhost/health.ts` - `src/selfhost/load-file-secrets.ts` - `src/selfhost/migrate.ts` - `src/selfhost/orb-collector.ts` - `src/selfhost/pg-dialect.ts` - `src/selfhost/private-config.ts` - `src/selfhost/queue-common.ts` - `src/selfhost/vectorize.ts` - `src/services/agent-action-executor.ts` - `src/services/agent-approval-queue.ts` - `src/services/ai-review.ts` - `src/services/automation-state.ts` - `src/services/draft.ts` - `src/services/focus-manifest-validation.ts` - `src/services/maintainer-recap.ts` - `src/services/notify-discord.ts` - `src/services/outcome-calibration.ts` - `src/services/plan-dag.ts` - `src/services/pr-body-draft.ts` - `src/services/self-dogfood-registration-pack.ts` - `src/settings/agent-actions.ts` - `src/signals/boundary-test-generation.ts` - `src/signals/change-guardrail.ts` - `src/signals/check-summary.ts` - `src/signals/focus-manifest-loader.ts` - `src/signals/focus-manifest.ts` - `src/signals/local-branch.ts` - `src/signals/local-scorer.ts` - `src/signals/path-matchers.ts` - `src/signals/reward-risk.ts` - `src/signals/settings-preview.ts` - `src/signals/slop.ts` - `src/signals/test-evidence.ts` - `src/signals/unlinked-issue-candidates.ts` - `src/types.ts` - `src/upstream/ruleset.ts` - `test/fixtures/engine-parity/predicted-gate/first-time-grace-inert.ts` - `test/fixtures/engine-parity/predicted-gate/golden/first-time-grace-inert.json` - `test/fixtures/engine-parity/predicted-gate/index.ts` - `test/integration/api.test.ts` - `test/integration/public-stats-route-error.test.ts` - `test/integration/public-stats-route.test.ts` - `test/integration/routes-errors.test.ts` - `test/unit/agent-action-executor.test.ts` - `test/unit/agent-actions.test.ts` - `test/unit/agent-approval-queue.test.ts` - `test/unit/auth.test.ts` - `test/unit/backfill-2.test.ts` - `test/unit/change-guardrail.test.ts` - `test/unit/check-manifest-drift-script.test.ts` - `test/unit/check-ui-mcp-version-copy-script.test.ts` - `test/unit/ci-resolution.test.ts` - `test/unit/db-parsers.test.ts` - `test/unit/draft.test.ts` - `test/unit/enrichment-analyzers-taxonomy.test.ts` - `test/unit/federated-bundle.test.ts` - `test/unit/federated-collector.test.ts` - `test/unit/focus-manifest-validation.test.ts` - `test/unit/focus-manifest.test.ts` - `test/unit/gate-check-policy.test.ts` - `test/unit/gittensory-focus-manifest.test.ts` - `test/unit/index.test.ts` - `test/unit/local-branch.test.ts` - `test/unit/local-scorer-adapter.test.ts` - `test/unit/loopover-focus-manifest.test.ts` - `test/unit/maintainer-activation.test.ts` - `test/unit/mcp-automation-state.test.ts` - `test/unit/mcp-check-test-evidence.test.ts` - `test/unit/mcp-cli-analyze-branch.test.ts` - `test/unit/mcp-cli-basics.test.ts` - `test/unit/mcp-cli-boundary-tests-tool.test.ts` - `test/unit/mcp-cli-bounty-advisory.test.ts` - `test/unit/mcp-cli-completion-spec.test.ts` - `test/unit/mcp-cli-contributor-profile.test.ts` - `test/unit/mcp-cli-doctor.test.ts` - `test/unit/mcp-cli-draft-pr-body.test.ts` - `test/unit/mcp-cli-env-token-precedence.test.ts` - `test/unit/mcp-cli-evaluate-escalation-tool.test.ts` - `test/unit/mcp-cli-explain-gate-disposition.test.ts` - `test/unit/mcp-cli-improvement-potential.test.ts` - `test/unit/mcp-cli-intake-idea-tool.test.ts` - `test/unit/mcp-cli-intake-tools.test.ts` - `test/unit/mcp-cli-maintain-tools.test.ts` - `test/unit/mcp-cli-maintain.test.ts` - `test/unit/mcp-cli-maintainer-lane.test.ts` - `test/unit/mcp-cli-monitor-open-prs.test.ts` - `test/unit/mcp-cli-open-pr-pressure-tool.test.ts` - `test/unit/mcp-cli-packets.test.ts` - `test/unit/mcp-cli-plan-idea-claims-tool.test.ts` - `test/unit/mcp-cli-plan-scorer-tools.test.ts` - `test/unit/mcp-cli-pr-ai-review-findings.test.ts` - `test/unit/mcp-cli-pr-reviewability.test.ts` - `test/unit/mcp-cli-profiles.test.ts` - `test/unit/mcp-cli-progress-snapshot-tool.test.ts` - `test/unit/mcp-cli-repo-outcome-patterns.test.ts` - `test/unit/mcp-cli-results-payload-tool.test.ts` - `test/unit/mcp-cli-review-pr.test.ts` - `test/unit/mcp-cli-telemetry.test.ts` - `test/unit/mcp-cli-terminal-sanitization.test.ts` - `test/unit/mcp-cli-test-evidence-tool.test.ts` - `test/unit/mcp-cli-tools-search.test.ts` - `test/unit/mcp-cli-tools.test.ts` - `test/unit/mcp-cli-validate-config-offline.test.ts` - `test/unit/mcp-cli-write-tools.test.ts` - `test/unit/mcp-config-recommendation.test.ts` - `test/unit/mcp-discovery.test.ts` - `test/unit/mcp-enrichment-analyzers.test.ts` - `test/unit/mcp-lint-pr-text.test.ts` - `test/unit/mcp-local-check-slop-risk.test.ts` - `test/unit/mcp-local-telemetry-chokepoint.test.ts` - `test/unit/mcp-local-telemetry.test.ts` - `test/unit/mcp-output-schemas.test.ts` - `test/unit/mcp-pr-reviewability.test.ts` - `test/unit/mcp-registration-readiness.test.ts` - `test/unit/mcp-server-telemetry.test.ts` - `test/unit/mcp-skipped-pr-audit.test.ts` - `test/unit/mcp-telemetry.test.ts` - `test/unit/mcp-tool-categories.test.ts` - `test/unit/mcp-tool-rename-aliases.test.ts` - `test/unit/mcp-write-tools.test.ts` - `test/unit/miner-github-token-resolution.test.ts` - `test/unit/ops-wire.test.ts` - `test/unit/policy-sanitizer.test.ts` - `test/unit/pr-detail-durable-cache.test.ts` - `test/unit/pr-reconciliation.test.ts` - `test/unit/predicted-gate-engine-coverage.test.ts` - `test/unit/predicted-gate.test.ts` - `test/unit/public-stats.test.ts` - `test/unit/queue-2.test.ts` - `test/unit/queue-4.test.ts` - `test/unit/queue-5.test.ts` - `test/unit/queue-lifecycle-guards.test.ts` - `test/unit/queue.test.ts` - `test/unit/redact-local-path.test.ts` - `test/unit/registration-readiness.test.ts` - `test/unit/repo-policy-readiness.test.ts` - `test/unit/repository-settings-enforcement.test.ts` - `test/unit/routes-agent-approval.test.ts` - `test/unit/routes-boundary-tests.test.ts` - `test/unit/routes-evaluate-escalation.test.ts` - `test/unit/routes-improvement-potential.test.ts` - `test/unit/routes-intake-idea.test.ts` - `test/unit/routes-open-pr-pressure.test.ts` - `test/unit/routes-plan-idea-claims.test.ts` - `test/unit/routes-pr-ai-review-findings.test.ts` - `test/unit/routes-progress-snapshot.test.ts` - `test/unit/routes-repo-doc-refresh.test.ts` - `test/unit/routes-results-payload.test.ts` - `test/unit/routes-taxonomy-mirrors.test.ts` - `test/unit/routes-test-evidence.test.ts` - `test/unit/rules.test.ts` - `test/unit/self-dogfood-registration-pack.test.ts` - `test/unit/selfhost-ai.test.ts` - `test/unit/selfhost-config-lint.test.ts` - `test/unit/selfhost-grafana-resource-hub-dashboard.test.ts` - `test/unit/settings-preview.test.ts` - `test/unit/signals-coverage.test.ts` - `test/unit/signals-v2.test.ts` - `test/unit/signals.test.ts` - `test/unit/support/mcp-cli-harness.ts` - `test/unit/sweep-watchdog.test.ts` - `test/unit/test-evidence-report.test.ts` - `test/unit/unified-comment-parity.test.ts` - `test/unit/upstream-ruleset.test.ts` - `worker-configuration.d.ts` - `wrangler.jsonc` ## Release-Prep Checklist - [ ] Bump `packages/loopover-mcp/package.json` to `4.0.0` - [ ] Bump the CLI `packageVersion` constant to `4.0.0` - [ ] Update MCP compatibility metadata minimum supported and latest recommended versions to `4.0.0` - [ ] Generate `packages/loopover-mcp/CHANGELOG.md` with a `mcp-v4.0.0` section - [ ] Run `npm run build:mcp` - [ ] Run `npm run test:mcp-pack` - [ ] Run `npm run changelog:check:mcp` - [ ] Run `npm run actionlint` - [ ] Run `npm run test:release:mcp` - [ ] Merge the release-prep PR - [ ] Tag `mcp-v4.0.0` - [ ] Watch npm trusted publishing and the GitHub Release job
Summary
An MCP release appears due.
4.0.0mcp-v3.0.00.9.03.0.084Unreleased MCP-Related Commits
a42f0cbdocs(core): rename gittensory prose to loopover in signals/selfhost/services3175d74feat(gate): configurable advisory check-runs so a stuck external status never freezes the gate (feat(gate): configurable advisory check-runs so a non-resolving external status never blocks or stalls the gate forever #4372)6b5b020fix(rebrand): rename gittensory-repo-focus-manifest.ts module6e059b0feat(mcp): expose skipped-PR audit trail as a maintainer MCP toolf7266c4feat(mcp): expose repo registration readiness as a read-only MCP tool4076df1fix(signals): filter public-unsafe wantedPaths/preferredLabels from manifest findings (fix(signals): filter public-unsafe wantedPaths/preferredLabels from manifest findings #5967)46581d7fix(signals): filter wantedPaths before interpolating focus-area PR guidance (fix(signals): filter wantedPaths before interpolating focus-area PR guidance #5987)df54527fix(review): make size-gate file/line thresholds configurable15e15a4fix(mcp): make decision-pack and repo-decision CLI commands honor --help (fix(mcp): make decision-pack and repo-decision CLI commands honor --help #5995)3912e7dfeat(mcp): expose .loopover.yml config recommendations as a read-only MCP tool (feat(mcp): expose .loopover.yml config recommendations as a read-only MCP tool #6016)a8acb4cfix(mcp): document LOOPOVER_LOGIN / GITHUB_LOGIN in loopover-mcp --help (fix(mcp): document LOOPOVER_LOGIN / GITHUB_LOGIN in loopover-mcp --help #6052)cabc706feat(mcp): add loopover_set_agent_paused and loopover_set_action_autonomy tools (feat(mcp): add loopover_set_agent_paused and loopover_set_action_autonomy tools #6102)0ad33b7fix(webhook): don't trust a sparse first-ever sync as confirmed no linked issuecf1e22cfix(mcp): make loopover-mcp CLI failures respect --json (fix(mcp): make loopover-mcp CLI failures respect --json #6113)653b621feat(mcp): register 4 maintainer/repo-owner intake tools in packages/loopover-mcp (feat(mcp): register 4 maintainer/repo-owner intake tools in packages/loopover-mcp #6199)6f4713bfeat(mcp): add loopover_get_pr_reviewability tool on both MCP servers2fbfd52docs(mcp): clarify ambiguous loopover-mcp stdio tool descriptions for LLM selection (docs(mcp): clarify ambiguous loopover-mcp stdio tool descriptions for LLM selection #6270)0d722cafix(mcp): complete tab-completion for `cache list` (fix(mcp): complete tab-completion forcache list#6298)7c81b73feat(mcp): compute loopover_lint_pr_text in-process from the shared engine (feat(mcp): compute loopover_lint_pr_text in-process from the shared engine #6308)44570d0feat(mcp): add `tools search <query>` for fuzzy tool discovery (feat(mcp): addtools search <query>for fuzzy tool discovery #6317)860f777fix(mcp): honor --help for analyze-branch and preflightc23639bfeat(mcp): compute loopover_check_slop_risk in-process from the shared engine (feat(mcp): compute loopover_check_slop_risk in-process from the shared engine #6329)f642d91feat(mcp): categorize and group loopover-mcp tools output (feat(mcp): add tool categorization/grouping toloopover-mcp toolsoutput #6301) (feat(mcp): categorize and group loopover-mcp tools output (#6301) #6336)bc7993crefactor(mcp): consolidate local-path redaction into one shared module (refactor(mcp): consolidate local-path redaction into one shared module #6339)a2f762afix(mcp): align env token precedence with the documented order (fix(mcp): align env token precedence with the documented order #6342)03a43e9feat(mcp): add telemetry enable/disable CLI command with persisted opt-in (feat(mcp): add telemetry enable/disable CLI command with persisted opt-in #6348)d6fa47afeat(mcp): add a typed posthog telemetry wrapper for the remote server (feat(mcp): add a typed posthog telemetry wrapper for the remote server #6355)11eaf1cfeat(mcp): instrument the remote tool-dispatch chokepoint with PostHog events (feat(mcp): instrument the remote tool-dispatch chokepoint with PostHog events #6358)dec04c1feat(mcp): enhance API compatibility status output for unparseable minimum version88b7684fix(mcp): redact a parenthesis/bracket/colon-prefixed local path in redactLocalPath40706e1feat(mcp): add a typed PostHog wrapper module for packages/loopover-mcp2e33517fix(mcp): treat a bare `help` positional as --help in parseOptions (fix(mcp): barehelppositional (no dashes) is silently swallowed for decision-pack/repo-decision/review-pr #6257) (fix(mcp): treat a barehelppositional as --help in parseOptions (#6257) #6362)71151fffeat(loopover)!: full production cutover to loopover.ai, retire gittensory.aethereal.dev routes572a5a7fix(mcp): drop autonomy levels the server removed in Resolve dead config branches (wire or remove) #4620 from the CLI (fix(mcp): drop autonomy levels the server removed in #4620 from the CLI #6378)aa83a48feat(mcp): register the maintain REST surface as local stdio tools (feat(mcp): register the maintain REST surface as local stdio tools #6382)bc2f899feat(selfhost): make LOOPOVER_REVIEW_OPS and LOOPOVER_PUBLIC_STATS .loopover.yml-controllable9197680feat(mcp): register the 8 miner write-tools on the local stdio server (feat(mcp): register the 8 miner write-tools on the local stdio server #6390)7506cdafix(mcp): sanitize every terminal path that prints API-controlled text0d3f4cbfeat(selfhost): make LOOPOVER_REVIEW_DRAFT and LOOPOVER_AUTO_FILE_DRIFT_ISSUES .loopover.yml-controllablefdd0a96chore(mcp): remove dead referenceScorePreviewCommand export in local-branch.jsab11e8bfix(ci): derive version-copy floor from single source of truth354f3e9docs: cover MCP tool-call telemetry in the privacy boundary22faecffeat(mcp): validate .loopover.yml offline by extracting buildFocusManifestValidation into @loopover/engine (feat(mcp): validate .loopover.yml offline by extracting buildFocusManifestValidation into @loopover/engine #6425)45fe399feat(mcp): record local stdio tool calls at the dispatch chokepoint (feat(mcp): record local stdio tool calls at the dispatch chokepoint #6432)f096969feat(mcp): register plan-DAG tools + local scorer in packages/loopover-mcpf82d2cachore: rename npm package metadata from gittensory to loopover53ce7b2feat(orb): export a signed, anonymized federated calibration bundle (opt-in) (feat(orb): export a signed, anonymized federated calibration bundle (opt-in) #6505)e4b0f8cfix(config): scrub remaining pre-rename gittensory references8ab3472feat(orb): add the opt-in federated collector transport client (push/pull) (feat(orb): add the opt-in federated collector transport client (push/pull) #6537)7ca394afeat(selfhost): make LOOPOVER_SWEEP_WATCHDOG and LOOPOVER_PR_RECONCILIATION .loopover.yml-controllable2ef93c0fix(mcp): honor free-text tests evidence in loopover_check_test_evidence (MCP: loopover_check_test_evidence ignores free-text tests evidence its sibling tools already honor #6618) (fix(mcp): honor free-text tests evidence in loopover_check_test_evidence #6657)986a12afix(ci): stop draft PRs from wasting CI/review-pipeline resources (fix(anti-abuse): draft PRs still burn CI minutes and skip the AI-review-skip default #6670)885336afeat(api): add a REST route + CLI mirror for loopover_get_pr_ai_review_findings (feat(api): add a REST route + CLI mirror for loopover_get_pr_ai_review_findings #6676)7dbe357docs(mcp): fix stale 'NOT WIRED YET' comment in telemetry.ts (MCP: fix stale 'NOT WIRED YET' comment in src/mcp/telemetry.ts (superseded by #6237) #6617)bb028ecfeat(mcp): REST route + CLI mirror for loopover_get_eligibility_plan (feat(mcp): REST route + CLI mirror for loopover_get_eligibility_plan #6692)b0677cdfeat(mcp): REST routes + CLI resource mirrors for finding-taxonomy and enrichment-analyzers (feat(mcp): REST routes + CLI resource mirrors for finding-taxonomy and enrichment-analyzers #6709)cfd08efrefactor(gate): delete the dead firstTimeContributorGrace surface end-to-end (refactor(gate): delete the dead firstTimeContributorGrace surface end-to-end #6714)3f6591dfeat(mcp): register loopover_close_pr write-tool in both MCP surfaces (MCP: add loopover_close_pr write-tool to match its 8 registered siblings #6615) (feat(mcp): register loopover_close_pr write-tool in both MCP surfaces (#6615) #6715)b9de572refactor: consolidate duplicate bounded-concurrency helpers onto mapWithConcurrency (Consolidate duplicate bounded-concurrency map helpers in src/queue and src/signals #6602)4d9d6c4fix(mcp): rename enrichment-analyzers resource URI to loopover://544cb31feat(mcp): mirror loopover_monitor_open_prs to the stdio wrapper and CLI (feat(mcp): mirror loopover_monitor_open_prs to the stdio wrapper and CLI #6789)f8d1628feat(api): add a REST route + CLI mirror for loopover_evaluate_escalation (feat(api): add a REST route + CLI mirror for loopover_evaluate_escalation #6805)d45d8fdfeat(api): add a REST route + CLI mirror for loopover_check_test_evidence (feat(api): add a REST route + CLI mirror for loopover_check_test_evidence #6810)1c566a0fix(auth): give device-flow polling its own rate-limit budgeta00c984docs(packages): fix stale gittensory prose and audit citations4d5212efeat(api): add a REST route + CLI mirror for loopover_suggest_boundary_tests3287ab3fix(apps): update remaining gittensory references across loopover-miner-ui, loopover-ui, and loopover-miner-extension7f7ea50feat(api): REST + CLI mirror for loopover_build_results_payload (feat(api): REST + CLI mirror for loopover_build_results_payload #6904)96ee9c4feat(mcp): add maintain onboarding-pack CLI mirror (feat(mcp): add maintain onboarding-pack CLI mirror #6913)68b8694feat(api): add a REST route + CLI mirror for loopover_simulate_open_pr_pressure (feat(api): add a REST route + CLI mirror for loopover_simulate_open_pr_pressure #6915)f1fb812feat(api): REST + CLI mirror for loopover_intake_idea (feat(api): REST + CLI mirror for loopover_intake_idea #6916)5347291feat(mcp): add a maintain audit-feed CLI mirror for loopover_get_agent_audit_feed (CLI mirror for loopover_get_agent_audit_feed #6733) (feat(mcp): add a maintain audit-feed CLI mirror for loopover_get_agent_audit_feed #6933)71bc183feat(mcp): add a loopover_get_maintainer_lane CLI mirror (feat(mcp): add a loopover_get_maintainer_lane CLI mirror #6942)d6cf892feat(api): REST + stdio mirror for loopover_build_progress_snapshot (feat(api): REST + stdio mirror for loopover_build_progress_snapshot #6943)8fa47d1feat(api): REST + stdio mirror for loopover_plan_idea_claims (feat(api): REST + stdio mirror for loopover_plan_idea_claims #6952)7733371feat(mcp): add a loopover_get_bounty_advisory CLI mirror (feat(mcp): add a loopover_get_bounty_advisory CLI mirror #6954)27c7c59feat(api): REST + CLI mirror for loopover_check_improvement_potential (feat(api): REST + CLI mirror for loopover_check_improvement_potential #6955)a4310f1feat(mcp): add a maintain outcome-calibration CLI mirror (feat(mcp): add a maintain outcome-calibration CLI mirror #6960)484c9c8feat(mcp): add a contributor-profile CLI command (feat(mcp): add a contributor-profile CLI command #6961)244988bfeat(mcp): CLI stdio mirror for loopover_get_repo_outcome_patterns (feat(mcp): CLI stdio mirror for loopover_get_repo_outcome_patterns #6962)c566906feat(api): add GET /v1/repos/:owner/:repo/automation-state + CLI mirror (REST + CLI mirror for loopover_get_automation_state #6742) (feat(api): add GET /v1/repos/:owner/:repo/automation-state + CLI mirror #6964)4966070feat(mcp): CLI mirror for loopover_explain_gate_disposition (feat(mcp): CLI mirror for loopover_explain_gate_disposition #6966)13bd48bfeat(mcp): CLI mirror for loopover_draft_pr_body (feat(mcp): CLI mirror for loopover_draft_pr_body #6974)f1e9632feat(api): add POST /v1/repos/:owner/:repo/repo-docs/refresh + CLI mirror (feat(api): add POST /v1/repos/:owner/:repo/repo-docs/refresh + CLI mirror #6973)Changed Files
.github/ISSUE_TEMPLATE/config.yml.github/workflows/gittensor-impact.yml.github/workflows/release-selfhost.yml.github/workflows/selfhost.yml.github/workflows/ui-preview.yml.loopover.yml.exampleapps/loopover-miner-extension/test/background.test.tsapps/loopover-miner-extension/test/opportunity-badge.test.tsapps/loopover-miner-ui/src/chat-api.test.tsapps/loopover-miner-ui/src/governor.test.tsxapps/loopover-miner-ui/src/ledgers.test.tsxapps/loopover-miner-ui/src/lib/governor.tsapps/loopover-miner-ui/src/lib/portfolio-queue-actions.tsapps/loopover-miner-ui/src/portfolio-queue-actions.test.tsxapps/loopover-miner-ui/src/portfolio-queue.test.tsxapps/loopover-miner-ui/src/styles.cssapps/loopover-miner-ui/vite-attempt-api.tsapps/loopover-miner-ui/vite-auth.tsapps/loopover-miner-ui/vite-chat-api.tsapps/loopover-miner-ui/vite-discover-api.tsapps/loopover-miner-ui/vite-governor-api.tsapps/loopover-miner-ui/vite-ledgers-api.tsapps/loopover-miner-ui/vite-portfolio-queue-actions-api.tsapps/loopover-miner-ui/vite-portfolio-queue-api.tsapps/loopover-miner-ui/vite-ranked-candidates-api.tsapps/loopover-miner-ui/vite-run-state-api.tsapps/loopover-miner-ui/vite.config.tsapps/loopover-ui/content/docs/self-hosting-configuration.mdxapps/loopover-ui/content/docs/self-hosting-operations.mdxapps/loopover-ui/public/openapi.jsonapps/loopover-ui/src/components/site/app-panels/gate-ramp-control.test.tsxapps/loopover-ui/src/components/site/app-panels/maintainer-settings.tsxapps/loopover-ui/src/components/site/github-stats-chip.test.tsxapps/loopover-ui/src/components/site/github-stats-chip.tsxapps/loopover-ui/src/components/site/proof-of-power-stats.test.tsxapps/loopover-ui/src/lib/browser-sentry.test.tsapps/loopover-ui/src/lib/maintainer-settings-editable.test.tsapps/loopover-ui/src/lib/maintainer-settings-editable.tsapps/loopover-ui/wrangler.jsoncconfig/examples/loopover.full.ymlgrafana/dashboards/github-prs.jsongrafana/dashboards/resource-hub.jsonmigrations/0152_pull_request_body_observed_at.sqlmigrations/0161_drop_first_time_contributor_grace.sqlpackage-lock.jsonpackage.jsonpackages/loopover-engine/package.jsonpackages/loopover-engine/README.mdpackages/loopover-engine/src/advisory/gate-advisory.tspackages/loopover-engine/src/config-lint.tspackages/loopover-engine/src/focus-manifest-validation.tspackages/loopover-engine/src/focus-manifest.tspackages/loopover-engine/src/index.tspackages/loopover-engine/src/pr-body-draft.tspackages/loopover-engine/src/predicted-gate.tspackages/loopover-engine/src/signals/change-guardrail.tspackages/loopover-engine/src/signals/engine.tspackages/loopover-engine/src/signals/pr-text-lint.tspackages/loopover-engine/src/signals/test-evidence.tspackages/loopover-engine/src/types/manifest-deps-types.tspackages/loopover-engine/src/types/predicted-gate-types.tspackages/loopover-engine/test/gate-dispositions.test.tspackages/loopover-mcp/bin/loopover-mcp.jspackages/loopover-mcp/lib/cli-error.jspackages/loopover-mcp/lib/local-branch.jspackages/loopover-mcp/lib/redact-local-path.jspackages/loopover-mcp/lib/telemetry.jspackages/loopover-mcp/package.jsonpackages/loopover-mcp/README.mdpackages/loopover-miner/lib/github-token-resolution.jspackages/loopover-miner/package.jsonpackages/loopover-ui-kit/package.jsonpackages/loopover-ui-kit/src/theme.cssREADME.mdreview-enrichment/Dockerfilereview-enrichment/README.mdreview-enrichment/src/upload-sourcemaps.tsreview-enrichment/test/sentry-upload.test.tsscripts/check-docs-drift.mjsscripts/check-manifest-drift.mjsscripts/check-mcp-package.mjsscripts/check-ui-mcp-version-copy.d.mtsscripts/check-ui-mcp-version-copy.mjsscripts/loopover-config-lint.tssrc/api/routes.tssrc/auth/rate-limit.tssrc/config/gittensory-repo-focus-manifest.tssrc/config/loopover-repo-focus-manifest.tssrc/db/repositories.tssrc/db/schema.tssrc/env.d.tssrc/github/backfill.tssrc/index.tssrc/mcp/server.tssrc/mcp/telemetry.tssrc/openapi/schemas.tssrc/openapi/spec.tssrc/orb/analytics.tssrc/orb/federated-bundle.tssrc/orb/federated-collector.tssrc/queue/ci-resolution.tssrc/queue/gate-checks.tssrc/queue/job-dispatch.tssrc/queue/patchless-secret-scan.tssrc/queue/processors.tssrc/review/enrichment-analyzers-taxonomy.tssrc/review/maintainer-recap-wire.tssrc/review/ops-wire.tssrc/review/pr-reconciliation.tssrc/review/public-stats.tssrc/review/repo-agnostic-capability-audit.mdsrc/review/sweep-watchdog.tssrc/rules/advisory.tssrc/selfhost/ai.tssrc/selfhost/audit.tssrc/selfhost/config-lint.tssrc/selfhost/d1-adapter.tssrc/selfhost/d1-size-probe.tssrc/selfhost/health.tssrc/selfhost/load-file-secrets.tssrc/selfhost/migrate.tssrc/selfhost/orb-collector.tssrc/selfhost/pg-dialect.tssrc/selfhost/private-config.tssrc/selfhost/queue-common.tssrc/selfhost/vectorize.tssrc/services/agent-action-executor.tssrc/services/agent-approval-queue.tssrc/services/ai-review.tssrc/services/automation-state.tssrc/services/draft.tssrc/services/focus-manifest-validation.tssrc/services/maintainer-recap.tssrc/services/notify-discord.tssrc/services/outcome-calibration.tssrc/services/plan-dag.tssrc/services/pr-body-draft.tssrc/services/self-dogfood-registration-pack.tssrc/settings/agent-actions.tssrc/signals/boundary-test-generation.tssrc/signals/change-guardrail.tssrc/signals/check-summary.tssrc/signals/focus-manifest-loader.tssrc/signals/focus-manifest.tssrc/signals/local-branch.tssrc/signals/local-scorer.tssrc/signals/path-matchers.tssrc/signals/reward-risk.tssrc/signals/settings-preview.tssrc/signals/slop.tssrc/signals/test-evidence.tssrc/signals/unlinked-issue-candidates.tssrc/types.tssrc/upstream/ruleset.tstest/fixtures/engine-parity/predicted-gate/first-time-grace-inert.tstest/fixtures/engine-parity/predicted-gate/golden/first-time-grace-inert.jsontest/fixtures/engine-parity/predicted-gate/index.tstest/integration/api.test.tstest/integration/public-stats-route-error.test.tstest/integration/public-stats-route.test.tstest/integration/routes-errors.test.tstest/unit/agent-action-executor.test.tstest/unit/agent-actions.test.tstest/unit/agent-approval-queue.test.tstest/unit/auth.test.tstest/unit/backfill-2.test.tstest/unit/change-guardrail.test.tstest/unit/check-manifest-drift-script.test.tstest/unit/check-ui-mcp-version-copy-script.test.tstest/unit/ci-resolution.test.tstest/unit/db-parsers.test.tstest/unit/draft.test.tstest/unit/enrichment-analyzers-taxonomy.test.tstest/unit/federated-bundle.test.tstest/unit/federated-collector.test.tstest/unit/focus-manifest-validation.test.tstest/unit/focus-manifest.test.tstest/unit/gate-check-policy.test.tstest/unit/gittensory-focus-manifest.test.tstest/unit/index.test.tstest/unit/local-branch.test.tstest/unit/local-scorer-adapter.test.tstest/unit/loopover-focus-manifest.test.tstest/unit/maintainer-activation.test.tstest/unit/mcp-automation-state.test.tstest/unit/mcp-check-test-evidence.test.tstest/unit/mcp-cli-analyze-branch.test.tstest/unit/mcp-cli-basics.test.tstest/unit/mcp-cli-boundary-tests-tool.test.tstest/unit/mcp-cli-bounty-advisory.test.tstest/unit/mcp-cli-completion-spec.test.tstest/unit/mcp-cli-contributor-profile.test.tstest/unit/mcp-cli-doctor.test.tstest/unit/mcp-cli-draft-pr-body.test.tstest/unit/mcp-cli-env-token-precedence.test.tstest/unit/mcp-cli-evaluate-escalation-tool.test.tstest/unit/mcp-cli-explain-gate-disposition.test.tstest/unit/mcp-cli-improvement-potential.test.tstest/unit/mcp-cli-intake-idea-tool.test.tstest/unit/mcp-cli-intake-tools.test.tstest/unit/mcp-cli-maintain-tools.test.tstest/unit/mcp-cli-maintain.test.tstest/unit/mcp-cli-maintainer-lane.test.tstest/unit/mcp-cli-monitor-open-prs.test.tstest/unit/mcp-cli-open-pr-pressure-tool.test.tstest/unit/mcp-cli-packets.test.tstest/unit/mcp-cli-plan-idea-claims-tool.test.tstest/unit/mcp-cli-plan-scorer-tools.test.tstest/unit/mcp-cli-pr-ai-review-findings.test.tstest/unit/mcp-cli-pr-reviewability.test.tstest/unit/mcp-cli-profiles.test.tstest/unit/mcp-cli-progress-snapshot-tool.test.tstest/unit/mcp-cli-repo-outcome-patterns.test.tstest/unit/mcp-cli-results-payload-tool.test.tstest/unit/mcp-cli-review-pr.test.tstest/unit/mcp-cli-telemetry.test.tstest/unit/mcp-cli-terminal-sanitization.test.tstest/unit/mcp-cli-test-evidence-tool.test.tstest/unit/mcp-cli-tools-search.test.tstest/unit/mcp-cli-tools.test.tstest/unit/mcp-cli-validate-config-offline.test.tstest/unit/mcp-cli-write-tools.test.tstest/unit/mcp-config-recommendation.test.tstest/unit/mcp-discovery.test.tstest/unit/mcp-enrichment-analyzers.test.tstest/unit/mcp-lint-pr-text.test.tstest/unit/mcp-local-check-slop-risk.test.tstest/unit/mcp-local-telemetry-chokepoint.test.tstest/unit/mcp-local-telemetry.test.tstest/unit/mcp-output-schemas.test.tstest/unit/mcp-pr-reviewability.test.tstest/unit/mcp-registration-readiness.test.tstest/unit/mcp-server-telemetry.test.tstest/unit/mcp-skipped-pr-audit.test.tstest/unit/mcp-telemetry.test.tstest/unit/mcp-tool-categories.test.tstest/unit/mcp-tool-rename-aliases.test.tstest/unit/mcp-write-tools.test.tstest/unit/miner-github-token-resolution.test.tstest/unit/ops-wire.test.tstest/unit/policy-sanitizer.test.tstest/unit/pr-detail-durable-cache.test.tstest/unit/pr-reconciliation.test.tstest/unit/predicted-gate-engine-coverage.test.tstest/unit/predicted-gate.test.tstest/unit/public-stats.test.tstest/unit/queue-2.test.tstest/unit/queue-4.test.tstest/unit/queue-5.test.tstest/unit/queue-lifecycle-guards.test.tstest/unit/queue.test.tstest/unit/redact-local-path.test.tstest/unit/registration-readiness.test.tstest/unit/repo-policy-readiness.test.tstest/unit/repository-settings-enforcement.test.tstest/unit/routes-agent-approval.test.tstest/unit/routes-boundary-tests.test.tstest/unit/routes-evaluate-escalation.test.tstest/unit/routes-improvement-potential.test.tstest/unit/routes-intake-idea.test.tstest/unit/routes-open-pr-pressure.test.tstest/unit/routes-plan-idea-claims.test.tstest/unit/routes-pr-ai-review-findings.test.tstest/unit/routes-progress-snapshot.test.tstest/unit/routes-repo-doc-refresh.test.tstest/unit/routes-results-payload.test.tstest/unit/routes-taxonomy-mirrors.test.tstest/unit/routes-test-evidence.test.tstest/unit/rules.test.tstest/unit/self-dogfood-registration-pack.test.tstest/unit/selfhost-ai.test.tstest/unit/selfhost-config-lint.test.tstest/unit/selfhost-grafana-resource-hub-dashboard.test.tstest/unit/settings-preview.test.tstest/unit/signals-coverage.test.tstest/unit/signals-v2.test.tstest/unit/signals.test.tstest/unit/support/mcp-cli-harness.tstest/unit/sweep-watchdog.test.tstest/unit/test-evidence-report.test.tstest/unit/unified-comment-parity.test.tstest/unit/upstream-ruleset.test.tsworker-configuration.d.tswrangler.jsoncRelease-Prep Checklist
packages/loopover-mcp/package.jsonto4.0.0packageVersionconstant to4.0.04.0.0packages/loopover-mcp/CHANGELOG.mdwith amcp-v4.0.0sectionnpm run build:mcpnpm run test:mcp-packnpm run changelog:check:mcpnpm run actionlintnpm run test:release:mcpmcp-v4.0.0