A person’s name appears all over the forge — as an issue author, a comment
author, an approver, a merger, and in @name mentions — and none of it can be
clicked. There is no way to answer “who is this?” or “what has this person been
working on here?” without opening a search and guessing.
Account names are public on an instance for now. Their work is not: a private repository’s activity must not become a number an outsider can read.
Scope
GET /u/<name>: a profile with the account’s issues opened, changes opened, reviews given, comments, the repositories that work is in, and a filtered activity feed.GET /u: a directory of every account, active first, with retired accounts in their own group and a name filter.- Names link to profiles wherever they are credential-derived: issue and change
authors in lists and page headers, comment authors, event actors and
assignees.
@namein a body links too. - A
Mentionbutton copies@name, since that is how you address somebody.
Rules to hold
- Every count and every event is limited to repositories the reader may open.
- Unknown names answer with the same 404 as a missing page.
- A retired account keeps its page.
- Names that did not come from a credential do not link: Git commit authors and release taggers are a string somebody typed.
- No keys, passkeys, sessions, or per-profile view counts. The instance role is shown to instance admins only.
@namemeans the same thing to the page as to a workflow’smentionedfilter, and never matches inside a code sample or an email address.
Acceptance criteria
- An anonymous reader and an account with access to a private repository see the same profile with different totals, and neither sees the other’s rows.
- A name in an issue header, a comment, a change request, the activity feed,
and a
@namemention opens the profile the name belongs to. - A name that is not an account renders as text rather than a dead link.
- A README or code sample mentioning
@namedoes not become a profile link. - Retired accounts appear under “No longer active” in
/uand still open. -
/uand/u/<name>ask crawlers not to index them. - The full verify workflow passes.