@agenticprimitives/ontology 1.0.0-alpha.22 → 1.0.0-alpha.24

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 (74) hide show
  1. package/README.md +11 -0
  2. package/cbox/card-projection-shapes.shacl.ttl +216 -0
  3. package/cbox/controlled-vocabularies.ttl +172 -4
  4. package/cbox/naming-registry-shapes.shacl.ttl +272 -0
  5. package/cbox/org-team-shapes.shacl.ttl +184 -0
  6. package/cbox/registry-vocabulary.ttl +86 -0
  7. package/cbox/run-provenance-shapes.shacl.ttl +172 -0
  8. package/context.jsonld +7 -1
  9. package/dist/arg-types.d.ts +60 -0
  10. package/dist/arg-types.d.ts.map +1 -0
  11. package/dist/arg-types.js +143 -0
  12. package/dist/arg-types.js.map +1 -0
  13. package/dist/artifacts.d.ts +4 -2
  14. package/dist/artifacts.d.ts.map +1 -1
  15. package/dist/artifacts.js +22 -0
  16. package/dist/artifacts.js.map +1 -1
  17. package/dist/contact-fields.d.ts +28 -0
  18. package/dist/contact-fields.d.ts.map +1 -0
  19. package/dist/contact-fields.js +38 -0
  20. package/dist/contact-fields.js.map +1 -0
  21. package/dist/decisions.d.ts +69 -0
  22. package/dist/decisions.d.ts.map +1 -0
  23. package/dist/decisions.js +98 -0
  24. package/dist/decisions.js.map +1 -0
  25. package/dist/household.d.ts +19 -0
  26. package/dist/household.d.ts.map +1 -0
  27. package/dist/household.js +41 -0
  28. package/dist/household.js.map +1 -0
  29. package/dist/index.d.ts +230 -0
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +275 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/party-roles.d.ts +106 -0
  34. package/dist/party-roles.d.ts.map +1 -0
  35. package/dist/party-roles.js +305 -0
  36. package/dist/party-roles.js.map +1 -0
  37. package/dist/plan-shapes.d.ts +18 -0
  38. package/dist/plan-shapes.d.ts.map +1 -0
  39. package/dist/plan-shapes.js +38 -0
  40. package/dist/plan-shapes.js.map +1 -0
  41. package/dist/relations.d.ts +44 -0
  42. package/dist/relations.d.ts.map +1 -0
  43. package/dist/relations.js +104 -0
  44. package/dist/relations.js.map +1 -0
  45. package/dist/run-provenance-context.d.ts +211 -0
  46. package/dist/run-provenance-context.d.ts.map +1 -0
  47. package/dist/run-provenance-context.js +219 -0
  48. package/dist/run-provenance-context.js.map +1 -0
  49. package/dist/vault-records.d.ts +74 -0
  50. package/dist/vault-records.d.ts.map +1 -0
  51. package/dist/vault-records.js +330 -0
  52. package/dist/vault-records.js.map +1 -0
  53. package/mappings/agent-discovery-standards.ttl +24 -3
  54. package/mappings/collaboration-crosswalk-organization.ttl +22 -0
  55. package/mappings/collaboration-crosswalk-skills.ttl +5 -0
  56. package/package.json +4 -2
  57. package/run-provenance.jsonld +106 -0
  58. package/tbox/actor-context.ttl +11 -0
  59. package/tbox/agent-resolution.ttl +6 -6
  60. package/tbox/card-projection.ttl +350 -0
  61. package/tbox/contact.ttl +61 -0
  62. package/tbox/context.ttl +114 -0
  63. package/tbox/coordination.ttl +17 -0
  64. package/tbox/core.ttl +232 -12
  65. package/tbox/execution.ttl +168 -0
  66. package/tbox/household.ttl +142 -0
  67. package/tbox/interaction.ttl +13 -0
  68. package/tbox/naming.ttl +114 -0
  69. package/tbox/org.ttl +188 -4
  70. package/tbox/profile.ttl +7 -0
  71. package/tbox/prov-imports.ttl +65 -0
  72. package/tbox/registry.ttl +159 -4
  73. package/tbox/skills.ttl +62 -0
  74. package/tbox/values.ttl +81 -0
@@ -0,0 +1,114 @@
1
+ # T-box — typed agent naming (spec 346 §3, §11; ADR-0061).
2
+ #
3
+ # The name class itself (apnam:NameFacet ⊑ ap:Facet — a resolvable name that points AT an Agent and is
4
+ # never the sole authority, ADR-0006) stays in tbox/identity.ttl with the other facets. This module adds
5
+ # what typed naming needs on top of it:
6
+ #
7
+ # apnam:tld the canonical suffix — NAMES the derived type (.me .org .team .svc
8
+ # .workspace .treasury .registry); a CLAIM checked against the SA's
9
+ # on-chain ap:agentType record, never authority and never structure
10
+ # apnam:ContextualNameIssuance a name issued BY a context (org / team / workspace agent) in its own
11
+ # namespace, current only while its basis delegation is live
12
+ # apnam:ContextualAgentReference a resolved `x@ctx` — a REFERENCE composing the canonical subject
13
+ # with an actor context, a role assignment and the live delegation;
14
+ # never an agent, never a second identity
15
+ #
16
+ # What a suffix is NOT (ADR-0061 §3): the inheritance structure, a root, a role, a technology. Resolution
17
+ # maps suffix → derived type → root; `rpedersen.me@richcanvas.org` still resolves to a Person — the
18
+ # `@richcanvas.org` is context, not classification.
19
+
20
+ @prefix apnam: <https://agenticprimitives.dev/ns/naming#> .
21
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
22
+ @prefix apdel: <https://agenticprimitives.dev/ns/delegation#> .
23
+ @prefix apactor: <https://agenticprimitives.dev/ns/actor#> .
24
+ @prefix aporg: <https://agenticprimitives.dev/ns/org#> .
25
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
26
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
27
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
28
+ @prefix prov: <http://www.w3.org/ns/prov#> .
29
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
30
+
31
+ <https://agenticprimitives.dev/ns/naming> a owl:Ontology ;
32
+ rdfs:label "Agentic Primitives — typed agent naming (spec 346)" ;
33
+ owl:versionInfo "0.1.0" ;
34
+ rdfs:comment "Typed suffixes, contextual name issuance, contextual references. A name is a facet (ADR-0006/ADR-0010): decorative, resolvable, replaceable — never the identifier and never authority." .
35
+
36
+ # ─── The typed suffix ────────────────────────────────────────────────────────
37
+
38
+ apnam:tld a owl:DatatypeProperty ;
39
+ rdfs:domain apnam:NameFacet ;
40
+ rdfs:range xsd:string ;
41
+ rdfs:label "tld" ;
42
+ rdfs:comment "The canonical suffix; names the derived type — derivedTypeForTld. NEVER authority. Values are the prefLabels of apnam:tldScheme (cbox): me org team svc workspace treasury registry; 'ws' is an alias of 'workspace', never stored. Legacy roots (.agent, .impact) carry no tld and are exempt from apnam:TypedAgentNameShape." .
43
+
44
+ apnam:namesDerivedType a owl:ObjectProperty ;
45
+ rdfs:domain skos:Concept ;
46
+ rdfs:range skos:Concept ;
47
+ rdfs:label "namesDerivedType" ;
48
+ rdfs:comment "apnam:tldScheme concept → ap:agentTypeScheme concept: the suffix→derived-type map the resolver applies and TypedAgentNameShape checks a name's target against. Fixed data, not a lookup any caller may widen." .
49
+
50
+ # ─── Contextual issuance ─────────────────────────────────────────────────────
51
+
52
+ apnam:ContextualNameIssuance a owl:Class ;
53
+ rdfs:subClassOf prov:Entity ;
54
+ rdfs:label "ContextualNameIssuance" ;
55
+ rdfs:comment "A name issued by a context (org/team/workspace agent) in its namespace: kind scoped | reference; basis = a membership+delegation, an operatedBy delegation, or a charter mandate. Vault record; anchored on chain iff listing public." .
56
+
57
+ apnam:issuedBy a owl:ObjectProperty ;
58
+ rdfs:domain apnam:ContextualNameIssuance ;
59
+ rdfs:range ap:Agent ;
60
+ rdfs:label "issuedBy" ;
61
+ rdfs:comment "The context that issued the name — an Organization (incl. Team) or a WorkspaceAgent (apnam:ContextualNameIssuanceShape)." .
62
+
63
+ apnam:issuedFor a owl:ObjectProperty ;
64
+ rdfs:domain apnam:ContextualNameIssuance ;
65
+ rdfs:range ap:Agent ;
66
+ rdfs:label "issuedFor" ;
67
+ rdfs:comment "The canonical subject the contextual name refers to. Its own canonical name is untouched by the issuance." .
68
+
69
+ apnam:issuanceBasis a owl:ObjectProperty ;
70
+ rdfs:domain apnam:ContextualNameIssuance ;
71
+ rdfs:range apdel:Delegation ;
72
+ rdfs:label "issuanceBasis" ;
73
+ rdfs:comment "The delegation whose liveness makes the name CURRENT. A reference, never a grant." .
74
+
75
+ apnam:issuanceKind a owl:DatatypeProperty ;
76
+ rdfs:domain apnam:ContextualNameIssuance ;
77
+ rdfs:range xsd:string ;
78
+ rdfs:label "issuanceKind" ;
79
+ rdfs:comment "scoped | reference (spec 346 §3.2 — same syntax, one meaning). A 'reference' issuance names ANOTHER agent in the issuer's namespace, so issuedFor must differ from issuedBy." .
80
+
81
+ apnam:issuedName a owl:DatatypeProperty ;
82
+ rdfs:domain apnam:ContextualNameIssuance ;
83
+ rdfs:range xsd:string ;
84
+ rdfs:label "issuedName" ;
85
+ rdfs:comment "The full contextual form as issued (e.g. rpedersen.me@richcanvas.org)." .
86
+
87
+ # ─── The resolved contextual reference ───────────────────────────────────────
88
+
89
+ apnam:ContextualAgentReference a owl:Class ;
90
+ rdfs:subClassOf prov:Entity ;
91
+ rdfs:label "ContextualAgentReference" ;
92
+ rdfs:comment "A resolved x@ctx: canonical subject + apactor:ActorContext + aporg:RoleAssignment + the live delegation. A reference — never an agent, never an identity." .
93
+
94
+ apnam:referenceSubject a owl:ObjectProperty ;
95
+ rdfs:domain apnam:ContextualAgentReference ;
96
+ rdfs:range ap:Agent ;
97
+ rdfs:label "referenceSubject" ;
98
+ rdfs:comment "The canonical Smart Agent the reference resolves to (ADR-0010)." .
99
+
100
+ apnam:referenceContext a owl:ObjectProperty ;
101
+ rdfs:domain apnam:ContextualAgentReference ;
102
+ rdfs:range apactor:ActorContext ;
103
+ rdfs:label "referenceContext" .
104
+
105
+ apnam:referenceRoleAssignment a owl:ObjectProperty ;
106
+ rdfs:domain apnam:ContextualAgentReference ;
107
+ rdfs:range aporg:RoleAssignment ;
108
+ rdfs:label "referenceRoleAssignment" .
109
+
110
+ apnam:referenceBasis a owl:ObjectProperty ;
111
+ rdfs:domain apnam:ContextualAgentReference ;
112
+ rdfs:range apdel:Delegation ;
113
+ rdfs:label "referenceBasis" ;
114
+ rdfs:comment "The live delegation the reference resolves through. Revoke it and the reference deactivates; the canonical name is untouched (ADR-0061 §6)." .
package/tbox/org.ttl CHANGED
@@ -1,5 +1,7 @@
1
- # T-box — organization membership, roles, enrollment (spec 324 §4–§8).
2
- # OrganizationMembership is a Situation — not a delegation, not a directory listing.
1
+ # T-box — organization membership, roles, enrollment (spec 324 §4–§8); team affiliation, workspace,
2
+ # responsibility (spec 344 §4.2). OrganizationMembership is a Situation — not a delegation, not a
3
+ # directory listing. A Workspace is an ENTITY (a governed coordination plane) — never an agent, never a
4
+ # tenant; its agentive face is the ap:WorkspaceAgent it is coordinatedBy (ADR-0061 §4).
3
5
 
4
6
  @prefix aporg: <https://agenticprimitives.dev/ns/org#> .
5
7
  @prefix apsit: <https://agenticprimitives.dev/ns/situation#> .
