docs(teams): use the correct presentation of the project name, and match both forms #152

Merged
whitlocktech merged 1 commits from docs/teams-name-presentation into main 2026-08-17 10:07:24 +00:00
Member

What & why

Follow-up to #151, which merged while this fix was being written — so it landed with the wrong
presentation of the project name in three places, one of them the upload warning text an operator will
actually read.

"Runic Gateway" (two words) is the correct presentation. "RunicGateway" is accepted only where
the name has to condense to a single token — the Gitea org, a package name, a URL segment. The three
prose uses in website/TEAMS.md had the condensed form for no reason:

Line Where
469 §2.5 path 3 — "a grant may name any Runic Gateway account"
508 §2.6 identity-chain diagram (column alignment preserved)
1178 §5.5.5 — the upload warning text, i.e. operator-facing copy

The RunicGateway/<repo> slugs throughout android/PLAN.md are condensed by necessity and are
deliberately untouched.

This turned out to be more than presentation

The reserved-name matcher (§2.8) exists to stop a player naming a guild something that impersonates
staff or the project. It specified whole-word matching over a normalisation that case-folds, strips
punctuation and collapses whitespace.

Under exactly that rule, RunicGateway is a single word and would never have matched the two-word
term Runic Gateway
— so the check would have missed the form an impersonator is most likely to
type, precisely because it is what the org and every URL already use. The check would have looked
correct, passed review, and had a hole in the one input it was written for.

Fix: a term containing whitespace is additionally compared with whitespace removed on both sides,
so Runic Gateway matches RunicGateway, runic-gateway, Runic_Gateway and RUNIC GATEWAY alike.

The widening applies only to terms that contain whitespace, which keeps it clear of the single-word
terms where whole-word matching is doing the false-positive work — admin is still compared as a word
and still does not fire on "Badminton". A two-word term is specific enough that running its letters
together cannot collide with ordinary vocabulary.

Listing the condensed form as a second reserved term was the alternative and was rejected: it is another
thing to keep in sync, and it would still miss the hyphenated and underscored variants.

The same reasoning is noted for a deployment's own BRAND_NAME, which is free text and may well be
spaced — an operator's condensed brand is just as impersonable.

How it was tested

Documentation only — no code, no schema, no routes.

  • Every RunicGateway occurrence in both files enumerated and classified as prose (fixed) or a
    required single-token slug (left alone); re-grepped after, and the only remaining occurrences in
    TEAMS.md are the three that are discussing the condensed form.
  • ASCII column alignment in the §2.6 diagram verified by hand after the substitution — "Runic Gateway
    account" is one character longer, so the trailing padding was reduced to match.

Checklist

  • I have read CONTRIBUTING.md.
  • The change builds and existing tests/checks pass locally. (docs-only; nothing to build)
  • I have added or updated tests/docs where it makes sense. (this PR is the doc)
  • My commits are reasonably scoped with clear messages.

AI-assisted contributions (required)

  • No AI tools were used to produce this contribution.
  • AI tools were used. Tool(s): Claude Code (Opus 5). I have reviewed and understand
    every change, and take responsibility for it. AI-authored commits are
    marked with a Co-Authored-By / Assisted-By trailer.

License

  • I agree that my contribution is licensed under this project's license
    (GNU GPL v3.0 or later), and I have the right to contribute it.

🤖 Generated with Claude Code

https://claude.ai/code/session_01WnDSWzpUjw8t8C2hghysNz

