Modular AirStack 7/9: module catalog + AUTONOMY_ROLE removal (breaking) - #394
Merged
Conversation
…lkthrough - tools/gen_docs_catalog.py: deterministic docs/modules/ generator from the airstack-modules-index registry (catalog table, per-module pages with pinned install snippets, DECLARED-vs-VERIFIED compat notes); --check drift mode; committed pages regenerate from a hermetic registry fixture - docs deploy workflows: shallow-clone registry + registered module repos at their registered refs before mike deploy, with RFC §9 failure isolation (unreachable repo = skip + stub, never a failed deploy); weekly cron + dispatch on develop; triggers extended with stacks/** - mkdocs: top-level Modules tab (catalog + module pages + the five reference stacks with rendered wiring.md); fetched checkouts excluded from the site (strict-build warnings 112 → 59, zero new) - docs/getting_started/modular_airstack.md: the end-to-end new-developer walkthrough (stack up → wiring map → module add → own stack → fleet → doctor); AGENTS.md updated (RFC subsection, workflow table, CLI) - 14 new contract tests; unit suite 252 passed Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
61 lines that declared one parameter and nothing else — no launch file, no references, gtest commented out, untouched since scaffolding (Nov 2024) except the repo restructure. It cost a colcon build in every CI run and bring-up. The idea survives in a better home: in the stack world, an ensemble of planners is a stack-level composition — a stack includes N planner modules plus an arbiter selecting among their global_plan outputs (see docs/robot/autonomy/global/planning/index.md, kept as design intent). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…d blocks, header discipline Graph-neutrality machine-proven: colcon build green and the legacy wiring golden + all four stack wiring.md baselines drift-clean after the sweep. Deleted (zero references, evidence per file in the sweep audit): - the legacy Gazebo parallel-bringup tree (8 files, dead env indirection) - static_transforms dup, gst2ros orphan, mavros_connection_poll, odometry_conversion (pointed at the wrong package), the unwired px4_interface uXRCE launch (package + plugin kept), the empty global_planner.launch.xml stub - dead <?ignore?> blocks in local/sensors/gcs launch files (alternates live in stacks now) and the consumerless local_depth_in_topic arg Legibility: 2-6 line status headers on 22 launch files (stack entry / canonical module launch / LEGACY graph-frozen until 0.21 / utility); description= added to 19 args across 5 files; 6 wrong type-claims corrected (tracking_point/look_ahead are airstack_msgs/Odometry per the conventions spec). Lint allowlist shrinks 14 -> 8. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… path Owner ruling: no legacy-hardware compatibility required; hardware launch workflows redefinable at will. Evidence basis: full ≡ full_default is machine-proven (graph equality, held through every flatten); the desktop profile's 'onboard' role was unreachable anyway (compose hardcoded AUTONOMY_ROLE=full); lite_offload_global's generated bridge config deliberately improves on the legacy split (drops the set_trajectory_mode crossing — doctor hard gate #2). - robot.launch.xml: shared preamble + one stack include; no-env default = stacks/full_default. role arg, three role groups, gossip/gcs args gone - deleted: onboard_all/ + onboard_local_offboard_global/ (shared DDS configs moved to autonomy_bringup/config/ first), the five frozen layer launch files, and the now-empty behavior_bringup/sensors_bringup/local_bringup packages; lite stacks flattened to match (their only remaining wraps) - compose: role env/args gone everywhere; desktop_split/voxl/l4t services select stacks via AIRSTACK_STACK_DIR (redefinable); base default full_default; l4t override rewritten stack-form - CLI: AUTONOMY_ROLE now a hard preflight error with migration guidance; effective config always names the stack - tests: legacy wiring golden retired (default golden = the stack baseline); contract tests assert the removal error; lint allowlist down to 4 principled entries (playback utility, vendored zed, exploration pending rewrite, interface safety boundary) - docs/skills sweep: 15+ pages and 7 skills re-pointed at stacks GPU-gated: flagless default drift-clean vs stacks/full_default/wiring.md; lite_default drift-clean through its flatten; fleet liveliness 8/8. Module follow-up: asm_optitrack/asm_macvo test_stacks still wrap the deleted layer files and need the same flatten in their repos. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Containers drop root-owned __pycache__/build debris into mounted module checkouts; plain rm then failed and left a partial dir that broke the next vcs import. Retry via a throwaway container, with the manual command in the error path. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…losophy Answers the natural 'can we delete robot.launch.xml?' question in the docs instead of in review threads: namespace-scoping mechanics (push_ros_namespace cannot scope sibling includes from within an included preamble), stack files as pure wiring documents, and the dispatcher as the seed of RFC #380's platform module. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stack 7/9 · base:
rfc/s6-fleetsThe marketplace face of the module system — and the breaking cutover: stacks become the only launch path.
What's inside
tools/gen_docs_catalog.pygeneratesdocs/modules/from the airstack-modules-index registry; docs deploys fetch registered module docs at pinned refs (with failure isolation); new-developer walkthrough page.AUTONOMY_ROLEremoved (breaking): the role dispatch and its per-role launch trees (onboard_all/,onboard_local_offboard_global/) are deleted — a setAUTONOMY_ROLEis a preflight hard error; no--stackmeansfull_default. −9,965 lines.ensemble_plannerskeleton deleted, and the "why stacks don't launch standalone" dispatcher-philosophy doc.Validation
🤖 Generated with Claude Code