docs(teams): phase 4 — the forum's access model, switches and image policy #157
Reference in New Issue
Block a user
No description provided.
Delete Branch "docs/teams-phase4"
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?
What & why
The docs half of Teams phase 4 — Forum 5a, alongside website#153
and Module-uo#12. Records what building the phase settled, and what it
disproved.
The structural correction
TEAMS.md §3.1 gave the forum a core page, and phase 3 deleted every core Team
page. The routes were unaffected — they are all
/playerand/admin— but theparticipant SURFACE had no home, and §5.4's route table did not notice. Settled the
way phase 3 settled the activity feed:
module-uodeclares a second place on itsguild page and core fills it, so the phase spans two repos rather than the one the
plan named.
Two slots rather than one, because a slot holds one component and the first fill
wins. The panel navigates by search param because a thread must be linkable and
core cannot mount a route on a page it does not own.
Two sanitiser findings worth not re-deriving
relhas to be on the allowlist for the transform that WRITES it to survive.sanitize-html strips any attribute not allowed — including one its own transform
just added. Without the entry every forum link shipped without
noopener,silently.
outside tags. That ordering is the security property; running it first would be
an injection point.
Also recorded
mechanism behind the dialog's promise that disabling uploads does not delete what
is already there.
GET .../grantsandGET /admin/teams/forum/settings), and the fact that the grant routes answerwhile the forum is switched off.
ship.
The other two files
BACKEND_DESIGN.mdgains the four forum tables plus the reasoning a reader of theschema alone would miss: why the guard is at the route and never at the data, why
no stored body ever contains an
<img>, whatuploadsmode hardens, and what theacknowledgement actually records.
MODULE_API.md's inverted-slot section gains the rule a module author needs — oneslot per PLACE, not one per page — with the reason: a slot holds one component,
so collapsing two would hand core the placement decision on a page the module owns.
No
MODULE_API_VERSIONchange:declareModuleSlotis unchanged and a seconddeclaration adds no member.
How it was tested
Prose only. Every claim here was written from the code that landed in the two
companion PRs, and each of the four acceptance criteria named in the phase plan is
an actual test in
website/server/test/.Checklist
AI-assisted contributions (required)
Claude Code. I have reviewed and understandevery change, and take responsibility for it. AI-authored commits are
marked with a
Co-Authored-Bytrailer.License
(GNU GPL v3.0 or later), and I have the right to contribute it.