docs(teams): phase 5 — discussion, the edit window, and reports that route around leadership #158
Reference in New Issue
Block a user
No description provided.
Delete Branch "docs/teams-phase5"
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?
Docs half of Teams Phase 5, into
edge. Code: RunicGateway/website#155.TEAMS.md§5.4, §5.5.7 (new), §5.6 and the Part 12 phase entry;BACKEND_DESIGN.md's schema and admin route tables.The largest change is a decision, not a description
§5.6's first rule said "a leader may also see and act on reports for their own Team, but staff always receive them". Org lead settled 2026-08-18 that the leader half is decided against, not deferred: the gap the section exists to close is that leaders moderate their own forum and a Team's leaders are exactly the people who will not report their own Team — a leader-visible queue hands a complaint about a leader back to them, and a read-only leader view still tells them who reported what.
Recorded as an amendment rather than by editing the sentence away, because the reasoning for the original is what makes the correction legible.
§5.6's DDL does not work as written, and the amendment says so
With
statusin the unique key, closed rows collide with each other: dismiss a report, let the behaviour recur, dismiss the second, and theUPDATElands on a tuple that already exists — so the queue starts throwing duplicate-key errors on the first repeat reporter. The shipped table keys on a generatedopen_marker, the same encodingteam_forum_grants.active_markeruses.Left in place with the correction beside it rather than swapped out: it is the one spot in this document where the SQL and the prose next to it disagreed, and that is worth being able to find.
Three smaller departures recorded alongside:
handled_note(the API took anotethe table had nowhere to put), the two§2.10username snapshots every other Team table already has, and a real CASCADE onteam_id.New §5.5.7 —
teams_forum_edit_window_minutes0–1440, default 15, staff unbounded, and the rule under it: the window is resolved on the server twice — the read path stamps
canEdit/editableUntilso a client knows whether to draw the control, the write re-derives it fromcreated_atbefore allowing anything. The read is advice and the write is enforcement, because a time-bounded permission must not take its clock from the party it bounds. That is also why the key is not published (§5.5.6): the client needing the number is the admin screen, and the client needing the decision already has it per post.0is a legitimate operator choice (posts permanent once written), not an off switch — and the read fails closed to zero rather than to the default, which is the opposite of what it looks like it should do.§5.4 gains three notes its route table does not carry
Part 12
What the phase disproved, its four acceptance criteria, that it spans one repo where phase 4 needed two, and the single defect the live rig found. Also notes that phase 4 shipped
uploadswith the default off, so §5.6's "pull reports forward if uploads is enabled anywhere" never triggered.BACKEND_DESIGN.md
content_reportsin the schema table — with the section heading corrected, since it is deliberately not one of the eleven Team tables — the four properties worth carrying (staff-only, not-a-moderation-action, one-open-per-reporter, every transition audited including dismissals), the edit-window rule, and the two new admin routes.One gap noticed and not filled here, flagged for your call: the
/playertier has no route table in BACKEND_DESIGN.md at all, and phase 4's three admin forum routes are missing from the admin one. Both predate this phase; TEAMS.md §5.4 and the OpenAPI spec are the canonical homes for those routes today.🤖 Generated with Claude Code
https://claude.ai/code/session_01WnDSWzpUjw8t8C2hghysNz