CDK applications should be able to communicate to the CLI which constructs should not be subject to refactoring. Define a contract in Cloud Assembly (probably using metadata in the manifest), and implement the honoring of that contract in the CLI.
This is useful for constructs such as API Gateway Deployment, that intentionally change the logical ID to force a resource replacement.