Replaces .gitmodules + git-submodule-based init/update/sync targets with
a manifest-driven sibling-clone model. No nested submodule checkouts
inside universe; each ecosystem repo lives at ~/work/lux/<name> as a
free-standing clone pinned to a semver tag (no main/latest/dev floating
tags in production).
- REPOS.yaml: source-of-truth manifest. 11 live repos pinned, 1
(graph-node) still on main with TODO marker. 6 dead refs removed
(explorer-lux, explorer-zoo, explore-lux, graph-node-lux, v2-subgraph,
v3-subgraph — all 404 on github.com/luxfi; the explorer trio is
folded into luxfi/explore which ships unified Next.js SPA + Go
indexer).
- scripts/repos.sh {init|update|list}: reads REPOS.yaml via yq. init
shallow-clones missing repos at the pinned tag. update fetches +
checks out the pinned tag (optionally for a single repo via
name=<repo>).
- Makefile: drops CORE/APP/DATA_SUBMODULES + ALL_SUBMODULES static
lists. init/update/sync/list delegate to scripts/repos.sh. Section
retitled 'Sibling Repos (REPOS.yaml — no submodules)'.
- .gitmodules: deleted (was empty 0-entry leftover).
To bump a pin: edit REPOS.yaml → make update name=<repo> → verify →
commit.