CollectiveX MVP v0.1 JIT artifact explorer / CollectiveX MVP v0.1 即时产物结果浏览器#497
Draft
Oseltamivir wants to merge 13 commits into
Draft
CollectiveX MVP v0.1 JIT artifact explorer / CollectiveX MVP v0.1 即时产物结果浏览器#497Oseltamivir wants to merge 13 commits into
Oseltamivir wants to merge 13 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
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
Finalizes the
/collectivexV1 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
cxpublication-v1-*with a server-sideGITHUB_TOKEN.Interface
Validation
git diff --checkpass.中文说明
本 PR 完成基于 GitHub Actions 产物即时读取的
/collectivexV1 浏览器。它移除了合成预览,不需要挂载文件系统、results server、数据库或 managed storage。数据边界
GITHUB_TOKEN发现最新成功的 V1 publication workflow,并且只下载cxpublication-v1-*。界面
验证
git diff --check通过。