Platform telemetry dispatch · 23 Aug 2026

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.

Data through 22 Aug, 22:22 UTC · production snapshot at 22:27 UTC
Human-proxy profiles1,340Aug 20 · 11.5× Aug 16
Posting authors259Aug 20 · 2.7× Aug 16
Network DAU proxy11,022Aug 20 · +78% vs Aug 16
Core path errors0Aug 22 · media, names, identity
01
Growth, corrected

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.

New-profile proxy · UTC

The biggest raw spike was a bridge batch.

Human-proxy profilesRSS bridge profiles
00.5k1k1.5k2kServer open · Aug 2012811185121,532132631410515128162751743018703191,346201,9872149822*August 2026 · * partial day through 22:22 UTC

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.

What open signup added+111%

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.

What it did not causeAug 17–19

The ramp began while the gate was still live. Acquisition, publicity, release effects, or client distribution were already moving.

What fooled the raw chart1,236

Aug 21 profiles carried the RSS bridge domain, including 1,275 profiles in a single hour. They are accounts, not consumer signups.

02
Activation & activity

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.

Distinct video authors

Posting authors nearly tripled

89Aug 11259Aug 20219Aug 22*

95 on Aug 16 → 259 on Aug 20

Video events

Video volume rose with authors

210Aug 11611Aug 20540Aug 22*

266 on Aug 16 → 611 on Aug 20

Unique event authors

Network DAU reached 11k

7,036Aug 1111,022Aug 207,182Aug 22*

6,202 on Aug 16 → 11,022 on Aug 20

Aug 16 → Aug 20

Social actions accelerated.

Follows588 → 3,3445.7×
Reactions9,145 → 14,730+61%
Comments915 → 1,135+24%
Total relay events20,577 → 47,7122.3×
03
Cohort quality

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.

Fixed D+1 window · human-proxy cohorts

Return rate softened before the gate opened.

28.6% → 18.9%
0%10%20%30%40%Aug 11-16 weighted baseline · 28.6%21.9%1129%1226.4%1333.2%1428.8%1529.9%1614.8%1720.7%1818.9%1918.9%20

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.

04
Production health

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.

GKE · 22:27 UTC24 / 24

nodes Ready

Busiest node: 65% CPU. Most general nodes: 5–39%. Dedicated relay nodes: 3–17%.

Funnelcake API72% / 70%

CPU target

3 of 12 pods at capture. Headroom exists, but confirm it scales if this level persists.

Relay3 / 30

pods

~130 connections per pod against a 1,500 threshold. Far below connection capacity.

ClickHouse72 sec

ingest lag

Observed at 22:16 UTC. Product analysis was effectively current.

Requests / errors

Core service paths stayed clean as load rose.

UTC days · Aug 22 partial
DayMedia pathName pathIdentityModeration
Aug 20402,617 / 0329,476 / 1,10410.27m / 1,926
Aug 21797,428 / 0389,449 / 20157,532 / 016.54m / 1,660
Aug 22*493,150 / 0157,442 / 080,067 / 012.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.

05
What to fix

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.

P0

Remove the dead invite fallback from shipped clients

Open · user-blocking

The 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.

divine-mobile #8000
P1

Restore the relay’s burst-protection metric

Broken now

KEDA 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.

P1

Prove the analytics access hook recovered

Fix merged · not yet proven

The 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.

divine-funnelcake #1121
P2

Turn telemetry collapse into a client diagnosis

Recovered · instrument next

Mobile 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.

P2

Clear stale desired-state noise

Operational debt

Relay 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.

06
Make the next report easier

Four instrumentation upgrades.

01

Separate humans from automation

First-party signup events plus an explicit account class for bridges, imports, service accounts, and restored archive identities.

02

Own the activation funnel

Account created, profile complete, first follow, first playback, first post, D1, D7, D30—cut by source, version, OS, and mode.

03

Alert on missing autoscaler series

Metric presence is a dependency. Page on KEDA fallback before a burst makes the missing trigger consequential.

04

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.

Method & caveats

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.