| @@ -21,6 +21,44 @@ Names are never reused: because the account row outlives retirement, retiring |
| 21 |
21 |
someone keeps their name attached to them. An old reference can never silently |
| 22 |
22 |
point at a different person. |
| 23 |
23 |
|
|
24 |
## Profiles and the user directory |
|
25 |
|
|
26 |
Account names are public on an instance. `/u` lists everyone who has an account, |
|
27 |
and `/u/<name>` is that person's profile: what they have opened, reviewed and |
|
28 |
commented on, and the repositories that work is in. Retiring an account keeps its |
|
29 |
page, marked as no longer active, because every closed issue and merged change |
|
30 |
still refers to the name. |
|
31 |
|
|
32 |
The directory is a table of every account and its visible counts. Search it by |
|
33 |
name, narrow it to active or retired accounts, and order it from a column header |
|
34 |
— by name, repositories, issues, changes, reviews or joining date. The search, the |
|
35 |
filter, the order and the page are all in the URL, so a view can be linked and |
|
36 |
paging cannot change the question. |
|
37 |
|
|
38 |
What a profile counts is not public. Every number and every event is limited to |
|
39 |
the repositories the reader may open, so two people can see different totals for |
|
40 |
the same account, and a private repository's work contributes nothing to a |
|
41 |
stranger's view. The page says what its numbers cover instead of pretending they |
|
42 |
are the whole history. The same rule covers the counts beside a name in the |
|
43 |
directory. |
|
44 |
|
|
45 |
A profile is derived, not stored. The numbers and the feed are read from the web |
|
46 |
index (`data/index.db`), which is rebuilt from Git and from the CI records; no |
|
47 |
profile is written to `data/users.db`. Keys, passkeys, sessions and a person's |
|
48 |
instance role are not shown, with one exception: an instance admin sees the role |
|
49 |
on the profile, because they can already see it on the admin pages. Git commit |
|
50 |
authors are shown as text and never counted, because a commit's author is a name |
|
51 |
someone typed, not the credential that proves an account. |
|
52 |
|
|
53 |
Writing `@name` in an issue, a comment, a change request, or a release note links |
|
54 |
to that account's profile. It is the same mention syntax a workflow's `mentioned` |
|
55 |
filter evaluates ([Workflows](workflows.md)), so a name that reads as an address |
|
56 |
on the page is the name a job sees. A name that does not belong to an account |
|
57 |
stays plain text, and a mention inside a code sample is not a mention. |
|
58 |
|
|
59 |
Both pages ask crawlers to leave them out of an index. The names are public; a |
|
60 |
scraped roster is not what public has to mean. |
|
61 |
|
| 24 |
62 |
Account data lives in `data/users.db`. It also holds passkeys, one-time |
| 25 |
63 |
enrollment links, browser sessions, repository access rules, and file locks. |
| 26 |
64 |
Credentials are public keys, and session or enrollment-link tokens are stored |