Skip to content

fix(etl): skip rows InferenceX quarantined and refuse unknown result versions - #1297

Draft
adibarra wants to merge 1 commit into
masterfrom
fix/skip-quarantined-rows
Draft

adibarra wants to merge 1 commit into
masterfrom
fix/skip-quarantined-rows

Conversation

@adibarra

@adibarra adibarra commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

Companion to SemiAnalysisAI/InferenceX#3806 and #1293.

InferenceX#3806 makes its collectors leave rows that break the result row contract out of results_<prefix> and eval_results_<prefix>, list them in rejected_rows_* artifacts, and stamp published rows with result_schema_version: 1. This ingest also reads the per-config bmk_* and eval_* artifacts, which still contain the quarantined rows, so those rows could reach the database.

Changes

  • Quarantine. The CI ingest (ingest-ci-run.ts) and the GCS restore (ingest-gcs-backup.ts) read rejected_rows_<prefix> and rejected_rows_eval_<prefix> before any write. Both download paths already fetch every artifact, so prepare-ci-artifacts.ts is unchanged.
    • A per-config benchmark file is skipped when its <artifact>/<file> path equals an entry's source and its parsed content equals the entry's row. The content check keeps a list left by an earlier attempt from hiding a file that a later attempt re-uploaded under the same name.
    • A per-config eval task is skipped when its results file and task match the entry's row.source and row.task. Eval sources start with the collector's download directory (eval_results/), so only the last two segments, <artifact>/<file>, are compared.
    • A list that is not standard JSON, or whose entries lack these identifiers, fails the CI ingest before any write and skips that run in a GCS restore. rejected_rows_run_stats is not read because run-stats already omits those entries.
    • A quarantined 8K/1K result is recorded as a PowerX publication error, like a failed one.
  • Versions. mapBenchmarkRow, mapAggEvalRow, and a new shared mapRunStats refuse any result_schema_version other than 1. Unstamped rows from current InferenceX main, historical artifacts, and GCS backfills ingest as before.
  • Reporting. New skip-tracker counters print in the ingest summary as unsupported result_schema_version and quarantined by InferenceX.
  • Docs. docs/data-pipeline.md describes the contract handling.

InferenceX change

Python wrote non-finite floats in rejected_rows.json as bare NaN or Infinity tokens, which JSON.parse rejects, and a NaN row is one of the contract's own rejection cases. SemiAnalysisAI/InferenceX@72e9b2334 on #3806 writes them as strings such as "NaN".

#1293 keeps result_schema_version: 1 out of benchmark metrics. It is independent of this PR, and both are needed.

Checks

bun run typecheck, bun run lint, bun run fmt, and bun run test:unit pass locally.

…versions

InferenceX collectors leave rows that break the result row contract out of
results_<prefix> and eval_results_<prefix> and list them in rejected_rows_*
artifacts (SemiAnalysisAI/InferenceX#3806). The per-config bmk_* and eval_*
artifacts still carry those rows, and the ingest reads them directly.

CI and GCS ingests now read the rejected_rows lists before writing. They skip
a per-config benchmark file whose <artifact>/<file> path and content match an
entry, and a per-config eval task whose results file and task match one. An
unreadable or unidentifiable list fails the ingest instead of being ignored.

Benchmark, aggregate eval, and run-stats rows stamped with a
result_schema_version other than 1 are refused. Unstamped rows from current
InferenceX main and historical artifacts ingest as before. Both skips are
counted by the skip tracker and printed in the ingest summary.
@vercel

vercel Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
inferencemax-app Ready Ready Preview Oct 8, 2026 3:20pm UTC

Request Review

This branch was successfully deployed

1 active deployment
Preview — 7e51aece Deployed Oct 8, 2026 by vercel[bot]
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.

1 participant