@@ -7,6 +9,8 @@
7
9
  @prefix apdel: <https://agenticprimitives.dev/ns/delegation#> .
8
10
  @prefix apent: <https://agenticprimitives.dev/ns/entitlement#> .
9
11
  @prefix apint: <https://agenticprimitives.dev/ns/intent#> .
12
+ @prefix apmsg: <https://agenticprimitives.dev/ns/messaging#> .
13
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
10
14
  @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
11
15
  @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
12
16
  @prefix owl: <http://www.w3.org/2002/07/owl#> .
@@ -15,8 +19,8 @@
15
19
 
16
20
  aporg: a owl:Ontology ;
17
21
  rdfs:label "Agentic Primitives — organization ontology" ;
18
- owl:versionInfo "0.2.0" ;
19
- rdfs:comment "Membership, roles, enrollment instruments (spec 324). DirectoryListing remains in tbox/messaging.ttl for wire compat." .
22
+ owl:versionInfo "0.3.0" ;
23
+ rdfs:comment "Membership, roles, enrollment instruments (spec 324); team affiliation, workspaces (the governed coordination plane) and responsibilities (spec 344 §4.2). DirectoryListing remains in tbox/messaging.ttl for wire compat." .
20
24
 
21
25
  # ─── Membership ───────────────────────────────────────────────────────
22
26
 
@@ -120,3 +124,183 @@ aporg:AdmissionExclusion a owl:Class ;
120
124
  aporg:expressesJoinIntent a owl:ObjectProperty ;
121
125
  rdfs:domain aporg:MembershipApplication ; rdfs:range apint:JoinOrganizationIntent ;
122
126
  rdfs:label "expressesJoinIntent" .
