Skip to content

Release: v0.4.0 - #188

Merged
themightychris merged 10 commits into
mainfrom
develop
Sep 18, 2026
Merged

themightychris merged 10 commits into
mainfrom
develop

Conversation

@github-actions

@github-actions github-actions Bot commented Sep 18, 2026

Copy link
Copy Markdown

Staff get a members roster at /admin/members: newest signups first, each member's footprint on the site, and Spam / Not spam votes that hide the member immediately and are final for the offline spam pipeline.

Improvements

themightychris and others added 10 commits September 18, 2026 14:30
Staff get one place to see who joined and what they have done on the
site, and to record a human verdict the offline pipeline treats as
final. Human votes live on published as person-evaluations records
authored by the voter; a spam vote deactivates immediately. Machine
evaluations and Slack-derived inputs move to a private repo, so the
public data repo never carries message text or LLM prose about people.
Also records that heuristic records have no confidence and must be
LLM-confirmed before they can prune.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LFyA5poHwrhAktrnsKrUiQ
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LFyA5poHwrhAktrnsKrUiQ
…Method

gitsheets 2.x rejects ':' in a path component, so the May-era
`human:<slug>` naming cannot be written. Also drop `lastLoginMethod`
from the roster row — session metadata records when a session was
issued, not how.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LFyA5poHwrhAktrnsKrUiQ
Register the sheet, keep the records in InMemoryState keyed
personSlug/evaluator with a per-person index, apply them through
StateApply, and declare the config in every test fixture — gitsheets'
openStore is strict about validators whose config is missing.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LFyA5poHwrhAktrnsKrUiQ
GET /api/admin/members (newest first, filters, staff-visible email and
last sign-in, footprint counts, latest vote), GET /api/admin/members/:slug
(full footprint + vote history), POST /api/admin/members/:slug/vote. A
spam vote deactivates in the same transaction; a legit vote reactivates
only when it reverses a prior spam vote. Every endpoint 404s to
non-staff. Votes commit as the voter.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LFyA5poHwrhAktrnsKrUiQ
…ns repo

--evaluations-repo points at the private codeforphilly-spam-detection
clone; --human-votes-ref (default: the pruned branch) supplies staff
votes from the data repo. The latest human vote is final and a human
spam vote bypasses the project-membership protection. The operations
doc now describes the two-repo layout and the mandatory
`evaluate-llm --filter spam` confirmation step.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LFyA5poHwrhAktrnsKrUiQ
Staff-only page: newest signups first, search and vote/sort filters,
expandable footprint and vote history, Spam / Not spam buttons with an
optional reasoning note. Linked from the user menu for staff.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LFyA5poHwrhAktrnsKrUiQ
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LFyA5poHwrhAktrnsKrUiQ
feat: admin members roster with human spam votes
@github-actions

Copy link
Copy Markdown
Author

Changelog

- feat: admin members roster with human spam votes [#187] @themightychris

@themightychris themightychris changed the title Release: v0.3.1 Release: v0.4.0 Sep 18, 2026
@themightychris
themightychris merged commit 2caab7f into main Sep 18, 2026
5 of 6 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