Ang aming pangako
Dapat makita ng users kung anong telemetry ang kinokolekta ng isang service. Idinodocument ng page na ito ang bawat metric na ginagamit para i-monitor ang platform health.
Aggregate-only ang lahat ng telemetry sa page na ito. Hindi kami nag-i-store ng personal identifiers sa telemetry keys.
Verification metadata
Route metadata
- Route:
/transparency/metrics/ - Last verified:
- Next review due:
- Verification scope: manual content review laban sa current metric key inventory at retention policy.
Known limitations
- Metric key inventory ay manually kept in sync with code; planned ang automated key-diff tooling para sa quarterly reviews.
- Retention values ay current configuration defaults at maaaring hindi sumaklaw sa future tenant-specific overrides.
Ina-update ang metadata na ito bilang bahagi ng quarterly audit close-out.
Metric inventory
| Metric category | Personal data? | Retention | Purpose |
|---|---|---|---|
| Session lifecycle metrics | Hindi | 30 days raw, 52 weeks rollup, 24 months monthly | User experience at capacity planning |
| Redis health metrics | Hindi | 24 hours raw, 7 days hourly, 4 weeks daily | Infrastructure reliability |
| Business aggregates | Hindi | 30 days daily, 52 weeks weekly, 24 months monthly | Growth at planning |
| Frontend telemetry events | Hindi | 30 days | Error detection at feature health |
| Encryption operation metrics | Hindi | 30 days raw, 52 weeks rollup, 24 months monthly | Cryptographic reliability |
Session lifecycle metrics No personal data
Binibilang namin ang login/logout totals at session duration ranges para maintindihan ang usage patterns. Hindi namin tina-track kung sino ang nag-login.
What: daily login events, logout events, at session duration distributions.
Why: detect authentication issues, reduce friction, at improve capacity planning.
How: daily counters at fixed duration buckets.
Retention: 30 days raw -> 52 weeks rollup -> 24 months monthly -> purge.
Buckets:
0-5min- quick checks5-30min- typical session30-60min- extended session60min+- 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: session hash ay agad na dini-destroy pagkatapos ng duration calculation. Walang user UUIDs sa telemetry keys.
Volume Cap: maximum 734 keys/year.
Redis health metrics No personal data
Minomonitor namin ang Redis bilang infrastructure health data, hindi user activity data.
What: memory usage, key counts by namespace, at connection stats.
Why: detect memory leaks, prevent evictions, at watch growth.
How: parse Redis INFO output on a scheduled interval.
Retention: 24 hours raw -> 7 days hourly -> 4 weeks daily -> purge.
Namespaces: max 10 tracked namespaces (hardcoded whitelist).
session:*- Active sessionslock:*- Distributed lockscache:*- Application cachetelemetry:*- Metrics storageratelimit:*- Rate limiting countersnonce:*- CSRF tokenstemp:*- Temporary dataqueue:*- Job queuesencryption:*- Wrapped keysfeature:*- 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 ay aggregated only. Hindi ini-inspect ang key content.
Volume Cap: 1,680 keys maximum sa active rolling window.
Business aggregate metrics No personal data
Top-level platform totals ito para sa planning, hindi profiling ng individuals.
What: total users, active accounts, average work entries.
Why: capacity planning at growth analysis.
How: daily aggregation ng database counts.
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. Walang per-user telemetry records.
Volume Cap: 1,095 keys/year.
Frontend telemetry events No personal data
Event telemetry helps detect client-side failures at feature reliability issues.
What: frontend performance events, error counts, at feature usage events.
Why: identify client issues at monitor product health.
How: POST to /api/telemetry/record for approved event types only.
Retention: 30 days (TTL enforced on increment).
Telemetry submission limits at example event types:
- 90 events/minute per client (abuse prevention)
calendar.load.successcalendar.load.failureencryption.dek.unwrap.successencryption.dek.unwrap.failurepasskey.login.successpasskey.login.failure
Example keys:
telemetry:event:calendar.load.success:2026-03-09 -> 3421 telemetry:event:passkey.login.failure:2026-03-09 -> 17
Privacy Guard: allowlisted ang event types. Walang arbitrary strings o user/session identifiers sa telemetry keys.
Volume Cap: 18,250 keys/year maximum.
Encryption operation metrics No personal data
Cryptographic operations ay minomonitor bilang platform reliability signals.
What: DEK wrap/unwrap success at failure counters.
Why: detect cryptographic failures at misconfiguration quickly.
How: success/failure counters increment for each operation outcome.
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 lang ang recorded. Walang key material, ciphertext, o personal identifiers na stored.
Volume Cap: 1,460 keys/year.
Retention and compaction pipeline
Raw data: daily counters expire automatically after 30 days.
Weekly rollups: scheduled aggregation to 52-week retention.
Monthly rollups: scheduled aggregation to 24-month retention.
Purge: metrics older than 24 months are deleted.
Compaction script: /scripts/compact-metrics.php.
Enforcement in code
Privacy constraints ay validated by contract tests sa CI.
MetricsPrivacyContractTest::testSessionDurationHasExactlyFourBuckets() MetricsPrivacyContractTest::testNoUserUUIDsInTelemetryKeys() MetricsPrivacyContractTest::testRedisNamespacesNeverExceedTen() MetricsPrivacyContractTest::testAllTelemetryKeysHaveTTL()
Guardrails: hardcoded namespace/event limits prevent 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 and admin role required).
Public Health Endpoint: /api/v1/health returns aggregate platform status.
Last Updated: March 9, 2026.