127
+
128
+ # ═══ spec 344 §4.2 — team affiliation, workspaces, responsibility ═════════
129
+
130
+ # ─── Team affiliation (§1.2) ──────────────────────────────────────────
131
+
132
+ aporg:TeamAffiliation a owl:Class ;
133
+ rdfs:subClassOf apsit:Situation ;
134
+ rdfs:comment """Private-by-default Situation: exactly one teamAgent + one affiliatedOrganization +
135
+ one affiliationKind under signed AffiliationDecision evidence. Informational — never authority.
136
+ Cross-org teams hold several 'chartered' affiliations (joint charter) or one from an Alliance.""" .
137
+
138
+ aporg:teamAgent a owl:ObjectProperty ;
139
+ rdfs:domain aporg:TeamAffiliation ; rdfs:range ap:TeamAgent .
140
+ aporg:affiliatedOrganization a owl:ObjectProperty ;
141
+ rdfs:domain aporg:TeamAffiliation ; rdfs:range ap:OrganizationAgent .
142
+ aporg:affiliationKind a owl:ObjectProperty ;
143
+ rdfs:domain aporg:TeamAffiliation ; rdfs:range skos:Concept ;
144
+ rdfs:comment "aporg:affiliationKindScheme — chartered | engaged (cbox)." .
145
+ aporg:mandatedByDelegation a owl:ObjectProperty ;
146
+ rdfs:domain aporg:TeamAffiliation ; rdfs:range apdel:Delegation ;
147
+ rdfs:comment """The chartering org's mandate — the delegation org→team that MATERIALIZES what the
148
+ affiliation only evidences. The gate verifies the delegation, never this record.""" .
149
+
150
+ aporg:AffiliationProposal a owl:Class ; rdfs:subClassOf prov:Entity .
151
+ aporg:AffiliationDecision a owl:Class ; rdfs:subClassOf prov:Entity ;
152
+ rdfs:comment """Signed accept/reject. Both stewards for 'engaged' and post-hoc 'chartered'; the
153
+ chartering steward alone when minted by the team-create ceremony itself.""" .
154
+ aporg:AffiliationTermination a owl:Class ; rdfs:subClassOf prov:Entity ;
155
+ rdfs:comment "Either side, unilaterally. Ends currency; revokes nothing." .
156
+
157
+ aporg:charteredBy a owl:ObjectProperty ;
158
+ rdfs:domain ap:TeamAgent ; rdfs:range ap:OrganizationAgent ;
159
+ rdfs:comment "DERIVED: current 'chartered' TeamAffiliation exists. Never asserted globally." .
160
+ aporg:engagedWith a owl:ObjectProperty ;
161
+ rdfs:domain ap:TeamAgent ; rdfs:range ap:OrganizationAgent ;
162
+ rdfs:comment "DERIVED: current 'engaged' TeamAffiliation exists." .
163
+
164
+ # ─── Boundary cases (§1.1, §1.4) ──────────────────────────────────────
165
+
166
+ aporg:WorkingGroup a owl:Class ; rdfs:subClassOf prov:Entity ;
167
+ rdfs:comment """An informal named collection of agents — NOT an agent: no custody, no authority.
168
+ Promotable by chartering a TeamAgent (a creation ceremony, never a mutation).""" .
169
+
170
+ aporg:InterorganizationalCollaborationArrangement a owl:Class ; rdfs:subClassOf prov:Entity ;
171
+ rdfs:comment """A loose partnership among organizations. Becomes ap:AllianceAgent only when real
172
+ joint authority is delegated.""" .
173
+
174
+ # ─── Workspace: the coordination plane (§2) ───────────────────────────
175
+
176
+ aporg:Workspace a owl:Class ; rdfs:subClassOf prov:Entity ;
177
+ rdfs:comment """A persistent, governed, purpose-bound coordination plane binding participant
178
+ agents, roles, responsibilities, policies, app/agent/resource bindings and representations.
179
+ NOT an agent, NOT a tenant: no custody, no address, no authority of its own. Governance
180
+ inherited from its governor; records in the governor's vault (ADR-0055). Several apps may
181
+ bind to ONE workspace — none of them recreates the org, team, roles, or domain context.""" .
182
+
183
+ aporg:governedBy a owl:ObjectProperty ;
184
+ rdfs:domain aporg:Workspace ; rdfs:range ap:OrganizationAgent ;
185
+ rdfs:comment """Exactly one governing agent (org, team, or alliance). Source of every policy the
186
+ workspace has. Switching workspace = switching authority/policy/disclosure/audit context.""" .
187
+ aporg:workspacePurpose a owl:DatatypeProperty ;
188
+ rdfs:domain aporg:Workspace ; rdfs:range xsd:string .
189
+ aporg:workspaceProfile a owl:ObjectProperty ;
190
+ rdfs:domain aporg:Workspace ; rdfs:range skos:Concept ;
191
+ rdfs:comment """aporg:workspaceProfileScheme. One primary profile; apps declare which profiles
192
+ they support and the catalog matches on it.""" .
193
+ aporg:focusedOn a owl:ObjectProperty ;
194
+ rdfs:domain aporg:Workspace ;
195
+ rdfs:comment """What the collaboration is ABOUT (a field, an initiative — domain profiles narrow
196
+ the range). The focus is not the workspace (review §12: a community or engagement within a
197
+ workspace is not another workspace).""" .
198
+ aporg:workspaceParticipationPolicy a owl:ObjectProperty ;
199
+ rdfs:domain aporg:Workspace ; rdfs:range skos:Concept ;
200
+ rdfs:comment """open (derived from the governor's membership — never asserted) | restricted
201
+ (asserted WorkspaceParticipation records).""" .
202
+
203
+ # Agents layer (§2.1)
204
+ aporg:WorkspaceParticipation a owl:Class ; rdfs:subClassOf apsit:Situation ;
205
+ rdfs:comment """Asserted participation in a RESTRICTED workspace: exactly one participantAgent
206
+ (ANY agent kind) + one inWorkspace, by invitation → accept. An org/team participant projects
207
+ its people in through its own live roster — never copied (the 341 §5.1c resolution pattern;
208
+ Gather27's GatherHost is this record).""" .
209
+ aporg:participantAgent a owl:ObjectProperty ;
210
+ rdfs:domain aporg:WorkspaceParticipation ; rdfs:range ap:Agent .
211
+ aporg:inWorkspace a owl:ObjectProperty ;
212
+ rdfs:domain aporg:WorkspaceParticipation ; rdfs:range aporg:Workspace .
213
+
214
+ aporg:coordinatedBy a owl:ObjectProperty ;
215
+ rdfs:domain aporg:Workspace ; rdfs:range ap:WorkspaceAgent ;
216
+ rdfs:comment """The ap:WorkspaceAgent: a service-kind SA the GOVERNOR delegates to (the
217
+ spec-327 assistant pattern, workspace-scoped). Provides the workspace's A2A/MCP surface —
218
+ projection publishing, notifications, audit. NEVER an independent source of authority:
219
+ revoke the governor's delegation and it is inert. Range narrowed from ap:ServiceAgent to
220
+ ap:WorkspaceAgent by spec 346 §2.2 — the workspace agent is the derived type the
221
+ '.workspace' suffix names.""" .
222
+
223
+ aporg:coordinatesWorkspace a owl:ObjectProperty ;
224
+ rdfs:domain ap:WorkspaceAgent ; rdfs:range aporg:Workspace ;
225
+ owl:inverseOf aporg:coordinatedBy ;
226
+ rdfs:comment """The workspace context this workspace agent custodies and serves. At most one. The
227
+ NAME binds to the workspace agent SA (the workspace's agentive face); the context is a governed
228
+ Entity in the governor's vault (spec 344 §5) and is never itself named.""" .
229
+
230
+ aporg:boundAgent a owl:ObjectProperty ;
231
+ rdfs:domain aporg:Workspace ; rdfs:range ap:Agent ;
232
+ rdfs:comment """A specialized domain agent bound into the workspace. The binding must reference
233
+ which principal it represents (mandate), which responsibility it supports (assignment), and
234
+ which data it may access (grants) — three references, never new authority.""" .
235
+
236
+ # Entities layer (§2.2)
237
+ aporg:WorkspaceRepresentation a owl:Class ; rdfs:subClassOf prov:Entity ;
238
+ rdfs:comment """A workspace-scoped, policy-bounded PROJECTION of a domain entity whose
239
+ authoritative record stays in its custodian's vault. Conventional SaaS: record belongs to
240
+ tenant. Here: entity exists independently; custodian controls the record; the workspace
241
+ receives an authorized representation that can expire or be revoked without the record ever
242
+ moving. Crosswalk: at:DataProjection under an at:DataCovenant; decision record precedent:
243
+ eng:ProjectionManifest (field-domain). NORMATIVE FLOOR: absence of a policy is never public —
244
+ an unclassified representation fails closed.""" .
245
+
246
+ aporg:represents a owl:ObjectProperty ;
247
+ rdfs:domain aporg:WorkspaceRepresentation ;
248
+ rdfs:comment "The domain entity represented. Range open — domain profiles narrow it." .
249
+ aporg:representationOfWorkspace a owl:ObjectProperty ;
250
+ rdfs:domain aporg:WorkspaceRepresentation ; rdfs:range aporg:Workspace .
251
+ aporg:sourceCustodian a owl:ObjectProperty ;
252
+ rdfs:domain aporg:WorkspaceRepresentation ; rdfs:range ap:Agent ;
253
+ rdfs:comment "Whose vault holds the authoritative record. Custody NEVER moves." .
254
+ aporg:localLabel a owl:DatatypeProperty ;
255
+ rdfs:domain aporg:WorkspaceRepresentation ; rdfs:range xsd:string ;
256
+ rdfs:comment "How THIS workspace knows the entity — the org-local-name pattern generalized." .
257
+ aporg:sharingPolicy a owl:ObjectProperty ;
258
+ rdfs:domain aporg:WorkspaceRepresentation ; rdfs:range skos:Concept ;
259
+ rdfs:comment """Disclosure bound on the representation (sensitivity / precision caps — domain
260
+ packs supply the scheme, e.g. eng: sensitivity L0–L5 + gc: location precision).""" .
261
+ aporg:representationValidUntil a owl:DatatypeProperty ;
262
+ rdfs:domain aporg:WorkspaceRepresentation ; rdfs:range xsd:dateTime .
263
+
264
+ aporg:adoptedResource a owl:ObjectProperty ;
265
+ rdfs:domain aporg:Workspace ;
266
+ rdfs:comment """A versioned external resource the workspace adopts for its purpose (the resource
267
+ fabric: provider publishes → HOME discovers/licenses → WORKSPACE adopts a version → APP
268
+ renders). A representation whose source is a provider, not a participant vault.""" .
269
+
270
+ # App bindings (§2.4)
271
+ aporg:boundApp a owl:ObjectProperty ;
272
+ rdfs:domain aporg:Workspace ;
273
+ rdfs:comment """An application (OIDC client) bound into this workspace. PROJECTION ONLY — the
274
+ app's reads still ride its own per-app read grants (spec 341 §4.3); binding grants nothing,
275
+ unbinding revokes nothing but presence. Several apps per workspace is the point (§2.4).""" .
276
+
277
+ apmsg:hostedInWorkspace a owl:ObjectProperty ;
278
+ rdfs:domain apmsg:DiscussionTopic ; rdfs:range aporg:Workspace ;
279
+ rdfs:comment """A topic MAY be hosted in one workspace of the same governor. Absent = the
280
+ org-wide board (today's behavior, unchanged).""" .
281
+
282
+ # ─── Responsibility (§1.5) ────────────────────────────────────────────
283
+
284
+ aporg:ResponsibilityAssignment a owl:Class ; rdfs:subClassOf apsit:Situation ;
285
+ rdfs:comment """A time-scoped, visible commitment: an agent is expected to care for an outcome or
286
+ resource within a scope, under named authority and accountability. NEVER an authorization.
287
+ More durable than an app task: one responsibility → many work items → many apps; survives
288
+ app replacement. Five questions, five concepts (spec 344 §1.5).""" .
289
+
290
+ aporg:responsibleAgent a owl:ObjectProperty ;
291
+ rdfs:domain aporg:ResponsibilityAssignment ; rdfs:range ap:Agent .
292
+ aporg:accountableAgent a owl:ObjectProperty ;
293
+ rdfs:domain aporg:ResponsibilityAssignment ; rdfs:range ap:Agent ;
294
+ rdfs:comment "Who answers for the result. MAY differ from responsibleAgent." .
295
+ aporg:responsibilityKind a owl:ObjectProperty ;
296
+ rdfs:domain aporg:ResponsibilityAssignment ; rdfs:range skos:Concept .
297
+ aporg:responsibilityScope a owl:ObjectProperty ;
298
+ rdfs:domain aporg:ResponsibilityAssignment ;
299
+ rdfs:comment "A workspace, team, engagement, record family — domain profiles narrow the range." .
300
+ aporg:underMandate a owl:ObjectProperty ;
301
+ rdfs:domain aporg:ResponsibilityAssignment ; rdfs:range apdel:Delegation ;
302
+ rdfs:comment "The authority the responsible agent exercises — a reference, not a grant." .
303
+ aporg:expectedOutcome a owl:DatatypeProperty ;
304
+ rdfs:domain aporg:ResponsibilityAssignment ; rdfs:range xsd:string .
305
+ aporg:reviewCadenceDays a owl:DatatypeProperty ;
306
+ rdfs:domain aporg:ResponsibilityAssignment ; rdfs:range xsd:integer .
package/tbox/profile.ttl CHANGED
@@ -91,6 +91,13 @@ approf:focusAreas a owl:DatatypeProperty ;
91
91
  apctx:classifiedBy apctx:KnowledgeDomain ;
