Skip to content

chore(identity): one name — Cato - #894

Open
catomean wants to merge 3 commits into
mainfrom
chore/identity-cato
Open

chore(identity): one name — Cato#894
catomean wants to merge 3 commits into
mainfrom
chore/identity-cato

Conversation

@catomean

@catomean catomean commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

The retired name and a personal contact address were still in the repo, including in the documents where a name is load-bearing.

Swept

change files
Mao NakamotoCato 18 — README, CLAUDE.md, 2 blog posts, config, support page, tests, and legal/ (Privacy Policy, ToS, IP Assignment Memo + the legal-content.ts that renders them)
mao@orangecat.chhello@orangecat.ch 12
real first name in test fixtures → Cato 2

The old address is the GDPR Data Controller contact and the ToS operator contact, so it couldn't just be deleted. hello@orangecat.ch is already published on the public FAQ, making it a route known to work rather than a guess — and a role address is the better answer here than any personal one.

Deliberately NOT swept: butaeff / georgy.butaev

A first pass replaced these and had to be reverted. They are production data, not name mentions:

  • .mailmap uses them to map historical commits onto the canonical identity — rewriting the right-hand side would have broken that mapping
  • the mention and lnurl tests carry comments stating those handles are real rows

Renaming the references does not rename the rows. It points code at handles that don't exist and turns true comments into false ones. Retiring them is a data migration, not a find-and-replace — worth doing, separately, deliberately.

Also reverted from that pass: an edit to an applied migration's comment. Migrations are immutable once applied, and rewriting a bug report to name a handle that was never involved would have falsified the record. The example in username-history.ts is now a neutral legacy+handle.

🤖 Generated with Claude Code

catomean and others added 3 commits September 5, 2026 17:42
The retired name and a personal contact address were still in the repo,
including in the documents where a name is load-bearing.

- "Mao Nakamoto" -> "Cato" across 18 files: README, CLAUDE.md, two blog posts,
  config, support page, tests, and legal/ (PRIVACY_POLICY, TERMS_OF_SERVICE,
  IP_ASSIGNMENT_MEMO plus the legal-content.ts that renders them).
- mao@orangecat.ch -> hello@orangecat.ch in 12 files. The old address is the
  GDPR Data Controller contact and the ToS operator contact, so it could not
  simply be deleted; hello@ is already published on the public FAQ, which
  makes it a route known to work rather than a guess. A role address is also
  the better answer here than any personal one.
- Test fixtures using a real first name -> Cato.

**Deliberately NOT swept: the legacy handles `butaeff` and `georgy.butaev`.**
A first pass replaced them and had to be reverted. They are production data,
not name mentions: `.mailmap` uses them to map historical commits onto the
canonical identity, and the mention/lnurl tests carry comments stating those
handles are real rows. Renaming the references does not rename the rows — it
points code at handles that do not exist and turns true comments into false
ones. Retiring them is a data migration, not a find-and-replace.

Also reverted from that first pass: an edit to an applied migration's comment.
Migrations are immutable once applied, and rewriting a bug report to name a
handle that was never involved would have falsified the record. The example in
username-history.ts is now a neutral `legacy+handle` instead.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G2LBioUzJP4oBL9LeH9qAe
… name

Missed by the sweep in the previous commit, which globbed *.md/*.mdx/*.ts/*.tsx
— and .mailmap has no extension.

The effect was worse than a stale file. The raw commit author was already
correct after the git config fix, and the mailmap converted it back on display:

    raw:        Cato <41178744+catomean@users.noreply.github.com>
    mailmapped: Mao Nakamoto <41178744+catomean@users.noreply.github.com>

Every new commit would have kept arriving as Cato and kept being shown as the
old name, which is the least debuggable version of this problem — the config is
right, the commit is right, and the output is wrong.

Canonical name is now Cato, and a name+email rule was added for commits
authored as "G": those carry the canonical email already, so the email-only
rules cannot reach them.

Verified over the last 400 commits: 322 Cato, 78 dependabot, nothing else.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G2LBioUzJP4oBL9LeH9qAe
CI caught the sweep breaking a correct test, in exactly the way the butaeff
handles would have been broken had they not been reverted.

services/cat/handlers/context.ts builds the notice as

    `…and ${oldUsername}@orangecat.ch still reaches you.`

The address is derived from the handle the user is renaming AWAY from — that is
the whole point of the sentence, which promises their old Lightning address
keeps working. The sweep rewrote the test's expectation to hello@ and left the
source producing the old-handle address, so a correct implementation began
failing a now-incorrect assertion.

Fixed by neutralising the fixture rather than the assertion: the old handle is
now 'oldhandle', so the test asserts oldhandle@orangecat.ch and no retired name
appears. The behaviour under test is unchanged.

The rule this keeps proving: a literal that REFERS to the old identity is data,
not a stale reference, and a find-and-replace cannot tell the two apart.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G2LBioUzJP4oBL9LeH9qAe
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant