ci(forge-e2e): dispatch through Dispatron, keep the reporting here - #1496
Draft
zoroyihan7 wants to merge 1 commit into
Draft
ci(forge-e2e): dispatch through Dispatron, keep the reporting here#1496zoroyihan7 wants to merge 1 commit into
zoroyihan7 wants to merge 1 commit into
Conversation
The same split as ci-e2e, on the script that was copy-pasted from it: submit, poll, translate and cancel move behind `dispatron-ci`, and the commit status and the sticky comment stay. Dispatch is the same for every repository that wants a GPU check and was duplicated per check; how this repository annotates its own pull requests is nobody else's business. What this loses, and it is worth stating rather than discovering: the performance rows. `fetch_forge_result` read the run's stdout back through the retired backend's log-search route, and Dispatron has no such route. The renderer already guards that whole block on having a result, so the comment simply omits baseline, best, speedup, validation and iterations. That is a real loss and a small one. Those rows have not been produced for some time: the fetch runs on the Succeeded branch only, and the last hundred workflow runs contain no successful GPU job at all; further back, in a window where the job was passing, a green run's log carries no `__FORGE_RESULT__` either. Nobody has said the numbers went missing. Restoring them needs a result channel on the run record rather than a log scrape -- Dispatron's TODO.md carries that question. The timeline rows are not lost. The renderer reads them out of `detail.orchestration.conditions[]`, and the same three instants come back on the terminal event, so they are put back into the shape it already reads rather than changing it. Otherwise queue-to-dispatch, run time and total would all render as "–". `E2E_INFRA_TYPE` and its kubernetes-only check go with the endpoint that honoured them: which infrastructure a run lands on is Dispatron's platform row to decide, not the caller's to assert. Exercised against a stub over every outcome -- succeeded, failed with a multi-line platform error, cancelled, timeout, and the CLI dying before it dispatched anything, which is reported as "never dispatched" rather than as a failed run. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
What
The same split as #1489, applied to the check that was copy-pasted from the same script: submit, poll, translate and cancel move behind
dispatron-ci; the commit status and the sticky comment stay here.DO NOT MERGE yet — it depends on Dispatron changes that are not deployed, and on GPU capacity that the cluster does not currently have.
Why
Dispatch is the same for every repository that wants a GPU check, and it was duplicated per check as well as per repository — this script and
ci-e2e-dispatch.shsharepost_status,report_upsert,gh_status_on,summaryandcleanupverbatim. How this repository annotates its own pull requests is nobody else's business and stays.What this loses
The performance rows.
fetch_forge_resultread the run's stdout back through the retired backend's log-search route (GET /workloads/{uid}/logs?keywords=__FORGE_RESULT__) and Dispatron has no such route. The renderer already guards that whole block on having a result, so the comment omits baseline, best, speedup, validation and iterations.It is a real loss and a small one, and the evidence is worth recording:
Succeededbranch only;__FORGE_RESULT__at all;So the numbers have been absent for some time and nobody has said so. Restoring them needs a result channel on the run record rather than a log scrape; Dispatron's
TODO.mdcarries that question.What this does not lose
The timeline. The renderer reads queue→dispatch / run time / total out of
detail.orchestration.conditions[]. The same three instants come back on the CLI's terminal event, so they are put back into the shape it already reads rather than changingforge_e2e_report.py. Without that wrapper all three would render as–.Also gone
E2E_INFRA_TYPEand itskubernetes-only check, with the endpoint that honoured them. Which infrastructure a run lands on is Dispatron's platform row to decide, not the caller's to assert.Tested
Driver exercised against a stub CLI over every outcome:
<br>The rendered comment was checked with a stubbed
curl, including the restored timeline rows.Depends on
Dispatron: a Claw task-DAG launcher, a
kernelforgespec builder that carries the run script, a task-backed evidence source, and CLI flags--kind/--image/--pull-ref. All committed onfeat/facade-hyperloom-spec, none deployed.Blast radius
None while unmerged. A workflow reaches a run through the PR's own merge ref, so every other PR keeps main's script and the incumbent backend.