92
92
  rdfs:comment "atl:focusAreas (facet-registries G4). VALUE SPACE: comma-separated subject-domain labels, lowercase-hyphenated, e.g. 'modelo-720,forced-heirship'. Maps to the apctx:KnowledgeDomain facet so it stays ORTHOGONAL to capability identity — a focus area is a subject, never a declared capability (ADR-0051). RANKING ROLE: fitScore boost ONLY, capped hardest of the three. It must NEVER become a hard filter: a focus area is an emphasis, not a boundary, and an agent that has not published one is UNKNOWN, not absent." .
93
93
 
94
+ # ─── spec 347 §8.5 — how to obtain and run the agent's software ──────────────
95
+
96
+ approf:distribution a owl:DatatypeProperty ;
97
+ rdfs:domain approf:AgentProfile ; rdfs:range xsd:string ;
98
+ rdfs:label "distribution" ;
99
+ rdfs:comment "atl:distribution (spec 347 §8.5; docs/architecture/ard-acp-crosswalk.md §2–§3). A JSON literal per agent-profile `AgentDistributionV1` (JCS-canonical): `acp?` (Agent Client Protocol conformance — the eligibility flag for a hosted ACP registry.json projection), `version?` (implementation semver), `npx`/`uvx` { package, args?, env? }, `binary` { <platform>: { archive, cmd, sha256?, args?, env? } } with the six ACP platform keys. Field names mirror the ACP registry agent.schema.json so a registry file is a COPY of this fact, never a translation. SA-keyed (survives a rename, exists for nameless agents), written only by the agent itself. PUBLIC and on-chain-derivable (ADR-0040): the KB carries the string exactly as written on chain; a consumer parses it fail-closed (an unparsable literal is `null`, never a guess — ADR-0013). It describes distribution ONLY — it is not a capability claim, not a trust signal, and grants nothing." .
100
+
94
101
  # ─── The value-space anchors these three point at ───────────────────────────
95
102
 
96
103
  approf:regionVocabulary a owl:AnnotationProperty ;