## What & why Follow-up to **#151**, which merged while this fix was being written — so it landed with the wrong presentation of the project name in three places, one of them the upload warning text an operator will actually read. **"Runic Gateway"** (two words) is the correct presentation. **"RunicGateway"** is accepted only where the name has to condense to a single token — the Gitea org, a package name, a URL segment. The three prose uses in `website/TEAMS.md` had the condensed form for no reason: | Line | Where | |---|---| | 469 | §2.5 path 3 — "a grant may name **any** Runic Gateway account" | | 508 | §2.6 identity-chain diagram (column alignment preserved) | | 1178 | **§5.5.5 — the upload warning text**, i.e. operator-facing copy | The `RunicGateway/<repo>` slugs throughout `android/PLAN.md` are condensed by necessity and are deliberately untouched. ### This turned out to be more than presentation The reserved-name matcher (§2.8) exists to stop a player naming a guild something that impersonates staff or the project. It specified **whole-word** matching over a normalisation that case-folds, strips punctuation and collapses whitespace. Under exactly that rule, **`RunicGateway` is a single word and would never have matched the two-word term `Runic Gateway`** — so the check would have missed the form an impersonator is most likely to type, precisely *because* it is what the org and every URL already use. The check would have looked correct, passed review, and had a hole in the one input it was written for. **Fix:** a term containing whitespace is additionally compared with whitespace removed on both sides, so `Runic Gateway` matches `RunicGateway`, `runic-gateway`, `Runic_Gateway` and `RUNIC GATEWAY` alike. The widening applies **only to terms that contain whitespace**, which keeps it clear of the single-word terms where whole-word matching is doing the false-positive work — `admin` is still compared as a word and still does not fire on "Badminton". A two-word term is specific enough that running its letters together cannot collide with ordinary vocabulary. Listing the condensed form as a second reserved term was the alternative and was rejected: it is another thing to keep in sync, and it would still miss the hyphenated and underscored variants. The same reasoning is noted for a deployment's own `BRAND_NAME`, which is free text and may well be spaced — an operator's condensed brand is just as impersonable. ## How it was tested Documentation only — no code, no schema, no routes. - Every `RunicGateway` occurrence in both files enumerated and classified as prose (fixed) or a required single-token slug (left alone); re-grepped after, and the only remaining occurrences in `TEAMS.md` are the three that are *discussing* the condensed form. - ASCII column alignment in the §2.6 diagram verified by hand after the substitution — "Runic Gateway account" is one character longer, so the trailing padding was reduced to match. ## Checklist - [x] I have read [CONTRIBUTING.md](CONTRIBUTING.md). - [x] The change builds and existing tests/checks pass locally. *(docs-only; nothing to build)* - [x] I have added or updated tests/docs where it makes sense. *(this PR is the doc)* - [x] My commits are reasonably scoped with clear messages. ## AI-assisted contributions (required) - [ ] No AI tools were used to produce this contribution. - [x] AI tools were used. Tool(s): `Claude Code (Opus 5)`. I have reviewed and understand every change, and take responsibility for it. AI-authored commits are marked with a `Co-Authored-By` / `Assisted-By` trailer. ## License - [x] I agree that my contribution is licensed under this project's license (**GNU GPL v3.0 or later**), and I have the right to contribute it. --- 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01WnDSWzpUjw8t8C2hghysNz
wtclaude added 1 commit 2026-08-17 10:05:55 +00:00
"Runic Gateway" (two words) is the correct presentation; "RunicGateway" is
accepted only where the name has to condense to a single token — the Gitea org,
a package name, a URL segment. Three prose uses in TEAMS.md had the condensed
form for no reason, including the upload warning text, and are corrected. The
`RunicGateway/<repo>` slugs throughout android/PLAN.md are condensed by
necessity and are left alone.

This turned out to matter beyond presentation. The reserved-name matcher (2.8)
specified whole-word matching over a normalisation that case-folds, strips
punctuation and collapses whitespace — under which "RunicGateway" is a SINGLE
word and would never have matched the two-word term "Runic Gateway". The
condensed form is the one an impersonator reaches for, precisely because it is
what the org and every URL already use, so the check would have missed its most
likely input.

Multi-word terms are now additionally compared with whitespace removed on both
sides, so `Runic Gateway` matches `RunicGateway`, `runic-gateway`, `Runic_Gateway`
and `RUNIC GATEWAY` alike. The widening applies only to terms CONTAINING
whitespace, which keeps it clear of the single-word terms where whole-word
matching is doing the false-positive work: `admin` is still compared as a word
and still does not fire on "Badminton". Listing the condensed form as a separate
reserved term was the alternative and was rejected — it is a second thing to keep
in sync and would still miss the hyphenated and underscored variants.

The same reasoning applies to a deployment's own BRAND_NAME, which is free text
and may well be spaced.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WnDSWzpUjw8t8C2hghysNz
whitlocktech merged commit 3bfa309a40 into main 2026-08-17 10:07:24 +00:00
whitlocktech deleted branch docs/teams-name-presentation 2026-08-17 10:07:25 +00:00
Sign in to join this conversation.
No description provided.