From e92c9ecdd1559f44061426518304f7eaef5ff45f Mon Sep 17 00:00:00 2001 From: Oseltamivir <58582368+Oseltamivir@users.noreply.github.com> Date: Wed, 28 Oct 2026 01:20:30 +0800 Subject: [PATCH 1/2] CollectiveX: ask InferenceX-app to ingest results that land on main MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A push to main that changes collectivex/results/ sends an ingest-collectivex repository_dispatch to InferenceX-app with the commit SHA, the same way merge-ingest hands benchmark results to the app. The app loads that commit's committed results into its CollectiveX database. CollectiveX:结果合入 main 时通知 InferenceX-app 导入 推送到 main 且修改了 collectivex/results/ 时,会向 InferenceX-app 发送带有提交 SHA 的 ingest-collectivex repository_dispatch,与 merge-ingest 将基准结果交给应用的方式相同。应用会将该提交中已提交的结果导入其 CollectiveX 数据库。 --- .../workflows/collectivex-results-ingest.yml | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/collectivex-results-ingest.yml diff --git a/.github/workflows/collectivex-results-ingest.yml b/.github/workflows/collectivex-results-ingest.yml new file mode 100644 index 0000000000..5db304269d --- /dev/null +++ b/.github/workflows/collectivex-results-ingest.yml @@ -0,0 +1,35 @@ +name: CollectiveX Results Ingest + +# Committed CollectiveX results on main are the dashboard's source of truth. Each push that changes +# them asks InferenceX-app to load that commit into its CollectiveX database. + +on: + push: + branches: [main] + paths: + - "collectivex/results/**" + +permissions: {} + +concurrency: + group: collectivex-results-ingest-${{ github.sha }} + cancel-in-progress: false + +jobs: + dispatch: + name: Trigger CollectiveX ingest + runs-on: ubuntu-latest + steps: + - name: Dispatch to InferenceX-app + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + SHA: ${{ github.sha }} + with: + github-token: ${{ secrets.FRONTEND_PAT }} # zizmor: ignore[secrets-outside-env] + script: | + await github.rest.repos.createDispatchEvent({ + owner: "SemiAnalysisAI", + repo: "InferenceX-app", + event_type: "ingest-collectivex", + client_payload: { sha: process.env.SHA }, + }); From b4d0a38065c70b9b5ad89bb636d036c8cc7003c5 Mon Sep 17 00:00:00 2001 From: Oseltamivir <58582368+Oseltamivir@users.noreply.github.com> Date: Wed, 28 Oct 2026 14:39:52 +0800 Subject: [PATCH 2/2] CollectiveX: let the results ingest be re-sent by hand for a named commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A dispatch sent before the app can receive it is dropped, so a manual run can resend any commit. The run name carries the commit, and a malformed SHA fails before dispatch. 可按指定提交手动重新发送结果导入。应用尚无法接收时发出的 dispatch 会被丢弃,因此可手动重新发送任意提交。 运行名称包含该提交;格式错误的 SHA 会在发送前失败。 --- .github/workflows/collectivex-results-ingest.yml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/collectivex-results-ingest.yml b/.github/workflows/collectivex-results-ingest.yml index 5db304269d..7222697e4c 100644 --- a/.github/workflows/collectivex-results-ingest.yml +++ b/.github/workflows/collectivex-results-ingest.yml @@ -1,4 +1,5 @@ name: CollectiveX Results Ingest +run-name: CollectiveX results ingest ${{ inputs.sha || github.sha }} # Committed CollectiveX results on main are the dashboard's source of truth. Each push that changes # them asks InferenceX-app to load that commit into its CollectiveX database. @@ -8,11 +9,18 @@ on: branches: [main] paths: - "collectivex/results/**" + # Re-sends a commit by hand: one pushed before the app could receive it, or one whose ingest failed. + workflow_dispatch: + inputs: + sha: + description: "InferenceX commit whose collectivex/results to ingest (default: the dispatch ref)" + required: false + type: string permissions: {} concurrency: - group: collectivex-results-ingest-${{ github.sha }} + group: collectivex-results-ingest-${{ inputs.sha || github.sha }} cancel-in-progress: false jobs: @@ -23,10 +31,14 @@ jobs: - name: Dispatch to InferenceX-app uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 env: - SHA: ${{ github.sha }} + SHA: ${{ inputs.sha || github.sha }} with: github-token: ${{ secrets.FRONTEND_PAT }} # zizmor: ignore[secrets-outside-env] script: | + if (!/^[0-9a-f]{40}$/.test(process.env.SHA)) { + core.setFailed(`not a full commit SHA: ${process.env.SHA}`); + return; + } await github.rest.repos.createDispatchEvent({ owner: "SemiAnalysisAI", repo: "InferenceX-app",