@agenticprimitives/ontology 1.0.0-alpha.4 → 1.0.0-alpha.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/README.md +59 -21
  2. package/cbox/agent-facet-shapes.shacl.ttl +130 -0
  3. package/cbox/capability-catalog-shapes.shacl.ttl +284 -0
  4. package/cbox/card-projection-shapes.shacl.ttl +216 -0
  5. package/cbox/consultation-shapes.shacl.ttl +85 -0
  6. package/cbox/content-vocabulary.ttl +52 -0
  7. package/cbox/controlled-vocabularies.ttl +224 -4
  8. package/cbox/discovery-graph-shapes.shacl.ttl +284 -0
  9. package/cbox/familyoffice-shapes.shacl.ttl +92 -0
  10. package/cbox/familyoffice-vocabulary.ttl +48 -0
  11. package/cbox/geo-vocabulary.ttl +36 -0
  12. package/cbox/guidance-vocabulary.ttl +22 -0
  13. package/cbox/interaction-shapes.shacl.ttl +218 -0
  14. package/cbox/interaction-vocabulary.ttl +159 -0
  15. package/cbox/judgment-shapes.shacl.ttl +83 -0
  16. package/cbox/naming-registry-shapes.shacl.ttl +272 -0
  17. package/cbox/org-team-shapes.shacl.ttl +184 -0
  18. package/cbox/privacy-credential-shapes.shacl.ttl +187 -0
  19. package/cbox/profile-facet-vocabulary.ttl +50 -0
  20. package/cbox/registry-vocabulary.ttl +86 -0
  21. package/cbox/run-measures-shapes.shacl.ttl +59 -0
  22. package/cbox/run-provenance-shapes.shacl.ttl +264 -0
  23. package/cbox/scope-vocabulary.ttl +112 -0
  24. package/cbox/skill-grounding-vocabulary.ttl +18 -0
  25. package/cbox/skill-vocabulary.ttl +50 -0
  26. package/context.jsonld +37 -1
  27. package/dist/arg-types.d.ts +60 -0
  28. package/dist/arg-types.d.ts.map +1 -0
  29. package/dist/arg-types.js +143 -0
  30. package/dist/arg-types.js.map +1 -0
  31. package/dist/artifacts.d.ts +9 -2
  32. package/dist/artifacts.d.ts.map +1 -1
  33. package/dist/artifacts.js +153 -2
  34. package/dist/artifacts.js.map +1 -1
  35. package/dist/contact-fields.d.ts +28 -0
  36. package/dist/contact-fields.d.ts.map +1 -0
  37. package/dist/contact-fields.js +38 -0
  38. package/dist/contact-fields.js.map +1 -0
  39. package/dist/decisions.d.ts +69 -0
  40. package/dist/decisions.d.ts.map +1 -0
  41. package/dist/decisions.js +98 -0
  42. package/dist/decisions.js.map +1 -0
  43. package/dist/evaluation-context.d.ts +134 -0
  44. package/dist/evaluation-context.d.ts.map +1 -0
  45. package/dist/evaluation-context.js +136 -0
  46. package/dist/evaluation-context.js.map +1 -0
  47. package/dist/governance.d.ts +84 -0
  48. package/dist/governance.d.ts.map +1 -0
  49. package/dist/governance.js +88 -0
  50. package/dist/governance.js.map +1 -0
  51. package/dist/grounded-vocabulary.d.ts +29 -0
  52. package/dist/grounded-vocabulary.d.ts.map +1 -0
  53. package/dist/grounded-vocabulary.js +110 -0
  54. package/dist/grounded-vocabulary.js.map +1 -0
  55. package/dist/household.d.ts +19 -0
  56. package/dist/household.d.ts.map +1 -0
  57. package/dist/household.js +41 -0
  58. package/dist/household.js.map +1 -0
  59. package/dist/index.d.ts +1091 -3
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +1323 -5
  62. package/dist/index.js.map +1 -1
  63. package/dist/outcomes.d.ts +47 -0
  64. package/dist/outcomes.d.ts.map +1 -0
  65. package/dist/outcomes.js +40 -0
  66. package/dist/outcomes.js.map +1 -0
  67. package/dist/participant-vocabulary.d.ts +57 -0
  68. package/dist/participant-vocabulary.d.ts.map +1 -0
  69. package/dist/participant-vocabulary.js +66 -0
  70. package/dist/participant-vocabulary.js.map +1 -0
  71. package/dist/party-roles.d.ts +115 -0
  72. package/dist/party-roles.d.ts.map +1 -0
  73. package/dist/party-roles.js +343 -0
  74. package/dist/party-roles.js.map +1 -0
  75. package/dist/payload-classes.d.ts +22 -0
  76. package/dist/payload-classes.d.ts.map +1 -0
  77. package/dist/payload-classes.js +30 -0
  78. package/dist/payload-classes.js.map +1 -0
  79. package/dist/plan-shapes.d.ts +18 -0
  80. package/dist/plan-shapes.d.ts.map +1 -0
  81. package/dist/plan-shapes.js +38 -0
  82. package/dist/plan-shapes.js.map +1 -0
  83. package/dist/principles.generated.d.ts +11 -0
  84. package/dist/principles.generated.d.ts.map +1 -0
  85. package/dist/principles.generated.js +293 -0
  86. package/dist/principles.generated.js.map +1 -0
  87. package/dist/published-works.d.ts +13 -0
  88. package/dist/published-works.d.ts.map +1 -0
  89. package/dist/published-works.js +18 -0
  90. package/dist/published-works.js.map +1 -0
  91. package/dist/relations.d.ts +44 -0
  92. package/dist/relations.d.ts.map +1 -0
  93. package/dist/relations.js +104 -0
  94. package/dist/relations.js.map +1 -0
  95. package/dist/run-measures-context.d.ts +74 -0
  96. package/dist/run-measures-context.d.ts.map +1 -0
  97. package/dist/run-measures-context.js +77 -0
  98. package/dist/run-measures-context.js.map +1 -0
  99. package/dist/run-provenance-context.d.ts +315 -0
  100. package/dist/run-provenance-context.d.ts.map +1 -0
  101. package/dist/run-provenance-context.js +323 -0
  102. package/dist/run-provenance-context.js.map +1 -0
  103. package/dist/transitions.d.ts +42 -0
  104. package/dist/transitions.d.ts.map +1 -0
  105. package/dist/transitions.js +100 -0
  106. package/dist/transitions.js.map +1 -0
  107. package/dist/vault-records.d.ts +74 -0
  108. package/dist/vault-records.d.ts.map +1 -0
  109. package/dist/vault-records.js +777 -0
  110. package/dist/vault-records.js.map +1 -0
  111. package/dist/versions.generated.d.ts +262 -0
  112. package/dist/versions.generated.d.ts.map +1 -0
  113. package/dist/versions.generated.js +318 -0
  114. package/dist/versions.generated.js.map +1 -0
  115. package/evaluation.jsonld +133 -0
  116. package/mappings/actor-context-standards.ttl +89 -0
  117. package/mappings/agent-discovery-standards.ttl +127 -0
  118. package/mappings/collaboration-crosswalk-actors.ttl +30 -0
  119. package/mappings/collaboration-crosswalk-authority.ttl +31 -0
  120. package/mappings/collaboration-crosswalk-guidance.ttl +29 -0
  121. package/mappings/collaboration-crosswalk-intent.ttl +29 -0
  122. package/mappings/collaboration-crosswalk-messaging.ttl +37 -0
  123. package/mappings/collaboration-crosswalk-organization.ttl +66 -0
  124. package/mappings/collaboration-crosswalk-protocols.ttl +49 -0
  125. package/mappings/collaboration-crosswalk-skills.ttl +50 -0
  126. package/mappings/collaboration-profile.ttl +82 -0
  127. package/mappings/commerce-engagement-crosswalk.ttl +83 -0
  128. package/mappings/spine-standards.ttl +83 -0
  129. package/package.json +31 -9
  130. package/run-measures.jsonld +34 -0
  131. package/run-provenance.jsonld +314 -0
  132. package/tbox/actor-context.ttl +145 -0
  133. package/tbox/agent-resolution.ttl +308 -0
  134. package/tbox/agreement.ttl +77 -0
  135. package/tbox/attestation.ttl +156 -0
  136. package/tbox/card-projection.ttl +350 -0
  137. package/tbox/constraints.ttl +150 -0
  138. package/tbox/contact.ttl +61 -0
  139. package/tbox/content.ttl +76 -0
  140. package/tbox/context.ttl +508 -0
  141. package/tbox/coordination.ttl +263 -0
  142. package/tbox/core.ttl +325 -7
  143. package/tbox/dcat-imports.ttl +19 -0
  144. package/tbox/discovery.ttl +273 -0
  145. package/tbox/dqv-imports.ttl +29 -0
  146. package/tbox/earl-imports.ttl +32 -0
  147. package/tbox/engagement.ttl +349 -0
  148. package/tbox/entitlement.ttl +41 -0
  149. package/tbox/estate.ttl +78 -0
  150. package/tbox/evaluation.ttl +330 -0
  151. package/tbox/execution.ttl +720 -0
  152. package/tbox/familyoffice.ttl +87 -0
  153. package/tbox/fulfillment.ttl +140 -0
  154. package/tbox/geo.ttl +28 -0
  155. package/tbox/governance.ttl +67 -0
  156. package/tbox/guidance.ttl +40 -0
  157. package/tbox/household.ttl +142 -0
  158. package/tbox/identity.ttl +133 -6
  159. package/tbox/inference.ttl +177 -0
  160. package/tbox/intents.ttl +241 -0
  161. package/tbox/interaction.ttl +297 -0
  162. package/tbox/messaging.ttl +244 -0
  163. package/tbox/naming.ttl +114 -0
  164. package/tbox/org.ttl +410 -0
  165. package/tbox/payload.ttl +94 -0
  166. package/tbox/payment.ttl +124 -0
  167. package/tbox/plan.ttl +169 -0
  168. package/tbox/principles.ttl +212 -0
  169. package/tbox/privacy-credential.ttl +436 -0
  170. package/tbox/profile.ttl +107 -0
  171. package/tbox/prov-imports.ttl +73 -0
  172. package/tbox/registry.ttl +382 -0
  173. package/tbox/resolution.ttl +108 -0
  174. package/tbox/scope.ttl +59 -0
  175. package/tbox/security-exposure.ttl +102 -0
  176. package/tbox/situation.ttl +56 -0
  177. package/tbox/skills.ttl +316 -0
  178. package/tbox/skos-imports.ttl +54 -0
  179. package/tbox/transition.ttl +63 -0
  180. package/tbox/trust.ttl +210 -0
  181. package/tbox/values.ttl +81 -0
  182. package/tbox/verification-receipt.ttl +134 -0
  183. package/versions.adoption.json +173 -0
