Port of quentinwolf/flair_helper2 · Python+PRAW · GPL-3.0 · written permission on file
eligibility verifiedhost sub ≥500 WAUshadow-mode ON
Why you probably shouldn't install this yet
A reluctant-adopter intro. We'd rather you bounce now than auto-remove 400 posts on Tuesday and rage-quit Devvit. Read these four failure modes first — they describe what this port can still get wrong on your sub.
FAILURE MODE 01
Flair-rule drift
If your flairs were renamed in the last 90 days, rules silently match the wrong flair. Shadow mode catches this before any post is removed. Promote per-rule only after the dry-run report is clean.
FAILURE MODE 02
Cascading removal loops
Combining remove + comment on the same flair can re-trigger a sticky reply chain. The legacy bot had this bug in 2022. Devvit triggers fire once per event, but cross-rule cascades are still possible — review the action graph.
FAILURE MODE 03
Mod-override blindness
If your mod team frequently undoes the legacy bot's actions, this port will repeat those mistakes until you tune thresholds. The FP counter below shows how often that happened in the last 90 days. Don't promote any rule above its tolerance.
FAILURE MODE 04
Devvit trigger SLA tail latency
Sub-second p50, but tail latency on PostSubmit can exceed 4s during Reddit incidents. Time-sensitive rules (lock-on-flair within N seconds) may fire late. Don't migrate rules that depend on hard real-time.
You promote rules to live one at a time. There is no "enable all" button.
Honest comparison: legacy Flair_Helper2 (PRAW) vs. this Devvit port vs. AutoModerator
We're not pretending the port is strictly better. Two columns where AutoMod or the legacy bot still win.
Per-action rollback (preview — appears once a rule is promoted to live)
30-day token · auto-expires
Verb
Live action taken
Token
Expires
Action
lock
flair=resolved · post t3_1k8a… · by R-07
rb_8f31…
in 29d 23h
sticky
flair=megathread · post t3_1k8b… · by R-02
rb_2d04…
in 29d 21h
Where this port is honestly weaker than the original
No raw HTTP escape hatch. Devvit sandboxes outbound calls; if your legacy rules POST to an external classifier, drop those rules or wait for Devvit's HTTP allow-list.
Toolbox usernotes one-way at submission. We write notes Toolbox can read, but we don't yet sync notes Toolbox writes back. Mod teams who rely on Toolbox-first workflows will see a gap.
YAML directive renames.action: → verb:, flair_text: → match.flair.text:, mod_note: → usernote.body:. Migration script provided, but review the diff line-by-line.
No backfill. Rules apply to events from install time forward. The legacy bot's --rerun flag is not ported, by design — backfill on a freshly-promoted rule is exactly how silent mass-removes happen.
GPL-3.0 licenseOriginal repo license preserved in the port. Source-available, audit-friendly, MIT-incompatible by intent.
Written permissionFrom u/quentinwolf, on file with hackathon submission. Eligibility receipt #FH2-2026-05.
≥500 WAU host sub14.3K WAU · 7-day mod-team review window before any rule promotes from shadow to live.
Action ledger is publicEvery promoted action posts to a mod-only sticky thread with the rollback token. Nothing is silent.