Captured 2026-10-12 after two complete successful final workflow runs. Test platform: Docker Desktop on macOS ARM64; image platform linux/arm64. Other architectures and emulation were not tested. Base: ros:jazzy-ros-base@sha256:066420e07f60aa18262f2479981def87ebcfcec42eefb0c0c57c4a46098348ca Local image tag: dustin-nav2-costmap-lesson:jazzy Pinned map-server package: 1.3.13-1noble.20260921.044109 Pinned costmap package: 1.3.13-1noble.20260921.044133 Other apt dependencies resolve at build time; this is not a complete package snapshot. Minimal installation estimate: 36.1 MB archives, 176 MB installed, before Docker overhead. Runtime external network: none (ROS participants communicate inside the container). RMW_IMPLEMENTATION=rmw_fastrtps_cpp ROS_DOMAIN_ID=77 for narrow; 78 for wide. use_sim_time=false on both map_server and costmap; supplied static map->base_link. Version-scoped teardown workaround: The runner invokes the costmap through ros2 run --prefix with LD_PRELOAD=/opt/ros/jazzy/lib/liblayers.so, scoped only to that executable. Without it, this binary set reproduced a CallbackGroup destructor fault after checks, including after explicit lifecycle cleanup. A debugger confirmed the failure location; its general root cause was not established. Keeping the official plugin library loaded allowed both final runs to finish with exit code 0 for every ROS process. No Nav2 source or cost calculation was patched. The base ROS client libraries were not changed. Verification: - Both final runs checked all 441 authored map cells and 882 raw costmap bytes. - Both configurations read back correctly and differed only in inflation radius. - Published 16-vertex footprint, active lifecycle states, and clean exits checked. - Independent review checked PGM row order, polygon geometry, and all expected costs. - Radius change added gradient cost to 84 cells; other nonzero classes stayed fixed. - Existing-output protection refused the directory; all 27 artifact hashes unchanged. - reference-costmaps.json is copied from final-1/comparison.json. - Source and raw cell arrays matched across final runs; timestamps differ. - No path planning, obstacle avoidance, localization, or robot result is claimed. Captured runtime metadata: PRETTY_NAME="Ubuntu 24.04.5 LTS" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04.5 LTS (Noble Numbat)" VERSION_CODENAME=noble ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=noble LOGO=ubuntu-logo aarch64 Python 3.12.3 ros-jazzy-nav2-costmap-2d 1.3.13-1noble.20260921.044133 ros-jazzy-nav2-map-server 1.3.13-1noble.20260921.044109 ros-jazzy-nav2-msgs 1.3.13-1noble.20260921.042153 ros-jazzy-nav2-util 1.3.13-1noble.20260921.043534 ros-jazzy-rclcpp 28.1.22-1noble.20260902.143108 ros-jazzy-rclcpp-lifecycle 28.1.22-1noble.20260902.151236 ros-jazzy-rclpy 7.1.12-1noble.20260902.143245 ros-jazzy-rmw-fastrtps-cpp 8.4.4-1noble.20260902.140744 ros-jazzy-tf2-ros 0.36.22-1noble.20260902.154805