docs(modules): core offers a contribution, never a slot name — and phase 11 as built #165

Merged
whitlocktech merged 1 commits from docs/teams-slot-contributions into edge 2026-08-19 06:18:58 +00:00
Member

The contract half of RunicGateway/website#160 and RunicGateway/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 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 §5.2 checker masks by construction.

What changed

  • §3.7a 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. fillModuleSlotofferCoreFill.
  • §1.1's 1.6.0 note records the amendment and why it is not a 1.7.0.
  • TEAMS.md's two accounts of the inversion — Part 3's supersession note and the phase 3 amendment — say the same thing.
  • The UI kit's count: §3.4 and §3.7a said eight. Slot made it nine in phase 3.
  • TEAMS.md Phase 11, as built — the four notes: what the kit found, the org lead's two decisions of 2026-08-19, the live-rig walk, and that phase 10's cancellation leaves this the last phase.

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>/members answered projected: true, and the template's clan page rendered core's activity feed and forum in the slots a module whose id is not uo declared. module-uo's guild page was walked on the same core and is unchanged.

It also found the one defect no test could see: PageHeader takes lead, not subtitle, and React drops an unknown prop in silence.

AI disclosure

Written with Claude Code (Opus 5). Commits carry the Co-Authored-By trailer.

The contract half of `RunicGateway/website#160` and `RunicGateway/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 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 §5.2 checker masks by construction. ### What changed - **§3.7a** 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. `fillModuleSlot` → `offerCoreFill`. - **§1.1's 1.6.0 note** records the amendment and why it is not a 1.7.0. - **TEAMS.md**'s two accounts of the inversion — Part 3's supersession note and the phase 3 amendment — say the same thing. - **The UI kit's count**: §3.4 and §3.7a said eight. `Slot` made it nine in phase 3. - **TEAMS.md Phase 11, as built** — the four notes: what the kit found, the org lead's two decisions of 2026-08-19, the live-rig walk, and that phase 10's cancellation leaves this the last phase. ### 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>/members` answered `projected: true`, and the template's clan page rendered core's activity feed and forum in the slots **a module whose id is not `uo`** declared. `module-uo`'s guild page was walked on the same core and is unchanged. It also found the one defect no test could see: `PageHeader` takes `lead`, not `subtitle`, and React drops an unknown prop in silence. ### AI disclosure Written with Claude Code (Opus 5). Commits carry the `Co-Authored-By` trailer.
wtclaude added 1 commit 2026-08-19 06:17:58 +00:00
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>
whitlocktech merged commit f1fb2d40b4 into edge 2026-08-19 06:18:58 +00:00
whitlocktech deleted branch docs/teams-slot-contributions 2026-08-19 06:18:59 +00:00
wtclaude changed title from docs(modules): core offers a contribution, never a slot name to docs(modules): core offers a contribution, never a slot name — and phase 11 as built 2026-08-19 06:32:10 +00:00
Sign in to join this conversation.
No description provided.