Human-proxy profiles rose from 636 on Aug 19 to 1,340 on Aug 20. The timing is consistent with a real open-signup lift.
Open signup:
the ramp was real.
The biggest spike was not.
Divine’s human-proxy new profiles peaked at 1,340 on Aug 20, the day the server opened signup. Posting authors nearly tripled and production stayed healthy. But the raw Aug 21 “record” was mostly an RSS bridge batch—and day-one return had already weakened before invite codes came off.
The gate opened into a wave already forming.
Invite codes were required through Aug 19. The server flipped onboardingMode to open on Aug 20—not after Aug 20. Human-proxy profiles had already climbed from 117 on Aug 16 to 425 on Aug 18 and 636 on Aug 19.
The biggest raw spike was a bridge batch.
Correction: Aug 21 recorded 1,987 raw profiles, but 1,236 carried an atomstr.data.haus identifier. The corrected human-proxy peak is Aug 20 at 1,340.
The ramp began while the gate was still live. Acquisition, publicity, release effects, or client distribution were already moving.
Aug 21 profiles carried the RSS bridge domain, including 1,275 profiles in a single hour. They are accounts, not consumer signups.
People did more than register.
On Aug 20, network activity and creation expanded together. That is the healthy shape: more authors, more videos, more follows, and more reactions—not a signup spike sitting alone.
Posting authors nearly tripled
95 on Aug 16 → 259 on Aug 20
Video volume rose with authors
266 on Aug 16 → 611 on Aug 20
Network DAU reached 11k
6,202 on Aug 16 → 11,022 on Aug 20
Social actions accelerated.
Activation held. Return softened.
The fair comparison is a fixed D+1 window, not “ever returned” while cohorts have different ages. Weighted D1 return for Aug 11–16 was 28.6%. It fell to 14.8% on Aug 17, recovered to ~19–21%, and stayed at 18.9% for the Aug 20 open cohort.
Return rate softened before the gate opened.
The drop begins with the ramp on Aug 17, three days before server-open signup. Open signup may affect the mix, but it does not explain the whole retention change.
Don’t blame open signup alone.
Aug 18–19 invite-gated cohorts returned at a weighted 19.6%, almost the same as Aug 20’s 18.9%. The acquisition mix or onboarding experience changed before the switch.
Measure the actual funnel next.
Split cohorts by acquisition source, OS, app version, client-config success, and signup mode. Track account created → first follow → first view → first post → D1/D7 return.
Use first-party account events.
A kind-0 profile is a proxy, not proof of an app signup. Add a privacy-safe first-party account-created event so bridge imports and other Nostr automation cannot pollute the headline.
The platform absorbed the wave.
There was no broad production incident during the ramp. Core edge paths stayed clean, ingest was current, and the cluster retained substantial headroom. Two caveats matter: API CPU touched its HPA target in the point-in-time snapshot, and relay autoscaling has one broken signal.
nodes Ready
Busiest node: 65% CPU. Most general nodes: 5–39%. Dedicated relay nodes: 3–17%.
CPU target
3 of 12 pods at capture. Headroom exists, but confirm it scales if this level persists.
pods
~130 connections per pod against a 1,500 threshold. Far below connection capacity.
ingest lag
Observed at 22:16 UTC. Product analysis was effectively current.
Core service paths stayed clean as load rose.
| Day | Media path | Name path | Identity | Moderation |
|---|---|---|---|---|
| Aug 20 | 402,617 / 0 | 329,476 / 1,104 | — | 10.27m / 1,926 |
| Aug 21 | 797,428 / 0 | 389,449 / 20 | 157,532 / 0 | 16.54m / 1,660 |
| Aug 22* | 493,150 / 0 | 157,442 / 0 | 80,067 / 0 | 12.03m / 1,335 |
Moderation error rate improved from 0.0188% on Aug 20 to 0.0111% on Aug 22. The name path’s Aug 20 errors fell to zero by Aug 22.
Five moves, in order.
Traffic did not break production. The weak spots are client resilience, signal quality, and a few pieces of operational debt that can hide the next real problem.
Remove the dead invite fallback from shipped clients
Open · user-blockingThe server is open, but public app 1.0.20 can still default to “invites on” when one client-config request fails. Every code is then invalid, stranding new users. Ship the small fail-closed inversion immediately; delete the old invite machinery separately.
Restore the relay’s burst-protection metric
Broken nowKEDA reports Fallback=True. Live verification found avg(relay_websocket_connections) returning 129.7, while the p95 TCP accept-latency query returned an empty vector. Restore the histogram export or replace the query; alert whenever either scaler has no series.
Prove the analytics access hook recovered
Fix merged · not yet provenThe migration-ledger fix merged Aug 22 at 01:57 UTC. Production still shows the access hook’s three failed attempts at 04:59, followed by a successful DB migration at 05:44. Re-sync the schema app and verify all 11 required objects before calling this closed.
Turn telemetry collapse into a client diagnosis
Recovered · instrument nextMobile view reporters fell from 607 to 124 while web stayed flat; the detector failed Aug 16–18 and then recovered to 3,069 mobile viewers by Aug 22. Add app version, OS, and publish outcome to the signal so the next collapse identifies the broken release—not just the symptom.
Clear stale desired-state noise
Operational debtRelay and external-secret applications remain Degraded; two dormant production UI applications are Missing; several healthy apps are OutOfSync. Remove unused declarations or finish the deployment so real drift is visible at a glance.
Four instrumentation upgrades.
Separate humans from automation
First-party signup events plus an explicit account class for bridges, imports, service accounts, and restored archive identities.
Own the activation funnel
Account created, profile complete, first follow, first playback, first post, D1, D7, D30—cut by source, version, OS, and mode.
Alert on missing autoscaler series
Metric presence is a dependency. Page on KEDA fallback before a burst makes the missing trigger consequential.
Load-test the real open-signup shape
Replay signup + profile + follow + video-feed traffic at 3× the Aug 20 peak and verify API scale-up, relay burst behavior, and ClickHouse lag.
Read this before forwarding.
“Signup” is a proxy. Counts use nostr.user_profiles_latest_data.created_at. A Nostr profile is not the same thing as an app account-creation event.
“Human-proxy” is an exclusion, not identity proof. It removes profiles whose nip05 contains atomstr.data.haus. Other automation may remain; a human could theoretically be excluded.
DAU is a network proxy. It counts distinct authors in nostr.event_authors, not unique app opens. Posting uses nostr.videos_latest_data. D1 return means any authored event exactly one UTC day later.
Time boundaries matter. Days are UTC. The Aug 20 server flip time is not captured, so Aug 20 can contain both modes. Aug 22 is partial through roughly 22:22 UTC.
Source ledger
- ClickHouse queries captured 22 Aug 2026 against Divine production analytical views.
- Kubernetes, HPA, KEDA, VictoriaMetrics, ArgoCD, and Job state captured 22 Aug 2026 at 22:27–22:29 UTC.
- Daily edge request/error rollups from Divine Brain ops status, fetched 22 Aug 2026 at 22:11 UTC.
- divine-mobile #8000 for the Aug 20 server flip and shipped fail-open client behavior. Brain source document
3CCABF801C7F2419C43E61C7A5. - divine-funnelcake #1121 for the migration-ledger fix and merge state.