Evaluating bools implicitly/explicitly

I have a design with the following:

def x(...):
    write = Signal(False)
    @always_seq(clock.posedge, reset=reset)
    def logic():
        if write == True:

and I get this error on conversion:

AttributeError: 'Constant' object has no attribute 'signed'

If I change the last line of the above code to:

if write:

conversion is successful. I’m puzzled. I hope I haven’t oversimplified this. I’ve been searching for hours for the reason but have not found it yet.

I’ve not seen signals declared like this, more usually like these here: