@agenticprimitives/ontology 1.0.0-alpha.25 → 1.0.0-alpha.27

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 (84) hide show
  1. package/cbox/judgment-shapes.shacl.ttl +83 -0
  2. package/cbox/run-measures-shapes.shacl.ttl +59 -0
  3. package/cbox/run-provenance-shapes.shacl.ttl +92 -0
  4. package/dist/artifacts.d.ts +6 -2
  5. package/dist/artifacts.d.ts.map +1 -1
  6. package/dist/artifacts.js +17 -0
  7. package/dist/artifacts.js.map +1 -1
  8. package/dist/evaluation-context.d.ts +134 -0
  9. package/dist/evaluation-context.d.ts.map +1 -0
  10. package/dist/evaluation-context.js +136 -0
  11. package/dist/evaluation-context.js.map +1 -0
  12. package/dist/governance.d.ts +84 -0
  13. package/dist/governance.d.ts.map +1 -0
  14. package/dist/governance.js +88 -0
  15. package/dist/governance.js.map +1 -0
  16. package/dist/index.d.ts +9 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +14 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/outcomes.d.ts +47 -0
  21. package/dist/outcomes.d.ts.map +1 -0
  22. package/dist/outcomes.js +40 -0
  23. package/dist/outcomes.js.map +1 -0
  24. package/dist/participant-vocabulary.d.ts +3 -0
  25. package/dist/participant-vocabulary.d.ts.map +1 -1
  26. package/dist/participant-vocabulary.js +3 -0
  27. package/dist/participant-vocabulary.js.map +1 -1
  28. package/dist/party-roles.d.ts +13 -4
  29. package/dist/party-roles.d.ts.map +1 -1
  30. package/dist/party-roles.js +24 -6
  31. package/dist/party-roles.js.map +1 -1
  32. package/dist/payload-classes.d.ts +22 -0
  33. package/dist/payload-classes.d.ts.map +1 -0
  34. package/dist/payload-classes.js +30 -0
  35. package/dist/payload-classes.js.map +1 -0
  36. package/dist/principles.generated.d.ts +11 -0
  37. package/dist/principles.generated.d.ts.map +1 -0
  38. package/dist/principles.generated.js +293 -0
  39. package/dist/principles.generated.js.map +1 -0
  40. package/dist/published-works.d.ts +13 -0
  41. package/dist/published-works.d.ts.map +1 -0
  42. package/dist/published-works.js +18 -0
  43. package/dist/published-works.js.map +1 -0
  44. package/dist/run-measures-context.d.ts +74 -0
  45. package/dist/run-measures-context.d.ts.map +1 -0
  46. package/dist/run-measures-context.js +77 -0
  47. package/dist/run-measures-context.js.map +1 -0
  48. package/dist/run-provenance-context.d.ts +104 -0
  49. package/dist/run-provenance-context.d.ts.map +1 -1
  50. package/dist/run-provenance-context.js +105 -1
  51. package/dist/run-provenance-context.js.map +1 -1
  52. package/dist/transitions.d.ts +42 -0
  53. package/dist/transitions.d.ts.map +1 -0
  54. package/dist/transitions.js +100 -0
  55. package/dist/transitions.js.map +1 -0
  56. package/dist/vault-records.d.ts.map +1 -1
  57. package/dist/vault-records.js +175 -0
  58. package/dist/vault-records.js.map +1 -1
  59. package/dist/versions.generated.d.ts +247 -0
  60. package/dist/versions.generated.d.ts.map +1 -0
  61. package/dist/versions.generated.js +300 -0
  62. package/dist/versions.generated.js.map +1 -0
  63. package/evaluation.jsonld +133 -0
  64. package/package.json +21 -8
  65. package/run-measures.jsonld +34 -0
  66. package/run-provenance.jsonld +247 -39
  67. package/tbox/content.ttl +23 -0
  68. package/tbox/context.ttl +59 -7
  69. package/tbox/core.ttl +62 -1
  70. package/tbox/dcat-imports.ttl +19 -0
  71. package/tbox/dqv-imports.ttl +29 -0
  72. package/tbox/earl-imports.ttl +31 -0
  73. package/tbox/evaluation.ttl +234 -0
  74. package/tbox/execution.ttl +364 -1
  75. package/tbox/governance.ttl +67 -0
  76. package/tbox/identity.ttl +5 -0
  77. package/tbox/intents.ttl +39 -0
  78. package/tbox/payload.ttl +94 -0
  79. package/tbox/principles.ttl +212 -0
  80. package/tbox/prov-imports.ttl +4 -1
  81. package/tbox/skos-imports.ttl +54 -0
  82. package/tbox/transition.ttl +63 -0
  83. package/tbox/verification-receipt.ttl +7 -0
  84. package/versions.adoption.json +113 -0
@@ -38,7 +38,7 @@
38
38
 
39
39
  apexec: a owl:Ontology ;
40
40
  rdfs:label "Agentic Primitives — execution ontology (W0 subset)" ;
41
- owl:versionInfo "0.1.0" ;
41
+ owl:versionInfo "0.3.1" ;
42
42
  rdfs:comment "The execution plane: activities that realize capabilities, the runtimes that bore responsibility, and the completion conditions that separate a realization from an attempt. W0 SUBSET — only the terms the shipped realization contracts reference. Spec 330 W1 extends it." ;
43
43
  skos:scopeNote "WITHIN-AGENT plane (coordination-vs-orchestration.md). Orchestration sequences one agent's run: the executor's knowledge is local — harness-activated Agent Skill packages (apguide:AgentSkillPackage / SKILL.md, pinned by apexec:usedPlanContentHash) and injected tools — and the loop never queries naming/registry/apdisc: discovery. Distinct from apcoord: (the BETWEEN-AGENTS coordination plane); an apexec:ExecutionPlan compiles FROM an apcoord:PlanStep (plan.ttl), it never is one." .
44
44
 
@@ -205,6 +205,73 @@ apexec:errorClass a owl:DatatypeProperty ;
205
205
  rdfs:label "errorClass" ;
206
206
  rdfs:comment "The CLASS of a step's failure (`authority_denied`, `tool_error`, `input_required` …), never its message: a message can carry a counterparty's name or an argument, a class cannot." .
207
207
 
