feat(hf): card metadata + schema completeness v2 (audit follow-up)#636
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Follow-up to the initial HF dataset release published at 14:37 UTC on 2026-06-22. Implements the 12 audit items.
Bumps
SCHEMA_VERSION1 -> 2. All changes are additive (no rename / no removal of existing columns except the renamesample_size->bench_sample_size/provider_sample_size, which is the v2 break documented in the schema-versioning rationale of the publisher).Checklist (12 audit items)
dataset_template/README.md:task_categories-> time-series-forecasting + tabular-regression + other,task_idsadded (univariate-time-series-forecasting),size_categoriesforward-looking (10K<n<100K, 100K<n<1M), enrichedtags(21 entries including defi/solana/ethereum/hyperliquid/mev/observability/sla/mlcroissant/tabular/timeseries/monitoring),pretty_name,viewer,source_datasets,annotations_creators,language_creators,multilinguality.higher_is_betterin headlines: backfilled via the per-slug/api/statfetches.run()now collects a{slug: higherIsBetter}map and passes it intobuild_headlines. Null when the per-slug fetch failed.sample_size-> renamed:bench_sample_size(headlines) andprovider_sample_size(providers). Schemas + tests updated.dataset_infoblock under YAML frontmatter for all 4 configs with explicit feature dtypes (string / float64 / int64 / bool). Lets HF render the viewer without a full parquet introspection.Data Fields, headlines / providers / timeseries / chain_leaders).## Dataset Description/## Dataset Structure/## Dataset Creation/## Considerations for Using the Data/## Additional Information. Methodology / Update cadence / Schema stability / Provenance folded into the right H2s.provider_type,provider_layer,provider_tagadded to providers. Required surfacing them on/api/stat's rankings payload, which was a 6-line additive edit (src/app/api/stat/[slug]/route.ts).Citation Information. CFF unchanged at the root.chain_leaderstable: schema JSON shipped, table written as a real (zero-row) parquet so downstream pipelines stabilize against the canonical shape today. Comment + README section explain it stays empty until/api/citableor/api/statexposesbestPerChain/worstPerChain./api/series/<slug>?range={24h,7d,30d}. One row per (bench, provider, window, point_index). Falls back to the legacysparklinefor 24h when/api/seriesreturned no data.size_categoriesforward-looking: covered by drop journal framing #1.Metrics, before vs after (live dry-run, snapshot 2026-06-22)
The 30x growth in
timeseriescomes from emitting one row per provider per point across 3 windows instead of one aggregated row per point.Trade-offs taken
provider_type/provider_layer/provider_tagare null in today's dry-run because the prod API still serves the v1/api/statpayload. They will be populated on the first snapshot after this PR ships (the route extension is additive and zero-risk).chain_leadersships empty by design. Shipping the canonical 11-column schema with zero rows is friendlier to downstream consumers than withholding the table until the API change lands.provider_slug = leader_slugfallback for benches without a/api/seriespayload. Documented under "Other Known Limitations" so consumers can filter onwindow in ('7d', '30d')for strictly per-provider trajectories.Test plan
cd scripts/hf_publisher && python3 -m venv .venv && .venv/bin/pip install -r requirements.txt.venv/bin/python -m unittest test_publish -v(25 tests passing, was 15).venv/bin/python publish.py --dry-run --out /tmp/ocb-hf-stage-v2against prod (openchainbench.com), parquets inspected with pandas