docs(subgroups): the dialect catalogue is in the tree now, so cite it again
Some checks failed
Material Design conformance / budgets (push) Has been cancelled
Material Design conformance / tests (push) Has been cancelled

Written while the catalogue was on an unmerged branch, so three citations were
replaced with the reasoning stated directly. It landed on mantra during the
build and the merge brought it in, so `DialectScaffold`, `AfricanLanguages` and
docs/african-dialect-catalogue.md are all here.

The restated reasoning stays rather than turning back into links -- a plan that
explains its own rule survives the file it borrowed it from being moved -- but
two cross-references are worth having. `DialectScaffold` is the closest thing in
the tree to `SubgroupOrigin`, and `DialectScaffold.pendingIn` is Phase 7's
`ceremoniesFor` solving the same race one layer up: read what is already in
flight, so two admins looking at the same screen do not propose the same thing
twice. Eighty dialects there, two rooms for one project here.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Kgothatso Ngako
2026-10-03 03:35:38 +02:00
parent b8d08ebf64
commit 2f542408c9

View File

@@ -32,11 +32,22 @@ differently the table says so, and it did so seven times worth reading:
| the empty-dialect test deletes the rows | neither DAO has a `@Delete`, and adding one for a test is a schema surface nobody asked for. It seeds a third dialect with nothing in it, which is also the truer fixture — a room defines a dialect before it has anything in it | | the empty-dialect test deletes the rows | neither DAO has a `@Delete`, and adding one for a test is a schema surface nobody asked for. It seeds a third dialect with nothing in it, which is also the truer fixture — a room defines a dialect before it has anything in it |
One more worth stating because it was a *drafting* error rather than a design One more worth stating because it was a *drafting* error rather than a design
one. The first draft of this plan cited `DialectScaffold`, `AfricanLanguages` and one, and because it resolved itself. The first draft cited `DialectScaffold`,
`docs/african-dialect-catalogue.md` as precedent. None of them are in this tree — `AfricanLanguages` and [african-dialect-catalogue.md](./african-dialect-catalogue.md)
that work is on `claude/african-dialect-convenience-de2f69`, unmerged — so the as precedent; at the time none of them were in the tree, so the citations were
identity rule is now stated from the schema rather than cited, and Phase 1's replaced with the reasoning stated directly. The dialect catalogue landed on
parallel is `TranslationScaffold` and `ChapterScaffolding`, which do exist here. `mantra` while this was being built, so all three are here now and the
cross-references below are real again — but the restated reasoning is kept
rather than turned back into links, because a plan that explains its own rule
survives the file it borrowed it from being moved.
Two of them are worth following. `DialectScaffold` is the closest thing in the
tree to Phase 1's `SubgroupOrigin`: pure, in `managers/`, derived from the rows
rather than beside them. And `DialectScaffold.pendingIn` is Phase 7's
`ceremoniesFor` solving the same problem one layer up — it reads the proposals
already in flight so two admins looking at the same list do not propose the same
forty dialects twice. The subgroup version of that race is two rooms for one
project instead of eighty dialects, which is rarer and more expensive.
## What the four have in common ## What the four have in common
@@ -237,8 +248,8 @@ object SubgroupOrigin {
} }
``` ```
Parallel to `TranslationScaffold` and `ChapterScaffolding`: `managers/`, pure, Parallel to `DialectScaffold`, `TranslationScaffold` and `ChapterScaffolding`:
tested in `commonTest`. `name` is trimmed and handed over bare — the `#` is added `managers/`, pure, tested in `commonTest`. `name` is trimmed and handed over bare — the `#` is added
by `MarmotGroupName.of` where the name is used, twice, idempotently, exactly as by `MarmotGroupName.of` where the name is used, twice, idempotently, exactly as
the typed name is today. the typed name is today.
@@ -492,7 +503,9 @@ ceremonies for it:
reads the same list. A subgroup whose room this device does not hold still reads the same list. A subgroup whose room this device does not hold still
shows, because `Subgroup.room` is already nullable and already drawn that way. shows, because `Subgroup.room` is already nullable and already drawn that way.
- **In flight.** `DkgSession` rows in that room with that origin whose stage is - **In flight.** `DkgSession` rows in that room with that origin whose stage is
neither `FAILED` nor `COMPLETE`. Two admins both open the project's screen, neither `FAILED` nor `COMPLETE`. The same move `DialectScaffold.pendingIn`
makes for the dialect catalogue, and for the same reason. Two admins both open
the project's screen,
both see no room, and the group gets two ceremonies and two rooms for one both see no room, and the group gets two ceremonies and two rooms for one
project — a race this feature would hit on first use, because the screen that project — a race this feature would hit on first use, because the screen that
invites the act is the screen that cannot see the act in progress. Making the invites the act is the screen that cannot see the act in progress. Making the