docs(modules): core offers a contribution, never a slot name — and phase 11 as built #165
Reference in New Issue
Block a user
No description provided.
Delete Branch "docs/teams-slot-contributions"
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?
The contract half of
RunicGateway/website#160andRunicGateway/Module-uo#15, plus phase 11's "as built" record.Amends MODULE_API 1.6.0 in place — it has only ever been on
edge, the same rule the eighth and ninth members were given — and it is a correction rather than an addition.As first written, the inverted slot direction had core fill three literal
uo.guild.*names. That worked formodule-uoand silently did nothing for anyone else: a module declaringclan.detailunder its own id got an empty page and no error, because "a fill for a slot nobody declared is not an error" is exactly the rule that makes an unknown name invisible. It also put a module identifier inside core, in string literals the §5.2 checker masks by construction.What changed
declareModuleSlot(id, name, { core })and the three contributions core offers —team.activity,team.forum,team.notify— as a table, with the rules that follow from the direction: the member is optional, a slot that asks for nothing stays empty, more than one slot may ask for the same contribution, and asking for one core does not offer throws at the declaration rather than rendering empty forever.fillModuleSlot→offerCoreFill.Slotmade it nine in phase 3.The rig walk
Real MariaDB, the real loader, a browser. Core reconciled two Teams out of the template's provider on the first boot,
/public/teams/<slug>/membersansweredprojected: true, and the template's clan page rendered core's activity feed and forum in the slots a module whose id is notuodeclared.module-uo's guild page was walked on the same core and is unchanged.It also found the one defect no test could see:
PageHeadertakeslead, notsubtitle, and React drops an unknown prop in silence.AI disclosure
Written with Claude Code (Opus 5). Commits carry the
Co-Authored-Bytrailer.Amends MODULE_API 1.6.0 in place - it has only ever been on edge, the same rule the eighth and ninth members were given - and it is a correction rather than an addition. As first written, the inverted slot direction had core fill three literal uo.guild.* names. That worked for module-uo and silently did nothing for anyone else: a module declaring clan.detail under its own id got an empty page and no error, because "a fill for a slot nobody declared is not an error" is exactly the rule that makes an unknown name invisible. It also put a module identifier inside core, in string literals the Sec 5.2 checker masks by construction. Sec 3.7a now documents declareModuleSlot(id, name, { core }) and the three contributions core offers - team.activity, team.forum, team.notify - as a table, with the rules that follow from the direction: the member is optional, a slot that asks for nothing stays empty, more than one slot may ask for the same contribution, and asking for one core does not offer THROWS at the declaration rather than rendering empty forever. TEAMS.md's two accounts of the inversion (Part 3's supersession note and the phase 3 amendment) say the same thing. Also corrects the UI kit's count in Sec 3.4 and Sec 3.7a: Slot made it nine in phase 3 and three places still said eight. Found by phase 11 while writing the chapter that teaches this shape to an audience outside this org. Co-Authored-By: Claude <noreply@anthropic.com>docs(modules): core offers a contribution, never a slot nameto docs(modules): core offers a contribution, never a slot name — and phase 11 as built