Platform metrics transparency

यह page दिखाता है कि PayCal कौन सी telemetry collect करता है, क्यों collect करता है, और कब delete करता है।

हमारी प्रतिबद्धता

Users को साफ दिखना चाहिए कि service कौन सी telemetry collect करती है। यह page platform health monitor करने वाली हर metric को document करता है।

इस page की सारी telemetry aggregate-only है। हम telemetry keys में personal identifiers store नहीं करते।

Verification metadata

Route metadata

  • Route: /transparency/metrics/
  • Last verified:
  • Next review due:
  • Verification scope: current metric key inventory और retention policy के विरुद्ध manual content review.

Known limitations

  • Metric key inventory code के साथ manually sync रखा जाता है; quarterly reviews के लिए automated key-diff tooling planned है।
  • Retention values current configuration defaults दिखाते हैं और future tenant-specific overrides को reflect न कर सकते हैं।

यह metadata quarterly audit close-out के हिस्से के रूप में update होता है।

Metric inventory

Metric category Personal data? Retention Purpose
Session lifecycle metrics नहीं 30 days raw, 52 weeks rollup, 24 months monthly User experience और capacity planning
Redis health metrics नहीं 24 hours raw, 7 days hourly, 4 weeks daily Infrastructure reliability
Business aggregates नहीं 30 days daily, 52 weeks weekly, 24 months monthly Growth और planning
Frontend telemetry events नहीं 30 days Error detection और feature health
Encryption operation metrics नहीं 30 days raw, 52 weeks rollup, 24 months monthly Cryptographic reliability

Session lifecycle metrics No personal data

हम usage patterns समझने के लिए login/logout totals और session duration ranges count करते हैं। हम यह track नहीं करते कि कौन login हुआ।

What: daily login events, logout events, और session duration distributions.

Why: authentication issues detect करना, friction reduce करना, और capacity planning improve करना.

How: daily counters और fixed duration buckets.

Retention: 30 days raw -> 52 weeks rollup -> 24 months monthly -> purge.

Buckets:

  • 0-5min - quick checks
  • 5-30min - typical session
  • 30-60min - extended session
  • 60min+ - long work session

Example keys:

telemetry:auth:login:2026-03-09      -> 247
telemetry:auth:logout:2026-03-09     -> 219
telemetry:session:duration:0-5min    -> 45
telemetry:session:duration:5-30min   -> 128
telemetry:session:duration:30-60min  -> 39
telemetry:session:duration:60min+    -> 7

Privacy Guard: duration calculation के तुरंत बाद session hash destroy हो जाता है। Telemetry keys में user UUIDs store नहीं होते।

Volume Cap: maximum 734 keys/year.

Redis health metrics No personal data

हम Redis को infrastructure health data की तरह monitor करते हैं, user activity data की तरह नहीं।

What: memory usage, namespace by key counts, और connection stats.

Why: memory leaks detect करना, evictions prevent करना, और growth watch करना.

How: scheduled interval पर Redis INFO output parse करना.

Retention: 24 hours raw -> 7 days hourly -> 4 weeks daily -> purge.

Namespaces: max 10 tracked namespaces (hardcoded whitelist).

  • session:* - Active sessions
  • lock:* - Distributed locks
  • cache:* - Application cache
  • telemetry:* - Metrics storage
  • ratelimit:* - Rate limiting counters
  • nonce:* - CSRF tokens
  • temp:* - Temporary data
  • queue:* - Job queues
  • encryption:* - Wrapped keys
  • feature:* - Feature flags

Example keys:

telemetry:redis:memory:used_mb:2026-03-09:14  -> 247
telemetry:redis:keys:session:2026-03-09:14    -> 342
telemetry:redis:keys:lock:2026-03-09:14       -> 18

Privacy Guard: namespace counts aggregate-only हैं। Key content inspect नहीं होता।

Volume Cap: active rolling window में maximum 1,680 keys.

Business aggregate metrics No personal data

ये planning के लिए top-level platform totals हैं, individuals को profile करने के लिए नहीं।

What: total users, active accounts, average work entries.

Why: capacity planning और growth analysis.

How: database counts की daily aggregation.

Retention: 30 days daily -> 52 weeks weekly -> 24 months monthly -> purge.

Example keys:

telemetry:business:users:total:2026-03-09     -> 1247
telemetry:business:users:active:2026-03-09    -> 892
telemetry:business:work:avg_per_user:2026-03  -> 23.4

Privacy Guard: aggregate-only values. Per-user telemetry records नहीं।

Volume Cap: 1,095 keys/year.

Frontend telemetry events No personal data

Event telemetry client-side failures और feature reliability issues detect करने में मदद करती है।

What: frontend performance events, error counts, और feature usage events.

Why: client issues identify करना और product health monitor करना.

How: approved event types के लिए ही /api/telemetry/record पर POST.

Retention: 30 days (TTL increment पर enforced).

Telemetry submission limits और example event types:

  • 90 events/minute per client (abuse prevention)
  • calendar.load.success
  • calendar.load.failure
  • encryption.dek.unwrap.success
  • encryption.dek.unwrap.failure
  • passkey.login.success
  • passkey.login.failure

Example keys:

telemetry:event:calendar.load.success:2026-03-09    -> 3421
telemetry:event:passkey.login.failure:2026-03-09    -> 17

Privacy Guard: event types allowlisted हैं। Telemetry keys में arbitrary strings या user/session identifiers नहीं।

Volume Cap: maximum 18,250 keys/year.

Encryption operation metrics No personal data

Cryptographic operations को platform reliability signals की तरह monitor किया जाता है।

What: DEK wrap/unwrap success और failure counters.

Why: cryptographic failures और misconfiguration जल्दी detect करना.

How: हर operation outcome पर success/failure counters increment होते हैं.

Retention: 30 days raw -> 52 weeks rollup -> 24 months monthly -> purge.

Example keys:

telemetry:encryption:dek:wrap:success:2026-03-09      -> 1203
telemetry:encryption:dek:wrap:failure:2026-03-09      -> 2
telemetry:encryption:dek:unwrap:success:2026-03-09    -> 5847
telemetry:encryption:dek:unwrap:failure:2026-03-09    -> 31

Privacy Guard: केवल operation counts record होते हैं। Key material, ciphertext, या personal identifiers store नहीं होते।

Volume Cap: 1,460 keys/year.

Retention and compaction pipeline

Raw data: daily counters 30 days बाद automatically expire होते हैं.

Weekly rollups: 52-week retention के लिए scheduled aggregation.

Monthly rollups: 24-month retention के लिए scheduled aggregation.

Purge: 24 months से पुरानी metrics delete होती हैं.

Compaction script: /scripts/compact-metrics.php.

Code में enforcement

Privacy constraints CI में contract tests से validate होते हैं।

MetricsPrivacyContractTest::testSessionDurationHasExactlyFourBuckets()
MetricsPrivacyContractTest::testNoUserUUIDsInTelemetryKeys()
MetricsPrivacyContractTest::testRedisNamespacesNeverExceedTen()
MetricsPrivacyContractTest::testAllTelemetryKeysHaveTTL()

Guardrails: hardcoded namespace/event limits unbounded metric growth रोकते हैं।

Additional rate limits:

  • Admin metrics queries: 100 requests/hour
  • Public health checks: 600 requests/hour

Access and verification

Metrics Dashboard: /admin/metrics (authentication और admin role required).

Public Health Endpoint: /api/v1/health aggregate platform status लौटाता है.

Last Updated: March 9, 2026.