@@ -0,0 +1,65 @@
1
+ # T-box — the W3C PROV-O terms this substrate EMITS, declared (spec 389).
2
+ #
3
+ # ── Why a file that declares someone else's vocabulary ───────────────────────────────────────────
4
+ # PROV-O is a W3C Recommendation and its terms mean what the Recommendation says — nothing here
5
+ # redefines one. They are declared here for the same reason plan.ttl declares the P-Plan terms it
6
+ # uses: the build's ontology-bindings gate (`check:ontology-bindings`) and the SHACL shapes need every
7
+ # IRI a record binds to to be DECLARED somewhere in tbox/, or they cannot tell an imported standard
8
+ # term from a typo. A run's provenance record (`run.provenance:<runRef>`) binds its fields to these
9
+ # by IRI (`src/vault-records.ts`), and the run-provenance JSON-LD context maps its terms onto them.
10
+ #
11
+ # The list is exactly what the provenance projector emits (packages/provenance): the PROV core
12
+ # classes, the qualified association, and the direct relations. Nothing is declared that nothing
13
+ # emits — a term added here should be a term a record carries.
14
+ #
15
+ # Domains and ranges are omitted: PROV-O's own axioms govern, and restating them here would let the
16
+ # two drift.
17
+
18
+ @prefix prov: <http://www.w3.org/ns/prov#> .
19
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
20
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
21
+
22
+ <https://agenticprimitives.dev/ns/prov-imports> a owl:Ontology ;
23
+ rdfs:label "Agentic Primitives — PROV-O terms in use" ;
24
+ owl:versionInfo "0.1.0" ;
25
+ rdfs:comment "Declarations of the W3C PROV-O terms the substrate's provenance records carry, so bindings and shapes can target them. Spec 389; spec 316 §6." .
26
+
27
+ # ═══ Core classes ═══
28
+
29
+ prov:Entity a owl:Class ; rdfs:label "Entity (PROV-O)" .
30
+ prov:Activity a owl:Class ; rdfs:label "Activity (PROV-O)" .
31
+ prov:Agent a owl:Class ; rdfs:label "Agent (PROV-O)" .
32
+ prov:SoftwareAgent a owl:Class ; rdfs:subClassOf prov:Agent ; rdfs:label "SoftwareAgent (PROV-O)" .
33
+ prov:Person a owl:Class ; rdfs:subClassOf prov:Agent ; rdfs:label "Person (PROV-O)" .
34
+ prov:Organization a owl:Class ; rdfs:subClassOf prov:Agent ; rdfs:label "Organization (PROV-O)" .
35
+ prov:Bundle a owl:Class ; rdfs:subClassOf prov:Entity ; rdfs:label "Bundle (PROV-O)" ;
36
+ rdfs:comment "A named set of provenance descriptions. One harness run = one bundle (an ep-plan:ExecutionTraceBundle, plan.ttl); a routed run's bundle prov:wasInformedBy the sender's." .
37
+ prov:Plan a owl:Class ; rdfs:subClassOf prov:Entity ; rdfs:label "Plan (PROV-O)" .
38
+ prov:Role a owl:Class ; rdfs:label "Role (PROV-O)" .
39
+ prov:Association a owl:Class ; rdfs:label "Association (PROV-O)" ;
40
+ rdfs:comment "The qualified form of wasAssociatedWith: which agent, under which plan (prov:hadPlan), in which capacity (prov:hadRole). A run carries two — the runtime under the run's ExecutionPlan, the agent under its playbook." .
41
+
42
+ # ═══ Direct relations ═══
43
+
44
+ prov:startedAtTime a owl:DatatypeProperty ; rdfs:label "startedAtTime (PROV-O)" .
45
+ prov:endedAtTime a owl:DatatypeProperty ; rdfs:label "endedAtTime (PROV-O)" .
46
+ prov:wasAssociatedWith a owl:ObjectProperty ; rdfs:label "wasAssociatedWith (PROV-O)" .
47
+ prov:actedOnBehalfOf a owl:ObjectProperty ; rdfs:label "actedOnBehalfOf (PROV-O)" ;
48
+ rdfs:comment "PRIVATE DETAIL in this substrate: the S1 firewall (provenance/firewall.ts) rejects it from any public row (ADR-0040)." .
49
+ prov:wasAttributedTo a owl:ObjectProperty ; rdfs:label "wasAttributedTo (PROV-O)" .
50
+ prov:used a owl:ObjectProperty ; rdfs:label "used (PROV-O)" ;
51
+ rdfs:comment "What an activity consumed. For a harness step: every delegation in its verified chain, BY REFERENCE (apvr:usedDelegation ⊑ prov:used names the one it presented)." .
52
+ prov:generated a owl:ObjectProperty ; rdfs:label "generated (PROV-O)" .
53
+ prov:wasGeneratedBy a owl:ObjectProperty ; rdfs:label "wasGeneratedBy (PROV-O)" .
54
+ prov:wasInformedBy a owl:ObjectProperty ; rdfs:label "wasInformedBy (PROV-O)" ;
55
+ rdfs:comment "Activity-to-activity communication. A routed run's root activity wasInformedBy the sender's; a hand-off step wasInformedBy the child run. NOT containment — apexec:hasStep is (execution.ttl)." .
56
+ prov:wasDerivedFrom a owl:ObjectProperty ; rdfs:label "wasDerivedFrom (PROV-O)" .
57
+ prov:wasRevisionOf a owl:ObjectProperty ; rdfs:subPropertyOf prov:wasDerivedFrom ; rdfs:label "wasRevisionOf (PROV-O)" .
58
+
59
+ # ═══ The qualified association ═══
60
+
61
+ prov:qualifiedAssociation a owl:ObjectProperty ; rdfs:label "qualifiedAssociation (PROV-O)" .
62
+ prov:agent a owl:ObjectProperty ; rdfs:label "agent (PROV-O)" .
63
+ prov:hadPlan a owl:ObjectProperty ; rdfs:label "hadPlan (PROV-O)" ;
64
+ rdfs:comment "The plan an association followed. A plan is never authority (plan.ttl): a run's hadPlan says which playbook version shaped it, and no gate reads it." .
65
+ prov:hadRole a owl:ObjectProperty ; rdfs:label "hadRole (PROV-O)" .
package/tbox/registry.ttl CHANGED
@@ -2,6 +2,8 @@
2
2
  # Grounded in PROV-O and DOLCE+DnS/DUL; informed by Agent Explorer's
3
3
  # erc8004.ttl, discovery.ttl, descriptors.ttl, trust.ttl, hol.ttl, and oasf.ttl
4
4
  # modules, but expressed as AP-native Ring 0 vocabulary.
5
+ # spec 346 §7/§11 added the registry INSTANCE + its operating ap:RegistryAgent, the admission
6
+ # RegistrationReceipt, the hash-chained lifecycle log + LogCheckpoint, and the derived entryStatus.
5
7
 
6
8
  @prefix ap: <https://agenticprimitives.dev/ns/core#> .
7
9
  @prefix approf: <https://agenticprimitives.dev/ns/profile#> .
@@ -18,7 +20,7 @@
18
20
 
19
21
  apreg: a owl:Ontology ;
20
22
  rdfs:label "Agentic Primitives — registry kit ontology" ;
21
- owl:versionInfo "0.1.0" ;
23
+ owl:versionInfo "0.2.0" ;
22
24
  rdfs:seeAlso <https://github.com/agentictrustlabs/agent-explorer/tree/main/apps/ontology/ontology> ;
23
25
  rdfs:comment "AP-native registry-building vocabulary. External registries are projection surfaces; this vocabulary defines Smart-Agent-anchored entries, binding proofs, claim slots, and lifecycle evidence." .
24
26
 
