Repository navigation
fix: drop dead guild-guard entry for nonexistent features route - #2030
Conversation
/api/guilds/:id/features had a guard registered in guildGuardConfigs but no matching route handler anywhere (the real feature-toggle endpoint is the global /api/features, not per-guild). Harmless at runtime, but paired with a stale WEBAPP_SETUP.md documenting per-server toggle endpoints that don't exist. Removes the dead guard entry, updates the doc, and drops the two test assertions locking in the orphaned behavior. Fixes #2029
|
Warning Review limit reached
Next review available in: 58 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Failed to generate code suggestions for PR |
|
There was a problem hiding this comment.
Graphify reviewed this change.
Worth a look — the grounded gate found no coupling regressions or blocking issues, but 1 advisory finding(s) below merit a look before merge.
Graphify review — findings
This PR removes the per-guild feature toggle route (/api/guilds/:id/features) and its associated RBAC guard registration from the backend routes setup. The corresponding unit test assertions for that route's guard are also removed, and the docs are updated to reflect that only global/authenticated read-only feature listings exist (/api/toggles/global, /api/features) with no per-server feature-toggle API. The changes span backend routing config, its unit tests, and the WEBAPP_SETUP documentation. The touched surface is the feature-toggle section of the API.
Worth a look
- Per-guild features endpoint loses auth/module guard —
packages/backend/src/routes/index.ts:64· Escalate · high- agreed by 2 of 2 members but NOT verified (no proof, no reproducing execution) — consensus is not a verdict; needs human review Execution auto-disposal is off for this run; enable it (with sandbox isolation) to have Graphify try to confirm or refute this automatically.
Analysis details — impact, health, verification
Impact & health
Graphify review
Impact — 81 functions depend on the 77 functions this change touches.
Health — this change adds coupling hotspots:
- new:
setupRoutes()— 3 callers, 13 callees - new:
bootstrapBackend()— 2 callers, 8 callees
Verification — 81 functions in the blast radius were not formally verified this run (proofs are advisory here).
Gate & verification
graphify gate
PASS — objectively clean (no health regressions, tests not run — proofs not run this pass (advisory)). Grounded, not self-assessed.
Advisory (not blocking):
- verification_scope: 79 function(s) in the blast radius were not formally verified this run
· 2 more finding(s) on lines outside this diff (see the check run).
|
🤖 I have created a release *beep* *boop* --- <details><summary>2.39.5</summary> ## [2.39.5](v2.39.4...v2.39.5) (2026-08-19) ### Bug Fixes * **bot:** support yt-dlp cookies file to dodge YouTube 403 ([#2036](#2036)) ([2ec1868](2ec1868)) * **deps:** override deepmerge-ts to 8.0.1 to close security gate ([#2038](#2038)) ([04a7f85](04a7f85)) * drop dead guild-guard entry for nonexistent features route ([#2030](#2030)) ([522139c](522139c)) * unblock ioredis/bullmq bumps by deduping stale lockfile ([#2033](#2033)) ([0c6cb0d](0c6cb0d)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).



Summary
app.use()guard on a path nothing registers just never fires), but paired with a stale `WEBAPP_SETUP.md` documenting per-server toggle endpoints that don't exist.Changes
Test plan
Fixes #2029
Summary by cubic
Removes the orphaned guild guard for
/api/guilds/:id/featuresand updates docs to reflect the actual global feature-toggle API. Old behavior: guard registered for a route that doesn’t exist. New behavior: guard removed, docs corrected; no runtime behavior change.guildGuardConfigsinpackages/backend/src/routes/index.ts.docs/WEBAPP_SETUP.mdto remove per-guild toggles and document/api/toggles/globaland/api/features(authenticated, read-only).packages/backend/tests/unit/routes/index.test.tsthat locked in the orphaned guard.Written for commit da10c11. Summary will update on new commits.