Professional operating manual for the ROS parent repository and its managed multi-repo research program.
This parent repository orchestrates the full program workspace, shared workflows, and submodule pointers for domain repositories under program/.
It is the control plane for:
- repository topology
- shared workflows and guidance
- reproducible workspace bootstrap
- integration flow across subrepos
It is not where all implementation code lives; implementation is distributed in submodules.
- root-level orchestration
- docs/specs/plans
- shared scripts and operational guidance
- submodule pinning for exact child-repo states
research-program-index: orchestration roadmap, governance, release schemabenchmark-core: benchmark contracts and baseline verification testslocalization-tracking: localization and tracking domain workuav-mpc-geometric-control: UAV MPC and geometric control domain worksensorless-estimation-suite: sensorless estimation workflowsswarm-path-planning-bees: swarm/path-planning workflowsik-uncertainty-learning: inverse-kinematics uncertainty workflowsdigital-twin-pipeline: digital twin integration pipelinedocs-multilingual-continuity: documentation continuity assetsrepro-packages: reproducibility packaging artifacts
Run from a clean terminal:
git clone --recurse-submodules https://github.com/molhamfetnah/ROS.git
cd ROS
git submodule sync --recursive
git submodule update --init --recursiveValidation checkpoint:
git submodule status -- program/*Expected: 10 program/* entries listed with commit SHAs.
cd <path-to-your-ROS-clone> || exit 1
git rev-parse --show-toplevel
git rev-parse --is-inside-work-tree >/dev/null
origin_url="$(git remote get-url origin 2>/dev/null || true)"
printf '%s\n' "$origin_url" | grep -Eq '^(git@github\.com:molhamfetnah/ROS(\.git)?|https://github\.com/molhamfetnah/ROS(\.git)?)$' || { echo "Error: origin must be molhamfetnah/ROS (SSH or HTTPS)." >&2; exit 1; }
git checkout main
git pull --ff-onlyExpected:
git rev-parse --show-toplevelprints the absolute path to your clone root.- Worktree and exact canonical
originidentity checks pass before branch mutation commands run. Already up to date.or fast-forward output.
git submodule sync --recursive
git submodule update --init --recursiveExpected: each program/* submodule checked out with no errors.
git status --short --branch
git submodule status -- program/*Expected:
- parent branch shown (normally
## main) - no unexpected dirty state
- 10
program/*submodule SHAs listed
gh auth status || gh auth login
gh repo view molhamfetnah/ROS --json defaultBranchRefExpected: authenticated account and default branch details returned.
cd <path-to-your-ROS-clone> || exit 1
git rev-parse --show-toplevel
git rev-parse --is-inside-work-tree >/dev/null
origin_url="$(git remote get-url origin 2>/dev/null || true)"
printf '%s\n' "$origin_url" | grep -Eq '^(git@github\.com:molhamfetnah/ROS(\.git)?|https://github\.com/molhamfetnah/ROS(\.git)?)$' || { echo "Error: origin must be molhamfetnah/ROS (SSH or HTTPS)." >&2; exit 1; }
git checkout main
git pull --ff-only
git submodule sync --recursive
git submodule update --init --recursivecd <path-to-your-ROS-clone> || exit 1
git rev-parse --show-toplevel
git rev-parse --is-inside-work-tree >/dev/null
origin_url="$(git remote get-url origin 2>/dev/null || true)"
printf '%s\n' "$origin_url" | grep -Eq '^(git@github\.com:molhamfetnah/ROS(\.git)?|https://github\.com/molhamfetnah/ROS(\.git)?)$' || { echo "Error: origin must be molhamfetnah/ROS (SSH or HTTPS)." >&2; exit 1; }
git checkout main || exit 1
git pull --ff-only || exit 1
git worktree add -b <feature-branch> .worktrees/<feature-branch>
cd .worktrees/<feature-branch>Install the git tracking shim first, then start a new shell (or source your shell rc file) so the shim is active, and run:
cd <path-to-your-ROS-clone> || exit 1
git rev-parse --show-toplevel
scripts/install-git-tracking-shim.sh
# Start a new shell, or source your shell rc file before continuing.
git status
ls -la .trackingExpected:
.tracking/latest.json.tracking/history.ndjson.tracking/latest.txt
For submodule-specific work, run commands inside target submodule:
cd <path-to-your-ROS-clone>/program/research-program-index || exit 1
git rev-parse --show-toplevel
git statusParent-tracking artifacts should not be created inside submodules.
Cause: work happened inside submodules, not parent tracked files.
Fix:
cd <path-to-your-ROS-clone> || exit 1
git rev-parse --show-toplevel
git status --short
git diff --submoduleIf parent has no diff, create PR in the child repo instead.
Fix:
gh config set git_protocol https
gh auth setup-git
git remote -vRetry push after protocol switch.
Check:
cd <path-to-your-ROS-clone> || exit 1
git rev-parse --show-toplevel
origin_url="$(git remote get-url origin 2>/dev/null || true)"
printf '%s\n' "$origin_url" | grep -Eq '^(git@github\.com:molhamfetnah/ROS(\.git)?|https://github\.com/molhamfetnah/ROS(\.git)?)$' || { echo "Error: origin must be molhamfetnah/ROS (SSH or HTTPS)." >&2; exit 1; }
gh repo view molhamfetnah/ROS --json defaultBranchRef
gh pr view <pr-number> --repo molhamfetnah/ROS --json baseRefName,headRefName,urlCreate PR with explicit base (safe, PR-scoped):
gh pr create --repo molhamfetnah/ROS --base mainRetarget an existing PR base (does not change repository default branch):
gh pr edit <pr-number> --repo molhamfetnah/ROS --base mainFix:
cd <path-to-your-ROS-clone> || exit 1
git rev-parse --show-toplevel
git submodule sync --recursive
git submodule update --init --recursive
git submodule status -- program/*- Parent repo: orchestration/docs/submodule-pointer changes.
- Child repo: domain implementation changes.
- Merge child-repo PRs first.
- Update/pin submodule pointers in parent.
- Merge parent PR last.
Run these checks from the feature worktree that contains your PR changes (not the parent main checkout):
cd <path-to-your-feature-worktree> || exit 1
git rev-parse --show-toplevel
git rev-parse --is-inside-work-tree >/dev/null
origin_url="$(git remote get-url origin 2>/dev/null || true)"
printf '%s\n' "$origin_url" | grep -Eq '^(git@github\.com:molhamfetnah/ROS(\.git)?|https://github\.com/molhamfetnah/ROS(\.git)?)$' || { echo "Error: origin must be molhamfetnah/ROS (SSH or HTTPS)." >&2; exit 1; }
FEATURE_BRANCH=<your-feature-branch>
CURRENT_BRANCH="$(git branch --show-current)"
test "$CURRENT_BRANCH" != "main"
test "$CURRENT_BRANCH" = "$FEATURE_BRANCH"
git status --short --branch
git submodule status -- program/*
bash scripts/tests/test-track-git-status.sh
bash scripts/tests/test-git-tracking-shim.shPerform final parent-repo updates (submodule pointers/docs) in this same feature worktree branch only before opening the parent PR:
cd <path-to-your-feature-worktree> || exit 1
git rev-parse --show-toplevel
git rev-parse --is-inside-work-tree >/dev/null
origin_url="$(git remote get-url origin 2>/dev/null || true)"
printf '%s\n' "$origin_url" | grep -Eq '^(git@github\.com:molhamfetnah/ROS(\.git)?|https://github\.com/molhamfetnah/ROS(\.git)?)$' || { echo "Error: origin must be molhamfetnah/ROS (SSH or HTTPS)." >&2; exit 1; }
FEATURE_BRANCH=<your-feature-branch>
CURRENT_BRANCH="$(git branch --show-current)"
test "$CURRENT_BRANCH" != "main"
test "$CURRENT_BRANCH" = "$FEATURE_BRANCH"Reserve the parent main checkout for sync/cleanup commands only (see section 8.1).
Expected: clean or intentional diff only; test scripts pass.
Run cleanup/sync commands from the parent main checkout, not from an active feature worktree:
cd <path-to-your-ROS-clone> || exit 1
git rev-parse --show-toplevel
git rev-parse --is-inside-work-tree >/dev/null
origin_url="$(git remote get-url origin 2>/dev/null || true)"
printf '%s\n' "$origin_url" | grep -Eq '^(git@github\.com:molhamfetnah/ROS(\.git)?|https://github\.com/molhamfetnah/ROS(\.git)?)$' || { echo "Error: origin must be molhamfetnah/ROS (SSH or HTTPS)." >&2; exit 1; }
git checkout main
git pull --ff-only
git fetch --prunecd <path-to-your-ROS-clone> || exit 1
git rev-parse --show-toplevel
git rev-parse --is-inside-work-tree >/dev/null
origin_url="$(git remote get-url origin 2>/dev/null || true)"
printf '%s\n' "$origin_url" | grep -Eq '^(git@github\.com:molhamfetnah/ROS(\.git)?|https://github\.com/molhamfetnah/ROS(\.git)?)$' || { echo "Error: origin must be molhamfetnah/ROS (SSH or HTTPS)." >&2; exit 1; }
git worktree list
git worktree remove .worktrees/<feature-branch>cd <path-to-your-ROS-clone> || exit 1
git rev-parse --show-toplevel
git rev-parse --is-inside-work-tree >/dev/null
origin_url="$(git remote get-url origin 2>/dev/null || true)"
printf '%s\n' "$origin_url" | grep -Eq '^(git@github\.com:molhamfetnah/ROS(\.git)?|https://github\.com/molhamfetnah/ROS(\.git)?)$' || { echo "Error: origin must be molhamfetnah/ROS (SSH or HTTPS)." >&2; exit 1; }
git submodule sync --recursive
git submodule update --init --recursive- Avoid
git reset --hardunless you explicitly want to discard local work.
- Design spec:
docs/superpowers/specs/2026-05-03-master-readme-guidance-design.md - Tracking implementation plan:
docs/superpowers/plans/2026-05-02-git-status-tracking-implementation.md - Repo architecture spec:
docs/superpowers/specs/2026-04-30-repo-architecture-design.md - Master README implementation plan:
docs/superpowers/plans/2026-05-03-master-readme-guidance-implementation.md - Core subrepos:
program/research-program-index/README.mdprogram/benchmark-core/README.md
| # | Project | Journal | Manuscript ID | Status |
|---|---|---|---|---|
| 1 | Swarm (Bees Algorithm) | Applied Soft Computing | ASOC-D-26-06746 | Received |
| 2 | IK Ensemble | IEEE RA-L | 26-2479 | Received |
| 3 | UAV Distributed MPC | Robotics and Autonomous Systems | ROBOT-D-26-01147 | Received |
- Applied Soft Computing: https://www.editorialmanager.com/ASOC
- IEEE RA-L: https://ras.papercept.net/journals/ral
- Robotics and Autonomous Systems: https://www.editorialmanager.com/ROBOT/