Skip to content

feat(review): add an opt-in draft-PR close policy to stop bot-review farming - #6454

Merged
JSONbored merged 1 commit into
mainfrom
feat/draft-pr-bot-suppression
Jul 16, 2026
Merged

feat(review): add an opt-in draft-PR close policy to stop bot-review farming#6454
JSONbored merged 1 commit into
mainfrom
feat/draft-pr-bot-suppression

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

Summary

  • Contributors were opening PRs directly as draft (or converting to draft immediately after opening) to get labels, AI review, and slop-gate feedback from the bot without ever being subject to a real one-shot disposition.
  • This is distinct from the existing reviewEvasionProtection family (draft-dodge / self-close / draft-conversion / repeated-cycling), which only enforces after a review has already run against the PR's current head, or on the 2nd+ ready↔draft conversion.
  • Adds draftPrClosePolicy ("off" | "close", off by default — opt-in, unlike reviewEvasionProtection's default-close) as a new RepositorySettings field: migration + schema + resolver + openapi, mirroring reviewEvasionProtection's exact wiring.
  • New maybeCloseDraftPr guard in src/queue/review-evasion.ts, closely modeled on the existing draft-conversion review-evasion guard, but firing on any draft (opened directly as one, or converted to one) rather than requiring a prior review pass. Only fires when the PR's own author took the draft action — a maintainer converting someone else's PR is unaffected.
  • Deliberately does not record a moderation strike — this is a blanket repo policy against ordinary GitHub draft usage, not a detected abuse pattern.
  • Enabled for this repo's own dogfood config (.loopover.yml + the bundled fallback manifest), since this is the repo experiencing the abuse.
  • Companion to the CI-side fix (fix(ci): skip the heavy job fan-out for draft pull requests #6448, already merged) that stops the heavy 11-job fan-out from running on draft PRs in the first place.

Test plan

  • 7 new regression tests in test/unit/queue-lifecycle-guards.test.ts covering: off-by-default, closes on direct-open-as-draft, closes on conversion, no moderation strike, autoCloseExemptLogins honored, write-collaborator exemption, third-party-converter exemption
  • All manifest/docs/migration drift checks pass (.loopover.yml ↔ bundled fallback, RepositorySettings ↔ openapi schema, migration numbering)
  • Full local gate (npm run test:ci) green

…farming

Contributors were opening PRs directly as draft (or converting to draft
immediately after opening) to get labels, AI review, and slop-gate feedback
from the bot without ever being subject to a real one-shot disposition --
distinct from the existing reviewEvasionProtection family, which only
enforces after a review has already run against the PR's current head, or
on the 2nd+ ready<->draft conversion.

Adds draftPrClosePolicy ("off" | "close", off by default) as a new
RepositorySettings field (migration + schema + resolver + openapi, mirroring
reviewEvasionProtection's exact wiring) and a new maybeCloseDraftPr guard in
src/queue/review-evasion.ts, closely modeled on the existing draft-conversion
review-evasion guard but firing on ANY draft (opened directly as one, or
converted to one) rather than requiring a prior review pass. Deliberately
does not record a moderation strike -- this is a blanket repo policy against
ordinary GitHub draft usage, not a detected abuse pattern. Enabled for this
repo's own dogfood config (.loopover.yml + the bundled fallback manifest).

Companion to the CI-side fix (#6448, merged) that stops the heavy job
fan-out from running on draft PRs in the first place.
@superagent-security

Copy link
Copy Markdown
Contributor

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

@JSONbored JSONbored self-assigned this Jul 16, 2026
@JSONbored
JSONbored merged commit 4d6d016 into main Jul 16, 2026
15 checks passed
@JSONbored
JSONbored deleted the feat/draft-pr-bot-suppression branch July 16, 2026 09:08
@loopover-orb loopover-orb Bot added the gittensor:feature Gittensor-scored feature linked to a feature issue — scores a 0.25x multiplier. label Jul 16, 2026
@codecov

codecov Bot commented Jul 16, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 62.50000% with 12 lines in your changes missing coverage. Please review.
✅ Project coverage is 95.56%. Comparing base (b09f262) to head (cbb93f3).
⚠️ Report is 2 commits behind head on main.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
src/queue/review-evasion.ts 58.62% 3 Missing and 9 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #6454      +/-   ##
==========================================
- Coverage   95.59%   95.56%   -0.03%     
==========================================
  Files         589      589              
  Lines       47025    47057      +32     
  Branches    14951    14967      +16     
==========================================
+ Hits        44952    44972      +20     
- Misses       1291     1294       +3     
- Partials      782      791       +9     
Flag Coverage Δ
shard-1 44.22% <3.12%> (-0.03%) ⬇️
shard-2 36.61% <3.12%> (-0.03%) ⬇️
shard-3 32.35% <3.12%> (-0.02%) ⬇️
shard-4 35.32% <62.50%> (+0.01%) ⬆️
shard-5 31.00% <3.12%> (-0.02%) ⬇️
shard-6 45.40% <9.37%> (-0.03%) ⬇️

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

Files with missing lines Coverage Δ
src/config/loopover-repo-focus-manifest.ts 100.00% <ø> (ø)
src/db/repositories.ts 96.80% <100.00%> (+<0.01%) ⬆️
src/db/schema.ts 72.97% <ø> (ø)
src/openapi/schemas.ts 100.00% <ø> (ø)
src/queue/processors.ts 95.70% <100.00%> (+<0.01%) ⬆️
src/types.ts 100.00% <ø> (ø)
src/queue/review-evasion.ts 94.80% <58.62%> (-5.20%) ⬇️

@codecov

codecov Bot commented Jul 16, 2026

Copy link
Copy Markdown

Bundle Report

Changes will increase total bundle size by 898 bytes (0.01%) ⬆️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
loopover-ui 7.5MB 898 bytes (0.01%) ⬆️

Affected Assets, Files, and Routes:

view changes for bundle: loopover-ui

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/add-scalar-classes-DChi2xpN.js (New) 2.17MB 2.17MB 100.0% 🚀
assets/tanstack-vendor-6tfTupCR.js (New) 697.55kB 697.55kB 100.0% 🚀
openapi.json 501 bytes 496.31kB 0.1%
assets/docs.fumadocs-spike-api-reference-CvYgJCkh.js (New) 442.94kB 442.94kB 100.0% 🚀
assets/AgentScalarChatInterface.vue-BcDoEyxF.js (New) 201.71kB 201.71kB 100.0% 🚀
assets/modal-DFQFoWKk.js (New) 184.28kB 184.28kB 100.0% 🚀
assets/client-BAXxmWSB.js (New) 146.06kB 146.06kB 100.0% 🚀
assets/maintainer-panel-BtFdHEUn.js (New) 76.25kB 76.25kB 100.0% 🚀
assets/ui-vendor-Bo__ulxW.js (New) 65.93kB 65.93kB 100.0% 🚀
assets/app.analytics-DiMYAZKB.js (New) 36.27kB 36.27kB 100.0% 🚀
assets/routes-BtNjiBE7.js (New) 34.04kB 34.04kB 100.0% 🚀
assets/app.runs-Bcj-HI5T.js (New) 27.11kB 27.11kB 100.0% 🚀
assets/owner-panel-E_kOVAuh.js (New) 26.76kB 26.76kB 100.0% 🚀
assets/app-DdTbxcWW.js (New) 25.84kB 25.84kB 100.0% 🚀
assets/app.operator-B15uUH2d.js (New) 25.35kB 25.35kB 100.0% 🚀
assets/miner-panel-DLnu9gII.js (New) 20.23kB 20.23kB 100.0% 🚀
assets/docs-source-CdFazzuf.js (New) 19.2kB 19.2kB 100.0% 🚀
assets/api._op-DT_pSSaQ.js (New) 17.89kB 17.89kB 100.0% 🚀
assets/self-hosting-docs-audit-CwQ-zrMu.js (New) 16.73kB 16.73kB 100.0% 🚀
assets/app.index-Bxe-S15_.js (New) 16.19kB 16.19kB 100.0% 🚀
assets/playground-panel-CDS_ecyk.js (New) 14.43kB 14.43kB 100.0% 🚀
assets/app.audit-DWtqVTE3.js (New) 9.36kB 9.36kB 100.0% 🚀
assets/extension-CHqVYAcx.js (New) 9.22kB 9.22kB 100.0% 🚀
assets/app.config-generator-DFseuxb0.js (New) 9.19kB 9.19kB 100.0% 🚀
assets/maintainers-GEiFSGD7.js (New) 8.06kB 8.06kB 100.0% 🚀
assets/miners-fUADBTaT.js (New) 7.89kB 7.89kB 100.0% 🚀
assets/agents-B_KDjG-Z.js (New) 7.76kB 7.76kB 100.0% 🚀
assets/commands-panel-DkqllHPM.js (New) 6.65kB 6.65kB 100.0% 🚀
assets/roadmap-ZMn9hYKf.js (New) 6.33kB 6.33kB 100.0% 🚀
assets/digest-panel-CVuDdOjO.js (New) 6.26kB 6.26kB 100.0% 🚀
assets/docs.index-CDNBw37Q.js (New) 5.34kB 5.34kB 100.0% 🚀
assets/repos._owner._repo.quality-Ck-m0TwV.js (New) 4.88kB 4.88kB 100.0% 🚀
assets/api.index-Dh52nnoW.js (New) 4.78kB 4.78kB 100.0% 🚀
assets/changelog-CohGzmyO.js (New) 4.67kB 4.67kB 100.0% 🚀
assets/control-primitives-D_tSREjC.js (New) 3.75kB 3.75kB 100.0% 🚀
assets/api-D3yQIDg5.js (New) 2.73kB 2.73kB 100.0% 🚀
assets/docs-TQqNy8Ku.js (New) 2.67kB 2.67kB 100.0% 🚀
assets/alert-dialog-ByKYAlKP.js (New) 2.07kB 2.07kB 100.0% 🚀
assets/button-CjhWViow.js (New) 1.74kB 1.74kB 100.0% 🚀
assets/app.workbench-QZI17uxw.js (New) 1.63kB 1.63kB 100.0% 🚀
assets/tooltip-td7pfmGI.js (New) 1.45kB 1.45kB 100.0% 🚀
assets/session-CnT5E6_9.js (New) 1.44kB 1.44kB 100.0% 🚀
assets/tabs-DYqD2WO1.js (New) 1.39kB 1.39kB 100.0% 🚀
assets/trend-chart-DpnIwMLF.js (New) 1.22kB 1.22kB 100.0% 🚀
assets/app.repos-B6BIpEtC.js (New) 1.07kB 1.07kB 100.0% 🚀
assets/switch-C3P3xRpE.js (New) 982 bytes 982 bytes 100.0% 🚀
assets/analytics-card-shell-Dpbr7ROE.js (New) 973 bytes 973 bytes 100.0% 🚀
assets/use-api-resource-k8I-wX0t.js (New) 934 bytes 934 bytes 100.0% 🚀
assets/refresh-meta-D9yb2R-Q.js (New) 797 bytes 797 bytes 100.0% 🚀
assets/input-CLpKfxRx.js (New) 796 bytes 796 bytes 100.0% 🚀
assets/file-cog-CNZwrUVW.js (New) 758 bytes 758 bytes 100.0% 🚀
assets/docs.ai-summaries-B0asqIEz.js (New) 568 bytes 568 bytes 100.0% 🚀
assets/docs.scoreability-C75eV__q.js (New) 562 bytes 562 bytes 100.0% 🚀
assets/docs.upstream-drift-D0GWtz9x.js (New) 562 bytes 562 bytes 100.0% 🚀
assets/docs.branch-analysis-fdY1vsLc.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-ai-providers-TnhUyAy8.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-backup-scaling-BHcYiIJ_.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-configuration-D5S4PuEX.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-docs-audit-DLlf2uGV.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-github-app-DuIbZgIi.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-quickstart-eTjRzvFL.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-rag-DfOJHLPW.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-rees-C7iORWU8.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-rees-analyzers-D-B7sJdi.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-release-checklist-ChJY6_Lo.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-releases-CqFcGN9a.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-security-BInrr0qn.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-troubleshooting-CZaRez-1.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.self-hosting-unified-ams-orb-CVYj0edu.js (New) 561 bytes 561 bytes 100.0% 🚀
assets/docs.maintainer-install-trust-Cm8_xOTi.js (New) 560 bytes 560 bytes 100.0% 🚀
assets/docs.mcp-clients-CcwFNLCJ.js (New) 560 bytes 560 bytes 100.0% 🚀
assets/docs.owner-checklist-B3g7BisX.js (New) 560 bytes 560 bytes 100.0% 🚀
assets/docs.quickstart-BpTPcsMQ.js (New) 560 bytes 560 bytes 100.0% 🚀
assets/docs.ams-config-precedence-TMNhrro_.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-deployment-cBxzTX8P.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-discovery-plane-BOj_UzpO.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-env-reference-DW1NSQsv.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-fleet-manifest-BZ6F3oSO.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-goal-spec-D9ehnoJn.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-observability-lGmLDzsZ.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-operations-runbook-D_-JfbFo.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-sizing-4KTTmXL4.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.ams-unattended-scheduling-DPhZ2902.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.beta-onboarding-CJ9pnByH.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.maintainer-self-hosting-C7SW_9sp.js (New) 559 bytes 559 bytes 100.0% 🚀
assets/docs.privacy-security-Cl0VdNx5.js (New) 558 bytes 558 bytes 100.0% 🚀
assets/docs.troubleshooting-BC5IgzgT.js (New) 558 bytes 558 bytes 100.0% 🚀
assets/docs.tuning-DcSQjZXX.js (New) 558 bytes 558 bytes 100.0% 🚀
assets/docs.github-app-BiS1jkvz.js (New) 557 bytes 557 bytes 100.0% 🚀
assets/docs.maintainer-workflow-CTSs8Fj5.js (New) 557 bytes 557 bytes 100.0% 🚀
assets/docs.loopover-commands-BeChasrn.js (New) 556 bytes 556 bytes 100.0% 🚀
assets/docs.how-reviews-work-Cv_jMVRL.js (New) 555 bytes 555 bytes 100.0% 🚀
assets/app.maintainer-B5iCBcUR.js (New) 502 bytes 502 bytes 100.0% 🚀
assets/sparkles-TH9fvkfY.js (New) 494 bytes 494 bytes 100.0% 🚀
assets/app.owner-Bm47nYc6.js (New) 474 bytes 474 bytes 100.0% 🚀
assets/app.commands-DO1tNw8s.js (New) 455 bytes 455 bytes 100.0% 🚀
assets/app.playground-BsOmtZ3H.js (New) 442 bytes 442 bytes 100.0% 🚀
assets/reveal-DvDk8Iem.js (New) 442 bytes 442 bytes 100.0% 🚀
assets/index-C2BVV6Bj.js (New) 438 bytes 438 bytes 100.0% 🚀
assets/app.digest-CgJQdCv0.js (New) 430 bytes 430 bytes 100.0% 🚀
assets/eye-off-CCUKVIoT.js (New) 430 bytes 430 bytes 100.0% 🚀
assets/app.miner-C5e_s-uG.js (New) 422 bytes 422 bytes 100.0% 🚀
assets/key-round-CYNWSJGG.js (New) 355 bytes 355 bytes 100.0% 🚀
assets/bot-Ci7Clogt.js (New) 328 bytes 328 bytes 100.0% 🚀
assets/trash-2-DgH3X-ec.js (New) 328 bytes 328 bytes 100.0% 🚀
assets/save-Bs7HGmwh.js (New) 327 bytes 327 bytes 100.0% 🚀
assets/git-pull-request-arrow-CdP58GPo.js (New) 321 bytes 321 bytes 100.0% 🚀
assets/shield-check-BfYVC-lo.js (New) 320 bytes 320 bytes 100.0% 🚀
assets/wrench-DzzAqXsB.js (New) 303 bytes 303 bytes 100.0% 🚀
assets/bell-C0f-RFf8.js (New) 290 bytes 290 bytes 100.0% 🚀
assets/list-checks-XYN4vwt6.js (New) 279 bytes 279 bytes 100.0% 🚀
assets/shield-D-tWBVEZ.js (New) 272 bytes 272 bytes 100.0% 🚀
assets/workflow-CipOVL1o.js (New) 265 bytes 265 bytes 100.0% 🚀
assets/chart-column-B06RlAZT.js (New) 251 bytes 251 bytes 100.0% 🚀
assets/compass-BROFoRzC.js (New) 251 bytes 251 bytes 100.0% 🚀
assets/skeleton-CLB_Svxi.js (New) 241 bytes 241 bytes 100.0% 🚀
assets/history-CRJ0GaxZ.js (New) 237 bytes 237 bytes 100.0% 🚀
assets/activity-B3pDSUE1.js (New) 234 bytes 234 bytes 100.0% 🚀
assets/message-square-CHdAcPoy.js (New) 233 bytes 233 bytes 100.0% 🚀
assets/download-oFRq80th.js (New) 232 bytes 232 bytes 100.0% 🚀
assets/chevron-right-DElckNci.js (New) 207 bytes 207 bytes 100.0% 🚀
assets/lock-DLf-hJfE.js (New) 206 bytes 206 bytes 100.0% 🚀
assets/rotate-cw-D1ChBqAm.js (New) 201 bytes 201 bytes 100.0% 🚀
assets/play-9o0En6jM.js (New) 190 bytes 190 bytes 100.0% 🚀
assets/circle-check-6kJIycvq.js (New) 178 bytes 178 bytes 100.0% 🚀
assets/search-CSy_cBwD.js (New) 174 bytes 174 bytes 100.0% 🚀
assets/self-hosting-docs-audit-otnBRwdI.js (New) 141 bytes 141 bytes 100.0% 🚀
assets/circle-al8Yp85H.js (New) 130 bytes 130 bytes 100.0% 🚀
assets/modal-B873YGSC.js (New) 115 bytes 115 bytes 100.0% 🚀
assets/add-scalar-classes-fcJviY4c.js (Deleted) -2.17MB 0 bytes -100.0% 🗑️
assets/tanstack-vendor-ClP37t8T.js (Deleted) -697.15kB 0 bytes -100.0% 🗑️
assets/docs.fumadocs-spike-api-reference-DwThWqN_.js (Deleted) -442.94kB 0 bytes -100.0% 🗑️
assets/AgentScalarChatInterface.vue-IqfZA3Ov.js (Deleted) -201.71kB 0 bytes -100.0% 🗑️
assets/modal-DV3EcxcL.js (Deleted) -184.28kB 0 bytes -100.0% 🗑️
assets/client-B55JBqR4.js (Deleted) -146.06kB 0 bytes -100.0% 🗑️
assets/maintainer-panel-DV6tBcGy.js (Deleted) -76.25kB 0 bytes -100.0% 🗑️
assets/ui-vendor-DpcV0vvA.js (Deleted) -65.93kB 0 bytes -100.0% 🗑️
assets/app.analytics-CZNCr-EQ.js (Deleted) -36.27kB 0 bytes -100.0% 🗑️
assets/routes-CgJvWWm_.js (Deleted) -34.04kB 0 bytes -100.0% 🗑️
assets/app.runs-BkjFSkpm.js (Deleted) -27.11kB 0 bytes -100.0% 🗑️
assets/owner-panel-B1J9lnZK.js (Deleted) -26.76kB 0 bytes -100.0% 🗑️
assets/app-DPbuMPH5.js (Deleted) -25.84kB 0 bytes -100.0% 🗑️
assets/app.operator-BWqTf2LQ.js (Deleted) -25.35kB 0 bytes -100.0% 🗑️
assets/miner-panel-C8RbHF80.js (Deleted) -20.23kB 0 bytes -100.0% 🗑️
assets/docs-source-Cl7nW6IQ.js (Deleted) -19.2kB 0 bytes -100.0% 🗑️
assets/api._op-BFZpZ6hN.js (Deleted) -17.89kB 0 bytes -100.0% 🗑️
assets/self-hosting-docs-audit-DzCgwLN4.js (Deleted) -16.73kB 0 bytes -100.0% 🗑️
assets/app.index-BCy8ug9g.js (Deleted) -16.19kB 0 bytes -100.0% 🗑️
assets/playground-panel-eeKlpLva.js (Deleted) -14.43kB 0 bytes -100.0% 🗑️
assets/app.audit-CS3dFxpO.js (Deleted) -9.36kB 0 bytes -100.0% 🗑️
assets/extension-sfl8JJ7f.js (Deleted) -9.22kB 0 bytes -100.0% 🗑️
assets/app.config-generator-DM3hOj2o.js (Deleted) -9.19kB 0 bytes -100.0% 🗑️
assets/maintainers-BORd_1Rp.js (Deleted) -8.06kB 0 bytes -100.0% 🗑️
assets/miners-DcOIgT5D.js (Deleted) -7.89kB 0 bytes -100.0% 🗑️
assets/agents-Di_YqdUK.js (Deleted) -7.76kB 0 bytes -100.0% 🗑️
assets/commands-panel-B-8DNC0A.js (Deleted) -6.65kB 0 bytes -100.0% 🗑️
assets/roadmap-CPcdYeaU.js (Deleted) -6.33kB 0 bytes -100.0% 🗑️
assets/digest-panel-gSWzr-uL.js (Deleted) -6.26kB 0 bytes -100.0% 🗑️
assets/docs.index-CthVRZ6c.js (Deleted) -5.34kB 0 bytes -100.0% 🗑️
assets/repos._owner._repo.quality-DkVpkS9J.js (Deleted) -4.88kB 0 bytes -100.0% 🗑️
assets/api.index-l4SzslV5.js (Deleted) -4.78kB 0 bytes -100.0% 🗑️
assets/changelog-CdraTm03.js (Deleted) -4.67kB 0 bytes -100.0% 🗑️
assets/control-primitives-BgeuBqak.js (Deleted) -3.75kB 0 bytes -100.0% 🗑️
assets/api-BSDihr7q.js (Deleted) -2.73kB 0 bytes -100.0% 🗑️
assets/docs-Dhwjv66Y.js (Deleted) -2.67kB 0 bytes -100.0% 🗑️
assets/alert-dialog-y3zNldF7.js (Deleted) -2.07kB 0 bytes -100.0% 🗑️
assets/button-Cinx62Rr.js (Deleted) -1.74kB 0 bytes -100.0% 🗑️
assets/app.workbench-BDX8_bLr.js (Deleted) -1.63kB 0 bytes -100.0% 🗑️
assets/tooltip-C851TzL1.js (Deleted) -1.45kB 0 bytes -100.0% 🗑️
assets/session-BQfLhU-b.js (Deleted) -1.44kB 0 bytes -100.0% 🗑️
assets/tabs-DqJBabgT.js (Deleted) -1.39kB 0 bytes -100.0% 🗑️
assets/trend-chart-CusKm_uu.js (Deleted) -1.22kB 0 bytes -100.0% 🗑️
assets/app.repos-BkkoJFLp.js (Deleted) -1.07kB 0 bytes -100.0% 🗑️
assets/switch-ZAK5CXk-.js (Deleted) -982 bytes 0 bytes -100.0% 🗑️
assets/analytics-card-shell-Odmh-8uk.js (Deleted) -973 bytes 0 bytes -100.0% 🗑️
assets/use-api-resource-Bskx7xNP.js (Deleted) -934 bytes 0 bytes -100.0% 🗑️
assets/refresh-meta-496U3E_t.js (Deleted) -797 bytes 0 bytes -100.0% 🗑️
assets/input-CjFqhyP1.js (Deleted) -796 bytes 0 bytes -100.0% 🗑️
assets/file-cog-BR9lxI9w.js (Deleted) -758 bytes 0 bytes -100.0% 🗑️
assets/docs.ai-summaries-adydAQrW.js (Deleted) -568 bytes 0 bytes -100.0% 🗑️
assets/docs.scoreability-HzAFAKxj.js (Deleted) -562 bytes 0 bytes -100.0% 🗑️
assets/docs.upstream-drift-a02bUyyg.js (Deleted) -562 bytes 0 bytes -100.0% 🗑️
assets/docs.branch-analysis-BUjhFTWM.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-ai-providers-CLVShVf3.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-backup-scaling-CL_D8Evt.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-configuration-DmJbWF2Q.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-docs-audit-Bv67qQ78.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-github-app-BXHuLud8.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-quickstart-BSzt6uRU.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rag-D9f2KAJS.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rees-BnLW3RLX.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rees-analyzers-CxTfCxUg.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-release-checklist-CDBZZoSJ.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-releases-pZ8PWDeI.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-security-oYaXZGsw.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-troubleshooting-BrESxvKt.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.self-hosting-unified-ams-orb-DTEunjas.js (Deleted) -561 bytes 0 bytes -100.0% 🗑️
assets/docs.maintainer-install-trust-C-z-5dqs.js (Deleted) -560 bytes 0 bytes -100.0% 🗑️
assets/docs.mcp-clients-C89er0BY.js (Deleted) -560 bytes 0 bytes -100.0% 🗑️
assets/docs.owner-checklist-rVqgf5LL.js (Deleted) -560 bytes 0 bytes -100.0% 🗑️
assets/docs.quickstart-B8CKBxAQ.js (Deleted) -560 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-config-precedence-D-i6zeIZ.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-deployment-9OLcCymy.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-discovery-plane-DAamuoPp.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-env-reference-B5nMA1jb.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-fleet-manifest-DxeA2ec0.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-goal-spec-DA7a4Fq4.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-observability-CYi7ccij.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-operations-runbook-DXMzdk9X.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-sizing-CnxU6A6S.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.ams-unattended-scheduling-BuoWDsmC.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.beta-onboarding-BEwBeiPy.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.maintainer-self-hosting-B2oQ-pAb.js (Deleted) -559 bytes 0 bytes -100.0% 🗑️
assets/docs.privacy-security-C5Sznmti.js (Deleted) -558 bytes 0 bytes -100.0% 🗑️
assets/docs.troubleshooting-BeFqOVp_.js (Deleted) -558 bytes 0 bytes -100.0% 🗑️
assets/docs.tuning-Dx3FyNM5.js (Deleted) -558 bytes 0 bytes -100.0% 🗑️
assets/docs.github-app-seT3-a0J.js (Deleted) -557 bytes 0 bytes -100.0% 🗑️
assets/docs.maintainer-workflow-CZKfwBrE.js (Deleted) -557 bytes 0 bytes -100.0% 🗑️
assets/docs.loopover-commands-7_9Kc076.js (Deleted) -556 bytes 0 bytes -100.0% 🗑️
assets/docs.how-reviews-work-CfmviFpY.js (Deleted) -555 bytes 0 bytes -100.0% 🗑️
assets/app.maintainer-CbG_9CZt.js (Deleted) -502 bytes 0 bytes -100.0% 🗑️
assets/sparkles-lFpRlfPH.js (Deleted) -494 bytes 0 bytes -100.0% 🗑️
assets/app.owner-Ceelc_8u.js (Deleted) -474 bytes 0 bytes -100.0% 🗑️
assets/app.commands-BEzJTK9_.js (Deleted) -455 bytes 0 bytes -100.0% 🗑️
assets/app.playground-Cgy4xEmj.js (Deleted) -442 bytes 0 bytes -100.0% 🗑️
assets/reveal-DHwN8QGO.js (Deleted) -442 bytes 0 bytes -100.0% 🗑️
assets/index-BXZb1vvt.js (Deleted) -438 bytes 0 bytes -100.0% 🗑️
assets/app.digest-BEdHeoKa.js (Deleted) -430 bytes 0 bytes -100.0% 🗑️
assets/eye-off-CqXbu6sY.js (Deleted) -430 bytes 0 bytes -100.0% 🗑️
assets/app.miner-DczeR8IW.js (Deleted) -422 bytes 0 bytes -100.0% 🗑️
assets/key-round-DlEX1yv-.js (Deleted) -355 bytes 0 bytes -100.0% 🗑️
assets/bot-C6iMojMm.js (Deleted) -328 bytes 0 bytes -100.0% 🗑️
assets/trash-2-DHE1xEQt.js (Deleted) -328 bytes 0 bytes -100.0% 🗑️
assets/save-DpxgWf4_.js (Deleted) -327 bytes 0 bytes -100.0% 🗑️
assets/git-pull-request-arrow-Ba5YvJgn.js (Deleted) -321 bytes 0 bytes -100.0% 🗑️
assets/shield-check-CRiE8vX6.js (Deleted) -320 bytes 0 bytes -100.0% 🗑️
assets/wrench-CqClSD3S.js (Deleted) -303 bytes 0 bytes -100.0% 🗑️
assets/bell-B82t3a7S.js (Deleted) -290 bytes 0 bytes -100.0% 🗑️
assets/list-checks-DRN2eiij.js (Deleted) -279 bytes 0 bytes -100.0% 🗑️
assets/shield-wbO_5NE3.js (Deleted) -272 bytes 0 bytes -100.0% 🗑️
assets/workflow-D0k9-DJ4.js (Deleted) -265 bytes 0 bytes -100.0% 🗑️
assets/chart-column-Cy9sdo7q.js (Deleted) -251 bytes 0 bytes -100.0% 🗑️
assets/compass-BNimD-1O.js (Deleted) -251 bytes 0 bytes -100.0% 🗑️
assets/skeleton-BE0kEeBS.js (Deleted) -241 bytes 0 bytes -100.0% 🗑️
assets/history-B4SIp5hI.js (Deleted) -237 bytes 0 bytes -100.0% 🗑️
assets/activity-CACz4yO8.js (Deleted) -234 bytes 0 bytes -100.0% 🗑️
assets/message-square-COcn-QXK.js (Deleted) -233 bytes 0 bytes -100.0% 🗑️
assets/download-DCkqawnl.js (Deleted) -232 bytes 0 bytes -100.0% 🗑️
assets/chevron-right-BPRXsEy-.js (Deleted) -207 bytes 0 bytes -100.0% 🗑️
assets/lock-CPKZzfXa.js (Deleted) -206 bytes 0 bytes -100.0% 🗑️
assets/rotate-cw-Bmo_23D4.js (Deleted) -201 bytes 0 bytes -100.0% 🗑️
assets/play-Dg89m785.js (Deleted) -190 bytes 0 bytes -100.0% 🗑️
assets/circle-check-DQBalu-W.js (Deleted) -178 bytes 0 bytes -100.0% 🗑️
assets/search-CpylOsmq.js (Deleted) -174 bytes 0 bytes -100.0% 🗑️
assets/self-hosting-docs-audit-CJfWQytN.js (Deleted) -141 bytes 0 bytes -100.0% 🗑️
assets/circle-Bg933SYK.js (Deleted) -130 bytes 0 bytes -100.0% 🗑️
assets/modal-DiFpHdDu.js (Deleted) -115 bytes 0 bytes -100.0% 🗑️

glorydavid03023 pushed a commit to glorydavid03023/gittensory that referenced this pull request Jul 16, 2026
PR JSONbored#6454 (draft-pr-close-policy) and PR JSONbored#6467
(screenshot-table-gate-head-sha-correlation) both grabbed migration
number 0156, merging 23 minutes apart without seeing each other's
number. db:migrations:check now fails on main for every PR. Renumber
the later-merged one (JSONbored#6467) to the next free number.
JSONbored added a commit that referenced this pull request Jul 16, 2026
0156_draft_pr_close_policy.sql (#6454) and 0156_pull_request_screenshot_table_
presence_satisfied.sql (a same-day, independently-merged PR) both grabbed migration
number 0156 relative to the same origin/main base and merged without a collision
being caught. Both have already been applied to production D1 under their current
filenames (confirmed via d1_migrations) — renaming either now would make wrangler
try to RE-APPLY it, and both are bare ALTER TABLE ADD COLUMN statements SQLite can't
guard with IF NOT EXISTS, so the re-apply would error and break the next deploy.

Grandfather 0156 in KNOWN_MIGRATION_DUPLICATES, matching the exact precedent already
set by 0015/0017/0074/0090 for the same "already-shipped, can't-be-renumbered" reason.
JSONbored added a commit that referenced this pull request Jul 16, 2026
… autonomy config-as-code PR

#773's autonomy config-as-code change (fix(settings): give loopover its own autonomy
config-as-code, merged as PR #6468) replaced the same settings: block section in both
.loopover.yml and its bundled fallback manifest, silently dropping this repo's own
draftPrClosePolicy: close line in the process — the feature (#6454, merged) has been
fully live in code since, just disabled for loopover's own repo because nothing
enabled it.

Re-add draftPrClosePolicy: close alongside (not replacing) the autonomy: block, in
both the committed .loopover.yml and its bundled byte-identical twin.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gittensor:feature Gittensor-scored feature linked to a feature issue — scores a 0.25x multiplier.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant