The rest of the cards would effectively act like they were unpublished to people who had not yet opted-in to see the stream.
Perhaps the lead card of the stream would always be shown so the author can explain what the stream is about.
If a stream (or card) is flagged as containing spoilers, a reader must opt-in to see it.
That would be fairly easy to implement. From a data model point of view, it's just a relation of stream (or card) and user and a boolean. Or you could even drop the boolean and have the existence of the tuple in the relation be enough.
One possible solution would be to have a flag on a stream that the author uses to indicate it contains spoilers.
It could be at a card level too, but I wonder if that would be too cumbersome.
While someone can always avoid a stream, I'm particularly worried about spoilers appearing on the home page or in other places like search results once we implement more features like that.
One thing I love using ThoughtStreams for is thoughts on films and books but that immediately leads to concerns about spoilers.