From 795b502dfd6c2650f1b16af7f618d8ecc7ea41d5 Mon Sep 17 00:00:00 2001 From: Andrew Jong Date: Fri, 4 Sep 2026 20:25:17 -0400 Subject: [PATCH 1/2] hotfix(docs): exclude AirSim scene binaries from docs builds (0.20.8) The same-dir plugin publishes the whole repo tree as site content, and the downloaded Microsoft AirSim UE4 scenes (simulation/ms-airsim/assets/scenes/) and environments (simulation/ms-airsim/environments/) were not in exclude_docs, so every mkdocs build/serve on a machine with scenes fetched copied ~15 GB of Unreal .debug binaries and zips into the site directory. No pages or links reference either directory. Bumps VERSION 0.20.7 -> 0.20.8 and records the change in the release notes. Co-Authored-By: Claude Fable 5.1 --- .env | 2 +- docs/release_notes/index.md | 11 +++++++++++ mkdocs.yml | 5 +++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.env b/.env index 4550c22ff..070e7f471 100644 --- a/.env +++ b/.env @@ -12,7 +12,7 @@ PROJECT_NAME="airstack" # If you've run ./airstack.sh setup, then this will auto-generate from the git commit hash every time a change is made # to a Dockerfile or docker-compose.yaml file. Otherwise this can also be set explicitly to make a release version. # auto-generated from git commit hash -VERSION="0.20.7" +VERSION="0.20.8" # Image-tag discriminator ONLY (appears in the image tag suffix, e.g. ..._robot-x86-64_dev). # No Dockerfile consumes it: "prebuilt" does NOT bake the built ros_ws into the image today — # a real prebuilt (workspace-baked) stage is future work. Keep "dev" (mounted code, built live). diff --git a/docs/release_notes/index.md b/docs/release_notes/index.md index 5cc036570..5fb6e7398 100644 --- a/docs/release_notes/index.md +++ b/docs/release_notes/index.md @@ -21,6 +21,17 @@ its own notes. --> - Nothing yet. +## 0.20.8 — 2026-09-04 + +- **Docs builds no longer copy AirSim scene binaries.** The `same-dir` + plugin publishes the whole repo tree as site content, and the downloaded + Microsoft AirSim UE4 scenes (`simulation/ms-airsim/assets/scenes/`) and + environments (`simulation/ms-airsim/environments/`) were not excluded — + every `mkdocs build` or `docs serve` on a machine with scenes fetched + copied ~15 GB of Unreal `.debug` binaries and zips into the site + directory. Both directories are now listed in `exclude_docs`. No pages or + links referenced them. + ## 0.20.7 — 2026-08-30 - **Fixed 404s on every README-sourced docs page.** The `exclude_docs` diff --git a/mkdocs.yml b/mkdocs.yml index 06db3374d..99460b788 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -20,6 +20,11 @@ exclude_docs: | **/ros_ws/install **/kit-app-template/** **/isaac_sim_data/** + # Downloaded AirSim UE4 scene binaries (fetched by assets/scenes/fetch_scene.sh) + # and environments: multi-GB, gitignored, never doc content. Without this the + # same-dir plugin copies them into every site build (~15 GB per build). + simulation/ms-airsim/assets/scenes/** + simulation/ms-airsim/environments/** # Fetched module checkouts (RFC #379 §9): the docs deploy workflows clone the # registry index + each registered module repo into the gitignored modules/ # dir. Their content is linked from docs/modules/ (generated by From 3abcad1a2ee55efef435bbf56ebbd2de5650c37b Mon Sep 17 00:00:00 2001 From: Andrew Jong Date: Fri, 4 Sep 2026 20:30:35 -0400 Subject: [PATCH 2/2] test(docs): tolerate mkdocs !ENV tag in docs-catalog contract loader PR #419 added 'edit_uri: !ENV [DOCS_EDIT_URI, "edit/main/"]' to mkdocs.yml. The contract test parses mkdocs.yml with a SafeLoader that only knew the !!python/name tag, so all four docs-catalog contract tests have failed on main and develop since 2026-08-29. Collapse !ENV to its default value. Co-Authored-By: Claude Fable 5.1 --- tests/meta/test_docs_catalog_contract.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tests/meta/test_docs_catalog_contract.py b/tests/meta/test_docs_catalog_contract.py index 91dc24143..5db415e28 100644 --- a/tests/meta/test_docs_catalog_contract.py +++ b/tests/meta/test_docs_catalog_contract.py @@ -151,7 +151,12 @@ def test_module_pages_carry_the_contracted_sections(): def _load_mkdocs() -> dict: - """Parse mkdocs.yml, tolerating the !!python/name superfences tag.""" + """Parse mkdocs.yml, tolerating the tags MkDocs resolves at load time. + + ``!!python/name:`` (pymdownx superfences) collapses to the dotted name; + mkdocs' ``!ENV`` (``!ENV VAR`` or ``!ENV [VAR, default]``) collapses to + the default (or None), so a bare SafeLoader does not choke on it. + """ class Loader(yaml.SafeLoader): pass @@ -159,6 +164,14 @@ class Loader(yaml.SafeLoader): Loader.add_multi_constructor( "tag:yaml.org,2002:python/name:", lambda loader, suffix, node: suffix ) + + def _env_tag(loader, node): + if isinstance(node, yaml.SequenceNode): + values = loader.construct_sequence(node) + return values[-1] if len(values) > 1 else None + return None + + Loader.add_constructor("!ENV", _env_tag) return yaml.load(MKDOCS_YML.read_text(), Loader=Loader)