Class defaults: an act, a warrant and an accepted kind take the operator, sessions and invokers
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
This commit is contained in:
@@ -101,15 +101,13 @@ func CallerEntryProblem(e string) string {
|
||||
"holder:<seat>@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}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user