Summary
A @loopover/miner release appears due.
Proposed version: 3.15.2
Latest tag: miner-v3.14.1
npm latest: 3.14.1
Package version in repo: 3.15.2
Unreleased miner-related commits: 38
Unreleased Commits
e58d910 build: delete both browser-extension packages and their shared build/CI/npm-script wiring (build: delete both browser-extension packages and their shared build/CI/npm-script wiring #8603 )
a9d9c0e feat(selfhost): PostHog AI observability across ORB and AMS (feat(selfhost): PostHog AI observability across ORB and AMS #8623 )
ee390f5 fix(miner): resolve status.ts's monorepo-sibling paths at the compiled dist/lib depth (fix(miner): resolve status.ts's monorepo-sibling paths at the compiled dist/lib depth #8636 )
1cc2146 fix(miner): delete the orphaned portfolio chat-action duplicate (fix(miner): delete the orphaned portfolio chat-action duplicate #8662 )
713145f fix(miner): include laptop-state in doctor integrity and migrate store lists (fix(miner): include laptop-state in doctor integrity and migrate store lists #8749 )
7b2104d fix(miner): drop stale ProcessEnv casts on resolveReplaySnapshotDbPath (fix(miner): drop stale ProcessEnv casts on resolveReplaySnapshotDbPath #8768 )
d5ec15a fix(miner): refuse a duplicate attempt when this miner already has an open PR for the exact issue (fix(miner): pre-attempt idempotency check against the miner's own open PR for the same issue — stop crash-retry double-opens #8808 ) (fix(miner): refuse a duplicate attempt when this miner already has an open PR for the exact issue #8815 )
33bacda feat(miner): wire deny-hook synthesis to a live consumer and give it an operator CLI (fix(miner): deny-hook synthesis has zero live consumers — approved guardrail rules never reach a coding agent #8806 ) (feat(miner): wire deny-hook synthesis to a live consumer and give it an operator CLI #8817 )
e10abf2 feat(miner): run the target repo's own test/lint/build commands before opening a PR (feat(miner): run the target repo's own test/lint/build commands before opening a PR #8819 )
eab6ecf fix(miner): reclaim orphaned worktree allocations on every acquire() (fix(miner): reclaim orphaned worktree allocations on every acquire() #8918 )
898cdcb ams: reconcile README/DEPLOYMENT local-storage inventory -- two real SQLite stores are undocumented (ams: reconcile README/DEPLOYMENT local-storage inventory -- two real SQLite stores are undocumented #8923 )
1eeaae1 fix(miner): printHelp() omits the working `deny-hooks` subcommand (fix(miner): printHelp() omits the working deny-hooks subcommand #8933 )
4dfe15d fix(miner): fall back to global config.apiUrl in loopoverApiUrl (fix(miner): fall back to global config.apiUrl in loopoverApiUrl #8937 )
32ee72e fix(miner): reject a portfolio-queue identifier containing the '::' composite-id separator (fix(miner): reject a portfolio-queue identifier containing the '::' composite-id separator (#8857) #8925 )
6aaea39 fix(engine): treat an Infinity WIP cap as uncapped, not collapsed to 0 (fix(engine): treat an Infinity WIP cap as uncapped, not collapsed to 0 (#8861) #8945 )
266b07d fix(miner): fail acquire() on an attempt_id/repo mismatch (fix(miner): fail acquire() on an attempt_id/repo mismatch #8964 )
987f7ce fix(miner): self-review-context never supplies recent-merged-PR history, contradicting its own "same fidelity" claim (fix(miner): self-review-context never supplies recent-merged-PR history, contradicting its own "same fidelity" claim #8969 )
3369ebc fix(miner): AmsPolicySpec parse warnings are computed but never surfaced to the operator (fix(miner): AmsPolicySpec parse warnings are computed but never surfaced to the operator #8978 )
62e6d25 fix(miner): governor reputation-history read-modify-write is unguarded, unlike sibling scalar-state writes (fix(miner): governor reputation-history read-modify-write is unguarded, unlike sibling scalar-state writes #8988 )
49a27c2 fix(miner): governor-chokepoint-persisted's load-evaluate-save cycle isn't atomic (fix(miner): governor-chokepoint-persisted's load-evaluate-save cycle isn't atomic #8993 )
7fd84ff feat(orb): salvageability axis — hold fixable, well-authored PRs instead of one-shot-closing (feat(orb): salvageability axis — hold fixable, well-authored PRs instead of one-shot-closing #8986 )
8444812 fix(miner): compare-and-set the orphan reclaim so a stale probe cannot free a live re-acquired slot (fix(miner): compare-and-set the orphan reclaim so a stale probe cannot free a live re-acquired slot #8992 )
f2f32cc fix(miner): wire AMS policy resolver to the documented discovery order (fix(miner): wire AMS policy resolver to the documented discovery order #9106 )
6aacf08 fix(review): auto-clear stale manual-review lock-contention hold; sync engine gate-decision twin (fix(review): auto-clear stale manual-review lock-contention hold; sync engine gate-decision twin #9107 )
e1ae2f0 chore(main): release engine-and-dependents libraries (chore(main): release engine-and-dependents libraries #9171 )
b251912 fix(review): default cross-issue copycat/reward-farming dedupe on for reward-eligible repos (fix(review): default cross-issue copycat/reward-farming dedupe on for reward-eligible repos #9226 )
6554a59 chore(deps): update npm minor and patch dependencies (chore(deps): update npm minor and patch dependencies #9232 )
d2c8d27 fix(orb): webhook redelivery, reputation cadence, DB retention, and gate severity fidelity (fix(orb): webhook redelivery, reputation cadence, DB retention, and gate severity fidelity #9237 )
b554957 fix(miner): carry assignees through normalizeCandidate in opportunity-ranker (fix(miner): carry assignees through normalizeCandidate in opportunity-ranker #9343 )
ab6a44d fix(miner): log discovery-index query failures before failing open (fix(miner): log discovery-index query failures before failing open #9346 )
6c220b3 fix(miner): make governor-run-halt's ledger recording a genuine transition detector (fix(miner): make governor-run-halt's ledger recording a genuine transition detector #9367 )
a58ce3d fix(miner): surface verification payload in attempt-cli JSON for verification_failed (fix(miner): surface verification payload in attempt-cli JSON for verification_failed #9372 )
42e1015 fix(miner): add blocked_own_open_pr to the AttemptCliResult union (fix(miner): add blocked_own_open_pr to the AttemptCliResult union (#9331) #9384 )
6bb8588 fix(miner): replace never-registered `run` with `loop` in fleet-mode manifests (fix(miner): replace never-registered run with loop in fleet-mode manifests #9524 )
5312750 build(typescript): eliminate hand-written JavaScript and lock it out with a CI gate (build(typescript): eliminate hand-written JavaScript and lock it out with a CI gate #9534 )
9713f26 feat(ams): migrate the AMS miner MCP server to @loopover/contract (feat(ams): migrate the AMS miner MCP server to @loopover/contract #9542 )
d5a5a8f feat(mcp): migrate the stdio MCP server's 102 tools to @loopover/contract (contract(stdio): migrate the stdio MCP server's 102 tools to @loopover/contract — typed handlers, no hand-mirrored shapes #9537 ) (feat(mcp): migrate the stdio MCP server's 102 tools to @loopover/contract (#9537) #9565 )
06a090f feat(mcp): one registry-driven telemetry contract at all three dispatch chokepoints (mcp(observability): PostHog error tracking, tracing, and usage telemetry at every dispatch chokepoint — redacted, gated, registry-driven #9525 ) (feat(mcp): one registry-driven telemetry contract at all three dispatch chokepoints (#9525) #9579 )
Changed Files
.claude/skills/contributing-to-loopover/reference.md
.claude/skills/contributing-to-loopover/SKILL.md
.claude/skills/contributor-pipeline-gardening/reference.md
.github/actions/deploy-ui-preview/action.yml
.github/workflows/ci.yml
.github/workflows/release-selfhost.yml
.github/workflows/ui-deploy.yml
.gitignore
.loopover.yml.example
.release-please-manifest.json
apps/loopover-extension/.gitignore
apps/loopover-extension/auth.js
apps/loopover-extension/background.js
apps/loopover-extension/content.js
apps/loopover-extension/manifest.json
apps/loopover-extension/options.html
apps/loopover-extension/options.js
apps/loopover-extension/package.json
apps/loopover-extension/styles.css
apps/loopover-miner-extension/.gitignore
apps/loopover-miner-extension/background.js
apps/loopover-miner-extension/content.js
apps/loopover-miner-extension/icons/icon-128.png
apps/loopover-miner-extension/icons/icon-16.png
apps/loopover-miner-extension/icons/icon-32.png
apps/loopover-miner-extension/icons/icon-48.png
apps/loopover-miner-extension/manifest.json
apps/loopover-miner-extension/opportunity-badge.js
apps/loopover-miner-extension/options.html
apps/loopover-miner-extension/options.js
apps/loopover-miner-extension/package.json
apps/loopover-miner-extension/README.md
apps/loopover-miner-extension/styles.css
apps/loopover-miner-extension/test/background.test.ts
apps/loopover-miner-extension/test/content.test.ts
apps/loopover-miner-extension/test/helpers.ts
apps/loopover-miner-extension/test/opportunity-badge.test.ts
apps/loopover-miner-extension/test/options.test.ts
apps/loopover-miner-extension/test/toolbar-badge.test.ts
apps/loopover-miner-extension/toolbar-badge.d.ts
apps/loopover-miner-extension/toolbar-badge.js
apps/loopover-miner-extension/vitest.config.ts
apps/loopover-miner-ui/eslint.config.js
apps/loopover-miner-ui/eslint.config.ts
apps/loopover-miner-ui/package.json
apps/loopover-miner-ui/README.md
apps/loopover-miner-ui/src/lib/chat-portfolio-queue-actions.test.tsx
apps/loopover-miner-ui/src/lib/ranked-candidates.ts
apps/loopover-miner-ui/src/routes/ranked-candidates.tsx
apps/loopover-miner-ui/vite-ranked-candidates-api.ts
apps/loopover-ui/content/docs/maintainer-install-trust.mdx
apps/loopover-ui/content/docs/self-hosting-operations.mdx
apps/loopover-ui/eslint.config.js
apps/loopover-ui/eslint.config.ts
apps/loopover-ui/package.json
apps/loopover-ui/public/openapi.json
apps/loopover-ui/src/lib/ams-env-reference.ts
apps/loopover-ui/src/lib/rees-analyzers.ts
config/examples/loopover.full.yml
CONTRIBUTING.md
control-plane/package-lock.json
control-plane/package.json
control-plane/scripts/gen-cf-typegen.mjs
control-plane/scripts/gen-cf-typegen.ts
control-plane/src/worker.ts
docs/decision-audit-rubric.md
k8s/miner-deployment.yaml
migrations/0191_retention_column_indexes.sql
migrations/0192_purge_stuck_queued_webhook_events.sql
package-lock.json
package.json
packages/discovery-index/package.json
packages/discovery-index/README.md
packages/discovery-index/scripts/gen-cf-typegen.mjs
packages/discovery-index/scripts/gen-cf-typegen.ts
packages/discovery-index/scripts/validate-posthog-release.mjs
packages/discovery-index/scripts/validate-posthog-release.ts
packages/discovery-index/scripts/validate-sourcemaps.mjs
packages/discovery-index/scripts/validate-sourcemaps.ts
packages/discovery-index/src/upload-sourcemaps.ts
packages/loopover-contract/src/index.ts
packages/loopover-contract/src/telemetry.ts
packages/loopover-contract/src/tools/agent.ts
packages/loopover-contract/src/tools/branch.ts
packages/loopover-contract/src/tools/discovery-utility.ts
packages/loopover-contract/src/tools/index.ts
packages/loopover-contract/src/tools/local-branch.ts
packages/loopover-contract/src/tools/maintainer.ts
packages/loopover-contract/src/tools/miner.ts
packages/loopover-contract/src/tools/review.ts
packages/loopover-engine/CHANGELOG.md
packages/loopover-engine/docs/iterate-loop-load-test.md
packages/loopover-engine/package.json
packages/loopover-engine/scripts/load-test-iterate-loop.mjs
packages/loopover-engine/scripts/load-test-iterate-loop.ts
packages/loopover-engine/src/advisory/gate-advisory.ts
packages/loopover-engine/src/ams-policy-spec.ts
packages/loopover-engine/src/focus-manifest.ts
packages/loopover-engine/src/governor/chokepoint.ts
packages/loopover-engine/src/index.ts
packages/loopover-engine/src/plan-dag.ts
packages/loopover-engine/src/portfolio/queue.ts
packages/loopover-engine/test/ams-policy-spec-discovery.test.ts
packages/loopover-engine/test/chokepoint.test.ts
packages/loopover-engine/test/plan-dag.test.ts
packages/loopover-mcp/bin/loopover-mcp.ts
packages/loopover-mcp/CHANGELOG.md
packages/loopover-mcp/lib/telemetry.ts
packages/loopover-mcp/package.json
packages/loopover-mcp/scripts/check-syntax.mjs
packages/loopover-mcp/scripts/check-syntax.ts
packages/loopover-mcp/scripts/strip-bin-sourcemap.mjs
packages/loopover-mcp/scripts/strip-bin-sourcemap.ts
packages/loopover-miner/benchmarks/cross-repo/manifest.json
packages/loopover-miner/bin/loopover-miner-mcp.ts
packages/loopover-miner/bin/loopover-miner.ts
packages/loopover-miner/CHANGELOG.md
packages/loopover-miner/DEPLOYMENT.md
packages/loopover-miner/docker-compose.miner.yml
packages/loopover-miner/docs/cross-repo-evaluation.md
packages/loopover-miner/docs/env-reference.md
packages/loopover-miner/expected-engine.version
packages/loopover-miner/lib/ams-policy.ts
packages/loopover-miner/lib/attempt-cli.ts
packages/loopover-miner/lib/attempt-runner.ts
packages/loopover-miner/lib/chat-action-registry.ts
packages/loopover-miner/lib/chat-discover-attempt-actions.ts
packages/loopover-miner/lib/chat-portfolio-actions.ts
packages/loopover-miner/lib/cli.ts
packages/loopover-miner/lib/coding-agent-construction.ts
packages/loopover-miner/lib/deny-hooks-cli.ts
packages/loopover-miner/lib/deployment-docs-audit.ts
packages/loopover-miner/lib/discover-cli.ts
packages/loopover-miner/lib/discovery-index-client.ts
packages/loopover-miner/lib/egress-allowlist.ts
packages/loopover-miner/lib/github-token-resolution.ts
packages/loopover-miner/lib/governor-chokepoint-persisted.ts
packages/loopover-miner/lib/governor-chokepoint.ts
packages/loopover-miner/lib/governor-run-halt.ts
packages/loopover-miner/lib/governor-state.ts
packages/loopover-miner/lib/laptop-init.ts
packages/loopover-miner/lib/local-store.ts
packages/loopover-miner/lib/loop-cli.ts
packages/loopover-miner/lib/mcp-dispatch-telemetry.ts
packages/loopover-miner/lib/migrate-cli.ts
packages/loopover-miner/lib/opportunity-ranker.ts
packages/loopover-miner/lib/portfolio-dashboard.ts
packages/loopover-miner/lib/portfolio-queue-manager.ts
packages/loopover-miner/lib/portfolio-queue.ts
packages/loopover-miner/lib/posthog.ts
packages/loopover-miner/lib/ranked-candidates.ts
packages/loopover-miner/lib/rejection-signal.ts
packages/loopover-miner/lib/self-review-context.ts
packages/loopover-miner/lib/status.ts
packages/loopover-miner/lib/target-repo-verification.ts
packages/loopover-miner/lib/tenant-client.ts
packages/loopover-miner/lib/worktree-allocator.ts
packages/loopover-miner/package.json
packages/loopover-miner/README.md
packages/loopover-miner/scripts/benchmark.mjs
packages/loopover-miner/scripts/benchmark.ts
packages/loopover-miner/scripts/check-syntax.mjs
packages/loopover-miner/scripts/check-syntax.ts
packages/loopover-miner/scripts/cross-repo-evaluation.mjs
packages/loopover-miner/scripts/cross-repo-evaluation.ts
packages/loopover-miner/scripts/generate-env-reference.mjs
packages/loopover-miner/scripts/generate-env-reference.ts
packages/loopover-ui-kit/package.json
review-enrichment/package-lock.json
review-enrichment/package.json
review-enrichment/scripts/generate-analyzer-metadata.mjs
review-enrichment/scripts/generate-analyzer-metadata.ts
review-enrichment/scripts/validate-posthog-release.mjs
review-enrichment/scripts/validate-posthog-release.ts
review-enrichment/scripts/validate-sourcemaps.mjs
review-enrichment/scripts/validate-sourcemaps.ts
review-enrichment/src/upload-sourcemaps.ts
review-enrichment/test/posthog-release-validation.test.ts
review-enrichment/test/posthog-upload.test.ts
scripts/actionlint.ts
scripts/build-extension.ts
scripts/build-miner-extension.ts
scripts/check-docs-drift.ts
scripts/check-import-specifiers.ts
scripts/check-miner-deployment-docs.ts
scripts/control-plane-coverage.mjs
scripts/control-plane-coverage.ts
scripts/engine-coverage.ts
scripts/extension-zip-core.ts
scripts/lib/actionlint-download-attempts.mjs
scripts/lib/actionlint-download-attempts.ts
scripts/lib/validate-mcp/invariants.ts
scripts/lib/validate-mcp/overrides.ts
scripts/lib/validate-mcp/synthesize-input.ts
scripts/mcp-release-core.ts
scripts/orb-release-core.ts
scripts/smoke-production.ts
scripts/smoke-ui-browser.ts
scripts/validate-no-hand-written-js.ts
src/db/repositories.ts
src/db/retention.ts
src/db/schema.ts
src/github/app.ts
src/github/webhook.ts
src/mcp/dispatch-span-registry.ts
src/mcp/dispatch-telemetry-sink.ts
src/mcp/dispatch-telemetry.ts
src/mcp/server.ts
src/openapi/schemas.ts
src/queue/copycat-detection.ts
src/queue/duplicate-detection.ts
src/queue/gate-checks.ts
src/queue/processors.ts
src/review/decision-record.ts
src/review/parity-wire.ts
src/review/salvageability-wire.ts
src/review/salvageability.ts
src/review/unified-comment-bridge.ts
src/rules/advisory.ts
src/selfhost/ai.ts
src/selfhost/posthog.ts
src/server.ts
src/services/plan-dag.ts
src/settings/agent-actions.ts
src/settings/copycat-gate-mode.ts
src/settings/repository-settings.ts
src/signals/copycat-duplicate.ts
src/signals/focus-manifest.ts
src/types.ts
test/contract/validate-mcp.test.ts
test/fixtures/miner-concurrent-stores/chokepoint-child.mjs
test/fixtures/miner-concurrent-stores/increment-reputation-child.mjs
test/fixtures/miner-worktree-allocator/acquire-child.mjs
test/unit/actionlint-download-attempts.test.ts
test/unit/agent-actions.test.ts
test/unit/backfill-decision-labels-core.test.ts
test/unit/build-extension-zip-script.test.ts
test/unit/check-miner-deployment-docs.test.ts
test/unit/ci-extension-packages.test.ts
test/unit/ci-ui-build-openapi.test.ts
test/unit/codecov-policy.test.ts
test/unit/contract-registry.test.ts
test/unit/copycat-detection.test.ts
test/unit/copycat-duplicate.test.ts
test/unit/copycat-gate-mode.test.ts
test/unit/copycat-reward-farming-regression.test.ts
test/unit/decision-record.test.ts
test/unit/discovery-index/upload-sourcemaps.test.ts
test/unit/discovery-index/validate-posthog-release.test.ts
test/unit/duplicate-detection.test.ts
test/unit/extension-auth.test.ts
test/unit/extension-background.test.ts
test/unit/extension-content.test.ts
test/unit/extension-options.test.ts
test/unit/focus-manifest.test.ts
test/unit/gate-check-policy.test.ts
test/unit/iterate-loop-load-test-script.test.ts
test/unit/mcp-check-issue-slop-description.test.ts
test/unit/mcp-cli-explain-gate-disposition.test.ts
test/unit/mcp-cli-improvement-potential-stdio.test.ts
test/unit/mcp-cli-tools.test.ts
test/unit/mcp-dispatch-telemetry-sink.test.ts
test/unit/mcp-dispatch-telemetry.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-pr-ai-review-findings.test.ts
test/unit/miner-ams-policy.test.ts
test/unit/miner-attempt-cli.test.ts
test/unit/miner-attempt-input-builder.test.ts
test/unit/miner-attempt-runner.test.ts
test/unit/miner-benchmark-script.test.ts
test/unit/miner-chat-portfolio-actions.test.ts
test/unit/miner-cli.test.ts
test/unit/miner-coding-agent-construction.test.ts
test/unit/miner-concurrent-store-races.test.ts
test/unit/miner-cross-repo-evaluation.test.ts
test/unit/miner-deny-hooks-cli.test.ts
test/unit/miner-deployment-docs-audit.test.ts
test/unit/miner-discovery-index-client.test.ts
test/unit/miner-docker-compose.test.ts
test/unit/miner-egress-allowlist.test.ts
test/unit/miner-env-reference-script.test.ts
test/unit/miner-extension-content.test.ts
test/unit/miner-extension-icons.test.ts
test/unit/miner-extension-live-fetch.test.ts
test/unit/miner-github-token-resolution.test.ts
test/unit/miner-governor-chokepoint-persisted.test.ts
test/unit/miner-governor-chokepoint.test.ts
test/unit/miner-governor-run-halt.test.ts
test/unit/miner-governor-state.test.ts
test/unit/miner-k8s-manifests.test.ts
test/unit/miner-local-store-readme.test.ts
test/unit/miner-loop-cli.test.ts
test/unit/miner-mcp-dispatch-telemetry.test.ts
test/unit/miner-mcp-scaffold.test.ts
test/unit/miner-mcp-tool-docs-parity.test.ts
test/unit/miner-migrate-cli.test.ts
test/unit/miner-opportunity-ranker.test.ts
test/unit/miner-package-skeleton.test.ts
test/unit/miner-portfolio-queue-manager.test.ts
test/unit/miner-posthog.test.ts
test/unit/miner-rejection-signal.test.ts
test/unit/miner-self-review-context.test.ts
test/unit/miner-status.test.ts
test/unit/miner-target-repo-verification.test.ts
test/unit/miner-toolbar-badge.test.ts
test/unit/miner-worktree-allocator-collisions.test.ts
test/unit/miner-worktree-allocator-lease-expiry.test.ts
test/unit/miner-worktree-allocator.test.ts
test/unit/parity-wire.test.ts
test/unit/portfolio-queue.test.ts
test/unit/predicted-gate-engine.test.ts
test/unit/queue-2.test.ts
test/unit/queue.test.ts
test/unit/reconcile-live-duplicate-siblings.test.ts
test/unit/repository-settings-copycat-gate-mode.test.ts
test/unit/retention.test.ts
test/unit/rules.test.ts
test/unit/salvageability.test.ts
test/unit/selfhost-ai.test.ts
test/unit/selfhost-posthog-release.test.ts
test/unit/selfhost-posthog.test.ts
test/unit/slop.test.ts
test/unit/support/mcp-cli-harness.ts
test/unit/support/miner-cli-harness.ts
test/unit/unified-comment-bridge.test.ts
test/unit/validate-mcp-helpers.test.ts
test/unit/validate-no-hand-written-js.test.ts
test/unit/webhook.test.ts
turbo.json
Release-Prep Checklist
Summary
A @loopover/miner release appears due.
3.15.2miner-v3.14.13.14.13.15.238Unreleased Commits
e58d910build: delete both browser-extension packages and their shared build/CI/npm-script wiring (build: delete both browser-extension packages and their shared build/CI/npm-script wiring #8603)a9d9c0efeat(selfhost): PostHog AI observability across ORB and AMS (feat(selfhost): PostHog AI observability across ORB and AMS #8623)ee390f5fix(miner): resolve status.ts's monorepo-sibling paths at the compiled dist/lib depth (fix(miner): resolve status.ts's monorepo-sibling paths at the compiled dist/lib depth #8636)1cc2146fix(miner): delete the orphaned portfolio chat-action duplicate (fix(miner): delete the orphaned portfolio chat-action duplicate #8662)713145ffix(miner): include laptop-state in doctor integrity and migrate store lists (fix(miner): include laptop-state in doctor integrity and migrate store lists #8749)7b2104dfix(miner): drop stale ProcessEnv casts on resolveReplaySnapshotDbPath (fix(miner): drop stale ProcessEnv casts on resolveReplaySnapshotDbPath #8768)d5ec15afix(miner): refuse a duplicate attempt when this miner already has an open PR for the exact issue (fix(miner): pre-attempt idempotency check against the miner's own open PR for the same issue — stop crash-retry double-opens #8808) (fix(miner): refuse a duplicate attempt when this miner already has an open PR for the exact issue #8815)33bacdafeat(miner): wire deny-hook synthesis to a live consumer and give it an operator CLI (fix(miner): deny-hook synthesis has zero live consumers — approved guardrail rules never reach a coding agent #8806) (feat(miner): wire deny-hook synthesis to a live consumer and give it an operator CLI #8817)e10abf2feat(miner): run the target repo's own test/lint/build commands before opening a PR (feat(miner): run the target repo's own test/lint/build commands before opening a PR #8819)eab6ecffix(miner): reclaim orphaned worktree allocations on every acquire() (fix(miner): reclaim orphaned worktree allocations on every acquire() #8918)898cdcbams: reconcile README/DEPLOYMENT local-storage inventory -- two real SQLite stores are undocumented (ams: reconcile README/DEPLOYMENT local-storage inventory -- two real SQLite stores are undocumented #8923)1eeaae1fix(miner): printHelp() omits the working `deny-hooks` subcommand (fix(miner): printHelp() omits the workingdeny-hookssubcommand #8933)4dfe15dfix(miner): fall back to global config.apiUrl in loopoverApiUrl (fix(miner): fall back to global config.apiUrl in loopoverApiUrl #8937)32ee72efix(miner): reject a portfolio-queue identifier containing the '::' composite-id separator (fix(miner): reject a portfolio-queue identifier containing the '::' composite-id separator (#8857) #8925)6aaea39fix(engine): treat an Infinity WIP cap as uncapped, not collapsed to 0 (fix(engine): treat an Infinity WIP cap as uncapped, not collapsed to 0 (#8861) #8945)266b07dfix(miner): fail acquire() on an attempt_id/repo mismatch (fix(miner): fail acquire() on an attempt_id/repo mismatch #8964)987f7cefix(miner): self-review-context never supplies recent-merged-PR history, contradicting its own "same fidelity" claim (fix(miner): self-review-context never supplies recent-merged-PR history, contradicting its own "same fidelity" claim #8969)3369ebcfix(miner): AmsPolicySpec parse warnings are computed but never surfaced to the operator (fix(miner): AmsPolicySpec parse warnings are computed but never surfaced to the operator #8978)62e6d25fix(miner): governor reputation-history read-modify-write is unguarded, unlike sibling scalar-state writes (fix(miner): governor reputation-history read-modify-write is unguarded, unlike sibling scalar-state writes #8988)49a27c2fix(miner): governor-chokepoint-persisted's load-evaluate-save cycle isn't atomic (fix(miner): governor-chokepoint-persisted's load-evaluate-save cycle isn't atomic #8993)7fd84fffeat(orb): salvageability axis — hold fixable, well-authored PRs instead of one-shot-closing (feat(orb): salvageability axis — hold fixable, well-authored PRs instead of one-shot-closing #8986)8444812fix(miner): compare-and-set the orphan reclaim so a stale probe cannot free a live re-acquired slot (fix(miner): compare-and-set the orphan reclaim so a stale probe cannot free a live re-acquired slot #8992)f2f32ccfix(miner): wire AMS policy resolver to the documented discovery order (fix(miner): wire AMS policy resolver to the documented discovery order #9106)6aacf08fix(review): auto-clear stale manual-review lock-contention hold; sync engine gate-decision twin (fix(review): auto-clear stale manual-review lock-contention hold; sync engine gate-decision twin #9107)e1ae2f0chore(main): release engine-and-dependents libraries (chore(main): release engine-and-dependents libraries #9171)b251912fix(review): default cross-issue copycat/reward-farming dedupe on for reward-eligible repos (fix(review): default cross-issue copycat/reward-farming dedupe on for reward-eligible repos #9226)6554a59chore(deps): update npm minor and patch dependencies (chore(deps): update npm minor and patch dependencies #9232)d2c8d27fix(orb): webhook redelivery, reputation cadence, DB retention, and gate severity fidelity (fix(orb): webhook redelivery, reputation cadence, DB retention, and gate severity fidelity #9237)b554957fix(miner): carry assignees through normalizeCandidate in opportunity-ranker (fix(miner): carry assignees through normalizeCandidate in opportunity-ranker #9343)ab6a44dfix(miner): log discovery-index query failures before failing open (fix(miner): log discovery-index query failures before failing open #9346)6c220b3fix(miner): make governor-run-halt's ledger recording a genuine transition detector (fix(miner): make governor-run-halt's ledger recording a genuine transition detector #9367)a58ce3dfix(miner): surface verification payload in attempt-cli JSON for verification_failed (fix(miner): surface verification payload in attempt-cli JSON for verification_failed #9372)42e1015fix(miner): add blocked_own_open_pr to the AttemptCliResult union (fix(miner): add blocked_own_open_pr to the AttemptCliResult union (#9331) #9384)6bb8588fix(miner): replace never-registered `run` with `loop` in fleet-mode manifests (fix(miner): replace never-registeredrunwithloopin fleet-mode manifests #9524)5312750build(typescript): eliminate hand-written JavaScript and lock it out with a CI gate (build(typescript): eliminate hand-written JavaScript and lock it out with a CI gate #9534)9713f26feat(ams): migrate the AMS miner MCP server to @loopover/contract (feat(ams): migrate the AMS miner MCP server to @loopover/contract #9542)d5a5a8ffeat(mcp): migrate the stdio MCP server's 102 tools to @loopover/contract (contract(stdio): migrate the stdio MCP server's 102 tools to @loopover/contract — typed handlers, no hand-mirrored shapes #9537) (feat(mcp): migrate the stdio MCP server's 102 tools to @loopover/contract (#9537) #9565)06a090ffeat(mcp): one registry-driven telemetry contract at all three dispatch chokepoints (mcp(observability): PostHog error tracking, tracing, and usage telemetry at every dispatch chokepoint — redacted, gated, registry-driven #9525) (feat(mcp): one registry-driven telemetry contract at all three dispatch chokepoints (#9525) #9579)Changed Files
.claude/skills/contributing-to-loopover/reference.md.claude/skills/contributing-to-loopover/SKILL.md.claude/skills/contributor-pipeline-gardening/reference.md.github/actions/deploy-ui-preview/action.yml.github/workflows/ci.yml.github/workflows/release-selfhost.yml.github/workflows/ui-deploy.yml.gitignore.loopover.yml.example.release-please-manifest.jsonapps/loopover-extension/.gitignoreapps/loopover-extension/auth.jsapps/loopover-extension/background.jsapps/loopover-extension/content.jsapps/loopover-extension/manifest.jsonapps/loopover-extension/options.htmlapps/loopover-extension/options.jsapps/loopover-extension/package.jsonapps/loopover-extension/styles.cssapps/loopover-miner-extension/.gitignoreapps/loopover-miner-extension/background.jsapps/loopover-miner-extension/content.jsapps/loopover-miner-extension/icons/icon-128.pngapps/loopover-miner-extension/icons/icon-16.pngapps/loopover-miner-extension/icons/icon-32.pngapps/loopover-miner-extension/icons/icon-48.pngapps/loopover-miner-extension/manifest.jsonapps/loopover-miner-extension/opportunity-badge.jsapps/loopover-miner-extension/options.htmlapps/loopover-miner-extension/options.jsapps/loopover-miner-extension/package.jsonapps/loopover-miner-extension/README.mdapps/loopover-miner-extension/styles.cssapps/loopover-miner-extension/test/background.test.tsapps/loopover-miner-extension/test/content.test.tsapps/loopover-miner-extension/test/helpers.tsapps/loopover-miner-extension/test/opportunity-badge.test.tsapps/loopover-miner-extension/test/options.test.tsapps/loopover-miner-extension/test/toolbar-badge.test.tsapps/loopover-miner-extension/toolbar-badge.d.tsapps/loopover-miner-extension/toolbar-badge.jsapps/loopover-miner-extension/vitest.config.tsapps/loopover-miner-ui/eslint.config.jsapps/loopover-miner-ui/eslint.config.tsapps/loopover-miner-ui/package.jsonapps/loopover-miner-ui/README.mdapps/loopover-miner-ui/src/lib/chat-portfolio-queue-actions.test.tsxapps/loopover-miner-ui/src/lib/ranked-candidates.tsapps/loopover-miner-ui/src/routes/ranked-candidates.tsxapps/loopover-miner-ui/vite-ranked-candidates-api.tsapps/loopover-ui/content/docs/maintainer-install-trust.mdxapps/loopover-ui/content/docs/self-hosting-operations.mdxapps/loopover-ui/eslint.config.jsapps/loopover-ui/eslint.config.tsapps/loopover-ui/package.jsonapps/loopover-ui/public/openapi.jsonapps/loopover-ui/src/lib/ams-env-reference.tsapps/loopover-ui/src/lib/rees-analyzers.tsconfig/examples/loopover.full.ymlCONTRIBUTING.mdcontrol-plane/package-lock.jsoncontrol-plane/package.jsoncontrol-plane/scripts/gen-cf-typegen.mjscontrol-plane/scripts/gen-cf-typegen.tscontrol-plane/src/worker.tsdocs/decision-audit-rubric.mdk8s/miner-deployment.yamlmigrations/0191_retention_column_indexes.sqlmigrations/0192_purge_stuck_queued_webhook_events.sqlpackage-lock.jsonpackage.jsonpackages/discovery-index/package.jsonpackages/discovery-index/README.mdpackages/discovery-index/scripts/gen-cf-typegen.mjspackages/discovery-index/scripts/gen-cf-typegen.tspackages/discovery-index/scripts/validate-posthog-release.mjspackages/discovery-index/scripts/validate-posthog-release.tspackages/discovery-index/scripts/validate-sourcemaps.mjspackages/discovery-index/scripts/validate-sourcemaps.tspackages/discovery-index/src/upload-sourcemaps.tspackages/loopover-contract/src/index.tspackages/loopover-contract/src/telemetry.tspackages/loopover-contract/src/tools/agent.tspackages/loopover-contract/src/tools/branch.tspackages/loopover-contract/src/tools/discovery-utility.tspackages/loopover-contract/src/tools/index.tspackages/loopover-contract/src/tools/local-branch.tspackages/loopover-contract/src/tools/maintainer.tspackages/loopover-contract/src/tools/miner.tspackages/loopover-contract/src/tools/review.tspackages/loopover-engine/CHANGELOG.mdpackages/loopover-engine/docs/iterate-loop-load-test.mdpackages/loopover-engine/package.jsonpackages/loopover-engine/scripts/load-test-iterate-loop.mjspackages/loopover-engine/scripts/load-test-iterate-loop.tspackages/loopover-engine/src/advisory/gate-advisory.tspackages/loopover-engine/src/ams-policy-spec.tspackages/loopover-engine/src/focus-manifest.tspackages/loopover-engine/src/governor/chokepoint.tspackages/loopover-engine/src/index.tspackages/loopover-engine/src/plan-dag.tspackages/loopover-engine/src/portfolio/queue.tspackages/loopover-engine/test/ams-policy-spec-discovery.test.tspackages/loopover-engine/test/chokepoint.test.tspackages/loopover-engine/test/plan-dag.test.tspackages/loopover-mcp/bin/loopover-mcp.tspackages/loopover-mcp/CHANGELOG.mdpackages/loopover-mcp/lib/telemetry.tspackages/loopover-mcp/package.jsonpackages/loopover-mcp/scripts/check-syntax.mjspackages/loopover-mcp/scripts/check-syntax.tspackages/loopover-mcp/scripts/strip-bin-sourcemap.mjspackages/loopover-mcp/scripts/strip-bin-sourcemap.tspackages/loopover-miner/benchmarks/cross-repo/manifest.jsonpackages/loopover-miner/bin/loopover-miner-mcp.tspackages/loopover-miner/bin/loopover-miner.tspackages/loopover-miner/CHANGELOG.mdpackages/loopover-miner/DEPLOYMENT.mdpackages/loopover-miner/docker-compose.miner.ymlpackages/loopover-miner/docs/cross-repo-evaluation.mdpackages/loopover-miner/docs/env-reference.mdpackages/loopover-miner/expected-engine.versionpackages/loopover-miner/lib/ams-policy.tspackages/loopover-miner/lib/attempt-cli.tspackages/loopover-miner/lib/attempt-runner.tspackages/loopover-miner/lib/chat-action-registry.tspackages/loopover-miner/lib/chat-discover-attempt-actions.tspackages/loopover-miner/lib/chat-portfolio-actions.tspackages/loopover-miner/lib/cli.tspackages/loopover-miner/lib/coding-agent-construction.tspackages/loopover-miner/lib/deny-hooks-cli.tspackages/loopover-miner/lib/deployment-docs-audit.tspackages/loopover-miner/lib/discover-cli.tspackages/loopover-miner/lib/discovery-index-client.tspackages/loopover-miner/lib/egress-allowlist.tspackages/loopover-miner/lib/github-token-resolution.tspackages/loopover-miner/lib/governor-chokepoint-persisted.tspackages/loopover-miner/lib/governor-chokepoint.tspackages/loopover-miner/lib/governor-run-halt.tspackages/loopover-miner/lib/governor-state.tspackages/loopover-miner/lib/laptop-init.tspackages/loopover-miner/lib/local-store.tspackages/loopover-miner/lib/loop-cli.tspackages/loopover-miner/lib/mcp-dispatch-telemetry.tspackages/loopover-miner/lib/migrate-cli.tspackages/loopover-miner/lib/opportunity-ranker.tspackages/loopover-miner/lib/portfolio-dashboard.tspackages/loopover-miner/lib/portfolio-queue-manager.tspackages/loopover-miner/lib/portfolio-queue.tspackages/loopover-miner/lib/posthog.tspackages/loopover-miner/lib/ranked-candidates.tspackages/loopover-miner/lib/rejection-signal.tspackages/loopover-miner/lib/self-review-context.tspackages/loopover-miner/lib/status.tspackages/loopover-miner/lib/target-repo-verification.tspackages/loopover-miner/lib/tenant-client.tspackages/loopover-miner/lib/worktree-allocator.tspackages/loopover-miner/package.jsonpackages/loopover-miner/README.mdpackages/loopover-miner/scripts/benchmark.mjspackages/loopover-miner/scripts/benchmark.tspackages/loopover-miner/scripts/check-syntax.mjspackages/loopover-miner/scripts/check-syntax.tspackages/loopover-miner/scripts/cross-repo-evaluation.mjspackages/loopover-miner/scripts/cross-repo-evaluation.tspackages/loopover-miner/scripts/generate-env-reference.mjspackages/loopover-miner/scripts/generate-env-reference.tspackages/loopover-ui-kit/package.jsonreview-enrichment/package-lock.jsonreview-enrichment/package.jsonreview-enrichment/scripts/generate-analyzer-metadata.mjsreview-enrichment/scripts/generate-analyzer-metadata.tsreview-enrichment/scripts/validate-posthog-release.mjsreview-enrichment/scripts/validate-posthog-release.tsreview-enrichment/scripts/validate-sourcemaps.mjsreview-enrichment/scripts/validate-sourcemaps.tsreview-enrichment/src/upload-sourcemaps.tsreview-enrichment/test/posthog-release-validation.test.tsreview-enrichment/test/posthog-upload.test.tsscripts/actionlint.tsscripts/build-extension.tsscripts/build-miner-extension.tsscripts/check-docs-drift.tsscripts/check-import-specifiers.tsscripts/check-miner-deployment-docs.tsscripts/control-plane-coverage.mjsscripts/control-plane-coverage.tsscripts/engine-coverage.tsscripts/extension-zip-core.tsscripts/lib/actionlint-download-attempts.mjsscripts/lib/actionlint-download-attempts.tsscripts/lib/validate-mcp/invariants.tsscripts/lib/validate-mcp/overrides.tsscripts/lib/validate-mcp/synthesize-input.tsscripts/mcp-release-core.tsscripts/orb-release-core.tsscripts/smoke-production.tsscripts/smoke-ui-browser.tsscripts/validate-no-hand-written-js.tssrc/db/repositories.tssrc/db/retention.tssrc/db/schema.tssrc/github/app.tssrc/github/webhook.tssrc/mcp/dispatch-span-registry.tssrc/mcp/dispatch-telemetry-sink.tssrc/mcp/dispatch-telemetry.tssrc/mcp/server.tssrc/openapi/schemas.tssrc/queue/copycat-detection.tssrc/queue/duplicate-detection.tssrc/queue/gate-checks.tssrc/queue/processors.tssrc/review/decision-record.tssrc/review/parity-wire.tssrc/review/salvageability-wire.tssrc/review/salvageability.tssrc/review/unified-comment-bridge.tssrc/rules/advisory.tssrc/selfhost/ai.tssrc/selfhost/posthog.tssrc/server.tssrc/services/plan-dag.tssrc/settings/agent-actions.tssrc/settings/copycat-gate-mode.tssrc/settings/repository-settings.tssrc/signals/copycat-duplicate.tssrc/signals/focus-manifest.tssrc/types.tstest/contract/validate-mcp.test.tstest/fixtures/miner-concurrent-stores/chokepoint-child.mjstest/fixtures/miner-concurrent-stores/increment-reputation-child.mjstest/fixtures/miner-worktree-allocator/acquire-child.mjstest/unit/actionlint-download-attempts.test.tstest/unit/agent-actions.test.tstest/unit/backfill-decision-labels-core.test.tstest/unit/build-extension-zip-script.test.tstest/unit/check-miner-deployment-docs.test.tstest/unit/ci-extension-packages.test.tstest/unit/ci-ui-build-openapi.test.tstest/unit/codecov-policy.test.tstest/unit/contract-registry.test.tstest/unit/copycat-detection.test.tstest/unit/copycat-duplicate.test.tstest/unit/copycat-gate-mode.test.tstest/unit/copycat-reward-farming-regression.test.tstest/unit/decision-record.test.tstest/unit/discovery-index/upload-sourcemaps.test.tstest/unit/discovery-index/validate-posthog-release.test.tstest/unit/duplicate-detection.test.tstest/unit/extension-auth.test.tstest/unit/extension-background.test.tstest/unit/extension-content.test.tstest/unit/extension-options.test.tstest/unit/focus-manifest.test.tstest/unit/gate-check-policy.test.tstest/unit/iterate-loop-load-test-script.test.tstest/unit/mcp-check-issue-slop-description.test.tstest/unit/mcp-cli-explain-gate-disposition.test.tstest/unit/mcp-cli-improvement-potential-stdio.test.tstest/unit/mcp-cli-tools.test.tstest/unit/mcp-dispatch-telemetry-sink.test.tstest/unit/mcp-dispatch-telemetry.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-pr-ai-review-findings.test.tstest/unit/miner-ams-policy.test.tstest/unit/miner-attempt-cli.test.tstest/unit/miner-attempt-input-builder.test.tstest/unit/miner-attempt-runner.test.tstest/unit/miner-benchmark-script.test.tstest/unit/miner-chat-portfolio-actions.test.tstest/unit/miner-cli.test.tstest/unit/miner-coding-agent-construction.test.tstest/unit/miner-concurrent-store-races.test.tstest/unit/miner-cross-repo-evaluation.test.tstest/unit/miner-deny-hooks-cli.test.tstest/unit/miner-deployment-docs-audit.test.tstest/unit/miner-discovery-index-client.test.tstest/unit/miner-docker-compose.test.tstest/unit/miner-egress-allowlist.test.tstest/unit/miner-env-reference-script.test.tstest/unit/miner-extension-content.test.tstest/unit/miner-extension-icons.test.tstest/unit/miner-extension-live-fetch.test.tstest/unit/miner-github-token-resolution.test.tstest/unit/miner-governor-chokepoint-persisted.test.tstest/unit/miner-governor-chokepoint.test.tstest/unit/miner-governor-run-halt.test.tstest/unit/miner-governor-state.test.tstest/unit/miner-k8s-manifests.test.tstest/unit/miner-local-store-readme.test.tstest/unit/miner-loop-cli.test.tstest/unit/miner-mcp-dispatch-telemetry.test.tstest/unit/miner-mcp-scaffold.test.tstest/unit/miner-mcp-tool-docs-parity.test.tstest/unit/miner-migrate-cli.test.tstest/unit/miner-opportunity-ranker.test.tstest/unit/miner-package-skeleton.test.tstest/unit/miner-portfolio-queue-manager.test.tstest/unit/miner-posthog.test.tstest/unit/miner-rejection-signal.test.tstest/unit/miner-self-review-context.test.tstest/unit/miner-status.test.tstest/unit/miner-target-repo-verification.test.tstest/unit/miner-toolbar-badge.test.tstest/unit/miner-worktree-allocator-collisions.test.tstest/unit/miner-worktree-allocator-lease-expiry.test.tstest/unit/miner-worktree-allocator.test.tstest/unit/parity-wire.test.tstest/unit/portfolio-queue.test.tstest/unit/predicted-gate-engine.test.tstest/unit/queue-2.test.tstest/unit/queue.test.tstest/unit/reconcile-live-duplicate-siblings.test.tstest/unit/repository-settings-copycat-gate-mode.test.tstest/unit/retention.test.tstest/unit/rules.test.tstest/unit/salvageability.test.tstest/unit/selfhost-ai.test.tstest/unit/selfhost-posthog-release.test.tstest/unit/selfhost-posthog.test.tstest/unit/slop.test.tstest/unit/support/mcp-cli-harness.tstest/unit/support/miner-cli-harness.tstest/unit/unified-comment-bridge.test.tstest/unit/validate-mcp-helpers.test.tstest/unit/validate-no-hand-written-js.test.tstest/unit/webhook.test.tsturbo.jsonRelease-Prep Checklist
packages/loopover-miner/package.jsonto3.15.2npm run build --workspace @loopover/minernpm run test:miner-packnpm run actionlintminer-v3.15.2