Skip to content

Latest commit

 

History

History
384 lines (257 loc) · 36.7 KB

CHANGELOG.md

File metadata and controls

384 lines (257 loc) · 36.7 KB

Changelog

All notable changes to the Rewards Eligibility Oracle project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.4.14 (2026-10-27)

Changed

  • build the Docker image whenever a release is created (#172) (d3df62a)
  • config: set the example subgraph minimum to 5 to match production (fc6f494)
  • deps: Bump the python-dependencies group across 1 directory with 14 updates (#182) (fdb2261)
  • remove deprecated k8s configuration files (73e33e4)

Documentation

  • criteria: announce 10 subgraph minimum from 2026-10-27 (#179) (b76f15e)
  • criteria: explain that a criteria change covers the whole window (498d7d4)
  • criteria: mark the 5 subgraph daily minimum as active (b81e8ab)
  • mark the 10 subgraph daily minimum as active (#183) (d2b1944)
  • publishing: describe the 5 subgraph minimum as already in force (8573f87)

0.4.13 (2026-10-01)

Added

  • generate and post on chain daily eligibility details per indexer (a956334)
  • publish metrics on chain (ea288aa)

Fixed

  • add validation for query attempts before publishing (b55b01f)
  • adjust days to publish based on window size (c24105c)
  • bigquery: stop counting missing measurements as slow or behind (5b29b54)
  • cache hits + renewal (c748e46)
  • codec: limit varints to 64 bits so a subgraph can decode them (0ef64b1)
  • codec: write message tags as varints, as the wire format states (ebcc7f2)
  • config: check the DataEdge settings when the service starts (800e106)
  • copilot issues (e21926b)
  • handle overflow in date decoding (76b6387)
  • limit published days to a maximum threshold (5b6a16d)
  • more fixes (dab8f99)
  • oracle: keep renewing when the daily metrics cannot be saved (db2b112)
  • oracle: renew from cache when the publish files cannot be read (9e76d12)
  • partial published retries (83204a4)
  • publishing: confirm through the next provider if one fails mid-wait (0541368)
  • publishing: keep a 1-day publish setting at 1 day after a good run (121b289)
  • publishing: name the transaction when no provider can send it (b37739f)
  • publishing: reach back over days earlier runs failed to publish (2b10537)
  • publishing: refuse to publish to an address with no contract code (c80b114)
  • publishing: sign afresh when another transaction took the nonce (e10922a)
  • publishing: sign the metrics once and resend it to each provider (ac9adfb)
  • publishing: skip publishing when the trailing days have no data (1f5ca2f)
  • publishing: stop sending a payload that reverts in gas estimation (2728429)
  • publishing: treat only rate limits as refused among node errors (871bbdb)
  • publishing: try the next provider when a rate-limited send fails (c5e718c)
  • refactor publish_days assignment with conditional check (dff3841)
  • restore per-day row filtering in the DataEdge payload encoder (15994c8)
  • stop renewals replacing the DataEdge publish transaction (bf3fcc2)

Changed

  • blockchain: mark the RPC connection loop's counter as unused (7b37648)
  • deps: Bump the python-dependencies group with 2 updates (#157) (a1addfc)
  • docker: merge back-to-back RUN steps in the image build (97b8290)
  • docker: merge back-to-back RUN steps in the image build (#159) (213a8d5)
  • errors: catch OSError once, not alongside its own subclasses (9d31300)
  • errors: drop 2 handlers that only re-raise what they catch (c0f3681)
  • formatter: split the blank line pass into small named steps (437800c)
  • formatter: split the blank line pass into small steps (#163) (0ed15bd)
  • k8s: drop the unused API token and bound the pod's scratch disk (52e7c82)
  • oracle: mark the Slack success helper as returning nothing (0067345)
  • oracle: split the daily run into a helper per stage (e6d0d80)
  • pipeline: name each output CSV file once at the top of the module (8122b56)
  • scheduler: split start-up into a helper per step (b493403)
  • split the daily run and scheduler start-up into steps (#164) (ef36820)

Documentation

  • docker: state the Python version the base image actually uses (edb5048)

Tests

  • formatter: cover functions nested inside other functions (41a4019)
  • formatter: pin the blank lines added above definitions (c79696c)
  • oracle: report a cached data failure at its own stage (a7250a2)

0.4.12 (2026-09-22)

Fixed

  • count only qualifying subgraphs and announce minimum of 5 (#154) (6650865)

Changed

  • deps: Bump eth-typing from 5.2.1 to 6.0.0 (#149) (6831ce5)
  • deps: Bump mypy from 1.19.1 to 2.3.1 (#152) (7aa920c)
  • deps: Bump pandas from 2.3.3 to 3.0.6 (#147) (7f10890)
  • deps: Bump python from 3.14.6-slim to 3.14.7-slim (#131) (7e608c5)
  • deps: Bump pytz from 2025.2 to 2026.3.post1 (#146) (15bb229)
  • deps: Bump the python-dependencies group across 1 directory with 13 updates (#134) (c1db28d)
  • deps: Bump the python-dependencies group with 4 updates (#145) (5485be3)
  • deps: Bump types-pytz from 2025.2.0.20251108 to 2026.3.1.20260727 (#151) (6ad6d17)
  • deps: Bump types-requests from 2.33.0.20260712 to 2.33.0.20260906 (#150) (fd45c3e)
  • deps: Bump web3 from 7.14.0 to 8.0.0 (#148) (2f39cf4)
  • slack: share 1 timestamp format across all notifications (62f9142)

Documentation

  • add missing subgraph rule and config keys to criteria (#153) (99ed83f)

0.4.11 (2026-08-11)

Added

  • notifications: mark each Slack message with its network (#126) (e93b455)

Fixed

  • fail over to the next RPC provider when quota runs out (#129) (f652655)
  • stop RPC failover looping forever when all providers fail (#128) (2a56b19)

Changed

  • deps: Bump actions/setup-python from 6 to 7 (#122) (7f7a4f6)
  • deps: Bump python from 3.14.2-slim to 3.14.6-slim (#116) (884e51b)

Documentation

  • readme: delete duplicate readme that hid the main one on GitHub (#124) (e9c5092)
  • readme: rewrite README to be more visual and explanatory (#123) (733abae)

0.4.10 (2026-07-13)

Added

  • ci: sign sync-manifest commits via GitHub API (#99) (17f9032)

Fixed

  • ci: improve sync-manifest to handle branch protection (#96) (3b191c2)
  • ci: use printf for PR body to avoid YAML parsing error (#97) (cd07a6d)

Changed

  • deps: Bump actions/cache from 5 to 6 (#118) (e0cde4c)
  • deps: Bump actions/checkout from 5 to 6 (#93) (f876bdd)
  • deps: Bump actions/checkout from 6 to 7 (#117) (5e61119)
  • deps: Bump docker/build-push-action from 6 to 7 (#107) (0ebbf6e)
  • deps: Bump docker/login-action from 3 to 4 (#105) (90aebf5)
  • deps: Bump docker/metadata-action from 5 to 6 (#106) (34a4c84)
  • deps: Bump docker/setup-buildx-action from 3 to 4 (#104) (f05e5d6)
  • deps: Bump softprops/action-gh-release from 2 to 3 (#112) (bb5d93e)
  • release: sync release-please manifest to actual version 0.4.9 (#119) (b357318)
  • update testnet contract address to new deployment (#101) (ed9e1eb)

0.4.5 (2025-11-22)

Fixed

  • remove unused keys/URLs from config (3d9f6a1)

0.4.4 (2025-11-21)

Added

  • auth: support Kubernetes inline credentials (#67) (b1d99e6)

0.4.3 (2025-11-21)

Fixed

  • remove package-name from release-please config (#65) (06f266c)

0.4.2 (2025-11-20)

Added

  • Add BigQuery caching with 30-minute freshness (#12) (ac822a8)
  • Add clickable transaction links and Python style guidelines (#15) (8534bf8)
  • Add continuous deployment pipeline with manual version control (#13) (8ad0436)
  • Add Kubernetes deployment support (#14) (daaa778)
  • add release-please automation (#45) (4c49ba5)
  • SQO: Implement RPC failover, retry logic and notification on RPC provider rotation. (#4) (5a6ea0a)
  • SQO: Introduce circuit breaker. (#9) (62ef969)
  • SQO: Introduce minimal CI/CD pipeline (#1) (8131872)
  • SQO: Introduce Slack notification pipeline and test script for failed/successful runs of the SQO (#2) (d50ab59)

Fixed

  • ci: update Python to 3.13.7 and limit workflow permissions (#43) (cc8cac6)
  • configure release-please to auto-update Docker image versions (#49) (caf6dbe)
  • configure release-please workflow to use config files (#53) (dda3c24)
  • mount config.toml from ConfigMap in K8s (#62) (09dc59c)
  • Resolve TruffleHog BASE/HEAD comparison failure (#11) (d025069)
  • update contract ABI to match deployed ServiceQualityOracle (#24) (29001d6)
  • update Dependabot config and add CODEOWNERS (#26) (8dd13a0)
  • update release-please config filename and release type (#63) (231b976)

Changed

  • add dependabot config and update to production image (#16) (06f58ee)
  • auth: improve Google Cloud credential handling (#42) (ab2063c)
  • deps: Bump actions/cache from 3 to 4 (#21) (16e6c29)
  • deps: Bump actions/checkout from 4 to 5 (#31) (cb12126)
  • deps: Bump actions/setup-python from 4 to 5 (#19) (82a82bd)
  • deps: Bump actions/setup-python from 5 to 6 (#35) (6c1c174)
  • deps: Bump docker/build-push-action from 5 to 6 (#18) (5b2cd65)
  • deps: Bump gql from 3.5.3 to 4.0.0 (#34) (e7860cd)
  • deps: Bump python from 3.11-slim to 3.13.7-slim (#30) (ba3b323)
  • deps: Bump softprops/action-gh-release from 1 to 2 (#17) (931f0c1)
  • deps: Bump tenacity from 8.5.0 to 9.1.2 (#23) (597c6f6)
  • deps: Bump the python-dependencies group across 1 directory with 13 updates (#40) (f2d35e1)
  • deps: Bump the python-dependencies group with 10 updates (#22) (d1daf2d)
  • deps: Bump types-pytz from 2025.2.0.20250516 to 2025.2.0.20250809 (#29) (31ea904)
  • deps: Bump types-requests from 2.32.4.20250611 to 2.32.4.20250809 (#27) (6e1bbc8)
  • main: release 0.4.0 (#46) (eceb4d6)
  • main: release 0.4.1 (#48) (2d32fd5)
  • rename Service Quality to Rewards Eligibility (#50) (0b1dd6d)
  • REO: rename to RewardsEligibilityOracle, reduce initial requirements (#39) (5043ac7)
  • SQO: Create unit tests. (#5) (68ba132)
  • SQO: Modularise codebase, create a single source of truth for config, add test framework, review all components. (#3) (2845036)
  • SQO: Remove unused module/test file. (#6) (6950e19)
  • SQO: Update eligibility criteria document structure. (#8) (fc44590)
  • update Docker image to v0.2.2 (#25) (09d0f4f)
  • update Docker image to v0.3.0 (#44) (4075cf9)

Documentation

  • add end-to-end oracle flow diagram (#54) (3b1997b)
  • clean up stale README and apply auto formatting fixes (#47) (ba1ce3e)
  • Remove unimplemented curation requirement and enhance security (#10) (ee06dee)

0.4.1 (2025-11-06)

Documentation

  • clean up stale README and apply auto formatting fixes (#47) (ba1ce3e)

0.4.0 (2025-11-03)

Features

Bug Fixes

  • ci: update Python to 3.13.7 and limit workflow permissions (#43) (cc8cac6)

[Unreleased]

Changed

  • Apply markdownlint formatting to documentation files
  • Update Python to 3.13.7 with limited workflow permissions (#43)
  • Update Docker image to v0.3.0 (#44)

[0.3.0] - 2025-10-30

Added

  • Dependabot configuration for automated dependency updates (#16)
  • CODEOWNERS file for code review assignments (#26)

Changed

  • Improved Google Cloud credential handling with better error messages (#42)
  • Renamed contract from IssuanceEligibilityOracle to RewardsEligibilityOracle (#39)
  • Updated contract ABI to match deployed RewardsEligibilityOracle (#24)
  • Updated to production Docker image configuration (#16, #25)
  • Python upgraded from 3.11-slim to 3.13.7-slim (#30)

Dependencies

  • Bumped python-dependencies group with 13 updates (#40)
  • Bumped python-dependencies group with 10 updates (#22)
  • Updated types-pytz from 2025.2.0.20250516 to 2025.2.0.20250809 (#29)
  • Updated types-requests from 2.32.4.20250611 to 2.32.4.20250809 (#27)
  • Updated tenacity from 8.5.0 to 9.1.2 (#23)
  • Updated gql from 3.5.3 to 4.0.0 (#34)
  • Updated actions/setup-python from 4 to 5, then 5 to 6 (#19, #35)
  • Updated actions/checkout from 4 to 5 (#31)
  • Updated actions/cache from 3 to 4 (#21)
  • Updated docker/build-push-action from 5 to 6 (#18)
  • Updated softprops/action-gh-release from 1 to 2 (#17)

[0.2.2] - 2025-07-31

Fixed

  • Updated contract ABI to match deployed ServiceQualityOracle (#24)

Added

  • Dependabot configuration for automated dependency updates (#16)
  • Production Docker image configuration (#16)

[0.2.1] - 2025-07-31

Added

  • Clickable transaction links in notifications for easier verification (#15)
  • Python style guidelines documentation (#15)

[0.2.0] - 2025-07-30

Added

  • Kubernetes deployment support with manifests and documentation (#14)
  • Persistent volume configurations for data and logs
  • ConfigMap and Secret management for Kubernetes
  • Resource allocation and health check configurations

[0.1.0] - 2025-07-25

Added

  • BigQuery caching system with 30-minute freshness threshold
  • Cache directory initialization in scheduler
  • Force refresh capability via environment variable
  • Comprehensive cache test coverage

Changed

  • Container restart performance improved from ~5 minutes to ~30 seconds
  • BigQuery costs reduced by eliminating redundant expensive queries

Technical Details

  • Cache location: /app/data/cache/bigquery_cache.json
  • Configurable via CACHE_MAX_AGE_MINUTES environment variable
  • Override caching with FORCE_BIGQUERY_REFRESH=true

[0.0.1] - Initial Release

Added

  • Daily BigQuery performance data fetching from Google BigQuery
  • Indexer eligibility processing based on threshold algorithms
  • On-chain oracle updates to RewardsEligibilityOracle contract
  • RPC provider failover with circuit breaker pattern
  • Slack notifications for monitoring
  • Docker containerization with health checks
  • Scheduled execution at 10:00 UTC daily
  • Data persistence and CSV output generation
  • Comprehensive test coverage

Technical Implementation

  • Python 3.11 with slim Docker image
  • Google BigQuery integration
  • Web3 blockchain client with automatic failover
  • Circuit breaker prevents infinite restart loops
  • Retry mechanisms with exponential backoff
  • Configuration management via TOML and environment variables