Repository navigation
Accept impolite quotes of public local posts - #660
Conversation
Approve remote quotes of local public or unlisted originals when their policy allows everyone and neither account blocks the other. Mint stable local authorizations and preserve same-target revocation on updates. Exclude local boost wrappers from this automatic approval path. Persist local quote acceptance, counts and new notifications atomically before media processing, so failed fetches and retries retain alerts. Recount QuoteRequest targets and avoid overwriting concurrent revocation. Add federation and API regressions for policy, wire formats, delivery ordering, concurrent moderation, retries and authorization revocation. Codex implemented the change with three Claude Code design reviews. OpenCode with DeepSeek Flash, Codex and Claude Code reviewed the patch; verified Codex and Claude findings were fixed and reviewed again. Validation: mise run check and 920 tests passed, with one skipped. Live Misskey/Mastodon interoperability remains untested. Fixes fedify-dev#640 Assisted-by: Codex:gpt-6.1-sol Assisted-by: Codex:gpt-6-astra Assisted-by: Claude Code:claude-fable-5-1
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. 🧰 Additional context used📚 Code guidelines (1)No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (6)
Included review availability: This review used your included allowance. Your plan provides up to 2 included reviews per hour; 1 remain after this review. 📝 WalkthroughWalkthroughRemote quotes that meet local target visibility, policy, origin, and block checks can be accepted without a verified authorization. Persistence creates local authorization for accepted quotes, updates quote counts and notifications, and retains revoked state across updates. Inbox handling also avoids processing revoked quotes as accepted requests. ChangesRemote quote lifecycle
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Bug fix · Severity of issue fixed: Medium Sequence Diagram(s)sequenceDiagram
participant RemoteActivity
participant onPostCreated
participant persistPost
participant Database
participant createNotification
RemoteActivity->>onPostCreated: deliver remote Create
onPostCreated->>persistPost: persist quoted post
persistPost->>Database: store quote state and authorization
persistPost->>createNotification: notify local target owner of accepted quote
Merge Risk: ⚪ Minimal · up to Remote quotes of public or unlisted local posts are now accepted automatically when the author allows everyone to quote and neither account blocks the other. Revoked quotes stay revoked when the quoted post is later updated. No concrete defect is evident, and tests cover the main lifecycle cases. Live testing against Misskey and Mastodon is still pending. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to Remote quotes gain a local approval path limited to permissive, publicly visible originals, with blocking and revocation protections. No introduced vulnerability was established, but the guarantee connecting an incoming activity to its claimed author remains unconfirmed. Retained concerns Security review detailsSecurity Blast Radius
Trust Boundaries and Controls
Resilience and Maintainability Implications
Hardening Proposals
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 14 functions across 5 files. (1 skipped: 1 unsupported.)
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 |
A missing FEP-044f approval should not hide a quote that the local author's policy already permits. For public/unlisted local originals, Hollo checks the author's policy and blocks in both directions. It issues a local authorization when everyone may quote. Boost wrappers are excluded because the local account did not author the original.
Quote updates preserve revocation when the target is unchanged. Acceptance, quote counts, and new notifications are saved together before fetching media, so a failed fetch cannot lose the notification on retry.
Fixes #640.
Summary by CodeRabbit