208
+ # ─── Spec 410 §2 — the adapter's observation ──────────────────────────
209
+ # A resolved value is not "done". For an externally ordered effect the harness records WHAT THE ADAPTER SAW, in
210
+ # four words, and which one the receipt attests. "Verified at commit" may be said of `confirmed` only.
211
+
212
+ apexec:ObservedOutcome a owl:Class ;
213
+ rdfs:subClassOf skos:Concept ;
214
+ rdfs:label "ObservedOutcome" ;
215
+ rdfs:comment "What an adapter observed of the effect it made (spec 410 §2): attempted (the call left; nothing came back the adapter can vouch for), accepted (the provider acknowledged and has not committed), committed (the provider says it is done), confirmed (the harness read the effect back independently of the call that made it). What it is NOT: an authorization input, or a claim about the outcome class the tool establishes (apexec:OutcomeClass says what a success MEANS; this says what was SEEN)." .
216
+ apexec:attempted a apexec:ObservedOutcome ; rdfs:label "attempted" .
217
+ apexec:accepted a apexec:ObservedOutcome ; rdfs:label "accepted" .
218
+ apexec:committed a apexec:ObservedOutcome ; rdfs:label "committed" .
219
+ apexec:confirmed a apexec:ObservedOutcome ; rdfs:label "confirmed" .
220
+
221
+ apexec:observedOutcome a owl:ObjectProperty ;
222
+ rdfs:domain prov:Activity ; rdfs:range apexec:ObservedOutcome ;
223
+ rdfs:label "observedOutcome" ;
224
+ rdfs:comment "The ObservedOutcome this step's adapter reported, bounded by what its tool establishes — a submission never records more than accepted from the call alone." .
225
+ apexec:providerRef a owl:DatatypeProperty ;
226
+ rdfs:domain prov:Activity ; rdfs:range xsd:string ;
227
+ rdfs:label "providerRef" ;
228
+ rdfs:comment "The provider's own identifier for the effect (a message id, a task id, a record version, a transaction hash) — what a stranger would quote to the provider. Never a secret." .
229
+ apexec:observedAt a owl:DatatypeProperty ;
230
+ rdfs:domain prov:Activity ; rdfs:range xsd:dateTime ;
231
+ rdfs:label "observedAt" ;
232
+ rdfs:comment "The harness clock when the adapter returned what it saw." .
233
+
234
+ # ─── Spec 410 §4.4 — the estate an act was performed in ──────────────
235
+ # A person's Home lives in ONE estate; she participates in any estate that admits her (the thesis's design
236
+ # commitment, THESIS-9). An act she performs in estate B is redeemed under a B-chain mandate and anchored in B's
237
+ # receipt registry, and its record lands in HER vault, held in estate A. The record must therefore say where the
238
+ # act happened, because the vault it lives in no longer implies it.
239
+
240
+ apexec:estate a owl:DatatypeProperty ;
241
+ rdfs:domain prov:Activity ; rdfs:range xsd:string ;
242
+ rdfs:label "estate" ;
243
+ rdfs:comment "THE ESTATE THIS RUN WAS PERFORMED IN (spec 410 §4.4): the estate id — keccak256(\"eip155:<chainId>:<governance>\"), the same derivation EstateProjectionRegistry.estateIdOf and the estate-projection package use — of the chain whose mandate was redeemed and whose registry anchored the receipt. Stamped by the RUNTIME that ran the act, from its own deployment, on the HarnessRun activity; a step inherits its run's. Absent on a record older than this term, and on a runtime that has not declared its governance. What it is NOT: authority (a verifier reads the mandate's chain from the mandate's own domain, never from this), and NOT the chain the acting agent's address is named under (the agent IRIs carry that; an agent has the same address in every estate by construction, ADR-0010 + CREATE2)." .
244
+
245
+ apexec:ReceiptAnchor a owl:Class ;
246
+ rdfs:subClassOf prov:Entity ;
247
+ rdfs:label "ReceiptAnchor" ;
248
+ rdfs:comment "WHERE A RUN'S BUNDLE IS ANCHORED, as a record beside the bundle (the `run.anchor:<runRef>` vault record): the bundle's digest, the ReceiptAnchorRegistry it was written in (`eip155:<chainId>:<registry>`), the agent that anchored it, the transaction, and the estate (apexec:estate). A bundle cannot carry its own digest's anchor, so the citation is a second record — and it is the record a Home in another estate reads to know WHICH chain to ask. A holder verifies by recomputing the digest and reading the registry; the citation is a claim about where to look, never proof by itself." .
249
+
250
+ apexec:anchorDigest a owl:DatatypeProperty ;
251
+ rdfs:domain apexec:ReceiptAnchor ; rdfs:range xsd:string ;
252
+ rdfs:label "anchorDigest" ;
253
+ rdfs:comment "The bundle digest as anchored (bytes32 hex) — recomputed by any holder of the bundle over its canonical bytes." .
254
+
255
+ apexec:anchorRegistry a owl:DatatypeProperty ;
256
+ rdfs:domain apexec:ReceiptAnchor ; rdfs:range xsd:string ;
257
+ rdfs:label "anchorRegistry" ;
258
+ rdfs:comment "The ReceiptAnchorRegistry the digest is written in, chain-qualified: `eip155:<chainId>:<registry address>`. The chain named here is the ESTATE's chain (spec 410 §4.4), which may differ from the chain the vault's Home runs on." .
259
+
260
+ apexec:anchoredByAgent a owl:ObjectProperty ;
261
+ rdfs:domain apexec:ReceiptAnchor ; rdfs:range ap:Agent ;
262
+ rdfs:label "anchoredByAgent" ;
263
+ rdfs:comment "The runtime's harness agent that anchored the digest — the row's key on a generation-2+ registry (spec 408 §1.5). Distinct from apvr:anchoredBy, which names an attestation UID on a public KB row." .
264
+
265
+ apexec:anchorTransaction a owl:DatatypeProperty ;
266
+ rdfs:domain apexec:ReceiptAnchor ; rdfs:range xsd:string ;
267
+ rdfs:label "anchorTransaction" ;
268
+ rdfs:comment "The transaction that wrote the anchor, by hash, on the estate's chain." .
269
+
270
+ apexec:disputedBy a owl:ObjectProperty ;
271
+ rdfs:domain prov:Activity ; rdfs:range prov:Entity ;
272
+ rdfs:label "disputedBy" ;
273
+ rdfs:comment "Spec 410 §10 — the dispute interaction (profile dispute/1.0.0) opened over this run's receipt, and the determination a named steward recorded in it. Linked evidence; a determination reverses nothing — a reversal is a new act under a new mandate." .
274
+
208
275
  apexec:StepReceipt a owl:Class ;
209
276
  rdfs:subClassOf prov:Entity ;
210
277
  rdfs:label "StepReceipt" ;
@@ -297,3 +364,299 @@ apexec:artifactDigest a owl:DatatypeProperty ;
297
364
  rdfs:domain apexec:RunArtifact ; rdfs:range xsd:string ;
298
365
  rdfs:label "artifactDigest" ;
299
366
  rdfs:comment "sha256 of the canonical JSON of the body. The same bytes the step receipt's outputDigest commits to, so the graph, the receipt and the vault record agree on what was produced." .
