Back to Metaflow
GSoC 2026

Non-Breaking Pagination & Tag Filtering for Metaflow Metadata Service

metadata_service returns raw arrays with no pagination or filtering. ui_backend_service in the same repository already supports both via an envelope format. Meanwhile, the DB layer (find_records, DBPagination, runs_v3_idx_epoch_ts_desc) already has everything needed — the gap is that the API layer does not expose it. This project brings metadata_service to parity: pagination via LIMIT+1, tag filtering with four operators (_tags:any/all/likeany/likeall), unified response schema matching ui_backend_service, and GIN index migration — without breaking existing clients. The key design: without _limit, behavior is identical to current. With _limit, the envelope format activates. Beyond pagination and filtering, the project also connects tag cache refresh to notify.py's existing LISTEN/NOTIFY infrastructure (debounce or incremental update strategy confirmed with mentor before implementation), and adds Content-Type header to the format_response decorator. Deliverables: metaflow-service PR covering all 9 GET endpoints, GIN index migration, feature-gating, benchmark results with EXPLAIN ANALYZE verification, backward compatibility test suite, and a pagination implementation guide for future contributors.

Project details

Contributor

EunhyeJeong

Mentors

Not available

Technologies

Not listed in the archive