In the following example, the ::x key is required in the map but it will conform without error for an empty collection:
Cause: At the moment, (s/keys* :req-un [::x]) is expanded to a form equivalent to the following one:
The issue seems to be in the implementation of s/&, specifically the ::amp branch of accept-nil? which expects that either the conformed regex returns empty or that the preds are not invalid. This seems like a false assumption that an empty conformed regex ret does not require the s/& preds to be valid. In this case we are using a conformer to transform the input and do another check, so it's certainly not valid here.
Proposed: Modify s/& to always validate the preds when accepting nil.
Screened by: Stu Halloway