Known issues
Defects that are recorded and not yet fixed. The estate audit of 2026-10-05 found them; its full
text, with evidence, is docs/agent/2026_10_05_ESTATE_AUDIT/REPORT.md. Work that is planned and
is not a defect is in the backlog.
Behaviour
| Issue | Where |
|---|---|
Engine::set_mode is honoured by the BLAS and spatial families only; the elementwise, nonlinear, logic, reduction and random families never read the mode, and VERIFY is refused |
src/engine/math/, src/engine/logic/ |
On the pinned intel-llvm for Windows, a generic lambda handed to with_element_type that calls a task body holding a SYCL kernel leaves the HostKernel members of that kernel undefined, and the test executable fails to link; the dtype arms of execute_random and execute_typed_task are named classes for that reason |
include/SushiBLAS/engine/math/random/dispatch.hpp, include/SushiBLAS/engine/task.hpp |
The BLAS layer throws std::runtime_error from its rank, dtype and length pre-checks and std::invalid_argument from the operand checks |
include/SushiBLAS/engine/blas/, src/engine/blas/ |
A tensor with zero elements and no storage passes require_storage and then throws std::runtime_error from data() in the reduction executors; the elementwise, nonlinear and logic executors treat it as a no-op |
include/SushiBLAS/engine/math/reductions/dispatch.hpp |
HALF TRSM and TRSV form each element’s sum in FLOAT32 but read the solution values that later steps reuse back as HALF, so they are rounded between steps |
kernels/sycl/blas/level3/trsm.hpp, kernels/reference/blas/level3/trsm.hpp |
max_along and the other axis reductions use RunningMax, so a NaN in an axis reduction is order-dependent; the whole-tensor max and min propagate NaN |
src/engine/math/reductions/max_along.cpp |
The complex math of the nonlinear and elementwise kernels was rewritten without MSVC’s std::complex functions so an NVIDIA target can compile it; no NVIDIA build has been tried |
include/SushiBLAS/engine/math/safe_math.hpp |
check_layering.py reports 7 known violations in K_KNOWN_VIOLATIONS, all of them engine.hpp including an operation family header |
tools/layering/check_layering.py, include/SushiBLAS/engine.hpp |
IO::load, load_bin and load_npy write into a tensor without first running the recorded graph, so a pending write to that tensor overwrites the loaded data |
src/io.cpp |
IO::load_npy finds the shape by substring search, skips the check when the header has no shape, and never checks dtype or fortran_order |
src/io.cpp |
| Nine random distributions reject a complex dtype inside the task, at execution, with a message that names no dtype | src/engine/math/random/bernoulli.cpp and its eight siblings |
RandomOps::shuffle rejects INT32 and INT64 inside the task, at execution, where the architecture page says rejection happens at record time |
src/engine/math/random/shuffle.cpp |
gelu.cpp includes <numbers>, a C++20 header, in a library built at C++17 |
src/engine/math/nonlinear/gelu.cpp |
sb test --suite package ends in a traceback when a DLL beside the consumer is locked |
cli/sushiblas/services/project.py |
sb run --sort keeps a flag name the sibling CLIs renamed to --pick |
cli/sushiblas/cli.py |
Comments and documents
| Issue | Where |
|---|---|
The source comment checker reports 1 051 findings: 312 missing file headers, 207 blocks over the ceiling, 457 comment runs, 40 separators and 35 history words, 32 of them TODO lines |
python tools/documentation/check_source_comments.py . --report |
The CLI manual says sushicore is published to no index, while the changelog records it taken from PyPI on 2026-09-22; which versions PyPI holds was not checked |
cli/README.md |
| The architecture, integration and GPU validation pages use an em dash about once every 60 to 75 words and have not been through the humanizer pass | docs/architecture/ARCHITECTURE.md, docs/guides/INTEGRATION.md, docs/design/GPU_VALIDATION.md |
The archived wave 1 report says it created docs/reference/CHANGELOG.md and that no commit was made; the entry went to the old docs/CHANGELOG.md and commit e7783de is on main |
docs/archive/agent/reports/2026-09-22-wave-1-task-7d.md |
The archived help screen report says its branch is unmerged and that sb has seven commands; the work is on main and sb has eleven |
docs/archive/agent/reports/2026-09-22-help-screen-task-28.md |
NOTICE.md cites docs/CODE_OF_CONDUCT.md, which is now docs/reference/CODE_OF_CONDUCT.md |
NOTICE.md, “Adapted text” |
Comments cite documents by their old paths: docs/CLAUDE.md and CLI_GUIDE.md, now CLAUDE.md and cli/README.md, and docs/INTEGRATION.md, now docs/guides/INTEGRATION.md |
.github/workflows/ci.yml, Doxyfile, tests/package/CMakeLists.txt |
Layout
| Issue | Where |
|---|---|
docs/api/ and docs/api-site/ are not part of the documentation tree, and mainpage.md is not named in upper snake case; check_docs_layout.py reports all three |
Doxyfile, docs/api/mainpage.md |
Doxyfile sits in the root, where the layout forbids it |
Doxyfile |
The source folder is src/ where the layout names source/, and kernels/ and examples/ are top-level folders outside the layout |
repository root |
tests/ has a functional/ level over unit, integration and regression, and a package/ folder the layout does not name |
tests/ |
The root lacks .clang-format, .editorconfig and .gitattributes |
repository root |
.gitignore has no rule for .pytest_cache/, venv/, .venv/, build-*/ or dist/ |
.gitignore |
sushi-module.toml spells the remote in lower case, the remote itself is SushiSystems/SushiBLAS |
sushi-module.toml |
The security policy and the code of conduct are under docs/reference/, where GitHub does not look for them |
docs/reference/SECURITY.md, docs/reference/CODE_OF_CONDUCT.md |
Continuous integration
| Issue | Where |
|---|---|
The functional job checks out SushiRuntime main; the library now targets the allocation interface of the sibling checkout’s ci-fix branch, and no build has confirmed that main has it |
.github/workflows/ci.yml |
The cli job installs sushicore from a SushiStack path that no longer exists |
.github/workflows/ci.yml |
The pyflakes step ends in || true and cannot fail |
.github/workflows/ci.yml |
The workflow says the repository has no Doxyfile and names the hub command ss install |
.github/workflows/ci.yml |
| One workflow, Linux only, no checker job, no release trigger, and it calls cmake and ctest directly | .github/workflows/ci.yml |
The CLI test fixture probes sushistack/sushicore, a path that no longer exists |
cli/tests/conftest.py |
Release state
| Issue | Where |
|---|---|
| No release was ever tagged, and the Unreleased section holds 88 entries | docs/reference/CHANGELOG.md |
cli/pyproject.toml requires sushicore>=0.7.0; the sushicore repository is tagged up to v0.4.0 |
cli/pyproject.toml |

