Skip to content

Actions to collect labels from repos and create them in the monorepo - #5

Merged
jayhawk-commits merged 2 commits into
developfrom
joseph/labels
Apr 23, 2025
Merged

jayhawk-commits merged 2 commits into
developfrom
joseph/labels

Conversation

@jayhawk-commits

Copy link
Copy Markdown
Collaborator

No description provided.

@jayhawk-commits
jayhawk-commits requested a review from Copilot April 23, 2025 14:20
@jayhawk-commits jayhawk-commits self-assigned this Apr 23, 2025

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces two GitHub Actions workflows and accompanying Python scripts to collect labels from source repositories and apply them to the monorepo.

  • Adds a "Collect Labels" workflow to fetch labels from repositories listed in a JSON file.
  • Adds an "Apply Labels" workflow to update/create labels in the monorepo from a YAML file.
  • Implements corresponding Python scripts to handle label collection and application.

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
.github/workflows/collect-labels.yml Adds workflow for collecting labels from specified repos.
.github/workflows/apply-labels.yml Adds workflow for applying labels to the monorepo.
.github/scripts/collect-labels.py Script to fetch labels from repositories and output to a YAML file.
.github/scripts/apply-labels.py Script to retrieve existing labels and update or create new labels.

Comment thread .github/scripts/collect-labels.py Resolved
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@jayhawk-commits
jayhawk-commits requested a review from Copilot April 23, 2025 14:23

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds two GitHub workflow configurations along with supporting Python scripts to retrieve labels from source repositories and apply them to the monorepo.

  • Introduces a workflow to collect labels from specified repositories using a JSON configuration file
  • Adds a workflow to apply labels to the monorepo from a YAML file
  • Provides Python scripts for label collection and creation/updating via the GitHub API

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

File Description
.github/workflows/collect-labels.yml Workflow to trigger label collection from repos
.github/workflows/apply-labels.yml Workflow to trigger label application into the monorepo
.github/scripts/collect-labels.py Script to fetch and merge labels from source repositories
.github/scripts/apply-labels.py Script to create/update labels in the monorepo using GitHub API

@jayhawk-commits
jayhawk-commits merged commit 0f8ec16 into develop Apr 23, 2025
@jayhawk-commits
jayhawk-commits deleted the joseph/labels branch April 23, 2025 14:24
systems-assistant Bot pushed a commit that referenced this pull request Jul 17, 2025
* Bump rocm-docs-core to 1.8.2

* Remove empty package-ecosystem in dependabot

Co-authored-by: Sam Wu <22262939+samjwu@users.noreply.github.com>
systems-assistant Bot pushed a commit that referenced this pull request Jul 22, 2025
* Add initial support for rocJPEG API Trace

* Added tests for rocjpeg

* Formatting
systems-assistant Bot pushed a commit that referenced this pull request Jul 22, 2025
* SWDEV-509568: rocprofiler v1 and v2 API deprecation notice

