Checks and Release
Know which local checks to run before changing manifests, contracts, generated hosts, or release artifacts.
Lenso treats generated artifacts, contracts, manifests, and hosted Console assets as part of the product surface. Run the smallest useful check while developing, then run the full gate before release work.
Command map
| Command | What it proves |
|---|---|
just fmt |
Formats Rust sources. |
just fmt-check |
Fails when Rust formatting changed. |
just rust-check |
Compiles Rust workspace targets. |
just test |
Runs Rust workspace tests with the locked dependency graph. |
just generate |
Regenerates OpenAPI and JSON Schema artifacts. |
just generated-check |
Regenerates artifacts and fails when git differs. |
just arch-check |
Runs architecture guardrails. |
just check |
Runs the default backend local quality gate without slow smoke checks. |
just ci |
Mirrors the GitHub Actions backend quality path. |
just release-check |
Runs the backend release gate. |
just package-readiness |
Verifies the public lenso facade crate package surface. |
Runtime Console checks live in the sibling lenso-console repository.
Use its pnpm check path when a backend change affects Console metadata,
OpenAPI-generated clients, module install state, or hosted bundle behavior.
What to run after a change
| Change | Minimum useful check |
|---|---|
| Rust implementation only | just check |
| Public route, OpenAPI annotation, DTO, or error contract | just generate && just generated-check && just check |
ModuleManifest field, lint, admin surface, runtime, lifecycle, or Console surface |
just generate && just generated-check && just check |
| Generated host template or CLI-facing starter behavior | CLI starter smoke plus backend just check |
| Runtime Console module metadata or install-state UI | Backend generated checks plus Runtime Console pnpm check |
| Release package, hosted Console bundle, or publish workflow | just release-check and just package-readiness |
Local smoke
Use this when you need service proof instead of only compile proof:
cp .env.example .env
just db-up
just migrate
just api
Run the worker in a second shell:
just worker
For the first-user backend flow, including a Service provider fixture and Console-facing admin APIs:
just first-user-smoke
Contract discipline
Generated files are committed artifacts, not hand-authored files. Change the Rust source of truth, then regenerate.
just generate
just generated-check
The architecture checker also catches common boundary mistakes:
- DDD-style folders inside modules such as
api,application,domain, orinfrastructure; - cross-module imports inside module source code;
- missing OpenAPI artifacts;
- stale contract artifacts;
- missing event payload contracts for current events.
Release candidate flow
git switch main
git status --short
just release-check
git switch -c release/vX.Y.Z
just console-build
LENSO_RELEASE_VERSION=vX.Y.Z just release-package
Release packaging writes source and artifact files under dist/release. Lenso
Console is released independently as an immutable Console Service Release; host
release packages do not embed Console web assets.
GitHub release workflow
Trigger the release workflow with:
| Input | Value |
|---|---|
version |
vX.Y.Z |
notes |
short release summary |
publish_rust_crate |
false for dry run, true for publish |
Use publish_rust_crate=false first. That path runs the release gates,
validates version metadata, dry-runs package publishing, generates release
notes, and uploads package artifacts without publishing registry versions.
After a publish run, verify:
git rev-parse vX.Y.Z
gh release view vX.Y.Z
Release notes inputs
Collect these before publishing:
- commit SHA;
just release-checkresult;- Runtime Console
pnpm checkresult when publishing coordinated backend and frontend behavior; - generated artifact status from
just generated-check; - known local infrastructure caveats;
- minimum local stack: Rust toolchain, Docker, and Postgres.
The release scope should stay focused on the installable module path. Do not block a release on centralized marketplace hardening such as publisher trust, registry review, provenance, or signatures unless that is the explicit release goal.