Skip to content

Reword the moderation rules as statements, not decisions - #1508

Merged
jboolean merged 3 commits into
masterfrom
ai-moderation-rule-wording
Sep 22, 2026
Merged

jboolean merged 3 commits into
masterfrom
ai-moderation-rule-wording

Conversation

@jboolean

Copy link
Copy Markdown
Owner

What this does

Each moderation rule now says what is true of a submission ("this submission is an advertisement") instead of what to do about it ("this submission should be rejected because it is an advertisement"). Approve and reject are this app's concepts, not the model's. Within each rule, all the true cases come before all the false cases instead of alternating.

Lowers MIN_REJECT_PROBABILITY from 0.375 to 0.3 to match the new scores. On a balanced 300-story sample this auto-publishes 127 of 150 human-approved stories, up from 112, while letting through the same number of stories a human rejected. Scores are flat from 0.26 to 0.42, so the exact threshold is not load-bearing.

The admin flag badge threshold is unchanged at 0.5. It flags 147 of 300 stories at 88% precision, against 144 at 91% before.

Experiment tool

moderation-experiment/rules.ts gets the same rule text, since it is a hand-synced copy of the production file. Its README gains a section on how to word a rule.

🤖 Generated with Claude Code

Each rule now says what is true of a submission ("this submission is an
advertisement") instead of what to do about it ("this submission should be
rejected because..."). Approve and reject are this app's concepts, not the
model's. Within each rule, all the true cases come before all the false
cases rather than alternating.

Lowers MIN_REJECT_PROBABILITY from 0.375 to 0.3 to match the new scores.
On a balanced 300-story sample this auto-publishes 127 of 150
human-approved stories, up from 112, while letting through the same number
of stories a human rejected. The admin flag badge threshold is unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Comment thread backend/moderation-experiment/README.md Outdated

Both backends use the official [`@openrouter/sdk`](https://www.npmjs.com/package/@openrouter/sdk) package, not raw HTTP calls, so requests and responses are typed and validated.

## How to word a rule

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is obvious. Just describe the tooling, remove this useless section.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 099dc2b.

Comment thread backend/moderation-experiment/README.md Outdated

Within a rule, put every case that makes it true first, then every case that makes it false. Do not alternate.

Both conventions were measured against 300 real stories. Together they took the auto-approve rate from 112 of 150 to 127 of 150 at the same rate of letting bad stories through.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please STOP PUTTING INTERMEDIATE STATE AND HISTORIC NONSENSE IN PERMANENT CODE ARTIFACTS.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 099dc2b.

criteria: { true: string; false: string };
}

/**

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove ai slop comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 099dc2b.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correction: my earlier reply here was wrong, 099dc2b only trimmed this block. Removed it in beb2167. The sync note now lives only in the experiment README.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@jboolean
jboolean merged commit 642075e into master Sep 22, 2026
12 checks passed
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