Skip to content

feat(data-processing): add per-contract ingestion lag metrics - #1115

Merged
Cedarich merged 2 commits into
Pulsefy:mainfrom
ZEMAD0N26:feat/per-contract-ingestion-lag-metrics
Jul 25, 2026
Merged

feat(data-processing): add per-contract ingestion lag metrics#1115
Cedarich merged 2 commits into
Pulsefy:mainfrom
ZEMAD0N26:feat/per-contract-ingestion-lag-metrics

Conversation

@ZEMAD0N26

Copy link
Copy Markdown

Track ingestion lag for registry, vault, matching_pool, treasury, and vesting contract domains. Lag = latest raw_soroban_events.created_at minus latest contract_events.timestamp per contract ID.

Changes:

  • src/ingestion/contract_lag_metrics.py: core lag computation, configurable per-domain thresholds (env vars), structured log alerts, Prometheus publish, run_contract_lag_cycle() entrypoint
  • src/utils/metrics.py: new CONTRACT_INGESTION_LAG_SECONDS Gauge labelled by domain
  • src/api/ingestion_quality_routes.py: GET/POST /ingestion/contract-lag endpoints to query lag values over HTTP
  • src/scheduler.py: _contract_lag_metrics_job() scheduled every 5 min (CONTRACT_LAG_INTERVAL_MINUTES env var)
  • .env.example: document CONTRACT_ID_* and CONTRACT_LAG_{WARNING,CRITICAL}SECONDS* env vars
  • tests/test_contract_lag_metrics.py: unit tests covering lag calculation, threshold alerts, zero-lag, missing domain data

Closes #878

Track ingestion lag for registry, vault, matching_pool, treasury, and
vesting contract domains. Lag = latest raw_soroban_events.created_at
minus latest contract_events.timestamp per contract ID.

Changes:
- src/ingestion/contract_lag_metrics.py: core lag computation,
  configurable per-domain thresholds (env vars), structured log
  alerts, Prometheus publish, run_contract_lag_cycle() entrypoint
- src/utils/metrics.py: new CONTRACT_INGESTION_LAG_SECONDS Gauge
  labelled by domain
- src/api/ingestion_quality_routes.py: GET/POST /ingestion/contract-lag
  endpoints to query lag values over HTTP
- src/scheduler.py: _contract_lag_metrics_job() scheduled every 5 min
  (CONTRACT_LAG_INTERVAL_MINUTES env var)
- .env.example: document CONTRACT_ID_* and
  CONTRACT_LAG_{WARNING,CRITICAL}_SECONDS_* env vars
- tests/test_contract_lag_metrics.py: unit tests covering lag
  calculation, threshold alerts, zero-lag, missing domain data
@drips-wave

drips-wave Bot commented Jul 25, 2026

Copy link
Copy Markdown

@ZEMAD0N26 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Cedarich Cedarich left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Cedarich
Cedarich merged commit 16e7c78 into Pulsefy:main Jul 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Data-processing: Contract-specific ingestion lag dashboard metrics

2 participants