@@ -0,0 +1,330 @@
1
+ # T-box — MEASUREMENTS of a harness run (spec 414 §7, A2). Namespace apeval:.
2
+ #
3
+ # ── What this is and is NOT ───────────────────────────────────────────────────────────────────────
4
+ # A measurement is a NUMBER about a run or a step, computed from its trace alone — completion, verdict counts,
5
+ # latency, model calls, tokens, vault calls, replans. It is DESCRIPTIVE: nothing here says whether an answer was
6
+ # right (that is a judgment — spec 414 §3.4, a different record with a named criterion and judge). It is EVIDENCE,
7
+ # never authority: no gate reads an apeval: term (spec 354 §1 / ADR-0041). And it carries no words: a measurement is
8
+ # a metric, a value and a unit (shape M3).
9
+ #
10
+ # Every term specializes a standard one (spec 414 §2 rule 2): a metric is a dqv:Metric, a measurement a
11
+ # dqv:QualityMeasurement (and a prov:Entity, generated by a measuring activity that used the run's bundle).
12
+ # A metric's IRI is DERIVED from its skos:notation — `m-` + camelCase (`latency-ms` → `apeval:m-latencyMs`) — so
13
+ # code names a metric by notation and never by a lookup table (asserted in the ontology suite).
14
+
15
+ @prefix apeval: <https://agenticprimitives.dev/ns/evaluation#> .
16
+ @prefix apexec: <https://agenticprimitives.dev/ns/execution#> .
17
+ @prefix dqv: <http://www.w3.org/ns/dqv#> .
18
+ @prefix prov: <http://www.w3.org/ns/prov#> .
19
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
20
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
21
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
22
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
23
+ @prefix dcat: <http://www.w3.org/ns/dcat#> .
24
+ @prefix earl: <http://www.w3.org/ns/earl#> .
25
+ @prefix dcterms: <http://purl.org/dc/terms/> .
26
+ @prefix ep-plan: <https://w3id.org/ep-plan#> .
27
+ @prefix p-plan: <http://purl.org/net/p-plan#> .
28
+ @prefix dul: <http://www.ontologydesignpatterns.org/ont/dul/DUL.owl#> .
29
+
30
+ apeval: a owl:Ontology ;
31
+ rdfs:label "Agentic Primitives — run measurements" ;
32
+ owl:versionInfo "0.5.0" ;
33
+ rdfs:comment "Descriptive measurements of a harness run, on W3C DQV. Spec 414 §7 / 415 A2." .
34
+
35
+ apeval:Metric a owl:Class ;
36
+ rdfs:subClassOf dqv:Metric , skos:Concept ;
37
+ rdfs:label "Metric" ;
38
+ rdfs:comment "A quantity computed from a run's trace alone. Declared here once; code names it by skos:notation. NOT a criterion (a stated expectation — spec 414 §3.4) and NOT a score of correctness." .
39
+
40
+ apeval:Metrics a skos:ConceptScheme ; rdfs:label "Run metrics" .
41
+
42
+ apeval:RunMeasurement a owl:Class ;
43
+ rdfs:subClassOf dqv:QualityMeasurement , prov:Entity ;
44
+ rdfs:label "RunMeasurement" ;
45
+ rdfs:comment "One measurement of one metric on one run or step (dqv:computedOn the run's or the step's activity). Generated by an apeval:Measuring activity that prov:used the run's bundle." .
46
+
47
+ apeval:Measuring a owl:Class ;
48
+ rdfs:subClassOf prov:Activity ;
49
+ rdfs:label "Measuring" ;
50
+ rdfs:comment "The activity of computing a run's measurements from its trace. Mechanical and reproducible: the same trace yields the same measurements." .
51
+
52
+ apeval:RunMeasures a owl:Class ;
53
+ rdfs:subClassOf dqv:QualityMeasurementDataset , prov:Bundle ;
54
+ rdfs:label "RunMeasures" ;
55
+ rdfs:comment "One run's measurements as one record (`run.measures:<runRef>` in the acting agent's vault), prov:wasDerivedFrom the run's provenance bundle." .
56
+
57
+ apeval:unit a owl:DatatypeProperty ;
58
+ rdfs:domain apeval:RunMeasurement ; rdfs:range xsd:string ;
59
+ rdfs:label "unit" ;
60
+ rdfs:comment "UCUM code of the value: `ms`, `{count}`, `1` (a ratio or a 0/1 fact)." .
61
+
62
+ apeval:hasMeasurement a owl:ObjectProperty ;
63
+ rdfs:domain apeval:RunMeasures ; rdfs:range apeval:RunMeasurement ;
64
+ rdfs:label "hasMeasurement" .
65
+
66
+ # ── The metrics (spec 414 §7, intrinsic — from the trace alone) ──
67
+ apeval:m-completed a apeval:Metric ; skos:inScheme apeval:Metrics ; skos:notation "completed" ; skos:prefLabel "completed" ; skos:definition "1 when the run completed, 0 otherwise." .
68
+ apeval:m-stepsPlanned a apeval:Metric ; skos:inScheme apeval:Metrics ; skos:notation "steps-planned" ; skos:prefLabel "steps planned" .
69
+ apeval:m-stepsRun a apeval:Metric ; skos:inScheme apeval:Metrics ; skos:notation "steps-run" ; skos:prefLabel "steps run" ; skos:definition "Steps that executed (replayed steps excluded)." .
70
+ apeval:m-stepsRefused a apeval:Metric ; skos:inScheme apeval:Metrics ; skos:notation "steps-refused" ; skos:prefLabel "steps refused" .
71
+ apeval:m-verdictsAllow a apeval:Metric ; skos:inScheme apeval:Metrics ; skos:notation "verdicts-allow" ; skos:prefLabel "authority verdicts: allow" .
72
+ apeval:m-verdictsDeny a apeval:Metric ; skos:inScheme apeval:Metrics ; skos:notation "verdicts-deny" ; skos:prefLabel "authority verdicts: deny" .
73
+ apeval:m-approvalsWaited a apeval:Metric ; skos:inScheme apeval:Metrics ; skos:notation "approvals-waited" ; skos:prefLabel "approvals waited on" .
74
+ apeval:m-replans a apeval:Metric ; skos:inScheme apeval:Metrics ; skos:notation "replans" ; skos:prefLabel "replans forced by admission" .
75
+ apeval:m-resumedSteps a apeval:Metric ; skos:inScheme apeval:Metrics ; skos:notation "resumed-steps" ; skos:prefLabel "steps replayed on resume" .
76
+ apeval:m-latencyMs a apeval:Metric ; skos:inScheme apeval:Metrics ; skos:notation "latency-ms" ; skos:prefLabel "latency" ; skos:definition "From the request's arrival (or the first step) to the run's end; on a step, the step's own window." .
77
+ apeval:m-modelCalls a apeval:Metric ; skos:inScheme apeval:Metrics ; skos:notation "model-calls" ; skos:prefLabel "model calls" .
78
+ apeval:m-tokensIn a apeval:Metric ; skos:inScheme apeval:Metrics ; skos:notation "tokens-in" ; skos:prefLabel "tokens in" ; skos:definition "Provider-reported input tokens; absent when no provider reported them (never estimated)." .
79
+ apeval:m-tokensOut a apeval:Metric ; skos:inScheme apeval:Metrics ; skos:notation "tokens-out" ; skos:prefLabel "tokens out" .
80
+ apeval:m-vaultCalls a apeval:Metric ; skos:inScheme apeval:Metrics ; skos:notation "vault-calls" ; skos:prefLabel "vault calls" .
81
+ apeval:m-effectsConfirmed a apeval:Metric ; skos:inScheme apeval:Metrics ; skos:notation "effects-confirmed" ; skos:prefLabel "effects confirmed" ; skos:definition "Steps whose adapter observation reached `confirmed` (spec 410 §2)." .
82
+ apeval:m-engagements a apeval:Metric ; skos:inScheme apeval:Metrics ; skos:notation "engagements" ; skos:prefLabel "harness-capability engagements" .
83
+
84
+ # ═════════════════════════════════════════════════════════════════════════════════════════════════
85
+ # Spec 415 S0 + SEL-1 — REPLAY SETS, CRITERIA, and the first JUDGMENT: skill selection.
86
+ #
87
+ # A replay set is a versioned dataset of intents (DCAT), each optionally bound to a starting state. A CRITERION is a
88
+ # stated expectation, pre-registered by digest before any run it judges (spec 414 §3.4 J2): for selection, the gold
89
+ # skill and the acceptable set of each intent. A JUDGMENT is an activity by a NAMED judge of a declared KIND that used
90
+ # a subject and a criterion and generated a verdict (EARL) — evidence, never authority (J1). The selection outcome
91
+ # classes follow the AI Skills Commons trigger-accuracy methodology v1.0 (§1), named here once.
92
+ # ═════════════════════════════════════════════════════════════════════════════════════════════════
93
+
94
+ apeval:ReplaySet a owl:Class ;
95
+ rdfs:subClassOf dcat:Dataset ;
96
+ rdfs:label "ReplaySet" ;
97
+ rdfs:comment "A versioned, checksummed set of intents to replay under variants (spec 415 S0). Split into development and held-out (pre-registered by digest). NOT the criteria: gold lives in a separate criterion record." .
98
+
99
+ apeval:ReplayIntent a owl:Class ;
100
+ rdfs:subClassOf prov:Entity ;
101
+ rdfs:label "ReplayIntent" ;
102
+ rdfs:comment "One intent of a replay set, cited by id and digest. Its words live in the set's file; a run's graph never carries them." .
103
+
104
+ apeval:hasIntent a owl:ObjectProperty ; rdfs:domain apeval:ReplaySet ; rdfs:range apeval:ReplayIntent ; rdfs:label "hasIntent" .
105
+ apeval:split a owl:DatatypeProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:range xsd:string ; rdfs:label "split" ; rdfs:comment "development | held-out." .
106
+ apeval:bucket a owl:DatatypeProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:range xsd:string ; rdfs:label "bucket" ; rdfs:comment "The case bucket (explicit · implicit · contextual · negative-near · negative-scope · negative-out · collision-a · collision-b · collision-ambiguous)." .
107
+ apeval:setDigest a owl:DatatypeProperty ; rdfs:domain apeval:ReplaySet ; rdfs:range xsd:string ; rdfs:label "setDigest" ; rdfs:comment "sha256 over the set's canonical JSON (RFC 8785)." .
108
+
109
+ apeval:SelectionCriterion a owl:Class ;
110
+ rdfs:subClassOf ep-plan:Constraint ;
111
+ rdfs:label "SelectionCriterion" ;
112
+ rdfs:comment "What selection SHOULD do for one intent: the gold skill (or none, for a negative) and the acceptable alternates, pre-registered by digest. A hypothesis until adjudicated." .
113
+
114
+ apeval:criterionDigest a owl:DatatypeProperty ; rdfs:domain apeval:Judgment ; rdfs:range xsd:string ; rdfs:label "criterionDigest" ;
115
+ rdfs:comment "sha256 of the criterion record the judgment applied (J2: stated before, cited by digest)." .
116
+
117
+ apeval:Judgment a owl:Class ;
118
+ rdfs:subClassOf prov:Activity ;
119
+ rdfs:label "Judgment" ;
120
+ rdfs:comment "An activity that judged a subject (a run or a step) against a criterion and generated a verdict (spec 414 §3.4). Evidence, never authority; never rewrites the trace it judged (J1, J6)." .
121
+
122
+ apeval:Judge a owl:Class ;
123
+ rdfs:subClassOf prov:Agent ;
124
+ rdfs:label "Judge" ;
125
+ rdfs:comment "Who or what judged. Its KIND is declared (J3) and verdicts of different kinds are never pooled (J4)." .
126
+
127
+ apeval:judgeKind a owl:DatatypeProperty ; rdfs:domain apeval:Judge ; rdfs:range xsd:string ; rdfs:label "judgeKind" ; rdfs:comment "mechanical | model | human." .
128
+
129
+ apeval:SelectionOutcome a owl:Class ;
130
+ rdfs:subClassOf skos:Concept ;
131
+ rdfs:label "SelectionOutcome" ;
132
+ rdfs:comment "The class of a selection verdict (methodology v1.0 §1)." .
133
+ apeval:SelectionOutcomes a skos:ConceptScheme ; rdfs:label "Skill-selection outcomes" .
134
+
135
+ apeval:selectionOutcome a owl:ObjectProperty ; rdfs:domain earl:TestResult ; rdfs:range apeval:SelectionOutcome ; rdfs:label "selectionOutcome" .
136
+ apeval:chargedTo a owl:DatatypeProperty ; rdfs:domain earl:TestResult ; rdfs:range xsd:string ; rdfs:label "chargedTo" ; rdfs:comment "The skill a spurious or wrong selection is charged to (a canonical id)." .
137
+ apeval:evidenceKind a owl:DatatypeProperty ; rdfs:domain earl:TestResult ; rdfs:range xsd:string ; rdfs:label "evidenceKind" ; rdfs:comment "stamped (the harness recorded governedBySkill) | inferred (an opaque agent, by detection tier). Never pooled." .
138
+
139
+ apeval:so-tp a apeval:SelectionOutcome ; skos:inScheme apeval:SelectionOutcomes ; skos:notation "tp" ; skos:prefLabel "correct" ; skos:definition "The gold skill was selected." .
140
+ apeval:so-tpAlt a apeval:SelectionOutcome ; skos:inScheme apeval:SelectionOutcomes ; skos:notation "tp-alt" ; skos:prefLabel "acceptable alternative" ; skos:definition "A declared acceptable alternate was selected (excluded from accuracy, reported beside it)." .
141
+ apeval:so-misSib a apeval:SelectionOutcome ; skos:inScheme apeval:SelectionOutcomes ; skos:notation "mis-sib" ; skos:prefLabel "sibling miss" ; skos:definition "The gold skill's declared collision partner was selected instead." .
142
+ apeval:so-misFar a apeval:SelectionOutcome ; skos:inScheme apeval:SelectionOutcomes ; skos:notation "mis-far" ; skos:prefLabel "far miss" ; skos:definition "Some other skill was selected." .
143
+ apeval:so-miss a apeval:SelectionOutcome ; skos:inScheme apeval:SelectionOutcomes ; skos:notation "miss" ; skos:prefLabel "miss" ; skos:definition "A skill was expected and none was selected." .
144
+ apeval:so-tn a apeval:SelectionOutcome ; skos:inScheme apeval:SelectionOutcomes ; skos:notation "tn" ; skos:prefLabel "correct abstention" ; skos:definition "No skill was expected and none was selected." .
145
+ apeval:so-spur a apeval:SelectionOutcome ; skos:inScheme apeval:SelectionOutcomes ; skos:notation "spur" ; skos:prefLabel "spurious" ; skos:definition "No skill was expected and one was selected; charged to it." .
146
+ apeval:so-undetected a apeval:SelectionOutcome ; skos:inScheme apeval:SelectionOutcomes ; skos:notation "undetected" ; skos:prefLabel "undetected" ; skos:definition "The selection could not be read; excluded from denominators (a verdict of cantTell, never a pass or a fail)." .
147
+
148
+ # ── Experiments and the capture window (spec 414 §7–8, 415 A4) ─────────────────────────────────────
149
+ # A comparison is PRE-REGISTERED: the plan names the replay set, the criterion, the variants and the thresholds BY
150
+ # DIGEST before the first run, and scoring refuses across them. An experiment is the activity that ran it. A capture
151
+ # window is the activity inside which results may leave a test estate for the eval store — absent, expired or exceeded
152
+ # ⇒ export refused by name. None of this is authority: nothing here is read by a gate.
153
+
154
+ apeval:ExperimentPlan a owl:Class ;
155
+ rdfs:subClassOf p-plan:Plan ;
156
+ rdfs:label "ExperimentPlan" ;
157
+ rdfs:comment "A comparison pre-registered by digest: the replay set, the criterion, the variants (each a Variant digest), the split, the repeats and the thresholds, fixed BEFORE the first run (spec 415 §3a). A plan whose components differ in more than one thing between two variants is CONFOUNDED and says so." .
158
+
159
+ apeval:Experiment a owl:Class ;
160
+ rdfs:subClassOf prov:Activity ;
161
+ rdfs:label "Experiment" ;
162
+ rdfs:comment "The activity that ran an ExperimentPlan: every run it dispatched (by run reference, pseudonymised in the eval store), the judgments and the scores. Evidence, never authority." .
163
+
164
+ apeval:CaptureWindow a owl:Class ;
165
+ rdfs:subClassOf prov:Activity ;
166
+ rdfs:label "CaptureWindow" ;
167
+ rdfs:comment "The window inside which a test estate's runs may be exported to an eval store (spec 414 §8): the store, the capture level (L0 numbers · L1 structure · L2 graph · L3 words), the roster of test personas, the estate, and when it opens and expires. Export outside it is refused and counted, never downgraded silently." .
168
+
169
+ apeval:replaySetDigest a owl:DatatypeProperty ; rdfs:domain apeval:ExperimentPlan ; rdfs:range xsd:string ; rdfs:label "replaySetDigest" .
170
+ apeval:variantDigest a owl:DatatypeProperty ; rdfs:domain apeval:ExperimentPlan ; rdfs:range xsd:string ; rdfs:label "variantDigest" ; rdfs:comment "The digest of a Variant a plan compares (apexec:Variant)." .
171
+ apeval:thresholdsDigest a owl:DatatypeProperty ; rdfs:domain apeval:ExperimentPlan ; rdfs:range xsd:string ; rdfs:label "thresholdsDigest" .
172
+ apeval:planDigest a owl:DatatypeProperty ; rdfs:domain apeval:Experiment ; rdfs:range xsd:string ; rdfs:label "planDigest" ; rdfs:comment "The digest an Experiment cites for the plan it ran." .
173
+ apeval:repeats a owl:DatatypeProperty ; rdfs:domain apeval:ExperimentPlan ; rdfs:range xsd:integer ; rdfs:label "repeats" .
174
+ apeval:confounded a owl:DatatypeProperty ; rdfs:domain apeval:ExperimentPlan ; rdfs:range xsd:boolean ; rdfs:label "confounded" ; rdfs:comment "true when two compared variants differ in more than one component (spec 414 §7): the result is labelled, never read as a lift." .
175
+ apeval:captureLevel a owl:DatatypeProperty ; rdfs:domain prov:Entity ; rdfs:range xsd:string ; rdfs:label "captureLevel" ; rdfs:comment "L0 | L1 | L2 | L3 — the level a record was exported at. A number computed with words present is never read as one from the vault-only pipeline." .
176
+ apeval:roster a owl:DatatypeProperty ; rdfs:domain apeval:CaptureWindow ; rdfs:range xsd:string ; rdfs:label "roster" ; rdfs:comment "A test persona admitted by the window, by agent address." .
177
+ apeval:estate a owl:DatatypeProperty ; rdfs:domain apeval:CaptureWindow ; rdfs:range xsd:string ; rdfs:label "estate" ; rdfs:comment "The Home origin whose runs the window admits." .
178
+ apeval:hasRun a owl:ObjectProperty ; rdfs:subPropertyOf prov:used ; rdfs:domain apeval:Experiment ; rdfs:range prov:Entity ; rdfs:label "hasRun" ; rdfs:comment "A run the experiment dispatched (its bundle, pseudonymised)." .
179
+ apeval:refusedCount a owl:DatatypeProperty ; rdfs:domain apeval:Experiment ; rdfs:range xsd:string ; rdfs:label "refusedCount" ; rdfs:comment "`capture.refused.<reason>=<n>` — what the firewall refused, counted, never dropped." .
180
+
181
+ # ═════════════════════════════════════════════════════════════════════════════════════════════════
182
+ # SPEC 418 §2 — THE TEST CASE, AS DATA. A replay intent read as a TEST: what it expects (a skill, a behaviour, a plan,
183
+ # the inputs to ask for), what it exercises in the domain, from which starting state — so a domain's graph says what
184
+ # its tests consist of and coverage is a query. The JSON sets stay the source of truth (pinned by digest); a domain
185
+ # PROJECTS them into its graph. Evidence and hypothesis, never authority.
186
+ # ═════════════════════════════════════════════════════════════════════════════════════════════════
187
+
188
+ apeval:expectedSkill a owl:ObjectProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:label "expectedSkill" ;
189
+ rdfs:comment "The skill the case says should be chosen (a canonical skill IRI). Absent on a negative." .
190
+ apeval:acceptableSkill a owl:ObjectProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:label "acceptableSkill" ;
191
+ rdfs:comment "A skill that is also right for the case (an adjudicated alternate)." .
192
+ apeval:forbiddenSkill a owl:ObjectProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:label "forbiddenSkill" ;
193
+ rdfs:comment "A skill the case must NOT be routed to — the near neighbour it is built to trip." .
194
+ apeval:collidesWith a owl:ObjectProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:label "collidesWith" ;
195
+ rdfs:comment "The skill of the collision pair this case probes (the other side of a routing collision)." .
196
+ apeval:expectedBehaviour a owl:ObjectProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:range apeval:SelectionBehaviour ; rdfs:label "expectedBehaviour" ;
197
+ rdfs:comment "What selection should DO: route to one skill, decline, ask which (clarify), or name several." .
198
+ apeval:SelectionBehaviour a owl:Class ; rdfs:subClassOf skos:Concept ; rdfs:label "SelectionBehaviour" ;
199
+ rdfs:comment "route · decline · clarify · several · plan (a chain of skills)." .
200
+ apeval:behaviour-route a apeval:SelectionBehaviour ; skos:notation "route" ; skos:prefLabel "route to one skill" .
201
+ apeval:behaviour-decline a apeval:SelectionBehaviour ; skos:notation "decline" ; skos:prefLabel "decline — no skill fits" .
202
+ apeval:behaviour-clarify a apeval:SelectionBehaviour ; skos:notation "clarify" ; skos:prefLabel "ask which of named options" .
203
+ apeval:behaviour-several a apeval:SelectionBehaviour ; skos:notation "several" ; skos:prefLabel "the request needs several skills" .
204
+ apeval:behaviour-plan a apeval:SelectionBehaviour ; skos:notation "plan" ; skos:prefLabel "reach the outcome by a chain of skills" .
205
+ apeval:optionSkill a owl:ObjectProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:label "optionSkill" ;
206
+ rdfs:comment "A skill among the options a clarify/several case names." .
207
+ apeval:ExpectedPlanStep a owl:Class ; rdfs:subClassOf p-plan:Step ; rdfs:label "ExpectedPlanStep" ;
208
+ rdfs:comment "One step of the plan an outcome case expects: a skill at a position. A plan in the gold, not a run." .
209
+ apeval:expectedPlanStep a owl:ObjectProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:range apeval:ExpectedPlanStep ; rdfs:label "expectedPlanStep" .
210
+ apeval:planPosition a owl:DatatypeProperty ; rdfs:domain apeval:ExpectedPlanStep ; rdfs:range xsd:integer ; rdfs:label "planPosition" ; rdfs:comment "0-based order in the expected plan." .
211
+ apeval:stepSkill a owl:ObjectProperty ; rdfs:domain apeval:ExpectedPlanStep ; rdfs:label "stepSkill" ; rdfs:comment "The skill (capability) the step runs." .
212
+ apeval:expectedMissing a owl:ObjectProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:label "expectedMissing" ;
213
+ rdfs:comment "A domain class the right plan must name as missing — to be asked for, not invented." .
214
+ apeval:exercisesClass a owl:ObjectProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:label "exercisesClass" ;
215
+ rdfs:comment "A domain class the case's words or gold exercise — what the case tests of the ontology." .
216
+ apeval:adjudication a owl:DatatypeProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:range xsd:string ; rdfs:label "adjudication" ;
217
+ rdfs:comment "hypothesis (authored, pre-registered) | adjudicated (a named annotator agreed)." .
218
+ apeval:message a owl:DatatypeProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:range xsd:string ; rdfs:label "message" ;
219
+ rdfs:comment "The request's words — carried in a DOMAIN's test projection (authored sentences, never a person's), never in a run's graph." .
220
+ apeval:inReplaySet a owl:ObjectProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:range apeval:ReplaySet ; owl:inverseOf apeval:hasIntent ; rdfs:label "inReplaySet" .
221
+ apeval:underStartingState a owl:ObjectProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:range apexec:StartingState ; rdfs:label "underStartingState" ;
222
+ rdfs:comment "The seeded state the case is asked from (the asker's history, memory, held records)." .
223
+ apeval:holdsClass a owl:ObjectProperty ; rdfs:domain apexec:StartingState ; rdfs:label "holdsClass" ;
224
+ rdfs:comment "A domain class the asker already holds a record of in this state." .
225
+ apeval:recentSkill a owl:ObjectProperty ; rdfs:domain apexec:StartingState ; rdfs:label "recentSkill" ;
226
+ rdfs:comment "A skill the asker used recently in this state." .
227
+ apeval:memoryTag a owl:DatatypeProperty ; rdfs:domain apexec:StartingState ; rdfs:range xsd:string ; rdfs:label "memoryTag" ;
228
+ rdfs:comment "What the asker's own agent remembers about them in this state (a short tag)." .
229
+ apeval:latestResult a owl:ObjectProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:range earl:Assertion ; rdfs:label "latestResult" ;
230
+ rdfs:comment "The newest judged run of the case (an EARL assertion with its selection outcome, time and tokens)." .
231
+ # Ranges (spec 414 §2 rule 2 — every term reaches a standard one): a skill is a prov:Entity (its SKILL.md), a class is an rdfs:Class.
232
+ apeval:expectedSkill rdfs:range prov:Entity . apeval:acceptableSkill rdfs:range prov:Entity . apeval:forbiddenSkill rdfs:range prov:Entity .
233
+ apeval:collidesWith rdfs:range prov:Entity . apeval:optionSkill rdfs:range prov:Entity . apeval:stepSkill rdfs:range prov:Entity . apeval:recentSkill rdfs:range prov:Entity .
234
+ apeval:expectedMissing rdfs:range rdfs:Class . apeval:exercisesClass rdfs:range rdfs:Class . apeval:holdsClass rdfs:range rdfs:Class .
235
+ apeval:expectedMissing rdfs:subPropertyOf dcterms:subject . apeval:exercisesClass rdfs:subPropertyOf dcterms:subject . apeval:holdsClass rdfs:subPropertyOf dcterms:subject .
236
+
237
+ # ═══ Spec 438 W3 — an ASSESSMENT is a separate signed assertion ════════════════════════════════════
238
+ #
239
+ # Spec 414 §3.4 fixed the SHAPE of a judgment and deferred the record to "a later spec". This is it. The thing
240
+ # that makes an assessment safe is what it does NOT do: it never edits the run record it is about. A correction
241
+ # is a NEW assessment that supersedes the old one, so the trace of what happened and the opinions about it stay
242
+ # separable forever (J6). J1 still holds — no verifier, admission stage or mandate reads one.
243
+ apeval:Assessment a owl:Class ;
244
+ rdfs:subClassOf apeval:Judgment ;
245
+ rdfs:label "Assessment" ;
246
+ rdfs:comment "A signed judgment of one run against one criteria revision, bound to the subject by digest. Stored beside the run, NEVER inside it; superseded, never edited. Evidence, never authority (spec 438 §5, 414 J1/J6)." .
247
+
248
+ apeval:supersedes a owl:ObjectProperty ;
249
+ rdfs:domain apeval:Assessment ; rdfs:range apeval:Assessment ;
250
+ rdfs:label "supersedes" ; rdfs:comment "The earlier assessment this one replaces. The earlier one remains readable — a correction is an addition." .
251
+
252
+ apeval:criteriaRevision a owl:DatatypeProperty ;
253
+ rdfs:domain apeval:Assessment ; rdfs:range xsd:integer ;
254
+ rdfs:label "criteriaRevision" ;
255
+ rdfs:comment "The OutcomeSpecification revision judged against. MUST pre-date the subject (J2): no judging against a post-hoc expectation." .
256
+
257
+ apeval:evaluatorImplementation a owl:DatatypeProperty ;
258
+ rdfs:domain apeval:Judge ; rdfs:range xsd:string ;
259
+ rdfs:label "evaluatorImplementation" ;
260
+ rdfs:comment "Digest of the evaluator's implementation (mechanical) or of its prompt (model), so J5 reproducibility can be claimed or refused honestly." .
261
+
262
+
263
+ # ═════════════════════════════════════════════════════════════════════════════════════════════════
264
+ # 2026-10-14 — EVERY NUMBER INTERPRETABLE, AND THE OUTCOME GROUNDED ("evals article gap" W1, W2, W4, W6).
265
+ #
266
+ # W1. A test result that is NOT a verdict says WHY — the agent, the grader, or the environment — so an estate outage is
267
+ # never read as a miss; an assertion says which TRIAL (repeat) it is, which KIND of grader asserted it, and (EARL's own
268
+ # terms) its mode and who asserted it. W2. A case may carry a REFERENCE ANSWER: a solvability proof the author wrote,
269
+ # held to 1.0 under the graders, never a target to diff against. W4. A replay set says what KIND of suite it is —
270
+ # capability or regression — so the two are never pooled. W6. The outcome gold is a dul:Description; what a run
271
+ # delivered is a situation that satisfies it or does not — the same spine the substrate's own situations stand on.
272
+ # ═════════════════════════════════════════════════════════════════════════════════════════════════
273
+
274
+ # ── W1: the failure cause ──
275
+ apeval:FailureCause a owl:Class ;
276
+ rdfs:subClassOf skos:Concept ;
277
+ rdfs:label "FailureCause" ;
278
+ rdfs:comment "Why a test result is not a verdict: agent (the subject's own failure, in its denominator) · grader (the judge failed — the instrument, not the subject) · environment (the estate failed — a store, a provider, a timeout, a trace that never landed). Only `agent` stays in the subject's denominator; the others are counted beside it." .
279
+ apeval:FailureCauses a skos:ConceptScheme ; rdfs:label "Failure causes" .
280
+ apeval:fc-agent a apeval:FailureCause ; skos:inScheme apeval:FailureCauses ; skos:notation "agent" ; skos:prefLabel "the agent" ; skos:definition "The subject produced no verdict for a reason the harness owns. Counted against it." .
281
+ apeval:fc-grader a apeval:FailureCause ; skos:inScheme apeval:FailureCauses ; skos:notation "grader" ; skos:prefLabel "the grader" ; skos:definition "The judge failed: timed out, errored, answered unreadably. The instrument, not the subject; never counted against it." .
282
+ apeval:fc-environment a apeval:FailureCause ; skos:inScheme apeval:FailureCauses ; skos:notation "environment" ; skos:prefLabel "the environment" ; skos:definition "The estate failed: a store, a provider, a timeout, a trace that never landed, a repeat refused for isolation. Never counted against the subject." .
283
+ apeval:failureCause a owl:ObjectProperty ; rdfs:domain earl:TestResult ; rdfs:range apeval:FailureCause ; rdfs:label "failureCause" ;
284
+ rdfs:comment "On a result whose earl:outcome is earl:cantTell (or on a run with no result): why. Absent on a pass or a fail." .
285
+ apeval:trialIndex a owl:DatatypeProperty ; rdfs:domain earl:Assertion ; rdfs:range xsd:integer ; rdfs:label "trialIndex" ;
286
+ rdfs:comment "Which repeat of the case this assertion judged (0 = the first; an experiment's Stage-1 run). pass@1 reads trial 0; pass^k reads every trial." .
287
+ apeval:graderKind a owl:DatatypeProperty ; rdfs:domain earl:Assertion ; rdfs:range xsd:string ; rdfs:label "graderKind" ;
288
+ rdfs:comment "The kind of grader that asserted it — mechanical | model | human — beside earl:assertedBy (the grader itself) and earl:mode (automatic for mechanical and model graders; manual for an adjudication by a person). Verdicts of different kinds are never pooled (J4)." .
289
+
290
+ # ── W2: the reference answer ──
291
+ apeval:referenceAnswer a owl:DatatypeProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:range xsd:string ; rdfs:label "referenceAnswer" ;
292
+ rdfs:comment "An answer the case's author wrote that SHOULD score 1.0 under the graders — a proof the case is solvable and the graders can see it, checked before any run. Never a target to diff an agent's answer against. Carried in the domain's projection as authored text; a run's graph never carries it." .
293
+ apeval:referenceScore a owl:DatatypeProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:range xsd:decimal ; rdfs:label "referenceScore" ;
294
+ rdfs:comment "What the graders gave the reference answer when it was last checked (1.0 is the bar; below it the case or the grader is wrong, and the build says which)." .
295
+
296
+ # ── W4: the suite kind ──
297
+ apeval:SuiteKind a owl:Class ;
298
+ rdfs:subClassOf skos:Concept ;
299
+ rdfs:label "SuiteKind" ;
300
+ rdfs:comment "What a replay set is for. capability: a fresh, hard set written to find out what the harness can do — its number is a capability number. regression: a saturated set kept to catch a step backwards — a pass is expected and never published as a capability number. A capability set that passes three consecutive runs at ≥ 95% graduates to regression." .
301
+ apeval:SuiteKinds a skos:ConceptScheme ; rdfs:label "Suite kinds" .
302
+ apeval:suite-capability a apeval:SuiteKind ; skos:inScheme apeval:SuiteKinds ; skos:notation "capability" ; skos:prefLabel "capability suite" .
303
+ apeval:suite-regression a apeval:SuiteKind ; skos:inScheme apeval:SuiteKinds ; skos:notation "regression" ; skos:prefLabel "regression suite" .
304
+ apeval:suiteKind a owl:ObjectProperty ; rdfs:domain apeval:ReplaySet ; rdfs:range apeval:SuiteKind ; rdfs:label "suiteKind" .
305
+
306
+ # ── W6: the outcome gold as a description; what was delivered as a situation ──
307
+ apeval:OutcomeDescription a owl:Class ;
308
+ rdfs:subClassOf dul:Description , prov:Entity ;
309
+ rdfs:label "OutcomeDescription" ;
310
+ rdfs:comment "What a case EXPECTS the world to look like after the run, as a dul:Description: the classes whose records should exist (the gold plan's products), the inputs that should be named missing rather than invented, or — for a clarify case — that the person should be asked which option. A run's delivered situation satisfies it or does not. The compiled `behaviour` string (route · decline · clarify · several · plan) is the description's compiled form, kept as is." .
311
+ apeval:DeliveredSituation a owl:Class ;
312
+ rdfs:subClassOf dul:Situation , prov:Entity ;
313
+ rdfs:label "DeliveredSituation" ;
314
+ rdfs:comment "What one run actually left: the records it produced (each a member of the situation), the inputs it named missing, the question it asked. Judged against the case's OutcomeDescription: satisfied (earl:passed) · not satisfied (earl:failed) · could not tell (earl:cantTell). A clarify case is a situation under TWO candidate descriptions; a decline case a situation no description satisfies." .
315
+ apeval:expectedOutcome a owl:ObjectProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:range apeval:OutcomeDescription ; rdfs:label "expectedOutcome" ;
316
+ rdfs:comment "The case's outcome gold, as a description. Pre-registered by digest with the set." .
317
+ apeval:candidateOutcome a owl:ObjectProperty ; rdfs:domain apeval:ReplayIntent ; rdfs:range apeval:OutcomeDescription ; rdfs:label "candidateOutcome" ;
318
+ rdfs:comment "A clarify or several case: one of the descriptions the ask could reach; the right first move is to ask which (clarify) or to reach each (several)." .
319
+ apeval:describesClass a owl:ObjectProperty ; rdfs:domain apeval:OutcomeDescription ; rdfs:range rdfs:Class ; rdfs:subPropertyOf dcterms:subject ; rdfs:label "describesClass" ;
320
+ rdfs:comment "A class whose record the description expects to exist after the run (a gold-plan skill's product, honouring `within` and alternative groups)." .
321
+ apeval:describesMissing a owl:ObjectProperty ; rdfs:domain apeval:OutcomeDescription ; rdfs:range rdfs:Class ; rdfs:subPropertyOf dcterms:subject ; rdfs:label "describesMissing" ;
322
+ rdfs:comment "A class the description expects to be NAMED AS MISSING — asked for, never invented." .
323
+ apeval:describesAsk a owl:DatatypeProperty ; rdfs:domain apeval:OutcomeDescription ; rdfs:range xsd:boolean ; rdfs:label "describesAsk" ;
324
+ rdfs:comment "true when the description expects the run to ask the person which option they mean (a clarify case)." .
325
+ apeval:deliveredSituation a owl:ObjectProperty ; rdfs:domain earl:TestResult ; rdfs:range apeval:DeliveredSituation ; rdfs:label "deliveredSituation" ;
326
+ rdfs:comment "What the judged run left, as the situation the verdict is about." .
327
+ apeval:satisfies a owl:ObjectProperty ; rdfs:domain apeval:DeliveredSituation ; rdfs:range apeval:OutcomeDescription ; rdfs:subPropertyOf dul:satisfies ; rdfs:label "satisfies" ;
328
+ rdfs:comment "The situation satisfies the description (every expected class exists and validates; every missing input was named; the ask was asked). The state check decides existence and validity mechanically; the judge reads the rest." .
329
+ apeval:reachedUnder a owl:ObjectProperty ; rdfs:domain apeval:DeliveredSituation ; rdfs:range apeval:OutcomeDescription ; rdfs:label "reachedUnder" ;
330
+ rdfs:comment "The description the run's OWN plan was reaching for (the agent-plan expectation). When it differs from the case's expectedOutcome the run reached a situation under the WRONG description — SPARQL can list those cases." .