-
Notifications
You must be signed in to change notification settings - Fork 9
ci(e2e): add an MI350P self-hosted E2E lane #341
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
888baab
417a528
5cf4f0f
c446667
fd0ceaf
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -413,6 +413,7 @@ fn parse_descriptor(name: &str) -> Descriptor { | |
| "" | "report" => ("Mock", "Linux"), | ||
| "gpu" => ("MI300X", "Linux"), | ||
| "gpu-rad3" => ("R9700", "Linux"), | ||
| "gpu-mi350p" => ("MI350P", "Linux"), | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Non-blocking, and it predates this PR — but the new lane makes it a third omission, and the text is rendered by the very report the new column now shows up in. The legend enumerates the hardware platforms by hand in two places in this file: the Markdown step summary ("MI300X / Strix Halo run on real self-hosted GPU hardware with real engines") and the HTML legend ( Since it's hand-maintained prose with no guard on it, the durable fix is to stop enumerating — something like "the non-Mock platforms run on real self-hosted GPU hardware; non-blocking while proven out" — rather than adding a name every time a lane lands. Happy either way on whether that belongs here or in a follow-up.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Agreed, and done here rather than as a follow-up — it's two lines and the alternative is Both places now say "Every other platform — real self-hosted GPU hardware; non-blocking One wrinkle worth noting since it changed the wording I first wrote: the two surfaces |
||
| "gpu-strix-ubuntu" => ("Strix Halo", "Ubuntu"), | ||
| "gpu-strix-windows" => ("Strix Halo", "Windows"), | ||
| // Same silicon again, third host boundary: an Ubuntu distro under WSL2 on | ||
|
|
@@ -1298,8 +1299,10 @@ pub fn consolidated_summary_markdown(inputs: &[(String, PathBuf)]) -> String { | |
| forwarding — with no GPU, no model download, and no engine process, so it \ | ||
| runs on a GitHub-hosted runner. It **gates the PR**: it runs on every push, \ | ||
| and if it fails the PR's required check goes red and the PR cannot merge. \ | ||
| **MI300X / Strix Halo** run on real self-hosted GPU hardware with real \ | ||
| engines. They are **non-blocking**: they still run and are reported here, but \ | ||
| **Every other platform** is a real self-hosted GPU host running real \ | ||
| engines — the rows below are the list, so naming them here would only go \ | ||
| stale as lanes are added. They are **non-blocking**: they still run and \ | ||
| are reported here, but \ | ||
| a failure does NOT block the PR from merging (the hardware/runners are still \ | ||
| being proven out, so their results are informational rather than a merge \ | ||
| gate).\n\n\ | ||
|
|
@@ -1935,7 +1938,7 @@ fn legend() -> Markup { | |
| "and gates the PR." | ||
| } | ||
| li { | ||
| b { "MI300X / Strix Halo" } | ||
| b { "Every other platform" } | ||
| " — real self-hosted GPU hardware; non-blocking while proven out." | ||
| } | ||
| li { | ||
|
|
@@ -2219,6 +2222,7 @@ mod tests { | |
| ("e2e-report", "Mock", "Linux"), | ||
| ("e2e-gpu-report", "MI300X", "Linux"), | ||
| ("e2e-gpu-rad3-report", "R9700", "Linux"), | ||
| ("e2e-gpu-mi350p-report", "MI350P", "Linux"), | ||
| ("e2e-gpu-strix-ubuntu-report", "Strix Halo", "Ubuntu"), | ||
| ("e2e-gpu-strix-windows-report", "Strix Halo", "Windows"), | ||
| // Must not fall through to `fallback_descriptor`, which would render | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adding this nightly lane makes a sentence in
tests/e2e-cucumber/README.mdwrong, and the test whose whole job is to prevent that can't see it.README line 185 still reads:
With
e2e-gpu-nightly-mi350pinnightly.yml, that list is now a platform short.The guard is the final
assert!inxtask/src/workflow_contract.rs's docs-coverage test, and it asserts the README contains that exact literal, copied into the test source. So it stays green while its own failure message — "E2E README must identify every nightly job platform" — has stopped being true. The four sibling assertions immediately above it are derived from the YAML (declared_ids,backticked_list_between), which is exactly whydocs/ci-hardware-testing.mdgot updated correctly and this didn't. It's the one hand-copied hole in an otherwise derived net.Minimum fix: add MI350P to the README sentence and to the literal in the test. Better fix, if you're up for it: derive it from
self_hosted_e2e_jobs(&nightly)the way the assertions just above do, so the next lane can't repeat this.Separately, the CI job table a few lines earlier in the same README (~line 168) lists
e2e,e2e-gpu,e2e-gpu-strix-ubuntu,e2e-gpu-strix-windows,e2e-wsl— it's already missinge2e-gpu-rad3, and would now be missinge2e-gpu-mi350ptoo. Nothing guards that table at all; the derived one only readsdocs/ci-hardware-testing.md. Worth adding both rows while you're in the file.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 0d3d644, taking the "better fix" — the sentence is derived now, not
hand-copied.
The README nightly sentence names the nightly job ids in backticks, and the guard
compares them against
self_hosted_e2e_jobs(&nightly), exactly like the fourassertions above it. The literal copy in the test source is gone, so the failure mode
you describe — the guard staying green while its own message stops being true — can't
recur for this sentence.
You were right that the CI job table was worse: no guard at all, and already missing
e2e-gpu-rad3before this lane. Both rows added, and that table is derived too, againste2e-selfhosted.yml— the mock row is matched by workflow so only the self-hosted rowshave to track the YAML, plus a check that none of them is documented as blocking.
I verified both new assertions actually bite rather than trusting a green run: removing
e2e-gpu-nightly-mi350pfrom the sentence fails withand removing the
e2e-gpu-mi350ptable row fails the table assertion the same way.