diff --git a/go/delivery/view_answers.go b/go/delivery/view_answers.go index 352a417..9d3233e 100644 --- a/go/delivery/view_answers.go +++ b/go/delivery/view_answers.go @@ -39,7 +39,8 @@ const ( // a composition judged to recreate a container or move data, or one that cannot be judged (ADR 0539 clause 14). AskKindRecord = "record" // AskKindPlacement is the kind of the seat mesh-placement's authorising ask about a proposal (novox/hq ADR 0567 §5): - // `placement.`. Its yes is an Approve that only a channel proving who answered takes, never the view. + // `placement.`. The kind needs no proof, as the bus's put does not: its yes is an Approve, which only a + // channel proving who answered takes and the view never does (ViewAnswerFits). AskKindPlacement = "placement" viewWord = "view" @@ -63,9 +64,9 @@ type AskKey struct { // merge's Approve does (ADR 0421 §1, issue 953), the assigner's hold and restore do not. An unknown kind is refused. func AskNeedsProof(kind string) (bool, error) { switch kind { - case AskKindMerge, AskKindPlacement: + case AskKindMerge: return true, nil - case AskKindHold, AskKindRestore, AskKindBackup, AskKindRecord: + case AskKindHold, AskKindRestore, AskKindBackup, AskKindRecord, AskKindPlacement: return false, nil } return false, fmt.Errorf("delivery: %q is not a kind of ask, %s, %s, %s, %s, %s or %s", kind, AskKindMerge, AskKindHold, diff --git a/go/delivery/view_answers_test.go b/go/delivery/view_answers_test.go index 56f2701..df69b2f 100644 --- a/go/delivery/view_answers_test.go +++ b/go/delivery/view_answers_test.go @@ -37,8 +37,8 @@ func TestParseAnyAskKey(t *testing.T) { if err != nil || placement != "placement.p-one" { t.Fatalf("PlacementAskKey = %q, %v", placement, err) } - if proof, err := AskNeedsProof(AskKindPlacement); !proof || err != nil { - t.Error("a placement ask may be answered without proof of who answered") + if proof, err := AskNeedsProof(AskKindPlacement); proof || err != nil { + t.Error("the assigner cannot keep a placement ask: its kind needs proof (its yes's level does)") } for key, want := range map[string]AskKey{ hold: {Kind: AskKindHold, Module: "mesh-mail", FP: fp},