[Hosting] Rightsholder notices and takedown: report, review, remove, and keep the record #555
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Raised by the owner on 2026-09-08 alongside the content-pack importer (#553): Quest Board will be offered as a hosted service, and people will load content they have obtained. A host needs a way for rightsholders to tell it that content infringes, a way to act on that, and a record of having done so.
What the software must provide
For the host (instance admin):
received,reviewing,actioned,rejected,counter-noticed).For a rightsholder:
For the importer (the GM or admin who loaded the content):
What the software must not do
Decide the law. The app records, hides, removes and notifies; whether a notice is valid, whether a counter-notice is accepted, and what the repeat-infringer policy is, are the operator's decisions and belong in the operator's terms, not in code. The docs should say so, and point at the mechanisms.
Data
content_notices: id, reporter (jsonb: name, organisation, contact), claim (text), targets (jsonb: pack ids, record ids, free text), status, received_at, reviewed_by, actioned_at, actions (jsonb: what was disabled or removed, with ids), notes, counter_notice (jsonb, nullable), created_at, updated_at. Admin-only in every direction.Acceptance
docs/OPERATIONS.mdgains a section on handling a notice, stating plainly what the software does and what the operator decides.Depends on #553 phase 1 (packs, records, affirmation, audit). Milestone candidate: v4.6.0 Release Readiness, since it is part of being safe to put in front of other people.
Shipped in #561 (merged as
073690d).What landed
content_noticestable (migration2d3e4f5a6b7c, raw SQL, no foreign keys so the record of why content went outlives the content).status_detailnaming the notice and quoting the affirmation version that importer accepted at import, and every action goes to the audit log with the notice id, importer and affirmation version. Removing a pack outright leaves no row to carry that message, sodocs/OPERATIONS.mdrecommends disable-then-remove.Decisions
counter-noticedkeeps the hyphen from this issue's contract; it is a stored literal, never an identifier.Follow-ups
docs/API.md→ "Rightsholder Notices").