Skip to content

Commit 133aa2a

Browse files
andrewjongclaude
andauthored
RAVEN semantic planner + geometric exploration planner as modules (full_raven, full_exploration stacks) (#426)
* feat(modules): RAVEN + geometric exploration planners as modules; global_plan→NavigateTask bridge Two global planners now ship as external modules with pinned reference stacks: - stacks/full_exploration — asm_exploration_planner (frontier-based geometric exploration planner from the construction-site project). The trunk package robot/ros_ws/src/global/planners/exploration moves to that module repo with its history (git filter-repo) plus the bounded-exploration additions from junbin/planning_demo; removed here so the same colcon package never exists in trunk and the module overlay at once. - stacks/full_raven — asm_raven (RAVEN, ICRA 2026): the RayFronts semantic ray-frontier mapper + behavior manager run as a GPU sidecar container declared by the module's compose fragment; raven_bridge relays plans/prompts on the robot side. Trunk support these needed: - robot/ros_ws/src/global/global_plan_navigate_bridge: turns each new Path on global_plan into a NavigateTask goal (cancel-then-resend, identical re-publications deduped) so topic-publishing planners can drive the task-executor local planner droan_gl. Hermetic unit tests registered in tests/colcon_unit_test_packages.yaml. - tools/module_overlay.py: compose fragments may now declare sidecar services with build: sections — build.context / build.dockerfile / env_file relative paths are absolutized like bind sources (+ contract tests). - Isaac follow camera: ISAAC_SIM_FOLLOW_CAM_TOPIC / ISAAC_SIM_FOLLOW_CAM_RES publish the chase camera as a sensor_msgs/Image topic for headless video capture (scene_prep.add_camera_image_publisher). - Docs: stack tables, autonomy modes, global planning page, environment variables, modules.md (sidecars), docs/modules catalog regenerated from the fixture index (raven, exploration_planner, full_raven, full_exploration), mkdocs nav, release notes. VERSION 0.21.0-dev.8 -> 0.21.0-dev.9. Module repos: castacks/asm_raven, castacks/asm_exploration_planner (v0.1.0 pins are placeholders until tagged). Registry: airstack-modules-index PR #2. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * docs(modules): document sidecar-container modules (compose fragment with build:) in modules.md and the create-module skill Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(isaac): single-drone launch script honors ISAAC_SIM_SPAWN_XY example_one_px4_pegasus_launch_script.py hardcoded the spawn at the world origin; only the multi-drone script read ISAAC_SIM_SPAWN_XY. Several imported stages (construction-site, retro-neighborhood) are enclosed at the origin, so --scene runs with one robot could not move the drone off it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * stacks(full_exploration, full_raven): rebase on full_mighty Both new stacks now take their local layer from full_mighty (asm_mighty v0.1.1 pinned alongside the planner module): MIGHTY's bridge follows the published global_plan directly, so the Path->NavigateTask adapter is not needed there (global_plan_navigate_bridge stays in trunk for droan_gl-based stacks), and MIGHTY plans on the Ouster LiDAR, which keeps navigation working in unlit imported stages where the stereo disparity droan_gl consumes is unavailable. Docs tables, release notes, registry fixture entries and the generated catalog updated; both READMEs flag asm_mighty's known fixed-yaw-at-goal bug (fix being upstreamed separately). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * stacks(full_exploration, full_raven): pin asm_mighty v0.1.2 (arrival-yaw fix upstreamed) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * Merge develop (asm_mighty v0.1.3); VERSION 0.21.0-dev.10; pin v0.1.3 in full_exploration/full_raven Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * stacks(full_exploration, full_raven): open MIGHTY's global_plan follower gate for 3 m takeoffs mighty_bridge engages its global_plan follower only after climbing follow_min_climb_m (module default 8 m); TakeoffTask climbs to ~3 m, so the published plans were adopted but never flown. A scoped set_parameter around the MIGHTY include lowers follow_min_climb_m / follow_airborne_above_m to 1.5 m without editing the module. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
1 parent ea34a62 commit 133aa2a

74 files changed

Lines changed: 1539 additions & 7412 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.agents/skills/create-module/SKILL.md‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,27 @@ is remapping other modules' topics or overriding canonical names in module launc
101101
files: in a conventional stack, including the module must require **zero** remaps,
102102
so only deviations appear in stack files.)
103103

