Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

A larger Dogwood policy

Five samples produce three clusters and three representative-pair queries. This chapter groups recurring alternatives across those queries so the review list grows with distinct decisions rather than with cluster pairs.

The expanded model

The fixture abstracts Chapter 20’s deploy and health-check conditions into the atoms methodPost, pathDeploy, and successfulHealth. It adds Lte, Ite, directCopy, and multipartCopy for a shared ground conditional. All five samples contain (Ite (Lte 100 100) (directCopy) (multipartCopy)). It supplies more shared structure but creates no disagreement.

The samples vary along two dimensions:

samplehealth event/deploy guardpresentation
sampleA1responsepresentbaseline
sampleA2responsepresentreordered, repeated guard
sampleBrequestpresentbaseline
sampleC1responseabsentbaseline
sampleC2responseabsentreordered, repeated method

Three clusters

The complete pair grid records the partition:

;; Partition: {sampleA1, sampleA2}, {sampleB}, {sampleC1, sampleC2}.
(check-eq sampleA1 sampleA2)
(check-neq sampleA1 sampleB)
(check-neq sampleA1 sampleC1)
(check-neq sampleA1 sampleC2)
(check-neq sampleA2 sampleB)
(check-neq sampleA2 sampleC1)
(check-neq sampleA2 sampleC2)
(check-neq sampleB sampleC1)
(check-neq sampleB sampleC2)
(check-eq sampleC1 sampleC2)

Its result is

{sampleA1, sampleA2}  {sampleB}  {sampleC1, sampleC2}

The two presentation-only variants join their corresponding classes during construction. Event kind and the missing guard remain separate.

Three pairwise explanations

One representative from each cluster gives these queries:

(antiunify sampleA1 sampleB :algorithm exact)
(checkau sampleA1 sampleB :max_size 14 :algorithm exact)

(antiunify sampleA1 sampleC1 :algorithm exact)
(checkau sampleA1 sampleC1 :max_size 15 :algorithm exact)

(antiunify sampleB sampleC1 :algorithm exact)
(checkau sampleB sampleC1 :max_size 16 :algorithm exact)

The measured results are:

pairsize:crmarked alternatives
A, B140.0769response / request
A, C150.2308pathDeploy / (Lit true)
B, C160.3077both pairs above

The identity in the second row means that cluster C omitted one conjunct. It does not mean that pathDeploy and true are equal.

Deduplicating recurring decisions

Reading each query independently would present four marker occurrences across the table. Grouping the same position and alternatives produces two review items:

review itemcluster pairswhat settles it
request versus response eventA/B and B/Cthe Dogwood event schema
require /deploy versus omit the path guardA/C and B/Cthe requirement and a policy-owner review

Semper does not compute this aggregate table. The fixture executes all three queries, and the reader groups repeated alternative pairs by their position in the shared skeleton. Chapter 19’s speculative scope can test either resolution; this chapter only reduces the repeated outputs to the distinct decisions.