367
+
368
+ # ═══ Build artifacts — spec 398 §9 (ap-build B3) ═══
369
+
370
+ apexec:BuildArtifact a owl:Class ;
371
+ rdfs:subClassOf prov:Entity ;
372
+ rdfs:label "BuildArtifact" ;
373
+ rdfs:comment "What ONE build run left, kept as its own record in the WORKSPACE's vault (`build.run:<runId>`; spec 398 §9.2 / §7.2): the repository and base it was built from, the task in the asker's words, the files the model wrote (whole content), and the test evidence AS RECORDED — the command, its exit code and the tail of its output (T28: never an assertion that tests passed). The build service produced it in a sandbox and returned it; the runtime's step prov:generated the record under the workspace's mandate. NOT a deployment (T29 — promotion is its own act) and NOT a pull request: a branch pushed from it is a submission (spec 367 §6) made by `github.pr.open`, whose receipt names this record. Distinct from apexec:RunArtifact (a step's raw body offloaded for size) and from apful:Artifact (a deliverable a fulfillment promised)." .
374
+
375
+ apexec:buildRepository a owl:DatatypeProperty ;
376
+ rdfs:domain apexec:BuildArtifact ; rdfs:range xsd:string ;
377
+ rdfs:label "buildRepository" ;
378
+ rdfs:comment "The repository the run built in, `owner/name`, with `buildBase` the branch it started from." .
379
+
380
+ apexec:buildBase a owl:DatatypeProperty ;
381
+ rdfs:domain apexec:BuildArtifact ; rdfs:range xsd:string ;
382
+ rdfs:label "buildBase" .
383
+
384
+ apexec:buildTask a owl:DatatypeProperty ;
385
+ rdfs:domain apexec:BuildArtifact ; rdfs:range xsd:string ;
386
+ rdfs:label "buildTask" ;
387
+ rdfs:comment "The task as the asker said it — what the model was given, never what it claims to have done (that is `buildSummary`, the model's own sentence, rendered as the model's)." .
388
+
389
+ apexec:buildSummary a owl:DatatypeProperty ;
390
+ rdfs:domain apexec:BuildArtifact ; rdfs:range xsd:string ;
391
+ rdfs:label "buildSummary" .
392
+
393
+ apexec:testCommand a owl:DatatypeProperty ;
394
+ rdfs:domain apexec:BuildArtifact ; rdfs:range xsd:string ;
395
+ rdfs:label "testCommand" ;
396
+ rdfs:comment "What was RUN in the sandbox after the files were written — the repository's own test script when it has one, else a syntax check of what changed. With `testExitCode` and `testOutputTail`, the recorded evidence." .
397
+
398
+ apexec:testExitCode a owl:DatatypeProperty ;
399
+ rdfs:domain apexec:BuildArtifact ; rdfs:range xsd:integer ;
400
+ rdfs:label "testExitCode" .
401
+
402
+ apexec:testOutputTail a owl:DatatypeProperty ;
403
+ rdfs:domain apexec:BuildArtifact ; rdfs:range xsd:string ;
404
+ rdfs:label "testOutputTail" .
405
+
406
+ apexec:buildModel a owl:DatatypeProperty ;
407
+ rdfs:domain apexec:BuildArtifact ; rdfs:range xsd:string ;
408
+ rdfs:label "buildModel" ;
409
+ rdfs:comment "The model that wrote the files (`provider/model`) — recorded because a reader judging the change wants to know who wrote it; it is not an author with authority." .
410
+
411
+ apexec:BuildPromotion a owl:Class ;
412
+ rdfs:subClassOf prov:Entity ;
413
+ rdfs:label "BuildPromotion" ;
414
+ rdfs:comment "What ONE promotion did (spec 398 §9.4, T29; `build.promotion:<runId>` in the WORKSPACE's vault): the exact tuple the steward's signature was over — the commit, the configuration digest (the artifact's files), the environment reached (a branch today), the permitted migration (none) — and what the forge did (the pull request merged, the merge commit). A promotion is the act that reaches an environment; a build never is. Any change to the tuple voids the signature: a promotion of another commit is another act." .
415
+
416
+ apexec:promotedCommit a owl:DatatypeProperty ;
417
+ rdfs:domain apexec:BuildPromotion ; rdfs:range xsd:string ;
418
+ rdfs:label "promotedCommit" .
419
+
420
+ apexec:promotedConfigDigest a owl:DatatypeProperty ;
421
+ rdfs:domain apexec:BuildPromotion ; rdfs:range xsd:string ;
422
+ rdfs:label "promotedConfigDigest" ;
423
+ rdfs:comment "The digest of the build artifact's files (`apexec:artifactDigest` of the build run) — the configuration the signature bound." .
424
+
425
+ apexec:promotedEnvironment a owl:DatatypeProperty ;
426
+ rdfs:domain apexec:BuildPromotion ; rdfs:range xsd:string ;
427
+ rdfs:label "promotedEnvironment" ;
428
+ rdfs:comment "The environment reached — `branch:<name>` until a deployment target is attached to the workspace." .
429
+
430
+ apexec:permittedMigration a owl:DatatypeProperty ;
431
+ rdfs:domain apexec:BuildPromotion ; rdfs:range xsd:string ;
432
+ rdfs:label "permittedMigration" .
433
+
434
+ apexec:promotedUnder a owl:DatatypeProperty ;
435
+ rdfs:domain apexec:BuildPromotion ; rdfs:range xsd:string ;
436
+ rdfs:label "promotedUnder" ;
437
+ rdfs:comment "The intent digest the promotion's mandate was bound to — the ask that named the run and the commit." .
438
+
439
+ # ═════════════════════════════════════════════════════════════════════════════════════════════════
440
+ # Spec 414 A1 — the trace from the door: how a run ARRIVED, which MODEL calls it made, under which
441
+ # VARIANT, from which STARTING STATE, which HARNESS CAPABILITIES engaged and to what effect, and which
442
+ # SKILL contract governed each step. Evidence, never authority: no gate reads any of these, and a
443
+ # variant changes behaviour, never permission (spec 414 §2 rule 5). No words: messages, prompts and
444
+ # replies appear only as ids and digests (spec 381 §1; shapes R6/R8).
445
+ # ═════════════════════════════════════════════════════════════════════════════════════════════════
446
+
447
+ apexec:Door a owl:Class ;
448
+ rdfs:subClassOf prov:Entity ;
449
+ rdfs:label "Door" ;
450
+ rdfs:comment "How a run arrived: the A2A message (with its message, context and task ids), a direct ask, a routed hop from another agent's run, a trigger, or a resume. The run prov:used it (apexec:arrivedBy). It carries ids and the kind — never the message's words; the intent is cited by apexec:intentDigest on the run. NOT the asker (that is prov:actedOnBehalfOf) and NOT a credential: arriving by a door authorizes nothing." .
451
+
452
+ apexec:arrivedBy a owl:ObjectProperty ;
453
+ rdfs:subPropertyOf prov:used ;
454
+ rdfs:domain apexec:ServiceExecution ; rdfs:range apexec:Door ;
455
+ rdfs:label "arrivedBy" .
456
+
457
+ apexec:doorKind a owl:DatatypeProperty ;
458
+ rdfs:domain apexec:Door ; rdfs:range xsd:string ;
459
+ rdfs:label "doorKind" ;
460
+ rdfs:comment "a2a-message | harness-ask | routed | trigger | resume | home-mcp | channel-mention — how the request reached the harness." .
461
+
462
+ apexec:a2aMessageId a owl:DatatypeProperty ;
463
+ rdfs:domain apexec:Door ; rdfs:range xsd:string ;
464
+ rdfs:label "a2aMessageId" ;
465
+ rdfs:comment "The A2A Message.messageId the run answered (A2A 1.0). An id, never the message." .
466
+
467
+ apexec:a2aContextId a owl:DatatypeProperty ;
468
+ rdfs:domain apexec:Door ; rdfs:range xsd:string ;
469
+ rdfs:label "a2aContextId" ;
470
+ rdfs:comment "The A2A contextId — groups the runs of one conversation (a LangSmith 'thread')." .
471
+
472
+ apexec:a2aTaskId a owl:DatatypeProperty ;
473
+ rdfs:domain apexec:Door ; rdfs:range xsd:string ;
474
+ rdfs:label "a2aTaskId" .
475
+
476
+ apexec:ModelInvocation a owl:Class ;
477
+ rdfs:subClassOf prov:Activity ;
478
+ rdfs:label "ModelInvocation" ;
479
+ rdfs:comment "One call to a language model the run made — to plan, to compose the reply, or for a structured choice inside a step (PROV-AGENT's model-call activity). Recorded by role, model, provider, the digest of the prompt TEMPLATE (never the rendered prompt), token counts and the route's reason. NOT a decision: a model proposes; the mandate authorizes (spec 350)." .
480
+
481
+ apexec:hasModelInvocation a owl:ObjectProperty ;
482
+ rdfs:domain prov:Activity ; rdfs:range apexec:ModelInvocation ;
483
+ rdfs:label "hasModelInvocation" .
484
+
485
+ apexec:invocationRole a owl:DatatypeProperty ;
486
+ rdfs:domain apexec:ModelInvocation ; rdfs:range xsd:string ;
487
+ rdfs:label "invocationRole" ;
488
+ rdfs:comment "plan | compose | structured | judge. judge = the call that chose which skill (if any) handles the request; structured = a step's own structured call." .
489
+
490
+ apexec:modelId a owl:DatatypeProperty ;
491
+ rdfs:domain apexec:ModelInvocation ; rdfs:range xsd:string ;
492
+ rdfs:label "modelId" .
493
+
494
+ apexec:modelProvider a owl:DatatypeProperty ;
495
+ rdfs:domain apexec:ModelInvocation ; rdfs:range xsd:string ;
496
+ rdfs:label "modelProvider" .
497
+
498
+ apexec:promptTemplateDigest a owl:DatatypeProperty ;
499
+ rdfs:domain apexec:ModelInvocation ; rdfs:range xsd:string ;
500
+ rdfs:label "promptTemplateDigest" ;
501
+ rdfs:comment "A digest of the prompt the model was given, so two runs can be seen to share (or not share) a prompt. Never the prompt." .
502
+
503
+ apexec:tokensIn a owl:DatatypeProperty ;
504
+ rdfs:domain apexec:ModelInvocation ; rdfs:range xsd:integer ;
505
+ rdfs:label "tokensIn" .
506
+
507
+ apexec:tokensOut a owl:DatatypeProperty ;
508
+ rdfs:domain apexec:ModelInvocation ; rdfs:range xsd:integer ;
509
+ rdfs:label "tokensOut" .
510
+
511
+ apexec:routeReason a owl:DatatypeProperty ;
512
+ rdfs:domain apexec:ModelInvocation ; rdfs:range xsd:string ;
513
+ rdfs:label "routeReason" ;
514
+ rdfs:comment "Why this provider carried the call (spec 388) — a reason code, never words of the ask." .
515
+
516
+ apexec:Variant a owl:Class ;
517
+ rdfs:subClassOf prov:Entity ;
518
+ rdfs:label "Variant" ;
519
+ rdfs:comment "The configuration a run ran under, as the things a comparison may change one at a time: the playbook (by commitment), the planner kind, the model route policy, the harness build, and any harness-capability toggles. Named by its digest (RFC 8785 JCS + SHA-256), so two runs share a variant exactly when they share every part. The production variant is simply the current one. NOT authority: a variant changes behaviour, never what a mandate permits." .
520
+
521
+ apexec:underVariant a owl:ObjectProperty ;
522
+ rdfs:subPropertyOf prov:used ;
523
+ rdfs:domain apexec:ServiceExecution ; rdfs:range apexec:Variant ;
524
+ rdfs:label "underVariant" .
525
+
526
+ apexec:variantDigest a owl:DatatypeProperty ;
527
+ rdfs:domain apexec:Variant ; rdfs:range xsd:string ;
528
+ rdfs:label "variantDigest" .
529
+
530
+ apexec:plannerKind a owl:DatatypeProperty ;
531
+ rdfs:domain apexec:Variant ; rdfs:range xsd:string ;
532
+ rdfs:label "plannerKind" ;
533
+ rdfs:comment "supplied | compiled | model | rule-based — who proposes plans under this variant." .
534
+
535
+ apexec:routePolicy a owl:DatatypeProperty ;
536
+ rdfs:domain apexec:Variant ; rdfs:range xsd:string ;
537
+ rdfs:label "routePolicy" .
538
+
539
+ apexec:harnessBuild a owl:DatatypeProperty ;
540
+ rdfs:domain apexec:Variant ; rdfs:range xsd:string ;
541
+ rdfs:label "harnessBuild" ;
542
+ rdfs:comment "The runtime's build identifier (a deployment version id or commit)." .
543
+
544
+ apexec:capabilityToggle a owl:DatatypeProperty ;
545
+ rdfs:domain apexec:Variant ; rdfs:range xsd:string ;
546
+ rdfs:label "capabilityToggle" ;
547
+ rdfs:comment "`<capability notation>=<setting>` — e.g. `retrieval/kb=off`. One per toggle; absent ⇒ the default." .
548
+
549
+ apexec:StartingState a owl:Class ;
550
+ rdfs:subClassOf prov:Entity ;
551
+ rdfs:label "StartingState" ;
552
+ rdfs:comment "The records a run began from when they were seeded for a comparison (a scenario's fixture), named by digest. Absent for live runs. Holding it fixed is one half of the change-one-component rule (spec 414 §7)." .
553
+
554
+ apexec:fromStartingState a owl:ObjectProperty ;
555
+ rdfs:subPropertyOf prov:used ;
556
+ rdfs:domain apexec:ServiceExecution ; rdfs:range apexec:StartingState ;
557
+ rdfs:label "fromStartingState" .
558
+
559
+ apexec:startingStateDigest a owl:DatatypeProperty ;
560
+ rdfs:domain apexec:StartingState ; rdfs:range xsd:string ;
561
+ rdfs:label "startingStateDigest" .
562
+
563
+ apexec:governedBySkill a owl:ObjectProperty ;
564
+ rdfs:subPropertyOf prov:used ;
565
+ rdfs:domain prov:Activity ; rdfs:range apguide:AgentSkillPackage ;
566
+ rdfs:label "governedBySkill" ;
567
+ rdfs:comment "The SKILL.md contract (id, version, content digest — the IRI says all three) whose execution contract governed this step. Finer than the run's playbook (prov:hadPlan). NOT the advertised capability (apexec:realizesCapability) and NOT the operation (the plan step's tool): a capability is what is advertised, a skill is how it is done, the tool is what was called." .
568
+
569
+ # ── Harness capabilities: what the harness DID, as a vocabulary (spec 414 §3.2) ─────────────────
570
+
571
+ apexec:HarnessCapability a owl:Class ;
572
+ rdfs:subClassOf skos:Concept ;
573
+ rdfs:label "HarnessCapability" ;
574
+ rdfs:comment "A function of the harness itself (a planner, plan admission, retrieval, routing, memory, judgment …), as distinct from a capability an agent ADVERTISES (aps:Capability). Engaging one is recorded (apexec:CapabilityEngagement) so effectiveness can be read per capability. Declared once, here; code stamps engagements by notation." .
575
+
576
+ apexec:HarnessCapabilities a skos:ConceptScheme ;
577
+ rdfs:label "Harness capabilities" .
578
+
579
+ apexec:EngagementEffect a owl:Class ;
580
+ rdfs:subClassOf skos:Concept ;
581
+ rdfs:label "EngagementEffect" ;
582
+ rdfs:comment "What an engaged harness capability did to the run: changed the plan, changed a step, changed the answer, changed nothing, or refused." .
583
+
584
+ apexec:ee-changedPlan a apexec:EngagementEffect ; skos:notation "changed-plan" ; skos:prefLabel "changed the plan" .
585
+ apexec:ee-changedStep a apexec:EngagementEffect ; skos:notation "changed-step" ; skos:prefLabel "changed a step" .
586
+ apexec:ee-changedAnswer a apexec:EngagementEffect ; skos:notation "changed-answer" ; skos:prefLabel "changed the answer" ; skos:definition "It shaped what the reply says, not what was done — retrieval grounding the composer (spec 413: passages ground what is said, never what is done)." .
587
+ apexec:ee-noChange a apexec:EngagementEffect ; skos:notation "no-change" ; skos:prefLabel "changed nothing" .
588
+ apexec:ee-refused a apexec:EngagementEffect ; skos:notation "refused" ; skos:prefLabel "refused" .
589
+
590
+ apexec:CapabilityEngagement a owl:Class ;
591
+ rdfs:subClassOf prov:Influence ;
592
+ rdfs:label "CapabilityEngagement" ;
593
+ rdfs:comment "One engagement of a harness capability on a run or a step — the qualified form (PROV's Influence pattern) so each engagement carries its capability, the capability's version and its effect. Engaged-with-no-change is still recorded: 'did this capability matter?' is a query, not an opinion." .
594
+
595
+ apexec:hasEngagement a owl:ObjectProperty ;
596
+ rdfs:domain prov:Activity ; rdfs:range apexec:CapabilityEngagement ;
597
+ rdfs:label "hasEngagement" .
598
+
599
+ apexec:ofCapability a owl:ObjectProperty ;
600
+ rdfs:domain apexec:CapabilityEngagement ; rdfs:range apexec:HarnessCapability ;
601
+ rdfs:label "ofCapability" .
602
+
603
+ apexec:engagementEffect a owl:ObjectProperty ;
604
+ rdfs:domain apexec:CapabilityEngagement ; rdfs:range apexec:EngagementEffect ;
605
+ rdfs:label "engagementEffect" .
606
+
607
+ apexec:capabilityVersion a owl:DatatypeProperty ;
608
+ rdfs:domain apexec:CapabilityEngagement ; rdfs:range xsd:string ;
609
+ rdfs:label "capabilityVersion" .
610
+
611
+ # The scheme. `skos:notation` is the stable key code stamps by; the IRI local name is DERIVED from it —
612
+ # `hc-` + the notation in camelCase over '/' and '-' (`planner/compiled-shape` → `hc-plannerCompiledShape`), and
613
+ # `ee-` likewise for effects — so a serializer names the concept without a lookup table (asserted in the suite). Open: a new harness capability is a new concept here and nothing else.
614
+ apexec:hc-plannerSupplied a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "planner/supplied" ; skos:prefLabel "supplied plan" ; skos:definition "The plan was given (a screen, a test, a replay), not proposed." .
615
+ apexec:hc-plannerCompiledShape a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "planner/compiled-shape" ; skos:prefLabel "compiled plan shape" ; skos:definition "An ontology-compiled one-correct-plan shape proposed the plan (spec 355)." .
616
+ apexec:hc-plannerModel a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "planner/model" ; skos:prefLabel "model planner" ; skos:definition "A language model proposed the plan (spec 388 route)." .
617
+ apexec:hc-planAdmission a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "plan-admission" ; skos:prefLabel "plan admission" ; skos:definition "The behaviour plane admitted or refused the proposed plan (spec 367 W1); a refusal that forced a replan changed the plan." .
618
+ apexec:hc-playbook a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "playbook" ; skos:prefLabel "playbook" ; skos:definition "A compiled archetype governed the run (spec 354)." .
619
+ apexec:hc-retrievalKb a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "retrieval/kb" ; skos:prefLabel "public-tier retrieval" ; skos:definition "Passages or facts were read from the public knowledge tier (specs 357, 413)." .
620
+ apexec:hc-retrievalVaultSelector a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "retrieval/vault-selector" ; skos:prefLabel "private-tier selector" ; skos:definition "Records were read from a vault by a compiled selector (spec 356)." .
621
+ apexec:hc-standingInstructions a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "standing-instructions" ; skos:prefLabel "standing instructions" ; skos:definition "A standing instruction applied (spec 394)." .
622
+ apexec:hc-confirmationMemory a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "confirmation-memory" ; skos:prefLabel "confirmation memory" ; skos:definition "A prior confirmation was reused (spec 385)." .
623
+ apexec:hc-decisionRules a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "decision-rules" ; skos:prefLabel "decision rules" ; skos:definition "An ordered rule decided a decision point (spec 363)." .
624
+ apexec:hc-routing a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "routing" ; skos:prefLabel "routing" ; skos:definition "Work was routed to another agent by its records (spec 366)." .
625
+ apexec:hc-handoff a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "handoff" ; skos:prefLabel "hand-off" ; skos:definition "A step was handed to another agent's run." .
626
+ apexec:hc-fanOut a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "fan-out" ; skos:prefLabel "fan-out" ; skos:definition "One step was split across many items or agents, each re-verified (spec 380)." .
627
+ apexec:hc-contextOffload a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "context-offload" ; skos:prefLabel "context offload" ; skos:definition "A large result went to the vault and the run carried its summary (spec 391)." .
628
+ apexec:hc-durableResume a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "durable-resume" ; skos:prefLabel "durable resume" ; skos:definition "The run resumed from a checkpoint, replaying completed steps (spec 362, 370 P1)." .
629
+ apexec:hc-approval a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "approval" ; skos:prefLabel "approval" ; skos:definition "A step waited on a person's signature (specs 350, 393)." .
630
+ apexec:hc-judgment a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "judgment" ; skos:prefLabel "judgment" ; skos:definition "A judgment was made about the run or a step against a stated criterion (spec 414 §3.4) — implementation-neutral; defined by principles J1–J8, filled by a later spec." .
631
+
632
+ # ── Spec 415 §3a — SKILL SELECTION as a harness capability, and what it offered, chose and rejected ──
633
+ # The APPROACH is the concept (implementation-neutral names: the mechanism behind each is a binding); a comparison
634
+ # toggles it and holds the rest fixed. The engagement names the candidates it OFFERED, the one(s) it CHOSE and the
635
+ # neighbour it REJECTED when two collided — as capability / skill IRIs, never words.
636
+ apexec:hc-skillSelectionModel a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "skill-selection/model" ; skos:prefLabel "selection by description" ; skos:definition "A model chose the skill from descriptions — the baseline." .
637
+ apexec:hc-skillSelectionOntology a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "skill-selection/ontology" ; skos:prefLabel "selection by ontology and canonical id" ; skos:definition "The skill was chosen by what the ontology says it is for and by its canonical identity (spec 355 compiled shapes are one such mechanism)." .
638
+ apexec:hc-skillSelectionRules a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "skill-selection/rules" ; skos:prefLabel "selection by rules" ; skos:definition "Declared rules chose the skill." .
639
+ apexec:hc-skillSelectionJudgment a apexec:HarnessCapability ; skos:inScheme apexec:HarnessCapabilities ; skos:notation "skill-selection/judgment" ; skos:prefLabel "selection by judgment" ; skos:definition "A judgment against stated criteria chose or confirmed the skill (spec 414 §3.4)." .
640
+
641
+ apexec:offeredCandidate a owl:ObjectProperty ;
642
+ rdfs:domain apexec:CapabilityEngagement ; rdfs:range prov:Entity ;
643
+ rdfs:label "offeredCandidate" ; rdfs:comment "A skill / capability the selection could choose from (by IRI)." .
644
+ apexec:chose a owl:ObjectProperty ;
645
+ rdfs:domain apexec:CapabilityEngagement ; rdfs:range prov:Entity ;
646
+ rdfs:label "chose" ; rdfs:comment "What the selection chose (by IRI). More than one ⇒ over-selection." .
647
+ apexec:rejectedNeighbour a owl:ObjectProperty ;
648
+ rdfs:domain apexec:CapabilityEngagement ; rdfs:range prov:Entity ;
649
+ rdfs:label "rejectedNeighbour" ; rdfs:comment "The colliding candidate the selection passed over, when it can say so." .
650
+
651
+ # Spec 415 A4 — THE INTENT, TYPED IN THE DOMAIN ONTOLOGY. A selection by judgment first says what the request asks FOR
652
+ # as one domain class (the deliverable or activity) and what it is ABOUT; the skills whose declared coverage includes that
653
+ # class are the only candidates. The values are CLASS IRIs from the agent's domain ontology (or apexec:OutsideDomain),
654
+ # never words. Evidence of how the selection read the request; never authority.
655
+ apexec:inferredRequest a owl:ObjectProperty ;
656
+ rdfs:domain apexec:CapabilityEngagement ; rdfs:range rdfs:Class ;
657
+ rdfs:label "inferredRequest" ; rdfs:comment "The domain class the selection read the request as asking FOR — or apexec:OutsideDomain." .
658
+ apexec:inferredAbout a owl:ObjectProperty ;
659
+ rdfs:domain apexec:CapabilityEngagement ; rdfs:range rdfs:Class ;
660
+ rdfs:label "inferredAbout" ; rdfs:comment "A domain class the selection read the request as being ABOUT." .
661
+ apexec:OutsideDomain a rdfs:Class ;
662
+ rdfs:label "OutsideDomain" ; rdfs:comment "What a request asks for when it is none of the domain's classes: no skill may be chosen for it." .
@@ -0,0 +1,67 @@
1
+ @prefix apgov: <https://agenticprimitives.dev/ns/governance#> .
2
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
3
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
4
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
5
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
6
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
7
+ @prefix prov: <http://www.w3.org/ns/prov#> .
8
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
9
+
10
+ <https://agenticprimitives.dev/ns/governance> a owl:Ontology ;
11
+ owl:versionInfo "0.1.0" ;
12
+ rdfs:label "Agentic Primitives — governance of the common model and of an estate (spec 410 §10)" ;
13
+ rdfs:comment "The twelfth principle's vocabulary: a shared term has a steward, a version and an adoption process; a participant may hold a LOCAL MEANING of a common term and both are recorded with their names; disputes have a path that does not run through the operator; who stewards what is public. Nothing here is authority — a steward record grants nothing, an adopted version is what a verifier binds, not who may act." .
14
+
15
+ # ─── Versions and adoption ─────────────────────────────────────────────────────────────────────────
16
+
17
+ apgov:AdoptedVersion a owl:Class ;
18
+ rdfs:subClassOf prov:Entity ;
19
+ rdfs:label "AdoptedVersion" ;
20
+ rdfs:comment "An ESTATE's adoption of one ontology manifest (spec 410 §5's `ONTOLOGY_MANIFEST_DIGEST`): which T-box set its verifiers bind into every mandate, adopted by a governance proposal (spec 410 §9) and anchored in the estate's public projection. A verifier redeeming a mandate reads the ESTATE's adopted manifest, never the package's latest — a T-box change is a proposal, not a deploy." .
21
+ apgov:manifestDigest a owl:DatatypeProperty ;
22
+ rdfs:domain apgov:AdoptedVersion ; rdfs:range xsd:string ;
23
+ rdfs:label "manifestDigest" .
24
+ apgov:adoptedAt a owl:DatatypeProperty ;
25
+ rdfs:domain apgov:AdoptedVersion ; rdfs:range xsd:dateTime ;
26
+ rdfs:label "adoptedAt" .
27
+ apgov:proposalRef a owl:DatatypeProperty ;
28
+ rdfs:domain apgov:AdoptedVersion ; rdfs:range xsd:string ;
29
+ rdfs:label "proposalRef" ;
30
+ rdfs:comment "The governance proposal that adopted it (the timelock's operation id, spec 410 §9)." .
31
+
32
+ # ─── Local meanings — two organizations, both right ───────────────────────────────────────────────
33
+
34
+ apgov:LocalMeaning a owl:Class ;
35
+ rdfs:subClassOf skos:Concept ;
36
+ rdfs:label "LocalMeaning" ;
37
+ rdfs:comment "An organization's OWN meaning of a COMMON term, recorded as a SKOS mapping onto it — never a second class in the common T-box (ADR-0054: never a different semantic model per door). 'Member' may be a baptized adult to one organization and a household to another; both publish a LocalMeaning with skos:narrowMatch / skos:broadMatch / skos:relatedMatch to aporg:member and a scope note saying what differs; both are right; a grant issued by either names its own (the intent preimage's meaningRefs), so a third party reading the receipt sees which meaning the grant used. An organization with no LocalMeaning falls to the common term." .
38
+ apgov:ofTerm a owl:ObjectProperty ;
39
+ rdfs:domain apgov:LocalMeaning ; rdfs:range rdfs:Resource ;
40
+ rdfs:label "ofTerm" ;
41
+ rdfs:comment "The COMMON term this is a local meaning of (an IRI of the shared T-box)." .
42
+ apgov:heldBy a owl:ObjectProperty ;
43
+ rdfs:domain apgov:LocalMeaning ; rdfs:range ap:Agent ;
44
+ rdfs:label "heldBy" ;
45
+ rdfs:comment "The organization whose meaning it is — the record lives on ITS Smart Agent." .
46
+ apgov:mappingRelation a owl:DatatypeProperty ;
47
+ rdfs:domain apgov:LocalMeaning ; rdfs:range xsd:string ;
48
+ rdfs:label "mappingRelation" ;
49
+ rdfs:comment "Which SKOS mapping predicate relates the local meaning to the common term: narrowMatch | broadMatch | relatedMatch. Never exactMatch (that would be no local meaning) and never a new class." .
50
+
51
+ # ─── Stewardship of the model ─────────────────────────────────────────────────────────────────────
52
+
53
+ apgov:Steward a owl:Class ;
54
+ rdfs:subClassOf prov:Entity ;
55
+ rdfs:label "Steward" ;
56
+ rdfs:comment "WHO STEWARDS WHAT, publicly: the Smart Agent named to resolve disagreements, manage versions and name exceptions for one term or module of the common model, registered through the term registry under the estate's governance and readable from the registry without a session (a steward's identity is public by construction, ADR-0040). A steward record grants nothing: a determination in a dispute (the dispute interaction profile) is evidence the run's provenance links, never a reversal." .
57
+ apgov:stewards a owl:ObjectProperty ;
58
+ rdfs:domain apgov:Steward ; rdfs:range rdfs:Resource ;
59
+ rdfs:label "stewards" ;
60
+ rdfs:comment "The term or module IRI stewarded." .
61
+ apgov:stewardAgent a owl:ObjectProperty ;
62
+ rdfs:domain apgov:Steward ; rdfs:range ap:Agent ;
63
+ rdfs:label "stewardAgent" .
64
+ apgov:charterRef a owl:DatatypeProperty ;
65
+ rdfs:domain apgov:Steward ; rdfs:range xsd:string ;
66
+ rdfs:label "charterRef" ;
67
+ rdfs:comment "The estate charter (spec 410 §9) under which the steward was named — its hash as anchored." .
package/tbox/identity.ttl CHANGED
@@ -14,6 +14,11 @@ apcr:CredentialFacet a owl:Class ;
14
14
  rdfs:label "CredentialFacet" ;