* correcting typo in warning message
systems-assistant Bot pushed a commit that referenced this pull request Aug 5, 2025
Proposed Change:
The Version String is causing build issue for onnxruntime (SWDEV-521313)
Reverts
[AMD-ROCm-Internal/rocm-core/4](https://github.com/AMD-ROCm-Internal/rocm-core/pull/4)
systems-assistant Bot pushed a commit that referenced this pull request Aug 5, 2025
* Obey CMAKE_BUILD_TYPE

Obey CMAKE_BUILD_TYPE when it is passed on the command line. Previous
behavior remains:

Debug by default
ROCRTST_BLD_TYPE can set build type

* External CI: change trigger from amd-master to amd-mainline

* Added gfx94x and gfx11xx  IDs to enumerator (#5)

* Use idomatic approach to extending CMAKE_MODULE_PATH. (#7)

There are many reasons why there may already be a CMAKE_MODULE_PATH defined.
The idiomatic way to extend it in a project is via list(APPEND).

ROCm/rocminfo#97 submitted by @stellaraccident

Co-authored-by: Stella Laurenzo <Stella.Laurenzo@amd.com>

* Added release trigger for further releases

* Fix for typo in ISA_TO_ID table (#6)

Change-Id: Id0720988fb01079a3ca6f3287dc743d93db4fd0f

* Remove WSL checks for displaying UUID and BDFID

Signed-off-by: lyndonli <Lyndon.Li@amd.com>

* Added KWS check for amd-mainline (#9)

---------

Signed-off-by: lyndonli <Lyndon.Li@amd.com>
Co-authored-by: benrichard-amd <ben.richard@amd.com>
Co-authored-by: Su, Daniel <Daniel.Su@amd.com>
Co-authored-by: Stella Laurenzo <Stella.Laurenzo@amd.com>
Co-authored-by: Mallya, Ameya Keshava <AmeyaKeshava.Mallya@amd.com>
Co-authored-by: Yat Sin, David <David.YatSin@amd.com>
Co-authored-by: lyndonli <Lyndon.Li@amd.com>
jayhawk-commits pushed a commit that referenced this pull request Aug 5, 2025
* Add initial support for rocJPEG API Trace

* Added tests for rocjpeg

* Formatting

[ROCm/rocprofiler-register commit: 366716a]
jayhawk-commits pushed a commit that referenced this pull request Aug 5, 2025
* SWDEV-509568: rocprofiler v1 and v2 API deprecation notice

* correcting typo in warning message

[ROCm/rocprofiler commit: 20415ef]
ammallya pushed a commit that referenced this pull request Aug 6, 2025
* Bump rocm-docs-core to 1.8.2

* Remove empty package-ecosystem in dependabot

Co-authored-by: Sam Wu <22262939+samjwu@users.noreply.github.com>

[ROCm/rocprofiler-systems commit: dc63370]
jayhawk-commits pushed a commit that referenced this pull request Aug 11, 2025
jayhawk-commits pushed a commit that referenced this pull request Aug 11, 2025
* Obey CMAKE_BUILD_TYPE

Obey CMAKE_BUILD_TYPE when it is passed on the command line. Previous
behavior remains:

Debug by default
ROCRTST_BLD_TYPE can set build type

* External CI: change trigger from amd-master to amd-mainline

* Added gfx94x and gfx11xx  IDs to enumerator (#5)

* Use idomatic approach to extending CMAKE_MODULE_PATH. (#7)

There are many reasons why there may already be a CMAKE_MODULE_PATH defined.
The idiomatic way to extend it in a project is via list(APPEND).

ROCm/rocminfo#97 submitted by @stellaraccident

Co-authored-by: Stella Laurenzo <Stella.Laurenzo@amd.com>

* Added release trigger for further releases

* Fix for typo in ISA_TO_ID table (#6)

Change-Id: Id0720988fb01079a3ca6f3287dc743d93db4fd0f

* Remove WSL checks for displaying UUID and BDFID

Signed-off-by: lyndonli <Lyndon.Li@amd.com>

* Added KWS check for amd-mainline (#9)

---------

Signed-off-by: lyndonli <Lyndon.Li@amd.com>
Co-authored-by: benrichard-amd <ben.richard@amd.com>
Co-authored-by: Su, Daniel <Daniel.Su@amd.com>
Co-authored-by: Stella Laurenzo <Stella.Laurenzo@amd.com>
Co-authored-by: Mallya, Ameya Keshava <AmeyaKeshava.Mallya@amd.com>
Co-authored-by: Yat Sin, David <David.YatSin@amd.com>
Co-authored-by: lyndonli <Lyndon.Li@amd.com>

[ROCm/rocminfo commit: aec5d6f]
jayhawk-commits pushed a commit that referenced this pull request Aug 11, 2025
Proposed Change:
The Version String is causing build issue for onnxruntime (SWDEV-521313)
Reverts
[AMD-ROCm-Internal/rocm-core/4](https://github.com/AMD-ROCm-Internal/rocm-core/pull/4)

[ROCm/rocm-core commit: 688caa3]
jayhawk-commits pushed a commit that referenced this pull request Aug 18, 2025
ammallya pushed a commit that referenced this pull request Nov 17, 2025
cherry-pick aca-decode repo changeset: aca-decode repo: f9e5ad5 (HEAD -> main, origin/main, origin/HEAD) Fix bug in Corrected HBM Error being decoded as AFID 34 (#5)
ammallya pushed a commit that referenced this pull request Nov 18, 2025
cherry-pick aca-decode repo changeset: aca-decode repo: f9e5ad5 (HEAD -> main, origin/main, origin/HEAD) Fix bug in Corrected HBM Error being decoded as AFID 34 (#5)


[ROCm/amdsmi commit: ffca095]
ammallya pushed a commit that referenced this pull request Nov 21, 2025
cherry-pick aca-decode repo changeset: aca-decode repo: f9e5ad5 (HEAD -> main, origin/main, origin/HEAD) Fix bug in Corrected HBM Error being decoded as AFID 34 (#5)


[ROCm/amdsmi commit: ffca095]
ammallya pushed a commit that referenced this pull request Jan 21, 2026
ammallya pushed a commit that referenced this pull request Jan 21, 2026
Unit test fixes

[ROCm/rocshmem commit: ac3f879]
ammarwa added a commit that referenced this pull request Apr 21, 2026
…rce locations; expandable webview panel

Addresses Confluence row #5 (Source Code Line numbers). The Tier-0
scanner already emits ``detected_kernels`` with
``{name, file, line, launch_type}``; this change cross-references each
Top-Kernel-Hotspot row with its Tier-0 entry so each format can surface
a VTune/NSight-style source citation.

- New helper ``perfxpert/formatters/_source_correlation.py`` with
  ``correlate_hotspots_with_source()``: canonicalizes both names
  (strip namespace, template args, function-pointer decoration),
  matches by basename, and returns each hotspot with an optional
  ``source_locations`` list. Definitions sort before launches.
- Webview: each hotspot row grows a ``▾`` chevron
  (``class="h-src-toggle"``); clicking toggles a sibling hidden
  ``<tr class="h-src-row">`` with Definition + Launch-site rows,
  each with a Copy button and a ``__global__`` / ``HIP_KERNEL_LAUNCH``
  badge. Empty states cover both "source scan attempted, no match"
  and "no --source-dir supplied". All markup lives INSIDE the Top
  Kernel Hotspots ``.scard`` (webview invariants preserved: exactly
  1 DOCTYPE/body/html, 0 ``.card``, no JS template literals).
- Markdown + text: each hotspot row now carries a one-line
  ``Source: file.hip:42 (definition), file.hip:88 (launch)``
  annotation when a match exists (no UI).
- JSON: ``hotspots[i].source_locations: [{file, line, kind}]`` emitted
  when Tier-0 data is supplied; ``kind`` is ``"definition"`` or
  ``"launch"``. Schema bumped ``0.3.0 → 0.3.1`` (minor addition).
- Tests: 7 unit tests for the correlator
  (``tests/test_formatters/test_source_correlation.py``) and 5 webview
  tests (``tests/test_cli/test_webview_source_dropdown.py``) covering
  the chevron, panel contents, empty states, and scard containment.
- Preserves the Tier-0 instrumentation-advice gate — source-location
  correlation is data, not advice, so it ships regardless of
  ``has_profiling``.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ammarwa added a commit that referenced this pull request Apr 21, 2026
…HOT/WARM/COOL labels

Refines the Tier-1 → Tier-0 source correlation (Confluence row #5) with a
VTune / NSight-style severity cue driven by ``percent_of_total``:

  >= 20%  → HIGH    (CRITICAL, #e84040 red)
  >=  5%  → MEDIUM  (HOT,      #f08432 orange)
  >=  1%  → LOW     (WARM,     #caa828 yellow)
  <   1%  → INFO    (COOL,     #4d8ef2 blue)

Each ``source_locations`` entry now carries ``severity`` /
``severity_label`` / ``severity_color`` fields, threaded through by the
``_classify_severity`` helper. The hex colors mirror the existing
``PRIORITY`` palette so ``.h-src-row`` panels and ``.r-card[data-p=...]``
recommendation cards share one palette.

Webview renders a 3px border-left on the expanded source panel (even for
the "no match" / "no source scan" placeholders) + a ``CRITICAL`` /
``HOT`` / ``WARM`` / ``COOL`` pill in front of the first row. Markdown
and text formats gain a ``[CRITICAL]`` / ``[HOT]`` / ``[WARM]`` /
``[COOL]`` suffix after the source citation.

Tests: 6 new (classify_severity × 3, correlator threading, citation
suffix, webview border grep for 25% + 0.5% fixtures).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ammarwa added a commit that referenced this pull request Apr 21, 2026
…api + schemas + output_formats

Follow-on to the P8 feature commit (hotspot → Tier-0 source-location
correlation; Confluence row #5). Updates the four guides users reach
for to understand the new data surface:

- getting-started.md §4 (webview format) — new "Source-line
  correlation" subsection covering the ``▾`` chevron, expandable
  panel contents (Definition + Launch site + launch-type badge),
  empty-state hints, and the markdown/text/JSON fallbacks.
  Schema-version sentence bumped to mention 0.3.1.
- python-api.md — new "Hotspot output shape" subsection under the
  Quickstart, with an illustrative dict showing
  ``source_locations: [{file, line, kind}]`` and the match-vs-empty
  semantics for Python callers of ``api.agent_root``.
- contributing/schemas.md — bump documented ``schema_version`` to
  0.3.1 with a ``<!-- # CHANGES -->`` note pointing to
  ``hotspots[*].source_locations``; append 0.3.1 row to the schema
  history table; update the bump-ordering paragraph to mention the
  conditional 0.3.0 → 0.3.1 step.
- contributing/output_formats.md — add a new row (4a) to the
  Contract Checklist for ``hotspots[i].source_locations``, plus a
  dedicated "Hotspot → source correlation" subsection codifying
  the cross-format contract so CSV / ndjson / other format authors
  know to preserve the field.

No code changes. No test changes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ammarwa added a commit that referenced this pull request Apr 21, 2026
…mped to 42 tools

Documents Confluence rows #5 (severity refinement), #7 (trace_diff
tool + subcommand + analyze splice), and #8 (perfxpert ci wrapper):

  - docs/guides/getting-started.md: new §7 "Compare runs + CI gating
    (``perfxpert diff`` / ``perfxpert ci``)" with GitHub Actions +
    GitLab CI snippets; remaining numbered sections shifted by +1.
  - docs/guides/python-api.md: document ``api.trace_diff_diff_runs``
    mirror + expected output shape.
  - docs/integration/mcp-server.md: tool count 41 → 42; add
    ``trace_diff.diff_runs`` to the classifier/knowledge snapshot
    (34 → 35).
  - docs/contributing/schemas.md: describe the 0.3.1 ``trace_diff``
    top-level field (shape, emission rules, own ``schema_version``);
    note severity + severity_label additions to
    ``hotspots[i].source_locations``.
  - docs/contributing/output_formats.md: contract checklist gains
    the conditional ``trace_diff`` top-level key; adds a severity-
    coloring section (bucket table + webview/text/markdown
    propagation rules) and a diff-reports contract requiring every
    format to surface regression-vs-improvement direction.

Validation:
  - scripts/lint.sh --strict         rc=0
  - scripts/link-checker.py --strict rc=0
  - scripts/test-samples.py --strict rc=0

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ammarwa added a commit that referenced this pull request Apr 23, 2026
… polish + contributing docs (#5174)

## Summary

Proven-optimizations catalog, nightly benchmark harness, contributing
guides + RFC process + architecture refresh, `perfxpert doctor` polish,
Phase 7.1 `ai_analysis/` module deletion, and the convergence-review
fixes that establish real legacy-vs-agentic parity. This is the last PR
in the original retirement series; subsequent PRs (#5179, #5180) add the
bundled opencode fork and the docs-audit toolchain.

Stacks on #5173. Next in stack: #5179.

## What lands

### Phase 7.1 — `perfxpert/ai_analysis/` module removed
Commit `cb03e82c36` deletes the entire `ai_analysis/` module — **21
files, ~11.7 KLOC**. All execution now routes through
`perfxpert/agents/`; the dispatcher and the `PERFXPERT_LEGACY` env
toggle are gone. This completes the retirement started in #5173: there
is no longer a "legacy path" to opt back into.

### Proven-optimizations catalog (10 canonical case studies)
- `knowledge/proven_optimizations.yaml`: vgpr_reduction, lds_tiling,
mfma_enablement, memory_coalescing, fast_math, hip_stream_overlap,
kernel_fusion, device_sync_removal, warp_primitives, cache_blocking
- Dual-schema fixture integration: synthetic `duration_ns` + real
rocprofv3 UUID-suffixed `(end_ns - start_ns)` tables
- `tests/fixtures/*.db`: 5 fixtures re-profiled with `--pmc` on real
MI300X hardware

### Nightly benchmark harness + orchestration

### Contributing guides + RFC process + architecture refresh

### `perfxpert doctor` polish (8 checks incl. opencode bundled + LLM
providers)

## Review findings addressed (29 findings, 5 fix batches)

### Batch 1 — Gate cascade fidelity (3 commits)
- `gate-2-sol-signature`: `_run_sol_gate` took wrong keyword; unit tests
mocked the function so the TypeError went undetected. Two-tier check
now: hard cap on speedup ratio (>50× rejected arch-independent) +
optional absolute FLOPS check via `sol.sanity_check`. 13 new un-mocked
integration tests (`TestRunSolGateUnmocked`).
- `gate-4-hot-kernel-key-unit`: `regression.compare_runs` returns
`per_kernel_deltas` (list of dicts with `delta_pct` as a **fraction**,
not percent), not `hot_kernels`. Old code iterated a non-existent key so
Gate 4 silently treated all regressions as OK. Fraction↔percent
conversion corrected.
- `gate-5-skip-verdict`: verdict strings no longer misleading on skip
(`candidate_binary=None` path).

### Batch 2 — Schemas, validators, framework invariants (6 findings)
- #4: Pydantic cross-field validators on `GateVerdictModel`
(status/failing_gate coupling), `CorrectnessOutput` (verdict/action),
confidence clamps `Field(..., ge=0.0, le=1.0)`, typed `Literal` for
provider
- #12: `Agent` dataclass `frozen=True`; `__post_init__` validates layer
in (0,1,2)
- #7: `_parse_headers` raises `ValueError` on malformed JSON instead of
silent `{}`
- #10, #18: tasks module logs resolved store path; stale READ_ONLY
docstrings rewritten
- #17: README clarifies opencode is system dependency; doctor warns when
PERFXPERT_TASK_ROOT unset

### Batch 3 — External tool verifier + fence alignment (6 findings)
- N28: anthropic/openai SDK imports routed through `require_tool()` with
install-hint on missing
- N29: all 8 agent fence slices aligned to actual agent tool allowlists
- #5, #6, #9, #17: smoke-test opencode binary (not just presence),
hard-fail on bad `PERFXPERT_OPENCODE_PATH` override, skip subdirs in
config copy
- `tooldep`: user-home path search +
`PERFXPERT_ROCPROF_TRACE_DECODER_PATH` env support

### Batch 4 — Classifier + data-provenance fidelity (2 findings)
- **#1**: classifier no longer swallows DB errors silently (was
returning empty metrics → `data_insufficient`; now logs + propagates
error markers)
- **#26 (priority user-flagged)**: confidence now weighted by
`evidence_strength × match_ratio` instead of raw rule-count
normalization — partial-PMC classifications no longer over-confident.
New `test_partial_pmc_confidence` covers trace-only vs full-PMC paths.

### Batch 5 — Tests coverage gaps (9 findings)
- #20: gate cascade short-circuit coverage (Gates 2/3/4)
- #21: `_TraceAnalysisAdapter` shim delegation tests
- #22: trace-only `memcpy_pct` path in `classify_from_metrics`
- #23: `anthropic.APITimeoutError` normalization path
- #24: Root agent lambda stub guard
(`test_root.py::test_lambda_stubs_never_invoked`)
- #25: MCP tool coverage across 5 representative tools
- #27: flaky `time.sleep` → `proc.wait(timeout=5)`
- #14, #15, #16: stale comments + docstring rewrites (api.py,
__main__.py, recommendation.py)

## Parity story

**Problem found during review**: parity test wiring was toggling a dead
flag (`PERFXPERT_USE_AGENTS`) after the retirement PR flipped the
default — both legs were running the agentic path. "Parity" passed
vacuously.

**Fixes applied (Decision A+C):**
- **A**: Parity runner now toggles the operative legacy opt-out so
legacy and agentic paths are genuinely distinct; Tier-1 trace-only
fixtures `xfail`ed until re-profiled with `--pmc`.
- **C**: Re-profiled all 5 fixtures (`baseline`, `memory_bound`,
`compute_bound`, `latency_bound`, `regressed`) on real MI300X with
`rocprofv3 --pmc`:
- `compute_bound`: VALU-bound kernel (not MFMA, to legitimately match
Compute-Bound classification)
  - `memory_bound` / `baseline`: 128 MB H2D+D2H loop
  - `latency_bound` / `regressed`: 6,000 tiny kernels
- `_build_analysis_result` returns `api_overhead` (not `latency`) for
`overhead_pct > 25%` (legacy heuristic fix)
- E2E + dashboard tests updated for evidence-weighted classification

**Result**: `parity_snapshots/_aggregate.json` → **100% agreement on PMC
fixtures** (10/10 bottleneck + rec_technique signals). `rec_type` signal
skipped where the agentic path can't populate without an LLM (documented
asymmetric None).

## Convergence review round (2026-04-18)

- **Brand scrub**: zero-tolerance removal of the prior codename across
code, tests, patches, env-var names, and documentation.
- **CLI flag plumbing**: all 10 CLI flags (`--prompt`, `--llm`,
`--llm-model`, `--att-dir`, `--pc-sampling`, `--source-dir`, `--format`,
`-d/-o`) now wired end-to-end via an `analysis_options` side-channel on
`Context`.
- **PMC shard UNION** across multiple `.db` files uses
column-intersection and emits a `RuntimeWarning` listing dropped
columns.
- **FallbackProvider** has a typed exception taxonomy
(`LLMRateLimitError`, `LLMAuthenticationError`, `LLMTransientError`,
`LLMFatalError`). Auth/fatal errors surface immediately; only transient
+ rate-limit cascade. The provider is wired into `build_session`;
`PERFXPERT_LLM_FALLBACK_CHAIN` now has runtime effect.

## Test plan

- [x] 1036 pass / 3 skip / 0 fail from `experimental/python/perfxpert/`
- [x] Core suites — 100% pass: `tests/test_agents + test_providers +
test_runtime + test_tools`
- [x] Parity ship-gate — 100%: `tests/test_parity/` (12 passed, 5
rec_type skips documented)
- [x] Gate cascade — 100%: 28 tests including 13 new un-mocked SOL
integration tests (Batch 1 recovery)
- [x] E2E brain: `perfxpert-code run -m openai/gpt-4o-mini "..."` → MCP
→ Python → `81.7 TFLOPS` + AMD footer
- [x] `perfxpert doctor`: all 8 checks green (34 MCP tools at this PR
boundary; 43 after #5179+#5180; opencode 1.4.11 bundled; 3/5 LLM
providers configured)
- [x] No legacy opt-out path remains (Phase 7.1 removed the dispatcher
and the `PERFXPERT_LEGACY` toggle)
- [ ] Live MI300X nightly run (requires hardware; nightly workflow will
refresh baseline)
- [ ] Full interactive TUI (requires TTY; E2E can only prove
banner-emitted)

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vlaindic vlaindic mentioned this pull request May 18, 2026
1 task
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.

2 participants