okay, updated `StreamSignature` draft:
```
from amaranth import *
from amaranth.lib import enum, data, wiring


class StreamSignature(wiring.Signature):
    def __init__(self, payload_shape):
        try:
            Shape.cast(payload_shape)
        except:
            raise TypeError(f"Stream payload shape must be a shape-castable value, "
                            f"not {payload_shape!r}")
        super().__init__({
            "payload": Out(payload_shape),
            "valid":   Out(1),
            "ready":   In(1)
        })

    @property
    def p(self):
        return self.payload

```