Skip to main content

Development

What counts as development in this repo​

This repository provides Ethos-U target support and the Ethos-U backend path. Changes here often affect target profiles, backend registration, standardized output, result-owned advice, and the MLIA user workflow.

Local setup​

Use uv to create and sync the development environment:

uv sync --group dev

If you only need the test stack:

uv sync --group test

Common commands​

Run the quick CI-aligned test suite:

uv run pytest -m "not slow" tests/

Run the full test suite:

uv run pytest tests/

Run repository checks:

uv run pre-commit run --all-files

Build the package:

uv build

What usually changes together​

When you change one of these areas, review the others too:

  • Target profile definitions and target-related tests.
  • Vela integration and compatibility or performance expectations.
  • Corstone integration and backend registration behaviour.
  • Result-owned advice or standardized-output logic and user-facing examples.

Good review questions​

Before you consider a change complete, ask:

  • Does the target still appear correctly through mlia target list?
  • Do the expected backends still appear through mlia backend list?
  • Did the change alter compatibility output, performance output, or advice text?
  • Does the docs wording still match the actual workflow?

Documentation expectations​

Keep the top-level README and this repo's docs/ pages in sync when adding new Ethos-U profiles, backend options, or major workflows.

Runtime boundary actions​

Application code must not directly perform runtime network access, launch external processes, or mutate the filesystem. Repository-owned actions must go through a gateway in mlia.backend.boundaries. For example:

from mlia.backend.boundaries.process import run_installer_with_notice

run_installer_with_notice(logger, corstone_name, dist_dir, command)

To add a boundary operation, add an intention-revealing function to the shared boundary package and test its behavior. Reviewers must manually verify, with LLM assistance where useful, that boundary operations remain inside the package and that user-visible actions announce themselves before crossing the boundary. Generic Core process gateways must therefore remain wrapped by an Ethos-U gateway that performs the appropriate announcement. Derived Vela and Corstone artifacts under the already-announced MLIA output directory are user output. Build hooks, CI workflows, and tests are outside this runtime policy.