Repository navigation
Release: v0.12.0 - #263
Open
github-actions[bot] wants to merge 24 commits into
Open
Release: v0.12.0#263github-actions[bot] wants to merge 24 commits into
github-actions[bot] wants to merge 24 commits into
Conversation
An AI agent can hold a narrow grant to read the moderation roster and cast spam or not-spam votes. Its votes are labeled agent-<slug>, stage for three days, and any staff vote overrules them. Proposal for review; nothing is implemented. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
The operator's policy: purge at once when an account posts spam, vote when a signup only looks like spam. Adds a separate purge scope with API-enforced preconditions, a public spam-purges record that blocks the same GitHub account from signing straight back in, and a fix so a purged account's votes no longer attach to a new account under the same slug. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
…scrub rule Three corrections found while building: the PrivateProfile schema requires an email, the purge log needs a resolved actor beside the stored string, and the scrubbed snapshot must pseudonymize the new slug fields. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
A vote dated before the person's createdAt was cast on an earlier account with the same slug. It no longer counts in the roster, the reversal rule, the sweep or prune-spam. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
Schemas, evaluator kinds, sheet configs and contracts for agent grants and the spam purge log, plus the private store for token hashes. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
An agent authenticates with a cfpa_ token checked against a stored hash and is anonymous outside its scopes. Administrators create, mint and revoke grants. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
Agent spam votes stage a member for the three-day sweep while the grant is active. Human votes are final. Staff can withdraw all of an agent's votes. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
POST /api/admin/members/:slug/purge with reason, flags, evidence and dryRun. Every precondition is enforced in the API, one commit per purge. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
A purged spammer's GitHub id is refused at sign-up and account linking until staff unblock it. The sweep and staff purges write the same record. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
…gn-in Roster badges and filter, the Agents panel with grants and the purge log, the week-long banner, and the messages a blocked sign-in sees. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
How an administrator creates an agent and mints a grant, and how to restore a member purged by mistake. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
Votes after a purge of the slug, retired slugs, atomic checks, claims, revoke with withdraw, URL and evidence rules. From an independent review of the implementation. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
Votes at or before a purge of the slug do not count for a different person. Renames onto a slug with moderation history, and renames of agent accounts, are refused. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
…ore lock State was applied after the write lock was released, so concurrent purges could pass the daily cap or race a staff vote. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
A GitHub user with a matching login was offered the agent account as a claim candidate. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
An agent created without a grant was an ordinary user. Revoking a compromised token can now withdraw its staged votes in the same commit. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
Bare and defanged domains are refused in agent reasons and vote reasoning. A malformed evidence identifier is a 422, not a 500. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
Concurrent lastUsedAt writes shared one temp path and could fail or drop a new hash. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
Matches the adoption proposed on the data repo's empty branch (codeforphilly-data PR 21). The drift check passes once that merges. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
The revert stops on a conflict after an unblock, the clone must be pulled first, the purge commit is found by its Purge-Id, and Not spam must land before the next sweep. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
…ed purges Two assertions the plan's validation list named but no test made. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
Sixteen of seventeen validation boxes verified. The contract box closes when the release adopts the two sheets on the published branch. Co-Authored-By: Claude Fable 5.2 <[email protected]> Claude-Session: https://claude.ai/code/session_01S8dthiZS2vwh674eh2DDQs
feat(moderation): agent accounts that vote on and purge spam
Author
Changelog- feat(moderation): agent accounts that vote on and purge spam [#262] @codeforphilly-bot |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Improvements
Technical