Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
a476d3d
2-refactor(tensilelite): move package source namespace paths (part 1)
Alex-Vasile Aug 12, 2026
fbf7011
2-refactor(tensilelite): move package source namespace paths (part 2)
Alex-Vasile Aug 18, 2026
5dc10e4
2-refactor(tensilelite): move custom kernel namespace paths
Alex-Vasile Aug 18, 2026
a06929d
2-refactor(tensilelite): move remaining custom kernel namespace paths
Alex-Vasile Aug 18, 2026
b7ddeba
2-refactor(tensilelite): move test namespace paths (part 1)
Alex-Vasile Aug 18, 2026
4ed4f0f
2-refactor(tensilelite): move test namespace paths (part 2)
Alex-Vasile Aug 18, 2026
26a0317
2-refactor(tensilelite): move test namespace paths (part 3)
Alex-Vasile Aug 18, 2026
b414937
2-refactor(tensilelite): move test namespace paths (part 4)
Alex-Vasile Aug 18, 2026
8fe9c38
2-refactor(tensilelite): move test namespace paths (part 5)
Alex-Vasile Aug 18, 2026
f1b1098
2-refactor(tensilelite): move test namespace paths (part 6)
Alex-Vasile Aug 18, 2026
56732fe
2-refactor(tensilelite): move test namespace paths (part 7)
Alex-Vasile Aug 18, 2026
d6a7222
2-refactor(tensilelite): move test namespace paths (part 8)
Alex-Vasile Aug 18, 2026
021db08
2-refactor(tensilelite): move test namespace paths (part 9)
Alex-Vasile Aug 18, 2026
42c51c5
2-refactor(tensilelite): move test namespace paths (part 10)
Alex-Vasile Aug 28, 2026
e5a2260
2-refactor(tensilelite): move test namespace paths (part 11)
Alex-Vasile Aug 18, 2026
0f42a6d
2-refactor(tensilelite): update integration and metadata namespace re…
Alex-Vasile Aug 18, 2026
b2bdb15
refactor(tensilelite): enable one-way namespace compatibility
Alex-Vasile Sep 15, 2026
5294643
2-refactor(tensilelite): update package source namespace references
Alex-Vasile Aug 18, 2026
3006947
2-refactor(tensilelite): update custom kernel namespace references
Alex-Vasile Aug 18, 2026
2b2ba78
2-fix(tensilelite): invoke moved coverage summary
Alex-Vasile Aug 25, 2026
d7bb65c
2-fix(hipblaslt): update TensileLite codegen paths
Alex-Vasile Sep 14, 2026
71be4f1
fix(tensilelite): complete package move plumbing
Alex-Vasile Sep 15, 2026
08124dc
fix(tensilelite): preserve compatibility across package move
Alex-Vasile Sep 15, 2026
9e68a9e
refactor(tensilelite): keep namespace move behavior-neutral
Alex-Vasile Sep 15, 2026
12b30e8
test(tensilelite): share namespace bridge subprocess helper
Alex-Vasile Sep 16, 2026
818afbf
fix(tensilelite): complete namespace move references
Alex-Vasile Sep 24, 2026
5e22e44
fix(tensilelite): preserve exports through alias imports
Alex-Vasile Sep 24, 2026
c902955
fix(hipblaslt): use moved TensileLite driver in race check
Alex-Vasile Oct 7, 2026
88655e4
fix(hipblaslt): follow moved characterization docs in CODEOWNERS
Alex-Vasile Oct 7, 2026
f16c567
build(tensilelite): drop nonexistent cmake package data
Alex-Vasile Oct 7, 2026
24191ba
docs(tensilelite): update mutation skill package paths
Alex-Vasile Oct 7, 2026
6d7cecd
test(geko): use moved TensileLite launcher path
Alex-Vasile Oct 7, 2026
1a13b58
style(tensilelite): preserve spacing through package move
Alex-Vasile Oct 7, 2026
f75e738
docs(tensilelite): correct characterization source references
Alex-Vasile Oct 7, 2026
96761d6
fix(tensilelite): move new rocBLAS custom kernels with package
Alex-Vasile Oct 8, 2026
468a2d4
fix(tensilelite): move new Solution UID tool with package
Alex-Vasile Oct 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -150,8 +150,8 @@
/projects/hipblaslt/library/include/ @ROCm/hipblaslt-reviewers @ROCm/hipblaslt-docs-reviewers

# Internal engineering decision logs, not user-facing docs: skip the docs-reviewers group.
/projects/hipblaslt/tensilelite/Tensile/Tests/unit/characterization/DECISIONS.md @ROCm/hipblaslt-reviewers
/projects/hipblaslt/tensilelite/Tensile/Tests/unit/characterization/adr/ @ROCm/hipblaslt-reviewers
/projects/hipblaslt/tensilelite/tensilelite/Tests/unit/characterization/DECISIONS.md @ROCm/hipblaslt-reviewers
/projects/hipblaslt/tensilelite/tensilelite/Tests/unit/characterization/adr/ @ROCm/hipblaslt-reviewers

/projects/hipccl/**/*.md @ROCm/prims-rands-reviewers @ROCm/prims-docs-reviewers
/projects/hipccl/**/*.rst @ROCm/prims-rands-reviewers @ROCm/prims-docs-reviewers
Expand Down
2 changes: 1 addition & 1 deletion .github/scripts/run_rocjitsu_hipblaslt_race_check.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ ROCJITSU_CONFIG="${ROCJITSU_CONFIG:-}"
RACE_REPORT_DIR="${RACE_REPORT_DIR:-${PWD}/race-reports}"
HIPBLASLT_BENCH="${HIPBLASLT_BENCH:-${ROCM_PATH}/bin/hipblaslt-bench}"
TENSILELITE_ROOT="${TENSILELITE_ROOT:-${ROCM_PATH}/share/hipblaslt/tensilelite}"
TENSILE_DRIVER="${TENSILE_DRIVER:-${TENSILELITE_ROOT}/Tensile/bin/Tensile}"
TENSILE_DRIVER="${TENSILE_DRIVER:-${TENSILELITE_ROOT}/tensilelite/bin/Tensile}"
TENSILELITE_CLIENT="${TENSILELITE_CLIENT:-${ROCM_PATH}/libexec/hipblaslt/tensilelite/tensilelite-client}"
RACE_TIMEOUT_SECONDS="${RACE_TIMEOUT_SECONDS:-180}"
TENSILELITE_TIMEOUT_SECONDS="${TENSILELITE_TIMEOUT_SECONDS:-420}"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/component-ci-tensilelite-coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ jobs:
working-directory: projects/hipblaslt/tensilelite
run: |
PY=.tox/coverage-unit/bin/python
"$PY" Tensile/Tests/unit/characterization/tools/coverage_split_summary.py \
"$PY" tensilelite/Tests/unit/characterization/tools/coverage_split_summary.py \
--characterization char.json --unit unit.json --combined coverage.json \
--characterization-junit char_tests.xml --unit-junit unit_tests.xml || true
exit 0
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/gfx1250_hipblaslt_tensilelite_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ jobs:
export Tensile_ASM_COMPILER_LAUNCHER=ccache Tensile_CXX_COMPILER_LAUNCHER=ccache
ccache -z >/dev/null 2>&1 || true
fi
pytest -p no:cacheprovider Tensile/Tests/common \
pytest -p no:cacheprovider tensilelite/Tests/common \
-m "gfx1250 and not skip-gfx1250" "${K_ARG[@]}" --timeout=5400 -n 1 -v -rfxX \
--gpu-targets "$TL_TARGET" \
--prebuilt-client="$ROCM/libexec/hipblaslt/tensilelite/tensilelite-client" \
Expand Down
18 changes: 12 additions & 6 deletions projects/hipblaslt/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -729,7 +729,8 @@ endif()

# Install TensileLite Python packages and test tools for artifact-based testing.
# Produces:
# share/hipblaslt/tensilelite/Tensile/ — Tensile Python package
# share/hipblaslt/tensilelite/tensilelite/ — Tensile Python package
# share/hipblaslt/tensilelite/Tensile/ — legacy import compatibility shim
# share/hipblaslt/tensilelite/rocisa/ — rocisa Python package (normalized layout)
# share/hipblaslt/tensilelite/rocisa_tests/ — rocisa pytest modules
if(HIPBLASLT_INSTALL_TENSILELITE_TEST_ARTIFACTS AND NOT WIN32)
Expand All @@ -738,13 +739,18 @@ if(HIPBLASLT_INSTALL_TENSILELITE_TEST_ARTIFACTS AND NOT WIN32)

# Tensile Python package
install(
DIRECTORY "${_tensilelite_src}/Tensile/"
DESTINATION "${_tensilelite_install_dest}/Tensile"
DIRECTORY "${_tensilelite_src}/tensilelite/"
DESTINATION "${_tensilelite_install_dest}/tensilelite"
COMPONENT tests
PATTERN "__pycache__" EXCLUDE
PATTERN ".pytest_cache" EXCLUDE
PATTERN "*.pyc" EXCLUDE
)
install(
FILES "${_tensilelite_src}/Tensile/__init__.py"
DESTINATION "${_tensilelite_install_dest}/Tensile"
COMPONENT tests
)

# Scripts used by unit tests
install(
Expand All @@ -768,9 +774,9 @@ if(HIPBLASLT_INSTALL_TENSILELITE_TEST_ARTIFACTS AND NOT WIN32)
# Preserve executable permissions on entry points
install(
PROGRAMS
"${_tensilelite_src}/Tensile/bin/Tensile"
"${_tensilelite_src}/Tensile/bin/TensileCreateLibrary"
DESTINATION "${_tensilelite_install_dest}/Tensile/bin"
"${_tensilelite_src}/tensilelite/bin/Tensile"
"${_tensilelite_src}/tensilelite/bin/TensileCreateLibrary"
DESTINATION "${_tensilelite_install_dest}/tensilelite/bin"
COMPONENT tests
)

Expand Down
4 changes: 2 additions & 2 deletions projects/hipblaslt/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,9 +133,9 @@ If you run from elsewhere, the test may not find the data file. For more run opt

## TensileLite Python tests (codegen / characterization)

The sections above cover the **client** tests (`hipblaslt-test`, gtest, YAML data). The in-repo **TensileLite generator** has its own Python test suite under `tensilelite/Tensile/Tests/unit/`, including **characterization tests** that pin current behavior with [syrupy](https://github.com/syrupy-project/syrupy) `.ambr` golden files.
The sections above cover the **client** tests (`hipblaslt-test`, gtest, YAML data). The in-repo **TensileLite generator** has its own Python test suite under `tensilelite/tensilelite/Tests/unit/`, including **characterization tests** that pin current behavior with [syrupy](https://github.com/syrupy-project/syrupy) `.ambr` golden files.

If your change makes a characterization test fail, do **not** run a blanket `pytest --snapshot-update` (it rewrites every golden and destroys the safety net). Update only the affected node and review the diff. Full policy and the decision tree: [`tensilelite/Tensile/Tests/unit/characterization/README.md`](tensilelite/Tensile/Tests/unit/characterization/README.md).
If your change makes a characterization test fail, do **not** run a blanket `pytest --snapshot-update` (it rewrites every golden and destroys the safety net). Update only the affected node and review the diff. Full policy and the decision tree: [`tensilelite/tensilelite/Tests/unit/characterization/README.md`](tensilelite/tensilelite/Tests/unit/characterization/README.md).

---

Expand Down
8 changes: 4 additions & 4 deletions projects/hipblaslt/TESTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -664,11 +664,11 @@ about "what do we currently know is broken" has to check all eight.
| [`clients/tests/data/known_bugs.yaml`](clients/tests/data/known_bugs.yaml) | Client GTest cases matched by parameters, optionally per architecture. Excluded from every tier | Comment convention | **No.** The case never runs, so nothing can observe a fix |
| `GTEST_SKIP()` in client sources | Individual cases at runtime | None | Not applicable, and mostly not bugs: these are environment guards (no GPU present, no Stream-K kernel selected for the problem) |
| [`TensileLogic/known_bugs.yaml`](tensilelite/Tensile/TensileLogic/known_bugs.yaml) | Library-logic validation failures, keyed on logic file path plus `SolutionNameMin` | Structured `ticket:` field | **Partly.** Re-validates each entry and reports stale ones, but only warns |
| Filename-driven marks in `Tensile/Tests/common/config_helpers.py` | Any config YAML whose path contains `xfail`, `wip` or `disabled` | None; the reason lives in a filename | **No**, and non-strict, so an expected failure that starts passing is silent |
| Filename-driven marks in `tensilelite/Tests/common/config_helpers.py` | Any config YAML whose path contains `xfail`, `wip` or `disabled` | None; the reason lives in a filename | **No**, and non-strict, so an expected failure that starts passing is silent |
| `skip-<arch>` marks in config YAML `TestParameters` | A config on named architectures | Free-text comment | Not applicable |
| Explicit `pytest.mark.xfail` markers | Specific assertions in a Python test | Ticket in the `reason` string | **Yes**, when written `strict=True` |
| Characterization goldens that pin known-wrong behavior | Nothing. The wrong behavior is recorded rather than hidden | ADR under `adr/` with a defect link, required by the reviewer checklist | Not applicable: a fix shows up as a golden diff needing review |
| `_needs_logic_dir` environment-conditional `pytest.mark.skipif` ([`test_PlaceholderMerge.py`](tensilelite/Tensile/Tests/unit/test_PlaceholderMerge.py), duplicated in [`test_GpuRevisionTarget.py`](tensilelite/Tensile/Tests/unit/test_GpuRevisionTarget.py)) | The logic-corpus consistency checks described under [Logic-corpus consistency regression tests](tensilelite/TESTING.md#logic-corpus-consistency-regression-tests), whenever `library/.../Logic/asm_full` is not on disk | Issue URL in the `reason` string; no `strict`, no time-box | **No.** The condition tracks an environment, not the bug it guards; where that environment is permanent (see below) the check can never run for real regardless of what the data says |
| `_needs_logic_dir` environment-conditional `pytest.mark.skipif` ([`test_PlaceholderMerge.py`](tensilelite/tensilelite/Tests/unit/test_PlaceholderMerge.py), duplicated in [`test_GpuRevisionTarget.py`](tensilelite/tensilelite/Tests/unit/test_GpuRevisionTarget.py)) | The logic-corpus consistency checks described under [Logic-corpus consistency regression tests](tensilelite/TESTING.md#logic-corpus-consistency-regression-tests), whenever `library/.../Logic/asm_full` is not on disk | Issue URL in the `reason` string; no `strict`, no time-box | **No.** The condition tracks an environment, not the bug it guards; where that environment is permanent (see below) the check can never run for real regardless of what the data says |

This last mechanism is a different shape from the other seven: it is not quarantining a *known* bug
at all, but gating on a precondition, and it lands in the same **Blind** tier as the client
Expand All @@ -690,7 +690,7 @@ quarantine list, is in the blind tier.

**The best-governed example is already in the tree**, and is worth copying rather than redesigning.
The `_ROCM3994_XFAIL` marker in
[`test_amax_true16_activation.py`](tensilelite/Tensile/Tests/unit/test_amax_true16_activation.py)
[`test_amax_true16_activation.py`](tensilelite/tensilelite/Tests/unit/test_amax_true16_activation.py)
carries a ticket in its reason, `strict=True` so that a fix turns the unexpected pass into a hard
failure, `raises=AssertionError` so an unrelated crash is not absorbed, a time-box comment naming
when to re-evaluate, and an explicit instruction to delete the marker in the fixing PR. The test
Expand Down Expand Up @@ -888,7 +888,7 @@ When adding or modifying functionality:
### Choosing the Right Test Type

- **Can the behavior be validated without GPU hardware?**
- Yes, and it is in TensileLite Python: add a unit test in `tensilelite/Tensile/Tests/unit/`. Write
- Yes, and it is in TensileLite Python: add a unit test in `tensilelite/tensilelite/Tests/unit/`. Write
a test that asserts what the code *should* do. Reach for a characterization golden only when you
are pinning behavior that already exists so it can be refactored safely, not when you are adding
behavior.
Expand Down
20 changes: 10 additions & 10 deletions projects/hipblaslt/cmake/hipblaslt_codegen.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -162,10 +162,10 @@ function(create_device_library)
"create_device_library: CODEGEN_ROOT is required; pass the TensileLite source root "
"or set HIPBLASLT_CODEGEN_ROOT.")
endif()
set(_known_bugs_resource "${_codegen_dir}/Tensile/TensileLogic/known_bugs.yaml")
set(_known_bugs_resource "${_codegen_dir}/tensilelite/TensileLogic/known_bugs.yaml")
foreach(_required_path
"${_codegen_dir}/Tensile/bin/TensileLogic"
"${_codegen_dir}/Tensile/TensileCreateLibrary/__main__.py"
"${_codegen_dir}/tensilelite/bin/TensileLogic"
"${_codegen_dir}/tensilelite/TensileCreateLibrary/__main__.py"
"${_known_bugs_resource}")
if(NOT EXISTS "${_required_path}")
message(FATAL_ERROR "create_device_library: required codegen resource not found: ${_required_path}")
Expand Down Expand Up @@ -329,14 +329,14 @@ function(create_device_library)
# .py generators, plus the packaged static headers (resources.py) and the
# custom-kernel assembly (CustomKernels.py) that codegen reads as data.
file(GLOB_RECURSE _codegen_sources LIST_DIRECTORIES false CONFIGURE_DEPENDS
"${_codegen_dir}/Tensile/*.py"
"${_codegen_dir}/Tensile/*.h"
"${_codegen_dir}/Tensile/*.s")
list(FILTER _codegen_sources EXCLUDE REGEX "/Tensile/Tests/")
"${_codegen_dir}/tensilelite/*.py"
"${_codegen_dir}/tensilelite/*.h"
"${_codegen_dir}/tensilelite/*.s")
list(FILTER _codegen_sources EXCLUDE REGEX "/tensilelite/Tests/")
list(APPEND _codegen_dependencies
${_logic_files}
${_codegen_sources}
"${_codegen_dir}/Tensile/bin/TensileLogic")
"${_codegen_dir}/tensilelite/bin/TensileLogic")

# ninja only compares mtimes of inputs that still exist, so a *removed* file
# leaves the stamp clean (nothing is newer), as does a file added with an
Expand All @@ -355,7 +355,7 @@ function(create_device_library)
OUTPUT "${_logic_stamp}"
COMMENT "Validating library logic (TensileLogic --check-all) for ${_cdl_TARGET} ..."
COMMAND ${_python_command}
"${_codegen_dir}/Tensile/bin/TensileLogic"
"${_codegen_dir}/tensilelite/bin/TensileLogic"
${_tensile_logic_args}
COMMAND ${CMAKE_COMMAND} -E touch "${_logic_stamp}"
DEPENDS ${_codegen_dependencies}
Expand All @@ -370,7 +370,7 @@ function(create_device_library)
# Tensile is not yet importable.
set(_output_stamp "${CMAKE_CURRENT_BINARY_DIR}/${_cdl_TARGET}.stamp")
set(_tcl_command
${_python_command} -m Tensile.TensileCreateLibrary
${_python_command} -m tensilelite.TensileCreateLibrary
${_opts_list}
"${_cdl_LOGIC_PATH}"
"${_cdl_OUTPUT_DIR}"
Expand Down
4 changes: 2 additions & 2 deletions projects/hipblaslt/docs/solution-uid.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ or at runtime.
```

UIDs are generated by
`tensilelite/Tensile/Common/SolutionIdGen.py`. Internally, a UID remains an
`tensilelite/tensilelite/Common/SolutionIdGen.py`. Internally, a UID remains an
unsigned 64-bit integer. Human-readable files and command-line output use an
unpadded base62 representation:

Expand All @@ -39,7 +39,7 @@ To replace one solution's UID after a duplicate is reported:

```bash
cd projects/hipblaslt/tensilelite
python3 -m Tensile.TensileGenerateUID path/to/logic.yaml --index 5 --inplace
python3 -m tensilelite.TensileGenerateUID path/to/logic.yaml --index 5 --inplace
```

`--index` is the solution's local `SolutionIndex` in that YAML file. Without
Expand Down
6 changes: 3 additions & 3 deletions projects/hipblaslt/skills/hipblaslt-pr-quality/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ C++ unit → Tensile pytest → client/API → integration → perf. Pick the lo
the regression. Map the base test-level table onto these lanes when advising or reviewing.

### Adds — characterization snapshot (`.ambr` golden) discipline
Scope: `projects/hipblaslt/tensilelite/Tensile/Tests/unit/characterization/` — characterization tests
Scope: `projects/hipblaslt/tensilelite/tensilelite/Tests/unit/characterization/` — characterization tests
that pin TensileLite's *current* Python behavior as syrupy `.ambr` goldens, run in the `-m unit`
lane. Green means "behavior unchanged," not "correct"; a red is information about the PR's own
change. When a PR's diff touches any `.ambr` file, gate on all of the below.
Expand Down Expand Up @@ -105,8 +105,8 @@ while another adds *data the validator checks*. Treat these as a coupled pair ev
different paths. The concrete hipBLASLt instance:
- Validator / allow-list: `projects/hipblaslt/tensilelite/Tensile/Common/GlobalParameters.py` (the
global-parameter registry and the `_assertGlobalParametersAreValid` ignored-key allow-list), plus
the enforcing test `projects/hipblaslt/tensilelite/Tensile/Tests/unit/test_input_yaml_corpus_clean.py`.
- Validated data: YAML fixtures under `projects/hipblaslt/tensilelite/Tensile/Tests/**` (e.g.
the enforcing test `projects/hipblaslt/tensilelite/tensilelite/Tests/unit/test_input_yaml_corpus_clean.py`.
- Validated data: YAML fixtures under `projects/hipblaslt/tensilelite/tensilelite/Tests/**` (e.g.
`common/gemm/**`).

If, since the PR diverged, the base branch changed the validator/allow-list **and** this PR adds or
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ source change.

Start with evidence that another developer can review:

1. Search recursively below `Tensile/Tests/unit/` for
1. Search recursively below `tensilelite/Tests/unit/` for
`test_<Module>.py`. Do not assume the file is directly below `unit/`; for
example, the direct tests for `Tensile/Common/Utilities.py` are in
`Tensile/Tests/unit/Common/test_Utilities.py`.
example, the direct tests for `tensilelite/Common/Utilities.py` are in
`tensilelite/Tests/unit/Common/test_Utilities.py`.
2. Search unit tests and tests that record current behavior for imports or
references to the target module.
3. Include existing test directories whose fixtures or public API calls reach
Expand All @@ -23,7 +23,7 @@ Start with evidence that another developer can review:
every addition or removal.

Keep the set inside the `-m unit` suite. The YAML-driven directories under
`Tensile/Tests/common` execute the same production code, but each config
`tensilelite/Tests/common` execute the same production code, but each config
compiles kernels and benchmarks them on real hardware, and a mutation run
repeats the whole set once per mutant. Including them makes a run
hardware-gated and turns minutes into hours. Accept the consequence: a kill
Expand All @@ -49,10 +49,10 @@ mkdir -p "$OUT"

set +e
docker exec -e PYTHONPATH="$PROJ" -w "$PROJ" tl-mut \
pytest -p no:cacheprovider -m unit --cov=Tensile/Common \
pytest -p no:cacheprovider -m unit --cov=tensilelite/Common \
--cov-report=term-missing --cov-fail-under=0 \
Tensile/Tests/unit/Common/test_Utilities.py \
Tensile/Tests/unit/characterization/CommonUtilities \
tensilelite/Tests/unit/Common/test_Utilities.py \
tensilelite/Tests/unit/characterization/CommonUtilities \
>"$OUT/coverage.log" 2>&1
rc=$?
set -e
Expand All @@ -72,7 +72,7 @@ Require all four scheduling conditions before starting the mutation run:

1. Pytest exits with status `0`.
2. The coverage report contains the exact target file, such as
`Tensile/Common/Utilities.py`.
`tensilelite/Common/Utilities.py`.
3. That file's executed-line percentage meets the reviewed scheduling
threshold. Use 80% unless the slice records another value.
4. The selected list contains at least one explicit test path and is not an
Expand All @@ -90,11 +90,11 @@ directory:

```json
{
"module": "Tensile/Common/Utilities.py",
"module": "tensilelite/Common/Utilities.py",
"source_sha": "<commit>",
"selected": [
"Tensile/Tests/unit/Common/test_Utilities.py",
"Tensile/Tests/unit/characterization/CommonUtilities"
"tensilelite/Tests/unit/Common/test_Utilities.py",
"tensilelite/Tests/unit/characterization/CommonUtilities"
],
"command": "<exact command>",
"exit_code": 0,
Expand Down
Loading
Loading