104+
## Heavy dependencies: overlay layer vs sidecar container
105+
106+
Two patterns exist for deps that do not belong in the trunk robot image:
107+
108+
- **Overlay layer** (`dockerfile: Dockerfile.module`, tier 2) — the module's
109+
deps are built ON TOP of the robot image and its nodes run in the robot
110+
container (asm_macvo: TensorRT + weights). Right when the module's nodes must
111+
share the robot's process space/ROS distro and the deps are compatible with
112+
the robot image's Ubuntu/Python.
113+
- **Sidecar container** (`compose: <fragment>.yaml` with its own `build:`) —
114+
a second container next to the robot on `airstack_network`, same
115+
`ROS_DOMAIN_ID`, talking DDS (asm_raven: RayFronts on Ubuntu 22.04 / ROS 2
116+
Humble / torch cu130 / patched OpenVDB — incompatible with the Jazzy robot
117+
image). The overlay absolutizes the fragment's `build.context`,
118+
`build.dockerfile`, `env_file` and bind sources; `airstack up` builds the
119+
image on first run. Keep a thin robot-side colcon package (`<name>_bridge`)
120+
that owns the canonical launch file and relays the sidecar's module-private
121+
topics onto canonical names — the launch-arg interface must still exist on
122+
the robot side. Cross-distro DDS works for unchanged message types; note it
123+
in the README.
124+
104125
## Steps (by hand, until `airstack module create` lands)
105126

106127
1. Create the repo with the anatomy above; write `module.yaml` first.

‎.env‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ PROJECT_NAME="airstack"
1212
# If you've run ./airstack.sh setup, then this will auto-generate from the git commit hash every time a change is made
1313
# to a Dockerfile or docker-compose.yaml file. Otherwise this can also be set explicitly to make a release version.
1414
# auto-generated from git commit hash
15-
VERSION="0.21.0-dev.13"
15+
VERSION="0.21.0-dev.14"
1616
# Image-tag discriminator ONLY (appears in the image tag suffix, e.g. ..._robot-x86-64_dev).
1717
# No Dockerfile consumes it: "prebuilt" does NOT bake the built ros_ws into the image today —
1818
# a real prebuilt (workspace-baked) stage is future work. Keep "dev" (mounted code, built live).

‎.vscode/c_cpp_properties.json‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
"/home/andrew/Development/AirStack/robot/ros_ws/src/behavior/behavior_executive/include/**",
1212
"/home/andrew/Development/AirStack/robot/ros_ws/src/behavior/behavior_tree/include/**",
1313
"/home/andrew/Development/AirStack/robot/ros_ws/src/global/planners/ensemble_planner/include/**",
14-
"/home/andrew/Development/AirStack/robot/ros_ws/src/global/planners/exploration/include/**",
1514
"/home/andrew/Development/AirStack/robot/ros_ws/src/global/planners/random_walk/include/**",
1615
"/home/andrew/Development/AirStack/robot/ros_ws/src/global/world_models/vdb_mapping/include/**",
1716
"/home/andrew/Development/AirStack/robot/ros_ws/src/global/world_models/vdb_mapping_ros2/vdb_mapping_ros2/include/**",

