Skip to content

Flag#action! / Flag#dismiss! β€” close sugar, incl. dismissing flags for superseded content#4

Merged
rameerez merged 1 commit into
mainfrom
feature/flag-close-sugar
Jul 10, 2026
Merged

Flag#action! / Flag#dismiss! β€” close sugar, incl. dismissing flags for superseded content#4
rameerez merged 1 commit into
mainfrom
feature/flag-close-sugar

Conversation

@rameerez

Copy link
Copy Markdown
Owner

Reports have resolve!/dismiss! model sugar; Flags made hosts hand-write status/reviewed_by/resolution_note/reviewed_at updates.

Found while fixing a real host bug (CarHey): an AI avatar-quality adapter files :flag-mode flags; the user then replaces the photo; the still-pending flag keeps flagged? true forever β€” gluing a "pending review" banner onto the NEW, good photo. The missing affordance: a first-class way to close a flag whose content no longer exists.

  • action!(note:, by: nil) β€” closed as actioned (someone took action on the content)
  • dismiss!(note:, by: nil) β€” closed, no action; the canonical automated use is superseded content (text edited, photo replaced/reverted)
  • by: defaults to nil so automated closes don't fake a human reviewer β€” DSA statements of reasons read these rows
  • shared close! goes through update! on purpose: the resolution_note-presence validation is exactly the guard that every closed flag explains itself

Tests: 3 new (reviewer/note/timestamp stamping, nil-reviewer automated close releasing flagged?, note-less close refused). Full suite 205 runs green.

Sibling of #3 (async adapters) β€” independent, either merges first.

πŸ€– Generated with Claude Code

https://claude.ai/code/session_01UMa8bEvYfi9Dr8RYhhfKze

…t be dismissable

Reports had resolve!/dismiss! model sugar; Flags forced hosts to hand-write
status/reviewed_by/resolution_note/reviewed_at updates. Found while fixing a
real host bug (CarHey): an AI avatar-quality adapter files :flag-mode flags,
the user replaces the photo, and the still-pending flag keeps flagged? true
forever β€” gluing a 'pending review' banner (worse: an offensive-material
banner) onto the NEW, good photo. The missing affordance was a first-class
way to close a flag whose content no longer exists.

- action!(note:, by: nil) β€” closed as actioned (someone took action)
- dismiss!(note:, by: nil) β€” closed with no action; canonical automated use
  is superseded content
- by: defaults to nil so automated closes don't fake a human reviewer (DSA
  statements of reasons read these rows)
- shared close! uses update! on purpose: the resolution_note-presence
  validation is the guard that every closed flag explains itself

205 tests green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UMa8bEvYfi9Dr8RYhhfKze
@rameerez
rameerez merged commit 8f220ef into main Jul 10, 2026
14 of 15 checks passed
@rameerez
rameerez deleted the feature/flag-close-sugar branch July 10, 2026 18:42
rameerez added a commit that referenced this pull request Jul 10, 2026
CHANGELOG: fold the since-beta1 deltas (#3 async-adapter routing fix + Active
Storage attachment filtering, #4 Flag close sugar) into a proper
[1.0.0.beta2] section; bump Moderate::VERSION.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UMa8bEvYfi9Dr8RYhhfKze
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant