From b5dd08e6f92122e3979dfacf9f5c467ca5ced665 Mon Sep 17 00:00:00 2001 From: ghost <49853598+JSONbored@users.noreply.github.com> Date: Wed, 22 Jul 2026 22:16:15 -0700 Subject: [PATCH 1/3] chore(main): release engine-and-dependents libraries --- .release-please-manifest.json | 6 +-- package-lock.json | 12 ++--- packages/loopover-engine/CHANGELOG.md | 72 +++++++++++++++++++++++++++ packages/loopover-engine/package.json | 2 +- packages/loopover-mcp/CHANGELOG.md | 37 ++++++++++++++ packages/loopover-mcp/package.json | 4 +- packages/loopover-miner/CHANGELOG.md | 61 +++++++++++++++++++++++ packages/loopover-miner/package.json | 4 +- 8 files changed, 184 insertions(+), 14 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 4048f3a89d..3c66e28109 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,6 +1,6 @@ { - "packages/loopover-mcp": "3.4.0", - "packages/loopover-engine": "3.4.1", - "packages/loopover-miner": "3.4.0", + "packages/loopover-mcp": "3.5.0", + "packages/loopover-engine": "3.5.0", + "packages/loopover-miner": "3.5.0", "packages/loopover-ui-kit": "1.1.0" } diff --git a/package-lock.json b/package-lock.json index 9c85ce2e09..c22c4e8555 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21274,7 +21274,7 @@ }, "packages/loopover-engine": { "name": "@loopover/engine", - "version": "3.4.1", + "version": "3.5.0", "license": "AGPL-3.0-only", "dependencies": { "@anthropic-ai/claude-agent-sdk": "^0.3.205", @@ -21309,10 +21309,10 @@ }, "packages/loopover-mcp": { "name": "@loopover/mcp", - "version": "3.4.0", + "version": "3.5.0", "license": "AGPL-3.0-only", "dependencies": { - "@loopover/engine": "^3.4.0", + "@loopover/engine": "^3.5.0", "@modelcontextprotocol/sdk": "1.29.0", "posthog-node": "^5.44.0", "zod": "^4.4.3" @@ -21347,10 +21347,10 @@ }, "packages/loopover-miner": { "name": "@loopover/miner", - "version": "3.4.0", + "version": "3.5.0", "license": "AGPL-3.0-only", "dependencies": { - "@loopover/engine": "^3.4.0", + "@loopover/engine": "^3.5.0", "@modelcontextprotocol/sdk": "1.29.0", "@sentry/node": "^10.63.0", "zod": "^4.4.3" @@ -21387,7 +21387,7 @@ }, "packages/loopover-ui-kit": { "name": "@loopover/ui-kit", - "version": "1.1.0", + "version": "1.1.1", "license": "AGPL-3.0-only", "dependencies": { "@radix-ui/react-accordion": "^1.2.15", diff --git a/packages/loopover-engine/CHANGELOG.md b/packages/loopover-engine/CHANGELOG.md index 6c33300f0a..ea84097bfd 100644 --- a/packages/loopover-engine/CHANGELOG.md +++ b/packages/loopover-engine/CHANGELOG.md @@ -1,5 +1,77 @@ # Changelog +## [3.5.0](https://github.com/JSONbored/loopover/compare/engine-v3.4.1...engine-v3.5.0) (2026-07-23) + + +### Features + +* **calibration:** deterministic seeded held-out/visible split of the backtest corpus ([#8087](https://github.com/JSONbored/loopover/issues/8087)) ([#8097](https://github.com/JSONbored/loopover/issues/8097)) ([43b02c9](https://github.com/JSONbored/loopover/commit/43b02c9f96282e4c1babea575e8bc3355b6f0905)) +* **calibration:** Pareto-floor comparator between two BacktestScoreReports ([#8086](https://github.com/JSONbored/loopover/issues/8086)) ([#8108](https://github.com/JSONbored/loopover/issues/8108)) ([0738a70](https://github.com/JSONbored/loopover/commit/0738a70f595e24578d14b41d07f610fa81003c97)) +* **calibration:** pure BacktestCase corpus builder from fired/override events ([#8093](https://github.com/JSONbored/loopover/issues/8093)) ([423a3d1](https://github.com/JSONbored/loopover/commit/423a3d1cfa98d84079a00557d12def3b2aa528c2)) +* **calibration:** pure confusion-matrix scorer for candidate rule classifiers ([#8085](https://github.com/JSONbored/loopover/issues/8085)) ([#8098](https://github.com/JSONbored/loopover/issues/8098)) ([d07b057](https://github.com/JSONbored/loopover/commit/d07b057ce0e565417585a44d2b4c03ceeecb2088)) +* **calibration:** shared ORB+AMS signal-tracking module, with AMS wired live ([#8079](https://github.com/JSONbored/loopover/issues/8079)) ([873ecf2](https://github.com/JSONbored/loopover/commit/873ecf2cf87e3b43066a6310723d347b001fa48a)) +* **engine:** aggregate REGRESSED-verdict track-record statistics from persisted backtest CI results ([#8140](https://github.com/JSONbored/loopover/issues/8140)) ([#8143](https://github.com/JSONbored/loopover/issues/8143)) ([4578fef](https://github.com/JSONbored/loopover/commit/4578fef6afe10702a47f3ef0aaf8203a4e98a47b)) +* **engine:** render backtest score and comparison reports as Markdown ([#8088](https://github.com/JSONbored/loopover/issues/8088)) ([#8116](https://github.com/JSONbored/loopover/issues/8116)) ([5553138](https://github.com/JSONbored/loopover/commit/5553138042f13a838bfbca01ea53b09bff2395ab)) +* **engine:** represent idea targetRepo as an existing-vs-provision union ([#7710](https://github.com/JSONbored/loopover/issues/7710)) ([d7042ef](https://github.com/JSONbored/loopover/commit/d7042efdee08029c91e37995db34f83bb4d604fe)), closes [#7635](https://github.com/JSONbored/loopover/issues/7635) +* **governor:** page PagerDuty on kill-switch trips ([#8052](https://github.com/JSONbored/loopover/issues/8052)) ([8329069](https://github.com/JSONbored/loopover/commit/832906916b5a9543c399cc4bd577913aa1a9beb7)), closes [#7666](https://github.com/JSONbored/loopover/issues/7666) +* **review:** add a config-as-code content-lane deliverable gate ([#7703](https://github.com/JSONbored/loopover/issues/7703)) ([6c31631](https://github.com/JSONbored/loopover/commit/6c31631ef19a14edd290d4e0ea4954bab7ebb467)) +* **review:** add config-as-code settings surface for the issue-planning tool ([#7521](https://github.com/JSONbored/loopover/issues/7521)) ([37e7f86](https://github.com/JSONbored/loopover/commit/37e7f86cfc0a29fbc4a6edba37fccff945c458b1)), closes [#7429](https://github.com/JSONbored/loopover/issues/7429) +* **review:** add opt-in one-shot synchronize-amendment close policy ([#7715](https://github.com/JSONbored/loopover/issues/7715)) ([a964eaf](https://github.com/JSONbored/loopover/commit/a964eaf705529971532fbc56b4c72131a658c20c)) +* **review:** backtest confidence-threshold changes against real signal history in ORB's live gate ([#8142](https://github.com/JSONbored/loopover/issues/8142)) ([9258836](https://github.com/JSONbored/loopover/commit/92588368a78119fe6706590eae55036a2db5cfb5)) +* **review:** config-as-code manifest override for the loop-escalation sweep cron ([#8018](https://github.com/JSONbored/loopover/issues/8018)) ([#8059](https://github.com/JSONbored/loopover/issues/8059)) ([f3cb090](https://github.com/JSONbored/loopover/commit/f3cb090d8264c3165472d90acea5bcf59f030f3d)) +* **review:** same-rule repeat alarm — detection + alert, no autonomous action ([#8092](https://github.com/JSONbored/loopover/issues/8092)) ([321c192](https://github.com/JSONbored/loopover/commit/321c1929ff0f4516b52dbe4dc2d5df9f3b128a16)) +* **selfhost:** per-repo opt-out for the active-review reconciliation sweep ([#7880](https://github.com/JSONbored/loopover/issues/7880)) ([b76c91d](https://github.com/JSONbored/loopover/commit/b76c91de597fe6d0f34c57c8f5dd0ef16042fa6d)) +* **visual:** automatically detect hover interactions from CSS diffs ([35631c3](https://github.com/JSONbored/loopover/commit/35631c320e094f57839524a79f63963aac55e48c)) +* **visual:** automatically detect hover interactions from CSS diffs ([5b8d150](https://github.com/JSONbored/loopover/commit/5b8d150f3d2b584ea4edc8f0d116ed4af75457d4)) +* **visual:** capture hover/click interactions as animated GIF evidence ([f4d27e6](https://github.com/JSONbored/loopover/commit/f4d27e6eef4e252092d42e089ca117b42b7d7d65)) +* **visual:** capture hover/click/drag interactions as animated GIF evidence ([c5d8671](https://github.com/JSONbored/loopover/commit/c5d867121415c30cdb192ee546380b710b02affd)) +* **visual:** maintainer-notify follow-up comment for unrelated visual findings ([5c5c160](https://github.com/JSONbored/loopover/commit/5c5c1603229da9fdba1f5f5308ce5b565b956100)) +* **visual:** maintainer-notify follow-up comment for unrelated visual findings ([3c50324](https://github.com/JSONbored/loopover/commit/3c5032452dd4e0f9f6d3bf80b604ff867b35b4ad)) +* **visual:** PR-intent-aware vision bug analysis + out-of-scope issue flagging ([#7348](https://github.com/JSONbored/loopover/issues/7348)) ([e622684](https://github.com/JSONbored/loopover/commit/e622684f573e859cabd9ed92553279cb89f7ce6f)) +* **visual:** support drag as an interaction-capture action ([36319f9](https://github.com/JSONbored/loopover/commit/36319f9f1746ed5348b2e6917908ac76254a3592)) + + +### Fixes + +* **advisory:** redact the check-run leak terms sanitizePublicComment already caught ([39a431b](https://github.com/JSONbored/loopover/commit/39a431bdda222283c46808fbb1d964aaa3deaf42)) +* **advisory:** redact the check-run leak terms sanitizePublicComment already caught ([3b956f4](https://github.com/JSONbored/loopover/commit/3b956f4675bbdd265ad7dacc65c6ed17b7a01679)), closes [#7074](https://github.com/JSONbored/loopover/issues/7074) +* **content-lane:** add snake_case aliases to protectedFrontmatterFields ([#7445](https://github.com/JSONbored/loopover/issues/7445)) ([#7478](https://github.com/JSONbored/loopover/issues/7478)) ([37f6e06](https://github.com/JSONbored/loopover/commit/37f6e0694015273ed308f2a455c92c2ecef48918)) +* **content-lane:** add snake_case source-url aliases to sourceUrlFields ([#7250](https://github.com/JSONbored/loopover/issues/7250)) ([#7269](https://github.com/JSONbored/loopover/issues/7269)) ([7571a78](https://github.com/JSONbored/loopover/commit/7571a7821a6aee03c2454a52922865727f87afb7)) +* **content-lane:** recognize snake_case distribution and primary source fields ([#7492](https://github.com/JSONbored/loopover/issues/7492)) ([90b01f6](https://github.com/JSONbored/loopover/commit/90b01f655f41f792f0e7e53f97b6bafc7aa6611a)), closes [#7446](https://github.com/JSONbored/loopover/issues/7446) +* **draft:** make draftPrClosePolicy config-as-code only ([#7722](https://github.com/JSONbored/loopover/issues/7722)) ([30d039b](https://github.com/JSONbored/loopover/commit/30d039bf3b7822f6a39276c63989557139c3c252)) +* **engine:** apply the JSON→YAML fallback in config-lint's canonical parser too ([#7287](https://github.com/JSONbored/loopover/issues/7287)) ([d54bc35](https://github.com/JSONbored/loopover/commit/d54bc35e7ef4b36899883f5f35524c55d7eda740)), closes [#7244](https://github.com/JSONbored/loopover/issues/7244) +* **engine:** cap idea-intake acceptanceHints entry length ([#7285](https://github.com/JSONbored/loopover/issues/7285)) ([93113d7](https://github.com/JSONbored/loopover/commit/93113d716520710fd4b8b92cb94219618449611a)), closes [#7243](https://github.com/JSONbored/loopover/issues/7243) +* **engine:** correct mergeReadinessGateMode doc comment's sub-gate count ([#7288](https://github.com/JSONbored/loopover/issues/7288)) ([341798a](https://github.com/JSONbored/loopover/commit/341798adf4dfe4f76315ac74a1c3832f163945a0)) +* **engine:** diffFilePriority's vendored-directory pattern misses vendored/third_party/third-party/bower_components/jspm_packages ([#7540](https://github.com/JSONbored/loopover/issues/7540)) ([1a019ab](https://github.com/JSONbored/loopover/commit/1a019aba8aa71403996468cd87706ae751bfabc3)) +* **engine:** don't charge per-file-skipped files against repo-map's aggregate budget ([#7270](https://github.com/JSONbored/loopover/issues/7270)) ([e66f869](https://github.com/JSONbored/loopover/commit/e66f8693d7b079faf38d87d517ce71046c7e788c)) +* **engine:** exclude evidence URLs from track-record blocklist scan ([#7483](https://github.com/JSONbored/loopover/issues/7483)) ([ecf57ad](https://github.com/JSONbored/loopover/commit/ecf57adb1a747a20dccd7ea42e1b2edbb9ef534c)), closes [#7444](https://github.com/JSONbored/loopover/issues/7444) +* **engine:** extend [#5831](https://github.com/JSONbored/loopover/issues/5831)'s repo-segment path-safety validation to governor/portfolio/worktree stores ([#7554](https://github.com/JSONbored/loopover/issues/7554)) ([fadb5cc](https://github.com/JSONbored/loopover/commit/fadb5cc92c7c4e6c2c8108beaf70209c45b6c595)), closes [#7525](https://github.com/JSONbored/loopover/issues/7525) +* **engine:** fold idea hints/constraints into the first draft's own explicit criteria ([#7737](https://github.com/JSONbored/loopover/issues/7737)) ([0709850](https://github.com/JSONbored/loopover/commit/0709850a5f59f3319e6636477f9d73393c1dab41)), closes [#7730](https://github.com/JSONbored/loopover/issues/7730) +* **engine:** include inputTokenPattern in ruleSignature's deny-hook identity ([#8126](https://github.com/JSONbored/loopover/issues/8126)) ([fbcba1e](https://github.com/JSONbored/loopover/commit/fbcba1ef3f9c9e5414673c1234955efcff27c273)), closes [#8013](https://github.com/JSONbored/loopover/issues/8013) +* **engine:** normalize computeMetadataDupRisk's self-skip repo comparison ([#7734](https://github.com/JSONbored/loopover/issues/7734)) ([5430064](https://github.com/JSONbored/loopover/commit/5430064f741065f00abc44b58685cedd735511b7)), closes [#7731](https://github.com/JSONbored/loopover/issues/7731) +* **engine:** preserve explicit zero pairwise calibration weights ([#7477](https://github.com/JSONbored/loopover/issues/7477)) ([253dfcb](https://github.com/JSONbored/loopover/commit/253dfcba53247c76cb2a4c9cfd246ce0343b452b)), closes [#7443](https://github.com/JSONbored/loopover/issues/7443) +* **engine:** protect the real post-[#6203](https://github.com/JSONbored/loopover/issues/6203) autonomy/guardrail-config paths, not just their src/ shims ([#8128](https://github.com/JSONbored/loopover/issues/8128)) ([d821cbd](https://github.com/JSONbored/loopover/commit/d821cbdf2b2a4ca1cb62b0fe666dd853a6776036)) +* **engine:** redact secret-shaped titles from the public-safe results summary ([#7279](https://github.com/JSONbored/loopover/issues/7279)) ([a0c3b33](https://github.com/JSONbored/loopover/commit/a0c3b33adc2d44f95a9142f70e97579883eb8ff9)), closes [#7249](https://github.com/JSONbored/loopover/issues/7249) +* **engine:** single-source the suspicious-label matcher so bestFitLabels can't drift ([40c6349](https://github.com/JSONbored/loopover/commit/40c63497e4f362e572c3d5f25d92615508121ee2)) +* **engine:** single-source the suspicious-label matcher so bestFitLabels can't drift ([0bcd64f](https://github.com/JSONbored/loopover/commit/0bcd64f1746ce7db0a6d94ede09a1e7cc3bf527e)), closes [#7251](https://github.com/JSONbored/loopover/issues/7251) +* **engine:** tolerate a malformed repoFullName per-row in deny-hook blocker history ([c0b4185](https://github.com/JSONbored/loopover/commit/c0b418579366bce1f609a85f9ac4edf00c472f28)) +* **engine:** tolerate a malformed repoFullName per-row in deny-hook blocker history ([744de48](https://github.com/JSONbored/loopover/commit/744de48df1b7c06950aa075577287d4e362177ae)) +* **engine:** treat a dangling dependsOn id as unsatisfied in plan-export ordering ([#7738](https://github.com/JSONbored/loopover/issues/7738)) ([e8577cb](https://github.com/JSONbored/loopover/commit/e8577cb28d8bada53b1dd4359fda8f67e07e1e33)), closes [#7729](https://github.com/JSONbored/loopover/issues/7729) +* **engine:** trim attempt-id slug after truncation ([#7551](https://github.com/JSONbored/loopover/issues/7551)) ([ed183a3](https://github.com/JSONbored/loopover/commit/ed183a3d5faf1ef2cc5da83f2e836a6ea7a3ef9b)) +* **miner:** carry real assignees through the discovery-index supplement so the repo-owner exclusion applies ([#7488](https://github.com/JSONbored/loopover/issues/7488)) ([e7cbb1b](https://github.com/JSONbored/loopover/commit/e7cbb1b6cc4e80c8ea1bac4953a07555e437d15b)), closes [#7442](https://github.com/JSONbored/loopover/issues/7442) +* **miner:** clamp out-of-contract usage from the iterate-loop running totals ([#7246](https://github.com/JSONbored/loopover/issues/7246)) ([#7272](https://github.com/JSONbored/loopover/issues/7272)) ([d6134b2](https://github.com/JSONbored/loopover/commit/d6134b20a74471b73d6b2811baa1e09986bfce43)) +* **miner:** grant Read/Bash in the agent-sdk driver's tool allowlist ([#7245](https://github.com/JSONbored/loopover/issues/7245)) ([#7276](https://github.com/JSONbored/loopover/issues/7276)) ([d0617d1](https://github.com/JSONbored/loopover/commit/d0617d1b72ca911223602740f90c062e8acdf965)) +* **review:** block the RFC 6598 CGNAT range in both safe-url twin guards ([3c72fce](https://github.com/JSONbored/loopover/commit/3c72fce9146804b1dd40afe9c8929b5b60f36e5c)) +* **review:** block the RFC 6598 CGNAT range in both safe-url twin guards ([3630700](https://github.com/JSONbored/loopover/commit/3630700ef0938b9699a55651157d71cf99a9d529)), closes [#7253](https://github.com/JSONbored/loopover/issues/7253) +* **review:** close SSRF and lockfile-tamper detection gaps ([#7826](https://github.com/JSONbored/loopover/issues/7826)) ([0ff0b8f](https://github.com/JSONbored/loopover/commit/0ff0b8fb5dff9099bc136623e0f01fa7966603fc)) +* **review:** correct the stale-base grounding fact and close the mergeable_state blind spot it depends on ([#7686](https://github.com/JSONbored/loopover/issues/7686)) ([9e6691a](https://github.com/JSONbored/loopover/commit/9e6691a963016a0ef14833799c8119b4c87b4dfc)) +* **review:** ORB fairness analytics -- broken accuracy metric, public report, contributor trust profiles ([#7581](https://github.com/JSONbored/loopover/issues/7581)) ([87843ab](https://github.com/JSONbored/loopover/commit/87843abdb72e0178cbf4c9b743fee64df3f80105)) +* **review:** reject plain ws: in isSafeEndpointUrl, matching its own "secure" doc comment ([#8131](https://github.com/JSONbored/loopover/issues/8131)) ([24929e3](https://github.com/JSONbored/loopover/commit/24929e3f5427e42376ab295c6668df54b746a92f)) +* **review:** stop bare hotkey/coldkey mentions from false-positiving as secret leaks ([#7994](https://github.com/JSONbored/loopover/issues/7994)) ([c73f518](https://github.com/JSONbored/loopover/commit/c73f518fad8b99e81135869a19cd756413556cce)) +* **selfhost:** stop delayed webhooks from resurrecting closed PRs' review tracking ([#7839](https://github.com/JSONbored/loopover/issues/7839)) ([6ea4e28](https://github.com/JSONbored/loopover/commit/6ea4e284684a89bc10575bc80a0e33d0ca8ac0d2)) +* **signals:** single-source predicted-gate-engine isCodeFile so .kts counts as code ([#7273](https://github.com/JSONbored/loopover/issues/7273)) ([c743eca](https://github.com/JSONbored/loopover/commit/c743ecab1cf3abde4861e67ee8a43012fa6ca65f)), closes [#7252](https://github.com/JSONbored/loopover/issues/7252) +* **visual:** address adversarial review findings on interaction capture ([26a7a3b](https://github.com/JSONbored/loopover/commit/26a7a3b24e45d37904211201d51ea2937965a19c)) + ## [3.4.0](https://github.com/JSONbored/loopover/compare/engine-v3.3.0...engine-v3.4.0) (2026-07-18) diff --git a/packages/loopover-engine/package.json b/packages/loopover-engine/package.json index 0f33617c82..8517bb5602 100644 --- a/packages/loopover-engine/package.json +++ b/packages/loopover-engine/package.json @@ -1,6 +1,6 @@ { "name": "@loopover/engine", - "version": "3.4.1", + "version": "3.5.0", "license": "AGPL-3.0-only", "type": "module", "description": "Shared deterministic engine logic for the LoopOver review stack and loopover-miner.", diff --git a/packages/loopover-mcp/CHANGELOG.md b/packages/loopover-mcp/CHANGELOG.md index 019dcf1418..f70f7256b5 100644 --- a/packages/loopover-mcp/CHANGELOG.md +++ b/packages/loopover-mcp/CHANGELOG.md @@ -5,6 +5,43 @@ ### Fixes - Blunt slop-risk / issue-slop REST + CLI to match the MCP tools (#6990) (#7052) +## [3.5.0](https://github.com/JSONbored/loopover/compare/mcp-v3.4.0...mcp-v3.5.0) (2026-07-23) + + +### Features + +* **api:** REST + CLI mirror for loopover_watch_issues ([#7153](https://github.com/JSONbored/loopover/issues/7153)) ([13cb8a3](https://github.com/JSONbored/loopover/commit/13cb8a3909d31e2f1b95963e734073ae985646b7)), closes [#6746](https://github.com/JSONbored/loopover/issues/6746) +* **engine:** represent idea targetRepo as an existing-vs-provision union ([#7710](https://github.com/JSONbored/loopover/issues/7710)) ([d7042ef](https://github.com/JSONbored/loopover/commit/d7042efdee08029c91e37995db34f83bb4d604fe)), closes [#7635](https://github.com/JSONbored/loopover/issues/7635) +* **mcp:** add remote + stdio + CLI surfaces for the selftune override audit ([#7997](https://github.com/JSONbored/loopover/issues/7997)) ([050f8cb](https://github.com/JSONbored/loopover/commit/050f8cb3ae7df3850147375b288e4b9762929c21)) +* **mcp:** add remote + stdio MCP tool surfaces for loopover_get_activation_preview ([#7887](https://github.com/JSONbored/loopover/issues/7887)) ([e8e5d89](https://github.com/JSONbored/loopover/commit/e8e5d893a82cba53ac6b7a328bc7842d9942f863)), closes [#7799](https://github.com/JSONbored/loopover/issues/7799) +* **mcp:** add remote + stdio surfaces for loopover_get_ams_miner_cohort ([#7935](https://github.com/JSONbored/loopover/issues/7935)) ([4f87f1a](https://github.com/JSONbored/loopover/commit/4f87f1a5296069fb72b9a96d3255268cd9879218)) +* **mcp:** add remote + stdio surfaces for loopover_get_gate_config_effective ([#7928](https://github.com/JSONbored/loopover/issues/7928)) ([03f9d9c](https://github.com/JSONbored/loopover/commit/03f9d9cbe124ab95883ea6f5d375aa29f4fdcfde)), closes [#7800](https://github.com/JSONbored/loopover/issues/7800) +* **mcp:** add remote + stdio surfaces for loopover_get_live_gate_thresholds ([#7924](https://github.com/JSONbored/loopover/issues/7924)) ([510d25b](https://github.com/JSONbored/loopover/commit/510d25bc268ca07c01f698b7723321c3a8ba7276)), closes [#7801](https://github.com/JSONbored/loopover/issues/7801) +* **mcp:** add remote + stdio surfaces for loopover_get_pr_maintainer_packet ([#7926](https://github.com/JSONbored/loopover/issues/7926)) ([1257c20](https://github.com/JSONbored/loopover/commit/1257c204f8314042205fdbbc1e0bb5641f9d0452)), closes [#7802](https://github.com/JSONbored/loopover/issues/7802) +* **mcp:** add remote + stdio surfaces for loopover_get_registry_snapshot ([#7917](https://github.com/JSONbored/loopover/issues/7917)) ([f27b9f0](https://github.com/JSONbored/loopover/commit/f27b9f0cf197cdc4eb45c527c266a60903343994)) +* **mcp:** add remote + stdio surfaces for loopover_get_repo_focus_manifest ([#7943](https://github.com/JSONbored/loopover/issues/7943)) ([bc042ed](https://github.com/JSONbored/loopover/commit/bc042edc30d2418382e8b717c7e07518ac879027)) +* **mcp:** add remote + stdio surfaces for loopover_get_upstream_ruleset ([#7921](https://github.com/JSONbored/loopover/issues/7921)) ([a97dd18](https://github.com/JSONbored/loopover/commit/a97dd18b6d11e390befb15441537909bf663f96c)), closes [#7807](https://github.com/JSONbored/loopover/issues/7807) +* **mcp:** add REST route, CLI command, and stdio tool for loopover_plan_repo_issues ([#7890](https://github.com/JSONbored/loopover/issues/7890)) ([b3e1bc3](https://github.com/JSONbored/loopover/commit/b3e1bc359c10802eb22b86e69a443e2e70828b4a)), closes [#7764](https://github.com/JSONbored/loopover/issues/7764) +* **mcp:** register loopover_check_improvement_potential stdio tool ([#7963](https://github.com/JSONbored/loopover/issues/7963)) ([a4c15d6](https://github.com/JSONbored/loopover/commit/a4c15d6484a778d9bc86c0fee92f2e5f4fbb09b1)) +* **mcp:** register loopover_generate_contributor_issue_drafts as a local stdio tool ([#7989](https://github.com/JSONbored/loopover/issues/7989)) ([6a55b8d](https://github.com/JSONbored/loopover/commit/6a55b8d324a24279a42b8adde3314a45ce2a4d88)) +* **mcp:** register loopover_get_agent_audit_feed as a local stdio tool ([#7971](https://github.com/JSONbored/loopover/issues/7971)) ([84a7878](https://github.com/JSONbored/loopover/commit/84a7878c67e1c79dbec92a702617a65e54b6f6c9)) +* **mcp:** register loopover_get_automation_state as a local stdio tool ([#7966](https://github.com/JSONbored/loopover/issues/7966)) ([ca738de](https://github.com/JSONbored/loopover/commit/ca738dec7ce840cc9b1ae03a61c0067c58bcb450)) +* **mcp:** register loopover_get_contributor_profile as a local stdio tool ([#7760](https://github.com/JSONbored/loopover/issues/7760)) ([#7958](https://github.com/JSONbored/loopover/issues/7958)) ([3790ecd](https://github.com/JSONbored/loopover/commit/3790ecde79469af12309183ae22b04656e27d3c5)) +* **mcp:** register loopover_get_outcome_calibration as a local stdio tool ([#7877](https://github.com/JSONbored/loopover/issues/7877)) ([0af9f49](https://github.com/JSONbored/loopover/commit/0af9f49186a38526a99324dfd2fcceeece2b1295)) +* **mcp:** register loopover_get_repo_onboarding_pack as a local ([#7977](https://github.com/JSONbored/loopover/issues/7977)) ([b9aa25f](https://github.com/JSONbored/loopover/commit/b9aa25f60d2cc63ba889dd2ef1ea619e1cb1ec81)) +* **mcp:** register loopover_list_notifications as a local stdio tool ([#7761](https://github.com/JSONbored/loopover/issues/7761)) ([#7965](https://github.com/JSONbored/loopover/issues/7965)) ([8c2950c](https://github.com/JSONbored/loopover/commit/8c2950c3f063785d6896030cc4dcf3d08697801c)) +* **mcp:** register loopover_mark_notifications_read as a local stdio tool ([#7950](https://github.com/JSONbored/loopover/issues/7950)) ([fa3581d](https://github.com/JSONbored/loopover/commit/fa3581dec91dddb9b6c94f5814a8ef354cd2b92e)), closes [#7762](https://github.com/JSONbored/loopover/issues/7762) +* **mcp:** register loopover_propose_action as a local stdio tool ([#7991](https://github.com/JSONbored/loopover/issues/7991)) ([7c1a21e](https://github.com/JSONbored/loopover/commit/7c1a21effb2e5725ec4d4ecdec41d42f990162f4)) +* **mcp:** register loopover_refresh_repo_docs as a local stdio tool ([#7974](https://github.com/JSONbored/loopover/issues/7974)) ([4dccaa6](https://github.com/JSONbored/loopover/commit/4dccaa6dde04064ea0a87583380ea6ef3de4fd92)), closes [#7754](https://github.com/JSONbored/loopover/issues/7754) +* **mcp:** register loopover_watch_issues as a local stdio tool ([#7961](https://github.com/JSONbored/loopover/issues/7961)) ([43099df](https://github.com/JSONbored/loopover/commit/43099df099a044db30d402601c7ffa84f72a55f5)), closes [#7763](https://github.com/JSONbored/loopover/issues/7763) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @loopover/engine bumped from ^3.4.0 to ^3.5.0 + ## [3.4.0](https://github.com/JSONbored/loopover/compare/mcp-v3.3.0...mcp-v3.4.0) (2026-07-18) diff --git a/packages/loopover-mcp/package.json b/packages/loopover-mcp/package.json index 066b49d72e..c43b8c02ba 100644 --- a/packages/loopover-mcp/package.json +++ b/packages/loopover-mcp/package.json @@ -1,6 +1,6 @@ { "name": "@loopover/mcp", - "version": "3.4.0", + "version": "3.5.0", "license": "AGPL-3.0-only", "type": "module", "description": "Local stdio MCP wrapper for the LoopOver Gittensor base-agent.", @@ -44,7 +44,7 @@ "build:verify": "node scripts/check-syntax.mjs" }, "dependencies": { - "@loopover/engine": "^3.4.0", + "@loopover/engine": "^3.5.0", "@modelcontextprotocol/sdk": "1.29.0", "posthog-node": "^5.44.0", "zod": "^4.4.3" diff --git a/packages/loopover-miner/CHANGELOG.md b/packages/loopover-miner/CHANGELOG.md index f7298a9b1f..508b13e2f7 100644 --- a/packages/loopover-miner/CHANGELOG.md +++ b/packages/loopover-miner/CHANGELOG.md @@ -1,5 +1,66 @@ # Changelog +## [3.5.0](https://github.com/JSONbored/loopover/compare/miner-v3.4.0...miner-v3.5.0) (2026-07-23) + + +### Features + +* **calibration:** shared ORB+AMS signal-tracking module, with AMS wired live ([#8079](https://github.com/JSONbored/loopover/issues/8079)) ([873ecf2](https://github.com/JSONbored/loopover/commit/873ecf2cf87e3b43066a6310723d347b001fa48a)) +* **governor:** page PagerDuty on kill-switch trips ([#8052](https://github.com/JSONbored/loopover/issues/8052)) ([8329069](https://github.com/JSONbored/loopover/commit/832906916b5a9543c399cc4bd577913aa1a9beb7)), closes [#7666](https://github.com/JSONbored/loopover/issues/7666) +* **miner:** add a dry-run full-execution mode to the cross-repo evaluation harness ([#7668](https://github.com/JSONbored/loopover/issues/7668)) ([b764880](https://github.com/JSONbored/loopover/commit/b764880574944ea935bea8940d8a98852042c88f)), closes [#7634](https://github.com/JSONbored/loopover/issues/7634) +* **miner:** add a hosted-container entry point for AMS cron-wake cycles ([#7182](https://github.com/JSONbored/loopover/issues/7182)) ([#8070](https://github.com/JSONbored/loopover/issues/8070)) ([613e5fb](https://github.com/JSONbored/loopover/commit/613e5fbcfc05c18768e97b0161564bd5e0356a2b)) +* **miner:** add a pr-outcomes CLI for the hosted contributor outcome history ([#7998](https://github.com/JSONbored/loopover/issues/7998)) ([24ddd19](https://github.com/JSONbored/loopover/commit/24ddd19fc773a1ed9323821ac2e2287b2133e826)) +* **miner:** add AMS hosted-container health HTTP endpoint ([#7177](https://github.com/JSONbored/loopover/issues/7177)) ([#7185](https://github.com/JSONbored/loopover/issues/7185)) ([53527e6](https://github.com/JSONbored/loopover/commit/53527e6fc4f6cc4b218ec054e45d8117b6077dc2)) +* **miner:** add tenant create/list/destroy control-plane admin CLI ([#7284](https://github.com/JSONbored/loopover/issues/7284)) ([37ca8a5](https://github.com/JSONbored/loopover/commit/37ca8a5bb8c156ebae34c08b519b85e870e3c228)), closes [#7275](https://github.com/JSONbored/loopover/issues/7275) +* **miner:** migrate policy-doc-cache onto the SqliteDriver store seam ([aa95c0a](https://github.com/JSONbored/loopover/commit/aa95c0ad922caf25eb1800749797754395ae9722)) +* **miner:** migrate policy-doc-cache onto the SqliteDriver store seam ([5d19fe3](https://github.com/JSONbored/loopover/commit/5d19fe3cec913157e4c1be4a946e93f3ee6bf766)), closes [#7282](https://github.com/JSONbored/loopover/issues/7282) +* **miner:** roll the SqliteDriver seam onto the non-transactional local stores ([#7558](https://github.com/JSONbored/loopover/issues/7558)) ([7cbaa5b](https://github.com/JSONbored/loopover/commit/7cbaa5b5d0005bdcd8ea398901845aad478f1f7a)) +* **miner:** SqliteDriver store seam + migrate run-state ([#7194](https://github.com/JSONbored/loopover/issues/7194)) ([c3660a2](https://github.com/JSONbored/loopover/commit/c3660a25dd27d1b3b6c56eaf24dded9ef0baf0bd)) +* **miner:** wire the opt-in discovery-plane client into discover and attempt ([#7220](https://github.com/JSONbored/loopover/issues/7220)) ([0959d4b](https://github.com/JSONbored/loopover/commit/0959d4b7aeb29ae2da4366ed5d178fb1b562a086)), closes [#7168](https://github.com/JSONbored/loopover/issues/7168) +* **notifications:** extend badge notifications to AMS attempt, governor-pause, and PR-outcome events ([#8057](https://github.com/JSONbored/loopover/issues/8057)) ([17848e5](https://github.com/JSONbored/loopover/commit/17848e5068b92e8f037ab5efbaa077908ca978f7)), closes [#7657](https://github.com/JSONbored/loopover/issues/7657) + + +### Fixes + +* **engine:** extend [#5831](https://github.com/JSONbored/loopover/issues/5831)'s repo-segment path-safety validation to governor/portfolio/worktree stores ([#7554](https://github.com/JSONbored/loopover/issues/7554)) ([fadb5cc](https://github.com/JSONbored/loopover/commit/fadb5cc92c7c4e6c2c8108beaf70209c45b6c595)), closes [#7525](https://github.com/JSONbored/loopover/issues/7525) +* **governor-state:** make scalar-state saves atomic against concurrent writers ([b031efa](https://github.com/JSONbored/loopover/commit/b031efa8dae997f1648a291e0ad22f7274d1b955)) +* **governor-state:** make scalar-state saves atomic against concurrent writers ([21e9d86](https://github.com/JSONbored/loopover/commit/21e9d86f4d7015134c8ac67f3643ace1d03c3deb)), closes [#7221](https://github.com/JSONbored/loopover/issues/7221) +* **lint:** avoid a comment-induced trailing-whitespace line in compiled opportunity-fanout.js ([de94afb](https://github.com/JSONbored/loopover/commit/de94afbb83a4713fd1191ab92aed5de77cc54b25)) +* **miner:** add policy-doc-cache to doctor and migrate store lists ([#7238](https://github.com/JSONbored/loopover/issues/7238)) ([#7263](https://github.com/JSONbored/loopover/issues/7263)) ([3aea7c7](https://github.com/JSONbored/loopover/commit/3aea7c76f0acfef484d63ff11740d4d9b14f381a)) +* **miner:** bound the AMS export POST with a request timeout ([#7237](https://github.com/JSONbored/loopover/issues/7237)) ([#7267](https://github.com/JSONbored/loopover/issues/7267)) ([a783cc1](https://github.com/JSONbored/loopover/commit/a783cc1d6b50d58c96c0340d18047d16380e2aa0)) +* **miner:** carry real assignees through the discovery-index supplement so the repo-owner exclusion applies ([#7488](https://github.com/JSONbored/loopover/issues/7488)) ([e7cbb1b](https://github.com/JSONbored/loopover/commit/e7cbb1b6cc4e80c8ea1bac4953a07555e437d15b)), closes [#7442](https://github.com/JSONbored/loopover/issues/7442) +* **miner:** fail closed on an unparseable lease in portfolio-queue findStuckItems ([#8033](https://github.com/JSONbored/loopover/issues/8033)) ([bf8bb14](https://github.com/JSONbored/loopover/commit/bf8bb14a444637624ea9b9937de668282edde7f0)), closes [#8007](https://github.com/JSONbored/loopover/issues/8007) +* **miner:** fail closed when referencing PR has missing authorLogin ([#7794](https://github.com/JSONbored/loopover/issues/7794)) ([#7824](https://github.com/JSONbored/loopover/issues/7824)) ([1b30e5b](https://github.com/JSONbored/loopover/commit/1b30e5b01b77469e5f2a7c7eb47df560fe84aede)) +* **miner:** log prompt-injection audit from buildTaskBrief ([#7486](https://github.com/JSONbored/loopover/issues/7486)) ([8c2c81f](https://github.com/JSONbored/loopover/commit/8c2c81fcd8cc0305ddc4f47ce791358c8fd5bac3)) +* **miner:** match the host's byte-range code-span exclusion + URL closing form in extractLinkedIssueNumbers ([#7550](https://github.com/JSONbored/loopover/issues/7550)) ([f685074](https://github.com/JSONbored/loopover/commit/f685074485960fc024652a3bfb947ecd031e0f8a)), closes [#7527](https://github.com/JSONbored/loopover/issues/7527) +* **miner:** order pr-outcome map by event recency so disengagement streaks are correct ([#7222](https://github.com/JSONbored/loopover/issues/7222)) ([#7239](https://github.com/JSONbored/loopover/issues/7239)) ([c953438](https://github.com/JSONbored/loopover/commit/c953438d08faa457b38e6b992d479c452c0c1067)) +* **miner:** page contribution-profile label fetches past 100 ([#8010](https://github.com/JSONbored/loopover/issues/8010)) ([#8040](https://github.com/JSONbored/loopover/issues/8040)) ([75daa84](https://github.com/JSONbored/loopover/commit/75daa84ab384fb87624930fa8ad06e346f330e3c)) +* **miner:** purge contribution-profile-cache and governor-state's repo-scoped tables ([#7091](https://github.com/JSONbored/loopover/issues/7091)) ([#7110](https://github.com/JSONbored/loopover/issues/7110)) ([6cb2c17](https://github.com/JSONbored/loopover/commit/6cb2c17eb038bb78cf664737c62363f3b8b6fd05)) +* **miner:** purge ranked-candidates, replay-snapshot, and deny-hook-synthesis stores by repo ([#8009](https://github.com/JSONbored/loopover/issues/8009)) ([#8042](https://github.com/JSONbored/loopover/issues/8042)) ([8fcbfd9](https://github.com/JSONbored/loopover/commit/8fcbfd9e493e890a321c9ea368110b24fa616bb4)) +* **miner:** reclaim worktree slots by lease age, not cross-container PID liveness ([#7131](https://github.com/JSONbored/loopover/issues/7131)) ([237530a](https://github.com/JSONbored/loopover/commit/237530a80d390e1baa7e53612267456ac16b821a)), closes [#7085](https://github.com/JSONbored/loopover/issues/7085) +* **miner:** register ranked-candidates + deny-hook-synthesis in doctor/migrate store lists ([#8036](https://github.com/JSONbored/loopover/issues/8036)) ([37369b9](https://github.com/JSONbored/loopover/commit/37369b938188538a968352b8d48b66a75ff75c61)), closes [#8008](https://github.com/JSONbored/loopover/issues/8008) +* **miner:** reject path-traversal repo segments in the 4 remaining normalizeRepoFullName parsers ([#8065](https://github.com/JSONbored/loopover/issues/8065)) ([b788945](https://github.com/JSONbored/loopover/commit/b78894571281ace28a4b61f6ce0af96de53eb42e)), closes [#7795](https://github.com/JSONbored/loopover/issues/7795) +* **miner:** reject path-traversal-shaped commitSha in replay-snapshot path planner ([#7996](https://github.com/JSONbored/loopover/issues/7996)) ([2656eaa](https://github.com/JSONbored/loopover/commit/2656eaa3e58df985283ff968fd5048cb9b5ff43b)), closes [#7796](https://github.com/JSONbored/loopover/issues/7796) +* **miner:** report a clean CLI failure when manage status collection throws ([#7236](https://github.com/JSONbored/loopover/issues/7236)) ([#7266](https://github.com/JSONbored/loopover/issues/7266)) ([86d5d31](https://github.com/JSONbored/loopover/commit/86d5d3125e9f4cc3b46ff73c18a8e880ab718a90)) +* **miner:** retry transient 5xx/rate-limit in contribution-profile getJson ([#7126](https://github.com/JSONbored/loopover/issues/7126)) ([ec15d24](https://github.com/JSONbored/loopover/commit/ec15d24f20fb18b51980142eff1ff11097695c2b)), closes [#7090](https://github.com/JSONbored/loopover/issues/7090) +* **miner:** retry transient live-state fetch in checkSubmissionFreshness before failing closed ([#7129](https://github.com/JSONbored/loopover/issues/7129)) ([2183167](https://github.com/JSONbored/loopover/commit/21831675a22a05a806a438d166ac086af7b42785)), closes [#7089](https://github.com/JSONbored/loopover/issues/7089) +* **miner:** scan coding-agent driver roots in env-reference generator ([#6994](https://github.com/JSONbored/loopover/issues/6994)) ([#7154](https://github.com/JSONbored/loopover/issues/7154)) ([1d7248b](https://github.com/JSONbored/loopover/commit/1d7248bcec5ad750177d213231a6dff560703ed6)) +* **miner:** serialize repo clones across processes with a lockfile ([#7084](https://github.com/JSONbored/loopover/issues/7084)) ([#7162](https://github.com/JSONbored/loopover/issues/7162)) ([051e969](https://github.com/JSONbored/loopover/commit/051e969a30fff45916502c5e9e183f70a84242e8)) +* **miner:** size-guard cross-repo manifest by UTF-8 bytes, not UTF-16 length ([#7223](https://github.com/JSONbored/loopover/issues/7223)) ([#7235](https://github.com/JSONbored/loopover/issues/7235)) ([92ccd34](https://github.com/JSONbored/loopover/commit/92ccd34e2f62de898e28f13f520291c486d16252)) +* **miner:** sweep a claim with an unparseable claimedAt instead of retaining it forever ([#7746](https://github.com/JSONbored/loopover/issues/7746)) ([352c49f](https://github.com/JSONbored/loopover/commit/352c49fcbe710d5a5272681aef1f2df1142d1d23)), closes [#7732](https://github.com/JSONbored/loopover/issues/7732) +* **miner:** wire policy_verdict_cache into purge/status/migrate local stores ([#7136](https://github.com/JSONbored/loopover/issues/7136)) ([d0fbe82](https://github.com/JSONbored/loopover/commit/d0fbe82c61b53d09ce03580129246becd1fbb0a4)), closes [#6987](https://github.com/JSONbored/loopover/issues/6987) +* **portfolio:** key the queue dashboard per-repo map by (apiBaseUrl, repoFullName) ([#7241](https://github.com/JSONbored/loopover/issues/7241)) ([c7fbb82](https://github.com/JSONbored/loopover/commit/c7fbb8228cd03aad17960bae95db223979e401b0)) +* **portfolio:** scope per-repo WIP caps by forge host, not repo name alone ([#7224](https://github.com/JSONbored/loopover/issues/7224)) ([#7261](https://github.com/JSONbored/loopover/issues/7261)) ([4cd3f24](https://github.com/JSONbored/loopover/commit/4cd3f248bf7ddbd5cb1aba9cc4099b8de76b945e)) +* **ranker:** only flag default-goal-spec use when every ranked repo lacks one ([#7226](https://github.com/JSONbored/loopover/issues/7226)) ([#7255](https://github.com/JSONbored/loopover/issues/7255)) ([a575ac2](https://github.com/JSONbored/loopover/commit/a575ac2db57f05ceaa8f863b27350c3d01336c36)) +* **review:** stop bare hotkey/coldkey mentions from false-positiving as secret leaks ([#7994](https://github.com/JSONbored/loopover/issues/7994)) ([c73f518](https://github.com/JSONbored/loopover/commit/c73f518fad8b99e81135869a19cd756413556cce)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @loopover/engine bumped from ^3.4.0 to ^3.5.0 + ## [3.4.0](https://github.com/JSONbored/loopover/compare/miner-v3.3.0...miner-v3.4.0) (2026-07-18) diff --git a/packages/loopover-miner/package.json b/packages/loopover-miner/package.json index 702abf78dd..4a23a69cd9 100644 --- a/packages/loopover-miner/package.json +++ b/packages/loopover-miner/package.json @@ -1,6 +1,6 @@ { "name": "@loopover/miner", - "version": "3.4.0", + "version": "3.5.0", "license": "AGPL-3.0-only", "type": "module", "description": "Foundation CLI for the local LoopOver miner runtime.", @@ -48,7 +48,7 @@ "build:verify": "node scripts/check-syntax.mjs" }, "dependencies": { - "@loopover/engine": "^3.4.0", + "@loopover/engine": "^3.5.0", "@modelcontextprotocol/sdk": "1.29.0", "@sentry/node": "^10.63.0", "zod": "^4.4.3" From 51e261bd7683b84dafa76c3ff509e0266a71ce44 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 05:16:23 +0000 Subject: [PATCH 2/3] chore(release): sync package-lock.json --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index c22c4e8555..7209be8974 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21387,7 +21387,7 @@ }, "packages/loopover-ui-kit": { "name": "@loopover/ui-kit", - "version": "1.1.1", + "version": "1.1.0", "license": "AGPL-3.0-only", "dependencies": { "@radix-ui/react-accordion": "^1.2.15", From 2753ad116872cf9f3ecffdc5b8feecfc3a081a7d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 05:16:25 +0000 Subject: [PATCH 3/3] chore(release): sync miner engine-version pin --- packages/loopover-miner/expected-engine.version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/loopover-miner/expected-engine.version b/packages/loopover-miner/expected-engine.version index 47b322c971..1545d96657 100644 --- a/packages/loopover-miner/expected-engine.version +++ b/packages/loopover-miner/expected-engine.version @@ -1 +1 @@ -3.4.1 +3.5.0