docs(ci): document the three-stage validation ladder (ROCMAI-431) - #465
juhovainio wants to merge 2 commits into
Conversation
46f87e6 to
930f816
Compare
tomastola
left a comment
There was a problem hiding this comment.
What the change does. Docs-only: adds a "three-stage validation ladder" section to docs/ci-hardware-testing.md (per-PR, nightly, release-candidate gates), a section on why the serve engine is not a matrix axis, and notes on the (platform, channel) report columns and the e2e-prewarm pin flags. I checked the new claims against the code at this head. The workflow triggers, lane names, nightly cron and channel matrices, effective_serve_engine behaviour and report column keying are accurate. Two claims are not (below).
Coverage. Single full read of the PR's own diff (one file), checked against the workflows, xtask and capability.rs at head 930f816. This head is a rebase of the previously reviewed 46f87e6; the PR's own diff is byte-identical, and the parent commits that moved touch none of the code this doc describes. I did not read the earlier discussion before forming the findings and did not run any tests.
Needs fixing before merge
- The
e2e-prewarmparagraph (inline) describes--version/--build-datein the present tense, but that code is not in this tree, and the ladder section of the same doc says it ships in #464. Someone following the prewarm section would pass a flag that does not exist.
Non-blocking
- The per-PR row says it covers the 4 platform jobs, but
e2e-gpu-strix-ubuntualready runs a[release, nightly]channel matrix per PR (inline). - "cannot be silently undone" overstates what
self_hosted_workflow_owns_the_gpu_laneschecks (inline).
Open decisions for the author (not defects)
- The
effective_serve_enginesource is pasted verbatim into the doc. It reads well, but it drops the source's WSL comment and will drift silently whencapability.rschanges. Referencing the function by name, as the rest of the doc does, would age better. Deliberate? - The paragraph hard-codes #415 and #464 and "as of this writing". It goes stale once either merges. A ticket reference, or a marker whoever merges them will find, is easier to keep true.
The merge decision is yours; this review is posted as a comment and files no approval or change request.
| - prunes with `rocm storage remove-old-installs` after any install, update, or | ||
| repair, so the multi-version cache stays bounded. | ||
|
|
||
| `e2e-prewarm` also accepts mutually exclusive `--version`/`--build-date` |
There was a problem hiding this comment.
The flags described here do not exist yet. This paragraph says e2e-prewarm "also accepts mutually exclusive --version/--build-date flags" and that "today no caller in this repo passes either flag yet". There is no --version/--build-date handling under xtask/src at this head, and the ladder section of this same doc (lines 43-49) says they ship in #464, which is open and stacked on the also-open #415. The code and the ladder paragraph are the accurate side; this paragraph is not. Reword it as future/conditional ("#464 adds…"), drop it in favour of the single mention in the ladder section, or land this PR after #464.
|
|
||
| | Rung | Workflow | Trigger | Lanes | Blocks a merge/tag? | | ||
| |---|---|---|---|---| | ||
| | Per-PR smoke gate | `e2e-selfhosted.yml` | `push`/`pull_request`/`merge_group` (see "Triggers") | The 4 jobs in the Platforms table below | No — absent from the required-status-check list | |
There was a problem hiding this comment.
Per-PR row is incomplete (non-blocking). "The 4 jobs in the Platforms table" leaves out that e2e-gpu-strix-ubuntu in e2e-selfhosted.yml already has strategy.matrix.channel: [release, nightly] and uploads e2e-gpu-strix-ubuntu-${{ matrix.channel }}-report (from the ROCMAI-125 parent commit). So the per-PR gate is really 5 job runs and is not release-channel-only; the channel matrix and the two-column report (line 177) are not nightly-only. Worth stating in the row.
There was a problem hiding this comment.
Fixed in 6534052 — the row now states e2e-gpu-strix-ubuntu runs both its [release, nightly] channel legs per PR (ROCMAI-125).
| thus their own concurrency group — means an offline runner can only ever stall | ||
| that workflow's own supersession, never `ci.yml`'s required checks. See | ||
| `EAI-7548`. | ||
| `EAI-7548`. `xtask/src/workflow_contract.rs`'s |
There was a problem hiding this comment.
"cannot be silently undone" overstates the test (non-blocking). self_hosted_workflow_owns_the_gpu_lanes (xtask/src/workflow_contract.rs) only asserts sh.contains(job) for the three job keys, a substring check that any mention in a comment satisfies. It also does not cover e2e-wsl, which a separate test handles. Suggest "requires the three job keys to appear in the file".
There was a problem hiding this comment.
Fixed in 6534052 — replaced with your suggested wording: the test requires the three job keys to appear in e2e-selfhosted.yml, so moving one back to ci.yml fails CI rather than merging unnoticed.
930f816 to
a01b7b8
Compare
|
Addressed the review in
Left the two open-decisions-for-the-author items (the pasted
|
a01b7b8 to
272a672
Compare
272a672 to
6534052
Compare
Add the missing framing to docs/ci-hardware-testing.md: the three self-hosted GPU gates (per-PR smoke, nightly coverage, release-candidate regression) and how they differ; the validation axes (OS, hardware, channel, SDK-version); why the serve engine isn't an independently selectable matrix axis (quotes effective_serve_engine()); and a short addendum on e2e-prewarm's --version/--build-date pin flags. No lane, artifact, or job-order changes, so every contract-tested table/list/ sentence in the doc is left byte-identical. ROCMAI-431 Signed-off-by: Juho Vainio <juho.vainio@amd.com>
Review found the --version/--build-date paragraph claiming present-tense availability for a flag pair that isn't in this tree yet (ships in #464, stacked on #415, neither merged) — contradicted the ladder section's own "ships in #464" framing two paragraphs up. - e2e-prewarm --version/--build-date: reworded to future tense, matching the ladder section. - Per-PR row: note e2e-gpu-strix-ubuntu already runs both channel legs per PR, not just 4 flat jobs. - "cannot be silently undone": reworded to match what self_hosted_workflow_owns_the_gpu_lanes actually checks (job keys present as text, not a structural pin). Left the two open-decisions-for-the-author items untouched per review (non-defects). Signed-off-by: Juho Vainio <juho.vainio@amd.com>
6534052 to
3b59f96
Compare
Depends on #463
In plain English
Documentation only, no code changes. Explains the three levels of automated testing we now have (a quick check on every pull request, a deeper check every night, and a full regression check before a release), so it is clear what each one covers and how the in-progress PRs above fit together. Needs #463 merged first so the doc matches the lane changes that PR makes.
Summary
Adds the missing framing to
docs/ci-hardware-testing.md:e2e-selfhosted.yml), the nightly coverage gate (nightly.yml, now covering 6 platforms incl. R9700/rad3 and MI350P, ROCMAI-125/ROCMAI-429), and the release-candidate regression gate (e2e-selfhosted.ymlonrelease/**, ROCMAI-120/EAI-8761). States plainly that the release-candidate rung's trigger ships in PR ci(e2e): auto-trigger self-hosted E2E matrix on release-branch push (EAI-8761) #415 and its SDK-version pin flags in PR feat(e2e-prewarm): pin the SDK version instead of always tracking latest (ROCMAI-430) #464, both stacked but not yet merged, and that no matrix-levelsdk_version: [current, n-1, n-2]axis exists anywhere (deferred in feat(e2e-prewarm): pin the SDK version instead of always tracking latest (ROCMAI-430) #464, no repo mechanism mapsn-1/n-2to a concrete version).xtask/src/workflow_contract.rs'sself_hosted_workflow_owns_the_gpu_lanespinning the three per-PR job names by name (EAI-7548 rationale).(platform_slug, channel)column keying (ROCMAI-429).effective_serve_engine()fromtests/e2e-cucumber/src/capability.rsverbatim, explaining why every Strix lane is lemonade-only ande2e-gpu(MI300X) is the only per-PR vLLM lane.e2e-prewarm's--version/--build-datepin flags (ROCMAI-430).No lane, artifact, or job-order changes in this PR, so every contract-tested table/list/sentence in the doc (
hardware_testing_docs_cover_all_self_hosted_platforms) is left byte-identical — verified by running the full xtask suite before and after.Every factual claim above was cross-checked directly against the workflow YAML and Rust source (not against the Jira tickets), including a correction of a prior assumption: the doc's existing canonical-artifact-list paragraph was suspected stale but is in fact still correct, since
nightly.ymlstill uploadse2e-gpu-rad3-*-report/e2e-gpu-mi350p-*-reporteven though the per-PR jobs were removed.Verification
cargo fmt --all -- --checkclean.cargo test -p xtask --all-targets: 155/0/0/0, includinghardware_testing_docs_cover_all_self_hosted_platforms.grep -rn 'e2e-gpu|strix|mi350p|rad3' docs/ README.mdoutside this file: no hits (no duplicated lane claims elsewhere).No Gherkin scenario: this PR only edits documentation prose, no product or test behavior changes.