@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
package/tbox/trust.ttl ADDED
@@ -0,0 +1,210 @@
1
+ # T-box — trust evidence and reputation vocabulary.
2
+ # Refines Agent Explorer trust/analytics vocabulary into AP-native evidence.
3
+
4
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
5
+ @prefix aptrust: <https://agenticprimitives.dev/ns/trust#> .
6
+ @prefix apatt: <https://agenticprimitives.dev/ns/attestation#> .
7
+ @prefix apdisc: <https://agenticprimitives.dev/ns/discovery#> .
8
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
9
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
10
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
11
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
12
+ @prefix prov: <http://www.w3.org/ns/prov#> .
13
+ @prefix dul: <http://www.ontologydesignpatterns.org/ont/dul/DUL.owl#> .
14
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
15
+
16
+ aptrust: a owl:Ontology ;
17
+ rdfs:label "Agentic Primitives — trust ontology" ;
18
+ owl:versionInfo "0.1.0" ;
19
+ rdfs:seeAlso <https://github.com/agentictrustlabs/agent-explorer/tree/main/apps/ontology/ontology> ;
20
+ rdfs:comment "Vocabulary for public trust signals, reputation evidence, validations, and trust determinations used by discovery." .
21
+
22
+ aptrust:TrustSignal a owl:Class ;
23
+ rdfs:subClassOf prov:Entity, dul:InformationObject ;
24
+ rdfs:label "TrustSignal" ;
25
+ rdfs:comment "A public signal that may influence trust determination: validation, outcome, feedback, issuer standing, graph relationship, or exposure finding." .
26
+
27
+ aptrust:ReputationEvidence a owl:Class ;
28
+ rdfs:subClassOf aptrust:TrustSignal ;
29
+ rdfs:label "ReputationEvidence" ;
30
+ rdfs:comment "A normalized reputation signal. ERC-8004 feedback is one external projection source, not AP authority." .
31
+
32
+ aptrust:ValidationEvidence a owl:Class ;
33
+ rdfs:subClassOf aptrust:TrustSignal ;
34
+ rdfs:label "ValidationEvidence" ;
35
+ rdfs:comment "Evidence from an independent validation process, validator credential, or validation registry projection." .
36
+
37
+ aptrust:OutcomeEvidence a owl:Class ;
38
+ rdfs:subClassOf aptrust:TrustSignal ;
39
+ rdfs:label "OutcomeEvidence" ;
40
+ rdfs:comment "Evidence that work completed with a cited artifact/outcome credential." .
41
+
42
+ aptrust:FeedbackSignal a owl:Class ;
43
+ rdfs:subClassOf aptrust:ReputationEvidence ;
44
+ rdfs:label "FeedbackSignal" ;
45
+ rdfs:comment "Feedback from a client/human/agent interaction. Must include provenance and anti-spam/authorization evidence if used for ranking." .
46
+
47
+ aptrust:TrustGraphEdge a owl:Class ;
48
+ rdfs:subClassOf prov:Entity ;
49
+ rdfs:label "TrustGraphEdge" ;
50
+ rdfs:comment "An evidence-backed edge between agents or facets in the public trust graph." .
51
+
52
+ aptrust:TrustScore a owl:Class ;
53
+ rdfs:subClassOf dul:Parameter ;
54
+ rdfs:label "TrustScore" ;
55
+ rdfs:comment "A computed score over evidence under a named policy and graph snapshot. Score is derived evidence, not authority." .
56
+
57
+ aptrust:signalSubject a owl:ObjectProperty ;
58
+ rdfs:domain aptrust:TrustSignal ;
59
+ rdfs:range ap:Agent ;
60
+ rdfs:label "signalSubject" .
61
+
62
+ aptrust:signalIssuer a owl:ObjectProperty ;
63
+ rdfs:domain aptrust:TrustSignal ;
64
+ rdfs:range ap:Agent ;
65
+ rdfs:label "signalIssuer" .
66
+
67
+ aptrust:signalValue a owl:DatatypeProperty ;
68
+ rdfs:domain aptrust:TrustSignal ;
69
+ rdfs:range xsd:decimal ;
70
+ rdfs:label "signalValue" .
71
+
72
+ aptrust:signalTag a owl:DatatypeProperty ;
73
+ rdfs:domain aptrust:TrustSignal ;
74
+ rdfs:range xsd:string ;
75
+ rdfs:label "signalTag" .
76
+
77
+ aptrust:derivedUnderPolicy a owl:ObjectProperty ;
78
+ rdfs:domain aptrust:TrustScore ;
79
+ rdfs:range apdisc:TrustPolicy ;
80
+ rdfs:label "derivedUnderPolicy" .
81
+
82
+ aptrust:usesTrustSignal a owl:ObjectProperty ;
83
+ rdfs:domain apdisc:TrustDetermination ;
84
+ rdfs:range aptrust:TrustSignal ;
85
+ rdfs:label "usesTrustSignal" .
86
+
87
+ aptrust:hasTrustScore a owl:ObjectProperty ;
88
+ rdfs:domain apdisc:TrustDetermination ;
89
+ rdfs:range aptrust:TrustScore ;
90
+ rdfs:label "hasTrustScore" .
91
+
92
+ # ═══════════════════════════════════════════════════════════════════════════
93
+ # T-BOX PROMOTION of the projected trust-fabric terms (facet-registries G1; spec 331)
94
+ # ═══════════════════════════════════════════════════════════════════════════
95
+ #
96
+ # WHAT WAS WRONG. `apps/demo-discovery-indexer/src/ontology.ts` coined a set of `ap:` terms for
97
+ # the relationship and attestation projectors and wrote them into the production graph;
98
+ # `apps/demo-discovery-mcp/src/graphdb.ts` queries them by name (`?e ap:edgeId ?eid ;
99
+ # ap:edgeSubject ?subj ; ap:edgeObject ?obj ; …`). None of them were ever declared in a T-box.
100
+ # `aprel:` is a declared namespace with no module and no terms, and this file typed the EDGE
101
+ # (aptrust:TrustGraphEdge) while declaring nothing about its subject, object, type or status.
102
+ # The result was a live query path over undeclared vocabulary — exactly the read-path-without-a-
103
+ # definition condition ADR-0013 forbids, and the mirror image of gap G5 on the write side.
104
+ #
105
+ # WHY THE `ap:` PREFIX IS RETAINED RATHER THAN RE-MINTED AS `aptrust:` OR `aprel:`.
106
+ # The IRIs are already in the deployed GraphDB and already in the MCP's SPARQL query TEXT.
107
+ # Re-prefixing them is a graph migration plus a coordinated Worker deploy, not an edit — and it
108
+ # would buy nothing semantic, because a T-box term's namespace is not its meaning. This follows
109
+ # the established discipline (facet-registries §7, ADR-0051): IDENTIFIERS KEEP THEIR NAMES, prose
110
+ # and docs use the canonical term. The alternative considered and rejected was declaring `aptrust:`
111
+ # twins as owl:equivalentProperty aliases — that is a SECOND mechanism for one read path, which
112
+ # ADR-0013 forbids more strongly than it forbids an awkward prefix.
113
+ #
114
+ # NOTHING IS MINTED HERE. Every term below is verbatim the IRI the indexer already emits.
115
+ # Promotion is a declaration, not a change; the graph is unaffected.
116
+ #
117
+ # ENDPOINT-RELATIVE vs ABSOLUTE — the invariant that decides which properties sit where.
118
+ # One on-chain AgentRelationship edge is ONE record shared by both endpoints, and the edge node's
119
+ # IRI derives from the deterministic on-chain edgeId, so BOTH agents project the SAME subject.
120
+ # Its properties must therefore be endpoint-INDEPENDENT. `ap:edgeDirection` and `ap:relatedAgent`
121
+ # are meaningful only relative to whoever is looking, so they hang on the AGENT; the shared edge
122
+ # node states subject and object ABSOLUTELY.
123
+
124
+ @prefix apreg: <https://agenticprimitives.dev/ns/registry#> .
125
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
126
+
127
+ # ─── Agent → child-node facet links ─────────────────────────────────────────
128
+
129
+ ap:hasRelationship a owl:ObjectProperty ;
130
+ rdfs:domain ap:Agent ; rdfs:range aptrust:TrustGraphEdge ;
131
+ rdfs:label "hasRelationship" ;
132
+ rdfs:comment "Agent → a projected AgentRelationship edge it is an endpoint of (either side)." .
133
+
134
+ ap:hasAttestation a owl:ObjectProperty ;
135
+ rdfs:domain ap:Agent ; rdfs:range apatt:Attestation ;
136
+ rdfs:label "hasAttestation" ;
137
+ rdfs:comment "Agent → an AttestationRegistry row in which it is the SUBJECT. Issuer-side rows are not projected onto the issuer: an attestation is evidence ABOUT its subject." .
138
+
139
+ # ─── Edge-node properties — ABSOLUTE, endpoint-independent ──────────────────
140
+
141
+ ap:edgeId a owl:DatatypeProperty ;
142
+ rdfs:domain aptrust:TrustGraphEdge ; rdfs:range xsd:string ;
143
+ rdfs:label "edgeId" ;
144
+ rdfs:comment "The deterministic on-chain edgeId = computeEdgeId(subject, object, relationshipType). The edge node's IRI derives from it, which is why both endpoints project one shared node." .
145
+
146
+ ap:edgeSubject a owl:ObjectProperty ;
147
+ rdfs:domain aptrust:TrustGraphEdge ; rdfs:range ap:CanonicalAgentId ;
148
+ rdfs:label "edgeSubject" ;
149
+ rdfs:comment "The SA that PROPOSED the edge. On-chain `proposeEdge` requires msg.sender == subject, so this is structurally the proposing party — never inferred, never symmetric with edgeObject." .
150
+
151
+ ap:edgeObject a owl:ObjectProperty ;
152
+ rdfs:domain aptrust:TrustGraphEdge ; rdfs:range ap:CanonicalAgentId ;
153
+ rdfs:label "edgeObject" ;
154
+ rdfs:comment "The SA that CONFIRMED the edge. An edge reaches ACTIVE only through PROPOSED → CONFIRMED → ACTIVE, so an active edge is bilateral by construction: both parties consented on chain." .
155
+
156
+ ap:relationshipType a owl:DatatypeProperty ;
157
+ rdfs:domain aptrust:TrustGraphEdge ; rdfs:range xsd:string ;
158
+ rdfs:label "relationshipType" ;
159
+ rdfs:comment "The well-known label ('HAS_MEMBER', 'VALIDATION_TRUST', 'RECOMMENDS', …) when the type hash resolves; absent otherwise. Never a substitute for relationshipTypeId." .
160
+
161
+ ap:relationshipTypeId a owl:DatatypeProperty ;
162
+ rdfs:domain aptrust:TrustGraphEdge ; rdfs:range xsd:string ;
163
+ rdfs:label "relationshipTypeId" ;
164
+ rdfs:comment "The raw on-chain bytes32 type id, ALWAYS emitted — an unresolved governor-registered type must still be queryable (ADR-0013: no silent gaps)." .
165
+
166
+ ap:edgeStatus a owl:DatatypeProperty ;
167
+ rdfs:domain aptrust:TrustGraphEdge ; rdfs:range xsd:string ;
168
+ rdfs:label "edgeStatus" ;
169
+ rdfs:comment "'PROPOSED' | 'CONFIRMED' | 'ACTIVE' | 'REVOKED'. Only ACTIVE edges may inform trust scoring — a proposal is one party talking to itself, and revocation is terminal." .
170
+
171
+ # ─── Agent-level, endpoint-RELATIVE denormalizations ────────────────────────
172
+
173
+ ap:relatedAgent a owl:ObjectProperty ;
174
+ rdfs:domain ap:Agent ; rdfs:range ap:CanonicalAgentId ;
175
+ rdfs:label "relatedAgent" ;
176
+ rdfs:comment "The COUNTERPARTY as seen from this agent. Endpoint-relative by construction, hence on the agent and never on the shared edge node." .
177
+
178
+ ap:edgeDirection a owl:DatatypeProperty ;
179
+ rdfs:domain ap:Agent ; rdfs:range xsd:string ;
180
+ rdfs:label "edgeDirection" ;
181
+ rdfs:comment "'subject' | 'object' — which end of the edge THIS agent occupies. Endpoint-relative; see ap:relatedAgent." .
182
+
183
+ ap:edgeCount a owl:DatatypeProperty ;
184
+ rdfs:domain ap:Agent ; rdfs:range xsd:integer ; rdfs:label "edgeCount" .
185
+
186
+ ap:activeEdgeCount a owl:DatatypeProperty ;
187
+ rdfs:domain ap:Agent ; rdfs:range xsd:integer ;
188
+ rdfs:label "activeEdgeCount" ;
189
+ rdfs:comment "Edges in ACTIVE status only. This is the count trustScore reads, and it saturates fast — a public edge is cheap to create, so it is corroboration, never authority." .
190
+
191
+ # ─── Attestation terms with no apatt: home (the T-box does not model the
192
+ # on-chain struct's issuer or its isValid(uid) view) ─────────────────────
193
+
194
+ ap:attestationIssuer a owl:ObjectProperty ;
195
+ rdfs:domain apatt:Attestation ; rdfs:range ap:CanonicalAgentId ;
196
+ rdfs:label "attestationIssuer" ;
197
+ rdfs:comment "The asserting party. AttestationRegistry leaves msg.sender UNCONSTRAINED and derives authority from a recomputed EIP-712 signature, so the issuer here is the SIGNER, never the transaction sender. This is what makes third-party endorsement relayable without the issuer holding gas — the property spec 331's endorsement ceremony depends on." .
198
+
199
+ ap:attestationValid a owl:DatatypeProperty ;
200
+ rdfs:domain apatt:Attestation ; rdfs:range xsd:boolean ;
201
+ rdfs:label "attestationValid" ;
202
+ rdfs:comment "The contract's isValid(uid) verdict at index time. Note AR-06: there is NO issuer-revoke entrypoint — only the holder or a party may revoke on chain; issuer-side revocation is off-chain via offchainCredentialStatusList and is therefore NOT reflected here." .
203
+
204
+ ap:attestationCount a owl:DatatypeProperty ;
205
+ rdfs:domain ap:Agent ; rdfs:range xsd:integer ; rdfs:label "attestationCount" .
206
+
207
+ ap:validAttestationCount a owl:DatatypeProperty ;
208
+ rdfs:domain ap:Agent ; rdfs:range xsd:integer ;
209
+ rdfs:label "validAttestationCount" ;
210
+ rdfs:comment "Non-revoked attestations where this agent is the SUBJECT. The count trustScore reads." .
@@ -0,0 +1,81 @@
1
+ # T-box — WHAT AN ARGUMENT IS, when it is not a party (spec 363 W2).
2
+ #
3
+ # `PARTY_ROLES` already says what an argument's PARTY may be — a payer is a Treasury or an Organization,
4
+ # an invitee is a Person (or, since spec 372, a Service agent). Nothing said what the REST of an argument is, so every argument that was not an
5
+ # agent was a string, and every branch that touched one re-invented how to read it.
6
+ #
7
+ # THAT COST REAL MONEY. Asked to send 20 USDC a planner wrote `amount: "20"` into a smallest-units field
8
+ # and twenty base units settled — 0.00002 dollars — under a mandate every gate approved. A person who
9
+ # answered "10 usdc" to "how much?" was silently re-asked, because one branch's regex wanted bare digits.
10
+ # A request for "a way to reach your treasury" was sent to somebody being invited to a TEAM, because the
11
+ # kind of thing wanted had no declared value set and defaulted to the only one the code knew.
12
+ #
13
+ # Each of those is one question: WHAT KIND OF VALUE IS THIS, and who is allowed to say. These terms are
14
+ # the answer, and `packages/ontology/src/arg-types.ts` binds arguments to them with ONE reader each — so
15
+ # a person's phrasing is understood identically wherever they typed it, and a refusal always names what
16
+ # it could not read instead of asking the same question again.
17
+
18
+ @prefix apval: <https://agenticprimitives.dev/ns/value#> .
19
+ @prefix ap: <https://agenticprimitives.dev/ns/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 skos: <http://www.w3.org/2004/02/skos/core#> .
24
+
25
+ apval: a owl:Ontology ;
26
+ rdfs:label "Agentic Primitives — Argument values" ;
27
+ rdfs:comment "The kinds of value a capability argument can hold when it is not an agent: a quantity, an asset, an address for mail, a label, a flag, a kind of agent. One term, one reader (spec 363 §3)." .
28
+
29
+ apval:Value a owl:Class ;
30
+ rdfs:label "Value" ;
31
+ rdfs:comment "A capability argument that is not a party. Its TYPE says how it is read and what a refusal may say." .
32
+
33
+ apval:Amount a owl:Class ;
34
+ rdfs:subClassOf apval:Value ;
35
+ rdfs:label "Amount" ;
36
+ rdfs:comment """A quantity OF SOMETHING, said the way people say it: "20", "12.50", "10 usdc", "$10",
37
+ "1,000". A currency word or symbol beside a figure adds no information a single-asset deployment
38
+ does not already have, and a thousands comma is punctuation — so all of those read. "10,50" and
39
+ "a tenner" do NOT, and the honest response is to name what could not be read.
40
+
41
+ SMALLEST UNITS ARE NOT AN AMOUNT, they are a REPRESENTATION. Only a caller that computed them (a
42
+ form, a script) may state them; a planner repeating what a person said may not, because it has no
43
+ basis for the conversion and getting it wrong moves the wrong money silently.""" .
44
+
45
+ apval:Asset a owl:Class ;
46
+ rdfs:subClassOf apval:Value ;
47
+ rdfs:label "Asset" ;
48
+ rdfs:comment """The token a quantity is IN. A deployment fact, not a planner's to recall: asked to
49
+ send USDC a model wrote Base Sepolia's token address from memory — well-formed, and wrong for this
50
+ chain. Read as an address, or as a symbol this deployment actually configures.""" .
51
+
52
+ apval:EmailAddress a owl:Class ;
53
+ rdfs:subClassOf apval:Value ;
54
+ rdfs:label "EmailAddress" ;
55
+ rdfs:comment "Where someone's mail goes. Checked for shape before it is stored, because a malformed one is discovered later by whoever tried to write to it." .
56
+
57
+ apval:DisplayLabel a owl:Class ;
58
+ rdfs:subClassOf apval:Value ;
59
+ rdfs:label "DisplayLabel" ;
60
+ rdfs:comment "A short human string shown back to people — a name for a treasury, what someone calls a household member. Trimmed and bounded; never markup, never a control character." .
61
+
62
+ apval:Flag a owl:Class ;
63
+ rdfs:subClassOf apval:Value ;
64
+ rdfs:label "Flag" ;
65
+ rdfs:comment "A yes/no the person actually said. \"true\", \"yes\", \"on\" and their opposites read; anything else is not an answer and is asked again." .
66
+
67
+ apval:AgentKind a owl:Class ;
68
+ rdfs:subClassOf apval:Value ;
69
+ rdfs:label "AgentKind" ;
70
+ rdfs:comment """WHICH KIND of agent an argument names — a treasury, an organization, a team. Its
71
+ values are the derived agent TYPES (ADR-0061), so the vocabulary is the one `CLASS_FOR_SUFFIX`
72
+ already binds rather than a second list.
73
+
74
+ IT HAS NO DEFAULT, and that is the point. `wants ?? 'treasury'` sent somebody being invited to a
75
+ team a request for a way to reach their treasury: two unrelated sentences stapled together, and
76
+ nothing he could act on. A kind that was not said is asked for.""" .
77
+
78
+ apval:valueType a owl:ObjectProperty ;
79
+ rdfs:domain ap:Agent ; rdfs:range apval:Value ;
80
+ rdfs:label "valueType" ;
81
+ rdfs:comment "Binds a capability argument to the kind of value it holds. Consumed by the compiled ARG_TYPES table; a binding whose term this T-box does not declare fails the build." .
@@ -0,0 +1,134 @@
1
+ # T-box — verification-receipt provenance vocabulary (spec 303).
2
+ # The provenance layer is GROUNDED IN W3C PROV-O: verification is a
3
+ # prov:Activity, its artifacts are prov:Entity, the verifier is the
4
+ # associated prov:SoftwareAgent, and delegated authority is PROV's own
5
+ # relation for it — prov:actedOnBehalfOf (delegate acts on behalf of
6
+ # principal).
7
+ #
8
+ # THE PRIVACY SPLIT, IN PROV TERMS (ADR-0010 amendment 2026-07-07):
9
+ # the PUBLIC receipt entity carries COMMITMENTS — it deliberately has NO
10
+ # prov:actedOnBehalfOf / prov:wasAttributedTo edge to a person principal
11
+ # (that edge would rebuild the correlation graph in the provenance layer).
12
+ # The agent-linkage lives ONLY on the PRIVATE detail entity (vault-resident,
13
+ # DecryptGrant-gated): there, apvr:onBehalfOf ⊑ prov:actedOnBehalfOf binds
14
+ # delegate → principal, and prov:wasAttributedTo names the principal.
15
+ # Opening the commitments (dispute path) is what re-attaches the public
16
+ # receipt to the private PROV agent graph.
17
+ #
18
+ # Consumers: spec 303 receipts (packages/verification-receipts wire shapes
19
+ # project onto these terms); any future A-box projection MUST respect
20
+ # ADR-0040 (public KB rows only from public data — i.e. only the PUBLIC
21
+ # receipt projection, never the detail).
22
+
23
+ @prefix apvr: <https://agenticprimitives.dev/ns/verification-receipt#> .
24
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
25
+ @prefix apdel: <https://agenticprimitives.dev/ns/delegation#> .
26
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
27
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
28
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
29
+ @prefix prov: <http://www.w3.org/ns/prov#> .
30
+
31
+ apvr: a owl:Ontology ;
32
+ rdfs:label "Agentic Primitives — verification-receipt provenance ontology" ;
33
+ owl:versionInfo "0.1.0" ;
34
+ rdfs:comment "Spec 303: execution-time verification as PROV-O provenance. Public receipt = commitment entity; private detail = the PROV agent-linkage, vault-resident." .
35
+
36
+ # ─── The activity ─────────────────────────────────────────────────────
37
+
38
+ apvr:VerificationActivity a owl:Class ;
39
+ rdfs:subClassOf prov:Activity ;
40
+ rdfs:label "Verification Activity" ;
41
+ rdfs:comment "One execution-time verification: signature check, transaction-parameters-vs-scope comparison, current-revocation check (the verifier duties). prov:wasAssociatedWith the verifying service agent; prov:used the delegation, invocation proof, and chain status evidence." .
42
+
43
+ # ─── The artifacts (prov:Entity) ──────────────────────────────────────
44
+
45
+ apvr:VerificationReceipt a owl:Class ;
46
+ rdfs:subClassOf prov:Entity ;
47
+ rdfs:label "Verification Receipt (public)" ;
48
+ rdfs:comment "The commitment-only public artifact (VerificationReceiptV1). prov:wasGeneratedBy a VerificationActivity; prov:wasAttributedTo the VERIFIER only (Mode-1 public service agent). Person-linked values appear ONLY as HMAC commitments — no PROV edge to the principal here, by design." .
49
+
50
+ apvr:VerificationReceiptDetail a owl:Class ;
51
+ rdfs:subClassOf prov:Entity ;
52
+ rdfs:label "Verification Receipt Detail (private)" ;
53
+ rdfs:comment "The vault-resident opening material (VerificationReceiptDetailV1). Carries the PROV agent-linkage the public receipt withholds: prov:wasAttributedTo the principal, and the delegate apvr:onBehalfOf the principal. DecryptGrant-gated; destroying it (with the receiptKey) is the erasure path." .
54
+
55
+ apvr:ChainStatusEvidence a owl:Class ;
56
+ rdfs:subClassOf prov:Entity ;
57
+ rdfs:label "Chain Status Evidence" ;
58
+ rdfs:comment "Duty-3 evidence prov:used by the activity: revocation status at (chainId, blockNumber, blockHash). Produced by the chain-state authority reader (spec 289)." .
59
+
60
+ # ─── Delegation grounding ─────────────────────────────────────────────
61
+ # First PROV declaration of the delegation artifact (the apdel namespace
62
+ # existed as a TS constant only). The EIP-712 delegation IS a prov:Entity;
63
+ # the AUTHORITY RELATION it encodes is prov:actedOnBehalfOf between the
64
+ # delegate and the principal — PROV-O's native modeling of exactly the
65
+ # "acting on behalf" problem the receipts layer exists to evidence.
66
+
67
+ apdel:Delegation a owl:Class ;
68
+ rdfs:subClassOf prov:Entity ;
69
+ rdfs:label "Delegation" ;
70
+ rdfs:comment "An EIP-712 caveat-scoped delegation (the @agenticprimitives/delegation grant). As provenance: the entity whose verification licenses an apvr:onBehalfOf (⊑ prov:actedOnBehalfOf) relation between delegate and principal." .
71
+
72
+ apdel:supersedes a owl:ObjectProperty ;
73
+ rdfs:subPropertyOf prov:wasRevisionOf ;
74
+ rdfs:domain apdel:Delegation ;
75
+ rdfs:range apdel:Delegation ;
76
+ rdfs:label "supersedes" ;
77
+ rdfs:comment "Spec 410 §1.2 — this delegation was RE-ISSUED for a credential rotation and replaces the one named: same delegator, delegate, terms and salt, validated by the account's approved-digest sentinel under the new custody epoch instead of by a key that is being retired. What it is NOT: a new grant (nothing about the authority changed), a revocation (the old object simply no longer validates), or anything a recovery produces (a recovery re-issues nothing). The record lives in the delegator's vault; the delegate fetches the head of the lineage from the delegator's agent." .
78
+
79
+ # ─── PROV property specializations ────────────────────────────────────
80
+
81
+ apvr:onBehalfOf a owl:ObjectProperty ;
82
+ rdfs:subPropertyOf prov:actedOnBehalfOf ;
83
+ rdfs:label "on behalf of" ;
84
+ rdfs:domain prov:Agent ;
85
+ rdfs:range prov:Agent ;
86
+ rdfs:comment "The delegated-authority relation the receipt attests: the delegate (session key / service agent) acted on behalf of the principal Smart Agent, under a verified delegation. PRIVATE-detail projection only for person principals (ADR-0010 amendment)." .
87
+
88
+ apvr:usedDelegation a owl:ObjectProperty ;
89
+ rdfs:subPropertyOf prov:used ;
90
+ rdfs:label "used delegation" ;
91
+ rdfs:domain apvr:VerificationActivity ;
92
+ rdfs:range apdel:Delegation ;
93
+ rdfs:comment "The activity consumed this delegation as its authority input (referenced by EIP-712 hash on the wire)." .
94
+
95
+ apvr:usedStatusEvidence a owl:ObjectProperty ;
96
+ rdfs:subPropertyOf prov:used ;
97
+ rdfs:label "used status evidence" ;
98
+ rdfs:domain apvr:VerificationActivity ;
99
+ rdfs:range apvr:ChainStatusEvidence .
100
+
101
+ apvr:opensReceipt a owl:ObjectProperty ;
102
+ rdfs:label "opens receipt" ;
103
+ rdfs:domain apvr:VerificationReceiptDetail ;
104
+ rdfs:range apvr:VerificationReceipt ;
105
+ rdfs:comment "The detail's receiptKey opens the receipt's commitments (the dispute path). Deliberately NOT a prov:wasDerivedFrom — both entities are co-generated by the activity; this is the opening relation." .
106
+
107
+ # ─── Datatype properties (wire-shape projection) ──────────────────────
108
+
109
+ apvr:decision a owl:DatatypeProperty ;
110
+ rdfs:domain apvr:VerificationReceipt ; rdfs:range xsd:string ;
111
+ rdfs:comment "'allow' | 'deny'." .
112
+
113
+ apvr:reasonCode a owl:DatatypeProperty ;
114
+ rdfs:domain apvr:VerificationReceipt ; rdfs:range xsd:string ;
115
+ rdfs:comment "Coarse public taxonomy only — never the private deny detail." .
116
+
117
+ apvr:scopeDecision a owl:DatatypeProperty ;
118
+ rdfs:domain apvr:VerificationReceipt ; rdfs:range xsd:string ;
119
+ rdfs:comment "'in_scope' | 'out_of_scope' | 'not_evaluated' — never a verdict that wasn't computed." .
120
+
121
+ apvr:verifiedAtBucket a owl:DatatypeProperty ;
122
+ rdfs:domain apvr:VerificationReceipt ; rdfs:range xsd:date ;
123
+ rdfs:comment "UTC-day bucket. The exact prov:generatedAtTime lives on the PRIVATE detail only (timestamp coarsening is part of the privacy split)." .
124
+
125
+ apvr:principalCommitment a owl:DatatypeProperty ;
126
+ rdfs:domain apvr:VerificationReceipt ; rdfs:range xsd:string ;
127
+ rdfs:comment "HMAC-SHA256(receiptKey, principal) — the public stand-in for the withheld prov:actedOnBehalfOf target." .
128
+
129
+ apvr:argsCommitment a owl:DatatypeProperty ;
130
+ rdfs:domain apvr:VerificationReceipt ; rdfs:range xsd:string .
131
+
132
+ apvr:receiptHash a owl:DatatypeProperty ;
133
+ rdfs:domain apvr:VerificationReceipt ; rdfs:range xsd:string ;
134
+ rdfs:comment "sha256 over the canonical body; the verifier's signature is over this." .
@@ -0,0 +1,173 @@
1
+ {
2
+ "$comment": "Spec 410 §10 — every manifest digest this package has published, each naming its STEWARD. `check:ontology-version-adoption` refuses a T-box change whose new manifest digest is not the latest entry here. An estate adopts one entry (AdoptedVersionV1) by governance proposal; its verifiers bind that digest.",
3
+ "entries": [
4
+ {
5
+ "manifestDigest": "0xe8670c7e790cae65539333c3544818b1830d8cbe6ced533bd1d9db9cd75eb4eb",
6
+ "steward": "richardpedersen3@gmail.com",
7
+ "publishedAt": "2026-09-20",
8
+ "note": "Spec 410: apdel:supersedes (§1), apexec:observedOutcome / providerRef / observedAt (§2), apint:Outcome and OrganizedGathering (§6), ap:RelationshipCredential (§8), governance.ttl and apexec:disputedBy (§10)."
9
+ },
10
+ {
11
+ "manifestDigest": "0x340337249219c7667b53339ad91ca2680a43a3688687112607f1033fe93a1bef",
12
+ "steward": "richardpedersen3@gmail.com",
13
+ "publishedAt": "2026-09-20",
14
+ "note": "Spec 410 §4.4: apexec:estate (the estate a run was performed in) and apexec:ReceiptAnchor with anchorDigest / anchorRegistry / anchoredByAgent / anchorTransaction (the citation beside a carried bundle)."
15
+ },
16
+ {
17
+ "manifestDigest": "0x4f3d52a359a3431a21939380916a872c27f7d011e2a315c0550e0c4017759b9b",
18
+ "steward": "richardpedersen3@gmail.com",
19
+ "publishedAt": "2026-09-20",
20
+ "note": "Spec 410 §7: payload.ttl — appay:PayloadClass and its twelve subclasses (what a write carries), replacing the undeclared apvault: placeholders in the outcome table."
21
+ },
22
+ {
23
+ "manifestDigest": "0x0bb4fe3b98756aa8b77615c2bcd3275a40bccfe202179f097f577a0db498b919",
24
+ "steward": "richardpedersen3@gmail.com",
25
+ "publishedAt": "2026-09-24",
26
+ "note": "Spec 413: content.ttl — apcnt:PublishedWork and its seven properties (a public, owner-released Library document as the discovery KB holds it; ADR-0040 amendment 2026-09-24)."
27
+ },
28
+ {
29
+ "manifestDigest": "0x6cea7241154c37b9737735a1de223b5c5f524b2d6d979d484c296a8727aa7b94",
30
+ "steward": "richardpedersen3@gmail.com",
31
+ "publishedAt": "2026-09-25",
32
+ "note": "Spec 414 A0: skos-imports.ttl (declarations of the W3C SKOS terms already in use); ap:Agent ⊑ prov:Agent (core 0.2.1 — the PROV-O trichotomy the doctrine already states, now machine-readable); apexec:ObservedOutcome ⊑ skos:Concept (execution 0.1.1). No new substrate vocabulary."
33
+ },
34
+ {
35
+ "manifestDigest": "0xf613c6161af432e08a7f8dd3e89770f7e3b28cc9ce6e28cc611c29f49b0791d5",
36
+ "steward": "richardpedersen3@gmail.com",
37
+ "publishedAt": "2026-09-25",
38
+ "note": "Spec 414 A1a: execution 0.2.0 — the trace from the door (apexec:Door, ModelInvocation, Variant, StartingState, CapabilityEngagement ⊑ prov:Influence, governedBySkill), the HarnessCapabilities SKOS scheme (17 concepts incl. judgment) and the EngagementEffect code list; prov-imports 0.1.1 declares prov:Influence. Shapes R8–R11. Door kinds include channel-mention (spec 327's @-mention turn)."
39
+ },
40
+ {
41
+ "manifestDigest": "0xfbba935d2f882e80c32710125d3ccde449a851120032062e1eab2a5310ef57a9",
42
+ "steward": "richardpedersen3@gmail.com",
43
+ "publishedAt": "2026-09-25",
44
+ "note": "Spec 414 A2: evaluation.ttl (apeval: — Metric ⊑ dqv:Metric + skos:Concept, RunMeasurement ⊑ dqv:QualityMeasurement + prov:Entity, Measuring, RunMeasures, 16 intrinsic metrics) and dqv-imports.ttl (the W3C DQV terms the measurement records emit)."
45
+ },
46
+ {
47
+ "manifestDigest": "0xd4ade4e26bee3a98017ad96a1c4825f4cf023d8ba74fedb8b87c01d03a9dfe25",
48
+ "steward": "richardpedersen3@gmail.com",
49
+ "publishedAt": "2026-09-25",
50
+ "note": "Spec 415 S0 + SEL-1: evaluation 0.2.0 — ReplaySet ⊑ dcat:Dataset, ReplayIntent, SelectionCriterion ⊑ ep-plan:Constraint, Judgment, Judge (+ judgeKind), the SelectionOutcomes scheme (8 classes, methodology v1.0 §1); execution — the skill-selection/* capability family (model · ontology · rules · judgment) and offeredCandidate / chose / rejectedNeighbour on an engagement; earl-imports.ttl + dcat-imports.ttl."
51
+ },
52
+ {
53
+ "manifestDigest": "0xf360dd93066b7ba382ff837e316ccbf47624e449d5874a6f1a070d87e8f3816f",
54
+ "steward": "richardpedersen3@gmail.com",
55
+ "publishedAt": "2026-09-25",
56
+ "note": "Spec 415 A4: evaluation 0.3.0 — ExperimentPlan ⊑ p-plan:Plan (replay set / criterion / variants / thresholds by digest, confounded flag), Experiment ⊑ prov:Activity (hasRun ⊑ prov:used, planDigest, refusedCount), CaptureWindow ⊑ prov:Activity (captureLevel, roster, estate) — the eval store and its firewall."
57
+ },
58
+ {
59
+ "manifestDigest": "0xe83f477c927e98769f4b3bbf5f7f0afb7d2224cb55f6e3b18eab6ca5b5907723",
60
+ "steward": "richardpedersen3@gmail.com",
61
+ "publishedAt": "2026-09-26",
62
+ "note": "Spec 415 A4: execution 0.3.0 — the intent typed in the domain ontology on a skill-selection engagement: apexec:inferredRequest (the class the request asks FOR), apexec:inferredAbout, apexec:OutsideDomain."
63
+ },
64
+ {
65
+ "manifestDigest": "0x64b6ec7aeb58ff10757a1d84e81c71e83d425c70347198b241ca79b9622d04ac",
66
+ "steward": "richardpedersen3@gmail.com",
67
+ "publishedAt": "2026-09-26",
68
+ "note": "Spec 415 A4: execution 0.3.1 — apexec:invocationRole gains `judge` (the model call that chose which skill, if any, handles the request), so the selection judge is a model invocation on the run's provenance like the planner and composer."
69
+ },
70
+ {
71
+ "manifestDigest": "0x3571672d4237840d725757b0f26e88514c0a500ea3dbe79fdcb0dca408bbd2e8",
72
+ "steward": "richardpedersen3@gmail.com",
73
+ "publishedAt": "2026-09-27",
74
+ "note": "Spec 418 §2: evaluation 0.4.0 — the TEST CASE as data: apeval:expectedSkill/acceptableSkill/forbiddenSkill/collidesWith, SelectionBehaviour (route · decline · clarify · several · plan), ExpectedPlanStep + planPosition/stepSkill, expectedMissing, exercisesClass, adjudication, message, inReplaySet, underStartingState + holdsClass/recentSkill/memoryTag, latestResult — so a domain projects its evaluation sets into its own graph."
75
+ },
76
+ {
77
+ "manifestDigest": "0x35a8b33b44c5203793f40191b279ade3b254fc68972e973214486a4cd66faa73",
78
+ "steward": "richardpedersen3@gmail.com",
79
+ "publishedAt": "2026-09-28",
80
+ "note": "Spec 420: principles.ttl — appr:DomainPrinciple (statement · governs · enforcedBy · violation · area), appr:ValueHolder ≡ ap:Treasury disjoint with ap:PersonAgent and ap:OrganizationAgent (assets live only in treasuries), and seventeen principles of value, household, membership, charter, room and truth."
81
+ },
82
+ {
83
+ "manifestDigest": "0x0611017398dd4e08e3307582beeacd365b8184ae4c562f2abad87aa9dce6698f",
84
+ "steward": "richardpedersen3@gmail.com",
85
+ "publishedAt": "2026-09-28",
86
+ "note": "Spec 420 §2: transition.ttl — aptr:CapabilityTransition with establishes / requires (SituationPrecondition · StandingPrecondition) / outcomeClass / evidence: a capability as a typed transition between situations, with authority as a precondition and evidence as the proof."
87
+ },
88
+ {
89
+ "manifestDigest": "0xcdd8468804dc87c1a90df91cb4c4a51d2e1af1de76572f9757cac677727f5ee2",
90
+ "steward": "richardpedersen3@gmail.com",
91
+ "publishedAt": "2026-09-28",
92
+ "note": "Spec 420 §10: principles.ttl — appr:namesResolveInContext (a bare name means the person nearest the asker in her context; several at one distance is a question; no directory hit) and appr:disclosureFollowsProximity (the record within a shared context under a grant; attestations and signals beyond it)."
93
+ },
94
+ {
95
+ "manifestDigest": "0x7d3f28f42450f88e88762eb3bd5e7731efaf7ec50e573bfbc167eccceb3e90d2",
96
+ "steward": "richardpedersen3@gmail.com",
97
+ "publishedAt": "2026-09-29",
98
+ "note": "Spec 421 §1.2: principles.ttl — appr:othersWordsAreNotHerInstruction (another person's words — a message, a post, a page, a published work — are data her agent may quote and act on where she asks, never an instruction; an act whose party or content comes only from them is not planned from them, and a write of her own records built from them is read back first). Enforced by renderContinuation and requirePersonsTurn; cited by act set 9."
99
+ },
100
+ {
101
+ "manifestDigest": "0x32e63853f05d325bd57bd0768d71665ff7ac136df8b2812444c3cddcffd3736d",
102
+ "steward": "richardpedersen3@gmail.com",
103
+ "publishedAt": "2026-10-01",
104
+ "note": "Spec 422 §3.3 / §9.3: identity.ttl — apcr:ChannelFacet (an email or phone that OPENS a home and is where it is TOLD; never a signer, a quorum slot, a step-up or a recovery signer). Vault records security.credentials (labels over apcr:CredentialFacet) and security.channels bound in vault-records.ts."
105
+ },
106
+ {
107
+ "manifestDigest": "0xc5ae33940a2f2cb4291d2ce93cbaac7ceb5cd97939265be7c4f903ee79b43127",
108
+ "steward": "richardpedersen3@gmail.com",
109
+ "publishedAt": "2026-10-02",
110
+ "note": "context.ttl: a club is an ORGANIZATION whose workspace is coordinated by a .workspace agent (ap:WorkspaceAgent ⊑ ap:ServiceAgent, aporg:coordinatedBy — a service, never an organization by kind) and governed by the club's own organization agent (aporg:Workspace aporg:governedBy <org>). Membership lives on the governing organization (org.membership); a workspace agent holds no members and names its governor in workspace.governor. A club chartered before the pairing keeps its own records."
111
+ },
112
+ {
113
+ "manifestDigest": "0xf64becd4c395e8b7f0d935ca97640a6d4b37fc087ee0073af48f3841ab3361c8",
114
+ "steward": "richardpedersen3@gmail.com",
115
+ "publishedAt": "2026-10-05",
116
+ "note": "Spec 427 W6: org.ttl 0.4.0 — a role definition may OFFER skill packs (aporg:offersSkillPack → aps:AgentArchetype), an invitation may PROPOSE role definitions (aporg:proposesRoleDefinition, spec 324 §5), and a membership's role assignment records what it was offered as words and references: roleDefinitionId, roleName, roleDescription, roleScope, accessRole, offeredSkillPack, assignedBy, assignedAt, roleSetAt. Additive. None is authority: a gate reads the delegation that materializes a role, never its name, its access word or its pack."
117
+ },
118
+ {
119
+ "manifestDigest": "0x4b78a17c2543dfb37288c0e0410caa318b76db71c3b830c64d94b25bde3f4c7c",
120
+ "steward": "richardpedersen3@gmail.com",
121
+ "publishedAt": "2026-10-10",
122
+ "note": "Spec 434 W0: inference.ttl 0.1.0 (apinf:) — ModelProfile, ModelCatalogEntry (enabled), ClientEntitlement (the gateway's own policy, never a delegation), InferenceReceipt ⊑ apix:Receipt (assertedAgent is evidence), BudgetReservation, PolicyChange ⊑ prov:Activity, EstateHeartbeat (counts, never a person); apexec:receiptRef on ModelInvocation; vault bindings inference.receipt: / profile: / model: / client: / policy-change:."
123
+ },
124
+ {
125
+ "manifestDigest": "0x8b12d8212e8c55ccdcb25a4bf1ee4450e1cd384b94c943debe38a55c1661a769",
126
+ "steward": "richardpedersen3@gmail.com",
127
+ "publishedAt": "2026-10-10",
128
+ "note": "Spec 435 W0 + 436 §5.5 + 437: context.ttl 0.2.0 (apctx:Town, apctx:Estate, ap:inEstate — derived, never authority); attestation.ttl 0.2.0 (apatt:TownStanding — the opt-in joint disclosure of a steward; no gate reads it); agent-resolution.ttl 0.2.0 (apar:McpToolManifest, apar:McpToolBundle); inference.ttl 0.2.0 (apinf:TownPulse, apinf:StandingChecklist, apinf:EstateManifest — the Town Ask's records, counts never a person). Vault bindings town.standing: · mcp.manifest: · mcp.bundle: · pulse.day: · pulse.sample: · estate.checklist: · estate.manifest:."
129
+ },
130
+ {
131
+ "manifestDigest": "0x070dc33af2c3790e9ef0764e0f549abeb55dfd2197192a1c8fe9ba5218487306",
132
+ "steward": "richardpedersen3@gmail.com",
133
+ "publishedAt": "2026-10-12",
134
+ "note": "Spec 438 W0: execution.ttl — apexec:workRef (ServiceExecution → apcoord:Endeavor; a REFERENCE, never authority, and may be absent) and apexec:EvidenceStatus with five separate SKOS schemes (coverage · consistency · origin · integrity · assessment), because collapsing them into one flag is how a record view tells a plausible falsehood; evaluation.ttl — apeval:Assessment ⊑ apeval:Judgment with supersedes / criteriaRevision / evaluatorImplementation (a judgment is stored BESIDE the run and never edits it; J1/J2/J6 of 414 §3.4); coordination.ttl — apcoord:CommitmentState scheme over the words the reducer persists (active | fulfilled | withdrawn | reallocated) plus breached | lapsed; a breach is DECLARED by the coordinator after the deadline, never derived by a timer, apcoord:AttributionPolicy and apcoord:AttributionAssessment (evidence, NEVER an entitlement). Vault bindings run.assessment: · endeavor.continuation:. Nothing here is read by any gate."
135
+ },
136
+ {
137
+ "manifestDigest": "0xfca65719b93a247119e089d220f2234b8c8a64afa3dd69831acebd4313c2eab1",
138
+ "steward": "richardpedersen3@gmail.com",
139
+ "publishedAt": "2026-10-14",
140
+ "note": "Spec 410 §4 / ap-federation 439 F1: a NEW module estate.ttl (apest:) — apest:ProjectionSubmission with projectionSet / vouchedDigest / leafBlind / leafSubject / submittedBy / submissionSource / vouchExpiresAt / retiredReason. The estate-projection package has shipped since spec 410 §4 and its records had no vocabulary at all: the roots go to public ground while the LEAVES, with their openings, are the estate's own record, and until now that record lived in a Durable Object with no class and no field meanings. apest:leafBlind is the reason the module exists — the opening is the one value that exists nowhere else, so ADR-0055 makes the record a VAULT record (federation.projection-submission:) rather than a cache, and a vault record needs a class. prov-imports.ttl also gains prov:generatedAtTime and prov:invalidatedAtTime, an ENTITY's two times as distinct from an activity's, because a retired vouch is marked and kept rather than deleted. Nothing here is read by any gate: inclusion in a projected set says a grant was live when the tree was last built, never that a party may act."
141
+ },
142
+ {
143
+ "manifestDigest": "0x4cb39006190be0e359cc32ce3f7d7ebe11b39c1160ca7e3122f50154f8e05d26",
144
+ "steward": "richardpedersen3@gmail.com",
145
+ "publishedAt": "2026-10-14",
146
+ "note": "\"Evals article gap\" W1/W2/W4/W6 — evaluation.ttl to 0.5.0, earl-imports.ttl to 0.1.1. The theme is that EVERY NUMBER SAYS WHAT IT MEANS. W1: a result that is not a verdict names its cause (apeval:FailureCause / failureCause over the closed apeval:FailureCauses — agent, grader or environment), so an estate outage is never read as an agent miss; an assertion also says which repeat it is (apeval:trialIndex) and what kind of grader asserted it (apeval:graderKind), beside EARL's own mode and assertor — which is why earl-imports gains earl:semiAuto. W2: a case may carry a solvability proof the author wrote (apeval:referenceAnswer / referenceScore), held to 1.0 under the graders and never a target to diff against. W4: a replay set says whether it is a capability or a regression suite (apeval:SuiteKind / suiteKind), so the two are never pooled into one number. W6 is the one that matters most: the outcome gold is a dul:Description (apeval:OutcomeDescription, with describesClass / describesMissing / describesAsk) and what a run delivered is a situation that satisfies it or does not (apeval:DeliveredSituation, satisfies, reachedUnder) — the same descriptions-and-situations spine the substrate's own capabilities stand on (spec 420's transitions), rather than a score with a private meaning. Authored by the Home developer; committed here with the ap-home half after typecheck and 848 package tests green (evaluation 188, orchestration 343, ontology 317). Nothing here is read by any gate: an evaluation says how well something worked, never that anyone may act."
147
+ },
148
+ {
149
+ "manifestDigest": "0xaf9c1f034bff9070f87a56cc4efbe2a017744c9876bbc37ce9591a4d29ee4a91",
150
+ "steward": "richardpedersen3@gmail.com",
151
+ "publishedAt": "2026-10-15",
152
+ "note": "spec 305 W2 / zkID alignment §4 (Z3): `apest:projectionSet` gains `live-credential` — a credential issuer's live set, anchored as the issuer's own row on EstateProjectionRegistry (first root slot, charterHash = the issuer tag). Comment-only T-box change; no class or property added or removed."
153
+ },
154
+ {
155
+ "manifestDigest": "0xdf7e54bdb37e5e0a299abb001c4e9ec41430f875c37f41f6cfde69353951f9fb",
156
+ "steward": "richardpedersen3@gmail.com",
157
+ "publishedAt": "2026-10-15",
158
+ "note": "Anonymous credentials — tbox/privacy-credential.ttl (appc:, 0.1.0), specs 304 / 305 / 442 §7.2 / 443 W5 and the zkID alignment waves Z1–Z4 as live at ap-federation's door. New classes: IssuerKeyFacet (anchoredBy an attestation; subject an org or service, never a person) · IssuerRow (the issuer's tagged live-credential root on neutral ground; its leaves are apest:ProjectionSubmission in the live-credential set; revocation = retire + re-anchor) · AnonymousCredential (⊑ apvc:VerifiableCredential; issuedUnder a facet, boundToDeviceKey) · DeviceKey (custodied; signs only under a mandate) · PairwiseAccount (what a verifier sees; NO property to the person, on purpose) · ProofRequest / PredicateProgram / Predicate (the verifier's own question, digested) · PrivatePresentation (answers · presentedUnder · provesPredicate · carriesNullifier · carriesStatus · madeUnderMandate · presents — the last three the holder's record only) · Nullifier (graded: asserted < in-circuit) · CredentialStatusPresentation (statusOf an IssuerRow at a sequence the verifier READ) · PresentationMandate (⊑ apdel:Delegation; audiences · predicate digests · facets · maxPresentations) · PresentationRelease (⊑ prov:Activity; one judgement per device-key signature) · VerifierPolicy (what a door asks and accepts, incl. nullifierWindowSeconds and verifierPlacement) · PredicateAdmissionEvidence (the predicate held, beside an apix:AdmissionReceipt; evidence, never authority). Codelists: presentationSuite, issuerKeySuite, nullifierGrade, predicateOp, verifierPlacement, proofGrade (identity · standing · predicate). Doctrine: proof is evidence, the mandate is authority, the receipt binds the two; no claim value and no link to the person anywhere in the vocabulary."
159
+ },
160
+ {
161
+ "manifestDigest": "0xf5494ddf4f9001f02919cc56d6ab6dd71d4e5a1b5b7efcaa68031f5d21680881",
162
+ "steward": "richardpedersen3@gmail.com",
163
+ "publishedAt": "2026-10-15",
164
+ "note": "apvc: reconciled — five T-box modules (agreement, attestation, fulfillment, payment, privacy-credential) and mappings/spine-standards.ttl bound the prefix to /ns/credential# (apcr's namespace, the CONTROL credentials) while NS.apvc, context.jsonld and the collaboration crosswalk said /ns/verifiable-credential#; and no module declared apvc:VerifiableCredential at all. Now one IRI (verifiable-credential#) everywhere and the class declared once in attestation.ttl (⊑ prov:Entity; owl:equivalentClass w3cvc:VerifiableCredential in the mapping). Every subClassOf apvc:VerifiableCredential axiom in the spine now points at a declared class. No term renamed; the prefix moved."
165
+ },
166
+ {
167
+ "manifestDigest": "0xf1f4359aba735b1cae1ac5f4439d4bd71460a9b5b6a89aed40481e80346f5730",
168
+ "steward": "richardpedersen3@gmail.com",
169
+ "publishedAt": "2026-10-15",
170
+ "note": "spec 442 §11 W0 — tbox/identity.ttl gains the four terms for a person's agent at a company's door (ap:, the core namespace; prov: prefix added): ClientKeyBinding (a Smart Agent's signed statement that one JWK may PRESENT for it at external doors under one custody epoch — a credential, not a delegation; atl:clientKeys on chain) · PairwiseSubject (what one company calls the person: HKDF over a vault secret salted by the issuer; no property to the person, as appc:PairwiseAccount) · ExternalOperation (PAP operation / ACP session / UCP checkout seen from our side — an INTENT whose digest a mandate binds; never an approval) · ExternalAccountLink (the account at one company and the credentials it left behind; a vault record the Security section lists and revokes). Properties: clientId, jwkThumbprint, jwsAlgorithm, boundUnderCustodyEpoch, bindingNotBefore/After, pairwiseIssuer, pairwiseSubjectDigest, operationAuthority, operationId, operationRevision, termsDigest, accountGrantedAt/ExpiresAt/LastUsedAt, grantedScope. Bound in vault-records.ts: identity.client-key-binding: · identity.pairwise-secret · identity.external-account-link:. Doctrine: approval is a signature, never an assertion; the person is never the client_id; protocol vocabulary (poppy.json, DPoP, Idempotency-Key) stays in ap-federation (spec 443). Nothing here is read by any verifier."
171
+ }
172
+ ]
173
+ }