Personally I like the SyntaxWarning and to me it makes sense to have a SyntaxWarning and then never turn it into a hard error. I would just prefer that the process of updating code for things like this goes via linters because linter errors are only seen by the developers of the given codebase and come from tools that are designed to fit with a project’s development workflow.
There was a parallel thread about linters around the time of the discussions for this PEP which also has discussions about the limitations of the linter approach because of the myriad different lint rules and configurations. I think though that if there is a PEP such as this one that says “this will give a SyntaxWarning in Python 3.15” then that should be a good enough reason for linters to enable the rule by default (or even to emit warnings if the rule is disabled). The linter errors/warnings could clearly point to the PEP that says it will become a user-visible SyntaxWarning in Python itself. If that happened say a year before Python 3.15 is released then that is enough time for any maintained project to get an update out in its normal release cycle so that no one with latest Python and latest project foo ever sees the SyntaxWarning.
I think that SyntaxWarning is plenty enough to prevent any problems with this kind of thing without needing a SyntaxError. The reason I dislike a SyntaxError (or other hard error) is that it makes it difficult to do things like checkout old versions or bisect through older and newer versions of a Python codebase. You can use current Python to checkout SymPy from up to about 10 years ago and there are SyntaxWarnings but it still runs and can be tested. If you go any further back you just get a SyntaxError and it isn’t possible to test anything (I think you would need Python 2.7 which is becoming more difficult to obtain over time).
A couple of years ago I bisected a bug in Maxima which is computer algebra system written in Lisp and dating back to the late 60s. The git history there only goes back to somewhere around 2000 when the autotools build scripts were also added. I could bisect all the way over 25 years though using a stock Lisp compiler from the Ubuntu repos and ./configure && make && ./maxima mytest.mac. Plenty of warnings but the code always compiled and ran and I managed to bisect the offending commit.
I would like someone in 25 years time to be able to use whatever Python version they have to run through 35 years of the SymPy codebase. Warnings are fine but it only takes one SyntaxError to break that.