diff --git a/go/seatdef/seatdef.go b/go/seatdef/seatdef.go index b6ce53d..410fe40 100644 --- a/go/seatdef/seatdef.go +++ b/go/seatdef/seatdef.go @@ -254,8 +254,11 @@ const ( KeepStream = "stream" ) -// KeptStream is the stream an event with Keep is kept in: `.`, as a family is `.events`. -func KeptStream(seat string, m Message) string { return seat + "." + m.Name } +// KeptStream is the stream an event with Keep is kept in: `SEAT__` (design 47 G §260, §396). +func KeptStream(seat string, m Message) string { return KeptStreamPrefix + seat + "_" + m.Name } + +// KeptStreamPrefix begins the name of every kept event's stream. +const KeptStreamPrefix = "SEAT_" // legacyMode is the string form of Keep, empty for none or for the object form. func (m Message) legacyMode() string { diff --git a/go/seatdef/seatdef_test.go b/go/seatdef/seatdef_test.go index d2073f8..c284153 100644 --- a/go/seatdef/seatdef_test.go +++ b/go/seatdef/seatdef_test.go @@ -266,3 +266,10 @@ func TestAnActingRuleReadsItsStepsDefaults(t *testing.T) { } } } + +// Design 47 G §260, §396: a kept event's stream is SEAT__. +func TestAKeptEventsStreamIsNamedFromTheSeatAndTheEvent(t *testing.T) { + if got := KeptStream("mesh-delivery", Message{Name: "owed"}); got != "SEAT_mesh-delivery_owed" { + t.Errorf("the stream is %s", got) + } +}