Directory Atlas: draft repo layouts under RFC #379 + #380 #385
andrewjong
started this conversation in
Ideas
Replies: 1 comment
Changelog (2026-08-20)Trees updated to match the RFCs' consistency pass (#379, #380):
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Directory Atlas: draft repo layouts under RFC #379 + #380
Companion visualization to RFC #379: Modular AirStack and RFC #380: Heterogeneous AirStack. Those RFCs describe the design in prose; this discussion shows what the repositories would actually look like once both land — seven repo shapes, one page. Draft for discussion: file names are illustrative, anatomies are normative.
Legend — untagged entries exist in trunk today:
[new][gen][ign](#379 §n)How a checkout resolves
One hand-edited file selects everything; everything else is derived, fetched, or observed. This pipeline is the reading order for the trunk tree below:
1. Trunk checkout —
castacks/AirStackTrunk keeps the base images, the test harness, the reference stacks, and the modules that haven't migrated out yet. It never carries external module code — that arrives per-stack, gitignored.
2. A module repo — e.g.
castacks/airstack-optitrackA thin repo: ordinary colcon packages, a small manifest carrying deps and identity only — no wiring metadata — and a
test_stack/that is both its CI target and its living install documentation.3. A lab's stack repo — e.g.
airlab-internal/swarm-stacks(private)Stack folders are self-contained, so a custom topology needs no fork of AirStack anywhere — a private repo of stacks and fleets wiring together public (and private) modules. This is the heterogeneous-fleet story: each robot points at a stack, wherever that stack is hosted.
4. A vehicle module — e.g.
castacks/vehicle-hexa-big(module type:data)A vehicle type is data, distributed through the same module mechanism. Each sensor entry names its real driver and its sim representation — one source of truth for both worlds.
5. A platform module — e.g.
castacks/platform-unitree-go2(module type:platform, future — #380 Part 2)Sequenced after #379's phases 1–4 are proven: the embodiment layer as the biggest module. It ships the hardware interface, controller, safety behaviors, and its own reference stacks. The PX4 multirotor stack becomes the first one, extracted from trunk while it's still the only platform.
6. The registry —
castacks/airstack-modules-indexThe rosdistro pattern: one YAML per entry, a PR to get listed, CI-generated compat matrices. The docs site renders it as the marketplace catalog.
7. The researcher fork, before graduation — Stage 1 of #379 §11
Research happens in a fork; modularity is a graduation step, not an entry fee. The only day-one discipline is a directory boundary — everything else is deferred until extraction.
Sources: RFC #379 (module anatomy §2, stacks §3, legibility §4, CI §5, Docker §6, registry §7, researcher workflow §11) and RFC #380 (vehicles §1, fleets §2, top-level config §3, platform modules §6). Layouts reflect the design as of 2026-08-20 (updated for the RFCs' consistency pass: external stack repos,
airstack_compat:inmodules.repos, split-stackwiring.mdgrouping, hardwarewiring.mdprovenance); feedback on naming and placement welcome here, design feedback belongs on the RFCs.All reactions