Skip to content

Build/cache native modules#2470

Draft
Dreamsorcerer wants to merge 7 commits into
mainfrom
sam/native-modules-test
Draft

Build/cache native modules#2470
Dreamsorcerer wants to merge 7 commits into
mainfrom
sam/native-modules-test

Conversation

@Dreamsorcerer

Copy link
Copy Markdown
Collaborator

Problem

nav_stack tests are being skipped due to lack of native modules.

Solution

Build the modules in CI, cache the nix build in Cachix.

@Dreamsorcerer Dreamsorcerer marked this pull request as draft June 11, 2026 16:56
@codecov

codecov Bot commented Jun 11, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

Flag Coverage Δ
OS-ubuntu-24.04-arm 63.85% <ø> (ø)
OS-ubuntu-latest 64.70% <ø> (ø)
Py-3.10 64.68% <ø> (-0.01%) ⬇️
Py-3.11 64.69% <ø> (ø)
Py-3.12 64.69% <ø> (+<0.01%) ⬆️
Py-3.13 64.69% <ø> (+<0.01%) ⬆️
Py-3.14 64.70% <ø> (ø)
Py-3.14t 64.69% <ø> (+<0.01%) ⬆️
SelfHosted-Large 30.34% <ø> (-0.01%) ⬇️
SelfHosted-Linux 38.89% <ø> (+0.61%) ⬆️
SelfHosted-macOS 36.99% <ø> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...ation/nav_stack/modules/far_planner/far_planner.py 97.33% <ø> (ø)
...n/nav_stack/modules/path_follower/path_follower.py 95.45% <ø> (ø)
...stack/modules/terrain_analysis/terrain_analysis.py 96.15% <ø> (ø)

... and 8 files with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@greptile-apps

greptile-apps Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR wires up a new nav-stack-natives CI job that builds the three nav_stack native modules (far_planner, path_follower, terrain_analysis) via Nix and pushes the results to a Cachix cache, then teaches the self-hosted test job to pull from that cache before running skipif_no_ros tests.

  • New bin/build-nav-stack-natives script discovers NativeModuleConfig subclasses, skips modules whose executables already exist, and builds the rest in parallel with ProcessPoolExecutor.
  • install-nix.sh hardening: adds bash default assignments for all INPUT_* vars so the script is safe to call from a plain run: step without a composite action.
  • Version bumps for all three native module flake references (far_planner v0.5.0→v0.7.1, path_follower v0.2.0→v0.2.1, terrain_analysis v0.1.1→v0.1.2).

Confidence Score: 4/5

Safe to merge once the macOS test-blocking dependency is addressed; the remaining findings are low-impact edge cases.

The macOS self_hosted matrix variant is now coupled to nav-stack-natives even though it never installs Nix or fetches native modules. A Cachix auth failure or nix build timeout would cancel the macOS run entirely, silently dropping coverage that has no dependency on native builds.

ci.yml — the needs: [compute-ros-pin, nav-stack-natives] line on self-hosted-tests couples both matrix variants to native module availability.

Important Files Changed

Filename Overview
.github/workflows/ci.yml Adds nav-stack-natives job for building/caching native modules; makes self-hosted-tests depend on it at the whole-job level, inadvertently blocking the macOS matrix variant (which has no native-module dependency) when the build job fails
bin/build-nav-stack-natives New script to discover and parallel-build NativeModuleConfig subclasses; ProcessPoolExecutor(max_workers=0) crash path exists if discover() returns empty
docker/ros/install-nix.sh Adds bash default-value assignments for INPUT_* env vars so the script can be invoked from a plain workflow run: step without a composite action
dimos/navigation/nav_stack/modules/far_planner/far_planner.py Version bump for far_planner nix flake reference: v0.5.0 → v0.7.1
dimos/navigation/nav_stack/modules/path_follower/path_follower.py Version bump for path_follower nix flake reference: v0.2.0 → v0.2.1
dimos/navigation/nav_stack/modules/terrain_analysis/terrain_analysis.py Version bump for terrain_analysis nix flake reference: v0.1.1 → v0.1.2
docs/usage/native_modules.md Adds a section documenting the Cachix substituter opt-in for local development with the correct public key

Reviews (3): Last reviewed commit: "Merge branch 'main' into sam/native-modu..." | Re-trigger Greptile

Comment thread .github/workflows/ci.yml Outdated
Comment thread docs/usage/native_modules.md Outdated
Comment thread bin/build-nav-stack-natives Outdated
Dreamsorcerer and others added 3 commits June 11, 2026 18:20
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
@Dreamsorcerer Dreamsorcerer marked this pull request as ready for review June 15, 2026 20:19
@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Jun 15, 2026
@github-actions github-actions Bot removed the ready-to-merge Required CI checks have passed on this PR label Jun 15, 2026
@Dreamsorcerer Dreamsorcerer marked this pull request as draft June 15, 2026 21:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant