Immutable
release. Only release title and notes can be modified.
LoopOver Orb container image:
docker pull ghcr.io/jsonbored/loopover-selfhost:orb-v2.0.0Multi-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.0.0.
What's Changed
🚀 Features
- feat(observability): add an AMS cross-link panel to the resource hub by @jaytbarimbao-collab in #5640
- docs(miner): publish a measured CPU/RAM/disk sizing table for laptop vs fleet mode by @galuis116 in #5645
- feat(miner): add a Grafana dashboard for coding-agent-driver usage, cost, and attempt outcomes by @JSONbored in #5646
- feat(miner-hands): resolve the own-rejection-history trigger of
rejectionSignaledby @jeffrey701 in #5657 - feat(miner): extract and persist real coding-agent token usage by @JSONbored in #5658
- feat(miner): track real per-issue attempt-history on the portfolio queue by @JSONbored in #5661
- refactor(engine): rename worktree-allocator to worktree-plan to end the miner filename collision by @jaytbarimbao-collab in #5674
- feat(miner): read loop-cli convergence history from the persisted portfolio queue by @lourincedaging0-commits in #5679
- feat(services): wire computeFindingAcceptance into the operator dashboard by @JSONbored in #5684
- feat(miner): wire AMS's dead orb-export.js telemetry stub to a real central ingest endpoint by @JSONbored in #5697
- feat(ui): make maintainer data tables responsive and keyboard-accessible (#794) by @shinkaito-ai in #5665
- feat(miner): wire real reputationHistory into the Governor's self-reputation throttle by @lourincedaging0-commits in #5685
- refactor(engine): extract the deny-hook pure logic into gittensory-engine by @jeffrey701 in #5701
- feat(miner-hands): wire real self-plagiarism data into the Governor chokepoint by @jeffrey701 in #5706
- feat(ui): add browser Sentry with private source maps by @JSONbored in #5709
- feat(miner): wire stack detection into the attempt prompt by @carlh7777 in #5722
- docs: audit AMS global-singleton state for tenant-leak risk by @davion-knight in #5758
- feat(selfhost): add a read-only pre-deploy diff-summary script by @JSONbored in #5747
- docs(miner): AMS storage-abstraction research — datastore backend comparison by @lourincedaging0-commits in #5760
- refactor(engine): extract the pull-request-target-key parser into loopover-engine by @reyanthony062001-ops in #5762
- docs(miner): AMS auth/identity research — hosted login-layer options by @lourincedaging0-commits in #5764
- feat(api): add post-merge incident reporting for already-merged PRs by @nghetienhiep in #5766
- fix(review): trim the Improvement signal row to a concise value rating by @nickmopen in #5767
- feat(review): add a shared beta-collapsible convention for the PR comment by @nickmopen in #5769
- docs(engine): verify git mv rename recognition in coverage/diff tooling by @lourincedaging0-commits in #5770
- fix(review): never render a ❌ for a non-Gittensor contributor (#5100) by @nickmopen in #5774
- feat(engine): extract content-lane's pure leaf modules to loopover-engine by @real-venus in #5775
- fix(api): audit registered-vs-installed dashboard/digest copy by @galuis116 in #5776
- feat(engine): extract settings leaf modules to loopover-engine by @real-venus in #5779
- refactor(engine): move the unlinked-issue candidate pre-filter into the shared engine by @luciferlive112116 in #5778
- feat(engine): add a load-testing harness for iterate-loop under concurrent load by @nghetienhiep in #5781
- docs(spec): idea-intake bridge schema by @lourincedaging0-commits in #5783
- docs(engine): document the deliberate gate-advisory twin divergence by @real-venus in #5784
- feat(selfhost): optional Infisical secrets management for self-host deploys by @claytonlin1110 in #5785
- refactor(queue): extract the public-comment merge-facts derivation from maybePublishPrPublicSurface by @glorydavid03023 in #5787
- feat(review): add aggregate fix-handoff block renderer by @nghetienhiep in #5788
- feat(miner): pre-execution feasibility check for freeform ideas by @lourincedaging0-commits in #5789
- feat(review): synthesize the 'Contributor next steps' collapsible into a prioritized step by @real-venus in #5791
- feat(mcp): add the idea-intake bridge and loopover_intake_idea tool by @luciferlive112116 in #5792
- feat(miner): add cross-repo evaluation harness (#4788) by @andriypolanski in #5790
- docs(selfhost): design doc for the scheduled docs-drift audit sweep by @galuis116 in #5794
- feat(mcp): route ideas through intake into a loop claim plan by @luciferlive112116 in #5795
- feat(mcp): deliver a completed loop iteration as a customer results payload by @luciferlive112116 in #5797
- feat(mcp): stream loop progress to the customer via a progress snapshot by @luciferlive112116 in #5798
- refactor(engine): extract signals engine with re-export shim (#4884) by @andriypolanski in #5800
- feat(engine): per-tenant resource quota evaluation by @lourincedaging0-commits in #5801
- feat(mcp): evaluate when a rented loop should escalate to a human by @luciferlive112116 in #5806
- docs(engine): document the nine governor primitives in the package README by @real-venus in #5851
- docs: privacy audit of AMS telemetry/export surfaces for cross-tenant leakage by @davion-knight in #5759
- feat(selfhost): add n8n workflows and MinIO object storage compose profiles (#1219) by @andriypolanski in #5777
- feat(miner): honor kill-switch mid-attempt during iterate-loop by @jony376 in #5799
- feat(engine): per-tenant configuration layer by @lourincedaging0-commits in #5804
- docs(engine): add a Tenant quota README section by @davion-knight in #5860
- docs(engine): document the Rent-a-Loop pipeline modules by @davion-knight in #5868
🐛 Fixes
- feat(miner): persist coding-agent provider + real cost on the attempt log by @JSONbored in #5637
- refactor(mcp): retire the loopover_/gittensory_ legacy tool-name aliases by @JSONbored in #5648
- ci(selfhost): stop publishing the legacy gittensory-selfhost image tag by @JSONbored in #5650
- chore(config): retire the .gittensory.yml config-filename dual-read shim by @JSONbored in #5651
- refactor(env): retire GITTENSORY_/LOOPOVER_ dual-read across the worker by @JSONbored in #5652
- fix(miner): wire recordOwnSubmission's write side into the real attempt pipeline by @JSONbored in #5678
- fix(openapi): declare in:path parameters for every {templated} path segment by @JSONbored in #5664
- docs(miner): distinguish hosted vs stdio find_opportunities tool names by @JSONbored in #5666
- refactor(engine): extract shared telemetry-anonymization primitive by @JSONbored in #5683
- fix(queue): widen rag-index fan-out to match the regate-sweep candidate set by @JSONbored in #5686
- fix(queue): migrate burden-forecast fan-out from isRegistered to isInstalled by @JSONbored in #5687
- fix(github): retarget the backfill-registered-repos job family from isRegistered to isInstalled by @JSONbored in #5688
- fix(signals): scope contributor-open-pr-monitor to isInstalled, not isRegistered by @JSONbored in #5691
- fix(queue): migrate signal-snapshot generation from isRegistered to isInstalled by @JSONbored in #5692
- fix(queue): complete #5021's cron-path fix -- the fan-out dispatcher itself was still isRegistered-gated by @JSONbored in #5694
- fix(queue): migrate data-fidelity repair from isRegistered to isInstalled by @JSONbored in #5696
- fix(signals): scope cross-repo PR pressure by isInstalled, not isRegistered by @JSONbored in #5698
- fix(services): gate onboarding-pack preview by isInstalled, not isRegistered by @JSONbored in #5699
- feat(miner): device-flow OAuth onboarding for the loopover-ams GitHub App by @JSONbored in #5703
- fix(review): scope ops-scan, self-tune, and maintainer-recap by isInstalled by @JSONbored in #5702
- feat(observability): shared severity-threshold resolver for Sentry + PagerDuty by @JSONbored in #5704
- feat(review): let repos opt out of the built-in hard-guardrail floor by @JSONbored in #5708
- feat(miner)!: rename GITTENSORY_MINER_/GITTENSORY_ env vars to LOOPOVER_MINER_/LOOPOVER_ by @JSONbored in #5707
- fix(observability): fix Grafana dashboards showing no data after deploy by @JSONbored in #5714
- fix(observability): stop using Grafana's $__ macro prefix as the SQL "All" sentinel by @JSONbored in #5716
- feat(github)!: rename the @gittensory bot mention command to @Loopover by @JSONbored in #5715
- fix(github): finish @gittensory -> @Loopover cutover in gittensory-engine + regen openapi.json by @JSONbored in #5718
- fix(observability): update stale $__all sentinel assertions in maintainer-reviews dashboard test by @JSONbored in #5719
- test(observability): guard against today's two Grafana bug classes by @JSONbored in #5720
- fix(miner)!: full-cutover rename gittensory-miner config dir + Prometheus metric names by @JSONbored in #5721
- fix(review): retry a context-length-overflowed RAG chunk truncated instead of dropping it by @JSONbored in #5724
- fix(test): stop the local gate from failing on main by @JSONbored in #5725
- feat(cli)!: Phase 3 - full-cutover rename CLI binaries to loopover-* by @JSONbored in #5728
- fix(miner): tighten the @loopover/engine dependency to ^2.0.0 by @JSONbored in #5729
- fix(review): run AI review for every PR author by default, not just confirmed contributors by @JSONbored in #5732
- fix(review): treat an unstable GitHub mergeable_state as a held verdict in the PR panel by @JSONbored in #5734
- feat(docker)!: Phase 7 - full-cutover rename Docker/k8s/systemd manifests to loopover-* by @JSONbored in #5733
- chore(claude): add contributor-pipeline-gardening skill by @JSONbored in #5738
- fix(release): stop node-workspace from clobbering manual dependency ranges by @JSONbored in #5740
- feat(mcp)!: Phase 4 - full-cutover rename MCP server class + 96 tool names to loopover_* by @JSONbored in #5739
- feat(build)!: Phase 5 - full-cutover rename all gittensory-* directories to loopover-* by @JSONbored in #5743
- fix(observability): add missing refId to Grafana SQL-datasource template variable queries by @JSONbored in #5745
- feat(config)!: Phase 6 - full-cutover rename internal GITTENSORY_* constants to LOOPOVER_* by @JSONbored in #5750
- docs: repo-agnostic capability audit for the review/signals/rules stack by @davion-knight in #5754
- feat(selfhost): add a post-deploy auto-pause regression gate by @JSONbored in #5755
- fix(rebrand): rename double-underscore global identifiers missed by Phase 6 by @JSONbored in #5756
- fix(selfhost): reconcile a stale AMS reporting export's schema on preserve-last-good by @JSONbored in #5757
- fix(rebrand): full-cutover rename remaining internal gittensory runtime identifiers by @JSONbored in #5761
- fix(rebrand): full-cutover rename miner/AMS per-repo and operator config filenames by @JSONbored in #5765
- fix(rebrand): full-cutover rename Prometheus/Alertmanager/Grafana observability identifiers by @JSONbored in #5768
- docs(gardening): correct contributor-available target to per-repo, not combined by @JSONbored in #5808
- fix(signals): require a code file before manifest_missing_tests fires by @JSONbored in #5852
- fix(miner): list queue dashboard in cli.js help text by @nghetienhiep in #5853
- feat(selfhost): bridge fleet-mode miner state to the ams-observability exporter by @real-venus in #5844
- fix(engine): clamp rate-limit retryAfterMs to at most one window on a backward clock by @real-venus in #5855
- fix(review): recognize export const enum and abstract class in impact-symbols by @lourincedaging0-commits in #5858
- test(review): cover review-diff.ts non-positive-budget guard and header count defaults by @jaytbarimbao-collab in #5857
- fix(ci): sync miner engine-version pin on the engine release branch by @JSONbored in #5856
- test(selfhost): cover jobCoalesceKey missing-field fallbacks for 6 job types by @jaytbarimbao-collab in #5862
- fix(queue): cap backlog-convergence re-review attempts per head SHA by @JSONbored in #5859
- fix(review): exclude maintainer PRs from the slop-discrimination alert by @JSONbored in #5863
- fix(review): restore engine-parity after gittensory rename drift by @JSONbored in #5892
- docs(review): rename gittensory prose to loopover in src/review (batch B) by @JSONbored in #5886
- fix(test): stop hardcoding the current miner version as a golden value by @JSONbored in #5891
- docs: rename gittensory prose to loopover in README and config example by @JSONbored in #5901
- test(miner): rename gittensory-miner/ams prose to loopover-miner/ams (batch 3) by @JSONbored in #5888
- docs(db): rename gittensory prose to loopover in migration headers by @JSONbored in #5900
- fix(ui): widen the ui-kit consumer range past its 1.0.0 pre-release cap by @JSONbored in #5904
- fix(config): resync .loopover.yml.example with loopover.full.yml by @JSONbored in #5908
- docs(engine): rename gittensory prose to loopover in packages/loopover-engine (batch B) by @JSONbored in #5898
- docs(miner): rename gittensory prose to loopover in miner/mcp packages by @JSONbored in #5899
- fix(agent): make the fleet-wide DB freeze absolute, drop the per-repo bypass by @JSONbored in #5912
- test(miner): fix stale gittensory identifiers in cross-repo-evaluation test by @JSONbored in #5913
- fix(github): migrate repo identity on a GitHub repository rename webhook by @JSONbored in #5918
- fix(ci): authenticate release-please with a PAT instead of GITHUB_TOKEN by @JSONbored in #5932
- fix(test): match miner-cross-repo-evaluation.test.ts to the renamed loopover API by @JSONbored in #5948
- chore(release): cut miner v3.0.0 by @JSONbored in #5949
- docs(core): rename gittensory prose to loopover in signals/selfhost/services by @JSONbored in #5896
- fix(github): extend repo-rename identity migration to review/audit tables by @JSONbored in #5950
- docs(core): rename gittensory prose to loopover in remaining src subdirs by @JSONbored in #5895
- docs(engine): rename gittensory prose to loopover in packages/loopover-engine (batch A) by @JSONbored in #5897
- docs: fix post-rebrand dead gittensory-* references in contributor docs by @lourincedaging0-commits in #5884
- docs(skill): document the extension lint/typecheck checks omitted from reference.md's CI table and test:ci by @lourincedaging0-commits in #5894
- fix(github): extend repo-rename identity migration to analytics tables by @JSONbored in #5953
- fix(docs): rename stale gittensory reference in miner MCP client-config doc by @JSONbored in #5957
- fix(rebrand): rename gittensory-cli- tmpdir prefix across mcp-cli test family by @JSONbored in #5958
- fix(rebrand): rename gittensory-app.env default output path by @JSONbored in #5959
- fix(github): extend repo-rename identity migration to REES/parity tables by @JSONbored in #5954
- fix(rebrand): rename x-gittensory-request-id header to x-loopover-request-id by @JSONbored in #5960
🧹 Other Changes
- test(miner): rename gittensory-miner/ams prose to loopover-miner/ams by @JSONbored in #5874
- test(miner): rename gittensory-miner/ams prose to loopover-miner/ams (batch 2) by @JSONbored in #5878
- docs(ui): rename gittensory prose to loopover across docs routes by @JSONbored in #5881
- docs(review): rename gittensory prose to loopover in src/review (batch A) by @JSONbored in #5883
New Contributors
- @lourincedaging0-commits made their first contribution in #5679
- @shinkaito-ai made their first contribution in #5665
- @nghetienhiep made their first contribution in #5766
Full Changelog: orb-v1.0.0...orb-v2.0.0