Skip to content

bmadconfig: read the four-layer central TOML as primary, legacy bmm/config.yaml as fallback #154

Description

@pbean

Context

bmadconfig.load_paths resolves implementation_artifacts / planning_artifacts from the legacy _bmad/bmm/config.yaml only. The renderer-era bmad-dev-auto (BMAD-METHOD #2587/#2588) resolves the same keys from the four-layer central TOML (_bmad/config.toml + config.user.toml + custom/config.toml + custom/config.user.toml), with [modules.bmm] beating [core] on collision.

The BMAD installer regenerates the per-module yaml from the TOML on each install/update, so the two surfaces normally agree — but a hand-added custom/config*.toml override desyncs them until the next install: the skill then writes specs and the deferred-work ledger where the orchestrator is not looking.

Current mitigation

The renderer-compat PR adds bmadconfig.toml_artifact_parity, a validate-time warning (never a FAIL) that deep-merges the four layers with the renderer's exact precedence and compares the resolved implementation_artifacts against the yaml-resolved path.

Proposed fix

Make load_paths read the four-layer TOML as the primary source (same merge + flatten semantics as render.py: layers deep-merge lowest→highest, then [core][modules.bmm] flatten with module precedence), falling back to _bmad/bmm/config.yaml for pre-#2285 installs. The parity warning then becomes unnecessary and toml_artifact_parity can be retired.

Care points:

  • repo_root and output_folder are also read from the yaml today — decide their TOML home before switching.
  • {project-root} substitution must match render.py (forward-slash root).
  • Keep BmadConfigError messages actionable for both surfaces.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions