Skip to content
neuralSPOT-X
API reference
HELIA HUB

nsx.lock

The resolution lock. Records, per board, the exact commit and content hash of every module an nsx sync would materialize. NSX writes it; you do not edit it by hand.

nsx.lock fields
FieldTypeDefaultMeaning
schema_versionint (4)4Lock schema version. NSX writes it on every lock; a lock that declares an older one is regenerated, and a lock missing it is read as the current version.
targetsmap of board to lock section, requiredOne resolution per board, so an app can be locked for several boards at once.
targets.<board>.generated_atstring (ISO 8601), requiredWhen this section was resolved.
targets.<board>.nsx_tool.versionstringneuralspotx version that produced the section.
targets.<board>.manifest.pathstring, requirednsx.ymlManifest the section was resolved from.
targets.<board>.manifest.hashstring, requiredContent hash of that manifest. A mismatch is the drift --frozen rejects.
targets.<board>.target.boardstring, requiredBoard this section resolves.
targets.<board>.target.socstring, requiredSoC of that board.
targets.<board>.target.toolchainstring, requiredToolchain the section was resolved for.
targets.<board>.modulesmap of module name to entry, requiredThe full resolved closure, not just the direct dependencies.
modules.<name>.projectstring, requiredRegistry project that provides the module.
modules.<name>.kindstring (git, packaged, local, vendored, unresolved), requiredgitHow the module was resolved, which decides what the resolved block carries.
modules.<name>.constraintstring, requiredConstraint the resolution satisfied.
modules.<name>.resolved.urlstringUpstream repository. Present for git and unresolved kinds.
modules.<name>.resolved.tagstringTag the commit carries, when the constraint matched one.
modules.<name>.resolved.commitstringExact commit vendored. Present for git and unresolved kinds.
modules.<name>.resolved.tool_versionstringneuralspotx version that supplied a packaged module.
modules.<name>.resolved.vendored_atstring, requiredPath under the app where the module is materialized.
modules.<name>.resolved.content_hashstring, requiredSHA-256 of the vendored tree. The SBOM reports this and sync verifies it.
modules.<name>.resolved.acquired_atstring (ISO 8601), requiredWhen the module was fetched.
schema_version: 4
targets:
apollo510_evb:
generated_at: '2026-09-03T23:02:17+00:00'
nsx_tool:
version: 0.7.17
manifest:
path: nsx.yml
hash: sha256:1c975664f58e7a6ee643a0bc37c90d8535543812703c6d3502595cc5f9992cef
target:
board: apollo510_evb
soc: apollo510
toolchain: arm-none-eabi-gcc
modules:
nsx-ambiqsuite:
project: nsx-ambiq-sdk
kind: git
constraint: v5.2.26
resolved:
url: https://github.com/AmbiqAI/nsx-ambiq-sdk.git
tag: v5.2.26
commit: ba0621638d57b71a7b0d4f76ddccf0706745ad77
vendored_at: modules/nsx-ambiq-sdk
content_hash: sha256:da17c45a3cf02797d1703f3c55beea770078cb2cb8829c7211413877089a559e
acquired_at: '2026-08-04T04:01:24+00:00'

NSX reads nsx.lock through neuralspotx.nsx_lock.read_lock_file, which raises NSXLockError when the document is invalid. The supported schema_version is 4.

Unknown keys: Rejected in effect. The lock is read into frozen dataclasses, so only the keys below survive a round trip.