Three relationships govern what a selection resolves to. They are different things and behave differently.
validateSelection every id exists, required categories answered,
single-select categories have one answer
resolveSelection pull in requires transitively, reject conflicts,
detect cycles, produce a deterministic orderA question that declares fixed choices in config/categories.json shapes the wizard rather than selecting a technology — aiTools and target are the two. Their answers never reach the module resolver. Other questions opt into visibility with showWhen, and a question ruled out this way also removes any module it would have pulled in: a web-only project is never offered a mobile-only test runner.