Problem
NetworkStats documents total_members as the total registered members across the network, but the provider switches to the Community blog and calls count_users(). In multisite, that counts users who are members of that site, not every row in the shared network user table.
Production evidence
On 2026-07-21:
total_members returned 635.
count_users() on Community returned 635.
- The shared users table contained 641 users.
- Six network users therefore disappear from a metric labeled and documented as network-wide.
TotalMembersProvider.php lines 5-9 explicitly assert that shared users make count_users() return the whole-network total; that assumption is false.
Expected behavior
Choose and enforce one honest contract:
- If the metric means all registered network users, use the canonical multisite network-user count and return 641 for this snapshot.
- If it intentionally means Community members, rename the key/label/provider so consumers do not present it as total network membership.
Acceptance criteria
- Add coverage with a network user who is not a Community-site member.
- Ensure the metric name, label, docs, and value agree.
- Keep the primitive in
extrachill-network; consumers should not compensate for the mismatch.
Problem
NetworkStatsdocumentstotal_membersas the total registered members across the network, but the provider switches to the Community blog and callscount_users(). In multisite, that counts users who are members of that site, not every row in the shared network user table.Production evidence
On 2026-07-21:
total_membersreturned 635.count_users()on Community returned 635.TotalMembersProvider.phplines 5-9 explicitly assert that shared users makecount_users()return the whole-network total; that assumption is false.Expected behavior
Choose and enforce one honest contract:
Acceptance criteria
extrachill-network; consumers should not compensate for the mismatch.