The legacy _isSkillsRuntime gate was a hardcoded isCodex || isCopilot || ... roster; zcode was absent so the layout-driven skills-install path was skipped (commands + agents installed, but no skills). Adding || isZcode would violate AC#3 (no runtime === 'zcode' branches), so the gate is now derived from the descriptor: a runtime takes the skills path iff its scoped artifactLayout declares a skills kind. Behavior-preserving for all 15 existing runtimes (verified by their install contracts); includes zcode (and any future skills runtime) with zero per-runtime branches. opencode/kilo keep their specialized combined path. Regenerate the golden-install-parity fixtures: the non-zcode runtimes shift only the shared model-catalog.json hash (zcode was added to the catalog); zcode now includes its skills tree.
30 KiB
30 KiB