Skip to content

Test: run only the a5 jobs, on the new [self-hosted, a5, test] runner - #1510

Open
luohuan19 wants to merge 3 commits into
hw-native-sys:mainfrom
luohuan19:ci-a5-test-runner
Open

Test: run only the a5 jobs, on the new [self-hosted, a5, test] runner#1510
luohuan19 wants to merge 3 commits into
hw-native-sys:mainfrom
luohuan19:ci-a5-test-runner

Conversation

@luohuan19

Copy link
Copy Markdown
Contributor

Summary

Temporary CI branch to validate the newly added a5 self-hosted runner in isolation. Not intended to merge as-is.

  • ut-a5 and st-onboard-a5 now target runs-on: [self-hosted, a5, test].
  • Every other job (pre-commit, packaging-matrix, ut, st-sim-a2a3, st-sim-a5, profiling-flags-smoke, ut-a2a3, st-onboard-a2a3, detect-changes) is gated off with if: false.
  • Both a5 jobs drop their needs: on pre-commit / detect-changes — a needs: on a skipped job would skip them too.
  • st-onboard-a5 loses the false && guard it carried while the old a5 runner was under repair, so it actually runs here.

A header comment in the jobs: block records the temporary state. Reverting it restores the normal pipeline; the if: expressions to write back are needs.detect-changes.outputs.a2a3_changed == 'true' (st-sim-a2a3, st-onboard-a2a3), ..a5_changed == 'true' (st-sim-a5), and the || of both (profiling-flags-smoke).

Testing

  • .github/workflows/ci.yml parses as valid YAML; job gating verified job-by-job
  • Both a5 jobs pick up the test-labelled runner and run to completion — that is what this PR is for

Note: the a5 jobs rely on the runner-level DEVICE_RANGE env var; if the new runner does not export it, the DEVICE_LIST computation yields an empty device list.

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Review Change Stack

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 049eb97a-31b0-465d-b99d-18e8ad2218b9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The CI workflow temporarily disables most standard, simulation, profiling, change-detection, and a2a3 jobs. The a5 unit and onboarding jobs remain enabled with updated runner labels and without their previous gating dependencies.

Changes

CI workflow execution

Layer / File(s) Summary
Disable standard and a2a3 CI jobs
.github/workflows/ci.yml
The workflow disables pre-commit, packaging, general unit, simulation, profiling, a2a3 hardware, and change-detection jobs.
Retain a5 onboarding coverage
.github/workflows/ci.yml
The a5 unit and onboarding scene jobs target [self-hosted, a5, test]; the unit job no longer needs pre-commit, and onboarding is no longer gated by change detection.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Poem

A bunny found the workflow gate,
And flipped the sleeping jobs’ state.
A5 still hops on test-runner feet,
While skipped checks rest soft and sweet.
CI carrots wait in line! 🐇

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: limiting CI to the new a5 test runner jobs.
Description check ✅ Passed The description directly matches the changeset and explains the temporary CI gating and runner switch.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/ci.yml:
- Line 763: Update both a5 jobs at .github/workflows/ci.yml lines 763-763 and
831-831, including the ut-a5 and st-onboard-a5 task-submit child invocations, so
their pytest/ctest commands target the device selected by task-submit via
$TASK_DEVICE or the generated locked device list instead of ${DEVICE_RANGE};
preserve the existing device locking and test setup.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ad775a9a-8b58-4348-b750-e02f764c0cf0

📥 Commits

Reviewing files that changed from the base of the PR and between 9922afd and d118af1.

📒 Files selected for processing (1)
  • .github/workflows/ci.yml

Comment thread .github/workflows/ci.yml Outdated
ut-a5:
needs: pre-commit
runs-on: [self-hosted, a5]
runs-on: [self-hosted, a5, test]

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
rg -n -C 4 '\b(task-submit|TASK_DEVICE|DEVICE_RANGE)\b' .

Repository: hw-native-sys/simpler

Length of output: 50379


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "## ci.yml runs-on and task-submit command excerpts"
sed -n '740,785p' .github/workflows/ci.yml
sed -n '810,850p' .github/workflows/ci.yml

echo
echo "## task-submit and DEVICE_RANGE in ci.yml"
rg -n -C 3 '\b(task-submit|DEVICE_RANGE|TASK_DEVICE)\b' .github/workflows/ci.yml

echo
echo "## ci.yml variable context for ut-a5/st-onboard-a5"
rg -n -C 2 'ut-a5|st-onboard-a5|DEVICE_RANGE|pytest|ctest|tensormap_and_ringbuffer' .github/workflows/ci.yml

Repository: hw-native-sys/simpler

Length of output: 33603


Pass the task-assigned device to the a5 task-submit children.

Both ut-a5 and st-onboard-a5 build DEVICE_LIST/PYTEST from ${DEVICE_RANGE}, then run child pytest/ctest with ${DEVICE_RANGE} while locked via task-submit --device "$DEVICE_LIST". The existing ARM64 hardware work passes $TASK_DEVICE so the child targets the same device selected by task-submit; these a5 jobs should also pass $TASK_DEVICE or the generated locked device list.

📍 Affects 1 file
  • .github/workflows/ci.yml#L763-L763 (this comment)
  • .github/workflows/ci.yml#L831-L831
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml at line 763, Update both a5 jobs at
.github/workflows/ci.yml lines 763-763 and 831-831, including the ut-a5 and
st-onboard-a5 task-submit child invocations, so their pytest/ctest commands
target the device selected by task-submit via $TASK_DEVICE or the generated
locked device list instead of ${DEVICE_RANGE}; preserve the existing device
locking and test setup.

@luohuan19
luohuan19 force-pushed the ci-a5-test-runner branch 4 times, most recently from 6eef2df to 21a383d Compare July 27, 2026 03:39
@luohuan19
luohuan19 force-pushed the ci-a5-test-runner branch 4 times, most recently from 57a12d4 to 88a5e59 Compare July 28, 2026 13:15
luohuan19 and others added 3 commits July 28, 2026 06:15
Point ut-a5 and st-onboard-a5 at the newly added a5 runner label and gate
every other job off with `if: false`, so a CI run on this branch exercises
that runner alone. st-onboard-a5 loses the `false &&` guard it carried
while the old a5 runner was under repair, and both a5 jobs drop their
`needs:` on the now-disabled pre-commit / detect-changes jobs — a `needs:`
on a skipped job would skip them too.

This is a temporary validation branch, not intended to merge as-is; the
header comment in the jobs block records what to revert.
Fall back to the driver OCCUPY bitmap when CPU_TOPO is unavailable so A5 affinity selection can still enumerate the user-schedulable AICPU pool. Add a pure C++ regression test and document the 25.7.rc1.6 driver behavior.
ut-a5's C++ step only ran `ctest -L '^requires_hardware(_a5)?$'`, but no
test carries that label: the sole hardware UT, test_comm_lifecycle, is
a2a3-bound (it hardcodes the a2a3 host_runtime path and is labelled
requires_hardware_a2a3). ctest exits 0 on an empty selection, so the step
was green while executing nothing — including, until now, every pure-logic
C++ test on the a5 runner.

Run the no_hardware suite (49 tests, ~4s, no device needed) before the
device-locked hardware selection. --no-tests=error on that run makes a
future label typo fail loudly instead of silently selecting nothing.

The a5 hardware selection stays as-is and still matches nothing; adding
--no-tests=error there would fail the job until the first a5 hardware UT
exists, so a comment records the state instead.
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