# identity

Shared identity vocabulary: the identity of a captured run and the build, run, energy, runtime and kernel facts it names, canonical engine and kernel names with today's spellings as aliases, unknown facts that carry their reason, and the semantic hashes that name their kind and basis version.

Every name on this page is imported from `helia_profiler`.

**API tier:** `experimental`

Generated from the `src/helia_profiler` tree `f38e378c801d34438affb680257217e0b58d2cd1`.

[Machine-readable model](https://ambiqai.github.io/helia-profiler/reference/api/helia_profiler/identity.json)

An inference engine, by its shared name.

**API tier:** `experimental`

A kernel library, by its shared name.

``CMSIS_NN`` is Arm's CMSIS-NN. ``HELIA_CORE`` is heliaCORE, the product
name of Ambiq's ``ns-cmsis-nn`` library.

**API tier:** `experimental`

`dataclass`

A fact that could not be determined, with the reason.

**API tier:** `experimental`

`dataclass`

A hash that names its producer, its kind and its basis version.

The text form is ``<producer>.<kind>/<version>:sha256:<hex>``: producer
and kind are lowercase words joined by ``-``, the version a positive
integer, and the hex 64 lowercase digits. heliaPROFILER's hashes have
the producer ``hpx`` and the kinds ``intent``, ``build``,
``observation``, ``binding``, ``inputs`` and ``target-config``; :meth:`parse` reads any
producer's.
Compare two hashes only when their producer, kind and version match.

**API tier:** `experimental`

`classmethod`

Read *text*, refusing anything not in the semantic hash form.

The shared name for an engine, from its canonical name or any alias.

**API tier:** `experimental`

The shared name for a kernel library, from its canonical name or any alias.

**API tier:** `experimental`

`dataclass`

The runtime a build linked: its engine, source repository, version and commit.

**API tier:** `experimental`

`dataclass`

The kernel library a build linked, taken from the module or archive it linked.

**API tier:** `experimental`

`dataclass`

How the image was built and placed.

**API tier:** `experimental`

`dataclass`

The method a run's energy is measured with, whether or not the capture succeeded.

``scope`` is what the measured window covers:
``gross_rail_restore_and_invoke`` is everything the rail draws over the
timed restore-and-invoke loop. ``rail`` is the physical rail the run
measures, such as ``MCU``: the rail requested, also after a failed
capture, and unknown only where no request is at hand, as in a build's
identity before it runs. ``subtraction`` is what is taken off the
measurement, ``none`` when nothing is. ``completion_protocol`` is the
version of the firmware's READY, GO and DONE handshake that bounds the
window. The measurement itself, or its absence, is the run's outcome,
such as ``RunResult.energy``.

**API tier:** `experimental`

`dataclass`

How the model was run: state handling, invocation counts, the timed span and its clock.

``timing_scope`` is what each timed span covers: ``invoke_only`` or
``restore_and_invoke``, which also restores the fixed inputs.
``instance_boundary`` is where one model instance ends: ``boot`` when the
engine initializes once and every invocation reuses it, ``invocation``
when each invocation loads and initializes its own.
``first_invoke_initializer`` is whether the first invocation of an
instance runs the model's one-time initializer, such as a LiteRT
``CALL_ONCE`` subgraph, and ``first_invoke_window`` where that invocation
falls: ``warmup`` or ``measured``. ``timing_clock`` is the clock that times
the span, ``cpu`` cycles or the 32.768 kHz ``stimer``; ``timing_clock_hz``
is its configured rate, not a measured one. ``timing_statistic`` is what
the reported time is: the ``total`` over the measured invocations or
their ``mean``. ``energy`` is the method the run's energy is measured
with, stated after a failed capture too, and ``None`` when the run
measures no energy; whether it was measured is the outcome, not a fact
here.

**API tier:** `experimental`

`dataclass`

Everything a comparison needs to know about what ran.

``build_hash`` covers the flashed image, the dependency lock, the linked
runtime archive and the model, and never the HPX release (``producer``),
so it changes only when what runs changes. ``observation_hash`` covers a
capture's measured facts, so the same firmware measured twice gives two.
``intent_hash`` is the :attr:`~helia_profiler.FrozenRun.intent_hash` of
the plan a run was built from, and ``None`` for a run built without one.
``inputs_hash`` covers each pinned input's tensor name and data sha256.
The four are :class:`~helia_profiler.SemanticHash` strings of the kinds
``hpx.build``, ``hpx.observation``, ``hpx.intent`` and ``hpx.inputs``;
each ``*_sha256`` fact is the bare hex sha256 of one file's bytes.

**API tier:** `experimental`

JSON-ready form; an unknown fact becomes ``{"unknown": reason}``.

---

Machine-readable: [`identity.json`](https://ambiqai.github.io/helia-profiler/reference/api/helia_profiler/identity.json) · [`identity.md`](https://ambiqai.github.io/helia-profiler/reference/api/helia_profiler/identity.md), complete and lossless.