15
15
  rdfs:comment "A control credential (passkey / SIWE-EOA / hardware / OIDC) that CONTROLS an Agent under its custody policy. Rotates without changing the Agent (ADR-0011). NEVER an owner." .
16
16
 
17
+ apcr:ChannelFacet a owl:Class ;
18
+ rdfs:subClassOf ap:Facet ;
19
+ rdfs:label "ChannelFacet" ;
20
+ rdfs:comment "An email address or phone number linked to an Agent's home (spec 319/320, spec 422 §3.3). It OPENS the home (login-grade, ADR-0017) and is where the home TELLS the person something — a credential change, a recovery request — so she can cancel. It is NOT a CredentialFacet: it signs nothing, it is never a quorum slot, a step-up or a recovery signer. A phone-bootstrapped home's custody credential is its server-held C_sub (spec 235), not the phone." .
21
+
17
22
  apnam:NameFacet a owl:Class ;
18
23
  rdfs:subClassOf ap:Facet ;
19
24
  rdfs:label "NameFacet" ;
package/tbox/intents.ttl CHANGED
@@ -5,6 +5,7 @@
5
5
 
6
6
  @prefix ap: <https://agenticprimitives.dev/ns/core#> .
7
7
  @prefix apint: <https://agenticprimitives.dev/ns/intent#> .
