CICD verifies but pre commit applies.
Therefore, regardless of whether you use pre commit, your cicd should be verifying that the software, including source code is satisfying the specification.
As a collorary, pre commit doesn't need to validate. Eg tell you where exactly the errors are.
These are subtle but important distinctions as it nullifies your double accounting concern. The only doubling that exist is that the pre commit and cicd are both made aware of the specification. Maybe that is your concern.