Skip to content

[CI] Parity: fix upstream job links - #3536

Open
ethanwee1 wants to merge 13 commits into
ROCm:developfrom
ethanwee1:ew/parity-fix-job-links-develop
Open

[CI] Parity: fix upstream job links#3536
ethanwee1 wants to merge 13 commits into
ROCm:developfrom
ethanwee1:ew/parity-fix-job-links-develop

Conversation

@ethanwee1

@ethanwee1 ethanwee1 commented Aug 3, 2026

Copy link
Copy Markdown

Summary

  • record the workflow run ID for each downloaded shard job
  • build parity report links from the per-job run mapping instead of one overwritten run ID
  • retain the legacy single-run file as a fallback for older downloads

Test plan

  • Run Python syntax checks for both modified scripts
  • Verify the branch is limited to the downloader and report summarizer

Made with Cursor

Preview topology update

This branch now uses preview only and builds canonical per-shard links for the scheduled rocm-preview topology. #3554 owns the canonical Preview config; duplicate Preview/config hunks are now inherited from #3535. Land after #3535.

Alignment landing order

Depends on #3554 and lands after #3535. It is the canonical job-link layer consumed by subsequent reports.

August 25 refresh

Parity stack merge order

All open parity PRs are targeted to develop. Merge in this order:

  1. [CI] Parity: classify newly observed ROCm skips #3523 — skip classifier consolidation (merged)
  2. [CI] Parity: replace ROCm nightly with scheduled Preview #3554 — Preview topology root (merged)
  3. [CI] Parity: discover job topology from workflow YAML #3535 — dynamic workflow/job topology discovery
  4. [CI] Parity: fix upstream job links #3536 — per-job run-ID mapping and upstream links
  5. [CI] Parity: avoid variant-only trunk runs for ROCm Inductor #3559 — canonical full-trunk ROCm Inductor selection
  6. [CI] Parity: skip missing configs without aborting report #3558 — missing-config handling
  7. [CI] Parity: preserve partial reports on download failure #3557 — partial-report preservation and final failure
  8. [CI] Parity: use authoritative flaky-test summaries #3560 — authoritative flaky-test attribution
  9. [CI] Parity auto-trigger: collect scheduled architectures including Preview #3555 — multi-architecture auto-trigger with per-config readiness
  10. [CI] Parity: resolve sha=latest on current develop #3556 — latest complete-config SHA selection (hold until corrected)

#3259 is a separate follow-up: reconstruct FrameworkWeb ingestion after the operational stack lands.

ethanwee1 and others added 2 commits August 3, 2026 20:15
The "Job ID" links in the parity summary were built by pairing every shard
dir's "_<job_id>" with a single "_wf_run_id" file. But the default,
distributed and inductor configs resolve to DIFFERENT upstream runs (e.g.
mi350 default+inductor come from a trunk push while distributed comes from
periodic / a trunk fallback), and they all unzip into the same rocm_xml
folder. "_wf_run_id" is overwritten per config (last write wins), so shards
from the other runs got a URL like runs/<trunk_run>/job/<distributed_job_id>
- a run the job never belonged to, which 404s ("busted" in the summary).

Concrete case: run 30444136839 (mi350) linked
runs/30416143612/job/90430654935, but job 90430654935 (mi350 distributed
shard 1) actually lives in run 30404499951.

download_testlogs now records a job_id -> run_id map in "_wf_run_ids.json"
next to the shard dirs (accumulated across configs), and
summarize_xml_testreports.py looks each shard's job id up in that map,
falling back to the legacy single "_wf_run_id" only when absent. Job URLs
are now built with the run that actually produced each shard.
Read CUDA and ROCm shard totals from workflow YAML at the tested commit, self-heal renamed job prefixes, and follow reusable-workflow artifacts to their hosting run.
Keep topology discovery aligned with the scheduled rocm-preview lane and remove the retired nightly key.
Keep job-link generation aligned with the scheduled rocm-preview lane and remove the retired nightly key.
Prevent same-SHA jobs from another ROCm workflow from self-healing to the wrong prefix by traversing nested reusable runs and filtering candidates by architecture.
Use the live rocm-preview mi350 topology and remove the retired nightly CLI/config key on the current develop history.
Match the unique rocm-preview lane without pinning its OS, Python, or runner suffix so routine upstream renames do not disable auto-parity.
Resolve the stacked Preview regex change while preserving canonical per-shard job URLs.

# Conflicts:
#	.automation_scripts/pytorch-unit-test-scripts/parity_job_config.json
@ethanwee1
ethanwee1 changed the base branch from ethanwee/parity-preview-replacement to main August 11, 2026 19:33
@ethanwee1
ethanwee1 changed the base branch from main to ethanwee/parity-preview-replacement August 11, 2026 19:36
@ethanwee1
ethanwee1 changed the base branch from ethanwee/parity-preview-replacement to develop August 11, 2026 19:37
Use the restored eight-shard default matrix so parity downloads every live MI300 shard.
Use the restored eight-shard default matrix so parity downloads every live MI300 shard.
Resolve the Preview matcher in favor of the resilient workflow token and refresh fallback shard counts to current upstream topology.
@ethanwee1
ethanwee1 changed the base branch from develop to ethanwee/parity-discover-jobs-develop August 25, 2026 19:44
jithunnair-amd pushed a commit that referenced this pull request Aug 25, 2026
## Summary
- replace the retired `nightly` parity key with `preview`
- match the live daily `rocm-preview`
`linux-noble-rocm-preview-py3.12-mi350` jobs
- use the current 8/3/2 default/distributed/inductor fallback matrix

This clean replacement is based on current `develop`; it supersedes
#3406, whose pre-reset history cannot merge without a force-push or
unrelated-history merge.

## Test plan
- [x] Parse parity config JSON
- [x] Compile `download_testlogs`
- [x] Parse `parity.yml` as YAML
- [x] Verify all 13 test jobs against scheduled [pytorch/pytorch run
31344407133](https://github.com/pytorch/pytorch/actions/runs/31344407133)
- [x] Run end-to-end Preview parity dispatch

## Dependencies
Land this before the Preview auto-trigger update in #3555 and before
retargeting the operational parity PRs.

Made with [Cursor](https://cursor.com)

## Alignment landing order

This is the root dependency. After it lands, retarget the stacked PRs to
`develop` in this order:

1. #3535 dynamic workflow/prefix/shard discovery
2. #3536 canonical per-shard job URLs
3. #3523 consolidated classifier rules (independent base; may land
earlier)
4. #3559 variant-run filtering
5. #3558 graceful missing-config handling
6. #3557 partial-report preservation
7. #3560 authoritative flaky attribution
8. #3556 latest-SHA resolution
9. #3555 scheduled multi-architecture automation last

Validation: full Preview [run
31506711303](https://github.com/ethanwee1/pytorch/actions/runs/31506711303)
and combined Preview+MI350 [run
31507307756](https://github.com/ethanwee1/pytorch/actions/runs/31507307756)
both succeeded on matching SHA `cf18dda7`.

## August 25 refresh
- Merged current ROCm `develop` and reran JSON, Python, and workflow
YAML validation.

- The previously documented Preview and combined Preview+MI350 runs
satisfy the end-to-end checklist item.
@ethanwee1
ethanwee1 changed the base branch from ethanwee/parity-discover-jobs-develop to develop August 26, 2026 16:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant