Skip to content

CollectiveX MVP v0.1 JIT artifact explorer / CollectiveX MVP v0.1 即时产物结果浏览器#497

Draft
Oseltamivir wants to merge 13 commits into
masterfrom
collectivex
Draft

CollectiveX MVP v0.1 JIT artifact explorer / CollectiveX MVP v0.1 即时产物结果浏览器#497
Oseltamivir wants to merge 13 commits into
masterfrom
collectivex

Conversation

@Oseltamivir

@Oseltamivir Oseltamivir commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Summary

Finalizes the /collectivex V1 explorer around just-in-time GitHub Actions artifact retrieval. It replaces the synthetic preview and requires no attached filesystem, results server, database, or managed storage.

Data boundary

  • Discovers the latest successful V1 publication workflow and downloads only cxpublication-v1-* with a server-side GITHUB_TOKEN.
  • Requires one root NDJSON entry and validates ZIP layout, size bounds, UTF-8, schema, promotion status, and filename/body SHA-256.
  • Serves version-scoped channel and immutable dataset URLs with bounded retry, timeout, and cache behavior.
  • Preserves publisher ownership of retry selection, eligibility, cohorts, rankings, and recommendations.
  • Fails closed when no promoted artifact exists or GitHub is unavailable.

Interface

  • Adds an explicit benchmark-version selector backed by the shared supported-version list; V1 is the only published version today.
  • Keeps desktop, mobile, English, and Chinese states aligned, including the unavailable-artifact state.
  • Preserves normal/low-latency, EP8/EP16, scale-up/scale-out, topology, payload semantics, 512-sample timing, coverage, evidence, and decisions.

Validation

  • TypeScript, Oxlint, Oxfmt, and git diff --check pass.
  • 49 focused unit tests pass.
  • 23 CollectiveX Cypress scenarios pass.
  • Fixture-mode production build completes all 823 static pages.

中文说明

本 PR 完成基于 GitHub Actions 产物即时读取的 /collectivex V1 浏览器。它移除了合成预览,不需要挂载文件系统、results server、数据库或 managed storage。

数据边界

  • 使用 server-side GITHUB_TOKEN 发现最新成功的 V1 publication workflow,并且只下载 cxpublication-v1-*
  • 要求 ZIP 根目录只有一个 NDJSON entry,并校验 ZIP layout、大小上限、UTF-8、schema、promotion 状态及 filename/body SHA-256。
  • 通过带版本的 channel URL 与 immutable dataset URL 提供数据,并设置有界重试、超时和缓存策略。
  • Retry selection、eligibility、cohort、ranking 与 recommendation 继续完全由 publisher 决定。
  • 当不存在已 promotion 的产物或 GitHub 不可用时直接 fail closed。

界面

  • 新增由共享支持版本列表驱动的 benchmark-version selector;当前只有 V1 可发布。
  • 桌面端、移动端及中英文状态保持一致,包括 artifact 不可用状态。
  • 保留常规/低延迟、EP8/EP16、域内/跨域、拓扑、载荷语义、512 样本计时、覆盖、证据与决策视图。

验证

  • TypeScript、Oxlint、Oxfmt 与 git diff --check 通过。
  • 49 个定向单元测试通过。
  • 23 个 CollectiveX Cypress 场景通过。
  • Fixture mode 生产构建完成全部 823 个静态页面。

@vercel

vercel Bot commented Jun 25, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
inferencemax-app Ready Ready Preview, Comment Jul 8, 2026 4:29pm

Request Review

Replace the synthetic preview with server-side JIT discovery and validation of the promoted CollectiveX V1 GitHub Actions artifact. Scope channel, immutable dataset, query cache, and UI selection by benchmark version while preserving publisher-owned decisions.

中文:将合成预览替换为服务端即时发现并校验 CollectiveX V1 GitHub Actions 发布产物。Channel、不可变数据集、查询缓存与 UI 选择器均按基准版本隔离,同时继续由 publisher 独占资格判定、排名与推荐逻辑。
The backend now publishes a v1 dataset from a single qualifying run
(qualification index 1) and no longer measures cross-allocation
stability. Align the frontend consumer to the new emitted shape:

- Drop the per-point `stability` block and the series/cohort
  eligibility stability fields (`stable_p50`, `stable_p99`,
  `p50_max_min_ratio`, `p99_max_min_ratio`) from the zod schemas,
  and pin `promotion.required_allocations` to 1 and
  `promotion.qualification_indices` to [1].
- Remove the reader's per-point qualification-evidence cross-check
  (the removed `stability.qualification_indices`); keep the evidence
  and coverage/selected-attempt invariants.
- Remove stability rendering from the inventory, decision tables,
  display cohorts, and chart tooltip; relabel "3-run evidence" ->
  "Evidence" and "3/3 qualification runs" -> "1/1 qualification run".
- Drop the dead `unstable-p50`, `unstable-p99`, and
  `awaiting-repeat-allocations` reason labels (no longer emitted).
- Regenerate full-catalog.v1.json for the frozen 322-case matrix
  (167 runnable / 155 unsupported, 1314 points) and refresh the
  pinned file/matrix digests and counts in data.test.ts.
- Update the fixture and reader/e2e tests to the single-allocation,
  no-stability shape.
…ntity

