Releases: JSONbored/loopover
Release list
@loopover/mcp v3.2.1
@loopover/mcp v3.1.1
mcp: v3.1.0
3.1.0 (2026-07-17)
Features
- api: add a REST route + CLI mirror for loopover_check_test_evidence (#6810) (d45d8fd), closes #6749
- api: add a REST route + CLI mirror for loopover_evaluate_escalation (#6805) (f8d1628), closes #6754
- api: add a REST route + CLI mirror for loopover_get_pr_ai_review_findings (#6676) (885336a), closes #6619
- api: add a REST route + CLI mirror for loopover_simulate_open_pr_pressure (#6915) (68b8694), closes #6751
- api: add a REST route + CLI mirror for loopover_suggest_boundary_tests (80869bd)
- api: add a REST route + CLI mirror for loopover_suggest_boundary_tests (4d5212e), closes #6750
- api: add GET /v1/repos/:owner/:repo/automation-state + CLI mirror (#6742) (#6964) (c566906)
- api: add POST /v1/repos/:owner/:repo/repo-docs/refresh + CLI mirror (#6973) (f1e9632)
- api: mirror loopover_propose_action to REST and the CLI (#6744) (#7030) (a752b8f)
- api: REST + CLI mirror for contributor notifications (#6745) (#7018) (447ee82)
- api: REST + CLI mirror for loopover_build_results_payload (#6904) (7f7ea50), closes #6752
- api: REST + CLI mirror for loopover_check_improvement_potential (#6955) (27c7c59)
- api: REST + CLI mirror for loopover_explain_review_risk (#6980) (#7026) (15715dc)
- api: REST + CLI mirror for loopover_intake_idea (#6916) (f1fb812), closes #6755
- api: REST + CLI mirror for loopover_pr_outcome (#6747) (748acee)
- api: REST + CLI mirror for loopover_pr_outcome (#6747) (efbe09c)
- api: REST + stdio mirror for loopover_build_progress_snapshot (#6943) (d6cf892)
- api: REST + stdio mirror for loopover_plan_idea_claims (#6952) (8fa47d1), closes #6756
- mcp: add a contributor-profile CLI command (#6961) (484c9c8)
- mcp: add a loopover_get_bounty_advisory CLI mirror (#6954) (7733371)
- mcp: add a loopover_get_maintainer_lane CLI mirror (#6942) (71bc183)
- mcp: add a maintain audit-feed CLI mirror for loopover_get_agent_audit_feed (#6733) (#6933) (5347291)
- mcp: add a maintain outcome-calibration CLI mirror (#6960) (a4310f1)
- mcp: add a typed PostHog wrapper module for packages/loopover-mcp (7152db6)
- mcp: add maintain onboarding-pack CLI mirror (#6913) (96ee9c4)
- mcp: CLI mirror for loopover_draft_pr_body (#6974) (13bd48b)
- mcp: CLI mirror for loopover_explain_gate_disposition (#6966) (4966070)
- mcp: CLI stdio mirror for loopover_get_repo_outcome_patterns (#6962) (244988b)
- mcp: mirror contributor-issue-draft generation to an MCP tool + maintain CLI (#7019) (bd4c172), closes #6757
- mcp: mirror loopover_monitor_open_prs to the stdio wrapper and CLI (#6789) (544cb31)
- mcp: record local stdio tool calls at the dispatch chokepoint (#6432) (45fe399), closes #6238
- mcp: register loopover_close_pr write-tool in both MCP surfaces (#6615) (#6715) (3f6591d)
- mcp: register plan-DAG tools + local scorer in packages/loopover-mcp (1aa6603)
- mcp: register plan-DAG tools + local scorer in packages/loopover-mcp (f096969), closes #6150
- mcp: register the 8 miner write-tools on the local stdio server (#6390) (9197680), closes #6149
- mcp: register the maintain REST surface as local stdio tools (#6382) (aa83a48), closes #6152
- mcp: REST route + CLI mirror for loopover_get_eligibility_plan (#6692) (bb028ec), closes #6621
- mcp: REST routes + CLI resource mirrors for finding-taxonomy and enrichment-analyzers (#6709) (b0677cd), closes #6620
- mcp: validate .loopover.yml offline by extracting buildFocusManifestValidation into @loopover/engine (#6425) ([22faecf](http...
@loopover/engine v3.2.1
Published @loopover/engine v3.2.1 to npm with provenance.
Install:
npm install @loopover/engine@3.2.1engine: v3.2.0
3.2.0 (2026-07-17)
Features
- api: add a REST route + CLI mirror for loopover_check_test_evidence (#6810) (d45d8fd), closes #6749
- config: make sweepWatchdog staleness threshold configurable (#6594) (#6639) (0e313c8)
- engine: add a stable, versioned getTrackRecordSummary read API (2958302)
- engine: add selfLoopAutonomy to AmsPolicySpec (bd614bf)
- engine: add selfLoopAutonomy to AmsPolicySpec (880b973), closes #6559
- engine: define a shared TrustSignal type for ORB/AMS reputation bridging (7ee0670)
- engine: define a shared TrustSignal type for ORB/AMS reputation bridging (145a279)
- mcp: CLI mirror for loopover_draft_pr_body (#6974) (13bd48b)
- mcp: CLI mirror for loopover_explain_gate_disposition (#6966) (4966070)
- mcp: validate .loopover.yml offline by extracting buildFocusManifestValidation into @loopover/engine (#6425) (22faecf), closes #6269
- miner: add read-only chat grounding over the existing miner MCP tools (#6570) (ed16fef), closes #6517
- miner: consult selfLoopAutonomy in decideNextAction's pass-to-handoff step (#6581) (7a275c7), closes #6560
- orb: add the opt-in federated collector transport client (push/pull) (#6537) (8ab3472), closes #6479
- orb: export a signed, anonymized federated calibration bundle (opt-in) (#6505) (53ce7b2), closes #6478
- orb: trust-gate inbound federated bundles per the #6477 key-trust design (#6649) (729254a)
- review: bridge a submitter's AMS track record into ORB reputation, upgrade-only (#6566) (97a1938), closes #6485
- review: give LOOPOVER_REVIEW_PLANNER a per-repo config override (b429292)
- review: give LOOPOVER_REVIEW_PLANNER a per-repo config override (73eb87d)
- selfhost: make LOOPOVER_REVIEW_DRAFT and LOOPOVER_AUTO_FILE_DRIFT_ISSUES .loopover.yml-controllable (85e8301)
- selfhost: make LOOPOVER_REVIEW_DRAFT and LOOPOVER_AUTO_FILE_DRIFT_ISSUES .loopover.yml-controllable (0d3f4cb)
- selfhost: make LOOPOVER_REVIEW_OPS and LOOPOVER_PUBLIC_STATS .loopover.yml-controllable (87c3e6b)
- selfhost: make LOOPOVER_REVIEW_OPS and LOOPOVER_PUBLIC_STATS .loopover.yml-controllable (bc2f899)
- selfhost: make LOOPOVER_SWEEP_WATCHDOG and LOOPOVER_PR_RECONCILIATION .loopover.yml-controllable (3ac9501)
- selfhost: make LOOPOVER_SWEEP_WATCHDOG and LOOPOVER_PR_RECONCILIATION .loopover.yml-controllable (7ca394a), closes #6558
Fixes
- config: scrub remaining pre-rename gittensory references (23152da)
- config: scrub remaining pre-rename gittensory references (e4b0f8c)
- correct four stale 'improvementSignal not wired yet' comments (#6691) (2d493cd)
- discovery-index: cap the untrusted response candidate list (#6774) (ff46459)
- discovery-index: cap the untrusted response candidate list (#6774) (ca5c81a)
- engine: align predicted-gate collision risk with live-gate twin (#6671) (2df475c), closes #6629
- engine: cap predicted-gate's local linked-issue extractor at the canonical 50 (#6771) (fcf41bc)
- engine: cap predicted-gate's local linked-issue extractor at the canonical 50 (#6771) (0fe3e99)
- engine: exclude inline code spans in predicted-gate extractLinkedIssueNumbers (e6ef456)
- engine: exclude inline code spans in predicted-gate extractLinkedIssueNumbers (#6630) (6ac8c1f)
- engine: exclude lockfiles and dependency manifests from trivial-churn detection (ed882b7)
- engine: exclude lockfiles and dependency manifests from trivial-churn detection (a2d8306)
- engine: exempt generated/vendored/minified files from missing-test-evidence signal (2c59771)
- engine: exempt generated/vendored/minified files from the missing-test-evidence signal (203e7c7)
- engine: filter maintainer-authored manifest fields out of public findings (99aeead)
- engine: filter maintainer-authored manifest fields out of public findings (5f5a6fc), closes #6770
- engine: floor percentComplete at 0 so it stays in its documented 0-100 range (#6773) (ab9cb63)
- engine: floor percentComplete at 0 so it stays in its documented 0-100 range (#6773) (84543ed)
- engine: honor no-issue rationale in predicted preflight (#6645) (8b20ad6), closes #6628
- engine: stop the collision rep...
loopover-orb orb-v2.1.0-beta.8
LoopOver Orb container image:
docker pull ghcr.io/jsonbored/loopover-selfhost:orb-v2.1.0-beta.8Multi-arch (linux/amd64 + linux/arm64). See https://loopover.ai/docs/maintainer-self-hosting for setup.
Includes the Claude Code / Codex subscription CLIs by default; credentials stay runtime-only.
Sentry release id baked into the image: gittensory-orb@2.1.0-beta.8.
What's Changed
🚀 Features
- feat(api): add a REST route + CLI mirror for loopover_get_pr_ai_review_findings by @davion-knight in #6676
- refactor(settings): drop 19 contributor-cap/review-nag/rate-limit config-as-code-only DB columns by @JSONbored in #6699
- feat(mcp): REST route + CLI mirror for loopover_get_eligibility_plan by @dhgoal in #6692
- feat(api): add REST mirrors for the finding-taxonomy and enrichment-analyzers MCP resources by @davion-knight in #6706
- feat(mcp): REST routes + CLI resource mirrors for finding-taxonomy and enrichment-analyzers by @dhgoal in #6709
- refactor(gate): delete the dead firstTimeContributorGrace surface end-to-end by @JSONbored in #6714
🐛 Fixes
- refactor(engine): consolidate plan step readiness helpers by @claytonlin1110 in #6672
- test(review): cover extractReviewSummary suggestions-merge and sole-reviewer-consensus branches by @ultrahighsuper in #6673
- fix(queue): re-verify write permission before the reopen re-close, like its 4 siblings by @luciferlive112116 in #6677
- refactor(signals): share resolveIssuePolicy between readiness reports (#6606) by @thomasalvaedison7777-lgtm in #6681
- fix(github): tighten ConfigurationCommandRequest.reason to a literal union by @ultrahighsuper in #6678
- fix(signals): advertise the real 99% patch coverage gate by @RealDiligent in #6683
- fix(review): wire resolveDispositionReason into the action-executor notification (#6636) by @nickmopen in #6686
- feat(openapi): document GET /v1/repos/:owner/:repo/gate-config/effective by @ultrahighsuper in #6687
- docs(review): correct grounding activation comment for features.grounding (#6623) by @thomasalvaedison7777-lgtm in #6688
- fix: correct four stale 'improvementSignal not wired yet' comments by @lourincedaging0-commits in #6691
- fix(miner): include portfolio-queue and run-state in purge-by-repo (#6599) by @thomasalvaedison7777-lgtm in #6694
- fix(miner): stamp prediction-ledger schema version and add tenant_id column by @e11734937-beep in #6702
- fix(miner): open the worktree allocator through local-store's openLocalStoreDb by @luciferlive112116 in #6704
- fix(miner): add the tenant_id column to governor-ledger and plan-store by @galuis116 in #6707
- feat(mcp): register loopover_close_pr write-tool in both MCP surfaces (#6615) by @jaytbarimbao-collab in #6715
- fix(queue): audit draft-dodge stand-down when paused or frozen by @RealDiligent in #6693
- docs(mcp): fix stale 'NOT WIRED YET' comment in telemetry.ts (#6617) by @shin-core in #6700
- fix(review): stop redundant republishing for a draft fork PR's repeat CI-completion triggers by @JSONbored in #6710
- fix(api): remove duplicate finding-taxonomy/enrichment-analyzers imports by @JSONbored in #6722
- refactor(settings): drop 11 gate/quality/AI-review config-as-code-only DB columns by @JSONbored in #6711
- fix(miner): flag real LOOPOVER_MINER_* env vars missing from DEPLOYMENT.md (#6601) by @shin-core in #6726
- refactor: consolidate duplicate bounded-concurrency helpers onto mapWithConcurrency (#6602) by @jaytbarimbao-collab in #6727
- fix(review): strip NUL bytes from RAG chunk text before the storage INSERT by @JSONbored in #6728
Full Changelog: orb-v2.1.0-beta.7...orb-v2.1.0-beta.8
loopover-orb orb-v2.1.0-beta.7
LoopOver Orb container image:
docker pull ghcr.io/jsonbored/loopover-selfhost:orb-v2.1.0-beta.7Multi-arch (linux/amd64 + linux/arm64). See https://loopover.ai/docs/maintainer-self-hosting for setup.
Includes the Claude Code / Codex subscription CLIs by default; credentials stay runtime-only.
Sentry release id baked into the image: gittensory-orb@2.1.0-beta.7.
What's Changed
🚀 Features
- docs(ui): federated fleet intelligence operator-consent page by @RealDiligent in #6631
- feat(miner-ui): redesign ledgers route with StateBoundary + skeletons (#6512) by @jaytbarimbao-collab in #6646
- feat(orb): trust-gate inbound federated bundles per the #6477 key-trust design by @luciferlive112116 in #6649
- feat(config): make sweepWatchdog staleness threshold configurable (#6594) by @andriypolanski in #6639
- feat(miner-ui): wire the chat rail to the read-only streaming backend (#6518) by @jaytbarimbao-collab in #6661
🐛 Fixes
- feat(ci): auto-sync the MCP known-latest constant, never a manual bump by @JSONbored in #6638
- fix(config): migrate badgeEnabled/publicQualityMetrics off the DB by @JSONbored in #6647
- test(ui): guard the Cloudflare build's self-heal step against regression by @JSONbored in #6648
- fix(github): reject a malformed three-segment repoFullName in comments.ts by @ultrahighsuper in #6640
- docs(selfhost): document the GPU-reservation force-recreate gotcha for ollama by @JSONbored in #6652
- test(settings): inject Batch C gate/AI-review fields via the manifest (queue core) by @JSONbored in #6653
- test(settings): inject Batch C gate/AI-review fields via the manifest (small files) by @JSONbored in #6656
- fix(auth): send the canonical PRODUCT_USER_AGENT from github-oauth.ts by @galuis116 in #6637
- test(settings): inject Batch C gate/AI-review fields via the manifest (queue rest) by @JSONbored in #6654
- fix(review): trim whitespace on three truthy env flag checks by @RealDiligent in #6641
- refactor(signals): reuse slop.ts's canonical clamp in improvement.ts by @galuis116 in #6643
- fix(engine): harden applyContributorCalibration against NaN inputs by @RealDiligent in #6651
- fix(engine): honor no-issue rationale in predicted preflight by @jsdevninja in #6645
- fix(mcp): honor free-text tests evidence in loopover_check_test_evidence by @ultrahighsuper in #6657
- fix(agent-actions): cancel in-flight CI on a blacklist close too (#6659) by @JSONbored in #6669
- fix(github): resolve GraphQL cache TTL per cache class by @claytonlin1110 in #6655
- fix(engine): exclude inline code spans in predicted-gate extractLinkedIssueNumbers by @ultrahighsuper in #6658
- fix(github): compare the bot login case-insensitively when dismissing its approval by @luciferlive112116 in #6662
- fix(review): align lockfile-tamper finding text with lockfile-entry check by @RealDiligent in #6663
- fix(github): reject per-segment whitespace in splitRepo by @RealDiligent in #6664
- fix(miner): route the governor/prediction/plan local stores through openLocalStoreDb by @lourincedaging0-commits in #6667
- fix(review): guard fix-handoff suggestion blocks against an embedded code fence by @ultrahighsuper in #6668
- fix(engine): align predicted-gate collision risk with live gate by @RealDiligent in #6671
- fix(ci): stop draft PRs from wasting CI/review-pipeline resources (#6670) by @JSONbored in #6679
Full Changelog: orb-v2.1.0-beta.6...orb-v2.1.0-beta.7
loopover-orb orb-v2.1.0-beta.6
LoopOver Orb container image:
docker pull ghcr.io/jsonbored/loopover-selfhost:orb-v2.1.0-beta.6Multi-arch (linux/amd64 + linux/arm64). See https://loopover.ai/docs/maintainer-self-hosting for setup.
Includes the Claude Code / Codex subscription CLIs by default; credentials stay runtime-only.
Sentry release id baked into the image: gittensory-orb@2.1.0-beta.6.
What's Changed
🚀 Features
- feat(review): add an opt-in draft-PR close policy to stop bot-review farming by @JSONbored in #6454
- feat(ui): add CSV export to the operator dashboard by @luciferlive112116 in #6471
- docs(ui): audit ui-kit for existing chat-adjacent UI primitives by @galuis116 in #6474
- feat(orb): export a signed, anonymized federated calibration bundle (opt-in) by @reyanthony062001-ops in #6505
- feat(miner-ui): add a light/dark theme toggle to miner-ui by @jaytbarimbao-collab in #6529
- feat(ui-kit): port state-views.tsx primitives into @loopover/ui-kit by @galuis116 in #6539
- feat(orb): add the opt-in federated collector transport client (push/pull) by @reyanthony062001-ops in #6537
- feat(miner): add config-gated chat action-dispatch scaffolding by @nghetienhiep in #6542
- feat(miner-ui): add the chat rail's message composer by @luciferlive112116 in #6549
- feat(ui): maintainer dashboard panel for per-tool MCP usage counts by @galuis116 in #6548
- feat(review): add AMS live-gate-thresholds read endpoint by @RealDiligent in #6553
- feat(miner-ui): add the persistent collapsible chat rail shell by @ultrahighsuper in #6564
- feat(miner): add read-only chat grounding over the existing miner MCP tools by @davion-knight in #6570
- feat(review): bridge a submitter's AMS track record into ORB reputation, upgrade-only by @davion-knight in #6566
- feat(miner-ui): chat message list, bubble, and typing indicator components by @jaytbarimbao-collab in #6563
- feat(miner): consume ORB live gate thresholds in self-review-context by @RealDiligent in #6565
- feat(engine): add selfLoopAutonomy to AmsPolicySpec by @luciferlive112116 in #6568
- feat(miner-ui): add discover and attempt HTTP action routes by @boskodev790 in #6574
- feat(miner-ui): adopt StateBoundary + skeletons on the Overview route by @dhgoal in #6576
- feat(selfhost): make LOOPOVER_SWEEP_WATCHDOG and LOOPOVER_PR_RECONCILIATION .loopover.yml-controllable by @bohdansolovie in #6575
- feat(miner): consult selfLoopAutonomy in decideNextAction's pass-to-handoff step by @davion-knight in #6581
- feat(miner-ui): useStreamingText hook + StreamingText renderer by @jaytbarimbao-collab in #6583
- feat(miner-ui): register portfolio release/requeue chat actions by @jsdevninja in #6586
- refactor(miner-ui): adopt shared StateBoundary in the portfolio route by @luciferlive112116 in #6588
- feat(review): schedule fleet escalation sweep with Discord notify by @RealDiligent in #6584
- feat(ui): add AMS-vs-human contributor-mix maintainer dashboard panel by @galuis116 in #6590
- feat(miner): register governor pause/resume chat actions (#6521) by @andriypolanski in #6587
- refactor(settings): drop Batch B's 15 config-as-code-only DB columns by @JSONbored in #6622
- feat(miner-ui): redesign run-history route with StateBoundary, skeleton, and pagination by @jaytbarimbao-collab in #6591
🐛 Fixes
- chore(ui): remove dead Breadcrumbs and ScrollFlow components by @luciferlive112116 in #6450
- fix(miner-ui): render oldestQueuedAgeMs in the overview portfolio card (#6185) by @shin-core in #6451
- fix(ui): content-shaped loading skeletons for dead-letter/maintainer/miner panels (#6178) by @nghetienhiep in #6452
- fix(ui): adopt TableScroll + caption + scope=col a11y pattern across 8 tables by @nghetienhiep in #6453
- fix(review): linked-issue claim priority theft, unscoped PR-mention pollution, hard-rule stickiness, and draft-cycling double-count by @JSONbored in #6455
- fix(miner-ui): render the events-by-type breakdown ledgers already fetches by @luciferlive112116 in #6456
- fix(review): thread commitMessages to the live slop gate, wire screenshot-gate advisory mode, and scope rate limits per-repo by @JSONbored in #6457
- fix(review): freshness-gate shadow-override promotion, audit-before-write ordering, and clear_at preservation by @JSONbored in #6458
- fix(review): defang prompt-injection payloads in RAG-retrieved reference context by @JSONbored in #6459
- fix(review): redact cohort/miner-originated/human-originated/raw-trust and bare score in public sanitizers by @JSONbored in #6460
- fix(review): include the PR body in the AI-review cache fingerprint by @JSONbored in #6463
- fix(review): honor selftune opt-out and revoked autonomy in override read-back by @JSONbored in #6464
- fix(review): pin expectedHeadSha on the contributor_cap close action by @JSONbored in #6466
- fix(review): correlate screenshot-table presence-mode evidence to the PR head SHA by @JSONbored in #6467
- fix(settings): give loopover its own autonomy config-as-code by @JSONbored in #6468
- fix(engine): exempt generated/vendored/minified files from the missing-test-evidence signal by @JSONbored in #6469
- fix(engine): stop the collision report using unscoped issue.linkedPrs for risk escalation by @JSONbored in #6470
- fix(review): give score-breakdown.ts its own vocabulary instead of the public sanitizer by @JSONbored in #6473
- fix(ui): forward errorKind so dashboards show connectivity-aware errors by @luciferlive112116 in #6476
- fix(db): renumber colliding migration 0156 to 0157 by @JSONbored in #6484
- fix(ui): render generatedAt on GateOutcomeCard and ActivationPreview by @galuis116 in #6492
- fix(test): stop createTestEnv() default leaking the bundled self-repo manifest by @JSONbored in #6493
- fix(ui): rename remaining user-visible gittensory branding to LoopOver by @JSONbored in #6499
- fix(db): grandfather the 0156 migration-number collision by @JSONbored in #6494
- fix(settings): restore draftPrClosePolicy after it was dropped by the autonomy config-as-code PR by @JSONbored in #6496
- fix(ci): repair two functional breaks left by the gittensory->loopover rename by @JSONbored in #6497
- fix(config): scrub remaining pre-rename gittensory references by @JSONbored in #6532
- refactor(test): move queue-4.test.ts's Batch A fields to manifest injection by @JSONbored in #6528
- docs(config): fix remaining gittensory residue in shipped config examples by @JSONbored in #6502
- fix(ui): wire StateBoundary's errorLabel at the six real dashboard call sites by @galuis116 in #6523
- chore: rename npm package metadata from gittensory to loopover by @JSONbored in #6500
- fix(miner): wire DEPLOYMENT.md audit into real CI execution by @RealDiligent in #6524
- feat(mcp): register plan-DAG tools + local scorer in packages/loopover-mcp by @galuis116 in #6526
- fix(ci): capture review-enrichment node:test coverage for Codecov by @RealDiligent in #6527
- refactor(test): move queue-2.test.ts's Batch A fields to manifest injection by @JSONbored in #6531
- refactor(test): move queue.test.ts/queue-5.test.ts's Batch A fields to manifest injection by @JSONbored in #6533
- refactor(test): move queue-3/queue-lifecycle-guards Batch A fields to manifest injection...
gittensory-orb orb-v2.1.0-beta.5
LoopOver Orb container image:
docker pull ghcr.io/jsonbored/loopover-selfhost:orb-v2.1.0-beta.5Multi-arch (linux/amd64 + linux/arm64). See https://loopover.ai/docs/maintainer-self-hosting for setup.
Includes the Claude Code / Codex subscription CLIs by default; credentials stay runtime-only.
Sentry release id baked into the image: gittensory-orb@2.1.0-beta.5.
What's Changed
🚀 Features
- feat(engine): add a stable, versioned getTrackRecordSummary read API by @lourincedaging0-commits in #6316
- feat(mcp): add a typed PostHog wrapper module for packages/loopover-mcp by @claytonlin1110 in #6368
- feat(mcp): register the maintain REST surface as local stdio tools by @luciferlive112116 in #6382
- docs(ams): port docs/env-reference.md to a generated website docs page (docs.ams-env-reference.tsx) by @oktofeesh1 in #6385
- feat(ui): adopt RefreshMeta on owner, miner, and digest panels by @jsdevninja in #6387
- feat(mcp): register the 8 miner write-tools on the local stdio server by @davion-knight in #6390
- feat(engine): define a shared TrustSignal type for ORB/AMS reputation bridging by @lourincedaging0-commits in #6379
- docs(ams): port docs/discovery-plane-operator-guide.md to a website docs page (docs.ams-discovery-plane.tsx) by @oktofeesh1 in #6391
- docs(ams): port docs/miner-goal-spec.md to a website docs page (docs.ams-goal-spec.tsx) by @oktofeesh1 in #6397
- docs: cover MCP tool-call telemetry in the privacy boundary by @luciferlive112116 in #6422
- docs(ams): port docs/fleet-run-manifest.md to a website docs page (docs.ams-fleet-manifest.tsx) by @oktofeesh1 in #6433
- feat(mcp): validate .loopover.yml offline by extracting buildFocusManifestValidation into @loopover/engine by @davion-knight in #6425
- feat(mcp): record local stdio tool calls at the dispatch chokepoint by @luciferlive112116 in #6432
🐛 Fixes
- fix(mcp): honor --help for analyze-branch and preflight by @bohdansolovie in #6326
- feat(review): downscale desktop Visual-preview thumbnails in self-host mode by @JSONbored in #6347
- docs(selfhost): .env.example documents the current Orb collector/broker defaults by @dhgoal in #6352
- fix(ci): check-orb-release-due picks the true latest orb tag, not a stale beta by @dhgoal in #6353
- fix(mcp): treat a bare
helppositional as --help in parseOptions (#6257) by @nickmopen in #6362 - fix(selfhost): fail open with a metric on a token-cache Redis error by @galuis116 in #6364
- docs(selfhost): describe what the starters actually ship for critical secrets by @luciferlive112116 in #6365
- docs(selfhost): document CONFIG_DIR_EMPTY_ACKNOWLEDGED in .env.example by @galuis116 in #6367
- fix(ui): mount ConfigGeneratorYamlPreview in the config generator panel by @jsdevninja in #6371
- fix(ci): regenerate fumadocs collections unconditionally in validate-code by @JSONbored in #6375
- fix(mcp): drop autonomy levels the server removed in #4620 from the CLI by @luciferlive112116 in #6378
- fix(mcp): print unknown API compatibility in status (#6263) by @thomasalvaedison7777-lgtm in #6363
- fix(mcp): redact a parenthesis/bracket/colon-prefixed local path in redactLocalPath by @joaovictor91123 in #6369
- fix(ci): wait for all 6 test shards before Codecov posts a patch status by @JSONbored in #6386
- feat(review): give LOOPOVER_REVIEW_PLANNER a per-repo config override by @JSONbored in #6321
- feat(selfhost): make LOOPOVER_REVIEW_OPS and LOOPOVER_PUBLIC_STATS .loopover.yml-controllable by @JSONbored in #6372
- feat(loopover)!: full production cutover to loopover.ai, retire gittensory.aethereal.dev routes by @JSONbored in #6380
- docs: update remaining links/prose from gittensory.aethereal.dev to loopover.ai by @JSONbored in #6381
- fix(selfhost): guard pg-adapter's rollback so it can't mask the original batch error by @galuis116 in #6392
- feat(selfhost): make LOOPOVER_REVIEW_DRAFT and LOOPOVER_AUTO_FILE_DRIFT_ISSUES .loopover.yml-controllable by @JSONbored in #6373
- fix(ci): resolve wrangler via require.resolve, never PATH, for cf-typegen by @JSONbored in #6384
- chore(rees): remove dead captureError export in review-enrichment/src/sentry.ts by @galuis116 in #6393
- fix(selfhost): raise ollama's default batch size to match bge-m3's context window by @JSONbored in #6394
- docs(rees): README analyzer table lists all 57 registered analyzers by @dhgoal in #6395
- fix(ci): derive version-copy floor from single source of truth by @nghetienhiep in #6374
- fix(db): order pull-request list queries deterministically by @JSONbored in #6388
- fix(mcp): sanitize every terminal path that prints API-controlled text by @luciferlive112116 in #6396
- test(ci): give check-mcp-package.mjs an injectable, unit-testable seam by @nghetienhiep in #6389
- chore(miner): remove dead config-precedence.js wrapper module (#6159) by @shin-core in #6400
- docs: document OLLAMA_NUM_BATCH in .env.example by @JSONbored in #6423
- fix(api): open the public no-credential routes to any CORS origin by @JSONbored in #6401
- chore(mcp): remove dead referenceScorePreviewCommand export in local-branch.js by @galuis116 in #6402
- chore(ci): add .github/superagent.yml, exempt established repeat contributors by @JSONbored in #6435
- fix(engine): exclude lockfiles and dependency manifests from trivial-churn detection by @JSONbored in #6429
- chore(signals): converge change-guardrail.ts and preflight-limits.ts onto their @loopover/engine shims by @galuis116 in #6403
- fix(extension): handle a rejected sendMessage in loadOpportunityBadge by @dhgoal in #6430
- chore(miner-ui): move 3 test-only fixture factories out of the lib's public API into their test files by @real-venus in #6438
- chore(review): converge 9 hand-duplicated src/review/ files onto their @loopover/engine shims by @galuis116 in #6437
- fix(miner): expire claims orphaned by a dead process at claim time by @luciferlive112116 in #6441
- fix(ci): check-mcp-package imports the shared secret-shape detector by @dhgoal in #6447
- fix(ci): skip the heavy job fan-out for draft pull requests by @JSONbored in #6448
- chore(engine): remove dead isDuplicateClusterWinner (#6172) by @shin-core in #6434
New Contributors
- @thomasalvaedison7777-lgtm made their first contribution in #6363
Full Changelog: orb-v2.1.0-beta.4...orb-v2.1.0-beta.5
gittensory-orb orb-v2.1.0-beta.4
LoopOver Orb container image:
docker pull ghcr.io/jsonbored/loopover-selfhost:orb-v2.1.0-beta.4Multi-arch (linux/amd64 + linux/arm64). See https://loopover.ai/docs/maintainer-self-hosting for setup.
Includes the Claude Code / Codex subscription CLIs by default; credentials stay runtime-only.
Sentry release id baked into the image: gittensory-orb@2.1.0-beta.4.
What's Changed
🚀 Features
- feat(miner): export buildIssueQualityReport for self-review (#6057) by @bohdansolovie in #6142
- feat(mcp): register 4 maintainer/repo-owner intake tools in packages/loopover-mcp by @jaytbarimbao-collab in #6199
- refactor(settings): converge 4 duplicated settings files onto their loopover-engine shims by @nghetienhiep in #6201
- feat(miner-ui): add a pause-reason input to the governor control (#6186) by @nghetienhiep in #6207
- feat(api): expose self-tune override audit and clear routes (#6168) by @nghetienhiep in #6215
- feat(api): wire internal decision/calibration routes, drop duplicate handleParity by @nghetienhiep in #6216
- feat(miner): wire the leakage-safe replay harness into the calibration flow (#3011) by @nghetienhiep in #6219
- feat(mcp): add loopover_get_pr_reviewability tool on both MCP servers by @lourincedaging0-commits in #6222
- feat(docs): migrate loopover-ui docs pages to fumadocs-mdx content pipeline by @oktofeesh1 in #6271
- docs(mcp): clarify ambiguous loopover-mcp stdio tool descriptions for LLM selection by @nghetienhiep in #6270
- feat(review): expose a repo's effective self-tuned gate thresholds via a read-only endpoint by @lourincedaging0-commits in #6307
- feat(mcp): compute loopover_lint_pr_text in-process from the shared engine by @nghetienhiep in #6308
- docs(ams): port DEPLOYMENT.md to a website docs page (docs.ams-deployment.tsx) by @oktofeesh1 in #6312
- docs(ams): port docs/operations-runbook.md to a website docs page (docs.ams-operations-runbook.tsx) by @oktofeesh1 in #6318
- feat(mcp): add
tools search <query>for fuzzy tool discovery by @nghetienhiep in #6317 - feat(mcp): compute loopover_check_slop_risk in-process from the shared engine by @nghetienhiep in #6329
- docs(ams): port docs/observability.md to a website docs page (docs.ams-observability.tsx) by @oktofeesh1 in #6331
- feat(registry): add subnet-funded pool association to the repo model (#6320) by @nghetienhiep in #6333
- feat(mcp): categorize and group loopover-mcp tools output (#6301) by @nghetienhiep in #6336
- docs(ams): port docs/unattended-scheduling.md to a website docs page (docs.ams-unattended-scheduling.tsx) by @oktofeesh1 in #6338
- feat(miner): add tenant-scoping columns to all four local ledger schemas by @JSONbored in #6340
- feat(review): add a visible caption under each Visual/Scroll preview thumbnail by @JSONbored in #6341
- feat(mcp): add telemetry enable/disable CLI command with persisted opt-in by @nghetienhiep in #6348
- docs(ams): port docs/sizing.md to a website docs page (docs.ams-sizing.tsx) by @oktofeesh1 in #6351
- feat(mcp): add a typed posthog telemetry wrapper for the remote server by @nghetienhiep in #6355
- feat(mcp): instrument the remote tool-dispatch chokepoint with PostHog events by @claytonlin1110 in #6358
- docs(ams): port docs/config-precedence.md to a website docs page (docs.ams-config-precedence.tsx) by @oktofeesh1 in #6360
🐛 Fixes
- feat(grafana): add additive maintainer review event panels by @james3773 in #6138
- fix(settings): parse PROTECTED_AUTOCLOSE_AUTHORS_EXTRA via the shared login-list parser (#audit-3.13) by @real-venus in #6214
- fix(queue): honor autoCloseExemptLogins in the repeated-draft-cycling review-evasion guard by @real-venus in #6217
- fix(engine): detect activity changes once the progress tail is full by @luciferlive112116 in #6218
- chore(signals): remove dead deriveContributionLanes superseded by onboarding-pack's contribution-lane model by @real-venus in #6220
- chore(miner): remove dead parseJsonFlag from portfolio-queue-cli by @dhgoal in #6198
- docs(miner): fix stale header comment in submission-freshness-check by @dhgoal in #6200
- fix(github): only swallow 404 in removePullRequestLabel (#6192) by @bohdansolovie in #6211
- chore(review): remove dead isIgnoredReviewAuthor wrapper (zero callers, thinly wraps decideReviewEligibility) by @real-venus in #6223
- fix(miner): expose the freeform idea feasibility gate via a CLI command by @nghetienhiep in #6224
- fix(engine): normalize classifyPortfolioConvergence's numeric inputs by @luciferlive112116 in #6225
- docs(review): stop claiming the self-improve D1 tables don't exist by @luciferlive112116 in #6232
- fix(settings): accept [bot]-suffixed logins in contributorBlacklist by @jaytbarimbao-collab in #6233
- docs(miner-ui): README no longer claims the data views are unshipped by @dhgoal in #6242
- fix(miner): exit 2, not 1, on a secret-mount failure by @dhgoal in #6248
- fix(miner): wrap pr-disposition-poller GitHub calls in fetchWithRetry (#4829) by @jaytbarimbao-collab in #6265
- fix(engine): converge gate-verdict + finding-severity calibration onto reviewer-consensus's zero-weight + malformed-repo handling by @real-venus in #6251
- chore(miner): remove 3 dead pre-unification governor gates superseded by the chokepoint ladder by @real-venus in #6278
- test(github): verify installation-token isolation under multi-tenant concurrency by @JSONbored in #6277
- test(queue): verify concurrent cross-tenant execution isolation by @JSONbored in #6299
- fix(ui): generate fumadocs-mdx collections/* via postinstall by @oktofeesh1 in #6310
- fix(security): redact Linear and session GitHub ciphertext in D1 export by @RealDiligent in #6309
- fix(mcp): complete tab-completion for
cache listby @luciferlive112116 in #6298 - fix(github): retry label and assignee writes on stale installation tokens by @bohdansolovie in #6306
- docs(selfhost): document Sentry once, matching the code's own default by @luciferlive112116 in #6315
- docs(db): guardrail listInstallations/listRepositories against tenant-facing misuse by @JSONbored in #6328
- fix(review): exclude bare .ts app-source files from isVisualPath by @JSONbored in #6330
- feat(selfhost): give sweep-watchdog and PR-reconciliation a per-repo opt-out by @JSONbored in #6319
- fix(ci): derive production-smoke MCP versions from package.json by @RealDiligent in #6334
- fix(review): make the visual-preview poll budget durable per head SHA by @JSONbored in #6335
- fix(selfhost): fail fast when a configured _FILE secret is unreadable by @RealDiligent in #6337
- refactor(mcp): consolidate local-path redaction into one shared module by @nghetienhiep in #6339
- fix(mcp): align env token precedence with the documented order by @nghetienhiep in #6342
- fix(selfhost): log blob-store path-traversal gets distinctly from misses by @RealDiligent in #6343
- fix(ci): exit non-zero when lockfile workspace sync misses by @RealDiligent in #6344
- fix(ci): share MCP tarball allowlist including shipped lib files by @RealDiligent in #6346
- fix(rees): reconstruct trailing-newline patches instead of failing closed (#6254) by @nickmopen in #6354
- fix(rees): use the shared diff-file-header predicate in api-break/caller-impact (#6255) by @nickm...