Note that I did not propose any concrete timeline for removing raw casts/ with_exposed_provenance/expose_provenance (here and before I call 3 of them as "raw casts" for brevity since it's effectively the same thing). In the list above, I proposed to require explicit opt-in (not even removal!) only after most of the ecosystem has migrated to strict provenance and it was decided that remaining usecases are minor enough or can be covered by available API (i.e. remaining crates do not want to migrate only because of convenience).
But I strongly believe that goal of the Rust language should be eventual removal of raw casts in a new edition. We may not achieve this goal for various reasons, but at the very least, the end state should be one of the heavily discouraged use. Also, as long as Rust supports old editions, raw casts technically still will be part of the language, so I do not propose "full" removal.
In the blog post you discuss the problems which raw casts cause for correctness of the language. You argue against the position "pointers are just integers" in language discussions, even if for hardware they are. You propose a way out of this mess. The documentation of with_exposed_provenance/expose_provenance discusses various complexities and vagueness which the associated "guessing" brings to the language specification table. Are those not reasons to strive to eliminate raw casts first from being used in the ecosystem, and then eventually from the language?
This situation looks to me suspiciously similar to the aliasing issues dealt by C/C++. Because they did not have explicit annotations for shared and exclusive pointers/references (yes, there is const now, but it's hardly used, as can be seen by the plethora of bugs uncovered by Rust), compilers have to "guess" a lot during optimizations. It adds a lot of complexity to (optimizing) compilers and increases chances of miscomiplation bugs. And even after that there is a certain amount of performance still left on the table, since compilers have to be conservative. Obviously, adding Rust-like annotations and changing the defaults is not a practical option for those languages.
But, luckily, Rust is in a different situation with provenance! Only a very small portion of the ecosystem relies on raw casts and most of it can be migrated to strict provenance relatively easy. In other words, eventual removal of raw casts could be practical for Rust, since it affects only a small portion of an already small portion of the ecosystem.
Strict provenance and it's status in the ecosystem is closely related to the CHERI support. It's explicitly written in the OP. As I wrote in the list above, yes, we can start limited experiments by making raw casts to panic on CHERI targets, but it's not a viable long-term solution. Even if in the future we will have compilation error for raw casts on CHERI targets, without discouraging raw casts for non-CHERI developers, it still would mean that a big chunk of the ecosystem will not be accessible for CHERI targets.
Finally, if I am being honest, I care mostly about strict provenance itself, CHERI support is, well... just the cherry on top. My point is that we should discuss CHERI support on the strict provenance foundations, which means that how strict provenance is handled in the language will be automatically translated to CHERI support.