This document defines the current repository governance and workspace strategy for
navigation_3d.
navigation_3d is the integration repository in the embodied-navigation organization at
the current stage.
The matching child repositories already exist:
nav_commonnav_protocolmap_managerslamperceptionplannercontrollertask_managernav_launch
Current status:
- all child repositories are tracked through
developas active development repositories navigation_3dcontinues to own integration, launch, environment, CI, and version locking
developis the default integration branchmainis the stable branch- normal development should happen through topic branches based on
develop mainmust remain release-oriented- repository protection should prevent direct pushes to
main developshould also be protected so that integration happens through pull requests
The current workspace source manifest entrypoint is:
vcs import src < repos/private.reposUpdate existing child repositories with:
vcs pull srcrepos/private.repos is the current main source of truth for child repository assembly and
pins the active develop branches for the child repositories participating in the current
minimal navigation system.
base.repos remains only as a historical compatibility manifest from the earlier bootstrap
phase and is no longer the recommended main workflow entrypoint.
The standard development environment is Docker-based.
Current policy:
- workspace setup, build, and test should run in Docker by default
- host-side builds are not the standard supported workflow
- root-level helper scripts are the official entrypoints for setup, build, test, and format validation
The previous core/ and interfaces/ layouts are no longer part of the active repository
shape. They should not be used as the basis for current architecture or repository planning.
Current policy:
- do not add new code under the old layout
- do not describe the old layout as the long-term repository structure
- keep migration planning separate from implementation work
The active rule is:
- child repositories own module implementation
navigation_3downs system assembly and validation- a child repository change is not complete until the main repository updates
repos/private.reposand the Docker-based smoke test passes
The repository uses a two-level CI model:
- child repositories keep fast repository-local CI for formatting, unit tests, and module build checks
navigation_3dkeeps the workspace-assembly and end-to-end smoke test
Shared helpers live in the root scripts/ directory. The CI flow is documented in
docs/ci-flow.md.
The repository also runs a weekly AI-assisted review workflow that complements CI:
- scheduled on Fridays and triggerable on demand
- collects facts for
navigation_3dand all child repositories - reviews open PRs only
- ranks risks and produces a Markdown email report
The weekly review workflow is documented in docs/weekly-review.md
and implemented by .github/workflows/weekly-review.yml.
The repository uses Git tags as the source of truth for versioned release notes.
- draft generation and release-note rules live in
docs/release-notes.md - release notes are generated from Conventional Commits and merged PR titles
- a tag push publishes the frozen release body automatically
- repository-local release archives can be stored under
docs/releases/if needed
The rolling repository changelog lives in CHANGELOG.md and is generated from the same
history. It can be refreshed locally or by the changelog sync workflow when develop
changes.
Child repositories should begin hosting real implementation only when one or more of the following become true:
- the corresponding module interfaces are stable
- the module has a clear long-term owner
- the module needs an independent release cadence
- the main repository CI or collaboration cost becomes too high
- the module has clear reuse value outside the main repository
The next repository structure target is expected to center on these ROS 2 packages under
src/:
src/nav_commonsrc/nav_protocolsrc/map_managersrc/slamsrc/perceptionsrc/plannersrc/controllersrc/task_managersrc/nav_launch
This document only defines the governance and migration direction. It does not itself move code into the child repositories.