8
+ @prefix aps: <https://agenticprimitives.dev/ns/skill#> .
8
9
  @prefix apcst: <https://agenticprimitives.dev/ns/constraint#> .
9
10
  @prefix apres: <https://agenticprimitives.dev/ns/resolution#> .
10
11
  @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@@ -33,6 +34,44 @@ apint:Intent a owl:Class ;
33
34
  rdfs:label "Intent" ;
34
35
  rdfs:comment "An actor's signed declarative statement of a desired end-state. NOT a plan; not a transaction; not a wire envelope. Layer 2 of the spine." .
35
36
 
37
+ # ─── Spec 410 §6 — OPEN INTENTS: the stated outcome, and what it entails ───────────────────────────────
38
+ # A CLOSED intent names its effects ("pay Alice 10"); the mandate binds them. An OPEN intent names an OUTCOME
39
+ # ("organize the gathering for under two thousand") and leaves the effects to a plan — which is where an
40
+ # adversarial instruction inside the plan's inputs can surface an effect the outcome never entailed: the
41
+ # disclosure, the over-budget deposit, the substitute venue. These terms let the ontology say, per outcome
42
+ # class, which effect kinds the outcome ENTAILS and which BOUNDS it carries; the harness's conformance stage
43
+ # (`orchestration.outcomeConformance`) refuses, before anything is offered for signature, every consequential
44
+ # effect the outcome does not entail. Behaviour, never authority: no verifier reads these; the mandate still
45
+ # authorizes what it names.
46
+
47
+ apint:Outcome a owl:Class ;
48
+ rdfs:subClassOf apint:Intent ;
49
+ rdfs:label "Outcome" ;
50
+ rdfs:comment "The stated end-state of an OPEN intent, as a class: what a plan under that intent may be composed of is what this class ENTAILS (apint:entailsCapability), within the BOUNDS the intent stated (apint:boundedBy). What it is NOT: authority (a mandate still authorizes each effect), and not a plan (it names kinds, never steps)." .
51
+
52
+ apint:entailsCapability a owl:ObjectProperty ;
53
+ rdfs:domain apint:Outcome ; rdfs:range aps:Capability ;
54
+ rdfs:label "entailsCapability" ;
55
+ rdfs:comment "A capability whose exercise the outcome entails. A consequential effect under an open intent whose capability the outcome does not entail is refused at conformance — an omission here is a refusal there, by design." .
56
+
57
+ apint:OutcomeBound a owl:Class ;
58
+ rdfs:label "OutcomeBound" ;
59
+ rdfs:comment "A bound an open intent states over one argument of an entailed capability: an AMOUNT (\"under two thousand\" — the argument may not exceed it) or a NAMED value (\"at the hall\" — the argument may not differ from it). Read from the intent, never inferred." .
60
+
61
+ apint:boundedBy a owl:ObjectProperty ;
62
+ rdfs:domain apint:Outcome ; rdfs:range apint:OutcomeBound ;
63
+ rdfs:label "boundedBy" .
64
+
65
+ apint:boundsArgument a owl:DatatypeProperty ;
66
+ rdfs:domain apint:OutcomeBound ; rdfs:range xsd:string ;
67
+ rdfs:label "boundsArgument" ;
68
+ rdfs:comment "The argument name of the entailed capability the bound applies to (\"amount\", \"location\")." .
69
+
70
+ apint:OrganizedGathering a owl:Class ;
71
+ rdfs:subClassOf apint:Outcome ;
72
+ rdfs:label "OrganizedGathering" ;
73
+ rdfs:comment "A gathering organized for a group: a time and place set, the people told, a deposit paid within budget. Entails: a calendar event (bounded by the named venue), messages to the attendees (carrying contact details, never records about them), a payment (bounded by the stated budget). The reference outcome class of spec 410 §6; a domain adds its own the same way." .
74
+
36
75
  # ─── Intent hierarchy extension (spec 324 §9) ─────────────────────────
