Autoware downstream smoke evidence¶
calibrex.autoware_smoke is the ROS-independent adapter boundary for the
last-mile checks that belong in an Autoware workspace. A smoke artifact is
bound to one promotion plan self-digest, candidate digest, and package
baseline manifest digest. It records each stage's argv, exit/timeout state,
stdout/stderr digests and tails, execution policy, and provenance.
The canonical stages are:
xacro_urdf— URDF/Xacro expansion or structural description validation.build_test—colcon build/testor an equivalent package build command.tf_static— static TF/frame graph validation.sensor_launch— sensor launch plus topic/frame smoke.perception— optional downstream perception smoke.
Stages are supplied as argv vectors. Calibrex always invokes subprocesses
with shell=False; it does not interpret shell text. Container mode adds
--network=none, a read-only workspace mount, and requires an immutable
sha256:<digest> image for a production artifact. The local repository does
not contain ROS, xacro, ament, or a container runtime, so unit tests use
controlled helper commands and precomputed artifacts. Those tests are
simulated adapter evidence, not a claim that a real ROS workspace passed.
Production flow¶
calibrex autoware promotion plan ... --profile production --output plan.yaml
calibrex autoware smoke run plan.yaml --profile production \
--stage-command 'xacro_urdf=["xacro","..."]' \
--stage-command 'build_test=["colcon","build","--event-handlers","console_direct+"]' \
--stage-command 'tf_static=["python","check_tf.py"]' \
--stage-command 'sensor_launch=["ros2","launch","..."]' \
--output smoke.yaml
calibrex autoware smoke verify smoke.yaml --plan plan.yaml
calibrex autoware promotion apply plan.yaml --smoke-artifact smoke.yaml
apply re-verifies the smoke self-digest and exact plan binding, re-reads the
candidate and package baseline immediately before mutation, and refuses stale
or mismatched evidence. It stores backup inventory, output file digests, and
the smoke digest in the updated promotion artifact. Rollback preflights every
target and backup digest before restoring any file, so an intervening edit
cannot result in a partial rollback.
--profile developer is an explicit local opt-out. A passing developer smoke
artifact is labelled developer-only and can never authorize a production or
commercial promotion. A production plan without a PASS,
production-admissible smoke artifact is blocked.
Precomputed handoff¶
On a ROS-enabled CI/vehicle machine, save a smoke artifact and transfer it with the promotion plan. On a ROS-free signing/apply machine:
calibrex autoware smoke import smoke.yaml --plan plan.yaml --output bound-smoke.yaml
calibrex autoware smoke verify bound-smoke.yaml --plan plan.yaml
calibrex autoware promotion apply plan.yaml --smoke-artifact bound-smoke.yaml
Import validates the artifact's self-digest and all plan bindings. It does not upgrade simulated or developer evidence to production evidence.