Umbrella issue. No new requirements of its own — it exists so the three children read as one
adoption rather than three unrelated defects.
The shift
BMAD-METHOD v6.10.0 resolves module config from a consolidated four-layer TOML stack, read by
_bmad/scripts/resolve_config.py (tomllib) in this precedence order:
_bmad/config.toml → _bmad/config.user.toml → _bmad/custom/config.toml → _bmad/custom/config.user.toml
with [modules.bmm] beating [core] on key collision. Help is consolidated at
_bmad/_config/bmad-help.csv plus per-module _bmad/<module>/module-help.csv.
The legacy per-module _bmad/bmm/config.yaml and a root _bmad/module-help.csv are no longer
read by the runtime.
Where bmad-loop still assumes the legacy layout
bmad-loop is on the wrong side of this on both the read and the write path:
The installer regenerates the per-module YAML from the TOML on each install/update, so the two
surfaces normally agree — which is exactly what makes the divergence quiet. A hand-added
custom/config*.toml override desyncs them until the next install, and from that moment the
skill writes specs and the deferred-work ledger where the orchestrator is not looking.
Children
Each is independently ship-able; #259 in particular is a small standalone docs fix and should not
wait on the other two.
Umbrella issue. No new requirements of its own — it exists so the three children read as one
adoption rather than three unrelated defects.
The shift
BMAD-METHOD v6.10.0 resolves module config from a consolidated four-layer TOML stack, read by
_bmad/scripts/resolve_config.py(tomllib) in this precedence order:with
[modules.bmm]beating[core]on key collision. Help is consolidated at_bmad/_config/bmad-help.csvplus per-module_bmad/<module>/module-help.csv.The legacy per-module
_bmad/bmm/config.yamland a root_bmad/module-help.csvare no longerread by the runtime.
Where bmad-loop still assumes the legacy layout
bmad-loop is on the wrong side of this on both the read and the write path:
bmadconfig.load_paths(src/bmad_loop/bmadconfig.py:70-72) resolvesimplementation_artifacts/planning_artifactsfrom_bmad/bmm/config.yamlonly. → bmadconfig: read the four-layer central TOML as primary, legacy bmm/config.yaml as fallback #154bmad-loop-setupskill'smerge-config.py/merge-help-csv.pywrite_bmad/config.yamland a root_bmad/module-help.csv: files the runtime never reads. → bmad-loop-setup writes legacy config.yaml/module-help.csv; ignored on BMAD v6.10.0 TOML config layout #258python3, which fails onthe inline-dependency scripts. → bmad-loop-setup docs invoke PEP 723 scripts with python3; merge-config.py fails without uv run #259
The installer regenerates the per-module YAML from the TOML on each install/update, so the two
surfaces normally agree — which is exactly what makes the divergence quiet. A hand-added
custom/config*.tomloverride desyncs them until the next install, and from that moment theskill writes specs and the deferred-work ledger where the orchestrator is not looking.
Children
bmadconfig: read the four-layer TOML as primary, legacy YAML as fallbackbmad-loop-setupwrites legacyconfig.yaml/module-help.csvbmad-loop-setupdocs invoke PEP 723 scripts withpython3Each is independently ship-able; #259 in particular is a small standalone docs fix and should not
wait on the other two.