Developer Commands

This index is derived from Cargo targets and the public justfile metadata. Regenerate it with python3 test/docs-inventory.py --write; just check-docs detects drift.

Run recipes from a repository checkout. Recipes can build, download, install, remove, or publish state: inspect just --show RECIPE and read the linked guide before using one. An entry here records an interface, not evidence that a release or hardware test ran.

Executables

ExecutableCrateReference
facelockfacelock-cliReference
facelock-benchfacelock-benchReference
facelock-polkit-agentfacelock-polkitReference
facelock-synth-facefacelock-test-supportReference

The PAM module is a shared library, not a command: see contracts.

Prerequisites and effects

  • Build/test/lint recipes need the development dependencies
  • Package/container recipes need Podman, their declared images and build tools; testing safety explains the tiers
  • Camera/TPM/GPU recipes need the named devices/models; skipped hardware is not verification
  • Install/uninstall recipes change system files through sudo; use a disposable guest for testing
  • Release recipes may change versions or publish externally; follow releasing and inspect the recipe before invocation
  • Documentation checks inspect examples; walkthroughs establish actual clean-system results

Public recipes

Arguments in square brackets are optional; defaults are shown. This is a syntax index, so substitute real values for metavariables before running a recipe.

InvocationDescription
just auditScan Cargo.lock for RustSec advisories; requires cargo-audit and applies .cargo/audit.toml.
just buildBuild in debug mode (development)
just build-releaseBuild in release mode (for install)
just build-smoke-binariesBuild only the release facelock (tpm) and PAM module the CI smoke tiers consume.
just checkRun local tests, lint, format, audit, PAM isolation and documentation/install/release contracts; excludes full packaging and hardware lanes.
just check-agent-docs [base=]Check repository instructions and lifecycle contracts; optional base ref adds a coupling check.
just check-docsVerify instructional coverage, references and parser acceptance (no example execution).
just check-package-names-liveResolve documented dependency names against live upstream repositories (network required).
just check-pam-standaloneBuild PAM independently and reject forbidden async-io backend dependencies.
just check-workflow-policyPin the trust boundary of the comment-triggered Claude workflow (docs/security.md, CI Trust Boundary).
just cleanClean build artifacts
just docs-inventoryReport the tracked documentation, public recipes and Cargo executables as JSON.
just docs-site-checkBuild with mdBook 0.4.44 and check rendered links/assets; retain the temporary site for review.
just fmtFormat code
just fmt-checkFormat check
just installBuild release binaries as the invoking user, then elevate for system file installation.
just install-filesInstall pre-built binaries to system (requires root, no build)
just link-models [src=]Populate models/*.onnx from an existing checkout or install tree
just lintLint every workspace target with Clippy, denying warnings (matches CI).
just lint-tpmLint every workspace target with the tpm feature enabled (matches CI).
just moCompile and validate available PO catalogs into target/locale (requires msgfmt).
just potRegenerate both gettext POT templates from source messages.
just release <version>Validate and update release versions, then print the commit/tag/push steps; does not publish.
just release-preflight [tag=]Check release prerequisites and pinned evidence; infer tag from Cargo.toml unless supplied.
just show-pathsShow installed file locations
just testRun all unit tests
just test-allRun all tests including hardware-dependent (ignored) tests
just test-apt-repo [trixie_manifest=] [resolute_manifest=]Test local signed APT publication/client resolution using both supplied manifests or stable stand-in packages.
just test-arch-camera-freeAutomated camera-free E2E tests (Arch container, no camera needed)
just test-arch-camera-requiredBoth camera-required E2E tiers, recorded for release-preflight (requires camera)
just test-arch-dev-shellDev shell — interactive Arch container with host models for fast iteration (requires camera)
just test-arch-integrationAutomated daemon integration tests (Arch, requires camera)
just test-arch-layoutCheck installed state-directory permissions and enrollment-marker visibility in Arch.
just test-arch-loopback [ir=] [rgb=]Both camera-required E2E tiers against a synthetic v4l2loopback camera, recorded for release-preflight
just test-arch-oneshotAutomated oneshot (daemonless) integration tests (Arch, requires camera)
just test-arch-package-selectTest selection of the main Arch package rather than its debug split.
just test-arch-pamAutomated PAM smoke tests (Arch container)
just test-arch-pkgPackage test — build the real dist/PKGBUILD with makepkg, install it with pacman, validate
just test-arch-release-shellInteractive Arch shell with locally staged binaries, no host model mounts (for camera testing).
just test-cargo-vendor-contractProve the deterministic, exact Cargo source component used by Debian builds.
just test-classify-changesTest CI packaging path classification using temporary Git histories.
just test-copr [release=44]COPR-equivalent build — Packit SRPM + mock from-source rebuild on a Fedora chroot (slow, opt-in)
just test-copr-lanesEvery Packit/COPR release target rebuilt from source at its declared depth
just test-copr-pkg [release=44]COPR lifecycle lane — mock source rebuild, then the booted package lifecycle
just test-copr-smoke [release=45]Branched-release COPR lane — mock source rebuild, then the runtime smoke
just test-debRun both exact supported-suite Debian package gates.
just test-deb-dev-shellDev shell — interactive .deb container with host models for fast iteration (requires camera)
just test-deb-package-contract <manifest>Validate every binary package named by one exact generated manifest.
just test-deb-package-contract-testExercise exact Debian manifest identity, checksum, and atomic-staging mutations.
just test-deb-release-shellInteractive Ubuntu 26.04 shell with a locally built .deb and test config, no host model mounts.
just test-deb-resolute-pkgUbuntu 26.04 Resolute package — exact source build, TPM/PCR, and booted lifecycle.
just test-deb-source-contractStatic Debian source/metadata/release-consumer contract.
just test-deb-trixie-pkgDebian 13 Trixie package — exact source build, TPM/PCR, and booted lifecycle.
just test-debian-postrm-purgeExercise Debian remove/purge policy below disposable fixed roots only.
just test-docs-walkthrough <scenario> <identity> <output>Execute one explicit walkthrough scenario using a pinned identity inside a disposable guest.
just test-legacy-system-assetsValidate immutable system assets and migrate only exact historical /etc copies.
just test-locale-install-contractCheck locale installation across package paths; compile a fixture when gettext is available.
just test-packaging-matrixEvery packaging lane the release gate requires, recorded for release-preflight
just test-packit-configPackit config schema gate — runs the real packit in a digest-pinned Fedora container
just test-release-artifactsStatic contract: the release publishes exactly once, after validation
just test-release-contractFast release contract tests that do not require distro package tools.
just test-release-matrixComplete Track V version/matrix gate.
just test-release-native-orderingNative version comparison tools run only inside disposable, digest-pinned containers.
just test-rpm [release=44]Test RPM packaging in Fedora container
just test-rpm-authselect [release=44]Static and booted, model-free Fedora authselect retirement lifecycle
just test-rpm-dev-shell [release=44]Dev shell — interactive .rpm container with host models for fast iteration (requires camera)
just test-rpm-lanesEvery declared Fedora release target at its declared lifecycle depth
just test-rpm-pkg [release=44]Package test — build real .rpm, install via dnf, validate under booted systemd
just test-rpm-release-shell [release=44]Interactive Fedora shell with a locally built .rpm and test config, no host model mounts.
just test-rpm-smoke [release=45]Branched-release lane — build the package, then boot it for a runtime smoke
just test-source-install-daemon-lifecyclePreserve the daemon's pre-install runtime state across source file replacement.
just test-source-install-daemon-lifecycle-systemdExercise the source-install barrier against a real systemd and system bus.
just test-upgrade-v014Both released-predecessor upgrade lanes — the stable entrypoint for #231
just test-upgrade-v014-contractReleased-predecessor upgrade lanes (#231) — container-free half, runs anywhere
just test-upgrade-v014-debDebian half: install the real v0.1.4 .deb, upgrade to the candidate, roll back
just test-upgrade-v014-pinsConfirm the pinned v0.1.4 assets are still the assets GitHub serves (needs gh)
just test-upgrade-v014-rpmFedora half: same proof against the released fc44 RPM
just uninstallRemove source-installed system assets through sudo; retain biometric state and models.
just uninstall-filesUninstall files from system (requires root, called by uninstall)
just versionShow current version