@@ -47,7 +49,7 @@ apreg:RegistryClaimSlot a owl:Class ;
47
49
  apreg:RegistryLifecycleEvent a owl:Class ;
48
50
  rdfs:subClassOf prov:Activity ;
49
51
  rdfs:label "RegistryLifecycleEvent" ;
50
- rdfs:comment "A register, renew, suspend, revoke, expire, or claim-update activity emitted by a registry contract and projected into the A-box." .
52
+ rdfs:comment "One event in a registry's APPEND-ONLY, hash-chained lifecycle log (spec 346 §7.3 RegistryLifecycleEventV1): eventKind from apreg:lifecycleEventScheme, eventSequence strictly increasing per registry, eventDigest, previousEventDigest for every event after the first. The on-chain AgentRegistryBase events (register, renew, suspend, revoke, expire, claim-update) remain the PUBLIC lifecycle facts and are projected into the KB; the log adds the off-chain evidence chain (receipts, revalidations, private issuances by digest only) plus a LogCheckpoint anchor. The log's home is the operator's vault or DO (a rebuild, not a bereavement — ADR-0055), never the public KB." .
51
53
 
52
54
  apreg:RegistryMembershipPolicy a owl:Class ;
53
55
  rdfs:subClassOf dul:Description ;
@@ -77,10 +79,9 @@ apreg:entryId a owl:DatatypeProperty ;
77
79
  rdfs:label "entryId" .
78
80
 
79
81
  apreg:subjectAgent a owl:ObjectProperty ;
80
- rdfs:domain apreg:RegistryEntry ;
81
82
  rdfs:range ap:Agent ;
82
83
  rdfs:label "subjectAgent" ;
83
- rdfs:comment "The canonical Smart Agent that this registry entry points at." .
84
+ rdfs:comment "The canonical Smart Agent a registry record points at. Used by RegistryEntry, RegistrationReceipt and RegistryLifecycleEvent alike (spec 346 §7), so the domain is left open — the per-class shapes pin cardinality." .
84
85
 
85
86
  apreg:hasBindingProof a owl:ObjectProperty ;
86
87
  rdfs:domain apreg:RegistryEntry ;
@@ -225,3 +226,157 @@ apreg:expired a apreg:RegistryLifecycleStatus ;
225
226
 
226
227
  apreg:pending a apreg:RegistryLifecycleStatus ;
227
228
  skos:prefLabel "pending" .
