The launch watch reports users= straight from select count(*) from users.
Most of that number is automated tests.
test-shaped | 55
other | 31
So users=86 against a baseline of 46 reads as +40 in two days. Real,
non-test signups since that baseline: 1.
Per day, excluding test-shaped usernames:
08-29 3 08-28 2 08-27 3 08-26 2 08-24 12
Test-shaped prefixes seen so far: fnsmoke, live, kt, sl, jvmt, iosm, gatecheck, fnreview, peer, demo, turnchk, probe, readback, both.
🔴 Two ways this misleads, not one
Real signups are invisible. On 08-31 a 30-minute test round created 39
accounts. One real signup inside that window would not have been noticeable in
any number the watch prints.
The devices-vs-users check would misfire. 11 accounts have no device —
exactly the "signup completed, key registration failed" shape the watch is meant
to catch, which would mean accounts that cannot message. All 11 are probes:
No real account is stranded. But the next run of that check reads as a genuine
alarm, and the run after that gets ignored.
Done when
The watch counts only non-test-shaped accounts, and says so in its output
The orphan check excludes them too
A separate test= figure, so pollution stays visible rather than hidden
⚠️ Prefix matching is a stopgap. It is guessing from names, and a real user
called livia or ktm would be excluded silently. The durable fix is for test
accounts not to be in this database at all — #9.
The launch watch reports `users=` straight from `select count(*) from users`.
Most of that number is automated tests.
```
test-shaped | 55
other | 31
```
So `users=86` against a baseline of 46 reads as +40 in two days. Real,
non-test signups since that baseline: **1**.
Per day, excluding test-shaped usernames:
```
08-29 3 08-28 2 08-27 3 08-26 2 08-24 12
```
Test-shaped prefixes seen so far: `fnsmoke`, `live`, `kt`, `sl`, `jvmt`, `iosm`,
`gatecheck`, `fnreview`, `peer`, `demo`, `turnchk`, `probe`, `readback`, `both`.
### 🔴 Two ways this misleads, not one
**Real signups are invisible.** On 08-31 a 30-minute test round created 39
accounts. One real signup inside that window would not have been noticeable in
any number the watch prints.
**The devices-vs-users check would misfire.** 11 accounts have no device —
exactly the "signup completed, key registration failed" shape the watch is meant
to catch, which would mean accounts that cannot message. All 11 are probes:
```
wren, juniper, nova, both6924583, turnchk85628399, turnchk85596630,
probe698173, readback141727, livecheck131818, fnsmoke1788140958a/b
```
No real account is stranded. But the next run of that check reads as a genuine
alarm, and the run after that gets ignored.
### Done when
- [ ] The watch counts only non-test-shaped accounts, and says so in its output
- [ ] The orphan check excludes them too
- [ ] A separate `test=` figure, so pollution stays visible rather than hidden
⚠️ Prefix matching is a stopgap. It is guessing from names, and a real user
called `livia` or `ktm` would be excluded silently. The durable fix is for test
accounts not to be in this database at all — #9.
Real accounts counted separately from test-shaped ones, both shown, so
pollution stays visible rather than hidden.
new60m counts real signups only — a real person signing up is no longer
invisible inside a test round.
geo451, http50x and restarts are now in the output. They were being
asked for on every check and were not there; I was querying them by hand each
time. docker logs on the relay cannot see 451s at all — a geo-refusal never
reaches the relay, only the edge proxy.
⚠️ The orphan check needed more than a filter
Excluding test accounts took it from 11 to 3, and the 3 are real by the
prefix rule: nova, juniper, wren — all 2026-08-21, all with no email
address, none with a device. Almost certainly hand-made fixtures from before
the baseline, but not something to assert.
Left as-is, that line would read 3 on every check for ever, and an alarm that
is always on is one nobody reads. It is now scoped to the last 7 days, which
is the honest shape of the question: key registration failing after signup
happens within seconds, so a live failure is always recent. Reads 0.
🔴 Still a stopgap, as this ticket said from the start. Prefix matching guesses
from names — a real user called livia or ktm is excluded silently. The
durable fix is #9.
### Done — the watch now reports a number that means something
```
before: users=86 new60m=0 devices=90 relay_errors60m=0 container=healthy
after: users=26 (real) test_accounts=60 new60m=0 devices=90 orphans7d=0
geo451=0 http50x=0 relay_errors60m=0 restarts=0 container=healthy
```
- Real accounts counted separately from test-shaped ones, both shown, so
pollution stays visible rather than hidden.
- `new60m` counts real signups only — a real person signing up is no longer
invisible inside a test round.
- `geo451`, `http50x` and `restarts` are now in the output. They were being
asked for on every check and were not there; I was querying them by hand each
time. `docker logs` on the relay cannot see 451s at all — a geo-refusal never
reaches the relay, only the edge proxy.
### ⚠️ The orphan check needed more than a filter
Excluding test accounts took it from 11 to 3, and the 3 are real by the
prefix rule: `nova`, `juniper`, `wren` — all 2026-08-21, **all with no email
address**, none with a device. Almost certainly hand-made fixtures from before
the baseline, but not something to assert.
Left as-is, that line would read `3` on every check for ever, and an alarm that
is always on is one nobody reads. It is now scoped to **the last 7 days**, which
is the honest shape of the question: key registration failing after signup
happens within seconds, so a live failure is always recent. Reads `0`.
🔴 Still a stopgap, as this ticket said from the start. Prefix matching guesses
from names — a real user called `livia` or `ktm` is excluded silently. The
durable fix is #9.
⚠️ The prefix-matching caveat this ticket opened with has not gone away, and is
tracked where it belongs: #9. A real user called livia or ktm is still
excluded silently, and the durable answer is test accounts not being in this
database at all.
Closing — all three boxes are ticked and verified against the live relay:
```
users=26 (real) test_accounts=60 new60m=0 devices=90 orphans7d=0
geo451=0 http50x=0 relay_errors60m=0 restarts=0 container=healthy
```
⚠️ The prefix-matching caveat this ticket opened with has not gone away, and is
tracked where it belongs: #9. A real user called `livia` or `ktm` is still
excluded silently, and the durable answer is test accounts not being in this
database at all.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The launch watch reports
users=straight fromselect count(*) from users.Most of that number is automated tests.
So
users=86against a baseline of 46 reads as +40 in two days. Real,non-test signups since that baseline: 1.
Per day, excluding test-shaped usernames:
Test-shaped prefixes seen so far:
fnsmoke,live,kt,sl,jvmt,iosm,gatecheck,fnreview,peer,demo,turnchk,probe,readback,both.🔴 Two ways this misleads, not one
Real signups are invisible. On 08-31 a 30-minute test round created 39
accounts. One real signup inside that window would not have been noticeable in
any number the watch prints.
The devices-vs-users check would misfire. 11 accounts have no device —
exactly the "signup completed, key registration failed" shape the watch is meant
to catch, which would mean accounts that cannot message. All 11 are probes:
No real account is stranded. But the next run of that check reads as a genuine
alarm, and the run after that gets ignored.
Done when
test=figure, so pollution stays visible rather than hidden⚠️ Prefix matching is a stopgap. It is guessing from names, and a real user
called
liviaorktmwould be excluded silently. The durable fix is for testaccounts not to be in this database at all — #9.
mentioned in issue #9
Done — the watch now reports a number that means something
pollution stays visible rather than hidden.
new60mcounts real signups only — a real person signing up is no longerinvisible inside a test round.
geo451,http50xandrestartsare now in the output. They were beingasked for on every check and were not there; I was querying them by hand each
time.
docker logson the relay cannot see 451s at all — a geo-refusal neverreaches the relay, only the edge proxy.
⚠️ The orphan check needed more than a filter
Excluding test accounts took it from 11 to 3, and the 3 are real by the
prefix rule:
nova,juniper,wren— all 2026-08-21, all with no emailaddress, none with a device. Almost certainly hand-made fixtures from before
the baseline, but not something to assert.
Left as-is, that line would read
3on every check for ever, and an alarm thatis always on is one nobody reads. It is now scoped to the last 7 days, which
is the honest shape of the question: key registration failing after signup
happens within seconds, so a live failure is always recent. Reads
0.🔴 Still a stopgap, as this ticket said from the start. Prefix matching guesses
from names — a real user called
liviaorktmis excluded silently. Thedurable fix is #9.
Closing — all three boxes are ticked and verified against the live relay:
⚠️ The prefix-matching caveat this ticket opened with has not gone away, and is
tracked where it belongs: #9. A real user called
liviaorktmis stillexcluded silently, and the durable answer is test accounts not being in this
database at all.