37
76
 
38
77
  apint:ResourceExchangeIntent a owl:Class ;
@@ -0,0 +1,94 @@
1
+ # T-box — WHAT A WRITE CARRIES (spec 410 §7, THESIS-6/THESIS-7's information-flow half).
2
+ #
3
+ # An aggregate limit at the resource says how MUCH may leave (`TreasurySpendPolicy`); this says WHAT KIND of
4
+ # information an act may carry out of the estate. A tool's adapter declares, per argument, the classes its payload
5
+ # carries (`ToolSpec.carries`, `SkillExecutionContractV1.carries`); a mandate's payload-classes caveat
6
+ # (`PayloadClassesEnforcer`) names what the write MAY carry; the verifier compares the two. An argument whose class
7
+ # the caveat does not name is refused — an undeclared payload is not within it.
8
+ #
9
+ # THESE ARE CLASSES OF INFORMATION, NOT OF VALUES. `apval:EmailAddress` says how an argument is READ ("is this
10
+ # well-formed?"); `appay:ContactEmail` says what it DISCLOSES when it leaves ("someone's address is now in the
11
+ # message"). One value can carry several: a free-text body may carry an email address the person typed. The
12
+ # declaration is the ADAPTER AUTHOR's claim about the argument's kind, never an inspection of its content — a
13
+ # classifier reading bodies for phone numbers is exactly the heuristic this vocabulary exists to replace.
14
+ #
15
+ # The one class every free-text argument carries is appay:FreeText: the person's own words, which may carry
16
+ # anything. A mandate that permits FreeText permits what the person chose to write; a mandate that does not
17
+ # refuses a body the planner composed. That is the honest floor, and it is why "text" arguments are declared
18
+ # rather than left undeclared (undeclared = denied under any caveat).
19
+
20
+ @prefix appay: <https://agenticprimitives.dev/ns/payload#> .
21
+ @prefix apval: <https://agenticprimitives.dev/ns/value#> .
22
+ @prefix ap: <https://agenticprimitives.dev/ns/core#> .
23
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
24
+ @prefix owl: <http://www.w3.org/2002/07/owl#> .
25
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
26
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
27
+
28
+ appay: a owl:Ontology ;
29
+ rdfs:label "Agentic Primitives — Payload classes (what a write carries)" ;
30
+ rdfs:comment "The kinds of information an act may carry out of the estate: declared per argument by a tool's adapter, permitted by a mandate's payload-classes caveat, compared by the verifier (spec 410 §7). Classes of DISCLOSURE, not of value syntax (apval:)." .
31
+
32
+ appay:PayloadClass a owl:Class ;
33
+ rdfs:label "PayloadClass" ;
34
+ rdfs:comment "A kind of information a write may carry. Every payload class is a subclass; a caveat names subclasses, never this root (naming the root would permit everything, which is the absence of a caveat said twice)." .
35
+
36
+ appay:FreeText a owl:Class ;
37
+ rdfs:subClassOf appay:PayloadClass ;
38
+ rdfs:label "FreeText" ;
39
+ rdfs:comment "The person's own words, or a body composed on their behalf: may carry anything. The floor every text argument declares. A mandate that does not permit it refuses composed bodies." .
40
+
41
+ appay:ContactEmail a owl:Class ;
42
+ rdfs:subClassOf appay:PayloadClass ;
43
+ rdfs:label "ContactEmail" ;
44
+ rdfs:comment "Someone's email address leaves with the write (an invitation carrying it; a message body that names one)." .
45
+
46
+ appay:ContactPhone a owl:Class ;
47
+ rdfs:subClassOf appay:PayloadClass ;
48
+ rdfs:label "ContactPhone" ;
49
+ rdfs:comment "Someone's phone number leaves with the write." .
50
+
51
+ appay:PostalAddress a owl:Class ;
52
+ rdfs:subClassOf appay:PayloadClass ;
53
+ rdfs:label "PostalAddress" ;
54
+ rdfs:comment "Where someone lives or receives mail leaves with the write." .
55
+
56
+ appay:EventDetails a owl:Class ;
57
+ rdfs:subClassOf appay:PayloadClass ;
58
+ rdfs:label "EventDetails" ;
59
+ rdfs:comment "When and where a gathering happens, and its title — what an invitation or a calendar entry carries." .
60
+
61
+ appay:GivingHistory a owl:Class ;
62
+ rdfs:subClassOf appay:PayloadClass ;
63
+ rdfs:label "GivingHistory" ;
64
+ rdfs:comment "What someone has given, to whom, when — a treasury's or a person's giving records." .
65
+
66
+ appay:Money a owl:Class ;
67
+ rdfs:subClassOf appay:PayloadClass ;
68
+ rdfs:label "Money" ;
69
+ rdfs:comment "Value moves with the write: an amount of an asset. The AMOUNT is bounded by the spend policy and the value caveat; this class says only that the write is a transfer, so a payload caveat that omits it refuses a payment outright." .
70
+
71
+ appay:File a owl:Class ;
72
+ rdfs:subClassOf appay:PayloadClass ;
73
+ rdfs:label "File" ;
74
+ rdfs:comment "A document or attachment leaves with the write, whatever it contains — the file's own classes are not inspected." .
75
+
76
+ appay:MembershipTerms a owl:Class ;
77
+ rdfs:subClassOf appay:PayloadClass ;
78
+ rdfs:label "MembershipTerms" ;
79
+ rdfs:comment "The terms of a membership or a household relation (a role, a kinship word) leave with the write." .
80
+
81
+ appay:PersonalPreference a owl:Class ;
82
+ rdfs:subClassOf appay:PayloadClass ;
83
+ rdfs:label "PersonalPreference" ;
84
+ rdfs:comment "Something the person wants remembered about how they are answered, what they call things, when their routines run — written into their own agent's records." .
85
+
86
+ appay:Instruction a owl:Class ;
87
+ rdfs:subClassOf appay:PayloadClass ;
88
+ rdfs:label "Instruction" ;
89
+ rdfs:comment "A standing instruction or a routine's rule: words that will shape future acts, written into the agent's own records." .
90
+
91
+ appay:CodeChange a owl:Class ;
92
+ rdfs:subClassOf appay:PayloadClass ;
93
+ rdfs:label "CodeChange" ;
94
+ rdfs:comment "Source files or a pull request leave with the write — a build artifact, a PR body." .