From 2612bc470d07e7ee7c982c6265ec857c10a970c0 Mon Sep 17 00:00:00 2001 From: jochen Date: Thu, 12 Nov 2026 05:47:15 +0100 Subject: [PATCH] Class defaults: an act, a warrant and an accepted kind take the operator, sessions and invokers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit seatdef.DefaultCallers follows §610: a read keeps invokers, persons and sessions; act, warrant and accept take operator, sessions and invokers. The class table's rows say so. Builds: design 47 G §610; lead answer A-179 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- go/seatdef/callers.go | 12 +++++------- go/seatdef/seatdef_test.go | 9 +++++---- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/go/seatdef/callers.go b/go/seatdef/callers.go index ba60222d..0ec3b333 100644 --- a/go/seatdef/callers.go +++ b/go/seatdef/callers.go @@ -101,15 +101,13 @@ func CallerEntryProblem(e string) string { "holder:@same-node", e) } -// DefaultCallers are the callers a verb that names none takes by its class (design 47 G §391): a read takes invokers, -// persons and sessions; an act the operator and sessions; a warrant the operator. A verb that names no class is a -// read. +// DefaultCallers are the callers a verb that names none takes by its class (design 47 G §610, amending §391): a read takes +// invokers, persons and sessions; an act, a warrant and an accepted kind (`accept`) the operator, sessions and invokers. A +// verb that names no class is a read. func DefaultCallers(class string) []string { switch class { - case ClassAct: - return []string{CallerOperator, CallerSessions} - case ClassWarrant: - return []string{CallerOperator} + case ClassAct, ClassWarrant, "accept": + return []string{CallerOperator, CallerSessions, CallerInvokers} } return []string{CallerInvokers, CallerPersons, CallerSessions} } diff --git a/go/seatdef/seatdef_test.go b/go/seatdef/seatdef_test.go index 740f958b..63b89451 100644 --- a/go/seatdef/seatdef_test.go +++ b/go/seatdef/seatdef_test.go @@ -290,7 +290,7 @@ func TestAKeptEventsStreamIsNamedFromTheSeatAndTheEvent(t *testing.T) { } } -// Design 47 G §391: a verb that names no callers takes its class's default, a verb that names them keeps them. +// Design 47 G §391, §610: a verb that names no callers takes its class's default, a verb that names them keeps them. func subAVerbWithoutCallersTakesItsClassDefault(t *testing.T) { for _, c := range []struct { verb Verb @@ -298,10 +298,11 @@ func subAVerbWithoutCallersTakesItsClassDefault(t *testing.T) { }{ {Verb{}, "invokers persons sessions"}, {Verb{Class: ClassRead}, "invokers persons sessions"}, - {Verb{Class: ClassAct}, "operator sessions"}, - {Verb{Class: ClassWarrant}, "operator"}, + {Verb{Class: ClassAct}, "operator sessions invokers"}, + {Verb{Class: ClassWarrant}, "operator sessions invokers"}, {Verb{Class: ClassAct, Callers: &Callers{List: []string{"seat:mesh-broker"}}}, "seat:mesh-broker"}, - {Verb{Class: ClassWarrant, Callers: &Callers{Text: "a person"}}, "operator"}, + {Verb{Class: ClassWarrant, Callers: &Callers{Text: "a person"}}, "operator sessions invokers"}, + {Verb{Class: "accept"}, "operator sessions invokers"}, } { if got := strings.Join(c.verb.EffectiveCallers(), " "); got != c.want { t.Errorf("%+v is open to %q, want %q", c.verb, got, c.want)