Skip to content

refactor(settings): drop 11 gate/quality/AI-review config-as-code-only DB columns - #6711

Merged
JSONbored merged 1 commit into
mainfrom
refactor/batch-c-phase2-drop-db-columns
Jul 17, 2026
Merged

refactor(settings): drop 11 gate/quality/AI-review config-as-code-only DB columns#6711
JSONbored merged 1 commit into
mainfrom
refactor/batch-c-phase2-drop-db-columns

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

Summary

  • Batch C of the config-as-code migration (epic epic: eliminate DB-as-settings-base dual-source ambiguity, make .loopover.yml authoritative #6440): reviewCheckMode, linkedIssueGateMode, duplicatePrGateMode, qualityGateMode, qualityGateMinScore, selfAuthoredLinkedIssueGateMode, aiReviewMode, aiReviewByok, aiReviewProvider, aiReviewModel, and aiReviewAllAuthors already resolved correctly from .loopover.yml's settings:/gate: blocks — the repository_settings DB columns were a redundant second source of truth resolveEffectiveSettings's manifest overlay already fully shadowed. Drops the 11 columns (migration 0161) and makes the DB layer treat them as fixed built-in defaults.
  • Fixes two DB-bypass bugs the migration would otherwise have made permanent: GET /activation-preview read the raw DB row instead of the manifest-aware resolver, and PUT /ai-review wrote+echoed the now-defunct mode/byok/provider/model/allAuthors fields. PUT /ai-review is redesigned to a .strict() schema accepting only closeOwnerAuthors/lowConfidenceDisposition, sourcing every other field from the manifest resolver instead.
  • Removes POST /activation (the one-click "enable advisory mode" button) and the GateRampControl advisory→blocking ramp panel entirely: both existed solely to write these now-config-as-code-only fields, so neither had anything left to meaningfully do — a dead action that appears functional but does nothing is worse than no action.

Scope

Validation

  • git diff --check
  • npm run typecheck / npm run ui:typecheck
  • npm run test:coverage (full unsharded suite, 17920+ passing; 2 pre-existing flaky git-fixture tests unrelated to this change, confirmed passing in isolation)
  • npm run test:workers
  • npm run ui:openapi:check / npm run ui:openapi:settings-parity
  • npm run ui:lint / npm run ui:test / npm run ui:build
  • npm run db:migrations:check / npm run db:schema-drift:check
  • npm run engine-parity:drift-check / npm run manifest:drift-check / npm run docs:drift-check
  • npm run test:engine-parity / npm run test:live-gate-parity / npm run test:driver-parity
  • npm audit --audit-level=moderate
  • New/changed behavior has tests: the PUT /ai-review redesign, the GET /activation-preview fix, the removed POST /activation route, and every DB-write no-op path across ~10 updated test files.

npm run build:mcp / npm run test:mcp-pack not run — this PR touches no MCP surface.

Safety

  • No secrets/wallets/hotkeys/trust scores/reward values exposed.
  • Public GitHub text stays sanitized.
  • API/OpenAPI behavior updated and tested (ui:openapi:settings-parity confirms RepositorySettingsSchema still matches the RepositorySettings type after the 11-field removal).
  • UI changes (activation-preview, ai-review-settings, maintainer-settings) use live API data, no mock/demo fallbacks.
  • UI Evidence — not attached: this PR only removes dead interactive elements (a button that would silently no-op, and an entire panel with the same problem) and converts two settings panels to read-only displays of manifest-resolved values; there is no new visible surface to screenshot, and capturing before/after for a removed feature isn't meaningful evidence.
  • No changelog edit.

Notes

  • Batch D (loopover#6445) landed concurrently on main while this branch was in flight (migration 0160); this PR's migration was renumbered to 0161 and rebased cleanly — the two batches touch disjoint field sets.

@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 16, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
loopover-ui 2c73856 Commit Preview URL

Branch Preview URL
Jul 17 2026, 04:50 AM

@codecov

codecov Bot commented Jul 16, 2026

Copy link
Copy Markdown

Bundle Report

Changes will decrease total bundle size by 10.99kB (-0.15%) ⬇️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
loopover-ui 7.53MB -10.99kB (-0.15%) ⬇️

Affected Assets, Files, and Routes:

view changes for bundle: loopover-ui

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/add-scalar-classes-CzXGFFGz.js (New) 2.17MB 2.17MB 100.0% 🚀
assets/tanstack-vendor-vD4voZBy.js (New) 704.04kB 704.04kB 100.0% 🚀
assets/docs.fumadocs-spike-api-reference-C1LyWFKM.js (New) 442.94kB 442.94kB 100.0% 🚀
assets/AgentScalarChatInterface.vue-C8J3Syhu.js (New) 201.71kB 201.71kB 100.0% 🚀
assets/modal-Cu4yb4RF.js (New) 184.28kB 184.28kB 100.0% 🚀
assets/client-CD0LFzUY.js (New) 146.06kB 146.06kB 100.0% 🚀
assets/maintainer-panel-KPXQ1omz.js (New) 70.49kB 70.49kB 100.0% 🚀
assets/ui-vendor-BQ4ofgQm.js (New) 65.93kB 65.93kB 100.0% 🚀
assets/app.analytics-DpbrnPrI.js (New) 34.92kB 34.92kB 100.0% 🚀
assets/routes-BiFkFE2u.js (New) 34.04kB 34.04kB 100.0% 🚀
assets/app.operator-BJFhAUrr.js (New) 27.69kB 27.69kB 100.0% 🚀
assets/app.runs-C-dUzDud.js (New) 27.14kB 27.14kB 100.0% 🚀
assets/owner-panel-DfzFRCzt.js (New) 27.02kB 27.02kB 100.0% 🚀
assets/app-CRzb7M8n.js (New) 25.84kB 25.84kB 100.0% 🚀
assets/miner-panel-D3g4e3ut.js (New) 20.49kB 20.49kB 100.0% 🚀
assets/docs-source-DQwslsTg.js (New) 19.3kB 19.3kB 100.0% 🚀
assets/api._op-CjAte3Qm.js (New) 17.89kB 17.89kB 100.0% 🚀
assets/self-hosting-docs-audit-BM4cgSmX.js (New) 16.73kB 16.73kB 100.0% 🚀
assets/app.index-4MR7bNjj.js (New) 16.19kB 16.19kB 100.0% 🚀
assets/playground-panel-C5JG0TNu.js (New) 14.43kB 14.43kB 100.0% 🚀
assets/app.config-generator-BX663bBQ.js (New) 9.87kB 9.87kB 100.0% 🚀
assets/app.audit-CRm1OGdj.js (New) 9.62kB 9.62kB 100.0% 🚀
assets/extension--hVqSqtb.js (New) 9.21kB 9.21kB 100.0% 🚀
assets/maintainers-DYEJoMRs.js (New) 8.06kB 8.06kB 100.0% 🚀
assets/miners-DXXP6xk-.js (New) 7.89kB 7.89kB 100.0% 🚀
assets/agents-BNYdSV-7.js (New) 7.76kB 7.76kB 100.0% 🚀
assets/commands-panel-Cc9UshTS.js (New) 6.72kB 6.72kB 100.0% 🚀
assets/digest-panel-Dpd_j_Gi.js (New) 6.34kB 6.34kB 100.0% 🚀
assets/roadmap-DGBMPyfV.js (New) 6.33kB 6.33kB 100.0% 🚀
assets/docs.index-spZ4mZph.js (New) 5.42kB 5.42kB 100.0% 🚀
assets/repos._owner._repo.quality-C1WOgVPk.js (New) 5.09kB 5.09kB 100.0% 🚀
assets/api.index-BYNy-FfB.js (New) 4.78kB 4.78kB 100.0% 🚀
assets/changelog-CLxBVb9w.js (New) 4.67kB 4.67kB 100.0% 🚀
assets/control-primitives-c87XktST.js (New) 3.75kB 3.75kB 100.0% 🚀
assets/api-Cxred5zx.js (New) 2.73kB 2.73kB 100.0% 🚀
assets/docs-DlWGPhZs.js (New) 2.67kB 2.67kB 100.0% 🚀
assets/button-CzL7STjM.js (New) 1.74kB 1.74kB 100.0% 🚀
assets/app.workbench-DvpL-KKB.js (New) 1.63kB 1.63kB 100.0% 🚀
assets/tooltip-DG7eavmL.js (New) 1.45kB 1.45kB 100.0% 🚀
assets/session-Cb-BGYwD.js (New) 1.44kB 1.44kB 100.0% 🚀
assets/tabs-Bn6VkdP6.js (New) 1.39kB 1.39kB 100.0% 🚀
assets/trend-chart-BL_iEgAO.js (New) 1.22kB 1.22kB 100.0% 🚀
assets/app.repos-Dzj7kM1C.js (New) 1.07kB 1.07kB 100.0% 🚀
assets/analytics-card-shell-d66crQwL.js (New) 987 bytes 987 bytes 100.0% 🚀
assets/use-api-resource-puJ9680Y.js (New) 934 bytes 934 bytes 100.0% 🚀
assets/refresh-meta-BXG9lHPd.js (New) 797 bytes 797 bytes 100.0% 🚀
assets/input-CEL1epBO.js (New) 796 bytes 796 bytes 100.0% 🚀
assets/file-cog-BaRUtIFI.js (New) 758 bytes 758 bytes 100.0% 🚀
assets/docs.ai-summaries-CQ7Snsmz.js (New) 568 bytes 568 bytes 100.0% 🚀
assets/docs.scoreability-CNJjiokz.js (New) 562 bytes 562 bytes 100.0% 🚀
assets/docs.upstream-drift-BYio8Spw.js (New) 562 bytes 562 bytes 100.0% 🚀
assets/docs.branch-analysis-1WpkS-D1.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-ai-providers-vOra4GFc.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-backup-scaling-C4EFtB9R.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-configuration-0F0wAvK5.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-docs-audit-DLLf8R79.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-github-app-DB9Igzyl.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-quickstart-Blx410sA.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-rag-sGXZL94g.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-rees-CfhQZsaZ.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-rees-analyzers-Bu-vVc3p.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-release-checklist-DVaQ_gGR.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-releases-Drfc1g1G.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-security-BrrpUfSX.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-troubleshooting-nzFlTw6C.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-unified-ams-orb-D46I1_km.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.federated-fleet-intelligence-DwFE5EMZ.js (New) 560 bytes 560 bytes 100.0% 🚀
assets/docs.maintainer-install-trust-B3d-C_G5.js (New) 560 bytes 560 bytes 100.0% 🚀
assets/docs.mcp-clients-chcMsVdM.js (New) 560 bytes 560 bytes 100.0% 🚀
assets/docs.owner-checklist-BzrsJzAe.js (New) 560 bytes 560 bytes 100.0% 🚀
assets/docs.quickstart-DFSn4-IV.js (New) 560 bytes 560 bytes 100.0% 🚀
assets/docs.ams-config-precedence-CVCEbaN2.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-deployment-J97GyEGK.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-discovery-plane-DqRnACuo.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-env-reference-D1n4nkUA.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-fleet-manifest-BPGQXA89.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-goal-spec-CCNoio3f.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-observability-Dc9VrszU.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-operations-runbook-Bj84T4Kk.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-sizing-6ja5G0qJ.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-unattended-scheduling-BliUzWeo.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.beta-onboarding-Bltm735Y.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.maintainer-self-hosting-CavYLbPf.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.maintainer-workflow-B_CF6z-T.js (New) 558 bytes 558 bytes 100.0% 🚀
assets/docs.privacy-security-BUqYF2Qx.js (New) 558 bytes 558 bytes 100.0% 🚀
assets/docs.troubleshooting-BO8TK9KO.js (New) 558 bytes 558 bytes 100.0% 🚀
assets/docs.tuning-C49PFFXw.js (New) 558 bytes 558 bytes 100.0% 🚀
assets/docs.github-app-BvrjJZGt.js (New) 557 bytes 557 bytes 100.0% 🚀
assets/docs.loopover-commands-Be2--IUH.js (New) 556 bytes 556 bytes 100.0% 🚀
assets/docs.how-reviews-work-DhZKJTg5.js (New) 555 bytes 555 bytes 100.0% 🚀
assets/app.maintainer-BrJ1k55o.js (New) 502 bytes 502 bytes 100.0% 🚀
assets/sparkles-CJEUkxwV.js (New) 494 bytes 494 bytes 100.0% 🚀
assets/app.owner-DN5kxqer.js (New) 474 bytes 474 bytes 100.0% 🚀
assets/app.commands-Dc-VZXqo.js (New) 455 bytes 455 bytes 100.0% 🚀
assets/app.playground-C4hDxMh8.js (New) 442 bytes 442 bytes 100.0% 🚀
assets/reveal-C2sfm9G9.js (New) 442 bytes 442 bytes 100.0% 🚀
assets/index-BaegXH21.js (New) 438 bytes 438 bytes 100.0% 🚀
assets/app.digest-D3QGrdu6.js (New) 430 bytes 430 bytes 100.0% 🚀
assets/eye-off-DE2N4O9C.js (New) 430 bytes 430 bytes 100.0% 🚀
assets/app.miner-WH_QLWqD.js (New) 422 bytes 422 bytes 100.0% 🚀
assets/key-round-D8_lpq7V.js (New) 355 bytes 355 bytes 100.0% 🚀
assets/bot-CB_7I4ro.js (New) 328 bytes 328 bytes 100.0% 🚀
assets/trash-2-yxUi1HaC.js (New) 328 bytes 328 bytes 100.0% 🚀
assets/save-BDWL3aGF.js (New) 327 bytes 327 bytes 100.0% 🚀
assets/git-pull-request-arrow-D9CFZADt.js (New) 321 bytes 321 bytes 100.0% 🚀
assets/shield-check-C-KvKpc8.js (New) 320 bytes 320 bytes 100.0% 🚀
assets/wrench-DwWMPWox.js (New) 303 bytes 303 bytes 100.0% 🚀
assets/bell-CsdiUXYh.js (New) 290 bytes 290 bytes 100.0% 🚀
assets/data-table-CXiFRFEc.js (New) 289 bytes 289 bytes 100.0% 🚀
assets/list-checks-NZMa-csL.js (New) 279 bytes 279 bytes 100.0% 🚀
assets/shield-CAbiyu-P.js (New) 272 bytes 272 bytes 100.0% 🚀
assets/workflow-D9sOknAa.js (New) 265 bytes 265 bytes 100.0% 🚀
assets/chart-column-2JC1LFAz.js (New) 251 bytes 251 bytes 100.0% 🚀
assets/compass-DFFLpiIb.js (New) 251 bytes 251 bytes 100.0% 🚀
assets/skeleton-CAEwA_A2.js (New) 241 bytes 241 bytes 100.0% 🚀
assets/history-rAW04bvv.js (New) 237 bytes 237 bytes 100.0% 🚀
assets/activity-tr55oh0q.js (New) 234 bytes 234 bytes 100.0% 🚀
assets/message-square-gi4FhDeX.js (New) 233 bytes 233 bytes 100.0% 🚀
assets/download-BWc_AAvH.js (New) 232 bytes 232 bytes 100.0% 🚀
assets/chevron-right-BU_pyuQT.js (New) 207 bytes 207 bytes 100.0% 🚀
assets/lock-Cv6tzmEp.js (New) 206 bytes 206 bytes 100.0% 🚀
assets/rotate-cw-DOf9hlrl.js (New) 201 bytes 201 bytes 100.0% 🚀
assets/play-B2SjVIFQ.js (New) 190 bytes 190 bytes 100.0% 🚀
assets/circle-check-DTybwE9u.js (New) 178 bytes 178 bytes 100.0% 🚀
assets/search-nhnOlO_a.js (New) 174 bytes 174 bytes 100.0% 🚀
assets/self-hosting-docs-audit-DeCmF04C.js (New) 141 bytes 141 bytes 100.0% 🚀
assets/circle-Dl9MWGye.js (New) 130 bytes 130 bytes 100.0% 🚀
assets/modal-D50rVTFk.js (New) 115 bytes 115 bytes 100.0% 🚀
assets/add-scalar-classes-Bp3st6fb.js (Deleted) -2.17MB 0 bytes -100.0% 🗑️
assets/tanstack-vendor-qHE4i25Y.js (Deleted) -704.14kB 0 bytes -100.0% 🗑️
assets/docs.fumadocs-spike-api-reference-jNCf6uZw.js (Deleted) -442.94kB 0 bytes -100.0% 🗑️
assets/AgentScalarChatInterface.vue-7e2yoDL6.js (Deleted) -201.71kB 0 bytes -100.0% 🗑️
assets/modal-DbT9fevs.js (Deleted) -184.28kB 0 bytes -100.0% 🗑️
assets/client-CGmSMSup.js (Deleted) -146.06kB 0 bytes -100.0% 🗑️
assets/maintainer-panel-JOVa5Zue.js (Deleted) -80.66kB 0 bytes -100.0% 🗑️
assets/ui-vendor-CqATRhQy.js (Deleted) -65.93kB 0 bytes -100.0% 🗑️
assets/app.analytics-B8fv63D_.js (Deleted) -34.92kB 0 bytes -100.0% 🗑️
assets/routes-BbD1KNJg.js (Deleted) -34.04kB 0 bytes -100.0% 🗑️
assets/app.runs-_l5DKRX4.js (Deleted) -27.14kB 0 bytes -100.0% 🗑️
assets/owner-panel-V4FZG5O2.js (Deleted) -27.02kB 0 bytes -100.0% 🗑️
assets/app.operator-DEa9TiKH.js (Deleted) -26.03kB 0 bytes -100.0% 🗑️
assets/app-TssHBpsP.js (Deleted) -25.84kB 0 bytes -100.0% 🗑️
assets/miner-panel-Dz1EEejr.js (Deleted) -20.49kB 0 bytes -100.0% 🗑️
assets/docs-source-5utsKSR-.js (Deleted) -19.3kB 0 bytes -100.0% 🗑️
assets/api._op-IHBKY4xM.js (Deleted) -17.89kB 0 bytes -100.0% 🗑️
assets/self-hosting-docs-audit-DMntKkHM.js (Deleted) -16.73kB 0 bytes -100.0% 🗑️
assets/app.index-B8pCwP68.js (Deleted) -16.19kB 0 bytes -100.0% 🗑️
assets/playground-panel-BaQ5xSj3.js (Deleted) -14.43kB 0 bytes -100.0% 🗑️
assets/app.audit-CYb5xevd.js (Deleted) -9.62kB 0 bytes -100.0% 🗑️
assets/extension-bHWsFZ2O.js (Deleted) -9.21kB 0 bytes -100.0% 🗑️
assets/app.config-generator-C1sukHyA.js (Deleted) -9.19kB 0 bytes -100.0% 🗑️
assets/maintainers-C-njr7fh.js (Deleted) -8.06kB 0 bytes -100.0% 🗑️
assets/miners-BDwzY1tc.js (Deleted) -7.89kB 0 bytes -100.0% 🗑️
assets/agents-DEepH7or.js (Deleted) -7.76kB 0 bytes -100.0% 🗑️
assets/commands-panel-D7WPtHF8.js (Deleted) -6.72kB 0 bytes -100.0% 🗑️
assets/digest-panel-eezmXbjH.js (Deleted) -6.34kB 0 bytes -100.0% 🗑️
assets/roadmap-Cwo_OEqx.js (Deleted) -6.33kB 0 bytes -100.0% 🗑️
assets/docs.index-CLRgYypR.js (Deleted) -5.42kB 0 bytes -100.0% 🗑️
assets/repos._owner._repo.quality-plW_A3sP.js (Deleted) -5.09kB 0 bytes -100.0% 🗑️
assets/api.index-Ch68awsf.js (Deleted) -4.78kB 0 bytes -100.0% 🗑️
assets/changelog-CTjk2M-1.js (Deleted) -4.67kB 0 bytes -100.0% 🗑️
assets/control-primitives-Zq5c-h7B.js (Deleted) -3.75kB 0 bytes -100.0% 🗑️
assets/api-BWz8ISi0.js (Deleted) -2.73kB 0 bytes -100.0% 🗑️
assets/docs-BZje-yBs.js (Deleted) -2.67kB 0 bytes -100.0% 🗑️
assets/alert-dialog-R_3fa1zN.js (Deleted) -2.07kB 0 bytes -100.0% 🗑️
assets/button-BEztSZCo.js (Deleted) -1.74kB 0 bytes -100.0% 🗑️
assets/app.workbench-DVKOnRf9.js (Deleted) -1.63kB 0 bytes -100.0% 🗑️
assets/tooltip-BI1SdlZq.js (Deleted) -1.45kB 0 bytes -100.0% 🗑️
assets/session-Dk7nST_5.js (Deleted) -1.44kB 0 bytes -100.0% 🗑️
assets/tabs-Vlz06WAc.js (Deleted) -1.39kB 0 bytes -100.0% 🗑️
assets/trend-chart-HM5Uc7TT.js (Deleted) -1.22kB 0 bytes -100.0% 🗑️
assets/app.repos-dnbABWNm.js (Deleted) -1.07kB 0 bytes -100.0% 🗑️
assets/analytics-card-shell-15QRDcdJ.js (Deleted) -987 bytes 0 bytes -100.0% 🗑️
assets/switch-DCgsWLCi.js (Deleted) -982 bytes 0 bytes -100.0% 🗑️
assets/use-api-resource-yV5pifNV.js (Deleted) -934 bytes 0 bytes -100.0% 🗑️
assets/refresh-meta-CC4ygcYX.js (Deleted) -797 bytes 0 bytes -100.0% 🗑️
assets/input-DUEXm1Kl.js (Deleted) -796 bytes 0 bytes -100.0% 🗑️
assets/file-cog-iXy_o9DA.js (Deleted) -758 bytes 0 bytes -100.0% 🗑️
assets/docs.ai-summaries-DZNKzca1.js (Deleted) -568 bytes 0 bytes -100.0% 🗑️
assets/docs.scoreability-jasCqS5_.js (Deleted) -562 bytes 0 bytes -100.0% 🗑️
assets/docs.upstream-drift-BB2AdTFY.js (Deleted) -562 bytes 0 bytes -100.0% 🗑️
assets/docs.branch-analysis-ZSFCC_b5.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-ai-providers-BpjVv8Bp.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-backup-scaling-HjMP8WdU.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-configuration-vwTkwdoj.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-docs-audit-DH8e_ych.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-github-app-125YIhao.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-quickstart-B8wv2dnI.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rag-BbYSRy0q.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rees-analyzers-DP1Ykgqu.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rees-sMaMBQ0z.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-release-checklist-qr-uYmWp.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-releases-Brypkt3Z.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-security-0qT8ANFq.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-troubleshooting-hHreQhXz.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-unified-ams-orb-GUV9GWAR.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.federated-fleet-intelligence-C2IdjRRU.js (Deleted) -560 bytes 0 bytes -100.0% 🗑️
assets/docs.maintainer-install-trust-7zZ9tU03.js (Deleted) -560 bytes 0 bytes -100.0% 🗑️
assets/docs.mcp-clients-ClJ764kO.js (Deleted) -560 bytes 0 bytes -100.0% 🗑️
assets/docs.owner-checklist-D45TqXfp.js (Deleted) -560 bytes 0 bytes -100.0% 🗑️
assets/docs.quickstart-BPT3WYJd.js (Deleted) -560 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-config-precedence-DP-PjzSe.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-deployment-CYHu0gu_.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-discovery-plane-BSduJ9Gq.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-env-reference-NpvqsLd_.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-fleet-manifest-CxFzC8I-.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-goal-spec-BpLWQfQN.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-observability-K0so6XBS.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-operations-runbook-D6bKJQZo.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-sizing-BU6Wf7ZP.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-unattended-scheduling-CxePWA1W.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.beta-onboarding-Dqgc0mz2.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.maintainer-self-hosting-DYkVXxl5.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.maintainer-workflow-D6wt0JgY.js (Deleted) -558 bytes 0 bytes -100.0% 🗑️
assets/docs.privacy-security-D5IkMIZU.js (Deleted) -558 bytes 0 bytes -100.0% 🗑️
assets/docs.troubleshooting-B0q14b_K.js (Deleted) -558 bytes 0 bytes -100.0% 🗑️
assets/docs.tuning-C-UEoMzM.js (Deleted) -558 bytes 0 bytes -100.0% 🗑️
assets/docs.github-app-rZwEvf2E.js (Deleted) -557 bytes 0 bytes -100.0% 🗑️
assets/docs.loopover-commands-DRJ4iOU5.js (Deleted) -556 bytes 0 bytes -100.0% 🗑️
assets/docs.how-reviews-work-CKx2fIAe.js (Deleted) -555 bytes 0 bytes -100.0% 🗑️
assets/app.maintainer-BWbSgv5f.js (Deleted) -502 bytes 0 bytes -100.0% 🗑️
assets/sparkles-C4EuH3Lf.js (Deleted) -494 bytes 0 bytes -100.0% 🗑️
assets/app.owner-CZehgHMb.js (Deleted) -474 bytes 0 bytes -100.0% 🗑️
assets/app.commands-Cq6aqica.js (Deleted) -455 bytes 0 bytes -100.0% 🗑️
assets/app.playground-DPWcJyot.js (Deleted) -442 bytes 0 bytes -100.0% 🗑️
assets/reveal-BVVt5EA2.js (Deleted) -442 bytes 0 bytes -100.0% 🗑️
assets/index-CV4QUeP2.js (Deleted) -438 bytes 0 bytes -100.0% 🗑️
assets/app.digest-DakG18hi.js (Deleted) -430 bytes 0 bytes -100.0% 🗑️
assets/eye-off-BUeQ4fHy.js (Deleted) -430 bytes 0 bytes -100.0% 🗑️
assets/app.miner-D0JxP1KT.js (Deleted) -422 bytes 0 bytes -100.0% 🗑️
assets/key-round-C6GxzIOb.js (Deleted) -355 bytes 0 bytes -100.0% 🗑️
assets/bot-URzGNCr4.js (Deleted) -328 bytes 0 bytes -100.0% 🗑️
assets/trash-2-CRW3RMrM.js (Deleted) -328 bytes 0 bytes -100.0% 🗑️
assets/save-cCih2q__.js (Deleted) -327 bytes 0 bytes -100.0% 🗑️
assets/git-pull-request-arrow-DFcxP3DN.js (Deleted) -321 bytes 0 bytes -100.0% 🗑️
assets/shield-check-CMH-Bs8G.js (Deleted) -320 bytes 0 bytes -100.0% 🗑️
assets/wrench-tNMI0tGu.js (Deleted) -303 bytes 0 bytes -100.0% 🗑️
assets/bell-DlklwCOl.js (Deleted) -290 bytes 0 bytes -100.0% 🗑️
assets/data-table-BunayX-5.js (Deleted) -289 bytes 0 bytes -100.0% 🗑️
assets/list-checks-B8UHykXY.js (Deleted) -279 bytes 0 bytes -100.0% 🗑️
assets/shield-BTr6CF-M.js (Deleted) -272 bytes 0 bytes -100.0% 🗑️
assets/workflow-1ls9U9fF.js (Deleted) -265 bytes 0 bytes -100.0% 🗑️
assets/chart-column-Vy5Eclco.js (Deleted) -251 bytes 0 bytes -100.0% 🗑️
assets/compass-b6bZo3og.js (Deleted) -251 bytes 0 bytes -100.0% 🗑️
assets/skeleton-DCFBp53J.js (Deleted) -241 bytes 0 bytes -100.0% 🗑️
assets/history-iel4L2xM.js (Deleted) -237 bytes 0 bytes -100.0% 🗑️
assets/activity-seuUiqg9.js (Deleted) -234 bytes 0 bytes -100.0% 🗑️
assets/message-square-CkI0dRiT.js (Deleted) -233 bytes 0 bytes -100.0% 🗑️
assets/download-CrcEfvU8.js (Deleted) -232 bytes 0 bytes -100.0% 🗑️
assets/chevron-right-geBTahzP.js (Deleted) -207 bytes 0 bytes -100.0% 🗑️
assets/lock-Dlzdkdt9.js (Deleted) -206 bytes 0 bytes -100.0% 🗑️
assets/rotate-cw-BB8btmEp.js (Deleted) -201 bytes 0 bytes -100.0% 🗑️
assets/play-Cm1T5DHQ.js (Deleted) -190 bytes 0 bytes -100.0% 🗑️
assets/circle-check-KFfDClg2.js (Deleted) -178 bytes 0 bytes -100.0% 🗑️
assets/search-K-hU3txv.js (Deleted) -174 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-docs-audit-BzqG9k3G.js (Deleted) -141 bytes 0 bytes -100.0% 🗑️
assets/circle-BMay5xKf.js (Deleted) -130 bytes 0 bytes -100.0% 🗑️
assets/modal-CVWmnSJ8.js (Deleted) -115 bytes 0 bytes -100.0% 🗑️

@codecov

codecov Bot commented Jul 16, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.65%. Comparing base (3de7c25) to head (2c73856).
⚠️ Report is 8 commits behind head on main.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #6711      +/-   ##
==========================================
- Coverage   93.65%   93.65%   -0.01%     
==========================================
  Files         682      682              
  Lines       68133    68114      -19     
  Branches    18701    18687      -14     
==========================================
- Hits        63808    63789      -19     
  Misses       3347     3347              
  Partials      978      978              
Flag Coverage Δ
shard-1 43.97% <20.00%> (+0.01%) ⬆️
shard-2 36.79% <20.00%> (-0.06%) ⬇️
shard-3 32.30% <20.00%> (-0.01%) ⬇️
shard-4 34.82% <100.00%> (-0.02%) ⬇️
shard-5 31.01% <20.00%> (-0.02%) ⬇️
shard-6 45.71% <20.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/api/routes.ts 94.60% <100.00%> (-0.02%) ⬇️
src/db/repositories.ts 96.70% <ø> (-0.03%) ⬇️
src/db/schema.ts 72.97% <ø> (ø)
src/services/maintainer-activation.ts 100.00% <ø> (ø)

@loopover-orb loopover-orb Bot added the gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier. label Jul 16, 2026
@loopover-orb

loopover-orb Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Warning

⏸️ LoopOver review result - manual review recommended

Review updated: 2026-07-17 04:37:19 UTC

28 files · 1 AI reviewer · 1 blocker · CI green · dirty

⏸️ Suggested Action - Manual Review

Review summary
This is a clean, well-scoped Batch C config-as-code migration matching the linked issue #6444: it drops 11 now-redundant DB columns for gate/quality/AI-review modes, converts the DB layer to fixed built-in defaults, and correctly fixes two real DB-bypass bugs (activation-preview now uses resolveRepositorySettings/resolveEffectiveSettings instead of the raw row, and PUT /ai-review is redesigned to a .strict() schema that rejects the now-defunct fields instead of silently no-oping them). The removal of POST /activation and GateRampControl is justified since both existed solely to write fields that are now permanent no-op writes. Migration 0161 correctly uses D1-safe `ALTER TABLE ... DROP COLUMN` statements, consistent with prior precedent (0122/0146/0150/0157/0158/0159), and the schema.ts columns are removed in parity.

Nits — 6 non-blocking
  • The external brief flags migrations/0161 as dropping columns that in-flight old-code deployments could still read; this is inherent to any DROP COLUMN during a rolling deploy and matches the repo's established precedent (0122/0146/0150/0157/0158/0159) rather than being a new pattern introduced here, so it's a nit rather than a blocker.
  • src/api/routes.ts's activation-preview comment cites 'refactor(settings): drop Batch A's 9 config-as-code-only DB columns #6557-class bug' — worth double-checking that issue number is accurate since it's easy to typo a cross-reference.
  • apps/loopover-ui/src/lib/gate-ramp.ts and gate-ramp-confirm-dialog.tsx are fully deleted with no remaining references visible in the diff — confirm no other component still imports from '@​/lib/gate-ramp'.
  • Consider a brief CHANGELOG or migration-guide note for self-hosters about .loopover.yml gate.* fields replacing the dashboard toggles, since the UI copy already signals this but external doc surfaces may not.
  • The MODE_COPY/GATE_MODE_OPTIONS-style read-only rendering pattern in ai-review-settings.tsx is a reasonable precedent to reuse for any future Batch D config-as-code UI conversions.
  • PR author also opened the linked issue — Link an issue that was opened by a different contributor, or provide a rationale for why this self-authored issue represents genuine discovery work.

Concerns raised — review before merging

  • No linked issue detected — If this PR is intended to solve an issue, link it explicitly in the PR body.
📋 Copy for AI agents — paste into your coding agent
Fix the following blocker(s) from this PR review:

1. No linked issue detected — If this PR is intended to solve an issue, link it explicitly in the PR body.

Decision drivers

  • ❌ Code review — 1 blocker (1 reviewer)
  • ❌ Gate result — Blocking (Repo-configured hard blocker found.)
Context & advisory signals — never blocks the verdict
Signal Result Evidence
Linked issue ✅ Linked #6444
Related work ✅ No active overlap found No same-issue or scoped active PR overlap found.
Change scope ✅ 20/20 Low review scope from cached public metadata (1 linked issue).
Validation posture ✅ 25/25 PR body includes validation/test evidence.
Contributor workload ✅ 10/10 Author activity: 33 registered-repo PR(s), 26 merged, 261 issue(s).
Contributor context ✅ Confirmed Gittensor contributor JSONbored; Gittensor profile; 33 PR(s), 261 issue(s).
Improvement ✅ Minor risk: clean · value: minor
Review context
  • Author: JSONbored
  • Role context: owner (maintainer lane)
  • Public audience mode: oss maintainer
  • Lane context: Repository is configured for direct PR review.
  • Public profile languages: Python, TypeScript, Ruby, Go, JavaScript, MDX, Shell, Solidity
  • Official Gittensor activity: 33 PR(s), 261 issue(s).
  • PR-specific overlap: none found.
Contributor next steps
  • Start here: Treat this as maintainer-lane context rather than normal contributor-lane activity.
Signal definitions
  • Related work = same linked issue, overlapping active PRs, or title/path similarity.
  • Change scope = cached public metadata such as size labels, draft state, and review-burden hints.
  • Validation posture = whether the PR provides enough public validation/test evidence for maintainer review.
  • Contributor workload = public contributor activity and cleanup pressure, not a repo-wide quality failure.
  • Contributor context = public GitHub/Gittensor identity context; non-Gittensor status is not a blocker.
🧪 Chat with LoopOver

Ask LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.

  • @loopover ask &lt;question&gt; answers contribution-quality Q&A with source citations and freshness.
  • @loopover chat &lt;question&gt; answers in natural prose from cached decision-pack facts via local inference (maintainer/collaborator; read-only).
  • A plain-language @loopover mention with a real question is routed to the closest matching read-only command automatically — no exact syntax required.

Full command reference: https://loopover.ai/docs/loopover-commands

🧪 Experimental — new and may change.

Visual preview
Route Viewport Before (production) After (this PR's preview) Diff
/ desktop before /
before /
after /
after /
/ mobile before / (mobile)
before / (mobile)
after / (mobile)
after / (mobile)

Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy.

🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed


💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →.

Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.

  • Re-run LoopOver review

@loopover-orb loopover-orb Bot added the manual-review Gittensor contributor context label Jul 16, 2026
…y DB columns

reviewCheckMode, linkedIssueGateMode, duplicatePrGateMode, qualityGateMode,
qualityGateMinScore, selfAuthoredLinkedIssueGateMode, aiReviewMode, aiReviewByok,
aiReviewProvider, aiReviewModel, and aiReviewAllAuthors already resolved correctly
from .loopover.yml's settings./gate.* blocks; the repository_settings DB columns
were a redundant second source of truth resolveEffectiveSettings's manifest overlay
already fully shadowed. Drops the columns (migration 0161), makes
getRepositorySettings/upsertRepositorySettings treat them as fixed built-in
defaults, and removes them from repositorySettingsSchema/maintainerSettingsSchema.

Also fixes two DB-bypass bugs the migration would otherwise have made permanent:
GET /activation-preview read raw getRepositorySettings instead of the
manifest-aware resolver, and PUT /ai-review wrote+echoed the now-defunct
mode/byok/provider/model/allAuthors fields. PUT /ai-review is redesigned to a
.strict() schema accepting only closeOwnerAuthors/lowConfidenceDisposition,
sourcing every other field from the manifest resolver.

POST /activation (the one-click "enable advisory mode" button) and the
GateRampControl advisory-to-blocking ramp panel are removed entirely: both
existed solely to write these now-config-as-code-only fields, so neither had
anything left to meaningfully do.

Closes #6444, part of epic #6440.
@JSONbored
JSONbored force-pushed the refactor/batch-c-phase2-drop-db-columns branch from ec77407 to 2c73856 Compare July 17, 2026 04:48
@JSONbored
JSONbored merged commit 3588574 into main Jul 17, 2026
15 of 16 checks passed
@JSONbored
JSONbored deleted the refactor/batch-c-phase2-drop-db-columns branch July 17, 2026 04:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier. manual-review Gittensor contributor context

Projects

None yet

Development

Successfully merging this pull request may close these issues.

config-as-code: migrate gate/quality/AI-review mode settings off the DB (settings: + gate: dedup)

1 participant