‎docs/development/stacks.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ Anatomy is enforced by a unit test: `tests/meta/test_stack_layout_contract.py`
3030
| [`full_default`](https://github.com/castacks/AirStack/tree/develop/stacks/full_default) | The full-autonomy topology with the MIGHTY map-based local planner (`asm_mighty` module: planner + acl-mapping voxel world model + NavigateTask bridge) — the baseline, and what launches when no stack is selected. |
3131
| [`full_droan`](https://github.com/castacks/AirStack/tree/develop/stacks/full_droan) | The GPU DROAN reactive planner (`droan_gl`, `asm_droan` module) in place of MIGHTY — for depth-camera-only vehicles and legacy comparisons. |
3232
| [`full_droan_cpu`](https://github.com/castacks/AirStack/tree/develop/stacks/full_droan_cpu) | CPU DROAN planner + live `disparity_expansion` (`asm_droan` module) for machines without a GPU planner. |
33+
| [`full_exploration`](https://github.com/castacks/AirStack/tree/develop/stacks/full_exploration) | `full_default` with the frontier-based geometric exploration planner in place of the random walk. Requires the `asm_exploration_planner` module (pinned in the stack's `modules.repos` alongside `asm_mighty`). |
34+
| [`full_raven`](https://github.com/castacks/AirStack/tree/develop/stacks/full_raven) | `full_default` with RAVEN open-set semantic navigation as the global planner: RayFronts GPU sidecar container + `raven_bridge`. Requires the `asm_raven` module (pinned alongside `asm_mighty`). |
3335
| [`full_macvo`](https://github.com/castacks/AirStack/tree/develop/stacks/full_macvo) | MAC-VO as the DROAN planner's disparity source. Requires the `asm_macvo` and `asm_droan` modules. |
3436
| [`lite_default`](https://github.com/castacks/AirStack/tree/develop/stacks/lite_default) | Onboard-lite topology, unsplit: interface, sensors, perception, flat Local layer, behavior; **no global, no logging**. |
3537
| [`lite_offload_global`](https://github.com/castacks/AirStack/tree/develop/stacks/lite_offload_global) | A **split stack**: `onboard.launch.xml` (= lite topology) + `offboard.launch.xml` (global layer only) + `bridge.yaml`. |
@@ -296,6 +298,8 @@ ignored. Select the topology with `--stack`:
296298
| The full-autonomy baseline | Nothing — `full_default` launches by default (or be explicit: `--stack full_default`) |
297299
| GPU DROAN reactive planner | `--stack full_droan` (`asm_droan` module) |
298300
| CPU DROAN topology | `--stack full_droan_cpu` (`asm_droan` module) |
301+
| Frontier exploration global planner | `--stack full_exploration` (requires the `asm_exploration_planner` module) |
302+
| RAVEN semantic (language-prompted) global planner | `--stack full_raven` (requires the `asm_raven` module; first run builds the sidecar image; Isaac Sim with GUI) |
299303
| MAC-VO disparity topology | `--stack full_macvo` (`asm_macvo` + `asm_droan` modules) |
300304
| Onboard-lite, unsplit | `--stack lite_default` |
301305
| Split onboard/offboard | `--stack lite_offload_global:onboard` / `:offboard` (+ generate the router config from `bridge.yaml`) |
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# exploration_planner
2+
3+
<!-- GENERATED by tools/gen_docs_catalog.py from the airstack-modules-index registry. Do not edit by hand: regenerate with
4+
python3 tools/gen_docs_catalog.py --index <registry-checkout>
5+
(the docs deploy workflows regenerate it against the live registry at build time) -->
6+
7+
> Frontier-based geometric exploration global planner — OpenVDB occupancy map, frontier clustering, bounded viewpoint sampling and an RRT path to the chosen viewpoint, published as global_plan; developed for the CMU AirLab construction-site project
8+
9+
| | |
10+
|---|---|
11+
| Repository | [castacks/asm_exploration_planner](https://github.com/castacks/asm_exploration_planner) |
12+
| Type | `ros_package` |
13+
| Maintainer | ajong@andrew.cmu.edu |
14+
| License | BSD-3-Clause-Clear |
15+
| Registered ref | [`v0.1.1`](https://github.com/castacks/asm_exploration_planner/tree/v0.1.1) |
16+
| Declared compat | `>=0.21.0-dev.8 <0.22.0` |
17+
| Registry entry | [modules/exploration_planner.yaml](https://github.com/castacks/airstack-modules-index/blob/main/modules/exploration_planner.yaml) |
18+
19+
## Install
20+
21+
From an AirStack checkout ([AirStack Modules guide](../development/modules.md)):
22+
23+
```bash
24+
airstack module add https://github.com/castacks/asm_exploration_planner --version v0.1.1
25+
airstack up
26+
```
27+
28+
`module add` pins the module in `modules.repos` and syncs it into the
29+
gitignored `modules/` overlay; `airstack up` automatically includes the
30+
generated compose override that mounts it into the containers.
31+
32+
## Compatibility: declared vs verified
33+
34+
The range `>=0.21.0-dev.8 <0.22.0` is **DECLARED** by the module author
35+
(copied from the module's `module.yaml`). The **VERIFIED** record — rows
36+
stamped exclusively by CI runs of the reusable
37+
[module-system-tests workflow](../development/module_ci.md) — lives in the
38+
registry's [compat/ matrix](https://github.com/castacks/airstack-modules-index/tree/main/compat)
39+
([compat/exploration_planner.yaml](https://github.com/castacks/airstack-modules-index/blob/main/compat/exploration_planner.yaml) once stamped).
40+
A compatibility claim that isn't CI-verified rots: trust the
41+
matrix, read the declaration as intent.
42+
43+
## Documentation
44+
45+
- [Module README on GitHub @ `v0.1.1`](https://github.com/castacks/asm_exploration_planner/blob/v0.1.1/README.md)
46+
- *The module repo was not fetched when this page was generated — the*
47+
*links above go to GitHub at the registered ref (failure isolation:*
48+
*an unreachable module repo never fails the docs deploy).*
49+
50+
## Registered stacks using this module
51+
52+
- [full_exploration](../../stacks/full_exploration/README.md)
53+
54+
## Registry notes
55+
56+
> Extracted from trunk (robot/ros_ws/src/global/planners/exploration, history preserved) together with the bounded-exploration additions from the construction-site demo branch. Publishes a path on global_plan and serves the behavior/global_plan_toggle service; the MIGHTY bridge (full_exploration) follows the published plan directly, while droan_gl-based stacks add the trunk global_plan_navigate_bridge. Consumed by trunk reference stack full_exploration.

‎docs/modules/index.md‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@ directory and is never hand-edited.
2020
|--------|-------------|------|------------|-----------------|-------|
2121
| [dfm2_disturbances](dfm2_disturbances.md) | Isaac Sim disturbance library (fan/vent force fields, strobe lights, lens flare) | `isaac_extension` | ajong@andrew.cmu.edu | `>=0.19.0-alpha.18 <0.20.0` | [repo](https://github.com/castacks/asm_dfm2_disturbances) |
2222
| [droan](droan.md) | DROAN disparity-space local obstacle avoidance — the GPU (OpenGL) droan_gl planner and the CPU droan_local_planner with its disparity_expansion / disparity_graph / disparity_graph_cost_map world model, serving AirStack's NavigateTask / trajectory_controller seam from a stereo disparity image | `ros_package` | ajong@andrew.cmu.edu | `>=0.21.0-dev.10 <0.22.0` | [repo](https://github.com/castacks/asm_droan) · [full_droan](../../stacks/full_droan/README.md) · [full_droan_cpu](../../stacks/full_droan_cpu/README.md) · [full_macvo](../../stacks/full_macvo/README.md) |
23+
| [exploration_planner](exploration_planner.md) | Frontier-based geometric exploration global planner — OpenVDB occupancy map, frontier clustering, bounded viewpoint sampling and an RRT path to the chosen viewpoint, published as global_plan; developed for the CMU AirLab construction-site project | `ros_package` | ajong@andrew.cmu.edu | `>=0.21.0-dev.8 <0.22.0` | [repo](https://github.com/castacks/asm_exploration_planner) · [full_exploration](../../stacks/full_exploration/README.md) |
2324
| [macvo](macvo.md) | MAC-VO learned stereo visual odometry (ICRA 2025 best paper) — macvo_ros2 wrapper around the MAC-VO network, publishing odometry, a covariance-aware point cloud, and the disparity image the local planner can consume | `ros_package` | ajong@andrew.cmu.edu | `>=0.19.0-alpha.18 <0.20.0` | [repo](https://github.com/castacks/asm_macvo) · [full_macvo](../../stacks/full_macvo/README.md) |
24-
| [mighty](mighty.md) | MIGHTY Hermite-spline local planner (MIT ACL, RA-L 2026) with its acl-mapping voxel world model and a bridge to AirStack's NavigateTask / trajectory_controller seam — AirStack's default local planner (the map-based replacement for DROAN) | `ros_package` | ajong@andrew.cmu.edu | `>=0.21.0-dev.10 <0.22.0` | [repo](https://github.com/castacks/asm_mighty) · [full_default](../../stacks/full_default/README.md) |
25+
| [mighty](mighty.md) | MIGHTY Hermite-spline local planner (MIT ACL, RA-L 2026) with its acl-mapping voxel world model and a bridge to AirStack's NavigateTask / trajectory_controller seam — AirStack's default local planner (the map-based replacement for DROAN) | `ros_package` | ajong@andrew.cmu.edu | `>=0.21.0-dev.10 <0.22.0` | [repo](https://github.com/castacks/asm_mighty) · [full_default](../../stacks/full_default/README.md) · [full_exploration](../../stacks/full_exploration/README.md) · [full_raven](../../stacks/full_raven/README.md) |
2526
| [optitrack](optitrack.md) | OptiTrack NatNet mocap integration — natnet_ros2 client + PX4 external-vision fusion bridges on the robot, and the Motive-compatible NatNet server emulator for Isaac Sim | `ros_package` | ajong@andrew.cmu.edu | `>=0.19.0-alpha.18 <0.20.0` | [repo](https://github.com/castacks/asm_optitrack) |
27+
| [raven](raven.md) | RAVEN semantic aerial navigation (ICRA 2026) — the RayFronts open-set semantic ray-frontier map and behavior manager (voxel, ray, LVLM and frontier search) in a GPU sidecar container publishing global_plan toward a natural-language target, plus the raven_bridge plan/prompt relay on the robot | `ros_package` | ajong@andrew.cmu.edu | `>=0.21.0-dev.8 <0.22.0` | [repo](https://github.com/castacks/asm_raven) · [full_raven](../../stacks/full_raven/README.md) |
2628

2729
## Registered stacks
2830

@@ -37,7 +39,9 @@ The stacks below are the ones REGISTERED in the index; the site nav's
3739
| [full_default](../../stacks/full_default/README.md) | The full-autonomy topology as a self-contained stack folder, with the MIGHTY map-based local planner (asm_mighty module: planner + acl-mapping voxel world model + NavigateTask bridge) — the baseline most users start from, the default when no stack is selected, and the stack other stacks are copied from | `>=0.21.0-dev.10 <0.22.0` | [wiring.md](../../stacks/full_default/wiring.md) | [full_default.yaml](https://github.com/castacks/airstack-modules-index/blob/main/stacks/full_default.yaml) |
3840
| [full_droan](../../stacks/full_droan/README.md) | Full autonomy with the GPU DROAN reactive local planner (droan_gl, asm_droan module) in place of the default MIGHTY planner — the 0.20.x full_default topology kept as a named stack for depth-camera-only vehicles and legacy comparisons | `>=0.21.0-dev.10 <0.22.0` | [wiring.md](../../stacks/full_droan/wiring.md) | [full_droan.yaml](https://github.com/castacks/airstack-modules-index/blob/main/stacks/full_droan.yaml) |
3941
| [full_droan_cpu](../../stacks/full_droan_cpu/README.md) | Full autonomy with the CPU DROAN local planner (droan_local_planner + live disparity_expansion world model, asm_droan module) in place of the default MIGHTY planner | `>=0.21.0-dev.10 <0.22.0` | [wiring.md](../../stacks/full_droan_cpu/wiring.md) | [full_droan_cpu.yaml](https://github.com/castacks/airstack-modules-index/blob/main/stacks/full_droan_cpu.yaml) |
42+
| [full_exploration](../../stacks/full_exploration/README.md) | Full autonomy (full_default topology: MIGHTY LiDAR-based local planner) with the frontier-based geometric exploration planner (exploration_planner module) in place of the random walk; everything else is identical to full_default | `>=0.21.0-dev.8 <0.22.0` | *not committed yet* | [full_exploration.yaml](https://github.com/castacks/airstack-modules-index/blob/main/stacks/full_exploration.yaml) |
4043
| [full_macvo](../../stacks/full_macvo/README.md) | Full autonomy with MAC-VO learned stereo visual odometry as the disparity source for the DROAN local planner (droan_gl, asm_droan module, consumes /$ROBOT_NAME/perception/macvo/disparity) | `>=0.21.0-dev.10 <0.22.0` | [wiring.md](../../stacks/full_macvo/wiring.md) | [full_macvo.yaml](https://github.com/castacks/airstack-modules-index/blob/main/stacks/full_macvo.yaml) |
44+
| [full_raven](../../stacks/full_raven/README.md) | Full autonomy (full_default topology: MIGHTY LiDAR-based local planner) with RAVEN open-set semantic navigation as the global planner (RayFronts GPU sidecar container + raven_bridge); everything else is identical to full_default | `>=0.21.0-dev.8 <0.22.0` | *not committed yet* | [full_raven.yaml](https://github.com/castacks/airstack-modules-index/blob/main/stacks/full_raven.yaml) |
4145

4246
## See also
4347

‎docs/modules/mighty.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ matrix, read the declaration as intent.
5050
## Registered stacks using this module
5151

5252
- [full_default](../../stacks/full_default/README.md)
53+
- [full_exploration](../../stacks/full_exploration/README.md)
54+
- [full_raven](../../stacks/full_raven/README.md)
5355

5456
## Registry notes
5557

‎docs/modules/raven.md‎

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
# raven
2+
3+
<!-- GENERATED by tools/gen_docs_catalog.py from the airstack-modules-index registry. Do not edit by hand: regenerate with
4+
python3 tools/gen_docs_catalog.py --index <registry-checkout>
5+
(the docs deploy workflows regenerate it against the live registry at build time) -->
6+
7+
> RAVEN semantic aerial navigation (ICRA 2026) — the RayFronts open-set semantic ray-frontier map and behavior manager (voxel, ray, LVLM and frontier search) in a GPU sidecar container publishing global_plan toward a natural-language target, plus the raven_bridge plan/prompt relay on the robot
8+
9+
| | |
10+
|---|---|
11+
| Repository | [castacks/asm_raven](https://github.com/castacks/asm_raven) |
12+
| Type | `ros_package` |
13+
| Maintainer | ajong@andrew.cmu.edu |
14+
| License | BSD-3-Clause-Clear |
15+
| Registered ref | [`v0.1.1`](https://github.com/castacks/asm_raven/tree/v0.1.1) |
16+
| Declared compat | `>=0.21.0-dev.8 <0.22.0` |
17+
| Registry entry | [modules/raven.yaml](https://github.com/castacks/airstack-modules-index/blob/main/modules/raven.yaml) |
18+
19+
## Install
20+
21+
From an AirStack checkout ([AirStack Modules guide](../development/modules.md)):
22+
23+
```bash
24+
airstack module add https://github.com/castacks/asm_raven --version v0.1.1
25+
airstack up
26+
```
27+
28+
`module add` pins the module in `modules.repos` and syncs it into the
29+
gitignored `modules/` overlay; `airstack up` automatically includes the
30+
generated compose override that mounts it into the containers.
31+
32+
## Compatibility: declared vs verified
33+
34+
The range `>=0.21.0-dev.8 <0.22.0` is **DECLARED** by the module author
35+
(copied from the module's `module.yaml`). The **VERIFIED** record — rows
36+
stamped exclusively by CI runs of the reusable
37+
[module-system-tests workflow](../development/module_ci.md) — lives in the
38+
registry's [compat/ matrix](https://github.com/castacks/airstack-modules-index/tree/main/compat)
39+
([compat/raven.yaml](https://github.com/castacks/airstack-modules-index/blob/main/compat/raven.yaml) once stamped).
40+
A compatibility claim that isn't CI-verified rots: trust the
41+
matrix, read the declaration as intent.
42+
43+
## Documentation
44+
45+
- [Module README on GitHub @ `v0.1.1`](https://github.com/castacks/asm_raven/blob/v0.1.1/README.md)
46+
- *The module repo was not fetched when this page was generated — the*
47+
*links above go to GitHub at the registered ref (failure isolation:*
48+
*an unreachable module repo never fails the docs deploy).*
49+
50+
## Registered stacks using this module
51+
52+
- [full_raven](../../stacks/full_raven/README.md)
53+
54+
## Registry notes
55+
56+
> Wrapper (raven_bridge, sidecar Dockerfile, compose fragment, test_stack) is BSD-3-Clause-Clear; the vendored RayFronts fork (seungchan-kim/RayFronts, branch raven) keeps its own license — see the module's VENDORED.md. The sidecar is declared through the manifest's compose fragment (first module to bring its own container) and is built on first `airstack up` (~20 GB image). Consumed by trunk reference stack full_raven.

0 commit comments

Comments
 (0)