Skip to content

review: unwind the retired unifiedComment feature key - #6134

Merged
JSONbored merged 1 commit into
mainfrom
review/unwind-unified-comment-feature-key
Jul 15, 2026
Merged

review: unwind the retired unifiedComment feature key#6134
JSONbored merged 1 commit into
mainfrom
review/unwind-unified-comment-feature-key

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

Summary

  • Fully removes the unifiedComment ConvergedFeatureKey (and its LOOPOVER_REVIEW_UNIFIED_COMMENT env flag) — the flag became functionally inert in review: remove the legacy comment renderer (#6103) #6128 once the unified-comment bridge became the sole PR-comment renderer, but was left declared "for compatibility." This surfaced a real conflict: test/unit/check-docs-drift-script.test.ts's regression guard requires every LOOPOVER_REVIEW_* flag declared in src/env.d.ts to be documented somewhere, and there's no existing precedent for "declared but doc-exempt" within the LOOPOVER_REVIEW_* namespace. Rather than fake-document a no-op flag, this removes it end to end: CONVERGED_FEATURE_KEYS, the resolver's FEATURE_GLOBAL_FLAG map, isUnifiedReviewCommentEnabled (now fully dead), env.d.ts, wrangler.jsonc, .env.example/.env.selfhost.example, and regenerates worker-configuration.d.ts via cf-typegen.
  • Updates the config-as-code examples (.loopover.yml.example + its twin config/examples/loopover.full.yml) and five self-hosting docs pages (docs.self-hosting-configuration, docs.privacy-security, docs.github-app, docs.tuning, docs.how-reviews-work) to drop every mention.
  • Fixes a stale "signal table" description in docs.how-reviews-work.tsx left over from the earlier decision-drivers redesign (review: collapse signal table into decision drivers + advisory fold #6083) — the page still described the retired flat signal-table layout instead of the current always-visible "Decision drivers" + collapsed "Context & advisory signals" shape.
  • Fixes CONVERGENCE_RUNBOOK.md's now-inaccurate claim that the flag still drives the comment path.
  • Updates every affected test (feature-activation.test.ts, focus-manifest.test.ts, visual-wire.test.ts, queue-3/4/5.test.ts, linked-issue-satisfaction-run.test.ts, reputation-wiring.test.ts, unified-comment-bridge.test.ts) to drop the retired key/flag from fixtures and assertions.
  • Unrelated but caught by the same full-suite run: fixes a genuinely timing-flaky test in test/unit/github-graphql-cache.test.ts ("single-flights concurrent cold misses for the same query"). graphqlCacheKey awaits two real crypto.subtle.digest calls before checking the single-flight map; since WebCrypto digests are backed by a real OS thread pool, two concurrent callers with identical inputs can complete their digest awaits in either order under load — reproduced standalone outside vitest at an ~11% failure rate over 500 trials with zero induced CPU contention. Stubbed a deterministic pure-microtask digest for this one test only (restored via mockRestore()), which resolved the race deterministically (0/500 in the same repro) without touching the production single-flight logic or changing what the test proves.

Test plan

  • npx tsc --noEmit clean
  • npm run test:coverage (unsharded): 884 files / 17039 tests passed, 0 failures
  • npm audit --audit-level=moderate: 0 vulnerabilities
  • npm run test:ci (full local gate incl. lint, drift checks, engine parity, MCP/miner packs, UI build): green (verified via direct exit code, not a piped/tee'd one)
  • Standalone repro confirming the GraphQL cache fix: 55/500 failures before, 0/500 after, with zero vitest/CPU-stress overhead
  • Rebased onto latest origin/main, no conflicts

The unified-comment bridge became the sole PR-comment renderer in #6128,
which left the unifiedComment ConvergedFeatureKey and its
LOOPOVER_REVIEW_UNIFIED_COMMENT env flag declared but functionally
inert. Since the drift-check gate requires every declared
LOOPOVER_REVIEW_* flag to be documented, and there was no working
precedent for a retired-but-still-required flag, this fully removes the
key/flag from the resolver, config-as-code examples, self-hosting docs,
and env declarations (regenerating worker-configuration.d.ts via
cf-typegen) rather than leaving stale references. Also fixes the
"signal table" description in docs.how-reviews-work.tsx, left over from
the earlier decision-drivers redesign (#6083), and a timing-flaky
GraphQL single-flight test unrelated to this change but caught by the
same full-suite run (crypto.subtle.digest is backed by a real OS thread
pool, so two concurrent callers with identical inputs can complete in
either order under load; stubbed with a deterministic pure-microtask
digest for the one test that exercises the race).
@superagent-security

Copy link
Copy Markdown
Contributor

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

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

codecov Bot commented Jul 15, 2026

Copy link
Copy Markdown

Bundle Report

Changes will decrease total bundle size by 662 bytes (-0.02%) ⬇️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
loopover-ui 3.06MB -662 bytes (-0.02%) ⬇️

Affected Assets, Files, and Routes:

view changes for bundle: loopover-ui

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/tanstack-vendor-CNBjpbFP.js (New) 725.54kB 725.54kB 100.0% 🚀
assets/maintainer-panel-BRGIXP0t.js (New) 75.5kB 75.5kB 100.0% 🚀
assets/ui-vendor-C_q5mXvJ.js (New) 65.83kB 65.83kB 100.0% 🚀
assets/owner-panel-BCROvSFT.js (New) 58.63kB 58.63kB 100.0% 🚀
assets/docs.self-hosting-configuration-DhtLBa6v.js (New) 48.34kB 48.34kB 100.0% 🚀
assets/app.analytics-2oOKMoGr.js (New) 36.26kB 36.26kB 100.0% 🚀
assets/docs.self-hosting-release-checklist-BpvaMo_w.js (New) 34.54kB 34.54kB 100.0% 🚀
assets/docs.tuning-BdlFdiyN.js (New) 34.15kB 34.15kB 100.0% 🚀
assets/routes-zVEuwUB7.js (New) 34.04kB 34.04kB 100.0% 🚀
assets/app.runs-fYs659fH.js (New) 27.11kB 27.11kB 100.0% 🚀
assets/app-CTlXMcu8.js (New) 25.83kB 25.83kB 100.0% 🚀
assets/app.operator-DHvSmzkC.js (New) 24.59kB 24.59kB 100.0% 🚀
assets/docs.self-hosting-security-CXdMPYcY.js (New) 21.3kB 21.3kB 100.0% 🚀
assets/miner-panel-BxLGpor-.js (New) 19.23kB 19.23kB 100.0% 🚀
assets/docs.github-app-DY80DS83.js (New) 19.21kB 19.21kB 100.0% 🚀
assets/docs.self-hosting-troubleshooting-sSyhQQe0.js (New) 18.47kB 18.47kB 100.0% 🚀
assets/api._op-B33nzQbr.js (New) 17.89kB 17.89kB 100.0% 🚀
assets/docs.self-hosting-github-app-DWX9XDoL.js (New) 17.32kB 17.32kB 100.0% 🚀
assets/docs.how-reviews-work-c3sUFhlZ.js (New) 17.1kB 17.1kB 100.0% 🚀
assets/app.index-BfP8EGuQ.js (New) 16.19kB 16.19kB 100.0% 🚀
assets/docs.maintainer-self-hosting-CNDD28Dd.js (New) 15.99kB 15.99kB 100.0% 🚀
assets/playground-panel-DC5tdRn8.js (New) 14.43kB 14.43kB 100.0% 🚀
assets/docs.self-hosting-quickstart-_ypJfLKq.js (New) 14.15kB 14.15kB 100.0% 🚀
assets/docs.self-hosting-docs-audit-Dk_GV1xc.js (New) 12.14kB 12.14kB 100.0% 🚀
assets/docs.maintainer-install-trust-Bf8hUzSv.js (New) 10.51kB 10.51kB 100.0% 🚀
assets/docs.self-hosting-backup-scaling-DL8W_wKW.js (New) 10.06kB 10.06kB 100.0% 🚀
assets/docs.beta-onboarding-BT8AILMH.js (New) 9.95kB 9.95kB 100.0% 🚀
assets/app.audit-Bsbq74bx.js (New) 9.35kB 9.35kB 100.0% 🚀
assets/extension-B9E7bokw.js (New) 9.21kB 9.21kB 100.0% 🚀
assets/docs.self-hosting-rees-BsQPkS3z.js (New) 8.95kB 8.95kB 100.0% 🚀
assets/docs.self-hosting-ai-providers-ZKQNBhQR.js (New) 8.92kB 8.92kB 100.0% 🚀
assets/app.config-generator-QZ4OZS9_.js (New) 8.13kB 8.13kB 100.0% 🚀
assets/maintainers-Cra_5pS-.js (New) 8.06kB 8.06kB 100.0% 🚀
assets/miners-BTQ8dlhX.js (New) 7.88kB 7.88kB 100.0% 🚀
assets/agents-Da1dZoWE.js (New) 7.76kB 7.76kB 100.0% 🚀
assets/docs.privacy-security-4G94ICBk.js (New) 7.13kB 7.13kB 100.0% 🚀
assets/docs.owner-checklist-BIX1FnpY.js (New) 7.0kB 7.0kB 100.0% 🚀
assets/docs.self-hosting-unified-ams-orb-C6GS9hx9.js (New) 6.84kB 6.84kB 100.0% 🚀
assets/commands-panel-Bk_zX9wM.js (New) 6.65kB 6.65kB 100.0% 🚀
assets/docs.self-hosting-releases-BlbaaZFd.js (New) 6.62kB 6.62kB 100.0% 🚀
assets/roadmap-C-Bj35Lw.js (New) 6.33kB 6.33kB 100.0% 🚀
assets/docs.self-hosting-rees-analyzers-zr-ETHkH.js (New) 6.05kB 6.05kB 100.0% 🚀
assets/digest-panel-DCIpKvNj.js (New) 6.04kB 6.04kB 100.0% 🚀
assets/docs.loopover-commands-BLcOsfyw.js (New) 5.18kB 5.18kB 100.0% 🚀
assets/docs.scoreability-BY_qfgDi.js (New) 5.05kB 5.05kB 100.0% 🚀
assets/docs.troubleshooting-Dmj8TXp7.js (New) 4.91kB 4.91kB 100.0% 🚀
assets/repos._owner._repo.quality-C8-9csXP.js (New) 4.87kB 4.87kB 100.0% 🚀
assets/api.index-bg5UYqlu.js (New) 4.78kB 4.78kB 100.0% 🚀
assets/docs.index-D8iKCmRI.js (New) 4.74kB 4.74kB 100.0% 🚀
assets/changelog-Du2p9n3k.js (New) 4.67kB 4.67kB 100.0% 🚀
assets/docs.maintainer-workflow-D-N57KXA.js (New) 4.36kB 4.36kB 100.0% 🚀
assets/docs.self-hosting-rag-BPFEeYQK.js (New) 4.35kB 4.35kB 100.0% 🚀
assets/control-primitives-DFJfn2lS.js (New) 3.75kB 3.75kB 100.0% 🚀
assets/docs.ai-summaries-EKl3gPS4.js (New) 3.04kB 3.04kB 100.0% 🚀
assets/docs.branch-analysis-BbWH4cnQ.js (New) 2.91kB 2.91kB 100.0% 🚀
assets/docs.mcp-clients-BfCig6aq.js (New) 2.9kB 2.9kB 100.0% 🚀
assets/api-Bp8V9Aol.js (New) 2.73kB 2.73kB 100.0% 🚀
assets/docs-DM_qXm9M.js (New) 2.67kB 2.67kB 100.0% 🚀
assets/docs.quickstart-B__u7ti0.js (New) 2.1kB 2.1kB 100.0% 🚀
assets/alert-dialog-DreH8i5g.js (New) 2.07kB 2.07kB 100.0% 🚀
assets/docs.upstream-drift-BIIMPpml.js (New) 2.04kB 2.04kB 100.0% 🚀
assets/button-C6JqseNl.js (New) 1.74kB 1.74kB 100.0% 🚀
assets/app.workbench-CIr-ipR7.js (New) 1.63kB 1.63kB 100.0% 🚀
assets/tooltip-DJFvl3GJ.js (New) 1.45kB 1.45kB 100.0% 🚀
assets/session-D_oXyydS.js (New) 1.44kB 1.44kB 100.0% 🚀
assets/tabs-Cdam3zKT.js (New) 1.39kB 1.39kB 100.0% 🚀
assets/trend-chart-f10nH-GU.js (New) 1.22kB 1.22kB 100.0% 🚀
assets/app.repos-DM1f6_XD.js (New) 1.07kB 1.07kB 100.0% 🚀
assets/switch-DoexGh1l.js (New) 982 bytes 982 bytes 100.0% 🚀
assets/analytics-card-shell-DbpGGO_I.js (New) 972 bytes 972 bytes 100.0% 🚀
assets/use-api-resource-Bn3PczsK.js (New) 934 bytes 934 bytes 100.0% 🚀
assets/input-COhcyoQn.js (New) 796 bytes 796 bytes 100.0% 🚀
assets/refresh-meta-BVK6RT5s.js (New) 796 bytes 796 bytes 100.0% 🚀
assets/file-cog-CKTID597.js (New) 758 bytes 758 bytes 100.0% 🚀
assets/app.maintainer-CsDUKUoV.js (New) 501 bytes 501 bytes 100.0% 🚀
assets/sparkles-BivU-aeF.js (New) 494 bytes 494 bytes 100.0% 🚀
assets/app.owner-DsBHKcUb.js (New) 473 bytes 473 bytes 100.0% 🚀
assets/app.commands-CIWkDZN_.js (New) 454 bytes 454 bytes 100.0% 🚀
assets/reveal-DTZNwah5.js (New) 442 bytes 442 bytes 100.0% 🚀
assets/app.playground-Dkn7woUS.js (New) 441 bytes 441 bytes 100.0% 🚀
assets/index-3DJfMJbz.js (New) 438 bytes 438 bytes 100.0% 🚀
assets/eye-off-BFIV9S73.js (New) 430 bytes 430 bytes 100.0% 🚀
assets/app.digest-CowMf73p.js (New) 429 bytes 429 bytes 100.0% 🚀
assets/app.miner-BAvFayI6.js (New) 421 bytes 421 bytes 100.0% 🚀
assets/key-round-QqpX_0Zo.js (New) 355 bytes 355 bytes 100.0% 🚀
assets/bot-PdQe9s0C.js (New) 328 bytes 328 bytes 100.0% 🚀
assets/trash-2-4hzv2AxJ.js (New) 328 bytes 328 bytes 100.0% 🚀
assets/save-BuU-cdT5.js (New) 327 bytes 327 bytes 100.0% 🚀
assets/git-pull-request-arrow-XzSSJJF9.js (New) 321 bytes 321 bytes 100.0% 🚀
assets/shield-check-yFM29X7A.js (New) 320 bytes 320 bytes 100.0% 🚀
assets/wrench-CXrNYJ3i.js (New) 303 bytes 303 bytes 100.0% 🚀
assets/bell-CEAr-nFk.js (New) 290 bytes 290 bytes 100.0% 🚀
assets/list-checks-BWKWUK4U.js (New) 279 bytes 279 bytes 100.0% 🚀
assets/shield-Izx4ezCS.js (New) 272 bytes 272 bytes 100.0% 🚀
assets/workflow-D_IWWp2X.js (New) 265 bytes 265 bytes 100.0% 🚀
assets/chart-column-CV8IjiOA.js (New) 251 bytes 251 bytes 100.0% 🚀
assets/compass-BPLyg1n8.js (New) 251 bytes 251 bytes 100.0% 🚀
assets/skeleton-mT3wWDzd.js (New) 241 bytes 241 bytes 100.0% 🚀
assets/history-BQvR7pGA.js (New) 237 bytes 237 bytes 100.0% 🚀
assets/activity-De2SnB_R.js (New) 234 bytes 234 bytes 100.0% 🚀
assets/message-square-Bn4A5q1P.js (New) 233 bytes 233 bytes 100.0% 🚀
assets/download-1s24YmJd.js (New) 232 bytes 232 bytes 100.0% 🚀
assets/chevron-right-BlkTKsyW.js (New) 207 bytes 207 bytes 100.0% 🚀
assets/lock-ZwkisvlM.js (New) 206 bytes 206 bytes 100.0% 🚀
assets/rotate-cw-4IrdDaT0.js (New) 201 bytes 201 bytes 100.0% 🚀
assets/play-BFgDp1JY.js (New) 190 bytes 190 bytes 100.0% 🚀
assets/circle-check-M9zcGspN.js (New) 178 bytes 178 bytes 100.0% 🚀
assets/search-erEZzgxK.js (New) 174 bytes 174 bytes 100.0% 🚀
assets/circle-DR8JuBlV.js (New) 130 bytes 130 bytes 100.0% 🚀
assets/tanstack-vendor-v5qYboE4.js (Deleted) -725.54kB 0 bytes -100.0% 🗑️
assets/maintainer-panel-CFQV4NMY.js (Deleted) -75.5kB 0 bytes -100.0% 🗑️
assets/ui-vendor-GBiHp8fk.js (Deleted) -65.83kB 0 bytes -100.0% 🗑️
assets/owner-panel-B9xJVDWe.js (Deleted) -58.65kB 0 bytes -100.0% 🗑️
assets/docs.self-hosting-configuration-CFNDdQlC.js (Deleted) -48.42kB 0 bytes -100.0% 🗑️
assets/app.analytics-Dp5XRw7x.js (Deleted) -36.26kB 0 bytes -100.0% 🗑️
assets/docs.self-hosting-release-checklist-BaHHpYmt.js (Deleted) -34.54kB 0 bytes -100.0% 🗑️
assets/docs.tuning-B13Qra9d.js (Deleted) -34.42kB 0 bytes -100.0% 🗑️
assets/routes-DYQXax8g.js (Deleted) -34.04kB 0 bytes -100.0% 🗑️
assets/app.runs-BIkk5ZhI.js (Deleted) -27.11kB 0 bytes -100.0% 🗑️
assets/app-CtQj_OC8.js (Deleted) -25.83kB 0 bytes -100.0% 🗑️
assets/app.operator-C1qfhirk.js (Deleted) -24.59kB 0 bytes -100.0% 🗑️
assets/docs.self-hosting-security-DlbHryHm.js (Deleted) -21.3kB 0 bytes -100.0% 🗑️
assets/docs.github-app-9O3g2cwk.js (Deleted) -19.49kB 0 bytes -100.0% 🗑️
assets/miner-panel-BXGSF9jN.js (Deleted) -19.23kB 0 bytes -100.0% 🗑️
assets/docs.self-hosting-troubleshooting-sPh1T9zu.js (Deleted) -18.47kB 0 bytes -100.0% 🗑️
assets/api._op-9R52Rg_2.js (Deleted) -17.89kB 0 bytes -100.0% 🗑️
assets/docs.self-hosting-github-app-TmBIepRH.js (Deleted) -17.32kB 0 bytes -100.0% 🗑️
assets/docs.how-reviews-work-DtpO97-3.js (Deleted) -17.03kB 0 bytes -100.0% 🗑️
assets/app.index-D5FOOYRl.js (Deleted) -16.19kB 0 bytes -100.0% 🗑️
assets/docs.maintainer-self-hosting-DKaEJJ1F.js (Deleted) -15.99kB 0 bytes -100.0% 🗑️
assets/playground-panel-BBRE0FNp.js (Deleted) -14.43kB 0 bytes -100.0% 🗑️
assets/docs.self-hosting-quickstart-xSvStbrP.js (Deleted) -14.15kB 0 bytes -100.0% 🗑️
assets/docs.self-hosting-docs-audit-CvMjQ2LT.js (Deleted) -12.14kB 0 bytes -100.0% 🗑️
assets/docs.maintainer-install-trust-Ct5E8_5q.js (Deleted) -10.51kB 0 bytes -100.0% 🗑️
assets/docs.self-hosting-backup-scaling-DUEoBxmm.js (Deleted) -10.06kB 0 bytes -100.0% 🗑️
assets/docs.beta-onboarding-B6qAmg2L.js (Deleted) -9.95kB 0 bytes -100.0% 🗑️
assets/app.audit-CowTKP88.js (Deleted) -9.35kB 0 bytes -100.0% 🗑️
assets/extension-BkWjqJfD.js (Deleted) -9.21kB 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rees-C7reiBmC.js (Deleted) -8.95kB 0 bytes -100.0% 🗑️
assets/docs.self-hosting-ai-providers-3emUkWDZ.js (Deleted) -8.92kB 0 bytes -100.0% 🗑️
assets/app.config-generator-B2FFkQFk.js (Deleted) -8.13kB 0 bytes -100.0% 🗑️
assets/maintainers-DqozhY0L.js (Deleted) -8.06kB 0 bytes -100.0% 🗑️
assets/miners-BqvFotoW.js (Deleted) -7.88kB 0 bytes -100.0% 🗑️
assets/agents-BDjwwQPS.js (Deleted) -7.76kB 0 bytes -100.0% 🗑️
assets/docs.privacy-security-B4b7yuJ9.js (Deleted) -7.21kB 0 bytes -100.0% 🗑️
assets/docs.owner-checklist-Db0HzcLI.js (Deleted) -7.0kB 0 bytes -100.0% 🗑️
assets/docs.self-hosting-unified-ams-orb-teUabgjL.js (Deleted) -6.84kB 0 bytes -100.0% 🗑️
assets/commands-panel-CLodSOAU.js (Deleted) -6.65kB 0 bytes -100.0% 🗑️
assets/docs.self-hosting-releases-CqaieiJe.js (Deleted) -6.62kB 0 bytes -100.0% 🗑️
assets/roadmap-DenmpHHE.js (Deleted) -6.33kB 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rees-analyzers-Cuqtc3mN.js (Deleted) -6.05kB 0 bytes -100.0% 🗑️
assets/digest-panel-Bygrxg1t.js (Deleted) -6.04kB 0 bytes -100.0% 🗑️
assets/docs.loopover-commands-dM4Zxo5n.js (Deleted) -5.18kB 0 bytes -100.0% 🗑️
assets/docs.scoreability-DcYhM8FG.js (Deleted) -5.05kB 0 bytes -100.0% 🗑️
assets/docs.troubleshooting-Bt6W0lT4.js (Deleted) -4.91kB 0 bytes -100.0% 🗑️
assets/repos._owner._repo.quality-ePZPWSSZ.js (Deleted) -4.87kB 0 bytes -100.0% 🗑️
assets/api.index-bkWDyekg.js (Deleted) -4.78kB 0 bytes -100.0% 🗑️
assets/docs.index-B5rvwZyV.js (Deleted) -4.74kB 0 bytes -100.0% 🗑️
assets/changelog-jqAHOfoY.js (Deleted) -4.67kB 0 bytes -100.0% 🗑️
assets/docs.maintainer-workflow-CNdv4AaP.js (Deleted) -4.36kB 0 bytes -100.0% 🗑️
assets/docs.self-hosting-rag-DkbBggvI.js (Deleted) -4.35kB 0 bytes -100.0% 🗑️
assets/control-primitives-59iAHiQn.js (Deleted) -3.75kB 0 bytes -100.0% 🗑️
assets/docs.ai-summaries-BFb_YnoT.js (Deleted) -3.04kB 0 bytes -100.0% 🗑️
assets/docs.branch-analysis-D8DQ0C09.js (Deleted) -2.91kB 0 bytes -100.0% 🗑️
assets/docs.mcp-clients-DvbzmRyY.js (Deleted) -2.9kB 0 bytes -100.0% 🗑️
assets/api-7--B-EDY.js (Deleted) -2.73kB 0 bytes -100.0% 🗑️
assets/docs-D3K-Yf47.js (Deleted) -2.67kB 0 bytes -100.0% 🗑️
assets/docs.quickstart-Cq3ZEpV4.js (Deleted) -2.1kB 0 bytes -100.0% 🗑️
assets/alert-dialog-BsOVvlUt.js (Deleted) -2.07kB 0 bytes -100.0% 🗑️
assets/docs.upstream-drift-DPrPGxZh.js (Deleted) -2.04kB 0 bytes -100.0% 🗑️
assets/button-9vJMn-sV.js (Deleted) -1.74kB 0 bytes -100.0% 🗑️
assets/app.workbench-B9ukRTRm.js (Deleted) -1.63kB 0 bytes -100.0% 🗑️
assets/tooltip-Dkk_NwWy.js (Deleted) -1.45kB 0 bytes -100.0% 🗑️
assets/session-D2W-8Hte.js (Deleted) -1.44kB 0 bytes -100.0% 🗑️
assets/tabs-DkK6lDYh.js (Deleted) -1.39kB 0 bytes -100.0% 🗑️
assets/trend-chart-ButCOdUG.js (Deleted) -1.22kB 0 bytes -100.0% 🗑️
assets/app.repos-DLeJBbhB.js (Deleted) -1.07kB 0 bytes -100.0% 🗑️
assets/switch-DCGerVFV.js (Deleted) -982 bytes 0 bytes -100.0% 🗑️
assets/analytics-card-shell-BL0XzSTv.js (Deleted) -972 bytes 0 bytes -100.0% 🗑️
assets/use-api-resource-C791yVQY.js (Deleted) -934 bytes 0 bytes -100.0% 🗑️
assets/input-CqcM-Nz1.js (Deleted) -796 bytes 0 bytes -100.0% 🗑️
assets/refresh-meta-TVmNZn5j.js (Deleted) -796 bytes 0 bytes -100.0% 🗑️
assets/file-cog-BYgCex3O.js (Deleted) -758 bytes 0 bytes -100.0% 🗑️
assets/app.maintainer-DdX1iptF.js (Deleted) -501 bytes 0 bytes -100.0% 🗑️
assets/sparkles-D6yDW2UD.js (Deleted) -494 bytes 0 bytes -100.0% 🗑️
assets/app.owner-aI5HKBRJ.js (Deleted) -473 bytes 0 bytes -100.0% 🗑️
assets/app.commands-BHDC4SuL.js (Deleted) -454 bytes 0 bytes -100.0% 🗑️
assets/reveal-DFKSlxFD.js (Deleted) -442 bytes 0 bytes -100.0% 🗑️
assets/app.playground-C0E0hcIR.js (Deleted) -441 bytes 0 bytes -100.0% 🗑️
assets/index-9AvEOGQT.js (Deleted) -438 bytes 0 bytes -100.0% 🗑️
assets/eye-off-C0IvDl-q.js (Deleted) -430 bytes 0 bytes -100.0% 🗑️
assets/app.digest-BbciP-rO.js (Deleted) -429 bytes 0 bytes -100.0% 🗑️
assets/app.miner-BYDVb3Ny.js (Deleted) -421 bytes 0 bytes -100.0% 🗑️
assets/key-round-CprAk3h_.js (Deleted) -355 bytes 0 bytes -100.0% 🗑️
assets/bot-DFjwN4Az.js (Deleted) -328 bytes 0 bytes -100.0% 🗑️
assets/trash-2-DjweCSyA.js (Deleted) -328 bytes 0 bytes -100.0% 🗑️
assets/save-cFX_nFiv.js (Deleted) -327 bytes 0 bytes -100.0% 🗑️
assets/git-pull-request-arrow-EWTiX5Ro.js (Deleted) -321 bytes 0 bytes -100.0% 🗑️
assets/shield-check-BWZ2h728.js (Deleted) -320 bytes 0 bytes -100.0% 🗑️
assets/wrench-Wkua9U-m.js (Deleted) -303 bytes 0 bytes -100.0% 🗑️
assets/bell-Dg1E6GPu.js (Deleted) -290 bytes 0 bytes -100.0% 🗑️
assets/list-checks-CsJBHf7x.js (Deleted) -279 bytes 0 bytes -100.0% 🗑️
assets/shield-BYVGHNTd.js (Deleted) -272 bytes 0 bytes -100.0% 🗑️
assets/workflow-C8TrSAKP.js (Deleted) -265 bytes 0 bytes -100.0% 🗑️
assets/chart-column-CQ6wRYP6.js (Deleted) -251 bytes 0 bytes -100.0% 🗑️
assets/compass-CnUA-9Ee.js (Deleted) -251 bytes 0 bytes -100.0% 🗑️
assets/skeleton-DlSIPfBF.js (Deleted) -241 bytes 0 bytes -100.0% 🗑️
assets/history-sXsaQZcH.js (Deleted) -237 bytes 0 bytes -100.0% 🗑️
assets/activity-BhMU0Jqx.js (Deleted) -234 bytes 0 bytes -100.0% 🗑️
assets/message-square-mF9IfghV.js (Deleted) -233 bytes 0 bytes -100.0% 🗑️
assets/download-5R4rL2BV.js (Deleted) -232 bytes 0 bytes -100.0% 🗑️
assets/chevron-right-Bbrt6bNQ.js (Deleted) -207 bytes 0 bytes -100.0% 🗑️
assets/lock-Cba3AFh9.js (Deleted) -206 bytes 0 bytes -100.0% 🗑️
assets/rotate-cw-lbIR5g3I.js (Deleted) -201 bytes 0 bytes -100.0% 🗑️
assets/play-CMUyImft.js (Deleted) -190 bytes 0 bytes -100.0% 🗑️
assets/circle-check-BzzgmyzK.js (Deleted) -178 bytes 0 bytes -100.0% 🗑️
assets/search-BhSob8eE.js (Deleted) -174 bytes 0 bytes -100.0% 🗑️
assets/circle-2tVbbVXR.js (Deleted) -130 bytes 0 bytes -100.0% 🗑️

@loopover-orb

loopover-orb Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Warning

🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨

⏸️ LoopOver review result - manual review recommended

Review updated: 2026-07-15 12:22:38 UTC

32 files · 1 AI reviewer · 1 blocker · readiness 100/100 · CI green · clean

⏸️ Suggested Action - Manual Review

Review summary
This is a clean, mechanical removal of the dead `unifiedComment`/`LOOPOVER_REVIEW_UNIFIED_COMMENT` feature flag end-to-end: constant array, resolver map, dead function, env.d.ts, wrangler.jsonc, generated worker-configuration.d.ts, example env files, config-as-code examples, five docs pages, and every test fixture that referenced it. The docs.how-reviews-work.tsx update also correctly replaces the stale flat 'signal table' description with the current Decision drivers/Context & advisory signals shape, matching the described #6083 follow-up. The bundled github-graphql-cache.test.ts flakiness fix stubs crypto.subtle.digest to make single-flight ordering deterministic, which is unrelated to the main removal but is well-justified and narrowly scoped.

Nits — 4 non-blocking
  • The unrelated `github-graphql-cache.test.ts` flakiness fix, while well-documented, is bundled into a PR titled/scoped as a flag removal — consider splitting it into its own PR next time so each change has an independently reviewable diff.
  • worker-configuration.d.ts hash change is a generated artifact and should be verified to match a fresh `cf-typegen` run rather than being hand-edited.
  • Double check no other doc or example file (e.g. README) still references `LOOPOVER_REVIEW_UNIFIED_COMMENT` outside the files touched here.
  • Confirm `check-docs-drift-script.test.ts` now passes without the exemption workaround the description mentions was the original trigger for this cleanup.

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.
Signal Result Evidence
Code review ❌ 1 blocker 1 reviewer
Linked issue ✅ No-issue rationale PR body explains why no issue is linked.
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 (no linked issue context).
Validation posture ✅ 25/25 PR body includes validation/test evidence.
Contributor workload ✅ 10/10 Author activity: 43 registered-repo PR(s), 35 merged, 364 issue(s).
Contributor context ✅ Confirmed Gittensor contributor JSONbored; Gittensor profile; 43 PR(s), 364 issue(s).
Gate result ❌ Blocking Repo-configured hard blocker found.
Improvement ✅ Minor risk: clean · value: minor · LLM: moderate
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: 43 PR(s), 364 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 <question> answers contribution-quality Q&A with source citations and freshness.
  • @loopover chat <question> 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://gittensory.aethereal.dev/docs/loopover-commands

🧪 Experimental — new and may change.

🟩 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 15, 2026
@codecov

codecov Bot commented Jul 15, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.32%. Comparing base (e9ecca2) to head (362a615).
⚠️ Report is 3 commits behind head on main.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #6134      +/-   ##
==========================================
- Coverage   95.32%   95.32%   -0.01%     
==========================================
  Files         597      597              
  Lines       47133    47132       -1     
  Branches    15026    15025       -1     
==========================================
- Hits        44930    44929       -1     
  Misses       1477     1477              
  Partials      726      726              
Flag Coverage Δ
shard-1 43.98% <100.00%> (+<0.01%) ⬆️
shard-2 36.78% <100.00%> (+0.12%) ⬆️
shard-3 32.20% <100.00%> (-0.04%) ⬇️
shard-4 33.88% <100.00%> (-0.09%) ⬇️
shard-5 31.63% <100.00%> (+<0.01%) ⬆️
shard-6 44.89% <100.00%> (+<0.01%) ⬆️

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

Files with missing lines Coverage Δ
packages/loopover-engine/src/focus-manifest.ts 98.86% <100.00%> (ø)
src/queue/ci-resolution.ts 98.55% <ø> (ø)
src/review/cutover-gate.ts 100.00% <ø> (ø)
src/review/feature-activation.ts 100.00% <ø> (ø)
src/review/inline-comments.ts 100.00% <ø> (ø)
src/review/safety.ts 100.00% <ø> (ø)
src/review/unified-comment-bridge.ts 99.60% <ø> (-0.01%) ⬇️
src/review/unified-comment.ts 99.61% <ø> (ø)
src/review/visual-wire.ts 100.00% <ø> (ø)

@JSONbored
JSONbored merged commit 45973f0 into main Jul 15, 2026
19 checks passed
@JSONbored
JSONbored deleted the review/unwind-unified-comment-feature-key branch July 15, 2026 12:25
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.

1 participant