This has been going on a while, but I finally investigated this with Isaac last night.
Arturo has an invalidator file pattern set in the track-level config. When I run configlet create --practice-exercise <slug, configlet creates an empty invalidator file on disk as expected. However, it doesn’t get added to the .meta/config.json file. However, if I run configlet sync --filepaths -uye <slug>, configlet does add the missing invalidator to .meta/config.json.
After some digging, I think there’s a bug within this if block at configlet/src/fmt/exercises.nim at 1efde407b81c521459fe428a57ad1ffa594c1c82 · exercism/configlet · GitHub. We only track editor and invalidator keys if prettyMode == pmFmt and we have editor or invalidator files to populate. Both configlet create and configlet sync use pmSync instead of pmFmt. However, during the configlet create run, originalKeyOrder is empty so we’re still inside the outer if block where editor and invalidator keys are only then tracked if we’re also using pmFmt. For configlet sync, we could go into the else statement where the editor and invalidator keys are manually added as needed.
I believe the simplest solution here is to drop the prettyMode == pmFmt part of the two inner if blocks on L9 and L11. Then we’ll use the editor and invalidator keys if there are any associated file patterns.