The CollectiveX release version becomes a first-class numeric identity
(1, 2, 3, ...) instead of the hardcoded string "v1", matching the backend
release marker's "version": N and the cxpublication-<N>-* artifact name.
Future releases increment the number; a version dropdown selects which one.

- types.ts: COLLECTIVEX_VERSIONS is [1] (numeric); add COLLECTIVEX_DEFAULT_VERSION
  (max), collectiveXVersionLabel (`V${n}`), and parseCollectiveXVersion (strict
  positive-int guard). Frozen data-format literals (collectivex.public.v1,
  cx*-v1-*, collectivex_public_v1_*.ndjson) are schema-version and stay unchanged.
- SelectControl/SelectOption generalized to `string | number`; Radix Select is
  string-native, so numeric option values round-trip via String() and are
  recovered from the option list on change.
- route.ts validates the URL version segment through parseCollectiveXVersion
  (404 on unknown) instead of a blind cast.
- reader/api/use-collectivex default to COLLECTIVEX_DEFAULT_VERSION.
- collectivex-github PUBLICATION_POLICY keyed by numeric version.
- promotion badge is version-agnostic ("Promoted"/"已发布").
Add a run picker that lists eligible (tag + success) publication runs for a
release version on demand and lets the operator pin the view to any one run's
promoted dataset, alongside the numeric version dropdown.

- types: collectivex.runs.v1 listing schema (frozen data-format literal) and
  optional partial-coverage promotion fields (coverage_scope, covered_skus)
- reader: parseCollectiveXRuns, fetchCollectiveXRuns, and fetchCollectiveXByDigest
  (content-hash-verified, promoted-only, synthesizes the channel pointer)
- backend: /collectivex-data/<version>/runs.json enumerates candidates via
  listCollectiveXPublications with a 60s edge cache
- hooks/api: useCollectiveXRuns (gated behind Load runs) + useCollectiveXRun
- UI: Run control (Load runs then select), version dropdown, and an error-card
  fallback to the latest published channel

Full and partial coverage both parse; pre-partial datasets remain valid.
…ic reasons

Align the frontend consumer with the single-run publisher:

- types.ts: trial_count 192 -> 64 (single allocation, 64 trials); admit
  0.0 data-rate percentiles for host-staging components that spend real
  latency moving zero logical bytes, while keeping latency strictly
  positive.
- test-fixture.ts: trial_count 192 -> 64 across trial diagnostics.
- reader.test.ts: cover the zero-byte / zero-rate host-staging component
  and assert negative rate and zero latency are still rejected.
- CollectiveXDisplay.tsx: in free-form diagnostics mode (no cohort
  pinned), surface the distinct eligibility reasons across the revealed
  series so a flagged series explains itself without pinning a cohort.
- collectivex.cy.ts: new e2e for the per-series reason line; realign six
  stale assertions to the single-run shape (64 trials, 1 allocation,
  8 attempts, single source bundle, no cross-allocation stability).
A promoted public dataset can legitimately carry rankings and
sensitivities but zero recommendations: recommendations are
unique-p99-latency-winner callouts, and when an official cohort's
candidates fall within the bootstrap equivalence band the winners tie,
so no recommendation is emitted. This is a routine, honest outcome for
single-allocation v1 publications.

The reader's recommendation-coverage check already derives 0 as the
expected count in that case, but the decision-graph gate then rejected
the same dataset for having an empty recommendations array — an internal
contradiction. Require rankings (the decision graph) but not
recommendations. Verified end-to-end against the real published v1
artifact (49 series, 66 rankings, 0 recommendations) and with a new
regression test.
…lacks decision-grade coverage

The landing view combined the Controlled (decision-grade only) evidence scope
with the decode phase. On a partial-coverage publication — e.g. a single-run v1
where the strict within-run trial gate leaves whole SKUs diagnostic-tier — the
only decision-grade decode cohorts are H100/H200, so Controlled hid every other
working SKU (B200, MI300X) by default. The page appeared to have only two SKUs.

Choose the landing scope per dataset: keep Controlled when the decision-grade
set already covers every SKU measured at the landing phase (decode); otherwise
fall back to the full-evidence (diagnostic) scope so no working SKU is hidden.
The scope is re-evaluated per content digest on a version/run switch, while an
in-session user toggle is preserved.

Make the diagnostic scope a true full-evidence superset (all measured series,
both tiers, badged by status) so decision-grade series stay visible alongside
the rest and the SKU/backend/routing dropdowns run off the complete dataset.
Reword the diagnostic warning accordingly.

Tests: unit discriminator in data.test.ts; e2e updated for the superset
line count and warning text, plus a new default-to-full-evidence case.
…facts

Rework the CollectiveX frontend around the trimmed return-code-only
artifact contract (collectivex.matrix.v1 / .ep.v1 / .terminal.v1). The
GitHub loader assembles a run dataset at request time from the sweep's
matrix + shard artifacts, newest-completed-run wins regardless of
conclusion, and runs are selected by the matrix's numeric `version`
field: latest/list skip runs tagged for another version and by-id 404s
on a mismatch. The format tag stays collectivex.matrix.v1 as the schema
id; the numeric version is the content axis the UI selects on.

Rewrites the reader, data model, display/chart/inventory/tables
components, API surface, route, and the vitest + cypress suites for the
neutral model.
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