229
+
230
+ # ═══ spec 346 §7 / §11 — registry instance, operator, receipts, lifecycle log ═══
231
+
232
+ # ─── The registry instance and its operator ────────────────────────────
233
+
234
+ apreg:Registry a owl:Class ;
235
+ rdfs:subClassOf prov:Entity ;
236
+ rdfs:label "Registry" ;
237
+ rdfs:comment "A kit-built registry INSTANCE (spec 279; ADR-0038): an SA-anchored registry contract plus the RegistryKitProfile that describes it. An Entity, never an agent — operated by exactly one ap:RegistryAgent (apreg:operatedBy) whose '.registry' name is the registry's agentive face, exactly as a WorkspaceAgent is a Workspace's (ADR-0061 §4). Vertical registries are external consumers of the kit; this class is what they are built FROM." .
238
+
239
+ apreg:describedByProfile a owl:ObjectProperty ;
240
+ rdfs:domain apreg:Registry ;
241
+ rdfs:range apreg:RegistryKitProfile ;
242
+ rdfs:label "describedByProfile" .
243
+
244
+ apreg:operatesRegistry a owl:ObjectProperty ;
245
+ rdfs:domain ap:RegistryAgent ;
246
+ rdfs:range apreg:Registry ;
247
+ owl:inverseOf apreg:operatedBy ;
248
+ rdfs:label "operatesRegistry" ;
249
+ rdfs:comment "Exactly one (ap:RegistryAgentShape). The operator SA admits entries, signs receipts, appends the lifecycle log and serves the discovery surface — under its OWN custody policy. Operating a registry grants it nothing over the subjects it lists; an entry is evidence, never authority." .
250
+
251
+ apreg:operatedBy a owl:ObjectProperty ;
252
+ rdfs:domain apreg:Registry ;
253
+ rdfs:range ap:RegistryAgent ;
254
+ owl:inverseOf apreg:operatesRegistry ;
255
+ rdfs:label "operatedBy" .
256
+
257
+ apreg:inRegistry a owl:ObjectProperty ;
258
+ rdfs:range apreg:Registry ;
259
+ rdfs:label "inRegistry" ;
260
+ rdfs:comment "The registry a RegistryEntry, RegistrationReceipt, RegistryLifecycleEvent or LogCheckpoint belongs to — apreg:registryId as a node rather than a string." .
261
+
262
+ # ─── Registration receipt (§7.2) ───────────────────────────────────────
263
+
264
+ apreg:RegistrationReceipt a owl:Class ;
265
+ rdfs:subClassOf prov:Entity , ap:Evidence ;
266
+ rdfs:label "RegistrationReceipt" ;
267
+ rdfs:comment "RegistrationReceiptV1: what the registry operator VERIFIED, what FAILED, and what was NOT VERIFIED (not-attempted / unavailable / policy-skipped — a first-class outcome, never silently equal to verified) when admitting an entry, each line against an artifact digest. Signed by the operator SA (receiptSigner). EVIDENCE, never authority (ADR-0020): the object an external registry (ARD, 8004) can cite and a consumer shows as 'verified on <date> by <registry>'. Every AdmissionCheck appears in exactly one of the three lists (apreg:RegistrationReceiptShape)." .
268
+
269
+ apreg:verifiedCheck a owl:ObjectProperty ;
270
+ rdfs:domain apreg:RegistrationReceipt ;
271
+ rdfs:range skos:Concept ;
272
+ rdfs:label "verifiedCheck" ;
273
+ rdfs:comment "An apreg:admissionCheckScheme concept that PASSED, against an artifact digest." .
274
+
275
+ apreg:failedCheck a owl:ObjectProperty ;
276
+ rdfs:domain apreg:RegistrationReceipt ;
277
+ rdfs:range skos:Concept ;
278
+ rdfs:label "failedCheck" ;
279
+ rdfs:comment "An apreg:admissionCheckScheme concept that FAILED, with a reason." .
280
+
281
+ apreg:notVerifiedCheck a owl:ObjectProperty ;
282
+ rdfs:domain apreg:RegistrationReceipt ;
283
+ rdfs:range skos:Concept ;
284
+ rdfs:label "notVerifiedCheck" ;
285
+ rdfs:comment "An apreg:admissionCheckScheme concept that was NOT ATTEMPTED, unavailable, or policy-skipped. Recorded, never elided: 'not verified' must stay distinguishable from 'verified'." .
286
+
287
+ apreg:receiptFor a owl:ObjectProperty ;
288
+ rdfs:domain apreg:RegistrationReceipt ;
289
+ rdfs:range apreg:RegistryEntry ;
290
+ rdfs:label "receiptFor" .
291
+
292
+ apreg:subjectType a owl:ObjectProperty ;
293
+ rdfs:domain apreg:RegistrationReceipt ;
294
+ rdfs:range skos:Concept ;
295
+ rdfs:label "subjectType" ;
296
+ rdfs:comment "ap:agentTypeScheme — the DERIVED type the admission checked the subject's on-chain record and suffix against (spec 346 §2.3 invariant)." .
297
+
298
+ apreg:admittedAt a owl:DatatypeProperty ;
299
+ rdfs:domain apreg:RegistrationReceipt ;
300
+ rdfs:range xsd:dateTime ;
301
+ rdfs:label "admittedAt" .
302
+
303
+ apreg:receiptSigner a owl:ObjectProperty ;
304
+ rdfs:domain apreg:RegistrationReceipt ;
305
+ rdfs:range ap:RegistryAgent ;
306
+ rdfs:label "receiptSigner" ;
307
+ rdfs:comment "The registry operator SA that signed the receipt (ERC-1271 or a delegated session key)." .
308
+
309
+ apreg:receiptSignature a owl:DatatypeProperty ;
310
+ rdfs:domain apreg:RegistrationReceipt ;
311
+ rdfs:range xsd:string ;
312
+ rdfs:label "receiptSignature" .
313
+
314
+ # ─── Lifecycle log (§7.3) ──────────────────────────────────────────────
315
+
316
+ apreg:eventKind a owl:ObjectProperty ;
317
+ rdfs:domain apreg:RegistryLifecycleEvent ;
318
+ rdfs:range skos:Concept ;
319
+ rdfs:label "eventKind" ;
320
+ rdfs:comment "apreg:lifecycleEventScheme (cbox/registry-vocabulary.ttl) — the §7.3 RegistryLifecycleEventKind union." .
321
+
322
+ apreg:eventSequence a owl:DatatypeProperty ;
323
+ rdfs:domain apreg:RegistryLifecycleEvent ;
324
+ rdfs:range xsd:nonNegativeInteger ;
325
+ rdfs:label "eventSequence" ;
326
+ rdfs:comment "Position in the registry's append-only log. Strictly increasing per registry; the first event is 0." .
327
+
328
+ apreg:previousEventDigest a owl:DatatypeProperty ;
329
+ rdfs:domain apreg:RegistryLifecycleEvent ;
330
+ rdfs:range xsd:string ;
331
+ rdfs:label "previousEventDigest" ;
332
+ rdfs:comment "Digest of the preceding event — the hash chain (the smart-agent audit pattern). REQUIRED for every eventSequence > 0." .
333
+
334
+ apreg:eventDigest a owl:DatatypeProperty ;
335
+ rdfs:domain apreg:RegistryLifecycleEvent ;
336
+ rdfs:range xsd:string ;
337
+ rdfs:label "eventDigest" .
338
+
339
+ apreg:occurredAt a owl:DatatypeProperty ;
340
+ rdfs:domain apreg:RegistryLifecycleEvent ;
341
+ rdfs:range xsd:dateTime ;
342
+ rdfs:label "occurredAt" .
343
+
344
+ apreg:citesReceipt a owl:ObjectProperty ;
345
+ rdfs:domain apreg:RegistryLifecycleEvent ;
346
+ rdfs:range apreg:RegistrationReceipt ;
347
+ rdfs:label "citesReceipt" ;
348
+ rdfs:comment "The receipt an ENTRY_REGISTERED / ENTRY_RENEWED / REVALIDATION_* event refers to." .
349
+
350
+ apreg:LogCheckpoint a owl:Class ;
351
+ rdfs:subClassOf prov:Entity ;
352
+ rdfs:label "LogCheckpoint" ;
353
+ rdfs:comment "A Merkle root over a contiguous range [checkpointFrom, checkpointTo] of lifecycle events, anchored externally (anchorRef: a topic sequence, a tx, … — HCS-27-compatible, ledger-agnostic). Proves the log was not rewritten; proves nothing about the truth of any event." .
354
+
355
+ apreg:merkleRoot a owl:DatatypeProperty ;
356
+ rdfs:domain apreg:LogCheckpoint ;
357
+ rdfs:range xsd:string ;
358
+ rdfs:label "merkleRoot" .
359
+
360
+ apreg:checkpointFrom a owl:DatatypeProperty ;
361
+ rdfs:domain apreg:LogCheckpoint ;
362
+ rdfs:range xsd:nonNegativeInteger ;
363
+ rdfs:label "checkpointFrom" .
364
+
365
+ apreg:checkpointTo a owl:DatatypeProperty ;
366
+ rdfs:domain apreg:LogCheckpoint ;
367
+ rdfs:range xsd:nonNegativeInteger ;
368
+ rdfs:label "checkpointTo" .
369
+
370
+ apreg:anchorRef a owl:DatatypeProperty ;
371
+ rdfs:domain apreg:LogCheckpoint ;
372
+ rdfs:range xsd:string ;
373
+ rdfs:label "anchorRef" ;
374
+ rdfs:comment "The external anchor reference the CheckpointHook returned." .
375
+
376
+ # ─── Continuous revalidation status (§7.4) ─────────────────────────────
377
+
378
+ apreg:entryStatus a owl:ObjectProperty ;
379
+ rdfs:domain apreg:RegistryEntry ;
380
+ rdfs:range skos:Concept ;
381
+ rdfs:label "entryStatus" ;
382
+ rdfs:comment "apreg:entryStatusScheme — verified | stale | failing | suspended | revoked | expired. DERIVED by a pure fold over the lifecycle events (deriveEntryStatus) under a revalidation policy — never a mutable flag written by hand. Distinct from apreg:lifecycleStatus, the on-chain active/suspended/revoked/expired/pending fact." .