It may partially be the language barrier, but your comments are incoherent. You could replace every const with let and it wouldn't affect program behavior unless the variable is used in a when or {.compiletime.} context. And you could replace every let with const as long as the initializer can be computed at compile time. That's the difference ... neither let nor const values can ever change.
> I mean that let can, as an example, read input. This is a true fact, but it doesn't help to explain what you mean. And const can also read input, at compile time, via staticRead. > The value itself stays the same, but its usage changes. This does not help explain anything ... it's not at all clear what you mean by "usage". > Const will always be used in the same, predictable way, let can be used in > unpredictable ways. This too does not help to explain anything ... the predictability of how something is used is determined by control flow, not by whether the value was determined at compile time or at runtime.