원클릭으로
therock-build-to-commit
Given a TheRock nightly build (URL or run-id), return the rocm-systems pin_sha used in that build
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Given a TheRock nightly build (URL or run-id), return the rocm-systems pin_sha used in that build
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Check whether a given rocm-systems commit is included in a specific TheRock nightly build
Find the first TheRock nightly build that includes a given rocm-systems commit
Reviews Pull Requests or local diffs with an 8-agent fan-out covering static analysis, dead code, code smells + quality (naming, complexity, single-responsibility, magic numbers), language rules (C++/Python/CMake), architecture, simplification, performance (hot-path classification, allocations, locks, I/O), and undefined behaviour (signed overflow, lifetime, strict aliasing, data races, sanitizer coverage; C/C++/unsafe-Rust only). Use when the user asks to "review this PR", "review the diff", "audit this branch", "/pr-review", or when staging changes before push.
Walk through a PR review interactively, one finding at a time. Generate review via pr-review, then for each issue present analysis + proposed inline comment, let user accept/edit/skip, accumulate into a PENDING GitHub review, submit at end.
Use when user wants to list, analyze, review, or summarize GitHub PR comments on a pull request number or URL
Use when architectural decisions involve competing quality attributes (performance vs modifiability, availability vs consistency, security vs usability), when the user says "tradeoff analysis", "ATAM", "quality attributes", "what are we giving up", or when a design choice affects multiple non-functional requirements in tension.
| name | therock-build-to-commit |
| description | Given a TheRock nightly build (URL or run-id), return the rocm-systems pin_sha used in that build |
Resolves a TheRock nightly build to the exact rocm-systems commit (pin_sha) that was used to produce it, by reading the build's therock_manifest.json from S3.
Use this skill when:
https://rocm.nightlies.amd.com/packages-multi-arch/deb/YYYYMMDD-<RUN_ID>/index.html) or a bare run-id and wants to know what shippedpin_sha for a build before continuing (e.g. therock-commit-in-build)Unless the user says otherwise, this skill targets the rocm-systems submodule.
| Artifact | URL pattern |
|---|---|
Manifest (source of truth for pin_sha) | https://therock-nightly-artifacts.s3.amazonaws.com/<RUN_ID>-linux/manifests/therock_manifest.json |
| Packages index (deb repo) | https://rocm.nightlies.amd.com/packages-multi-arch/deb/<YYYYMMDD>-<RUN_ID>/index.html |
| Tarball | https://rocm.nightlies.amd.com/tarball-multi-arch/therock-dist-linux-multiarch-<ROCM_PACKAGE_VERSION>.tar.gz |
<ROCM_PACKAGE_VERSION> comes from the manifest field rocm_package_version (e.g. 7.14.0a20260624). The date prefix <YYYYMMDD> in the packages URL is the suffix after a in that version string (e.g. 20260624).
Legacy builds (before the multi-arch layout) used:
https://rocm.nightlies.amd.com/deb/<YYYYMMDD>-<RUN_ID>/index.html.../manifests/<GPU_FAMILY>/therock_manifest.json (e.g. gfx94X-dcgpu) instead of .../manifests/therock_manifest.jsonWhen fetching manifests, try the current path first; fall back to the per-GPU_FAMILY path for older runs.
The user provides one of:
| Input form | Example |
|---|---|
| Full nightly URL (current) | https://rocm.nightlies.amd.com/packages-multi-arch/deb/20260624-28066115163/index.html |
| Full nightly URL (legacy) | https://rocm.nightlies.amd.com/deb/20260302-22561649510/index.html |
| Index path | 20260624-28066115163 |
| Bare run-id | 28066115163 |
Optional overrides:
| Variable | Default | Notes |
|---|---|---|
platform | linux | Bucket prefix segment (<RUN_ID>-<platform>) |
submodule_name | rocm-systems | Override only if the user explicitly asks |
gpu_family | gfx94X-dcgpu | Legacy only — used when falling back to old per-family manifest paths |
Accept whatever the user pasted and extract the numeric GitHub Actions run id.
INPUT="$1"
# Run ids are >= 10 digits; anchor on that to avoid catching the 8-digit date.
RUN_ID=$(echo "$INPUT" | grep -oE '[0-9]{10,}' | tail -n1)
if [ -z "$RUN_ID" ]; then
echo "Could not extract a run id from: $INPUT" >&2
exit 1
fi
Echo the extracted run id back to the user before fetching, so they can confirm.
Current layout (try this first):
PLATFORM="${PLATFORM:-linux}"
MANIFEST_URL="https://therock-nightly-artifacts.s3.amazonaws.com/${RUN_ID}-${PLATFORM}/manifests/therock_manifest.json"
If that 404s, fall back to the legacy per-GPU-family path:
GPU_FAMILY="${GPU_FAMILY:-gfx94X-dcgpu}"
LEGACY_MANIFEST_URL="https://therock-nightly-artifacts.s3.amazonaws.com/${RUN_ID}-${PLATFORM}/manifests/${GPU_FAMILY}/therock_manifest.json"
MANIFEST=$(curl -fsSL "$MANIFEST_URL" || curl -fsSL "$LEGACY_MANIFEST_URL")
If both fail, report the URLs tried. Wrong platform is the most common cause on current builds.
The manifest is a JSON object with this shape:
{
"the_rock_commit": "f1e3fc2311fde45bf3e17b0e3349200be9caa4b4",
"github_run_id": "28066115163",
"rocm_package_version": "7.14.0a20260624",
"rocm_version": "7.14.0",
"submodules": [
{
"submodule_name": "rocm-systems",
"submodule_path": "rocm-systems",
"submodule_url": "https://github.com/ROCm/rocm-systems.git",
"pin_sha": "8b2f7145a33519b7f397b1c3636abddb7823538f"
}
]
}
Note: submodule entries live under the top-level submodules array, not at the root. Always walk .submodules[].
Prefer jq:
SUBMODULE_NAME="${SUBMODULE_NAME:-rocm-systems}"
PIN_SHA=$(echo "$MANIFEST" | jq -r --arg name "$SUBMODULE_NAME" '
.submodules[] | select(.submodule_name == $name) | .pin_sha
')
THE_ROCK_COMMIT=$(echo "$MANIFEST" | jq -r '.the_rock_commit')
ROCM_PACKAGE_VERSION=$(echo "$MANIFEST" | jq -r '.rocm_package_version')
Fallback when jq is unavailable:
read -r PIN_SHA THE_ROCK_COMMIT ROCM_PACKAGE_VERSION < <(echo "$MANIFEST" | python3 -c '
import json, sys
name = "rocm-systems"
data = json.load(sys.stdin)
pin = ""
for entry in data.get("submodules", []):
if entry.get("submodule_name") == name:
pin = entry.get("pin_sha", "")
break
print(pin, data.get("the_rock_commit", ""), data.get("rocm_package_version", ""))
')
If PIN_SHA is empty, list every submodule_name from the manifest so the user can pick a different one:
echo "$MANIFEST" | jq -r '.submodules[].submodule_name'
# Date prefix from rocm_package_version (7.14.0a20260624 -> 20260624)
DATE_PREFIX="${ROCM_PACKAGE_VERSION##*a}"
if [ -n "$LEGACY" ]; then
# Pre-migration builds: /deb/ packages layout, no multi-arch tarball.
PACKAGES_URL="https://rocm.nightlies.amd.com/deb/${DATE_PREFIX}-${RUN_ID}/index.html"
TARBALL_URL=""
else
PACKAGES_URL="https://rocm.nightlies.amd.com/packages-multi-arch/deb/${DATE_PREFIX}-${RUN_ID}/index.html"
TARBALL_URL="https://rocm.nightlies.amd.com/tarball-multi-arch/therock-dist-linux-multiarch-${ROCM_PACKAGE_VERSION}.tar.gz"
fi
Set LEGACY=1 when resolving a pre-migration build (manifest served from the per-GPU-family path, or run found under ROCm/TheRock).
Report back, in this exact shape, so other skills can parse it. <WORKFLOW_REPO> is ROCm/rockrel for current builds and ROCm/TheRock for legacy ones; omit the Tarball: line when it is empty (legacy builds).
Build: <RUN_ID> (platform=<PLATFORM>)
TheRock commit: <THE_ROCK_COMMIT>
ROCm package: <ROCM_PACKAGE_VERSION>
Submodule: <SUBMODULE_NAME>
pin_sha: <PIN_SHA>
Repo snapshot: https://github.com/ROCm/rocm-systems/tree/<PIN_SHA>
GitHub Actions: https://github.com/<WORKFLOW_REPO>/actions/runs/<RUN_ID>
Manifest: <MANIFEST_URL>
Packages: <PACKAGES_URL>
Tarball: <TARBALL_URL>
INPUT="https://rocm.nightlies.amd.com/packages-multi-arch/deb/20260624-28066115163/index.html"
# RUN_ID -> 28066115163
curl -fsSL "https://therock-nightly-artifacts.s3.amazonaws.com/28066115163-linux/manifests/therock_manifest.json" \
| jq -r '.submodules[] | select(.submodule_name=="rocm-systems") | .pin_sha'
# -> 8b2f7145a33519b7f397b1c3636abddb7823538f
RUN_ID=28066115163
curl -fsSL "https://therock-nightly-artifacts.s3.amazonaws.com/${RUN_ID}-linux/manifests/therock_manifest.json" \
| jq -r '.submodules[] | select(.submodule_name=="rocm-systems") | .pin_sha'
RUN_ID=22561649510
curl -fsSL "https://therock-nightly-artifacts.s3.amazonaws.com/${RUN_ID}-linux/manifests/therock_manifest.json" \
|| curl -fsSL "https://therock-nightly-artifacts.s3.amazonaws.com/${RUN_ID}-linux/manifests/gfx94X-dcgpu/therock_manifest.json" \
| jq -r '.submodules[] | select(.submodule_name=="rocm-systems") | .pin_sha'
RUN_ID=28066115163
curl -fsSL "https://therock-nightly-artifacts.s3.amazonaws.com/${RUN_ID}-linux/manifests/therock_manifest.json" \
| jq '{the_rock_commit, rocm_package_version, rocm_systems_pin: (.submodules[] | select(.submodule_name=="rocm-systems") | .pin_sha)}'
# -> {
# "the_rock_commit": "f1e3fc2311fde45bf3e17b0e3349200be9caa4b4",
# "rocm_package_version": "7.14.0a20260624",
# "rocm_systems_pin": "8b2f7145a33519b7f397b1c3636abddb7823538f"
# }
This skill produces:
pin_sha for the requested submodule (default rocm-systems) in the requested TheRock nightly buildthe_rock_commit and rocm_package_version for the buildNo files are written.
| Mistake | Fix |
|---|---|
Using the date YYYYMMDD as the run id | Run ids are the trailing digits after the dash (>= 10 digits); the date is 8 digits |
Using the old /deb/ packages URL for a new multi-arch build | Current builds use /packages-multi-arch/deb/; legacy builds used /deb/ |
Wrong platform -> 404 from S3 | Try linux first (default); use windows only for Windows nightlies |
Confusing submodule_name with submodule_path | Always filter on submodule_name (rocm-systems), not the path |
Truncating pin_sha before passing it downstream | Always pass the full 40-char SHA to downstream tools (e.g. gh api ... compare) |
curl: (22) The requested URL returned error: 403/404Cause: the constructed MANIFEST_URL does not exist in the bucket for that run id.
Steps:
https://github.com/ROCm/rockrel/actions/runs/<RUN_ID> (legacy pre-June-2026 runs: ROCm/TheRock).../manifests/therock_manifest.json.../manifests/gfx94X-dcgpu/therock_manifest.jsonplatform (linux vs windows)PIN_SHA is emptyCause: the submodule name does not match (typo, renamed, or not present in this build).
Steps:
submodule_name in the manifest:
curl -fsSL "$MANIFEST_URL" | jq -r '.submodules[].submodule_name'
SUBMODULE_NAME=<chosen>.jq: command not foundUse the python3 fallback shown in Phase 4. Do not skip JSON parsing in favor of grep - the manifest can change shape.
| Caller | Why |
|---|---|
therock-commit-in-build | Needs the pin_sha for the build before checking ancestry of a user-supplied commit |
curl.manifests/therock_manifest.json (no per-GPU-family subdirectory). The pin_sha is the same across architectures.