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:
| sample | health event | /deploy guard | presentation |
|---|---|---|---|
sampleA1 | response | present | baseline |
sampleA2 | response | present | reordered, repeated guard |
sampleB | request | present | baseline |
sampleC1 | response | absent | baseline |
sampleC2 | response | absent | reordered, 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:
| pair | size | :cr | marked alternatives |
|---|---|---|---|
| A, B | 14 | 0.0769 | response / request |
| A, C | 15 | 0.2308 | pathDeploy / (Lit true) |
| B, C | 16 | 0.3077 | both 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 item | cluster pairs | what settles it |
|---|---|---|
| request versus response event | A/B and B/C | the Dogwood event schema |
require /deploy versus omit the path guard | A/C and B/C | the 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.